summaryrefslogtreecommitdiff
path: root/src/kshape.h
blob: 3f74956dfcf96436a5089caae7aeb0956d3ce936 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#ifndef _kshape_h_ /* Is this your first time? */
#define _kshape_h_ 1

#include "particle.h"


typedef struct 
{
	/* base coords */
	int X;
	int Y;
	int Z;

	/* texels and intensity */
	int U;
	int V;

	/* coloured components */
	unsigned char R;
	unsigned char G;
	unsigned char B;

	/* alpha component */
	unsigned char A;

	/* specular colour */
	unsigned char SpecularR;
	unsigned char SpecularG;
	unsigned char SpecularB;

	/* fog component */
	unsigned char Fog;

} RENDERVERTEX;

typedef struct
{
	/* stamp used for lazy evaluation */
	int Stamp;

	/* colour scalings */
	unsigned char R;
	unsigned char G;
	unsigned char B;

	/* specular colour */
	unsigned char SpecularR;
	unsigned char SpecularG;
	unsigned char SpecularB;

	/* fog component */
	unsigned char Fog;

} COLOURINTENSITIES;


typedef struct 
{
	RENDERVERTEX Vertices[maxpolypts];

	unsigned int NumberOfVertices;

	unsigned int MinZ;
	unsigned int MaxZ;

	int ImageIndex;

	unsigned char IsTextured :1;
	unsigned char IsLit :1;
	unsigned char IsSpecularLit :1;
	enum TRANSLUCENCY_TYPE TranslucencyMode;

} RENDERPOLYGON;

extern RENDERVERTEX VerticesBuffer[9];
extern RENDERPOLYGON RenderPolygon;




enum LIGHTING_MODEL_ID
{
	LIGHTING_MODEL_STANDARD,
	LIGHTING_MODEL_HIERARCHICAL,
	LIGHTING_MODEL_PRELIT,
};


extern void InitialiseLightIntensityStamps(void);

extern int FindHeatSourcesInHModel(DISPLAYBLOCK *dispPtr);


extern void TranslationSetup(void);
extern void TranslatePointIntoViewspace(VECTORCH *pointPtr);


extern void CheckRenderStatesForModule(MODULE *modulePtr);


extern void RenderDecal(DECAL *decalPtr);
extern void RenderParticle(PARTICLE *particlePtr);

/* KJL 10:25:44 7/23/97 - this offset is used to push back the normal game gfx,
so that the HUD can be drawn over the top without sinking into walls, etc. */
extern int HeadUpDisplayZOffset;

/* KJL 16:17:13 11/02/98 - heat source containment */
typedef struct
{
	VECTORCH Position;
} HEATSOURCE;

#define MAX_NUMBER_OF_HEAT_SOURCES 10
extern HEATSOURCE HeatSourceList[];
extern int NumberOfHeatSources;

#define MIRRORING_ON 1

#if MIRRORING_ON
extern int MirroringActive;
extern int MirroringAxis;
#endif

#endif