+ return face2normal[face];
+ }
+
+ static Face NormalFace(const glm::vec3 &norm) {
+ const glm::vec3 anorm(abs(norm));
+ if (anorm.x > anorm.y) {
+ if (anorm.x > anorm.z) {
+ return norm.x > 0.0f ? FACE_RIGHT : FACE_LEFT;
+ } else {
+ return norm.z > 0.0f ? FACE_FRONT : FACE_BACK;
+ }
+ } else {
+ if (anorm.y > anorm.z) {
+ return norm.y > 0.0f ? FACE_UP : FACE_DOWN;
+ } else {
+ return norm.z > 0.0f ? FACE_FRONT : FACE_BACK;
+ }