本文整理汇总了C++中ogre::Quaternion::yAxis方法的典型用法代码示例。如果您正苦于以下问题:C++ Quaternion::yAxis方法的具体用法?C++ Quaternion::yAxis怎么用?C++ Quaternion::yAxis使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ogre::Quaternion
的用法示例。
在下文中一共展示了Quaternion::yAxis方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: initAxis
//-------------------------------------------------------------------------------------
void AxisLines::initAxis(Ogre::String boneName, Ogre::Entity* entity, Ogre::SceneManager* mSceneManager)
{
if(isXVisible) /* red */
{
xLine = new DynamicLines(Ogre::RenderOperation::OT_LINE_LIST);
entity->attachObjectToBone(boneName, xLine);
xLine->setMaterial(color1);
}
if(isYVisible) /* green */
{
yLine = new DynamicLines(Ogre::RenderOperation::OT_LINE_LIST);
entity->attachObjectToBone(boneName, yLine);
yLine->setMaterial(color2);
}
if(isZVisible) /* blue */
{
zLine = new DynamicLines(Ogre::RenderOperation::OT_LINE_LIST);
entity->attachObjectToBone(boneName, zLine);
zLine->setMaterial(color3);
}
Ogre::Bone* bone = entity->getSkeleton()->getBone(boneName);
Ogre::Quaternion q = bone->getOrientation();
this->updateLines(q.xAxis(), q.yAxis(), q.zAxis());
}
示例2: frameRenderingQueued
bool Framework::frameRenderingQueued(const Ogre::FrameEvent& evt)
{
mTrayMgr->frameRenderingQueued(evt);
if (!mTrayMgr->isDialogVisible())
{
mCameraMan->frameRenderingQueued(evt); // if dialog isn't up, then update the camera
if (mDetailsPanel->isVisible()) // if details panel is visible, then update its contents
{
mDetailsPanel->setParamValue(0, Ogre::StringConverter::toString(mCamera->getDerivedPosition().x));
mDetailsPanel->setParamValue(1, Ogre::StringConverter::toString(mCamera->getDerivedPosition().y));
mDetailsPanel->setParamValue(2, Ogre::StringConverter::toString(mCamera->getDerivedPosition().z));
mDetailsPanel->setParamValue(4, Ogre::StringConverter::toString(mCamera->getDerivedOrientation().w));
mDetailsPanel->setParamValue(5, Ogre::StringConverter::toString(mCamera->getDerivedOrientation().x));
mDetailsPanel->setParamValue(6, Ogre::StringConverter::toString(mCamera->getDerivedOrientation().y));
mDetailsPanel->setParamValue(7, Ogre::StringConverter::toString(mCamera->getDerivedOrientation().z));
#ifdef USE_RTSHADER_SYSTEM
mDetailsPanel->setParamValue(14, Ogre::StringConverter::toString(mShaderGenerator->getVertexShaderCount()));
mDetailsPanel->setParamValue(15, Ogre::StringConverter::toString(mShaderGenerator->getFragmentShaderCount()));
#endif
Ogre::Quaternion q = mCamera->getDerivedOrientation();
mDetailsPanel->setParamValue(16, Ogre::StringConverter::toString(q.xAxis() ) );
mDetailsPanel->setParamValue(17, Ogre::StringConverter::toString(q.yAxis() ));
mDetailsPanel->setParamValue(18, Ogre::StringConverter::toString(q.zAxis() ));
}
}
return true;
}
示例3: updateListener
void SoundListener::updateListener()
{
Ogre::Vector3 position = this->getPosition().Meter() ;
alListener3f(AL_POSITION, (float)position.x, (float)position.y, (float)position.z);
Ogre::Quaternion orientation = this->getOrientation().getQuaternion();
ALfloat openal_orientation[6] ;
openal_orientation[0] = orientation.zAxis().x ;
openal_orientation[1] = orientation.zAxis().y ;
openal_orientation[2] = orientation.zAxis().z ;
openal_orientation[3] = orientation.yAxis().x ;
openal_orientation[4] = orientation.yAxis().y ;
openal_orientation[5] = orientation.yAxis().z ;
alListenerfv(AL_ORIENTATION, openal_orientation) ;
Ogre::Vector3 speed = this->getSpeed().MeterPerSecond();
alListener3f(AL_VELOCITY, (float)speed.x, (float)speed.y, (float)speed.z) ;
alListenerf(AL_GAIN,getGain()) ;
}
示例4: setOrientation
/*/////////////////////////////////////////////////////////////////*/
void OgreOggListener::setOrientation(const Ogre::Quaternion& q) {
Ogre::Vector3 vDirection = q.zAxis();
Ogre::Vector3 vUp = q.yAxis();
mOrientation[0] = -vDirection.x;
mOrientation[1] = -vDirection.y;
mOrientation[2] = -vDirection.z;
mOrientation[3] = vUp.x;
mOrientation[4] = vUp.y;
mOrientation[5] = vUp.z;
alListenerfv(AL_ORIENTATION, mOrientation);
}
示例5: launchProjectile
void ProjectileManager::launchProjectile(Ptr actor, Ptr projectile, const Ogre::Vector3 &pos,
const Ogre::Quaternion &orient, Ptr bow, float speed)
{
ProjectileState state;
state.mActorId = actor.getClass().getCreatureStats(actor).getActorId();
state.mBowId = bow.getCellRef().getRefId();
state.mVelocity = orient.yAxis() * speed;
state.mId = projectile.getCellRef().getRefId();
MWWorld::ManualRef ref(MWBase::Environment::get().getWorld()->getStore(), projectile.getCellRef().getRefId());
MWWorld::Ptr ptr = ref.getPtr();
state.mNode = mSceneMgr->getRootSceneNode()->createChildSceneNode(pos, orient);
createModel(state, ptr.getClass().getModel(ptr));
mProjectiles.push_back(state);
}
示例6: transformBone
//-------------------------------------------------------------------------------------
void ControllableCharacter::transformBone(Ogre::String boneName, NuiManager::NuiJointIndex jointIdx)
{
int state = 0;
state = (int)controller->getJointStatus(jointIdx);
if(state == 2)
{
Ogre::Bone* bone = skeleton->getBone(boneName);
Ogre::Quaternion qI = bone->getInitialOrientation();
Ogre::Quaternion newQ = jointCalc->getSkeletonJointOrientation(jointIdx);
bone->resetOrientation();
newQ = bone->convertWorldToLocalOrientation(newQ);
bone->setOrientation(newQ * qI);
Ogre::Quaternion resQ = bone->getOrientation();
if(showBoneOrientationAxes) axisLines[jointIdx]->updateLines(resQ.xAxis(), resQ.yAxis(), resQ.zAxis()); // debug
}
}
示例7: moveMagicBolts
void ProjectileManager::moveMagicBolts(float duration)
{
for (std::vector<MagicBoltState>::iterator it = mMagicBolts.begin(); it != mMagicBolts.end();)
{
Ogre::Quaternion orient = it->mNode->getOrientation();
static float fTargetSpellMaxSpeed = MWBase::Environment::get().getWorld()->getStore().get<ESM::GameSetting>()
.find("fTargetSpellMaxSpeed")->getFloat();
float speed = fTargetSpellMaxSpeed * it->mSpeed;
Ogre::Vector3 direction = orient.yAxis();
direction.normalise();
Ogre::Vector3 pos(it->mNode->getPosition());
Ogre::Vector3 newPos = pos + direction * duration * speed;
if (it->mSound.get())
it->mSound->setPosition(newPos);
it->mNode->setPosition(newPos);
update(it->mObject, duration);
// Check for impact
// TODO: use a proper btRigidBody / btGhostObject?
btVector3 from(pos.x, pos.y, pos.z);
btVector3 to(newPos.x, newPos.y, newPos.z);
std::vector<std::pair<float, std::string> > collisions = mPhysEngine.rayTest2(from, to, OEngine::Physic::CollisionType_Projectile);
bool hit=false;
for (std::vector<std::pair<float, std::string> >::iterator cIt = collisions.begin(); cIt != collisions.end() && !hit; ++cIt)
{
MWWorld::Ptr obstacle = MWBase::Environment::get().getWorld()->searchPtrViaHandle(cIt->second);
MWWorld::Ptr caster = MWBase::Environment::get().getWorld()->searchPtrViaHandle(it->mCasterHandle);
if (caster.isEmpty())
caster = MWBase::Environment::get().getWorld()->searchPtrViaActorId(it->mActorId);
if (!obstacle.isEmpty() && obstacle == caster)
continue;
if (caster.isEmpty())
caster = obstacle;
if (obstacle.isEmpty())
{
// Terrain
}
else
{
MWMechanics::CastSpell cast(caster, obstacle);
cast.mHitPosition = pos;
cast.mId = it->mSpellId;
cast.mSourceName = it->mSourceName;
cast.mStack = it->mStack;
cast.inflict(obstacle, caster, it->mEffects, ESM::RT_Target, false, true);
}
hit = true;
}
// Explodes when hitting water
if (MWBase::Environment::get().getWorld()->isUnderwater(MWBase::Environment::get().getWorld()->getPlayerPtr().getCell(), newPos))
hit = true;
if (hit)
{
MWWorld::Ptr caster = MWBase::Environment::get().getWorld()->searchPtrViaActorId(it->mActorId);
MWBase::Environment::get().getWorld()->explodeSpell(pos, it->mEffects, caster, ESM::RT_Target, it->mSpellId, it->mSourceName);
MWBase::Environment::get().getSoundManager()->stopSound(it->mSound);
mSceneMgr->destroySceneNode(it->mNode);
it = mMagicBolts.erase(it);
continue;
}
else
++it;
}
}