void AnimCtrlPlayerCharacter::updateAimRotation(Ogre::Radian angleHorizontal, Ogre::Radian angleVertical, unsigned long timeSinceLastFrame) { // This is freaking important! Must be in seconds and an Ogre::Real Ogre::Real secSinceLastFrame = (Ogre::Real) timeSinceLastFrame / 1000.f; // Set manual frame position // --------------------------------------- float prevValue = animPipeline->getAnimManualTimePos( "aim" ); float maxValue = animPipeline->getAnimLength( "aim" ); float aimFrame = interpolateAiming( angleHorizontal.valueDegrees(), 360.f, prevValue, maxValue, 3500.f, secSinceLastFrame ); animPipeline->setAnimManualTimePos( "aim", aimFrame ); animPipeline->setAnimManualTimePos( "aimUp", aimFrame ); animPipeline->setAnimManualTimePos( "aimDown", aimFrame ); // Set blend value // --------------------------------------- // Modify Angle; animated only from 45° (up) to -45° (down) float aimBlend = angleVertical.valueDegrees() - 45.f; aimBlend = std::max( 0.f, aimBlend ); aimBlend = std::min( 90.f, aimBlend ); prevValue = getFlagValue( "aim_vertical2", 0 ) + getFlagValue( "aim_vertical3", 0 ); aimBlend = interpolateAiming( aimBlend, 90.f, prevValue, 2.f, 2000.f, secSinceLastFrame ); // Split up blend value from 0 to 1 into three blend values for the LERP tree float aimBlendTrees = (aimBlend > 1.f) ? 1.f : 0.f; setFlagValue( "aim_vertical1", aimBlendTrees ); float aimBlend2 = std::min( 1.f, aimBlend ); setFlagValue( "aim_vertical2", aimBlend2 ); float aimBlend3 = std::max( 1.f, aimBlend ) - 1.f; setFlagValue( "aim_vertical3", aimBlend3 ); }
void PolicyEditor::redoAvailableST(bool flag){ setFlagValue(_redoAvailable, flag); }
void PolicyEditor::copyAvailableST(bool flag){ setFlagValue(_copyAvailable, flag); }