I need to hook think function of "dronegun" entity. Inside it's just a prop_phusics with some extra stuff.
PHP Code:
typedef void (CBaseEntity::*VALVE_BASEPTR)(void);
VALVE_BASEPTR srcThinkFunc_;
void CDroneGun::onSpawnPost(void)
{
srcThinkFunc_ = m_pfnThink; // m_pfnThink is from CBaseEntity datamap
*(m_pfnThink) = reinterpret_cast<VALVE_BASEPTR>(&CDroneGun::Think);
}
void CDroneGun::Think()
{
LogMessage("CDroneGun::Think");
if(srcThinkFunc_)
(getBaseEntity()->*srcThinkFunc_)(); // call the original Think function
if(*(m_pfnThink) != reinterpret_cast<VALVE_BASEPTR>(&CDroneGun::Think)) //If the Think function has changed, set up a new "hook"
{
srcThinkFunc_ = m_pfnThink;
*(m_pfnThink) = reinterpret_cast<VALVE_BASEPTR>(&CDroneGun::Think);
}
}
The drone moves and attacks, but "CDroneGun::Think" is never shown, what am I doing wrong?