private void repositionScene() {
final float rotationX = mCursorController.getCursor().getParent().getParent().getParent().getTransform().getRotationX();
final float rotationY = mCursorController.getCursor().getParent().getParent().getParent().getTransform().getRotationY();
final float rotationZ = mCursorController.getCursor().getParent().getParent().getParent().getTransform().getRotationZ();
final float rotationW = mCursorController.getCursor().getParent().getParent().getParent().getTransform().getRotationW();
Quaternionf cursorRotation = new Quaternionf(rotationX, rotationY, rotationZ, rotationW);
Vector3f lookat = new Vector3f(0, 0, 1);
lookat.rotate(cursorRotation);
lookat = lookat.normalize();
org.gearvrf.utility.Log.d(TAG, "LookAt: " + lookat.x + ", " + lookat.y + ", " + lookat.z);
Vector3f up = new Vector3f(0, 1, 0);
Vector3f ownerXaxis = new Vector3f(0, 0, 0);
Vector3f ownerYaxis = new Vector3f(0, 0, 0);
up.cross(lookat.x, lookat.y, lookat.z, ownerXaxis);
ownerXaxis = ownerXaxis.normalize();
lookat.cross(ownerXaxis.x, ownerXaxis.y, ownerXaxis.z, ownerYaxis);
ownerYaxis = ownerYaxis.normalize();
float[] newModelMatrix = new float[]{
ownerXaxis.x, ownerXaxis.y, ownerXaxis.z, 0.0f,
ownerYaxis.x, ownerYaxis.y, ownerYaxis.z, 0.0f,
lookat.x, lookat.y, lookat.z, 0.0f,
0, 0, 0, 1.0f
};
mGallery.reposition(newModelMatrix);
mVideoPlayer.reposition(newModelMatrix);
}