Add AI_SUMMARY.md

This commit is contained in:
Florian Kaiser 2025-04-29 13:48:11 +02:00
parent 03f8c0fe05
commit 611fc0619c

209
AI_SUMMARY.md Normal file
View File

@ -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<T>, 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.