1 #ifndef _kshape_h_ /* Is this your first time? */
2 #define _kshape_h_ 1
3 
4 #include "particle.h"
5 #include "sphere.h"
6 
7 
8 typedef struct
9 {
10 	/* base coords */
11 	int X;
12 	int Y;
13 	int Z;
14 
15 	/* texels and intensity */
16 	int U;
17 	int V;
18 
19 	/* coloured components */
20 	unsigned char R;
21 	unsigned char G;
22 	unsigned char B;
23 
24 	/* alpha component */
25 	unsigned char A;
26 
27 	/* specular colour */
28 	unsigned char SpecularR;
29 	unsigned char SpecularG;
30 	unsigned char SpecularB;
31 
32 	/* fog component */
33 	unsigned char Fog;
34 
35 } RENDERVERTEX;
36 
37 typedef struct
38 {
39 	/* stamp used for lazy evaluation */
40 	int Stamp;
41 
42 	/* colour scalings */
43 	unsigned char R;
44 	unsigned char G;
45 	unsigned char B;
46 
47 	/* specular colour */
48 	unsigned char SpecularR;
49 	unsigned char SpecularG;
50 	unsigned char SpecularB;
51 
52 	/* fog component */
53 	unsigned char Fog;
54 
55 } COLOURINTENSITIES;
56 
57 
58 typedef struct
59 {
60 	RENDERVERTEX Vertices[maxpolypts];
61 
62 	unsigned int NumberOfVertices;
63 
64 	unsigned int MinZ;
65 	unsigned int MaxZ;
66 
67 	int ImageIndex;
68 
69 	unsigned char IsTextured :1;
70 	unsigned char IsLit :1;
71 	unsigned char IsSpecularLit :1;
72 	enum TRANSLUCENCY_TYPE TranslucencyMode;
73 
74 } RENDERPOLYGON;
75 
76 extern RENDERVERTEX VerticesBuffer[9];
77 extern RENDERPOLYGON RenderPolygon;
78 
79 
80 
81 
82 enum LIGHTING_MODEL_ID
83 {
84 	LIGHTING_MODEL_STANDARD,
85 	LIGHTING_MODEL_HIERARCHICAL,
86 	LIGHTING_MODEL_PRELIT,
87 };
88 
89 
90 extern void InitialiseLightIntensityStamps(void);
91 
92 extern int FindHeatSourcesInHModel(DISPLAYBLOCK *dispPtr);
93 
94 
95 extern void TranslationSetup(void);
96 extern void TranslatePointIntoViewspace(VECTORCH *pointPtr);
97 
98 extern void CheckRenderStatesForModule(MODULE *modulePtr);
99 
100 
101 extern void RenderDecal(DECAL *decalPtr);
102 extern void RenderParticle(PARTICLE *particlePtr);
103 void RenderInsideAlienTongue(int offset);
104 void RenderPredatorTargetingSegment(int theta, int scale, int drawInRed);
105 void RenderPredatorPlasmaCasterCharge(int value, VECTORCH *worldOffsetPtr, MATRIXCH *orientationPtr);
106 void CreateStarArray(void);
107 void OutputTranslucentPolyList(void);
108 void RenderLightFlare(VECTORCH *positionPtr, unsigned int colour);
109 extern void RenderFlechetteParticle(PARTICLE *particlePtr);
110 void RenderExplosionSurface(VOLUMETRIC_EXPLOSION *explosionPtr);
111 void ClearTranslucentPolyList(void);
112 void AddHierarchicalShape(DISPLAYBLOCK *dptr, VIEWDESCRIPTORBLOCK *VDB_Ptr);
113 
114 /* KJL 10:25:44 7/23/97 - this offset is used to push back the normal game gfx,
115 so that the HUD can be drawn over the top without sinking into walls, etc. */
116 extern int HeadUpDisplayZOffset;
117 
118 /* KJL 16:17:13 11/02/98 - heat source containment */
119 typedef struct
120 {
121 	VECTORCH Position;
122 } HEATSOURCE;
123 
124 #define MAX_NUMBER_OF_HEAT_SOURCES 10
125 extern HEATSOURCE HeatSourceList[];
126 extern int NumberOfHeatSources;
127 
128 #define MIRRORING_ON 1
129 
130 #if MIRRORING_ON
131 extern int MirroringActive;
132 extern int MirroringAxis;
133 #endif
134 
135 #endif
136