Example #1
0
// ***************************************************************
void CToolSelectRotate::cancelAction(CInstance &instance)
{
	//H_AUTO(R2_CToolSelectRotate_cancelAction)
	CEntityCL *entity = instance.getEntity();
	nlassert(entity);
	getEditor().requestRollbackLocalNode(instance.getId(), "Angle");
	setRotateInProgress(false, instance);
}
Example #2
0
// ***************************************************************
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);
	}
}
Example #3
0
// ***************************************************************
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;
}
Example #4
0
// ------------------------------------------------------------------------------------------------
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);
			}
		}
	}
}