GetAbsOrigin(): Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
mNo edit summary
No edit summary
Line 1: Line 1:
'''<code>GetAbsOrigin()</code>''' returns the absolute (i.e. [[world]]-relative) [[origin]] of an entity as a [[vector]]. Its sister function '''<code>SetAbsOrigin()</code>''' changes it.
'''<code>GetAbsOrigin()</code>''' returns the absolute (i.e. [[world]]-relative) [[origin]] of an entity as a [[vector]]. Its sister function '''<code>SetAbsOrigin()</code>''' changes it.


The origin is actually stored in local space (i.e [[parent]]-relative), meaning that the Abs functions perform a conversion before returning. If you can, use the more direct <code>[[GetLocalOrigin()]]</code> and <code>[[SetLocalOrigin()]]</code> instead.
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 '''<code>GetLocalOrigin()</code>''' and '''<code>SetLocalOrigin()</code>''' if possible; they work directly with the stored value (<code>m_vecOrigin</code>).


== Alternatives ==
== Alternatives ==


A different approach for finding an origin can be useful, particularly when dealing with a [[brush entity]] which might not have one stored. Bear in mind that these alternatives are all significantly slower than plain <code>GetAbsOrigin()</code>!
A different approach for finding an origin can be useful, particularly when dealing with a [[brush entity]] which might not have one stored. Bear in mind that these alternatives are all significantly more [[expensive]] than the 'vanilla' functions listed above.


; [[Vector]] <code>WorldSpaceCenter()</code>
; [[Vector]] <code>WorldSpaceCenter()</code>

Revision as of 15:32, 6 June 2009

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).

Alternatives

A different approach for finding an origin can be useful, particularly when dealing with a brush entity which might not have one stored. Bear in mind that these alternatives are all significantly more expensive than the 'vanilla' functions listed above.

Vector WorldSpaceCenter()
Returns the centre of an entity's object-aligned bounding box.
void CollisionProp()->CalcNearestPoint(&vecWorldPt,*pVecNearestWorldPt)
Finds the nearest point on the entity's OBB to vecWorldPt. Modifies pVecNearestWorldPt with the result.
Todo: Do these OBB functions work with vphysics?