This commit is contained in:
bird_egop
2026-05-21 14:55:27 +03:00
parent 28d10f3ffa
commit e44d9a21b2
2 changed files with 55 additions and 18 deletions
+10
View File
@@ -16,6 +16,16 @@ public enum MshType
/// -> 0x03 positions /// -> 0x03 positions
/// </summary> /// </summary>
Model, Model,
/// <summary>
/// Для landscape минимальный геометрический путь сейчас выглядит так:
///
/// 0x01 terrain cell / tile
/// -> 0x02 geometry slot
/// -> 0x15 terrain triangle
/// -> vertex1_idx / vertex2_idx / vertex3_idx
/// -> 0x03 positions
/// </summary>
Landscape Landscape
} }
+45 -18
View File
@@ -189,22 +189,20 @@ IComponent ** LoadSomething(undefined4, undefined4, undefined4, undefined4)
| Logic ID | ClassName | Function | | Logic ID | ClassName | Function | Description |
|:--------:|:------------:|--------------------------------| |:--------:|:------------:|--------------------------------|------------------------------|
| 1 | Landscape | `terrain.dll LoadLandscape` | | 1 | Landscape | `terrain.dll LoadLandscape` | LOGIC_LANDSCAPE |
| 2 | Agent | `animesh.dll LoadAgent` | | 2 | Agent | `animesh.dll LoadAgent` | LOGIC_WEAPON_AGENT_WPNS |
| 3 | Building | `terrain.dll LoadBuilding` | | 3 | Building | `terrain.dll LoadBuilding` | LOGIC_BUILDING_HALLWAY |
| 4 | Agent | `animesh.dll LoadAgent` | | 4 | Agent | `animesh.dll LoadAgent` | LOGIC_BATTLE_UNIT_AGENT_BTLU |
| 5 | Camera | `terrain.dll LoadCamera` | | 5 | Camera | `terrain.dll LoadCamera` | LOGIC_CAMERA |
| 7 | Atmosphere | `terrain.dll CreateAtmosphere` | | 7 | Atmosphere | `terrain.dll CreateAtmosphere` | LOGIC_ATMOSPHERE |
| 9 | Agent | `animesh.dll LoadAgent` | | 9 | Agent | `animesh.dll LoadAgent` | LOGIC_BULLET_AGENT_BULL |
| 0xa | Agent | `animesh.dll LoadAgent` | | 0xa | Agent | `animesh.dll LoadAgent` | LOGIC_STATIC_AGENT_STAT |
| 0xb | Research | `misload.dll LoadResearch` | | 0xb | Research | `misload.dll LoadResearch` | LOGIC_RESEARCH |
| 0xc | Agent | `animesh.dll LoadAgent` | | 0xc | Agent | `animesh.dll LoadAgent` | LOGIC_AGENT_0xC |
Будет дополняться по мере реверса. Всем этим функциям передаётся `nres_file_name, nres_entry_name, 0, player_index`
Всем этим функциям передаётся `nres_file_name, nres_entry_name, 0, player_id`
## `fr FORT` файл ## `fr FORT` файл
@@ -377,12 +375,12 @@ enum EffectTemplateFlags : uint32_t
# Внутренняя система ID # Внутренняя система ID
- `1` - unknown (implemented by CLandscape) видимо ILandscape - `1` - unknown (implemented by CLandscape) видимо ILandscape (очень похоже на legacy IMesh судя по vtable)
- `3` - unknown (implemented by CAtmosphere) видимо IAtmosphere - `3` - unknown (implemented by CAtmosphere) видимо IAtmosphere
- `4` - IShader - `4` - IShader
- `5` - ITerrain - `5` - ITerrain
- `6` - IGameObject - `6` - IGameObject
- `7` - ISettings - `7` - IGameSettingsProvider
- `8` - ICamera - `8` - ICamera
- `9` - IQueue - `9` - IQueue
- `10` - IControl - `10` - IControl
@@ -403,7 +401,7 @@ enum EffectTemplateFlags : uint32_t
- `0x19` - IManManager - `0x19` - IManManager
- `0x20` - IJointMesh - `0x20` - IJointMesh
- `0x21` - IShadowProcessor (придумал сам implemented by CShade) - `0x21` - IShadowProcessor (придумал сам implemented by CShade)
- `0x22` - unknown (implement by CLandscape) - `0x22` - unknown (implement by CLandscape) (похоже на ITopProvider т.к. в vtable только GetTopQuad)
- `0x23` - IGameSettingsRoot - `0x23` - IGameSettingsRoot
- `0x24` - IGameObject2 - `0x24` - IGameObject2
- `0x25` - ICollisionMesh (придумал сам implemented by CAniMesh) - `0x25` - ICollisionMesh (придумал сам implemented by CAniMesh)
@@ -472,6 +470,35 @@ World3D.dll содержит singleton Registry в CreateGameSettings.
| ---- | 30 (0x1e) | ShadeConfig | | из файла shade.cfg | | ---- | 30 (0x1e) | ShadeConfig | | из файла shade.cfg |
| ---- | (0x8001e) | | | добавляет AniMesh | | ---- | (0x8001e) | | | добавляет AniMesh |
## Terrain primitive RE
Primitive layer types:
0: PrimLayer0
Stores PrimLayerElement0 { primitive, vb_descriptor, key0, key1 }.
Sorts by dynamic vertex-buffer descriptor and stream/layout keys,
then calls primitive->Render in grouped order.
1: PrimLayer1
Stores PrimLayerElement1 { primitive, distance_key }.
Inserts by descending distance from sort_origin.
Calls primitive->Render in stored order.
2: PrimLayer2
Stores IPrimitive* only.
Alpha-filters and appends.
Calls primitive->Render in insertion order.
3: CCamDistSortLayer / PrimLayer3
Stores PrimLayerElement1 { primitive, distance_key }.
Inserts by descending distance from sort_origin.
Does not call primitive->Render; merges primitives into batched dynamic-VB draws.
4: illegal.
5: PrimLayer5
Same primitive pointer list style as PrimLayer2.
Renders only when UseReflections is enabled and clears Z before render.
## Контакты ## Контакты
Вы можете связаться со мной в [Telegram](https://t.me/bird_egop). Вы можете связаться со мной в [Telegram](https://t.me/bird_egop).