CBaseEntity Functions: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
(Created page with "== GetAbsOrigin() == <code>GetAbsOrigin()</code> returns the absolute (i.e. world-relative) origin of an entity as a vector. Its sister function '''<code>SetAbsOrigi...")
 
No edit summary
Line 14: Line 14:


Msg( "My World Position Is %f %f %f.\n",GetAbsOrigin().x,GetAbsOrigin().y,GetAbsOrigin().z);
Msg( "My World Position Is %f %f %f.\n",GetAbsOrigin().x,GetAbsOrigin().y,GetAbsOrigin().z);
}
</source>
== GetAbsAngles() ==
<code>GetAbsAngles()</code> returns the absolute (i.e. [[world]]-relative) [[angles]] of an entity as a [[QAngle]]. Its sister function '''<code>SetAbsAngles()</code>''' changes it.
Example Usage:
<source lang=cpp>
void CMyEntity::Think()
{
BaseClass::Think(); // Always do this if you override Think()
Msg( "My World Angle Is %f %f %f.\n",GetAbsAngles().x,GetAbsAngles().y,GetAbsAngles().z);
}
}
</source>
</source>

Revision as of 02:03, 6 July 2014

GetAbsOrigin()

GetAbsOrigin() returns the absolute (i.e. world-relative) origin of an entity as a vector. Its sister function SetAbsOrigin() changes it.

The origin is actually stored in local space (i.e parent-relative), meaning that the Abs functions perform extra calculations to get their return value. Use the more direct GetLocalOrigin() and SetLocalOrigin() if possible; they work directly with the stored value (m_vecOrigin).

Note.pngNote:In fact, GetAbsOrigin() seems to recalculate its return value only if it was changed since the last time it was used, otherwise it just returns cached value stored in a member variable.

Example Usage:

void CMyEntity::Think()
{
	BaseClass::Think(); // Always do this if you override Think()

	Msg( "My World Position Is %f %f %f.\n",GetAbsOrigin().x,GetAbsOrigin().y,GetAbsOrigin().z);
}

GetAbsAngles()

GetAbsAngles() returns the absolute (i.e. world-relative) angles of an entity as a QAngle. Its sister function SetAbsAngles() changes it.

Example Usage:

void CMyEntity::Think()
{
	BaseClass::Think(); // Always do this if you override Think()

	Msg( "My World Angle Is %f %f %f.\n",GetAbsAngles().x,GetAbsAngles().y,GetAbsAngles().z);
}