[AI] Represents an axis-aligned bounding box in 3D space, using minimum and maximum points.
[AI] Represents a bounding sphere in 3D space with center and radius.
4x4 Matrix class with virtual interface for manipulation and transformation.
[AI] Represents a 3D point with floating-point precision, inheriting from Vector3.
[AI] Represents a 4x4 transformation matrix, specialized for the LEGO Island engine and derived from ...
[AI] Represents an ROI (Real-time Object Instance) that can be oriented in world space,...
const BoundingSphere & GetWorldBoundingSphere() const override
Returns the object's bounding sphere in world coordinates.
OrientableROI()
Default constructor.
BoundingBox m_world_bounding_box
The object's axis-aligned bounding box in world space, recalculated as needed.
virtual void SetLocalTransform(const Matrix4 &p_transform)
Sets the local-to-world transformation matrix directly.
@ c_bit2
[AI] Bit mask for internal status flag 2 (see usage in ToggleUnknown0xd8).
@ c_bit1
[AI] Bit mask for internal status flag 1 (see usage in ToggleUnknown0xd8).
const float * GetWorldUp() const
Returns a pointer to the world up vector from the transformation matrix.
const float * GetWorldPosition() const
Returns a pointer to the world position from the transformation matrix (translation row).
const float * GetWorldDirection() const
Returns a pointer to the world direction vector (forward axis) from the transformation matrix.
undefined4 m_unk0xd8
Unknown status or flag field; bits manipulated via ToggleUnknown0xd8, possibly related to dirty state...
const Matrix4 & GetLocal2World() const
Accessor for the current local-to-world transformation matrix.
virtual void UpdateWorldVelocity()
Updates the world velocity (must be implemented by subclasses if custom velocity logic is needed).
void WrappedSetLocalTransform(const Matrix4 &p_transform)
Wraps SetLocalTransform, for possible override or interface uniformity.
virtual void VTable0x1c()
[AI] Concrete subclass implementation should implement this to perform post-bounding-volume-change lo...
Mx3DPointFloat m_world_velocity
The object's velocity vector in world coordinates.
BoundingBox m_unk0x80
An unknown bounding box; usage unclear, could be related to extended collision or volume testing.
void FUN_100a5a30(const Vector3 &p_world_velocity)
Sets the world velocity to the provided vector.
const float * GetWorldVelocity() const override
Returns a pointer to the object's velocity vector in world space.
MxMatrix m_local2world
The transform from local to world space; 4x4 transformation matrix.
void GetLocalTransform(Matrix4 &p_transform)
Retrieves the local-to-world transformation, or if there is a parent, computes the transform relative...
virtual void VTable0x24(const Matrix4 &p_transform)
Post-multiplies the current local-to-world matrix by p_transform.
virtual void VTable0x14()
[AI] Calls VTable0x1c().
void WrappedVTable0x24(const Matrix4 &p_transform)
Wraps VTable0x24, possibly for decoupling or uniform invocation.
void FUN_100a58f0(const Matrix4 &p_transform)
Assigns the given matrix as the local-to-world transformation and enables some internal flags.
OrientableROI * m_parentROI
If non-null, points to the parent OrientableROI for local/world transformation hierarchy.
virtual void UpdateWorldBoundingVolumes()=0
Recalculates all world bounding volumes from the current local-to-world transform.
void SetParentROI(OrientableROI *p_parentROI)
Sets the parent ROI used for transformation hierarchy.
void UpdateTransformationRelativeToParent(const Matrix4 &p_transform)
Calculates and updates the world transform relative to this object's parent, then calls UpdateWorldDa...
OrientableROI * GetParentROI() const
Accessor for the parent ROI in the transformation hierarchy.
const BoundingBox & GetWorldBoundingBox() const override
Returns the object's bounding box in world coordinates.
BoundingSphere m_world_bounding_sphere
The object's bounding sphere in world space, recalculated from m_local2world.
void ToggleUnknown0xd8(BOOL p_enable)
Enables or disables some bitfields in the internal unknown status variable m_unk0xd8.
virtual void UpdateWorldData(const Matrix4 &p_transform)
Applies p_transform in (presumably) parent coordinates and updates world data for self and children.
[AI] Abstract base class for Real-time Object Instances (ROI) in the world.
[AI] 3D vector class, providing vector and cross-product operations in 3D space.