示例#1
0
void CBinocular::ResetState()
{
	SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->idle_relaxed);
	SetWeaponRaised(false);

	if(m_pNightVisionCVar)
		m_pNightVisionCVar->ForceSet("0");

	m_bNightVisionEnabled = false;
	m_bZoomed = false;

	gEnv->p3DEngine->SetPostEffectParam("Dof_Active", 0);
}
示例#2
0
void CBinocular::Zoom()
{
	if (m_zm && !m_bZoomed)
	{
		gEnv->p3DEngine->SetPostEffectParam("Dof_UseMask", 0);
		gEnv->p3DEngine->SetPostEffectParam("Dof_Active", 1);
		gEnv->p3DEngine->SetPostEffectParam("Dof_BlurAmount", 1.0f);
		gEnv->p3DEngine->SetPostEffectParamString("Dof_MaskTexName", "");

		PlayAction(g_pItemStrings->zoom_in);
		m_zm->StartZoom();
		m_bZoomed = true;
		SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->idle_raised);
	}
}
示例#3
0
文件: Fists.cpp 项目: AiYong/CryGame
void CFists::RaiseWeapon(bool raise, bool faster /*= false*/)
{
	//Only when colliding something while running
	if(raise && (GetCurrentAnimState()==eFAS_RUNNING || GetCurrentAnimState()==eFAS_JUMPING) && !IsWeaponRaised())
	{
		if((m_fm && m_fm->IsFiring())||(m_melee && m_melee->IsFiring()))
			return;

		PlayAction(g_pItemStrings->raise);

		SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->idle_relaxed);
		SetWeaponRaised(true);

		//Also give the player some impulse into the opposite direction
		CActor *pPlayer = GetOwnerActor();
		Vec3		pos;
		if(pPlayer)
		{
			IPhysicalEntity* playerPhysics = pPlayer->GetEntity()->GetPhysics();
			if(playerPhysics)
			{
				IMovementController *pMC = pPlayer->GetMovementController();
				if(pMC)
				{
					SMovementState state;
					pMC->GetMovementState(state);
					
					pe_action_impulse impulse;
					impulse.iApplyTime = 1;
					impulse.impulse = -state.eyeDirection*600.0f;
					playerPhysics->Action(&impulse);

					pos = state.eyePosition + state.eyeDirection*0.5f;
				}
				
			}
		}

		GetScheduler()->TimerAction(GetCurrentAnimationTime(eIGS_FirstPerson), CSchedulerAction<EndRaiseWeaponAction>::Create(EndRaiseWeaponAction(this)), true);

		//Sound and FX feedback
		CollisionFeeback(pos,m_currentAnimState);
	}
	else if(!raise)
		SetWeaponRaised(false);

}
示例#4
0
//------------------------------------------------------------------------
bool CItem::SetGeometry(int slot, const ItemString &name, const Vec3 &poffset, const Ang3 &aoffset, float scale, bool forceReload)
{
	bool changedfp=false;

	switch(slot)
	{
	case eIGS_Arms:
	{
		if(!name || forceReload)
		{
			GetEntity()->FreeSlot(slot);
#ifndef ITEM_USE_SHAREDSTRING
			m_geometry[slot].resize(0);
#else
			m_geometry[slot].reset();
#endif
		}

		ResetCharacterAttachment(eIGS_FirstPerson, ITEM_ARMS_ATTACHMENT_NAME);

		ICharacterInstance *pCharacter=0;

		if(name && name[0])
		{
			if(name != m_geometry[slot])
				GetEntity()->LoadCharacter(slot, name);

			DrawSlot(eIGS_Arms, false);

			pCharacter = GetEntity()->GetCharacter(eIGS_Arms);
		}
		else if(m_pForcedArms)
		{
			pCharacter = m_pForcedArms;
		}
		else
		{
			int armsId=m_stats.hand==eIH_Right?0:1;
			pCharacter = GetOwnerActor()?GetOwnerActor()->GetFPArms(armsId):0;
		}

		if(pCharacter)
		{
			pCharacter->SetFlags(pCharacter->GetFlags()&(~CS_FLAG_UPDATE));
			SetCharacterAttachment(eIGS_FirstPerson, ITEM_ARMS_ATTACHMENT_NAME, pCharacter, 0);
		}
	}
	break;

	case eIGS_FirstPerson:
	case eIGS_ThirdPerson:
	default:
	{
		if(!name || forceReload)
		{
			GetEntity()->FreeSlot(slot);
#ifndef ITEM_USE_SHAREDSTRING
			m_geometry[slot].resize(0);
#else
			m_geometry[slot].reset();
#endif
		}

		DestroyAttachmentHelpers(slot);

		if(name && name[0])
		{
			if(m_geometry[slot] != name)
			{
				const char *ext = PathUtil::GetExt(name.c_str());

				if((stricmp(ext, "chr") == 0) || (stricmp(ext, "cdf") == 0) || (stricmp(ext, "cga") == 0))
					GetEntity()->LoadCharacter(slot, name, 0);
				else
					GetEntity()->LoadGeometry(slot, name, 0, 0);

				changedfp=slot==eIGS_FirstPerson;
			}

			CreateAttachmentHelpers(slot);

			SetDefaultIdleAnimation(slot, g_pItemStrings->idle);
		}

		if(slot == eIGS_FirstPerson)
		{
			ICharacterInstance *pCharacter = GetEntity()->GetCharacter(eIGS_FirstPerson);

			if(pCharacter)
			{
				pCharacter->SetFlags(pCharacter->GetFlags()&(~CS_FLAG_UPDATE));
			}
		}
		else if(slot == eIGS_Destroyed)
			DrawSlot(eIGS_Destroyed, false);
	}
	break;
	}

	Matrix34 slotTM;
	slotTM = Matrix34::CreateRotationXYZ(aoffset);
	slotTM.Scale(Vec3(scale, scale, scale));
	slotTM.SetTranslation(poffset);
	GetEntity()->SetSlotLocalTM(slot, slotTM);

	if(changedfp && m_stats.mounted)
	{
		PlayAction(m_idleAnimation[eIGS_FirstPerson], 0, true);
		ForceSkinning(true);

		if(!m_mountparams.pivot.empty())
		{
			Matrix34 tm=GetEntity()->GetSlotLocalTM(eIGS_FirstPerson, false);
			Vec3 pivot = GetSlotHelperPos(eIGS_FirstPerson, m_mountparams.pivot.c_str(), false);
			tm.AddTranslation(pivot);

			GetEntity()->SetSlotLocalTM(eIGS_FirstPerson, tm);
		}

		GetEntity()->InvalidateTM();
	}

	m_geometry[slot] = name ? name : "";

	ReAttachAccessories();

	return true;
}
示例#5
0
文件: Fists.cpp 项目: AiYong/CryGame
//------------------------------------------
//CFists::RequestAnimState(EFistAnimState eFAS)
//
//This method changes (if possible) the current animation for the fists
// eFAS - Requested anim state
void CFists::RequestAnimState(EFistAnimState eFAS, bool force /*=false*/)
{

	//Only if selected
	if(!IsSelected() || m_frozen || IsWeaponRaised())
		return;

	if(!m_underWater)
	{
		switch(eFAS)
		{
					case eFAS_NOSTATE:	m_currentAnimState = eFAS_NOSTATE;
															m_timeOut = TIMEOUT;
															break;

					case eFAS_RELAXED: if(m_currentAnimState!=eFAS_NOSTATE && m_currentAnimState!=eFAS_RELAXED)
															{
																m_currentAnimState = eFAS_RELAXED;
																m_timeOut = TIMEOUT;
																PlayAction(g_pItemStrings->deselect);
																SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->idle_relaxed);
															 }
																break;

					case eFAS_FIGHT:		//if(m_currentAnimState!=eFAS_RUNNING)
															{
																SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->idle);
																m_currentAnimState = eFAS_FIGHT;
																m_timeOut = TIMEOUT;
															}
															break;

					case eFAS_RUNNING:	if(m_currentAnimState==eFAS_RELAXED || CanMeleeAttack())
															{
																PlayAction(g_pItemStrings->run_forward,0,true);
																m_currentAnimState = eFAS_RUNNING;
															}
															break;

					case eFAS_JUMPING:	if(m_currentAnimState==eFAS_RUNNING)
															{
																PlayAction(g_pItemStrings->jump_start);
																SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->jump_idle);
																m_currentAnimState = eFAS_JUMPING;
															}
															break;

					case eFAS_LANDING:	 if(m_currentAnimState==eFAS_JUMPING)
															{
																PlayAction(g_pItemStrings->jump_end);
																SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->idle_relaxed);
																m_currentAnimState = eFAS_RELAXED;
															}
															 break;

					case eFAS_CRAWL:		if(m_currentAnimState!=eFAS_CRAWL)
															{
																PlayAction(g_pItemStrings->crawl,0,true);
																//SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->crawl);
																m_currentAnimState = eFAS_CRAWL;
															}
															break;


		}
	}
	else
	{
		switch(eFAS)
		{
					case eFAS_SWIM_IDLE:		if(m_currentAnimState!=eFAS_SWIM_IDLE)
																	{
																		m_currentAnimState = eFAS_SWIM_IDLE;
																		PlayAction(g_pItemStrings->swim_idle,0,true,eIPAF_Default|eIPAF_CleanBlending);
																		//SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->swim_idle);
																	}
																	break;

					case eFAS_SWIM_FORWARD:	if(m_currentAnimState!=eFAS_SWIM_FORWARD)
																	{
																		m_currentAnimState = eFAS_SWIM_FORWARD;
																		PlayAction(g_pItemStrings->swim_forward,0,true,eIPAF_Default|eIPAF_CleanBlending);
																		//SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->swim_forward);
																	}
																	break;

					case eFAS_SWIM_BACKWARD: if(m_currentAnimState!=eFAS_SWIM_BACKWARD)
																	 {
																		 m_currentAnimState = eFAS_SWIM_BACKWARD;
																		 PlayAction(g_pItemStrings->swim_backward,0,true,eIPAF_Default|eIPAF_CleanBlending);
																		 //SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->swim_backward);
																	 }
																	 break;

					case eFAS_SWIM_SPEED:		if(m_currentAnimState!=eFAS_SWIM_SPEED)
																	{
																		m_currentAnimState = eFAS_SWIM_SPEED;
																		PlayAction(g_pItemStrings->speed_swim,0,true,eIPAF_Default|eIPAF_CleanBlending);
																		//SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->speed_swim);
																	}
																	break;

					case eFAS_SWIM_FORWARD_S: if(m_currentAnimState!=eFAS_SWIM_FORWARD_S)
																		{
																			m_currentAnimState = eFAS_SWIM_FORWARD_S;
																			PlayAction(g_pItemStrings->swim_forward_2,0,true,eIPAF_Default|eIPAF_CleanBlending);
																			//SetDefaultIdleAnimation( eIGS_FirstPerson,g_pItemStrings->swim_forward_2);
																		}
																		break;
		}
	}

}