283
|
1 #ifndef INCLUDED_POLYGON_PACK
|
|
2 #define INCLUDED_POLYGON_PACK
|
|
3
|
|
4 #ifndef INCLUDED_TYPES
|
|
5 # include "types.h"
|
|
6 #endif
|
|
7
|
|
8 #define MAX_SIZE_TRIANGLE 128
|
|
9
|
|
10 typedef struct VertexPack {
|
|
11 float x;
|
|
12 float y;
|
|
13 float z;
|
|
14 float tex_x;
|
|
15 float tex_y;
|
|
16 } VertexPack, *VertexPackPtr; // 20
|
|
17
|
|
18 typedef struct TriTexInfo {
|
|
19 uint32 *addr;
|
|
20 int width;
|
|
21 int height;
|
|
22 int scale_max;
|
|
23 } TriangleTexInfo, *TriangleTexInfoPtr; // 16
|
|
24
|
|
25 typedef struct TrianglePack {
|
|
26 TriTexInfo tex_info;
|
|
27 VertexPack ver1;
|
|
28 VertexPack ver2;
|
|
29 VertexPack ver3;
|
|
30 } TrianglePack, *TrianglePackPtr;
|
|
31
|
|
32
|
|
33 typedef struct PolygonPack {
|
|
34 struct PORIGON_info {
|
|
35 int size;
|
|
36 int light_pos[3];
|
|
37 int light_rgb[3];
|
|
38 }info;
|
|
39
|
|
40 TrianglePack tri[MAX_SIZE_TRIANGLE];
|
|
41
|
|
42 PolygonPack* next;
|
|
43
|
|
44 void init(void) {
|
|
45 info.size = 0;
|
|
46 next = 0;
|
|
47 }
|
|
48
|
|
49 void clear(void) {
|
|
50 PolygonPack *q = 0;
|
|
51 PolygonPack *q1 = 0;
|
|
52
|
|
53 q = this->next;
|
|
54 while (q) {
|
|
55 q1 = q->next;
|
|
56 delete(q);
|
|
57 q = q1;
|
|
58 }
|
|
59 this->init();
|
|
60 }
|
|
61 } PolygonPack, *PolygonPackPtr; // 4*7 + 76*128 + 4 = 9760
|
|
62
|
|
63 typedef struct PolygonPackList {
|
|
64 int size;
|
|
65 PolygonPack *list;
|
|
66 } PolygonPackList;
|
|
67
|
|
68 #endif
|