LLQuaternion mayaQ(F32 xRot, F32 yRot, F32 zRot, LLQuaternion::Order order) { LLQuaternion xQ( xRot*DEG_TO_RAD, LLVector3(1.0f, 0.0f, 0.0f) ); LLQuaternion yQ( yRot*DEG_TO_RAD, LLVector3(0.0f, 1.0f, 0.0f) ); LLQuaternion zQ( zRot*DEG_TO_RAD, LLVector3(0.0f, 0.0f, 1.0f) ); LLQuaternion ret; switch( order ) { case LLQuaternion::XYZ: ret = xQ * yQ * zQ; break; case LLQuaternion::YZX: ret = yQ * zQ * xQ; break; case LLQuaternion::ZXY: ret = zQ * xQ * yQ; break; case LLQuaternion::XZY: ret = xQ * zQ * yQ; break; case LLQuaternion::YXZ: ret = yQ * xQ * zQ; break; case LLQuaternion::ZYX: ret = zQ * yQ * xQ; break; } return ret; }
f00Quat& f00Quat::set( GLfloat x, GLfloat y, GLfloat z ) { f00Quat xQ( x, 1.0, 0.0, 0.0 ); f00Quat yQ( y, 0.0, 1.0, 0.0 ); f00Quat zQ( z, 0.0, 0.0, 1.0 ); set( xQ ); postMult( yQ ); postMult( zQ ); return *this; }
//----------------------------------------------------------------------- void OrthoCameraGizmo::attachToNode(Ogre::SceneNode* node) { if (!node) return; // First remove the old node detachFromNode(); // Recreate the nodes mOrthoCameraNodeBox = node->createChildSceneNode(); mOrthoCameraNodeX = node->createChildSceneNode(); mOrthoCameraNodeMinX = node->createChildSceneNode(); mOrthoCameraNodeY = node->createChildSceneNode(); mOrthoCameraNodeZ = node->createChildSceneNode(); mOrthoCameraNodeMinZ = node->createChildSceneNode(); mOrthoCameraNodeBox->setInheritScale(false); mOrthoCameraNodeX->setInheritScale(false); mOrthoCameraNodeMinX->setInheritScale(false); mOrthoCameraNodeY->setInheritScale(false); mOrthoCameraNodeZ->setInheritScale(false); mOrthoCameraNodeMinZ->setInheritScale(false); mOrthoCameraNodeBox->setInheritOrientation(false); mOrthoCameraNodeX->setInheritOrientation(false); mOrthoCameraNodeMinX->setInheritOrientation(false); mOrthoCameraNodeY->setInheritOrientation(false); mOrthoCameraNodeZ->setInheritOrientation(false); mOrthoCameraNodeMinZ->setInheritOrientation(false); mOrthoCameraNodeBox->attachObject(mOrthoCameraEntityBox); mOrthoCameraNodeX->attachObject(mOrthoCameraEntityX); mOrthoCameraNodeMinX->attachObject(mOrthoCameraEntityMinX); mOrthoCameraNodeY->attachObject(mOrthoCameraEntityY); mOrthoCameraNodeZ->attachObject(mOrthoCameraEntityZ); mOrthoCameraNodeMinZ->attachObject(mOrthoCameraEntityMinZ); // Set scale setScale(SCALE_NODE_ORTHO_CAMERA); // mOrthoCameraNodeBox->setScale(0.5, 0.5, 0.5); // TEST // mOrthoCameraNodeX->setScale(0.5, 0.5, 0.5);// TEST // mOrthoCameraNodeMinX->setScale(0.5, 0.5, 0.5);// TEST // mOrthoCameraNodeY->setScale(0.5, 0.5, 0.5);// TEST // mOrthoCameraNodeZ->setScale(0.5, 0.5, 0.5);// TEST // mOrthoCameraNodeMinZ->setScale(0.5, 0.5, 0.5);// TEST // Set orientation Ogre::Real sqrt0dot5 = sqrt(0.5); Ogre::Quaternion xQ(sqrt0dot5, 0, 0, sqrt0dot5); Ogre::Quaternion minXQ(-sqrt0dot5, 0, 0, sqrt0dot5); Ogre::Quaternion yQ(1, 0, 0, 0); Ogre::Quaternion zQ(-sqrt0dot5, sqrt0dot5, 0, 0); Ogre::Quaternion minZQ(sqrt0dot5, sqrt0dot5, 0, 0); mOrthoCameraNodeX->setOrientation(xQ); mOrthoCameraNodeMinX->setOrientation(minXQ); mOrthoCameraNodeY->setOrientation(yQ); mOrthoCameraNodeZ->setOrientation(zQ); mOrthoCameraNodeMinZ->setOrientation(minZQ); // Set visible setVisible(true); }