// find mouse location in world coords
_canvas.getCanvasRenderer().getCamera().getPickRay(mouseLoc, false, ray);
ray.intersectsPlane(rocketPlane, worldStore);
// get rocket's current orientation as quat
final Quaternion currentOrient = new Quaternion().fromRotationMatrix(rocketEntityNode.getWorldRotation());
// get orientation that points rocket nose straight at mouse
final Vector3 dirTowardsMouse = new Vector3(worldStore).subtractLocal(rocketEntityNode.getWorldTranslation())
.normalizeLocal();
final Quaternion targetOrient = new Quaternion().fromVectorToVector(Vector3.NEG_UNIT_Z, dirTowardsMouse);
// get a scale representing choice between direction of old and new quats
final double scale = currentOrient.dot(targetOrient) * tpf * ROCKET_TURN_SPEED;
currentOrient.addLocal(targetOrient.multiplyLocal(scale)).normalizeLocal();
rocketEntityNode.setRotation(currentOrient);
// propel forward
rocketEntityNode.addTranslation(currentOrient.apply(Vector3.NEG_UNIT_Z, null).multiplyLocal(