Isle
Loading...
Searching...
No Matches
LegoRaceCar Class Reference

[AI] Represents a Race Car actor in the game, combining advanced pathing, skeleton kick logic, event and animation handling. More...

#include <legoracers.h>

Inheritance diagram for LegoRaceCar:
Collaboration diagram for LegoRaceCar:

Public Member Functions

 LegoRaceCar ()
 
 ~LegoRaceCar () override
 
MxLong Notify (MxParam &p_param) override
 [AI] Processes notifications/events for the LegoRaceCar (see MxCore). More...
 
const char * ClassName () const override
 [AI] Returns the runtime class name ("LegoRaceCar"). More...
 
MxBool IsA (const char *p_name) const override
 [AI] Determines if this object is of the given class type or derives from it. More...
 
void ParseAction (char *p_extra) override
 [AI] Parses an action string to configure or trigger car behaviors (e.g., updates kick animation references). More...
 
void SetWorldSpeed (MxFloat p_worldSpeed) override
 [AI] Sets world speed for the race car, either for user nav or animation context. More...
 
MxU32 VTable0x6c (LegoPathBoundary *p_boundary, Vector3 &p_v1, Vector3 &p_v2, float p_f1, float p_f2, Vector3 &p_v3) override
 [AI] Delegates advanced animation calculation to base class; see base for logic. More...
 
void Animate (float p_time) override
 [AI] Main animation tick function; handles skeleton kick special states when user-controlled. More...
 
MxResult HitActor (LegoPathActor *p_actor, MxBool p_bool) override
 [AI] Handles player/AI actor collision—score, animation, and sound effects, as well as respawn logic for targeted actors. More...
 
void SwitchBoundary (LegoPathBoundary *&p_boundary, LegoUnknown100db7f4 *&p_edge, float &p_unk0xe4) override
 [AI] Delegates boundary/edge switch operation to base race car logic. More...
 
MxResult VTable0x9c () override
 [AI] Finalizes animation phase/post-kick state machine. More...
 
virtual void SetMaxLinearVelocity (float p_maxLinearVelocity)
 [AI] Sets the maximum linear velocity the car is allowed to attain (and can force 0 for "despawn" effect). More...
 
virtual void FUN_10012ff0 (float p_param)
 [AI] Handles skeleton kick transition logic for given time; switches state as needed. More...
 
virtual MxU32 HandleSkeletonKicks (float p_param1)
 [AI] Handles transition between skeleton kick phases based on animation time and current boundary. More...
 
- Public Member Functions inherited from LegoCarRaceActor
 LegoCarRaceActor ()
 [AI] Constructor, sets up initial movement parameters and starting variable values. [AI] More...
 
const char * ClassName () const override
 [AI] Returns the class name for this actor type. More...
 
MxBool IsA (const char *p_name) const override
 [AI] Checks if the object is a given class name (used for runtime type identification). More...
 
MxU32 VTable0x6c (LegoPathBoundary *p_boundary, Vector3 &p_v1, Vector3 &p_v2, float p_f1, float p_f2, Vector3 &p_v3) override
 [AI] Performs collision detection and/or special logic while moving the car actor along a boundary. More...
 
void Animate (float p_time) override
 [AI] Main per-frame update for the car racer, controls activation of animation and state switching based on global variable values. More...
 
void SwitchBoundary (LegoPathBoundary *&p_boundary, LegoUnknown100db7f4 *&p_edge, float &p_unk0xe4) override
 [AI] Handles switching from one path boundary to another, updating relevant edge and position parameters. More...
 
MxResult VTable0x9c () override
 [AI] Handles the transition at key animation logic points, such as the end/start of edges and boundaries. More...
 
virtual void FUN_10080590 (float p_time)
 [AI] Adjusts the target and acceleration for the car based on path, player position, and time step. More...
 
virtual void FUN_10012bb0 (float p_unk0x14)
 [AI] Sets the car acceleration or acceleration-related value. More...
 
virtual float FUN_10012bc0 ()
 [AI] Returns the current value of the acceleration or acceleration-related parameter. [AI] More...
 
virtual void FUN_10012bd0 (float p_unk0x10)
 [AI] Sets a parameter likely related to speed multipliers when going straight. More...
 
virtual float FUN_10012be0 ()
 [AI] Returns the current value of the straight path speed multiplier parameter. [AI] More...
 
virtual void FUN_10012bf0 (float p_unk0x18)
 [AI] Sets a parameter likely affecting dynamic velocity or similar adjustment factor. More...
 
virtual float FUN_10012c00 ()
 [AI] Retrieves the current value of the velocity-related/dynamic adjustment parameter. [AI] More...
 
virtual MxS32 VTable0x1c (LegoPathBoundary *p_boundary, LegoEdge *p_edge)
 [AI] Handles logic for state transitions at control edges, updating actor state if needed based on path position. More...
 
