1#ifndef LEGOCARBUILDPRESENTER_H
2#define LEGOCARBUILDPRESENTER_H
299 return m_placedPartCount == m_numberOfParts;
306 void Beta10Inline0x100733d0();
310 MxS16 m_numberOfParts;
311 MxS16 m_placedPartCount;
317 UnknownListEntry* m_parts;
[AI] Represents a bounding sphere in 3D space with center and radius.
[AI] Holds per-node animation data for a model's animation tree.
[AI] Handles playback and synchronization of animated LEGO objects, including variable substitution,...
[AI] Root class for all node-based animation blending/structure.
[AI] Handles the logic and animation presentation for the LEGO Island car-building activity,...
LegoCarBuildAnimPresenter()
[AI] Constructs and initializes the presenter, sets up default assembly state, part list,...
MxS16 GetNumberOfParts()
[AI] Returns how many assembly parts exist in the current build.
virtual MxResult Serialize(LegoStorage *p_storage)
[AI] Serializes or deserializes the assembly state of the car build.
MxS16 GetPlacedPartCount()
[AI] Returns the count of how many parts have been placed so far.
MxBool StringEqualsShelf(const LegoChar *p_string)
[AI] Checks if the supplied string matches "SHELF" prefix (case-insensitive).
void StreamingTickle() override
[AI] Handles streaming phase:
void FUN_10079160()
[AI] (Re-)initializes internal state from animation root, prepares morph keys for "platform" node and...
void SetUnknown0xbc(undefined2 p_unk0xbc)
[AI] Sets the internal unknown word at offset 0xbc.
MxBool StringEndsOnW(LegoChar *p_param)
[AI] Returns TRUE if the given part's name ends with 'W' or 'w' as the second-to-last character.
Matrix4 & GetUnknown0xe0()
[AI] Provides access to the internal Matrix4 representing current animation state,...
@ c_bit1
[AI] Internal bitmask used for blinking animation state and timers.
void SwapNodesByName(LegoChar *p_param1, LegoChar *p_param2)
[AI] Swaps two animation nodes in the scene tree, exchanging their display names and internal indices...
void PutFrame() override
[AI] Called once per displayed animation frame.
const LegoChar * GetWiredNameOfLastPlacedPart()
[AI] Returns the wired part name for the last placed part.
MxBool StringEqualsPlatform(const LegoChar *p_string)
[AI] Checks if the supplied string matches "PLATFORM" (case-insensitive).
void EndAction() override
[AI] Ends the current build action safely, stops blinking and unlocks critical section.
void SetPartObjectIdByName(const LegoChar *p_name, MxS16 p_objectId)
[AI] Sets the object id for the given part name in the assembly state.
void FUN_10079790(const LegoChar *p_name)
[AI] Advances current placed part, handles swaps, and updates morph/visibility.
MxBool PartIsPlaced(const LegoChar *p_name)
[AI] Returns whether a part (by name) has already been placed in the sequence.
MxBool IsA(const char *p_name) const override
[AI] Returns TRUE if this object is of, or inherits from, the supplied type name.
void ReadyTickle() override
[AI] "Ready" tickle for car-building: initializes main entity pointer, updates placed part count,...
~LegoCarBuildAnimPresenter() override
[AI] Destroys the presenter, deletes all allocated part information, strings, and detaches nodes from...
LegoAnimNodeData * FindNodeDataByName(LegoTreeNode *p_treeNode, const LegoChar *p_name)
[AI] Recursively searches for a node with the given name and returns its node data.
static const char * HandlerClassName()
[AI] Returns the string class name used by the presenter dispatch mechanism.
MxBool StringEndsOnY(const LegoChar *p_string)
[AI] Checks if the supplied string ends with "Y" or "y" in the second-to-last character.
void RotateAroundYAxis(MxFloat p_angle)
[AI] Rotates the assembly platform (root part) around the Y axis by the given angle (quaternion math)...
void FUN_100795d0(LegoChar *p_param)
[AI] Hides the referenced animation node by setting its morph key to invisible.
void FUN_10079050(MxS16 p_index)
[AI] Swaps the nodes representing the part at the given index, then hides the 3D node for main (wired...
void RepeatingTickle() override
[AI] No-op for car build (repeats do not trigger anything).
MxBool StringDoesNotEndOnZero(const LegoChar *p_string)
[AI] Checks if string does not end on the character '0'.
MxBool FUN_10079c30(const LegoChar *p_name)
[AI] Returns true if the part with the given name is not yet placed, but is the current to-be-placed ...
MxBool AllPartsPlaced()
[AI] Returns TRUE if all parts have been placed (i.e., assembly is complete).
LegoTreeNode * FindNodeByName(LegoTreeNode *p_treeNode, const LegoChar *p_name)
[AI] Recursively searches for a node with the given name and returns the node itself.
void FUN_10079680(LegoChar *p_param)
[AI] Resets the node's morph key count to zero, restoring/showing the node.
const LegoChar * GetWiredNameByPartName(const LegoChar *p_name)
[AI] Retrieves the wireframe/scene-graph name associated with the player-facing part name.
const BoundingSphere & FUN_10079e20()
[AI] Returns the world bounding sphere of the next part to be placed.
const char * ClassName() const override
[AI] Gets the runtime class name; used for dynamic type checks.
MxBool StringEndsOnYOrN(const LegoChar *p_string)
[AI] Returns TRUE if the given part's name ends with 'Y', 'y', 'N', or 'n' as the second-to-last char...
void FUN_10079a90()
[AI] Advances the internal state for the assembly animation (step advancement).
[AI] Represents an entity that can be placed and managed in the LEGO Island world.
Abstract base class providing an interface for file-like storage with binary and text read/write oper...
[AI] Represents a node within a general, N-ary tree structure.
4x4 Matrix class with virtual interface for manipulation and transformation.
[AI] Represents a 4x4 transformation matrix, specialized for the LEGO Island engine and derived from ...
unsigned short undefined2
#define NULL
[AI] Null pointer value (C/C++ semantics).
char LegoChar
[AI] Alias for char, for use in character/byte data and string handling.
[AI] Represents a single entry in the car assembly sequence ("part list"), providing mapping between ...
LegoChar * m_name
[AI] Player-facing name or identifier for the part.
UnknownListEntry()
[AI] Initializes the entry with default/null values.
MxS16 m_objectId
[AI] Internal object id (likely 3D node id or mapping for placement).
LegoChar * m_wiredName
[AI] Internal/scene-graph name for the 3D mesh node.