1#ifndef LEGOPATHCONTROLLER_H
2#define LEGOPATHCONTROLLER_H
406 static CtrlBoundary* g_ctrlBoundariesA;
407 static CtrlEdge* g_ctrlEdgesA;
408 static const char* g_unk0x100f42f0[];
409 static const char* g_unk0x100f4330[];
410 static CtrlBoundary* g_ctrlBoundariesB;
411 static CtrlEdge* g_ctrlEdgesB;
[AI] Handles playback and synchronization of animated LEGO objects, including variable substitution,...
[AI] An actor that moves along a predefined path, supporting boundary transitions,...
[AI] Represents a path segment or boundary in the navigation network for actors (vehicles,...
[AI] Manager for controlling actors' movement along predefined geometric paths.
MxBool ActorExists(LegoPathActor *p_actor)
[AI] Checks whether an actor is contained in the controller's actor set.
void FUN_100468f0(LegoAnimPresenter *p_presenter)
[AI] Processes all boundaries except those with bit3 set, invoking FUN_10057fe0 for the provided anim...
MxResult FUN_10046b30(LegoPathBoundary *&p_boundaries, MxS32 &p_numL)
[AI] Provides current array of boundaries and count as output parameters, for external queries.
MxResult Tickle() override
[AI] Implements the tickle (per-frame update) callback for the controller.
LegoPathBoundary * GetPathBoundary(const char *p_name)
[AI] Searches for a path boundary by name among owned boundaries.
static MxResult Init()
[AI] Static initializer for global controller boundary/edge arrays.
static LegoPathBoundary * GetControlBoundaryA(MxS32 p_index)
[AI] Provides static access to the boundary at given index in g_ctrlBoundariesA.
virtual void Destroy()
[AI] Deinitializes path controller, releases all owned resources and unregisters from tickle manager.
MxResult RemoveActor(LegoPathActor *p_actor)
[AI] Removes an actor from the controller, detaches it from controlled boundaries,...
MxBool IsA(const char *p_name) const override
[AI] Checks inheritance by class name for type introspection.
MxResult PlaceActor(LegoPathActor *p_actor, const char *p_name, MxS32 p_src, float p_srcScale, MxS32 p_dest, float p_destScale)
[AI] Places an actor on a boundary at given source/destination edge indices, commonly for track segme...
MxResult FUN_10048310(LegoPathEdgeContainer *p_grec, const Vector3 &p_oldPosition, const Vector3 &p_oldDirection, LegoPathBoundary *p_oldBoundary, const Vector3 &p_newPosition, const Vector3 &p_newDirection, LegoPathBoundary *p_newBoundary, LegoU8 p_mask, MxFloat *p_param9)
[AI] Complex function performing path transition resolution; computes possible edge transition sequen...
virtual MxResult Create(MxU8 *p_data, const Vector3 &p_location, const MxAtomId &p_trigger)
[AI] Initializes the path controller from the provided binary data at the specified location,...
~LegoPathController() override
[AI] Destructor, unregisters itself from the tickle manager and releases all dynamically allocated pa...
static MxResult Reset()
[AI] Resets (cleans up) global controller boundary/edge arrays allocated by Init().
MxResult FUN_1004a380(Vector3 &p_param1, Vector3 &p_param2, Mx3DPointFloat *p_param3, LegoPathBoundary *&p_boundary, MxFloat &p_param5)
[AI] Finds earliest intersection and placement on a valid boundary for the provided vectors and updat...
MxS32 FUN_1004a240(LegoPathEdgeContainer &p_grec, Vector3 &p_v1, Vector3 &p_v2, float p_f1, LegoUnknown100db7f4 *&p_edge, LegoPathBoundary *&p_boundary)
[AI] Computes path vector and orientation for an actor given a transition along the resolved edge con...
LegoPathController()
[AI] Constructs a LegoPathController, initializing boundary and edge pointers to NULL and counts to z...
const char * ClassName() const override
[AI] Returns the class name for runtime type identification.
static LegoPathBoundary * GetControlBoundaryB(MxS32 p_index)
[AI] Provides static access to the boundary at given index in g_ctrlBoundariesB.
void Enable(MxBool p_enable)
[AI] Enables or disables the controller's registration with the tickle manager, controlling per-frame...
void FUN_10046bb0(LegoWorld *p_world)
[AI] Assigns the provided world pointer to all struct triggers owned by this path controller.
static LegoUnknown100db7f4 * GetControlEdgeB(MxS32 p_index)
[AI] Provides static access to the edge at a given index in g_ctrlEdgesB.
void FUN_10046930(LegoAnimPresenter *p_presenter)
[AI] Invokes FUN_100586e0 for each boundary, with the provided animation presenter.
static LegoUnknown100db7f4 * GetControlEdgeA(MxS32 p_index)
[AI] Provides static access to the edge at a given index in g_ctrlEdgesA.
[AI] Represents a trigger/control element in the LEGO world's path system, linked logically to the wo...
Abstract base class providing an interface for file-like storage with binary and text read/write oper...
Represents the active 3D world, holding all entity, animation, sound, path, and ROI objects.
[AI] Represents a 3D point with floating-point precision, inheriting from Vector3.
[AI] 4D point class for floating point values.
[AI] Atomized (unique) string identifier, managed by reference counting.
[AI] Base virtual class for all Mindscape engine (Mx) objects.
[AI] 3D vector class, providing vector and cross-product operations in 3D space.
#define COMPARE_POINTER_TYPE
set< LegoPathActor *, LegoPathActorSetCompare > LegoPathActorSet
[AI] Defines a set of LegoPathActor pointers, ordered by pointer value using LegoPathActorSetCompare.
set< LegoPathCtrlEdge *, LegoPathCtrlEdgeCompare > LegoPathCtrlEdgeSet
[AI] Set of pointers to control edges, ordered using LegoPathCtrlEdgeCompare.
#define NULL
[AI] Null pointer value (C/C++ semantics).
unsigned char LegoU8
[AI] Unsigned 8-bit integer type used throughout LEGO Island.
[AI] STL compatibility layer header to provide consistent STL (Standard Template Library) types and a...
[AI] Helper structure for rapid lookups of controller-boundary pairs, often used for global or indexe...
LegoPathBoundary * m_boundary
[AI] Associated path boundary within the controller. [AI]
CtrlBoundary()
[AI] Initializes structure by nullifying pointers.
LegoPathController * m_controller
[AI] Pointer to owning path controller. [AI]
[AI] Helper structure pairing controllers with edge references for global or fast access.
CtrlEdge()
[AI] Initializes structure by nullifying pointers.
LegoUnknown100db7f4 * m_edge
[AI] Reference to a specific edge, typically a segment connector or trigger. [AI]
LegoPathController * m_controller
[AI] Pointer to owning path controller. [AI]
[AI] Comparator functor for LegoPathCtrlEdge pointer sets.
MxU32 operator()(const LegoPathCtrlEdge *p_lhs, const LegoPathCtrlEdge *p_rhs) const
[AI] Controller-specific edge used in path navigation.
[AI] Container for path boundary edges, also stores position, direction, and flags.
[AI] Represents an advanced edge in the LEGO Island geometry system, with direction,...