annotate IndoorCameraD3D.h @ 48:6a62c4005f0e

23.10.12
author Ritor1
date Tue, 23 Oct 2012 17:33:33 +0600
parents 8b8875f5b359
children 5159d2e6f559
rev   line source
0
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
1 #pragma once
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
4
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
5
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
6 /* 124 */
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
7 #pragma pack(push, 1)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
8 struct IndoorCameraD3D_Vec3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
9 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
10 //----- (004C0376) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
11 inline IndoorCameraD3D_Vec3() {}
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
12 //----- (004C037F) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
13 virtual ~IndoorCameraD3D_Vec3() {}
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
14 //----- (004C039C) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
15 //void ~IndoorCameraD3D_Vec3() {}
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
16
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
17 void (__thiscall ***vdestructor_ptr)(IndoorCameraD3D_Vec3 *, bool);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
18 float x;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
19 float y;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
20 float z;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
21 };
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
22 #pragma pack(pop)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
23
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
24 /* 125 */
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
25 #pragma pack(push, 1)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
26 struct IndoorCameraD3D_Vec4: public IndoorCameraD3D_Vec3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
27 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
28 //----- (00498038) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
29 inline IndoorCameraD3D_Vec4():
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
30 IndoorCameraD3D_Vec3()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
31 {}
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
32
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
33 //----- (00498069) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
34 virtual ~IndoorCameraD3D_Vec4()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
35 {}
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
36
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
37 float dot;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
38 };
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
39 #pragma pack(pop)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
40
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
41
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
42
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
43 /* 199 */
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
44 #pragma pack(push, 1)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
45 struct IndoorCameraD3D_stru3
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
46 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
47 int field_0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
48 int field_4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
49 int field_8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
50 int field_C;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
51 int field_10;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
52 int field_14;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
53 int field_18;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
54 int field_1C;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
55 int field_20;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
56 int field_24;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
57 int field_28;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
58 int field_2C;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
59 float flt_30;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
60 int field_34;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
61 };
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
62 #pragma pack(pop)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
63
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
64
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
65
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
66 /* 197 */
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
67 #pragma pack(push, 1)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
68 struct IndoorCameraD3D_stru1
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
69 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
70 //----- (004363A2) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
71 IndoorCameraD3D_stru1()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
72 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
73 this->flt_2C = 0.0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
74 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
75
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
76
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
77 int field_0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
78 int field_4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
79 int field_8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
80 int field_C;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
81 int field_10;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
82 int field_14;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
83 int field_18;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
84 int field_1C;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
85 int field_20;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
86 int field_24;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
87 int field_28;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
88 float flt_2C;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
89 };
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
90 #pragma pack(pop)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
91
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
92 /* 198 */
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
93 #pragma pack(push, 1)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
94 struct IndoorCameraD3D_stru2
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
95 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
96 unsigned int mm7__vector_000004_size;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
97 IndoorCameraD3D_stru1 mm7__vector_000004[64];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
98 int field_C04;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
99 int field_C08;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
100 int field_C0C;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
101 };
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
102 #pragma pack(pop)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
103
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
104 /* 123 */
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
105 #pragma pack(push, 1)
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
106 struct IndoorCameraD3D
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
107 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
108 IndoorCameraD3D();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
109
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
110 //----- (004363C6) --------------------------------------------------------
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
111 virtual ~IndoorCameraD3D()
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
112 {
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
113 //this->vdestructor_ptr = &stru8_pvdtor;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
114 //_eh_vector_destructor_iterator_(this->std__vector_000034_prolly_frustrum, 24, 6, IndoorCameraD3D_Vec4::dtor);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
115 //IndoorCameraD3D_Vec3::dtor(&v1->field_24);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
116 //IndoorCameraD3D_Vec3::dtor(&v1->field_14);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
117 //IndoorCameraD3D_Vec3::dtor(&v1->field_4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
118 }
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
119
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
120 double GetPolygonMaxZ(struct RenderVertexSoft *pVertex, unsigned int uStripType);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
121 double GetPolygonMinZ(struct RenderVertexSoft *pVertices, unsigned int uStripType);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
122 struct IDirect3DTexture2 *LoadTextureAndGetHardwarePtr(char *Str1);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
123 void Project(signed int x, signed int y, signed int z, int *a5, int *a6);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
124 void _436BB7_project_and_stuff(struct RenderVertexSoft *pVertices, unsigned int uNumVertices, char a4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
125 void _436CDC(struct RenderVertexSoft *pInVertices, int uNumInVertices, struct RenderVertexSoft *pOutVertices, unsigned int *pOutNumVertices);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
126 void _436F09(struct RenderVertexSoft *pInVertices, int uNumInVertices, struct RenderVertexSoft *pOutVertices, unsigned int *pOutNumVertices);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
127 int _437143(unsigned int uNumInVertices, struct RenderVertexSoft *pOutVertices, struct RenderVertexSoft *pInVertices, unsigned int *pOutNumVertices);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
128 bool _4371C3(struct RenderVertexSoft *pVertices, unsigned int *pOutNumVertices, int _unused);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
129 bool _437285_prolly_colide_vertices_against_frustrum(struct RenderVertexSoft *a1, unsigned int *pOutNumVertices, struct RenderVertexSoft *pVertices, IndoorCameraD3D_Vec4 *a4, signed int uNumVertices, char a6, int _unused);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
130 char _437376(struct stru154 *thisa, struct RenderVertexSoft *a2, unsigned int *pOutNumVertices);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
131 void _4374E8_ProllyBuildFrustrum();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
132 void _437607(IndoorCameraD3D_Vec3 *a1, IndoorCameraD3D_Vec4 *a2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
133 IndoorCameraD3D_Vec3 *Vec3Transform(const IndoorCameraD3D_Vec3 *pVector, IndoorCameraD3D_Vec3 *pOut);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
134 void CreateWorldMatrixAndSomeStuff();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
135 void MatrixMultiply(struct Matrix3x3_float_ *a1, struct Matrix3x3_float_ *a2, struct Matrix3x3_float_ *a3);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
136 void PrepareAndDrawDebugOutline(struct BLVFace *pFace, unsigned int uDiffuse);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
137 void debug_outline_sw(struct RenderVertexSoft *a2, unsigned int uNumVertices, unsigned int uDiffuse, float a5);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
138 void debug_outline_d3d(const struct RenderVertexD3D3 *pLineVertices, unsigned int uNumLines, int uDiffuse, float z_stuff);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
139 void do_draw_debug_line_sw(struct RenderVertexSoft *pLineBegin, unsigned int uStartDiffuse, struct RenderVertexSoft *pLineEnd, unsigned int uEndDiffuse, unsigned int uOutNumVertices, float z_stuff);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
140 void do_draw_debug_line_d3d(const struct RenderVertexD3D3 *pLineBegin, unsigned int uDiffuseBegin, const RenderVertexD3D3 *pLineEnd, unsigned int uDiffuseEnd, float z_stuff);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
141 void _437D4A_draw_some_vertices(float x, float y, float z, unsigned int a5, char a6, float a7);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
142 void _438141_draw_list_0037C();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
143 void _438240_draw_lits();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
144 void Reset_list_0037C();
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
145 bool is_vertex_with_normal_from_face_towards_camera(struct BLVFace *pFace, struct RenderVertexSoft *a2);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
146 char GetFacetOrientation(char a1, struct Vec3_float_ *a2, struct Vec3_float_ *a3, struct Vec3_float_ *a4);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
147 void ViewTransform(struct RenderVertexSoft *a1a, unsigned int uNumVertices);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
148 bool IsFaceFacedTowardsCamera(struct BLVFace *pFace);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
149 void _4364C5(struct RenderVertexSoft *pVertices, unsigned int uNumVertices, struct RenderVertexSoft *a1, struct stru320 *a5);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
150 char ApplyViewTransform_TrueIfStillVisible(int x, int y, int z, signed int *pOutX, int *pOutZ, int *pOutY, char bDoNotShow);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
151
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
152 void (__thiscall ***vdestructor_ptr)(IndoorCameraD3D *, bool);
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
153 IndoorCameraD3D_Vec3 field_4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
154 IndoorCameraD3D_Vec3 field_14;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
155 IndoorCameraD3D_Vec3 field_24;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
156 IndoorCameraD3D_Vec4 std__vector_000034_prolly_frustrum[6];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
157 float flt_fov;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
158 float field_C8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
159 float field_CC;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
160 float flt_D0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
161 float flt_D4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
162 float field_D8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
163 float field_DC;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
164 float field_E0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
165 float field_E4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
166 char field_E8[32];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
167 float field_108;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
168 float field_10C;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
169 float field_110;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
170 float field_114;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
171 char field_118[32];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
172 float field_138;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
173 char field_13C[44];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
174 float field_168;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
175 char field_16C[44];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
176 float field_198;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
177 char field_19C[44];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
178 float field_1C8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
179 char field_1CC[44];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
180 float field_1F8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
181 char field_1FC[44];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
182 float field_228;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
183 char field_22C[44];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
184 float field_258;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
185 char field_25C[44];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
186 float field_288;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
187 char field_28C[44];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
188 float field_2B8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
189 float field_2BC;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
190 float field_2C0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
191 float field_2C4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
192 char field_2C8[32];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
193 float field_2E8;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
194 float field_2EC;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
195 float field_2F0;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
196 float field_2F4;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
197 char field_2F8[32];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
198 float field_318;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
199 float field_31C;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
200 float field_320;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
201 float field_324;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
202 char field_328[32];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
203 float field_348;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
204 float field_34C;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
205 float field_350;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
206 float field_354;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
207 char field_358[32];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
208 float field_378;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
209 IndoorCameraD3D_stru3 list_0037C[16384];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
210 unsigned int list_0037C_size;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
211 IndoorCameraD3D_stru2 list_E0380[256];
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
212 int list_E0380_size;
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
213 };
8b8875f5b359 Initial commit
Nomad
parents:
diff changeset
214 #pragma pack(pop)