- Public Member Functions inherited from LegoRaceActor
 LegoRaceActor ()
 [AI] Constructor for the LegoRaceActor class. More...
 
const char * ClassName () const override
 [AI] Returns the runtime class name for this class. More...
 
MxBool IsA (const char *p_name) const override
 [AI] Determines whether this object is of a class with a given name. More...
 
MxS32 VTable0x68 (Vector3 &p_v1, Vector3 &p_v2, Vector3 &p_v3) override
 [AI] Handles collision/interaction queries between the actor and the environment or other actors. More...
 
MxU32 VTable0x90 (float p_time, Matrix4 &p_matrix) override
 [AI] Updates the actor's state and transformation for a given simulation time. More...
 
MxResult HitActor (LegoPathActor *p_actor, MxBool p_bool) override
 [AI] Handles logic when this actor is hit by another actor (e.g., collision interaction). More...
 
virtual MxResult FUN_10014aa0 ()
 [AI] Additional race-specific behavior stub. More...
 
- Public Member Functions inherited from LegoAnimActor
 LegoAnimActor ()
 [AI] Initializes LegoAnimActor and sets the current animation index to -1. More...
 
 ~LegoAnimActor () override
 [AI] Destructor cleans up all animation map structures. More...
 
void ParseAction (char *p_extra) override
 [AI] Handles extra action strings, looks for animation assignments and delegates to presenters (overrides parent). More...
 
void SetWorldSpeed (MxFloat p_worldSpeed) override
 [AI] Sets the current world speed and chooses which animation (from the animation map list) should be used; see source for selection logic. More...
 
void Animate (float p_time) override
 [AI] Performs per-frame update; applies the appropriate animation to mesh ROIs based on speed and state. More...
 
void VTable0x74 (Matrix4 &p_transform) override
 [AI] Applies the current animation's transforms to the provided matrix, propagates to mesh hierarchies. More...
 
virtual MxResult FUN_1001c1f0 (float &p_und)
 [AI] Computes the animation phase offset within the current animation, adjusts for looping. More...
 
virtual MxResult FUN_1001c360 (float p_und, Matrix4 &p_transform)
 [AI] Applies the animation transform for the current animation at the given phase, writes to matrix. More...
 
virtual MxResult FUN_1001c450 (LegoAnim *p_AnimTreePtr, float p_unk0x00, LegoROI **p_roiMap, MxU32 p_numROIs)
 [AI] Adds a new animation mapping (LegoAnimActorStruct) with a tree, threshold, and mesh mapping. More...
 
virtual void ClearMaps ()
 [AI] Deallocates all animation map structures and selects no animation; resets current animation index. More...
 
const char * ClassName () const override
 [AI] Returns the class name string for RTTI and type checking. More...
 
MxBool IsA (const char *p_name) const override
 [AI] Checks for runtime type equality ("IsA" support); matches for this class or parent. More...
 
- Public Member Functions inherited from LegoPathActor
 LegoPathActor ()
 [AI] Initializes the path actor, setting up default state and references. [AI] More...
 
 ~LegoPathActor () override
 [AI] Destructor, cleans up allocated containers. [AI] More...
 
void ParseAction (char *p_extra) override
 [AI] Parses a set of key-value action commands and configures path navigation and collision for this actor. More...
 
virtual MxS32 VTable0x68 (Vector3 &p_v1, Vector3 &p_v2, Vector3 &p_v3)
 [AI] Checks for collision/intersection with boundaries, geometry, and other actors along a traced segment; assists in advanced pathfinding by propagation. More...
 
virtual MxU32 VTable0x6c (LegoPathBoundary *p_boundary, Vector3 &p_v1, Vector3 &p_v2, float p_f1, float p_f2, Vector3 &p_v3)
 [AI] Trace movement or collision through presenters (edge test), then through other actors. More...
 
virtual void Animate (float p_time)
 [AI] Per-frame animation update. More...
 
virtual void VTable0x74 (Matrix4 &p_transform)
 [AI] Updates the ROI's transformation (typically matrix) with new values, applies world position/orientation changes. More...
 
virtual void SetUserNavFlag (MxBool p_userNavFlag)
 [AI] Sets whether the actor is controlled by user navigation. More...
 
virtual MxBool GetUserNavFlag ()
 [AI] Returns user navigation state (whether actor follows player input). More...
 
virtual MxResult VTable0x80 (const Vector3 &p_point1, Vector3 &p_point2, Vector3 &p_point3, Vector3 &p_point4)
 [AI] Calculates path interpolation for a set of points, updates state for path animation, and computes Bezier arc duration. More...
 
virtual MxResult VTable0x84 (LegoPathBoundary *p_boundary, float p_time, Vector3 &p_p1, Vector3 &p_p4, LegoUnknown100db7f4 &p_destEdge, float p_destScale)
 [AI] Moves actor to a destination edge. More...
 
