本文整理汇总了C++中ogre::AnimationState::hasEnded方法的典型用法代码示例。如果您正苦于以下问题:C++ AnimationState::hasEnded方法的具体用法?C++ AnimationState::hasEnded怎么用?C++ AnimationState::hasEnded使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ogre::AnimationState
的用法示例。
在下文中一共展示了AnimationState::hasEnded方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: execute
void AnimationTask::execute(unsigned long timeDelta)
{
double deltaSec;
std::list<memUInt> finishedAnimations;
std::list<memUInt>::iterator finishedAnimationsIter;
AnimationMapIterator iter;
Value val;
if (getState() != TS_RUNNING)
{
setState(TS_RUNNING);
}
// Dispatch all waiting messages of this task
NotificationManager::getSingleton().dispatchQueuedNotifications((memUInt) this);
deltaSec = ((double) timeDelta) / MICROSECONDS_IN_SECOND;
{
Poco::ScopedRWLock lock(mRWLockActiveAnimations, false);
// Update animations
for (iter = activeAnimations.begin(); iter != activeAnimations.end(); ++iter)
{
AnimationMapValueEntry entry = iter->second;
Ogre::AnimationState *animationState = entry.first;
// Check if the animation has ended, and add it to a list of animations to be removed from the active list
if ((animationState->hasEnded()) || (!animationState->getEnabled()))
{
finishedAnimations.push_back(iter->first);
animationState->setEnabled(false);
// If the animation has a stop callback, call it
callCallback(animationState, &mStopCallbacks);
}
else
{
// Add the time since the last update to the animation
animationState->addTime(deltaSec);
// Check if this animation is just starting, if it is call its start callback
if (mStartingAnimations.erase(reinterpret_cast<memUInt>(animationState)) == 1)
{
callCallback(animationState, &mStartCallbacks);
}
}
}
}
mStartingAnimations.clear();
{
Poco::ScopedRWLock lock(mRWLockActiveAnimations, true);
Poco::ScopedRWLock lockCallbacks(mRWLockCallbacks, true);
// Remove the animations that have ended from the list of active animations
for (finishedAnimationsIter = finishedAnimations.begin(); finishedAnimationsIter != finishedAnimations.end(); ++finishedAnimationsIter)
{
memUInt animationAddress = *finishedAnimationsIter;
activeAnimations.erase(animationAddress);
// Remove any callbacks associated with this animation
mStartCallbacks.erase(animationAddress);
mStopCallbacks.erase(animationAddress);
}
}
}
示例2: vt
bool
PlayState::frameStarted
(const Ogre::FrameEvent& evt)
{
std::cout << "frameStarted PLAY" << std::endl;
Ogre::Vector3 vt(0,0,0); Ogre::Real tSpeed = 20.0;
_deltaT = evt.timeSinceLastFrame;
_world->stepSimulation(_deltaT); // Actualizar simulacion Bullet
_timeLastObject -= _deltaT;
_camera->moveRelative(vt * _deltaT * tSpeed);
if (_camera->getPosition().length() < 10.0) {
_camera->moveRelative(-vt * _deltaT * tSpeed);
}
_camera->yaw(Degree(CAM_ROTATION_SPEED * _deltaT * _mouseRotation.x)); //, Node::TS_PARENT
_camera->pitch(Degree(CAM_ROTATION_SPEED * _deltaT * _mouseRotation.y)); //, Node::TS_LOCAL
_mouseRotation = Vector2::ZERO;
//CONTROLAR LA DIRECCION DE LA CAMARA DEL PROYECTIL
_projectileCamera->lookAt(_camera->getDerivedDirection());
if(_trackedBody){
_projectileCamera->setPosition(_trackedBody->getCenterOfMassPosition());
Ogre::Vector3 trackedBodyPosition = _trackedBody->getCenterOfMassPosition();
Ogre::Vector3 projectileLookAt(trackedBodyPosition.x - _camera->getPosition().x, trackedBodyPosition.y - _camera->getPosition().y, trackedBodyPosition.z - _camera->getPosition().z);
//_projectileCamera->lookAt(_camera->getDerivedDirection());
_projectileCamera->lookAt(trackedBodyPosition + projectileLookAt);
}
std::cout << "CAMERAS" << std::endl;
if(_shootKeyDown){
_keyDownTime = _keyDownTime + _deltaT;
}
if(_keyDownTime * THROW_FORCE > 100){
_forcePercent = 100;
}
else{
_forcePercent = _keyDownTime * THROW_FORCE;
}
//_points++;
_sPF->updatePower(_forcePercent);
_sPF->updatePoints(_points);
//std::cout<<_sPF->getSheet()->getChild("PowerWindow")->getUpdateMode() <<std::endl;
//_sPF->getSheet()->getChild("PowerWindow")->update(_deltaT);
//CEGUI::System::getSingleton().injectTimePulse(_deltaT);
//DetectCollisionPig();
std::cout << "points power" << std::endl;
_physicsController->detectCollision(); //Este es el bueno. Hay que cambiarlo para que compruebe colisiones sobre todo
std::cout << "pisis" << std::endl;
_movementController->moveAll();
std::cout << "collision moveall" << std::endl;
if(_finalGame){
pushState(FinalState::getSingletonPtr());
}
lifeWolf();
std::cout << "wolf" << std::endl;
if (_lanzaranimationPig){
for (int i = 0; i < 3; ++i){
std::ostringstream os;
os << "pigA" <<i;
Ogre::AnimationState* animStatePig = _sceneMgr->getEntity(os.str())-> getAnimationState("SaltoR");
animStatePig->setTimePosition(0.0);
animStatePig->setEnabled(true);
animStatePig->setLoop(true);
_vector_anims_pig -> push_back(animStatePig);
}
_lanzaranimationPig = false;
}
for (int i = 0; i < 3; ++i){
Ogre::AnimationState* animStatePig = _vector_anims_pig->at(i);
if (animStatePig != NULL){
if (animStatePig->hasEnded()){
animStatePig->setTimePosition(0.0);
animStatePig->setEnabled(false);
}else{
animStatePig->addTime(_deltaT);
}
}
}
std::cout << "animation" << std::endl;
//RecorreVectorTAOAnadirMovimientoConstante();
//std::cout << "Hasta aqui todo bien 1" << std::endl;
return true;
}