@@ -10,6 +10,7 @@ struct StreamUnit;
1010
1111struct IndexedFace
1212{
13+ #ifndef TR8
1314 unsigned __int16 i0 ;
1415 unsigned __int16 i1 ;
1516 unsigned __int16 i2 ;
@@ -18,21 +19,42 @@ struct IndexedFace
1819 unsigned __int8 collisionFlags ;
1920 unsigned __int8 clientFlags ;
2021 unsigned __int8 materialType ;
22+ #else
23+ unsigned int i0 ;
24+ unsigned int i1 ;
25+ unsigned int i2 ;
26+
27+ unsigned __int8 adjacencyFlags ;
28+ unsigned __int8 collisionFlags ;
29+ unsigned __int16 clientFlags ;
30+ unsigned int materialType ;
31+ #endif
2132};
2233
2334struct SignalFace
2435{
36+ #ifndef TR8
2537 unsigned __int16 i0 ;
2638 unsigned __int16 i1 ;
2739 unsigned __int16 i2 ;
2840
29- char adjacencyFlags ;
30- char collisionFlags ;
41+ unsigned __int8 adjacencyFlags ;
42+ unsigned __int8 collisionFlags ;
3143
3244 unsigned __int16 id ;
45+ #else
46+ unsigned int i0 ;
47+ unsigned int i1 ;
48+ unsigned int i2 ;
49+
50+ unsigned __int8 adjacencyFlags ;
51+ unsigned __int8 collisionFlags ;
52+
53+ unsigned __int16 id ;
54+ #endif
3355};
3456
35- struct MeshVertex
57+ struct MeshVertex16
3658{
3759 __int16 x ;
3860 __int16 y ;
@@ -53,6 +75,12 @@ struct BBox
5375 cdc ::Vector3 bMax ;
5476};
5577
78+ enum VertexType
79+ {
80+ VERTEX_INT16 ,
81+ VERTEX_FLOAT32
82+ };
83+
5684struct Mesh
5785{
5886 BBox m_box ;
@@ -64,17 +92,28 @@ struct Mesh
6492
6593 void * m_clientData ;
6694
95+ #ifndef TR8
6796 unsigned __int16 m_vertexType ;
6897 unsigned __int16 m_numNodes ;
6998 unsigned __int16 m_numFaces ;
7099 unsigned __int16 m_numVertices ;
71100 unsigned __int16 m_height ;
72101 unsigned __int16 m_numDegenerateFaces ;
73102 unsigned __int16 m_numNonManifoldEdges ;
103+ #else
104+ unsigned int m_numNodes ;
105+ unsigned int m_numFaces ;
106+ unsigned int m_numVertices ;
107+ unsigned int m_numDegenerateFaces ;
108+ unsigned int m_numNonManifoldEdges ;
109+ unsigned __int16 m_vertexType ;
110+ unsigned __int16 m_height ;
111+ #endif
74112};
75113
76114struct Level ;
77115
116+ #ifndef TR8
78117struct TerrainGroup
79118{
80119 cdc ::Vector3 globalOffset ;
@@ -126,6 +165,61 @@ struct Terrain
126165 TerrainGroup * signalTerrainGroup ;
127166 Signal * signals ;
128167};
168+ #else
169+ struct TerrainGroup
170+ {
171+ cdc ::Vector3 globalOffset ;
172+ cdc ::Vector3 localOffset ;
173+
174+ int flags ;
175+ int field_24 ;
176+ int field_28 ;
177+ int field_2C ;
178+ int field_30 ;
179+
180+ Level * level ;
181+ Mesh * mesh ;
182+
183+ int field_3C ;
184+ int field_40 ;
185+ int field_44 ;
186+ int field_48 ;
187+ int field_4C ;
188+ };
189+
190+ struct StreamUnitPortal
191+ {
192+ char tolevelname [128 ];
193+
194+ __int16 field_80 ;
195+ __int16 field_82 ;
196+
197+ __int16 streamID ;
198+
199+ __int16 field_86 ;
200+ __int16 field_88 ;
201+ __int16 field_8A ;
202+ __int16 field_8C ;
203+ __int16 field_8E ;
204+
205+ cdc ::Vector3 min ;
206+ cdc ::Vector3 max ;
207+ cdc ::Vector3 quad [4 ];
208+ cdc ::Vector3 normal ;
209+ };
210+
211+ struct Terrain
212+ {
213+ __int16 field_0 ;
214+ __int16 numStreamUnitPortals ;
215+ StreamUnitPortal * streamUnitPortals ;
216+
217+ int numTerrainGroups ;
218+ TerrainGroup * terrainGroups ;
219+
220+ TerrainGroup * signalTerrainGroup ;
221+ };
222+ #endif
129223
130224struct Level
131225{
0 commit comments