Files
FC1/CryGame/XObjectProxy.cpp
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

82 lines
1.6 KiB
C++

//////////////////////////////////////////////////////////////////////
//
// Crytek Source code
// Copyright (c) Crytek 2001-2004
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "xobjectproxy.h"
#include "xplayer.h"
CXObjectProxy::CXObjectProxy(IEntity *pEntity, IScriptSystem *pSystem)
{
m_pScriptSystem = pSystem;
m_pEntity = pEntity;
if (m_pEntity->GetContainer())
{
if (!m_pEntity->GetContainer()->QueryContainerInterface(CIT_IPLAYER,(void**) &m_pPlayer))
m_pPlayer = 0;
}
else
m_pPlayer = 0;
}
CXObjectProxy::~CXObjectProxy(void)
{
}
// Sets the name of the function that will be called when an incoming signal is intercepted
void CXObjectProxy::SetSignalFuncName(const char * szName)
{
}
int CXObjectProxy::Update(SOBJECTSTATE * state)
{
while (!state->vSignals.empty())
{
AISIGNAL sstruct = state->vSignals.back();
state->vSignals.pop_back();
switch(sstruct.nSignal)
{
case 1:
if (!stricmp(sstruct.strText,"PERCEPTION_RESET"))
m_pEntity->SendScriptEvent(ScriptEvent_AllClear,0);
break;
default:
break;
}
}
return 0;
}
void CXObjectProxy::SendSignal(SOBJECTSTATE * pState)
{
}
bool CXObjectProxy::CustomUpdate(Vec3d &pos, Vec3d &angle)
{
if (m_pPlayer)
{
if (m_pPlayer->m_bFirstPerson && m_pEntity->GetCamera())
{
pos = m_pEntity->GetCamera()->GetPos();
if ( (1.f -fabs(m_pPlayer->m_walkParams.fLeanTarget)) < 0.0001f )
m_pEntity->GetAI()->SetEyeHeight(0.1f);
return true;
}
angle.z = m_pPlayer->m_LegAngle;
}
return false;
}
void CXObjectProxy::DebugDraw(struct IRenderer * pRenderer)
{
}