const Vector &CBeam::GetAbsEndPos( void ) const { if ( GetType() != BEAM_POINTS && GetType() != BEAM_HOSE && GetEndEntity() ) { edict_t *pent = engine->PEntityOfEntIndex( GetEndEntity() ); CBaseEntity *ent = CBaseEntity::Instance( pent ); if ( ent ) return ent->GetAbsOrigin(); } if (!const_cast<CBeam*>(this)->GetMoveParent()) return m_vecEndPos.Get(); // FIXME: Cache this off? static Vector vecAbsPos; VectorTransform( m_vecEndPos, EntityToWorldTransform(), vecAbsPos ); return vecAbsPos; }
const Vector& CBeam::GetEndPos() const { int type = GetType(); if( type == BEAM_POINTS || type == BEAM_HOSE ) { return pev->angles; } edict_t *pent = g_engfuncs.pfnPEntityOfEntIndex( GetEndEntity() ); if( pent ) return pent->v.origin; return pev->angles; }
const Vector &CE_CBeam::GetAbsEndPos( void ) { CEntity *ent = GetEndEntity(); if ( GetType() != BEAM_POINTS && GetType() != BEAM_HOSE && ent ) { return ent->GetAbsOrigin(); } if (!const_cast<CE_CBeam*>(this)->GetMoveParent()) return m_vecEndPos; // FIXME: Cache this off? static Vector vecAbsPos; VectorTransform( m_vecEndPos, EntityToWorldTransform(), vecAbsPos ); return vecAbsPos; }