с++ HL2(source) как получить объект "противник" из дочернего класса?
Все здравствуйте. Код для танка, игра HL2, движек source. Мне нужно получить противника в функции поиска противников, как-то записать это значение, что бы потом получить это значение из любой дочерней функции. Как это сделать? Код(основное):
/*Класс ТЕЛО*/
class CNPC_t80u : public CAI_BaseNPC
{
DECLARE_CLASS(CNPC_t80u, CAI_BaseNPC);
DECLARE_DATADESC();
public:
CNPC_t80u();
~CNPC_t80u();
Class_T Classify(void) { return CLASS_MILITARY; };
void Precache();
void Spawn();
void Activate();
void CameraVision();
void TowerRotation(CBaseEntity *pEnemy);
void BarrelMovement();
void SetVictime(CBaseEntity *pEnemy);
CBaseEntity* GetVictim(void) {return m_hVictim;}
private:
EHANDLE m_hVictim;
Vector m_vecLastTargetPosition;
};
//---------------------------------------------
CNPC_t80u::CNPC_t80u() {}
CNPC_t80u::~CNPC_t80u() {}
//---------------------------------------------
void CNPC_t80u::Spawn() {
BaseClass::Spawn();
Precache();
SetModel(MODEL_T80U_BODY);
SetHullType(HULL_164_378_134);
SetNavType(NAV_GROUND);
m_NPCState = NPC_STATE_NONE;
SetClassname("t80u_Body");
m_iHealth = m_iMaxHealth = sk_t80u_health.GetInt();
SetSolid(SOLID_BBOX);
AddSolidFlags(FSOLID_NOT_STANDABLE);
SetBloodColor(DONT_BLEED);
/*Подкласс БАШНЯ*/
CBaseEntity *pTower = CreateEntityByName("prop_dynamic_override");
if (pTower) {
Vector TowerPos; QAngle TowerAngle;
GetAttachment(ATTACHMENT_TOWER, TowerPos, TowerAngle);
pTower->KeyValue("model", MODEL_T80U_TOWER);
pTower->SetClassname("t80u_Tower");
pTower->SetAbsOrigin(TowerPos);
pTower->SetParent(this);
DispatchSpawn(pTower);
pTower->Activate();
pTower->SetThink(&CNPC_t80u::CameraVision); // Функция Сканер(работает с Башни)
pTower->SetNextThink(gpGlobals->curtime + 0.1);
/*Подкласс ПУШКА*/
CBaseAnimating *pBarrel = (CBaseAnimating *)CreateEntityByName("prop_dynamic_override");
if (pBarrel) {
Vector BarrelPos; QAngle BarrelAngle;
GetAttachment(ATTACHMENT_BARREL, BarrelPos, BarrelAngle);
pBarrel->KeyValue("model", MODEL_T80U_BARREL);
pBarrel->SetClassname("t80u_Barrel");
//pBarrel->SetOwnerEntity(this);
pBarrel->SetAbsOrigin(BarrelPos);
pBarrel->SetParent(pTower);
DispatchSpawn(pBarrel);
pBarrel->Activate();
pBarrel->SetName(GetEntityName());
pBarrel->SetThink(&CNPC_t80u::BarrelMovement); // Функция Движек пушки.
pBarrel->SetNextThink(gpGlobals->curtime + 0.1);
}
m_fBarrelNextShot = gpGlobals->curtime;
m_flTimeNextPing = gpGlobals->curtime;
NPCInit();
}
}
void CNPC_t80u::Activate() {
BaseClass::Activate();
}
Мне нужно что бы из дочерней функции BarrelMovement я мог получить значение найденного в функции CameraVision противника.
На сейчас, противник находится, башня поворачивается к противнику, всё отлично(значение найденного противника я передаю по ссылке из функции CameraVision в функцию TowerRotation, так как поиск противника работает с башни).
Но так же, по ссылке, передать нужное значение в функцию управления пушкой(BarrelMovement) я не могу, как ни пытаюсь - не видит эта функция значений из родительских классов вообще.