From 611fc0619c8a643d1ba6f4432fa7bead0bfdc286 Mon Sep 17 00:00:00 2001 From: Florian Kaiser Date: Tue, 29 Apr 2025 13:48:11 +0200 Subject: [PATCH] Add AI_SUMMARY.md --- AI_SUMMARY.md | 209 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 209 insertions(+) create mode 100644 AI_SUMMARY.md diff --git a/AI_SUMMARY.md b/AI_SUMMARY.md new file mode 100644 index 00000000..cdedb4ff --- /dev/null +++ b/AI_SUMMARY.md @@ -0,0 +1,209 @@ +# View Management and Rendering + +## ViewManager +- **`ViewManager::ViewManager(Tgl::Renderer*, Tgl::Group*, const OrientableROI*)`**: Constructor. +- **`ViewManager::IsBoundingBoxInFrustum(const BoundingBox&)`**: Checks if a bounding box is within the view frustum. +- **`ViewManager::ProjectedSize(const BoundingSphere&)`**: Calculates projected screen size of a bounding sphere. +- **`ViewManager::Update(float, float)`**: Updates visibility and LOD for all ROIs. +- **`ViewManager::CalculateFrustumTransformations()`**: Calculates frustum planes and vertices. +- **`ViewManager::UpdateViewTransformations()`**: Transforms frustum vertices into world space. +- **`ViewManager::SetFrustrum(float, float, float)`**: Sets frustum parameters (FOV, near, far). +- **`ViewManager::SetResolution(int, int)`**: Sets screen resolution. +- **`ViewManager::SetPOVSource(const OrientableROI*)`**: Sets the point of view. +- **`ViewManager::Pick(Tgl::View*, unsigned long, unsigned long)`**: Ray picking to find a `ViewROI`. + +## ViewROI +- **`ViewROI::ViewROI(Tgl::Renderer*, ViewLODList*)`**: Constructor. +- **`ViewROI::GetGeometry()`**: Returns `Tgl::Group`. +- **`ViewROI::UpdateWorldData(const Matrix4&)`**: Updates world transform. +- **`ViewROI::SetLocalTransform(const Matrix4&)`**: Sets local transform. +- **`ViewROI::IntrinsicImportance()`**: Returns intrinsic importance (default 0.5). + +## ViewLOD +- **`ViewLOD::ViewLOD(Tgl::Renderer*)`**: Constructor. +- **`ViewLOD::GetMeshBuilder()`**: Returns `Tgl::MeshBuilder`. +- **`ViewLOD::AveragePolyArea()`**: Placeholder. +- **`ViewLOD::NVerts()`**: Placeholder. +- `m_unk0x08`: Flags, tested by `GetUnknown0x08Test4()` and `GetUnknown0x08Test8()`. + +## ViewLODList +- **`ViewLODList::AddRef()`**: Increments refcount. +- **`ViewLODList::Release()`**: Decrements refcount, deletes if zero. + +## ViewLODListManager +- **`ViewLODListManager::Create(const ROIName&, int)`**: Creates `ViewLODList`. +- **`ViewLODListManager::Lookup(const ROIName&)`**: Retrieves `ViewLODList`. +- **`ViewLODListManager::Destroy(ViewLODList*)`**: Destroys `ViewLODList`. + +## OrientableROI +- **`OrientableROI::SetLocalTransform(const Matrix4&)`**: Updates transforms. +- **`OrientableROI::UpdateWorldData(const Matrix4&)`**: Updates world data. +- **`OrientableROI::GetLocal2World()`**: Returns local-to-world matrix. +- **`OrientableROI::GetWorldPosition()`**: Returns world position. +- **`OrientableROI::GetWorldDirection()`**: Returns direction vector. +- **`OrientableROI::GetWorldUp()`**: Returns up vector. +- `m_unk0xd8`: Internal flags. + +# LEGO-Specific Classes + +## LegoROI +- **`LegoROI::LegoROI(Tgl::Renderer*)`**: Constructor. +- **`LegoROI::Read(...)`**: Reads from `LegoStorage`. +- **`LegoROI::FindChildROI(const LegoChar*, LegoROI*)`**: Recursive child search. +- **`LegoROI::SetFrame(LegoAnim*, LegoTime)`**: Sets transform from animation. +- **`LegoROI::IntrinsicImportance()`**: Returns 0.5. +- **`LegoROI::UpdateWorldBoundingVolumes()`**: Updates bounding sphere and box. +- `m_name`, `m_entity`, `m_sphere`: Name, entity pointer, bounding sphere. + +## LegoLOD +- **`LegoLOD::LegoLOD(Tgl::Renderer*)`**: Constructor. +- **`LegoLOD::Read(...)`**: Reads and creates meshes. +- **`LegoLOD::Clone(Tgl::Renderer*)`**: Clones the LOD. +- **`LegoLOD::FUN_100aacb0(...)`**: Sets color for non-textured meshes. +- **`LegoLOD::FUN_100aad00(...)`**: Sets texture. +- `m_melems`: Mesh array. +- `m_numMeshes`, `m_numPolys`: Mesh and polygon counts. + +## LegoEntity +- **`LegoEntity::Create(MxDSAction&)`**: Initializes entity. +- **`LegoEntity::SetROI(LegoROI*, MxBool, MxBool)`**: Associates ROI. +- **`LegoEntity::SetWorldTransform(...)`**: Sets transform. +- **`LegoEntity::SetWorldSpeed(MxFloat)`**: Sets speed. +- **`LegoEntity::ParseAction(char*)`**: Parses actions. +- **`LegoEntity::ClickSound(MxBool)`**: Plays click sound. +- **`LegoEntity::ClickAnimation()`**: Plays click animation. +- **`LegoEntity::SwitchVariant()`**: Switches model variant. +- `m_roi`, `m_worldLocation`, `m_worldDirection`, `m_worldUp`, `m_worldSpeed`, `m_type`, `m_actionType`, `m_flags`: Entity fields. + +## Lego3DManager +- **`Lego3DManager::Create(CreateStruct&)`**: Creates renderer/device/view. +- **`Lego3DManager::Destroy()`**: Destroys renderer/device/view. +- **`Lego3DManager::Render(double)`**: Renders scene. +- **`Lego3DManager::SetFrustrum(float, float, float)`**: Sets frustum. + +## Lego3DView +- **`Lego3DView::Create(...)`**: Creates view and `ViewManager`. +- **`Lego3DView::Add(ViewROI&)`**: Adds ROI. +- **`Lego3DView::Remove(ViewROI&)`**: Removes ROI. +- **`Lego3DView::SetPointOfView(ViewROI&)`**: Sets camera ROI. +- **`Lego3DView::Moved(ViewROI&)`**: Updates camera if needed. +- **`Lego3DView::Render(double)`**: Renders scene. +- **`Lego3DView::Pick(unsigned long, unsigned long)`**: Picks ROI. +- `m_pViewManager`: Pointer to `ViewManager`. + +## LegoView +- Base class for `Lego3DView`. Manages scene and camera. + +## LegoView1 +- Subclass of `LegoView`. Adds lighting. + +## LegoNavController +- **`LegoNavController::SetTargets(int, int, MxBool)`**: Sets targets. +- **`LegoNavController::CalculateNewPosDir(...)`**: Calculates new position/direction. + +## LegoCameraController +- Camera control using mouse and `LegoNavController`. + +## LegoPointOfViewController +- Abstracts point-of-view control. Uses `Lego3DView` and `LegoNavController`. + +## LegoMouseController +- Handles mouse input (clicks, drags, releases). + +# LEGO Game Management + +## LegoOmni +- **`LegoOmni::Create(MxOmniCreateParam&)`**: Initializes subsystems. +- **`LegoOmni::Start(MxDSAction*)`**: Starts an action. +- **`LegoOmni::RegisterWorlds()`**: Registers game worlds. +- **`LegoOmni::FindWorld(const MxAtomId&, MxS32)`**: Finds world. +- **`LegoOmni::FindROI(const char*)`**: Finds ROI. + +## LegoWorld +- **`LegoWorld::Create(MxDSAction&)`**: Creates world. +- **`LegoWorld::ReadyWorld()`**: Prepares world. +- **`LegoWorld::Enable(MxBool)`**: Enables/disables world. +- **`LegoWorld::Add(MxCore*)`**, **`LegoWorld::Remove(MxCore*)`**: Adds/removes objects. +- **`LegoWorld::Find(const char*, const char*)`**: Finds object. +- **`LegoWorld::PlaceActor(...)`**: Places actor on path. + +## LegoWorldList +- List of all worlds, managed by `LegoOmni`. + +## LegoGameState +- **`LegoGameState::Save(MxULong)`**, **`LegoGameState::Load(MxULong)`**: Save/load state. +- **`LegoGameState::SwitchArea(Area)`**: Switches area. +- `m_currentAct`, `m_currentArea`, `m_previousArea`: Area tracking. + +## LegoState +- Base class for various game element states. + +# Media and Animation + +## LegoAnim +- **`LegoAnim::Read(...)`**: Reads animation. +- `m_duration`, `m_modelList`: Duration and actors. + +## LegoAnimNodeData +- **`LegoAnimNodeData::CreateLocalTransform(LegoFloat, Matrix4&)`**: Local transform at time. + +## LegoAnimKey +- Base class for animation keys. +- `m_time`, `m_flags`: Time and flags. + +## LegoTranslationKey, LegoRotationKey, LegoScaleKey, LegoMorphKey +- Specialized animation keys. + +# Other Utilities + +## LegoStorage, LegoMemory, LegoFile +- Abstract base and concrete storage classes. + +## BoundingBox, BoundingSphere +- Basic bounding volume structures. + +## LegoVertex, LegoColor, LegoSphere, LegoBox, LegoMesh +- Geometry structures. + +## LegoTree, LegoTreeNode, LegoTreeNodeData +- Tree structures. + +## LegoContainer, LegoTextureContainer +- Containers for collections. + +## LegoTextureInfo +- Texture metadata. + +## LegoNamedPartList, LegoNamedPart +- Named LEGO parts. + +## LegoPathBoundary +- Path boundary, subclass of `LegoWEGEdge`. + +## LegoPathController +- Manages paths. + +## LegoPathEdgeContainer +- Edge list for paths. + +## LegoPathStruct +- Path triggers. + +## LegoPathStructNotificationParam +- Notification parameter for path triggers. + +# Audio + +## LegoCacheSound, LegoCacheSoundManager +- Caching and managing sound effects. + +## LegoSoundManager +- Sound management system. + +## MxBackgroundAudioManager +- Background music manager. + +# Transitions + +## MxTransitionManager +- Handles world/area transitions.