// *************************************************************** void CToolSelectRotate::cancelAction(CInstance &instance) { //H_AUTO(R2_CToolSelectRotate_cancelAction) CEntityCL *entity = instance.getEntity(); nlassert(entity); getEditor().requestRollbackLocalNode(instance.getId(), "Angle"); setRotateInProgress(false, instance); }
// *************************************************************** void CToolSelectRotate::updateAction(CInstance &instance) { //H_AUTO(R2_CToolSelectRotate_updateAction) CEntityCL *entity = instance.getEntity(); if (entity) { setMouseCursor("r2ed_tool_rotating.tga"); setEntityAngle(*entity, instance, (float) ((getMouseX() - _MouseStartX) * NLMISC::Pi / 180) + _StartAngle); } }
// *************************************************************** bool CToolSelectRotate::isActionPossibleOn(const CInstance &instance) const { //H_AUTO(R2_CToolSelectRotate_isActionPossibleOn) CInstance &mutableInstance = const_cast<CInstance &>(instance); CDisplayerVisual *dv = mutableInstance.getDisplayerVisual(); if (dv && dv->getActualDisplayMode() != CDisplayerVisual::DisplayModeVisible) { return false; } if (instance.getEntity() != NULL) { return !instance.getClass()["NameToProp"]["Angle"].isNil(); } return false; }
// ------------------------------------------------------------------------------------------------ void CCharacter3D::setAnim (uint animID) { CCharacterCL * character = NULL; if(!_CopyAnim) { _CurrentSetup.AnimPlayed = animID; if (_CurrentSetup.Male) { if (animID >= _AnimMale.size()) return; animID = _AnimMale[animID].AnimId; } else { if (animID >= _AnimFemale.size()) return; animID = _AnimFemale[animID].AnimId; } } else { CInstance * selectedInst = getEditor().getSelectedInstance(); if(!selectedInst) return; CEntityCL * entity = selectedInst->getEntity(); if(!(entity && ((character=dynamic_cast<CCharacterCL*>(entity))!=NULL))) return; animID = character->playList()->getAnimation(MOVE); _CurrentSetup.AnimPlayed = animID; } float animSpeedFactor = 0.9f + 0.2f * NLMISC::frand(1); if (_PlayList) { if(_CopyAnim) { _PlayList->setTimeOrigin(MOVE, character->playList()->getTimeOrigin(MOVE)); if(character->playList()->getAnimation(MOVE)!=_PlayList->getAnimation(MOVE)) { _PlayList->setAnimation(MOVE, animID); _PlayList->setSpeedFactor(MOVE, character->playList()->getSpeedFactor(MOVE)); _PlayList->setWrapMode(MOVE, character->playList()->getWrapMode(MOVE)); } } else { _PlayList->setAnimation(MOVE, animID); _PlayList->setSpeedFactor(MOVE, animSpeedFactor); _PlayList->setTimeOrigin(MOVE, TimeInSec); _PlayList->setWrapMode(MOVE, UPlayList::Repeat); } } if (_FacePlayList) { uint faceAnimId=UPlayList::empty; if(_AnimationSet && animID<_AnimationSet->getNumAnimation()) { // build the anim name of the face string faceAnimName= COptionsAnimationSet::getFaceAnimName(_AnimationSet->getAnimationName(animID)); // find the face anim for this name faceAnimId= _AnimationSet->getAnimationIdByName(faceAnimName); if(faceAnimId==UAnimationSet::NotFound) faceAnimId= UPlayList::empty; } _FacePlayList->setAnimation(MOVE, faceAnimId); if(faceAnimId!=UPlayList::empty) { if(_CopyAnim) { _FacePlayList->setTimeOrigin(MOVE, character->facePlayList()->getTimeOrigin(MOVE)); _FacePlayList->setSpeedFactor(MOVE, character->facePlayList()->getSpeedFactor(MOVE)); _FacePlayList->setWrapMode(MOVE, character->facePlayList()->getWrapMode(MOVE)); } else { _FacePlayList->setSpeedFactor(MOVE, animSpeedFactor); _FacePlayList->setTimeOrigin(MOVE, TimeInSec); _FacePlayList->setWrapMode(MOVE, UPlayList::Repeat); } } } }