virtual MxResult VTable0x88 (LegoPathBoundary *p_boundary, float p_time, LegoEdge &p_srcEdge, float p_srcScale, LegoUnknown100db7f4 &p_destEdge, float p_destScale)
 [AI] Moves the actor between two edges across a boundary, recalculates placement and orientation. More...
 
virtual MxS32 VTable0x8c (float p_time, Matrix4 &p_transform)
 [AI] Advance actor's position/state along the path for a given timeslice. More...
 
virtual MxU32 VTable0x90 (float, Matrix4 &)
 [AI] Placeholder for custom logic during per-timestep simulation for non-user-controlled animation. More...
 
virtual MxResult HitActor (LegoPathActor *, MxBool)
 [AI] Handles logic when this actor hits (collides with) another path actor; can be overridden for custom interaction. More...
 
virtual void SwitchBoundary (LegoPathBoundary *&p_boundary, LegoUnknown100db7f4 *&p_edge, float &p_unk0xe4)
 [AI] Switches current path boundary and destination edge, typically called on transitions or respawns. More...
 
virtual MxResult VTable0x9c ()
 [AI] Handles exit transition and next-edge search logic; also used for collision reaction and fallback. More...
 
virtual MxS32 VTable0xa0 ()
 [AI] Placeholder for custom extension. More...
 
virtual void VTable0xa4 (MxBool &p_und1, MxS32 &p_und2)
 [AI] Returns information depending on actor type. More...
 
virtual void VTable0xa8 ()
 [AI] Re-applies transform to ROI, updates camera if needed, and processes per-actor tick actions. More...
 
virtual void SetMaxLinearVel (MxFloat p_maxLinearVel)
 [AI] Sets the maximum linear velocity for actor navigation. More...
 
virtual MxFloat GetMaxLinearVel ()
 [AI] Gets the maximum allowed navigation speed for this actor. More...
 
virtual MxFloat VTable0xb4 ()
 [AI] Returns an internal value used in fallback collision/velocity calculation (proportional fudge factor). More...
 
virtual MxFloat VTable0xb8 ()
 [AI] Returns a damping/multiplier factor used for velocity reduction after collisions. More...
 
virtual void VTable0xbc (MxFloat p_unk0x140)
 [AI] Sets the fudge parameter for fallback collision push-back. More...
 
virtual void VTable0xc0 (MxFloat p_unk0x144)
 [AI] Sets the velocity damping factor after bump. More...
 
virtual void VTable0xc4 ()
 [AI] Empty handler for optional custom per-tick transition logic. More...
 
virtual void VTable0xc8 (MxU8 p_unk0x148)
 [AI] Sets the rolling state (animation index, mainly for camera turning/curves). More...
 
const char * ClassName () const override
 [AI] Returns the class name string for RTTI-style checks. More...
 
MxBool IsA (const char *p_name) const override
 [AI] RTTI-like check, matches against own or base class name for IsA hierarchy checks. More...
 
LegoPathBoundaryGetBoundary ()
 [AI] Retrieves the current path boundary associated with this actor. More...
 
MxU32 GetActorState ()
 [AI] Gets the current navigation/animation state of the actor. More...
 
LegoPathControllerGetController ()
 [AI] Retrieves pointer to the path controller which governs this actor's movement. More...
 
MxBool GetCollideBox ()
 [AI] Gets the actor's collision box flag (if TRUE, actor uses a precise collision shape). More...
 
MxFloat GetLastTime ()
 [AI] Gets the previous animation time value from last simulation tick. More...
 
MxFloat GetActorTime ()
 [AI] Returns the current animation time of the actor. More...
 
void SetBoundary (LegoPathBoundary *p_boundary)
 [AI] Assigns a new boundary for the actor (for path switching). More...
 
void SetActorState (MxU32 p_actorState)
 [AI] Sets the navigation/path state of the actor. More...
 
void SetController (LegoPathController *p_pathController)
 [AI] Assigns a new path controller (used for actor transitions between paths). More...
 
void SetLastTime (MxFloat p_lastTime)
 [AI] Sets the time value for the last performed simulation tick. More...
 
void SetActorTime (MxFloat p_actorTime)
 [AI] Sets the global actor animation time value, adjusting how far along the animation is. More...
 
void UpdatePlane (LegoNamedPlane &p_namedPlane)
 [AI] Updates a named plane to match this actor's world position, direction, and up vector. More...
 
void PlaceActor (LegoNamedPlane &p_namedPlane)
 [AI] Places this actor into the world at the given plane's name, location, and orientation. More...
 
- Public Member Functions inherited from LegoActor
 LegoActor ()
 [AI] Constructs new LegoActor, initializes members. More...
 
 ~LegoActor () override
 [AI] Cleans up LegoActor; stops sound if active. More...
 
const char * ClassName () const override
 [AI] Gets the class name of this object. More...
 
