void EditorCamera::mainLoop() { if (mRenderCamera == NULL) return; mVerticalAngle = mClampF(mVerticalAngle, -4.7f, -1.7f); VectorF rotation = mTransform.getRotationEuler(); rotation.y = mVerticalAngle; rotation.z = mHorizontalAngle; mTransform.setRotation(rotation); VectorF up(0.0f, 0.0f, 1.0f); Point3F look; Point3F cameraForward(1.0f, 0.0f, 0.0f); bx::vec3MulMtx(look, cameraForward, mTransform.matrix); if (mForwardVelocity.len() > 0.01f) { MatrixF lookMatrix; bx::mtxLookAt(lookMatrix, mWorldPosition, look, up); mWorldPosition += (lookMatrix.getForwardVector() * mForwardVelocity.x); mWorldPosition -= (lookMatrix.getRightVector() * mForwardVelocity.y); mTransform.setPosition(mWorldPosition); } bx::vec3MulMtx(look, cameraForward, mTransform.matrix); bx::mtxLookAt(mRenderCamera->viewMatrix, mWorldPosition, look, up); mRenderCamera->position = mWorldPosition; }
void OrientedBox3F::set( const MatrixF& transform, const Point3F& extents ) { mCenter = transform.getPosition(); mAxes[ RightVector ] = transform.getRightVector(); mAxes[ ForwardVector ] = transform.getForwardVector(); mAxes[ UpVector ] = transform.getUpVector(); mHalfExtents = extents * 0.5f; _initPoints(); }
void OrientedBox3F::set( const MatrixF& transform, const Box3F& aabb ) { mCenter = aabb.getCenter(); transform.mulP( mCenter ); mAxes[ RightVector ] = transform.getRightVector(); mAxes[ ForwardVector ] = transform.getForwardVector(); mAxes[ UpVector ] = transform.getUpVector(); mHalfExtents[ 0 ] = aabb.len_x() / 2.f; mHalfExtents[ 1 ] = aabb.len_y() / 2.f; mHalfExtents[ 2 ] = aabb.len_z() / 2.f; _initPoints(); }