MxBool IsA (const char *p_name) const override
 [AI] Determines if the class is or derives from the given name. More...
 
void ParseAction (char *p_extra) override
 [AI] Parses an action string and applies parsed behaviors to the actor. More...
 
void SetROI (LegoROI *p_roi, MxBool p_bool1, MxBool p_bool2) override
 [AI] Sets the Region of Interest (ROI, i.e. More...
 
virtual MxFloat GetSoundFrequencyFactor ()
 [AI] Returns the current frequency factor for the actor's sound. More...
 
virtual void SetSoundFrequencyFactor (MxFloat p_frequencyFactor)
 [AI] Sets the frequency factor for the actor's sound playback (e.g., to alter pitch). More...
 
virtual void VTable0x58 (MxFloat p_unk0x70)
 [AI] Sets a floating point property, unknown usage (possibly animation or audio parameter). More...
 
virtual MxFloat VTable0x5c ()
 [AI] Gets the unknown floating point property set by VTable0x58. [AI] [AI_SUGGESTED_NAME: GetVoicePitchModifier] More...
 
virtual MxU8 GetActorId ()
 [AI] Gets this actor's numeric ID, corresponding to a known enumeration/actor. More...
 
virtual void SetActorId (MxU8 p_actorId)
 [AI] Sets the actor's numeric ID. More...
 
void Mute (MxBool p_muted)
 [AI] Mutes or unmutes the actor's current sound. More...
 
- Public Member Functions inherited from LegoEntity
 LegoEntity ()
 [AI] Default constructor. Initializes the LegoEntity with default values. [AI] More...
 
 ~LegoEntity () override
 [AI] Destructor. Cleans up resources and ensures ROI and script state are released. [AI] More...
 
MxLong Notify (MxParam &p_param) override
 [AI] Handles event notification for the entity, most notably user clicks, using polymorphic dispatch. More...
 
const char * ClassName () const override
 [AI] Returns the class name string. Used in entity runtime type identification. [AI] More...
 
MxBool IsA (const char *p_name) const override
 [AI] Polymorphic type check for this entity given a string. More...
 
virtual MxResult Create (MxDSAction &p_dsAction)
 [AI] Initializes the entity from a DSAction object, typically from a script or file load. More...
 
virtual void Destroy (MxBool p_fromDestructor)
 [AI] Cleans up the entity, detaching ROI and releasing references. More...
 
virtual void ParseAction (char *p_extra)
 [AI] Parses an action description string (usually from script "extra" data) and sets up this entity's action state. More...
 
virtual void SetROI (LegoROI *p_roi, MxBool p_bool1, MxBool p_bool2)
 [AI] Assigns a 3D ROI (3D object instance) to this entity, controlling how it appears/acts in the world. More...
 
virtual void SetWorldTransform (const Vector3 &p_location, const Vector3 &p_direction, const Vector3 &p_up)
 [AI] Explicitly sets the world transformation (location, direction, up vector) for this entity. More...
 
virtual void ResetWorldTransform (MxBool p_cameraFlag)
 [AI] Resets the transformation for this entity (e.g., used with camera transitions). More...
 
virtual void SetWorldSpeed (MxFloat p_worldSpeed)
 [AI] Sets the current world speed value for this entity (used to control motion/animation rate). More...
 
virtual void ClickSound (MxBool p_und)
 [AI] Plays a click sound, typically in response to user/AI actions, according to entity type. More...
 
virtual void ClickAnimation ()
 [AI] Plays a context-sensitive click animation, driven by current entity type and state. [AI] More...
 
virtual void SwitchVariant ()
 [AI] Switches variants for this entity (e.g., different animation, mesh, or texture variant), based on type. [AI] More...
 
virtual void SwitchSound ()
 [AI] Triggers a context-dependent audio/sound variant switch for this entity. [AI] More...
 
virtual void SwitchMove ()
 [AI] Switches movement/animation variant for this entity, if applicable (e.g., walking/running state). [AI] More...
 
virtual void SwitchColor (LegoROI *p_roi)
 [AI] Switches the color or texture variant for this entity (or target ROI). More...
 
virtual void SwitchMood ()
 [AI] Triggers a mood/state switch for this entity (if supported), often for characters. [AI] More...
 
void FUN_10010c30 ()
 [AI] Updates the camera transformation when this entity is the camera target. Used after movement or position updates. [AI] More...
 
void SetType (MxU8 p_type)
 [AI] Sets the entity's type (actor/plant/building/etc.) [AI] More...
 
void SetLocation (const Vector3 &p_location, const Vector3 &p_direction, const Vector3 &p_up, MxBool p_und)
 [AI] Sets the world-space location, direction, and up, applying normalization and transformation. More...
 
Mx3DPointFloat GetWorldDirection ()
 [AI] Gets the normalized world-space direction vector, optionally updating from ROI. [AI] More...
 
Mx3DPointFloat GetWorldUp ()
 [AI] Gets the normalized world-space up vector, optionally updating from ROI. [AI] More...
 
Mx3DPointFloat GetWorldPosition ()
 [AI] Gets the world-space position vector, optionally updating from ROI. [AI] More...
 
MxBool GetUnknown0x10IsSet (MxU8 p_flag)
 [AI] Checks if a bit flag in m_unk0x10 is set (purpose: state/animation suppression lock). More...
 
MxBool GetFlagsIsSet (MxU8 p_flag)
 [AI] Checks if a flag is set in the primary flags byte (m_flags). More...
 
MxU8 GetFlags ()
 [AI] Returns the value of the flag byte. [AI] More...
 
MxFloat GetWorldSpeed ()
 [AI] Gets the entity's current world speed state. [AI] More...
 
LegoROIGetROI ()
 [AI] Gets the ROI (Realtime Object Instance) associated with this entity. [AI] More...
 
MxU8 GetType ()
 [AI] Gets the type of this entity (one of the enum Type values). [AI] More...
 
MxBool GetCameraFlag ()
 [AI] Returns whether this entity is flagged as camera (affects world/camera synchronization). [AI] More...
 
void SetFlags (MxU8 p_flags)
 [AI] Sets all entity flags at once (replaces previous). More...
 
void SetFlag (MxU8 p_flag)
 [AI] Sets the given flag in the flags byte. More...
 
void ClearFlag (MxU8 p_flag)
 [AI] Clears the given flag in the flags byte. More...
 
void SetUnknown0x10Flag (MxU8 p_flag)
 [AI] Sets the given bit in the unknown (usually internal action suppression) flag byte. More...
 
void ClearUnknown0x10Flag (MxU8 p_flag)
 [AI] Clears the given bit in the unknown flag byte. More...
 
- Public Member Functions inherited from MxEntity
 MxEntity ()
 Default constructor. More...
 
 ~MxEntity () override
 Virtual destructor for MxEntity. More...
 
const char * ClassName () const override
 Returns the class name for type introspection. More...
 
MxBool IsA (const char *p_name) const override
 Checks if the object is of the given class name or a parent type. More...
 
virtual MxResult Create (MxS32 p_entityId, const MxAtomId &p_atomId)
 Initializes the entity from a given entity ID and AtomId. More...
 
MxResult Create (MxDSAction &p_dsAction)
 Initializes the entity from a MxDSAction object. More...
 
MxS32 GetEntityId ()
 Returns the current entity ID. More...
 
MxAtomIdGetAtomId ()
 Returns a reference to the entity AtomId. More...
 
void SetEntityId (MxS32 p_entityId)
 Sets the entity ID to the given value. More...
 
void SetAtomId (const MxAtomId &p_atomId)
 Sets the AtomId to the given value. More...
 
- Public Member Functions inherited from MxCore
 MxCore ()
 [AI] Constructs a new MxCore object and assigns it a unique id. More...
 
virtual ~MxCore ()
 [AI] Virtual destructor. Required for correct polymorphic cleanup in derived classes. More...
 
virtual MxLong Notify (MxParam &p_param)
 [AI] Virtual callback notification mechanism. More...
 
virtual MxResult Tickle ()
 [AI] Called by tickle managers to allow the object to update itself. More...
 
virtual const char * ClassName () const
 [AI] Returns the runtime class name of this object. More...
 
virtual MxBool IsA (const char *p_name) const
 [AI] Checks whether this object's class type or parents match the given name. More...
 
MxU32 GetId ()
 [AI] Gets the unique (per-process) id assigned to this object instance. More...
 
- Public Member Functions inherited from LegoRaceMap
 LegoRaceMap ()
 [AI] Constructs a new, non-enabled LegoRaceMap and registers it with the ControlManager. More...
 
 ~LegoRaceMap () override
 [AI] Destroys the LegoRaceMap and unregisters it from the ControlManager. More...
 
MxLong Notify (MxParam &p_param) override
 [AI] Handles notifications, especially for UI control interactions (e.g., clicking the map control to show/hide the minimap). More...
 
void ParseAction (char *p_extra) override
 [AI] Parses action strings for map locator and geometry mapping and links control and map geometry to world/display mapping. More...
 
void Animate (float p_time) override=0
 [AI] Abstract interface for updating minimap animations according to world state/time. More...
 
virtual void FUN_1005d4b0 ()
 [AI] Updates the minimap overlay position and enables/disables the overlay image as needed. More...
 

Static Public Member Functions

static void FUN_10012de0 ()
 [AI] Resets static sound state variables for the car (last sound time, stopped flag, etc). More...
 
static void InitSoundIndices ()
 [AI] Initializes sound playback array indices for collision sounds to randomized values. More...
 
- Static Public Member Functions inherited from LegoActor
static const char * GetActorName (MxU8 p_id)
 [AI] Gets the static display name of an actor by ID. More...
 

Additional Inherited Members

- Public Types inherited from LegoPathActor
enum  ActorState {
  c_initial = 0 , c_one = 1 , c_two = 2 , c_three = 3 ,
  c_disabled = 4 , c_maxState = 255 , c_noCollide = 0x100
}
 [AI] State and flags for a LegoPathActor during navigation along a path. [AI] More...
 
- Public Types inherited from LegoActor
enum  {
  c_none = 0 , c_pepper , c_mama , c_papa ,
  c_nick , c_laura , c_brickster
}
 [AI] Enumeration of actor IDs for known characters. More...
 
- Public Types inherited from LegoEntity
enum  Type {
  e_actor = 0 , e_unk1 , e_plant , e_building ,
  e_autoROI
}
 [AI] Types of LegoEntity (Actor, Plant, Building, Auto ROI, etc.) [AI] More...
 
enum  { c_bit1 = 0x01 , c_managerOwned = 0x02 }
 [AI] Bit flag constants for entity state management [AI] More...
 
enum  { c_altBit1 = 0x01 }
 [AI] Secondary bit flag constants [AI] More...
 
- Protected Member Functions inherited from LegoPathActor
MxU32 FUN_1002edd0 (list< LegoPathBoundary * > &p_boundaries, LegoPathBoundary *p_boundary, Vector3 &p_v1, Vector3 &p_v2, float p_f1, float p_f2, Vector3 &p_v3, MxS32 p_und)
 [AI] Recursively checks boundaries for collisions or collision path propagation up to a certain recursion depth. More...
 
- Protected Member Functions inherited from LegoEntity
void Init ()
 [AI] Initializes the entity's members to default/neutral values (utility for constructors and resets). [AI] More...
 
void SetWorld ()
 [AI] Registers/attaches this entity to the current world if not already; called on create or location change. [AI] More...
 
- Protected Attributes inherited from LegoCarRaceActor
MxFloat m_unk0x08
 [AI] Used for initial movement adjustment or normalization; always set to 1.0f in constructor. [AI] More...
 
MxU8 m_unk0x0c
 [AI] State variable/fsm controlling the actor's current animation/logic state. [AI] More...
 
MxFloat m_unk0x10
 [AI] Likely a multiplier for maximum speed when on a straight portion of the track. [AI_SUGGESTED_NAME: m_straightSpeedMultiplier] More...
 
MxFloat m_unk0x14
 [AI] Could represent car acceleration or change-in-speed envelope. [AI_SUGGESTED_NAME: m_acceleration] More...
 
MxFloat m_unk0x18
 [AI] General movement/velocity adjustment parameter, possibly for handling or group speed adjustment. [AI] More...
 
MxFloat m_unk0x1c
 [AI] Used for storing timestamps for time-based actor movement updates. [AI_SUGGESTED_NAME: m_lastUpdateTimestamp] More...
 
- Protected Attributes inherited from LegoAnimActor
vector< LegoAnimActorStruct * > m_animMaps
 [AI] List of animation structures, each representing a valid animation for different speed/phase ranges. [AI] More...
 
MxS16 m_curAnim
 [AI] Index of currently selected animation map (-1 if none active). [AI] More...
 
- Protected Attributes inherited from LegoPathActor
MxFloat m_BADuration
 [AI] Duration of current Bezier arc (distance along path/current edge). [AI] More...
 
MxFloat m_unk0x7c
 [AI] Interpolator/progress state along curve segment. [AI] More...
 
MxFloat m_actorTime
 [AI] Animation time for current path segment. [AI] More...
 
MxFloat m_lastTime
 [AI] Time of last update (used for delta calculations). [AI] More...
 
LegoPathBoundarym_boundary
 [AI] Current boundary the actor is navigating on. [AI] More...
 
LegoUnknown m_unk0x8c
 [AI] Helper object for path curve interpolation and evaluation. [AI] More...
 
MxU32 m_actorState
 [AI] State and flags bitfield for path following logic. [AI] More...
 
LegoUnknown100db7f4m_destEdge
 [AI] Current or target edge for path traversal. [AI] More...
 
MxFloat m_unk0xe4
 [AI] Position scalar on destination edge (0-1 across the edge). [AI] More...
 
MxBool m_collideBox
 [AI] Use bounding-box for more accurate collision. [AI] More...
 
MxBool m_unk0xe9
 [AI] Stores latest intersection/collision status/type. [AI] More...
 
MxBool m_userNavFlag
 [AI] TRUE if this actor is currently user/player controlled. [AI] More...
 
MxMatrix m_unk0xec
 [AI] World-to-local transformation matrix for this actor/ROI. [AI] More...
 
LegoPathEdgeContainerm_grec
 [AI] Edge/boundary helper for tracking transitions and stateful animation. [AI] More...
 
LegoPathControllerm_pathController
 [AI] Path controller/manages permitted boundaries for transitions. [AI] More...
 
MxFloat m_maxLinearVel
 [AI] Maximum speed of actor while moving along path. [AI] More...
 
MxFloat m_unk0x140
 [AI] Scaling factor for fallback/collision response logic. [AI] More...
 
MxFloat m_unk0x144
 [AI] Damping factor for velocity after collision ("bounce" friction). [AI] More...
 
MxU8 m_unk0x148
 [AI] Angle/animation mode for rolling/camera tilting. [AI] More...
 
MxS32 m_unk0x14c
 [AI] Rolling angle delta (variant for camera logic). [AI] More...
 
MxFloat m_unk0x150
 [AI] Scalar factor for camera turn velocity logic. [AI] More...
 
- Protected Attributes inherited from LegoActor
MxFloat m_frequencyFactor
 [AI] The frequency/pitch scaling factor for the actor's sound (default 0 == normal). More...
 
LegoCacheSoundm_sound
 [AI] Pointer to a currently active sound instance played by the actor, if any. More...
 
MxFloat m_unk0x70
 [AI] Unknown float property, likely used for advanced audio/animation control. [AI_SUGGESTED_NAME: m_voicePitchModifier] More...
 
MxU8 m_actorId
 [AI] Unique identifier for this actor, corresponding to enum above. More...
 
- Protected Attributes inherited from LegoEntity
MxU8 m_unk0x10
 [AI] Unknown state/flag, used mainly to guard against repeated actions or manage animation/sound state. [AI] More...
 
MxU8 m_flags
 [AI] Primary entity flags (bitfield); tracks per-entity management status, internal update locks, etc. [AI] More...
 
Mx3DPointFloat m_worldLocation
 [AI] Entity location in world coordinates. [AI] More...
 
Mx3DPointFloat m_worldDirection
 [AI] Entity direction vector in world space (normalized). [AI] More...
 
Mx3DPointFloat m_worldUp
 [AI] Entity up vector in world space (normalized). [AI] More...
 
MxFloat m_worldSpeed
 [AI] World-relative speed (can affect animation/movement logic). [AI] More...
 
LegoROIm_roi
 [AI] Pointer to this entity's currently assigned ROI (3D instance in the world). [AI] More...
 
MxBool m_cameraFlag
 [AI] Set to TRUE if this entity is currently the camera target. [AI] More...
 
MxU8 m_type
 [AI] The entity type (Type enum value). [AI] More...
 
Extra::ActionType m_actionType
 [AI] Action type, parsed from script/extra string (e.g., openram/run/exit); guides Notify() and click logic. [AI] More...
 
char * m_siFile
 [AI] When parsing ACTION command, this is the SI script/filename to execute (owned, heap-allocated). [AI] More...
 
MxS32 m_targetEntityId
 [AI] When parsing ACTION command, this is the target entity ID for the action (or -1 for none). [AI] More...
 
- Protected Attributes inherited from MxEntity
MxS32 m_entityId
 The unique entity ID, typically used for lookup and reference. More...
 
MxAtomId m_atomId
 The AtomId associated with this entity, used for resource and script identification. More...
 
- Static Protected Attributes inherited from LegoCarRaceActor
static MxFloat g_unk0x100f7aec = 8.0f
 [AI] Static value used as a global reference for minimum or target speed under specific circumstances. [AI] More...
 

Detailed Description

[AI] Represents a Race Car actor in the game, combining advanced pathing, skeleton kick logic, event and animation handling.

[AI] Handles user-controlled and AI-controlled racing car logic, including boundary handling, multi-phase animation, sound management, and rich notification integration.

Definition at line 167 of file legoracers.h.

Constructor & Destructor Documentation

◆ LegoRaceCar()

LegoRaceCar::LegoRaceCar ( )

Definition at line 172 of file legoracers.cpp.

◆ ~LegoRaceCar()

LegoRaceCar::~LegoRaceCar ( )
override

Definition at line 186 of file legoracers.cpp.

Member Function Documentation

◆ Animate()

void LegoRaceCar::Animate ( float  p_time)
overridevirtual

[AI] Main animation tick function; handles skeleton kick special states when user-controlled.

Parameters
p_time[AI] Animation time.

[AI] Handles engine sound effects, speed/RPM variable calculation and "can't stop" nag sound playback.

Implements LegoRaceMap.

Definition at line 398 of file legoracers.cpp.

◆ ClassName()

const char * LegoRaceCar::ClassName ( ) const
inlineoverridevirtual

[AI] Returns the runtime class name ("LegoRaceCar").

Reimplemented from LegoRaceActor.

Definition at line 181 of file legoracers.h.

◆ FUN_10012de0()

void LegoRaceCar::FUN_10012de0 ( )
static

[AI] Resets static sound state variables for the car (last sound time, stopped flag, etc).

Definition at line 204 of file legoracers.cpp.

◆ FUN_10012ff0()

void LegoRaceCar::FUN_10012ff0 ( float  p_param)
virtual

[AI] Handles skeleton kick transition logic for given time; switches state as needed.

Parameters
p_param[AI] Animation/current time.

Definition at line 299 of file legoracers.cpp.

◆ HandleSkeletonKicks()

MxU32 LegoRaceCar::HandleSkeletonKicks ( float  p_param1)
virtual

[AI] Handles transition between skeleton kick phases based on animation time and current boundary.

Parameters
p_param1[AI] Animation/current time.
Returns
[AI] TRUE if a skeleton kick phase was detected/handled, else FALSE (if out of phase).

Definition at line 353 of file legoracers.cpp.

◆ HitActor()

MxResult LegoRaceCar::HitActor ( LegoPathActor p_actor,
MxBool  p_bool 
)
overridevirtual

[AI] Handles player/AI actor collision—score, animation, and sound effects, as well as respawn logic for targeted actors.

Parameters
p_actor[AI] Other actor involved in the collision.
p_bool[AI] Whether the collision was initiated by this car.

Reimplemented from LegoRaceActor.

Definition at line 457 of file legoracers.cpp.

◆ InitSoundIndices()

void LegoRaceCar::InitSoundIndices ( )
static

[AI] Initializes sound playback array indices for collision sounds to randomized values.

Definition at line 214 of file legoracers.cpp.

◆ IsA()

MxBool LegoRaceCar::IsA ( const char *  p_name) const
inlineoverridevirtual

[AI] Determines if this object is of the given class type or derives from it.

Parameters
p_name[AI] Name string of the class to check.

Reimplemented from LegoRaceActor.

Definition at line 190 of file legoracers.h.

◆ Notify()

MxLong LegoRaceCar::Notify ( MxParam p_param)
overridevirtual

[AI] Processes notifications/events for the LegoRaceCar (see MxCore).

Parameters
p_param[AI] Notification parameters (engine event details).

Reimplemented from LegoRaceMap.

Definition at line 193 of file legoracers.cpp.

◆ ParseAction()

void LegoRaceCar::ParseAction ( char *  p_extra)
overridevirtual

[AI] Parses an action string to configure or trigger car behaviors (e.g., updates kick animation references).

Parameters
p_extra[AI] Null-terminated string with action info.

[AI] Sets up skeleton kick animations and path boundaries if controlled by the user.

Reimplemented from LegoRaceMap.

Definition at line 255 of file legoracers.cpp.

◆ SetMaxLinearVelocity()

void LegoRaceCar::SetMaxLinearVelocity ( float  p_maxLinearVelocity)
virtual

[AI] Sets the maximum linear velocity the car is allowed to attain (and can force 0 for "despawn" effect).

Parameters
p_maxLinearVelocity[AI] Maximum speed, or negative for reset/stop.

Definition at line 241 of file legoracers.cpp.

◆ SetWorldSpeed()

void LegoRaceCar::SetWorldSpeed ( MxFloat  p_worldSpeed)
overridevirtual

[AI] Sets world speed for the race car, either for user nav or animation context.

Parameters
p_worldSpeed[AI] New speed to apply.

Reimplemented from LegoAnimActor.

Definition at line 226 of file legoracers.cpp.

◆ SwitchBoundary()

void LegoRaceCar::SwitchBoundary ( LegoPathBoundary *&  p_boundary,
LegoUnknown100db7f4 *&  p_edge,
float &  p_unk0xe4 
)
inlineoverridevirtual

[AI] Delegates boundary/edge switch operation to base race car logic.

Parameters
p_boundary[AI]
p_edge[AI]
p_unk0xe4[AI]

Reimplemented from LegoPathActor.

Definition at line 243 of file legoracers.h.

◆ VTable0x6c()

MxU32 LegoRaceCar::VTable0x6c ( LegoPathBoundary p_boundary,
Vector3 p_v1,
Vector3 p_v2,
float  p_f1,
float  p_f2,
Vector3 p_v3 
)
inlineoverridevirtual

[AI] Delegates advanced animation calculation to base class; see base for logic.

Parameters
p_boundary[AI]
p_v1[AI]
p_v2[AI]
p_f1[AI]
p_f2[AI]
p_v3[AI]

Reimplemented from LegoPathActor.

Definition at line 217 of file legoracers.h.

◆ VTable0x9c()

MxResult LegoRaceCar::VTable0x9c ( )
overridevirtual

[AI] Finalizes animation phase/post-kick state machine.

[AI] Handles advanced state reset on boundary change or skeleton kick animation phase switching.

Reimplemented from LegoPathActor.

Definition at line 534 of file legoracers.cpp.


The documentation for this class was generated from the following files: