Browse Source

Removed MD3 stuff!

Thomas Buck 10 years ago
parent
commit
be22cc1eaf
11 changed files with 7 additions and 4393 deletions
  1. 3
    0
      ChangeLog
  2. 0
    28
      Makefile
  3. 0
    2
      TODO
  4. 0
    2
      data/OpenRaider.init
  5. 0
    976
      src/Md3.cpp
  6. 0
    509
      src/Md3.h
  7. 0
    2306
      src/Md3AnimModel.cpp
  8. 0
    466
      src/Md3AnimModel.h
  9. 1
    30
      src/OpenRaider.cpp
  10. 3
    60
      src/Render.cpp
  11. 0
    14
      src/Render.h

+ 3
- 0
ChangeLog View File

@@ -5,6 +5,9 @@
5 5
 
6 6
  OpenRaider (0.1.2) xythobuz <xythobuz@xythobuz.de>
7 7
 
8
+	[ 20140103 ]
9
+	* Removed MD3 stuff!
10
+
8 11
 	[ 20140102 ]
9 12
 	* Improved the Mac build steps...
10 13
 	  Freealut now in /usr/local so we don't need to call

+ 0
- 28
Makefile View File

@@ -161,13 +161,6 @@ ded:
161 161
 	CFLAGS="$(DEBUG_CFLAGS) -DDEDICATED_SERVER" \
162 162
 	LD_FLAGS="$(LD_FLAGS)"
163 163
 
164
-md3:
165
-	@-mkdir -p $(BUILD_DEBUG_DIR)
166
-	$(MAKE) targets BUILDDIR=$(BUILD_DEBUG_DIR) \
167
-	DEBUG_OBJ="$(BUILD_DEBUG_DIR)/endian.o $(BUILD_DEBUG_DIR)/Md3.o $(BUILD_DEBUG_DIR)/Md3AnimModel.o" \
168
-	CFLAGS="$(DEBUG_CFLAGS) -DUSING_MD3" \
169
-	LD_FLAGS="$(LD_FLAGS)"
170
-
171 164
 # -DDEBUG_MEMEORY_VERBOSE
172 165
 # -DDEBUG_MEMEORY
173 166
 memory:
@@ -392,27 +385,6 @@ TombRaider.test:
392 385
 
393 386
 #################################################################
394 387
 
395
-MD3ANIMMODEL_CFLAGS=-DUSING_OPENGL -DUNIT_TEST_MD3ANIMMODEL_SDL \
396
-	-DUSING_MTK_TGA -DUSING_HEL $(shell sdl-config --cflags) \
397
-	-DHAVE_SDL_TTF
398
-MD3ANIMMODEL_LDFLAGS=-lm -lstdc++ -lGL -lGLU $(shell sdl-config --libs) \
399
-	-lSDL_ttf
400
-MD3ANIMMODEL_OBJS=$(BUILD_TEST_DIR)/mtk_tga.o \
401
-	$(BUILD_TEST_DIR)/Texture.o $(BUILD_TEST_DIR)/endian.o \
402
-	$(BUILD_TEST_DIR)/Quaternion.o \
403
-	$(BUILD_TEST_DIR)/Md3.o $(BUILD_TEST_DIR)/Md3AnimModel.o
404
-
405
-Md3AnimModel.test:
406
-	mkdir -p $(BUILD_TEST_DIR)
407
-	$(MAKE) targets \
408
-	NAME=Md3AnimModel.test \
409
-	BUILDDIR=$(BUILD_TEST_DIR) \
410
-	OBJS="$(MD3ANIMMODEL_OBJS)" \
411
-	CFLAGS=" -Wall -O0 -g -Isrc $(MD3ANIMMODEL_CFLAGS)" \
412
-	LD_FLAGS="$(MD3ANIMMODEL_LDFLAGS)"
413
-
414
-#################################################################
415
-
416 388
 GLString.test:
417 389
 	mkdir -p $(BUILD_TEST_DIR)
418 390
 	$(CC) -Wall -Isrc -D__TEST__ -DHAVE_MTK -DHAVE_SDL -DUSING_MTK_TGA \

+ 0
- 2
TODO View File

@@ -5,8 +5,6 @@
5 5
       - Check not only for existence of ~/.OpenRaider but for all
6 6
         necessary files, so the user can update.
7 7
 
8
-    * Get MD3 stuff (what does it even do?) to build
9
-
10 8
     * Fix up the UNIT tests. Maybe move them into separate files?
11 9
 
12 10
     * Remove install_name_tool in Makefile, as it is a problem with

+ 0
- 2
data/OpenRaider.init View File

@@ -74,12 +74,10 @@ bind +crouch 99
74 74
 bind +left 97
75 75
 bind +right 100
76 76
 #bind +attack 122
77
-#md3 data/models/players/laracroft	# Load this Md3 directory
78 77
 #r_light 1				# Enable GL Lighting
79 78
 #r_fog 1				# Enable depth fog
80 79
 #r_particle 1				# Enable particle test
81 80
 #r_portal 1				# Enable portal rendering
82
-#set mousegrab 1			# Enable mouse grabbing
83 81
 
84 82
 
85 83
 # Support for external configs

+ 0
- 976
src/Md3.cpp View File

@@ -1,976 +0,0 @@
1
-/* -*- Mode: C++; tab-width: 3; indent-tabs-mode: t; c-basic-offset: 3 -*- */
2
-/*==========================================================================
3
- *
4
- * Project : GooseEgg
5
- * Author  : Terry 'Mongoose' Hendrix II
6
- * Website : http://www.westga.edu/~stu7440
7
- * Email   : stu7440@westga.edu
8
- * Object  : Md3
9
- * Comments: This is the MD3 model module.
10
- *
11
- *           See file COPYING for license details.
12
- *
13
- *           Quake (c) id Software 1995 - 2000
14
- *
15
- *           MD3 file format specs provided by Mental Vortex,
16
- *           and that site says the specs may not be 100% correct
17
- *           so - since this class is desgined using their specs...
18
- *
19
- *
20
- *-- History ----------------------------------------------------------
21
- *
22
- * 2000-10-06:
23
- * Mongoose - The new code for the new interface
24
- *
25
- * 2000-06-03:
26
- * Mongoose - Those specs where FUBAR - but I figured out the ordering
27
- * Mongoose - Created from MD3 specs provided by Mental Vortex
28
- ==========================================================================*/
29
-
30
-#include <sys/types.h>
31
-#include <stdio.h>
32
-#include <string.h>
33
-#include <stdlib.h>
34
-#include <stdarg.h>
35
-#include <math.h>
36
-
37
-#ifdef USING_OPENGL
38
-#ifdef __APPLE__
39
-#include <OpenGL/gl.h>
40
-#else
41
-#include <GL/gl.h>
42
-#endif
43
-#endif
44
-
45
-#include "endian.h"
46
-
47
-#include "Md3.h"
48
-
49
-
50
-
51
-Md3::Md3()
52
-{
53
-	mFlags = fDecodeNormals;
54
-
55
-	memset(m_filename, 0, 68);
56
-
57
-	m_id = 0;
58
-	m_version = 0;
59
-	m_num_bones = 0;
60
-	m_num_tags = 0;
61
-	m_num_meshes = 0;
62
-	m_max_skins = 0;
63
-
64
-	m_header_length = 0;
65
-	m_tag_start = 0;
66
-	m_surfaces_start = 0;
67
-	m_file_size = 0;
68
-
69
-	m_debug = 1;
70
-
71
-	m_tags = NULL;
72
-	m_bones = NULL;
73
-	m_meshes = NULL;
74
-	slaveTest = NULL;
75
-	texTest = NULL;
76
-}
77
-
78
-
79
-Md3::Md3(unsigned int num_meshes, unsigned int num_bones, unsigned int num_tags)
80
-{
81
-	memset(m_filename, 0, 68);
82
-
83
-	m_id = 0;
84
-	m_version = 0;
85
-	m_max_skins = 0;
86
-
87
-	m_header_length = 0;
88
-	m_tag_start = 0;
89
-	m_surfaces_start = 0;
90
-	m_file_size = 0;
91
-
92
-	m_debug = 1;
93
-
94
-	m_tags = NULL;
95
-	m_bones = NULL;
96
-	m_meshes = NULL;
97
-	slaveTest = NULL;
98
-	texTest = NULL;
99
-
100
-	m_num_bones = num_bones;
101
-	m_num_tags = num_tags;
102
-	m_num_meshes = num_meshes;
103
-	createMeshes(num_meshes);
104
-	createTags(num_tags*num_bones);
105
-	createBones(num_bones);
106
-}
107
-
108
-
109
-Md3::~Md3()
110
-{
111
-	reset();
112
-}
113
-
114
-
115
-////////////////////////////////////////////////////////////
116
-// Public Accessors
117
-////////////////////////////////////////////////////////////
118
-
119
-unsigned int Md3::getNumMeshes()
120
-{
121
-	return m_num_meshes;
122
-}
123
-
124
-
125
-unsigned int Md3::getNumTags()
126
-{
127
-	return m_num_tags;
128
-}
129
-
130
-
131
-unsigned int Md3::getNumBones()
132
-{
133
-	return m_num_bones;
134
-}
135
-
136
-
137
-md3_mesh_t *Md3::getMeshes()
138
-{
139
-	return m_meshes;
140
-}
141
-
142
-
143
-md3_tag_t *Md3::getTags()
144
-{
145
-	return m_tags;
146
-}
147
-
148
-
149
-md3_bone_t *Md3::getBones()
150
-{
151
-	return m_bones;
152
-}
153
-
154
-
155
-////////////////////////////////////////////////////////////
156
-// Public Mutators
157
-////////////////////////////////////////////////////////////
158
-
159
-void Md3::toggleFlag(Md3Flag flag)
160
-{
161
-	mFlags ^= flag;
162
-}
163
-
164
-
165
-void Md3::reset()
166
-{
167
-	int i;
168
-
169
-	memset(m_filename, 0, 68);
170
-
171
-	m_id = 0;
172
-	m_version = 0;
173
-	m_num_bones = 0;
174
-	m_num_tags = 0;
175
-	m_num_meshes = 0;
176
-	m_max_skins = 0;
177
-	m_header_length = 0;
178
-	m_tag_start = 0;
179
-	m_surfaces_start = 0;
180
-	m_file_size = 0;
181
-
182
-	if (m_meshes)
183
-	{
184
-		for (i = 0; i < m_num_meshes; ++i)
185
-		{
186
-			if (m_meshes[i].skin)
187
-			{
188
-				delete [] m_meshes[i].skin;
189
-			}
190
-
191
-			if (m_meshes[i].tris)
192
-			{
193
-				delete [] m_meshes[i].tris;
194
-			}
195
-
196
-			if (m_meshes[i].texel)
197
-			{
198
-				delete [] m_meshes[i].texel;
199
-			}
200
-
201
-			if (m_meshes[i].vertex)
202
-			{
203
-				delete [] m_meshes[i].vertex;
204
-			}
205
-		}
206
-
207
-		delete [] m_meshes;
208
-	}
209
-
210
-	if (m_tags)
211
-	{
212
-		delete [] m_tags;
213
-	}
214
-
215
-	if (m_bones)
216
-	{
217
-		delete [] m_bones;
218
-	}
219
-
220
-	if (slaveTest)
221
-	{
222
-		delete [] slaveTest;
223
-	}
224
-
225
-	if (texTest)
226
-	{
227
-		delete [] texTest;
228
-	}
229
-}
230
-
231
-
232
-void Md3::setDebug(unsigned char level)
233
-{
234
-	m_debug = level;
235
-}
236
-
237
-
238
-// FIXME: Only partial endian support
239
-int Md3::load(char *filename)
240
-{
241
-	FILE *f;
242
-	int i, j, k, npherno_warn;
243
-	bool dump_skin;
244
-	int16_t ss;
245
-	int8_t sb;
246
-
247
-
248
-	npherno_warn = 0;
249
-
250
-	f = fopen(filename, "rb");
251
-
252
-	if (!f)
253
-	{
254
-		perror("Md3::load> \n");
255
-		return -1;
256
-	}
257
-
258
-	// Start Header ////////////////
259
-
260
-	fread_int_small(&m_id, f);
261
-	printDebug("load", "id = 0x%x\n", m_id);
262
-
263
-	if (m_id != MD3_IDALIASHEADER)
264
-	{
265
-		printError("load", "header not 0x%x\n", MD3_IDALIASHEADER);
266
-		return -2;
267
-	}
268
-
269
-	fread_int_small(&m_version, f);
270
-	printDebug("load", "version = %i\n", m_version);
271
-
272
-	if (m_version != MD3_ALIAS_VERSION)
273
-	{
274
-		printError("load", "version not %i\n", MD3_ALIAS_VERSION);
275
-		return -3;
276
-	}
277
-
278
-	fread(&m_filename, 68, 1, f);
279
-	printDebug("load", "filename = '%s'\n", m_filename);
280
-
281
-	fread_int_small(&m_num_bones, f);
282
-	printDebug("load", "num_bone_frames = %i\n", m_num_bones);
283
-
284
-	fread_int_small(&m_num_tags, f);
285
-	printDebug("load", "num_tags = %i\n", m_num_tags);
286
-
287
-	fread_int_small(&m_num_meshes, f);
288
-	printDebug("load", "num_meshes = %i\n", m_num_meshes);
289
-
290
-	fread_int_small(&m_max_skins, f);
291
-	printDebug("load", "max_skins = %i\n", m_max_skins);
292
-
293
-	fread_int_small(&m_header_length, f);
294
-	printDebug("load", "header_length = %i\n", m_header_length);
295
-
296
-	fread_int_small(&m_tag_start, f);
297
-	printDebug("load", "tag_start = %i\n", m_tag_start);
298
-
299
-	fread_int_small(&m_surfaces_start, f);
300
-	printDebug("load", "surfaces_start = %i\n", m_surfaces_start);
301
-
302
-	fread_int_small(&m_file_size, f);
303
-	printDebug("load", "file_size = %i\n", m_file_size);
304
-
305
-	// End Header //////////////////
306
-	printDebug("load", "Loading %i bones\n", m_num_bones);
307
-	createBones(m_num_bones);
308
-
309
-	for (i = 0; i < m_num_bones; ++i)
310
-	{
311
-		//fread(&m_bones[i].mins, 12, 1, f);
312
-		fread_float_small(&m_bones[i].mins[0], f);
313
-		fread_float_small(&m_bones[i].mins[1], f);
314
-		fread_float_small(&m_bones[i].mins[2], f);
315
-		//fread(&m_bones[i].maxs, 12, 1, f);
316
-		fread_float_small(&m_bones[i].maxs[0], f);
317
-		fread_float_small(&m_bones[i].maxs[1], f);
318
-		fread_float_small(&m_bones[i].maxs[2], f);
319
-		//fread(&m_bones[i].center, 12, 1, f);
320
-		fread_float_small(&m_bones[i].center[0], f);
321
-		fread_float_small(&m_bones[i].center[1], f);
322
-		fread_float_small(&m_bones[i].center[2], f);
323
-		//fread(&m_bones[i].scale, 4, 1, f);
324
-		fread_float_small(&m_bones[i].scale, f);
325
-		fread(&m_bones[i].creator, 16, 1, f);
326
-
327
-		if (!i && strncmp("NPherno->MD3", m_bones[i].creator, 16) == 0)
328
-		{
329
-			npherno_warn = 1;
330
-		}
331
-
332
-		printDebug("load", "bone[%i].mins = %f %f %f\n", i,
333
-				 m_bones[i].mins[0], m_bones[i].mins[1], m_bones[i].mins[2]);
334
-		printDebug("load", "bone[%i].maxs = %f %f %f\n", i,
335
-				 m_bones[i].maxs[0], m_bones[i].maxs[1], m_bones[i].maxs[2]);
336
-		printDebug("load", "bone[%i].center = %f %f %f\n", i,
337
-				 m_bones[i].center[0], m_bones[i].center[1], m_bones[i].center[2]);
338
-		printDebug("load", "bone[%i].scale = %f\n", i, m_bones[i].scale);
339
-		printDebug("load", "bone[%i].creator = '%s'\n", i, m_bones[i].creator);
340
-	}
341
-
342
-
343
-	if (m_tag_start != ftell(f))
344
-	{
345
-		printWarning("load", "tag_start %i != file pos %lu\n",
346
-						 m_tag_start,ftell(f));
347
-
348
-		fseek(f, m_tag_start, SEEK_SET);
349
-		printWarning("load", "File position set to %lu\n", ftell(f));
350
-	}
351
-
352
-	printDebug("load", "Loading %i tags\n", m_num_tags * m_num_bones);
353
-	createTags(m_num_tags * m_num_bones);
354
-
355
-	for (i = 0; i < m_num_tags * m_num_bones; ++i)
356
-	{
357
-		fread(&m_tags[i].name, 64, 1, f);
358
-		//fread(&m_tags[i].center, 12, 1, f);
359
-		fread_float_small(&m_tags[i].center[0], f);
360
-		fread_float_small(&m_tags[i].center[1], f);
361
-		fread_float_small(&m_tags[i].center[2], f);
362
-		fread(&m_tags[i].rotation, 36, 1, f);
363
-
364
-		printDebug("load", "tag[%i].name = '%s'\n", i, m_tags[i].name);
365
-	}
366
-
367
-	if (m_surfaces_start != ftell(f))
368
-	{
369
-		printWarning("load", "surfaces_start %i != file pos %lu\n",
370
-						 m_surfaces_start, ftell(f));
371
-
372
-		fseek(f, m_surfaces_start, SEEK_SET);
373
-		printWarning("load", "File position set to %lu\n", ftell(f));
374
-	}
375
-
376
-	printDebug("load", "Loading %i meshes\n", m_num_meshes);
377
-	createMeshes(m_num_meshes);
378
-
379
-	for(i = 0; i < m_num_meshes; ++i)
380
-	{
381
-		// Start Mesh Header /////////////////
382
-
383
-		fread(&m_meshes[i].id, 4, 1, f);
384
-		fread(&m_meshes[i].name, 64, 1, f);
385
-		fread(&m_meshes[i].flags, 4, 1, f);
386
-		fread(&m_meshes[i].num_frames, 4, 1, f);
387
-
388
-		fread(&m_meshes[i].num_shaders, 4, 1, f);
389
-		m_meshes[i].num_skins = m_meshes[i].num_shaders;
390
-
391
-		fread(&m_meshes[i].num_vertices, 4, 1, f);
392
-		fread(&m_meshes[i].num_triangles, 4, 1, f);
393
-		fread(&m_meshes[i].tris_offset, 4, 1, f);
394
-		fread(&m_meshes[i].header_size, 4, 1, f);   // offset from start of surface
395
-		// to shaders
396
-		fread(&m_meshes[i].texel_offset, 4, 1, f);
397
-		fread(&m_meshes[i].vertex_offset, 4, 1, f); // offset to normals
398
-		// num_verts * num_frames
399
-		fread(&m_meshes[i].mesh_size, 4, 1, f);     // next surface
400
-
401
-		printDebug("load", "mesh[%i].id = '%c%c%c%c'\n", i,
402
-				 m_meshes[i].id[0], m_meshes[i].id[1], m_meshes[i].id[2], m_meshes[i].id[3]);
403
-		printDebug("load", "mesh[%i].name = '%s'\n", i,
404
-				 m_meshes[i].name);
405
-		printDebug("load", "mesh[%i].flags = %i\n", i,
406
-				 m_meshes[i].flags);
407
-		printDebug("load", "mesh[%i].num_frames = %i\n", i,
408
-				 m_meshes[i].num_frames);
409
-		printDebug("load", "mesh[%i].num_shaders = %i\n", i,
410
-				 m_meshes[i].num_shaders);
411
-		printDebug("load", "mesh[%i].num_vertices = %i\n", i,
412
-				 m_meshes[i].num_vertices);
413
-		printDebug("load", "mesh[%i].num_triangles = %i\n", i,
414
-				 m_meshes[i].num_triangles);
415
-		printDebug("load", "mesh[%i].tris_offset = %i\n", i,
416
-				 m_meshes[i].tris_offset+m_surfaces_start);
417
-		printDebug("load", "mesh[%i].shader_offset = %i\n", i,
418
-				 m_meshes[i].header_size+m_surfaces_start);
419
-		printDebug("load", "mesh[%i].texel_offset = %i\n", i,
420
-				 m_meshes[i].texel_offset+m_surfaces_start);
421
-		printDebug("load", "mesh[%i].vertex_offset = %i\n", i,
422
-				 m_meshes[i].vertex_offset+m_surfaces_start);
423
-		printDebug("load", "mesh[%i].mesh_end = %i\n", i,
424
-				 m_meshes[i].mesh_size+m_surfaces_start);
425
-
426
-		// This will kind of handle bad mesh reads here
427
-		if (*(int*)&m_meshes[i].id != MD3_IDALIASHEADER)
428
-		{
429
-			printWarning("load", "Bad/damaged mesh, handling...\n");
430
-			printWarning("load", "HANDLE: Keeping valid meshes... %i/%i total\n",
431
-							 i, m_num_meshes);
432
-
433
-			m_num_meshes = i; // don't use more than prev valid meshes
434
-			break;
435
-		}
436
-
437
-		// End Mesh Header ///////////////////
438
-
439
-		m_meshes[i].skin = NULL;
440
-		m_meshes[i].tris = NULL;
441
-		m_meshes[i].texel = NULL;
442
-		m_meshes[i].vertex = NULL;
443
-
444
-		// Start shaders /////////////////////
445
-		if (m_surfaces_start+m_meshes[i].header_size != ftell(f))
446
-		{
447
-			printWarning("load", "_mesh[%i] shader offset %i != file pos %lu\n",
448
-							 i, m_surfaces_start+m_meshes[i].header_size, ftell(f));
449
-
450
-			fseek(f, m_surfaces_start+m_meshes[i].header_size, SEEK_SET);
451
-			printWarning("load", "HANDLE: File position set to %lu\n", ftell(f));
452
-		}
453
-
454
-		m_meshes[i].skin = new md3_skin_t[m_meshes[i].num_skins];
455
-
456
-		dump_skin = false;
457
-
458
-		for (j = 0; j < m_meshes[i].num_skins; ++j)
459
-		{
460
-			fread(&m_meshes[i].skin[j].name, 68, 1, f);
461
-
462
-			if (!m_meshes[i].skin[j].name[0])
463
-			{
464
-				m_meshes[i].skin[j].name[0] = 'm';
465
-
466
-				printWarning("load", "Error in skin name %i/%i.\n",
467
-								 j+1, m_meshes[i].num_skins);
468
-
469
-				dump_skin = true;
470
-			}
471
-
472
-#ifdef UNIT_TEST_MD3_LV2
473
-			dump_skin = true;
474
-#endif
475
-
476
-			if (dump_skin)
477
-			{
478
-				printDebug("load", "Dumping skin buffer:\n'");
479
-
480
-				for (k = 0; k < 68; ++k)
481
-				{
482
-					if (m_meshes[i].skin[j].name[k] > 32 &&
483
-						 m_meshes[i].skin[j].name[k] < 127)
484
-					{
485
-						printf("%c", m_meshes[i].skin[j].name[k]);
486
-					}
487
-					else
488
-					{
489
-						printf("%c", 183); // print a dot for invalid text
490
-					}
491
-				}
492
-
493
-				printf("'\n");
494
-			}
495
-
496
-			printDebug("load", "mesh[%i].skin[%i].name = '%s'\n",
497
-					 i, j, m_meshes[i].skin[j].name);
498
-		}
499
-
500
-		// Start triangles ////////////////////////
501
-		if (m_surfaces_start+m_meshes[i].tris_offset != ftell(f))
502
-		{
503
-			printWarning("load", "mesh[%i] tris offset %i != file pos %lu\n", i,
504
-							 m_surfaces_start+m_meshes[i].tris_offset, ftell(f));
505
-
506
-			fseek(f, m_surfaces_start+m_meshes[i].tris_offset, SEEK_SET);
507
-			printWarning("load", "HANDLE: File position set to %lu\n", ftell(f));
508
-		}
509
-
510
-		m_meshes[i].tris = new md3_tri_index_t[m_meshes[i].num_triangles];
511
-
512
-		for (j = 0; j < m_meshes[i].num_triangles; ++j)
513
-		{
514
-			fread(&m_meshes[i].tris[j].triangle, 12, 1, f);
515
-		}
516
-
517
-		// Start texels /////////////////////
518
-		if (m_surfaces_start+m_meshes[i].texel_offset != ftell(f))
519
-		{
520
-			printWarning("load", "mesh[%i] texel offset %i != file pos %lu\n", i,
521
-							 m_surfaces_start+m_meshes[i].texel_offset, ftell(f));
522
-
523
-			fseek(f, m_surfaces_start+m_meshes[i].texel_offset, SEEK_SET);
524
-			printWarning("load", "HANDLE: File position set to %lu\n", ftell(f));
525
-		}
526
-
527
-		m_meshes[i].texel = new md3_texel_t[m_meshes[i].num_vertices];
528
-
529
-		for (j = 0; j < m_meshes[i].num_vertices; j++)
530
-		{
531
-			fread_float_small(&m_meshes[i].texel[j].st[0], f);
532
-			fread_float_small(&m_meshes[i].texel[j].st[1], f);
533
-		}
534
-
535
-		// Start vertices /////////////////////
536
-		if (m_surfaces_start+m_meshes[i].vertex_offset != ftell(f))
537
-		{
538
-			printWarning("load", "mesh[%i] vertex offset %i != file pos %lu\n",
539
-							 i, m_surfaces_start+m_meshes[i].vertex_offset, ftell(f));
540
-
541
-			fseek(f, m_surfaces_start+m_meshes[i].vertex_offset, SEEK_SET);
542
-			printWarning("load", "HANDLE: File position set to %lu\n", ftell(f));
543
-		}
544
-
545
-		// Should be num_vertices * num_frames??
546
-		m_meshes[i].vertex =
547
-      new md3_vertex_t[m_meshes[i].num_vertices * m_meshes[i].num_frames];
548
-
549
-		for (j = 0; j < m_meshes[i].num_vertices * m_meshes[i].num_frames; ++j)
550
-		{
551
-			fread(&ss, 2, 1, f);
552
-			m_meshes[i].vertex[j].pos[0] = ss;
553
-			fread(&ss, 2, 1, f);
554
-			m_meshes[i].vertex[j].pos[1] = ss;
555
-			fread(&ss, 2, 1, f);
556
-			m_meshes[i].vertex[j].pos[2] = ss;
557
-
558
-			fread(&sb, 1, 1, f);
559
-			m_meshes[i].vertex[j].st[0] = sb;
560
-
561
-			fread(&sb, 1, 1, f);
562
-			m_meshes[i].vertex[j].st[1] = sb;
563
-
564
-			if (mFlags & fDecodeNormals)
565
-			{
566
-				unsigned short normal;
567
-				unsigned char lat, lng;
568
-
569
-
570
-				normal = *((unsigned short *)m_meshes[i].vertex[j].st);
571
-				lat = (unsigned char)((normal & 255) * (2 * M_PI) / 255.0);
572
-				lng = (unsigned char)(((normal >> 8) & 255) * (2 * M_PI) / 255.0);
573
-
574
-				m_meshes[i].vertex[j].norm[0] = cos(lat) * sin(lng);
575
-				m_meshes[i].vertex[j].norm[1] = sin(lat) * sin(lng);
576
-				m_meshes[i].vertex[j].norm[2] = cos(lng);
577
-
578
-				printDebug("load", "%f %f %f\n",
579
-							  m_meshes[i].vertex[j].norm[0],
580
-							  m_meshes[i].vertex[j].norm[1],
581
-							  m_meshes[i].vertex[j].norm[2]);
582
-			}
583
-		}
584
-
585
-		// Start next surface/mesh /////////////////////
586
-		if (m_surfaces_start+m_meshes[i].mesh_size != ftell(f))
587
-		{
588
-			printWarning("load", "_mesh[%i] next mesh offset %i != file pos %lu\n",
589
-						  i, m_surfaces_start+m_meshes[i].mesh_size, ftell(f));
590
-
591
-			fseek(f, m_surfaces_start+m_meshes[i].mesh_size, SEEK_SET);
592
-			printWarning("load", "HANDLE: File position set to %lu\n", ftell(f));
593
-		}
594
-
595
-		// Now acculate this mesh offset
596
-		m_surfaces_start = ftell(f);
597
-	}
598
-
599
-	fclose(f);
600
-
601
-	return 0;
602
-}
603
-
604
-
605
-int Md3::save(char *filename)
606
-{
607
-  FILE *f;
608
-  int i, ii, tmp, hms;
609
-  int32_t si;
610
-
611
-
612
-  if ((!m_tags && m_num_tags) || (!m_bones && m_num_bones) ||
613
-		(!m_meshes && m_num_meshes))
614
-  {
615
-    printError("save", "invalid md3\n");
616
-    return -1;
617
-  }
618
-
619
-  f = fopen(filename, "wb");
620
-
621
-  if (!f)
622
-  {
623
-    perror("Md3::Save> \n");
624
-    return -1;
625
-  }
626
-
627
-  // Start Header ////////////////
628
-  si = m_id;
629
-  fwrite(&si, 4, 1, f);
630
-  printDebug("save", "id = 0x%x\n", m_id);
631
-
632
-  m_version = MD3_ALIAS_VERSION;
633
-
634
-  fwrite(&m_version, 4, 1, f);
635
-  printDebug("save", "version = %i\n", m_version);
636
-
637
-  fwrite(&m_filename, sizeof(m_filename), 1, f);
638
-  printDebug("save", "filename = '%s'\n", m_filename);
639
-
640
-  fwrite(&m_num_bones, 4, 1, f);
641
-  printDebug("save", "num_bones = %i\n", m_num_bones);
642
-
643
-  fwrite(&m_num_tags, 4, 1, f);
644
-  printDebug("save", "num_tags = %i\n", m_num_tags);
645
-
646
-  fwrite(&m_num_meshes, 4, 1, f);
647
-  printDebug("save", "num_meshes = %i\n", m_num_meshes);
648
-
649
-  fwrite(&m_max_skins, 4, 1, f);
650
-  printDebug("save", "max_skins = %i\n", m_max_skins);
651
-
652
-  // Seek back and write in actual value later
653
-  // store file postion for now
654
-  m_header_length = ftell(f);
655
-  fwrite(&m_header_length, 4, 1, f);
656
-
657
-  // Seek back and write in actual value later
658
-  // store file postion for now
659
-  m_tag_start = ftell(f);
660
-  fwrite(&m_tag_start, 4, 1, f);
661
-
662
-  // Seek back and write in actual value later
663
-  // store file postion for now
664
-  m_surfaces_start = ftell(f);
665
-  fwrite(&m_surfaces_start, 4, 1, f);
666
-
667
-  // Seek back and write in actual value later
668
-  // store file postiion for now
669
-  m_file_size = ftell(f);
670
-  fwrite(&m_file_size, 4, 1, f);
671
-
672
-  // End Header //////////////////
673
-  tmp = m_header_length;
674
-  m_header_length = ftell(f);
675
-  fseek(f, tmp, SEEK_SET);
676
-  fwrite(&m_header_length, 4, 1, f);
677
-  printDebug("save", "header_length = %i\n", m_header_length);
678
-  fseek(f, m_header_length, SEEK_SET);
679
-
680
-  for (i = 0; i < m_num_bones; ++i)
681
-  {
682
-    fwrite(&m_bones[i].mins, sizeof(m_bones[i].mins), 1, f);
683
-    fwrite(&m_bones[i].maxs, sizeof(m_bones[i].maxs), 1, f);
684
-    fwrite(&m_bones[i].center, sizeof(m_bones[i].center), 1, f);
685
-    fwrite(&m_bones[i].scale, sizeof(float), 1, f);
686
-    fwrite(&m_bones[i].creator, 16, 1, f);
687
-
688
-    printDebug("save", "bone[%i].creator = '%s'\n", i, m_bones[i].creator);
689
-  }
690
-
691
-  printDebug("save", "Saving %i tags\n", m_num_tags * m_num_bones);
692
-
693
-  // Start Tags ////////////////
694
-  tmp = m_tag_start;
695
-  m_tag_start = ftell(f);
696
-  fseek(f, tmp, SEEK_SET);
697
-  fwrite(&m_tag_start, 4, 1, f);
698
-  printDebug("save", "tag_start = %i\n", m_tag_start);
699
-  fseek(f, m_tag_start, SEEK_SET);
700
-
701
-  for (i = 0; i < m_num_tags * m_num_bones; ++i)
702
-  {
703
-    fwrite(&m_tags[i].name, 64, 1, f);
704
-    fwrite(&m_tags[i].center, sizeof(m_tags[i].center), 1, f);
705
-    fwrite(&m_tags[i].rotation, sizeof(m_tags[i].rotation), 1, f);
706
-
707
-    printDebug("save", "tag[%i].name = '%s'\n", i, m_tags[i].name);
708
-  }
709
-
710
-  // Start Geometeric data ////////////////
711
-  tmp = m_surfaces_start;
712
-  m_surfaces_start = ftell(f);
713
-  fseek(f, tmp, SEEK_SET);
714
-  fwrite(&m_surfaces_start, 4, 1, f);
715
-  printDebug("save", "surfaces_start = %i\n", m_surfaces_start);
716
-  fseek(f, m_surfaces_start, SEEK_SET);
717
-
718
-  for (i = 0; i < m_num_meshes; i++)
719
-  {
720
-    // Start Mesh Header /////////////////
721
-    hms = ftell(f);
722
-
723
-    fwrite(&m_meshes[i].id, 4, 1, f);
724
-    fwrite(&m_meshes[i].name, 68, 1, f);
725
-    fwrite(&m_meshes[i].num_frames, 4, 1, f);
726
-    fwrite(&m_meshes[i].num_skins, 4, 1, f);
727
-    fwrite(&m_meshes[i].num_vertices, 4, 1, f);
728
-    fwrite(&m_meshes[i].num_triangles, 4, 1, f);
729
-
730
-    m_meshes[i].tris_offset = ftell(f);
731
-    fwrite(&m_meshes[i].tris_offset, 4, 1, f);
732
-
733
-    m_meshes[i].header_size = ftell(f);
734
-    fwrite(&m_meshes[i].header_size, 4, 1, f);
735
-
736
-    m_meshes[i].texel_offset = ftell(f);
737
-    fwrite(&m_meshes[i].texel_offset, 4, 1, f);
738
-
739
-    m_meshes[i].vertex_offset = ftell(f);
740
-    fwrite(&m_meshes[i].vertex_offset, 4, 1, f);
741
-
742
-    m_meshes[i].mesh_size = ftell(f);
743
-    fwrite(&m_meshes[i].mesh_size, 4, 1, f);
744
-
745
-    printDebug("save", "_mesh[%i].name = '%s'\n", i, m_meshes[i].name);
746
-
747
-    // End Mesh Header ///////////////////
748
-    tmp = ftell(f);
749
-    fseek(f, m_meshes[i].header_size, SEEK_SET);
750
-    m_meshes[i].header_size = tmp - hms;
751
-    fwrite(&m_meshes[i].header_size, 4, 1, f);
752
-    printDebug("save", "_mesh[%i].header_size = %i\n",i,m_meshes[i].header_size);
753
-    fseek(f, tmp, SEEK_SET);
754
-
755
-    for(ii = 0; ii < m_meshes[i].num_skins; ii++)
756
-    {
757
-      fwrite(&m_meshes[i].skin[ii].name, 68, 1, f);
758
-
759
-      if (!m_meshes[i].skin[ii].name[0])
760
-	m_meshes[i].skin[ii].name[0] = 'm';
761
-
762
-#ifdef TEST_MD3
763
-      printf("Viewing full skin buffer:\n'");
764
-
765
-      for (int foo = 0; foo < 68; ++foo)
766
-	printf("%c", m_meshes[i].skin[ii].name[foo]);
767
-
768
-      printf("'\n");
769
-#endif
770
-
771
-      printDebug("save", "_mesh[%i].skin[%i].name = '%s'\n",
772
-	     i, ii, m_meshes[i].skin[ii].name);
773
-    }
774
-
775
-    // Tris Start //////////////
776
-    tmp = ftell(f);
777
-    fseek(f, m_meshes[i].tris_offset, SEEK_SET);
778
-    m_meshes[i].tris_offset = tmp - hms;
779
-    fwrite(&m_meshes[i].tris_offset, 4, 1, f);
780
-    printDebug("save", "_mesh[%i].tris_offset = %i\n",i,m_meshes[i].tris_offset);
781
-    fseek(f, tmp, SEEK_SET);
782
-
783
-    for(ii = 0; ii < m_meshes[i].num_triangles; ++ii)
784
-    {
785
-      fwrite(&m_meshes[i].tris[ii].triangle, 12, 1, f);
786
-    }
787
-
788
-    // Texel Start //////////////
789
-    tmp = ftell(f);
790
-    fseek(f, m_meshes[i].texel_offset, SEEK_SET);
791
-    m_meshes[i].texel_offset = tmp - hms;
792
-    fwrite(&m_meshes[i].texel_offset, 4, 1, f);
793
-    printDebug("save", "_mesh[%i].texel_offset = %i\n",
794
-	   i,m_meshes[i].texel_offset);
795
-    fseek(f, tmp, SEEK_SET);
796
-
797
-    for(ii = 0; ii < m_meshes[i].num_vertices; ++ii)
798
-    {
799
-      fwrite(&m_meshes[i].texel[ii].st, sizeof(m_meshes[i].texel[ii].st), 1, f);
800
-    }
801
-
802
-    // Vertex Start //////////////
803
-    tmp = ftell(f);
804
-    fseek(f, m_meshes[i].vertex_offset, SEEK_SET);
805
-    m_meshes[i].vertex_offset = tmp - hms;
806
-    fwrite(&m_meshes[i].vertex_offset, 4, 1, f);
807
-    printDebug("save", "_mesh[%i]._vertexoffset = %i\n",
808
-	   i,m_meshes[i].vertex_offset);
809
-    fseek(f, tmp, SEEK_SET);
810
-
811
-    // Should be num_vertices * num_frames??
812
-    for(ii = 0; ii < m_meshes[i].num_vertices * m_meshes[i].num_frames; ++ii)
813
-    {
814
-      fwrite(&m_meshes[i].vertex[ii].pos, sizeof(m_meshes[i].vertex[ii].pos), 1, f);
815
-      fwrite(&m_meshes[i].vertex[ii].st, sizeof(m_meshes[i].vertex[ii].st), 1, f);
816
-    }
817
-    // End Mesh  ///////////////////
818
-    tmp = ftell(f);
819
-    fseek(f, m_meshes[i].mesh_size, SEEK_SET);
820
-    m_meshes[i].mesh_size = tmp - hms;
821
-    fwrite(&m_meshes[i].mesh_size, 4, 1, f);
822
-    printDebug("save", "_mesh[%i].mesh_size = %i\n",i,m_meshes[i].mesh_size);
823
-    fseek(f, tmp, SEEK_SET);
824
-
825
-  }
826
-
827
-  // End File /////////////
828
-  tmp = m_file_size;
829
-  m_file_size = ftell(f);
830
-  fseek(f, tmp, SEEK_SET);
831
-  fwrite(&m_file_size, 4, 1, f);
832
-  printDebug("save", "file_size = %i\n", m_file_size);
833
-  fseek(f, m_file_size, SEEK_SET);
834
-
835
-  fclose(f);
836
-
837
-  return 0;
838
-}
839
-
840
-
841
-////////////////////////////////////////////////////////////
842
-// Private Mutators
843
-////////////////////////////////////////////////////////////
844
-
845
-void Md3::printDebug(const char *method, const char *s, ...)
846
-{
847
-	va_list args;
848
-
849
-
850
-	if (m_debug < 2)
851
-	{
852
-		return;
853
-	}
854
-
855
-	va_start(args, s);
856
-	fprintf(stdout, "Md3::%s> ", method);
857
-	vfprintf(stdout, s, args);
858
-	fprintf(stdout, "\n");
859
-	va_end(args);
860
-}
861
-
862
-
863
-void Md3::printError(const char *method, const char *s, ...)
864
-{
865
-	va_list args;
866
-
867
-
868
-	va_start(args, s);
869
-	fprintf(stderr, "Md3::%s> ERROR: ", method);
870
-	vfprintf(stderr, s, args);
871
-	fprintf(stderr, "\n");
872
-	va_end(args);
873
-}
874
-
875
-
876
-void Md3::printWarning(const char *method, const char *s, ...)
877
-{
878
-	va_list args;
879
-
880
-
881
-	if (m_debug < 1)
882
-	{
883
-		return;
884
-	}
885
-
886
-	va_start(args, s);
887
-	fprintf(stderr, "Md3::%s> WARNING: ", method);
888
-	vfprintf(stderr, s, args);
889
-	fprintf(stderr, "\n");
890
-	va_end(args);
891
-}
892
-
893
-
894
-void Md3::createMeshes(unsigned int num)
895
-{
896
-	m_meshes = new md3_mesh_t[num];
897
-
898
-	texTest = new int[num];
899
-	memset(texTest, 0, num*4);
900
-}
901
-
902
-
903
-void Md3::createTags(unsigned int num)
904
-{
905
-	m_tags = new md3_tag_t[num];
906
-
907
-	slaveTest = new unsigned int[num];
908
-	memset(slaveTest, 0, num*4);
909
-}
910
-
911
-
912
-void Md3::createBones(unsigned int num)
913
-{
914
-	m_bones = new md3_bone_t[num];
915
-}
916
-
917
-
918
-
919
-////////////////////////////////////////////////////////////
920
-// Unit Test code
921
-////////////////////////////////////////////////////////////
922
-
923
-#ifdef UNIT_TEST_MD3
924
-int main(int argc, char *argv[])
925
-{
926
-	Md3 md3;
927
-
928
-
929
-	printf("[MD3 class test]\n");
930
-
931
-	md3.setDebug(2);
932
-
933
-	if (argc > 2)
934
-	{
935
-		if (strcmp(argv[1], "load") == 0)
936
-		{
937
-			if (!md3.load(argv[2]))
938
-			{
939
-				printf("main: Load reports success.\n");
940
-			}
941
-		}
942
-		else if (strcmp(argv[1], "save") == 0)
943
-		{
944
-			// FIXME: Add code here to generate a small md3
945
-
946
-			if (!md3.save(argv[2]))
947
-			{
948
-				printf("main: Save reports success.\n");
949
-			}
950
-		}
951
-		else if (strcmp(argv[1], "test") == 0 && argc > 3)
952
-		{
953
-			if (!md3.load(argv[2]))
954
-			{
955
-				printf("main: Load reports success.\n");
956
-			}
957
-
958
-			if (!md3.save(argv[3]))
959
-			{
960
-				printf("main: Save reports success.\n");
961
-			}
962
-		}
963
-		else
964
-		{
965
-			printf("\n\n%s [save | load | test] filename.md3 [testout.md3]\n",
966
-					 argv[0]);
967
-		}
968
-	}
969
-	else
970
-	{
971
-		printf("\n\n%s [save | load | test] filename.md3 [testout.md3]\n",
972
-				 argv[0]);
973
-	}
974
-}
975
-#endif
976
-

+ 0
- 509
src/Md3.h View File

@@ -1,509 +0,0 @@
1
-/* -*- Mode: C++; tab-width: 3; indent-tabs-mode: t; c-basic-offset: 3 -*- */
2
-/*==========================================================================
3
- *
4
- * Project : Freyja
5
- * Author  : Terry 'Mongoose' Hendrix II
6
- * Website : http://gooseegg.sourceforge.net
7
- * Email   : stu7440@westga.edu
8
- * Object  : Md3
9
- * Comments: This is the MD3 model class.
10
- *
11
- *           See file COPYING for license details.
12
- *
13
- *           Quake (c) id Software 1995 - 2000
14
- *
15
- *           MD3 file format specs provided by Mental Vortex,
16
- *           and that site says the specs may not be 100% correct
17
- *           so - since this class is desgined using their specs...
18
- *
19
- *-- Test Defines -----------------------------------------------------
20
- *
21
- * UNIT_TEST_MD3      - Builds Md3 class as a console unit test program
22
- * UNIT_TEST_MD3_LV2  - Does more debugging when used with unit test
23
- *
24
- *-- History ----------------------------------------------------------
25
- *
26
- * 2002.10.19:
27
- * Mongoose - Interface update, Animation support starts
28
- *
29
- * 2000.10.07:
30
- * Mongoose - Interface update
31
- *
32
- * 2000.06.03:
33
- * Mongoose - Created, MD3 specs provided by Mental Vortex
34
- ==========================================================================*/
35
-
36
-
37
-#ifndef __FREYJA_MONGOOSE_MD3_H
38
-#define __FREYJA_MONGOOSE_MD3_H
39
-
40
-
41
-#define MD3_IDALIASHEADER  0x33504449 // "IDP3"
42
-#define MD3_ALIAS_VERSION  15
43
-#define MD3_MAX_FRAMES     1024
44
-
45
-#ifndef vec3_t
46
-typedef float vec3_t[3];
47
-#endif
48
-
49
-#ifndef mat3_t
50
-typedef float mat3_t[3][3];
51
-#endif
52
-
53
-
54
-typedef struct md3_tag_s
55
-{
56
-  char name[64];    /* Name of 'tag' as it's usually
57
-							  called in the md3 files try to
58
-							  see it as a sub-mesh/seperate
59
-							  mesh-part.
60
-
61
-							  Sometimes this 64 string may
62
-							  contain some garbage, but
63
-							  i've been told this is because
64
-							  some tools leave garbage in
65
-							  those strings, but they ARE
66
-							  strings... */
67
-
68
-  vec3_t center;    /* Relative position of tag */
69
-
70
-  mat3_t rotation;  /* The direction the tag is facing
71
-							  relative to the rest of the model */
72
-
73
-} md3_tag_t;
74
-
75
-
76
-typedef struct md3_boneframe_s
77
-{
78
-  float  mins[3];
79
-  float  maxs[3];
80
-  float  center[3];
81
-  float  scale;
82
-  char   creator[16];
83
-
84
-} md3_bone_t;
85
-
86
-
87
-typedef struct md3_skin_s
88
-{
89
-  char name[68];       /* Name of skin used by mesh
90
-								  65 chars,
91
-								  32 bit aligned == 68 chars  */
92
-
93
-  int index;           /* For shader use (skin is a shader) */
94
-
95
-} md3_skin_t;
96
-
97
-
98
-typedef struct md3_tri_index_s
99
-{
100
-  int  triangle[3];    /* Vertex 1, 2, 3 of triangle */
101
-
102
-} md3_tri_index_t;
103
-
104
-
105
-typedef struct md3_texel_s
106
-{
107
-  float st[2];         /* Texel (s, t) */
108
-
109
-} md3_texel_t;
110
-
111
-
112
-typedef struct md3_vertex_s
113
-{
114
-  signed short pos[3];       /* Vertex X/Y/Z coordinate */
115
-
116
-  unsigned char st[2];       /* Enviromental mapping
117
-										  texture coordinates
118
-										  (Acutally encoded normal?) */
119
-
120
-	float norm[3];            /* Decoded normal from above decoded */
121
-
122
-} md3_vertex_t;
123
-
124
-
125
-typedef struct md3_mesh_s
126
-{
127
-  // Start Mesh Header /////////////
128
-
129
-  char id[4];          /* Mesh alias id, must be IDP3  */
130
-
131
-  char name[68];       /* Name of mesh
132
-								  65 chars,
133
-								  32 bit aligned == 68 chars */
134
-  int flags;
135
-
136
-
137
-  int  num_frames;     /* Number of VertexMorph frames
138
-								  in mesh */
139
-
140
-  int num_shaders;     /* Number of shaders in mesh*/
141
-
142
-  int  num_skins;      /* Number of skins in mesh,
143
-								  for backwards compatibility with
144
-								  incorrect/obsolete spec  */
145
-
146
-  int  num_vertices;   /* Number of vertices */
147
-
148
-  int  num_triangles;  /* Number of triangles */
149
-
150
-  int  tris_offset;    /* Starting position of
151
-								  Triangle data, relative
152
-								  to start of Mesh_Header  */
153
-
154
-  int  header_size;    /* Size of header  */
155
-
156
-  int  texel_offset;   /* Starting position of
157
-								  texvector data, relative
158
-								  to start of Mesh_Header */
159
-
160
-  int  vertex_offset;  /* Starting position of
161
-								  vertex data,relative
162
-								  to start of Mesh_Header  */
163
-
164
-  int  mesh_size;      /* Size of mesh  */
165
-
166
-  // End Mesh Header ///////////////
167
-
168
-
169
-  md3_skin_t *skin;       /* Skins */
170
-
171
-  md3_tri_index_t *tris;  /* Triangles */
172
-
173
-  md3_texel_t *texel;     /* Texels */
174
-
175
-  md3_vertex_t *vertex;   /* Vertices */
176
-
177
-} md3_mesh_t;
178
-
179
-
180
-class Md3
181
-{
182
-public:
183
-
184
-	enum Md3Flag
185
-	{
186
-		fDecodeNormals = 1
187
-	};
188
-
189
-	////////////////////////////////////////////////////////////
190
-	// Constructors
191
-	////////////////////////////////////////////////////////////
192
-
193
-	Md3();
194
-	/*------------------------------------------------------
195
-	 * Pre  :
196
-	 * Post : Md3 object is constructed
197
-	 *
198
-	 *-- History ------------------------------------------
199
-	 *
200
-	 * 2000.06.03:
201
-	 * Mongoose - Created
202
-	 ------------------------------------------------------*/
203
-
204
-	Md3(unsigned int num_meshes, unsigned int num_bones, unsigned int num_tags);
205
-	/*------------------------------------------------------
206
-	 * Pre  : Md3 is being used for exporting, since
207
-	 *        this is the only way to allocate arrays
208
-	 *        from public access
209
-	 *
210
-	 * Post : Md3 object is constructed and ready to edit
211
-	 *
212
-	 *-- History ------------------------------------------
213
-	 *
214
-	 * 2002.06.19:
215
-	 * Mongoose - Created
216
-	 ------------------------------------------------------*/
217
-
218
-	~Md3();
219
-	/*------------------------------------------------------
220
-	 * Pre  : Md3 object is allocated
221
-	 * Post : Md3 object is deconstructed
222
-	 *
223
-	 *-- History ------------------------------------------
224
-	 *
225
-	 * 2000.06.03:
226
-	 * Mongoose - Created
227
-	 ------------------------------------------------------*/
228
-
229
-
230
-	////////////////////////////////////////////////////////////
231
-	// Public Accessors
232
-	////////////////////////////////////////////////////////////
233
-
234
-	unsigned int getNumMeshes();
235
-	/*------------------------------------------------------
236
-	 * Pre  :
237
-	 * Post : Mesh count is returned
238
-	 *
239
-	 *-- History ------------------------------------------
240
-	 *
241
-	 * 2002.06.19:
242
-	 * Mongoose - Created, Obsoletes:
243
-	 *            2000.06.03, int NumTags();
244
-	 ------------------------------------------------------*/
245
-
246
-	unsigned int getNumTags();
247
-	/*------------------------------------------------------
248
-	 * Pre  :
249
-	 * Post : Tag count is returned
250
-	 *
251
-	 *-- History ------------------------------------------
252
-	 *
253
-	 * 2002.06.19:
254
-	 * Mongoose - Created, Obsoletes:
255
-	 *            2000.06.03, int NumTags();
256
-	 ------------------------------------------------------*/
257
-
258
-	unsigned int getNumBones();
259
-	/*------------------------------------------------------
260
-	 * Pre  :
261
-	 * Post : Bone count is returned
262
-	 *
263
-	 *-- History ------------------------------------------
264
-	 *
265
-	 * 2002.06.19:
266
-	 * Mongoose - Created, Obsoletes:
267
-	 *            2000.06.03, int NumTags();
268
-	 ------------------------------------------------------*/
269
-
270
-	md3_mesh_t *getMeshes();
271
-	/*------------------------------------------------------
272
-	 * Pre  :
273
-	 * Post : Mesh list is returned
274
-	 *
275
-	 *-- History ------------------------------------------
276
-	 *
277
-	 * 2002.06.19:
278
-	 * Mongoose - Created, Obsoletes:
279
-	 *            2000.06.03, md3_mesh_t *Mesh();
280
-	 ------------------------------------------------------*/
281
-
282
-	md3_tag_t *getTags();
283
-	/*------------------------------------------------------
284
-	 * Pre  :
285
-	 * Post : Tag list is returned
286
-	 *
287
-	 *-- History ------------------------------------------
288
-	 *
289
-	 * 2002.06.19:
290
-	 * Mongoose - Created, Obsoletes:
291
-	 *            2000.06.03, md3_tag_t *Tag();
292
-	 ------------------------------------------------------*/
293
-
294
-	md3_bone_t *getBones();
295
-	/*------------------------------------------------------
296
-	 * Pre  :
297
-	 * Post : Bone list is returned
298
-	 *
299
-	 *-- History ------------------------------------------
300
-	 *
301
-	 * 2002.06.19:
302
-	 * Mongoose - Created, Obsoletes:
303
-	 *            2000.06.03, md3_boneframe_t *Bone();
304
-	 ------------------------------------------------------*/
305
-
306
-
307
-	////////////////////////////////////////////////////////////
308
-	// Public Mutators
309
-	////////////////////////////////////////////////////////////
310
-
311
-	void toggleFlag(Md3Flag flag);
312
-	/*------------------------------------------------------
313
-	 * Pre  :
314
-	 * Post : Toggles a flag
315
-	 *
316
-	 *-- History ------------------------------------------
317
-	 *
318
-	 * 2003.01.01:
319
-	 * Mongoose - Created
320
-	 ------------------------------------------------------*/
321
-
322
-	void reset();
323
-	/*------------------------------------------------------
324
-	 * Pre  :
325
-	 * Post : Resets all model data
326
-	 *
327
-	 *-- History ------------------------------------------
328
-	 *
329
-	 * 2002.06.22:
330
-	 * Mongoose - Created
331
-	 ------------------------------------------------------*/
332
-
333
-	void setDebug(unsigned char level);
334
-	/*------------------------------------------------------
335
-	 * Pre  :
336
-	 * Post : level 0 = errors, 1 = warnings, 2 = debug1
337
-	 *
338
-	 *-- History ------------------------------------------
339
-	 *
340
-	 * 2002.06.19:
341
-	 * Mongoose - Created
342
-	 ------------------------------------------------------*/
343
-
344
-	int load(char *filename);
345
-	/*------------------------------------------------------
346
-	 * Pre  :
347
-	 * Post : Error code is returned, 0 no error
348
-	 *        Md3 filename is read into memory
349
-	 *
350
-	 *-- History ------------------------------------------
351
-	 *
352
-	 * 2000.06.03:
353
-	 * Mongoose - Created
354
-	 ------------------------------------------------------*/
355
-
356
-	int save(char *filename);
357
-	/*------------------------------------------------------
358
-	 * Pre  :
359
-	 * Post : Error code is returned, 0 no error
360
-	 *        Md3 saved as filename
361
-	 *
362
-	 *-- History ------------------------------------------
363
-	 *
364
-	 * 2000.10.06:
365
-	 * Mongoose - Created
366
-	 ------------------------------------------------------*/
367
-
368
-	// Testing members
369
-	unsigned int *slaveTest;
370
-	unsigned int idTest;
371
-	int *texTest;
372
-
373
-	// For animation rendering
374
-	unsigned int numAnimations;
375
-	unsigned int currentAnimation;
376
-	unsigned int currentFrame;
377
-	unsigned int nextFrame;
378
-	float time;
379
-	float lastTime;
380
-
381
-private:
382
-
383
-	////////////////////////////////////////////////////////////
384
-	// Private Accessors
385
-	////////////////////////////////////////////////////////////
386
-
387
-
388
-	////////////////////////////////////////////////////////////
389
-	// Private Mutators
390
-	////////////////////////////////////////////////////////////
391
-
392
-	void printError(const char *method, const char *s, ...);
393
-	/*------------------------------------------------------
394
-	 * Pre  :
395
-	 * Post : Dumps error to stderr
396
-	 *
397
-	 *-- History ------------------------------------------
398
-	 *
399
-	 * 2002.06.19:
400
-	 * Mongoose - Created
401
-	 ------------------------------------------------------*/
402
-
403
-	void printWarning(const char *method, const char *s, ...);
404
-	/*------------------------------------------------------
405
-	 * Pre  :
406
-	 * Post : Dumps warning to stderr
407
-	 *
408
-	 *-- History ------------------------------------------
409
-	 *
410
-	 * 2002.06.19:
411
-	 * Mongoose - Created
412
-	 ------------------------------------------------------*/
413
-
414
-	void printDebug(const char *method, const char *s, ...);
415
-	/*------------------------------------------------------
416
-	 * Pre  : Debugging is on
417
-	 * Post : Dumps debug info
418
-	 *
419
-	 *-- History ------------------------------------------
420
-	 *
421
-	 * 2002.06.19:
422
-	 * Mongoose - Created
423
-	 ------------------------------------------------------*/
424
-
425
-	void createMeshes(unsigned int num);
426
-	/*------------------------------------------------------
427
-	 * Pre  : Model hasn't been init yet
428
-	 * Post : Allocates num of meshes for model
429
-	 *
430
-	 *-- History ------------------------------------------
431
-	 *
432
-	 * 2002.06.19:
433
-	 * Mongoose - Created, Obsoletes:
434
-	 *            2000.10.24, void NumMeshes(int);
435
-	 *            2000.10.24, void Mesh(md3_mesh_t *);
436
-	 ------------------------------------------------------*/
437
-
438
-	void createTags(unsigned int num);
439
-	/*------------------------------------------------------
440
-	 * Pre  : Model hasn't been init yet
441
-	 * Post : Allocates num of tags for model
442
-	 *
443
-	 *-- History ------------------------------------------
444
-	 *
445
-	 * 2002.06.19:
446
-	 * Mongoose - Created, Obsoletes:
447
-	 *            2000.10.24, void NumTags(int);
448
-	 *            2000.10.24, void Tag(md3_tag_t *);
449
-	 ------------------------------------------------------*/
450
-
451
-	void createBones(unsigned int num);
452
-	/*------------------------------------------------------
453
-	 * Pre  : Model hasn't been init yet
454
-	 * Post : Allocates num of bones for model
455
-	 *
456
-	 *-- History ------------------------------------------
457
-	 *
458
-	 * 2002.06.19:
459
-	 * Mongoose - Created, Obsoletes:
460
-	 *            2000.10.24, void NumBones(int);
461
-	 *            2000.10.24, void Bone(md3_bone_t *);
462
-	 ------------------------------------------------------*/
463
-
464
-
465
-	unsigned int mFlags;
466
-
467
-
468
-  // Start Header //////////////////////////////////////////////
469
-
470
-	int m_id;                 /* Alias id always "IDP3" */
471
-
472
-	int m_version;            /* Version number, always 15 */
473
-
474
-	char m_filename[68];      /* Sometimes left blank...
475
-										  65 chars, 32bit aligned ==
476
-										  68 chars */
477
-
478
-	int m_num_bones;          /* Number of Bone */
479
-
480
-	int m_num_tags;           /* Number of 'tags' per Bone */
481
-
482
-	int m_num_meshes;         /* Number of meshes/skins */
483
-
484
-	int m_max_skins;          /* Maximum number of unique skins
485
-										  used in md3 file */
486
-
487
-	int m_header_length;      /* Always equal to the length of
488
-										  this header */
489
-
490
-	int m_tag_start;          /* Starting position of
491
-										  tag-structures */
492
-
493
-	int m_surfaces_start;     /* Starting position of
494
-										  geometeric data (mesh structures) */
495
-
496
-	int m_file_size;          /* Size of file */
497
-
498
-	// End Header ////////////////////////////////////////////////
499
-
500
-
501
-	unsigned char m_debug;    /* Set level of debug info to stdout */
502
-
503
-	md3_tag_t *m_tags;        /* Tags */
504
-
505
-	md3_bone_t *m_bones;      /* Bones */
506
-
507
-	md3_mesh_t *m_meshes;     /* Meshes */
508
-};
509
-#endif

+ 0
- 2306
src/Md3AnimModel.cpp
File diff suppressed because it is too large
View File


+ 0
- 466
src/Md3AnimModel.h View File

@@ -1,466 +0,0 @@
1
-/* -*- Mode: C++; tab-width: 3; indent-tabs-mode: t; c-basic-offset: 3 -*- */
2
-/*================================================================
3
- *
4
- * Project : Freyja
5
- * Author  : Terry 'Mongoose' Hendrix II
6
- * Website : http://www.westga.edu/~stu7440/
7
- * Email   : stu7440@westga.edu
8
- * Object  : Md3AnimModel
9
- * License : No use w/o permission (C) 2002 Mongoose
10
- * Comments: Md3 animation model class
11
- *
12
- *
13
- *           This file was generated using Mongoose's C++
14
- *           template generator script.  <stu7440@westga.edu>
15
- *
16
- *
17
- *-- Test Defines -----------------------------------------------
18
- *
19
- * UNIT_TEST_MD3 - Builds Md3 class as a console unit test
20
- *
21
- *-- History ----------------------------------------------------
22
- *
23
- * 2002.06.19:
24
- * Mongoose - Created
25
- ================================================================*/
26
-
27
-
28
-#ifndef __FREYJA_MONGOOSE_MD3ANIMMODEL_H_
29
-#define __FREYJA_MONGOOSE_MD3ANIMMODEL_H_
30
-
31
-#include "Md3.h"
32
-
33
-
34
-typedef enum
35
-{
36
-	MD3_LOD_HIGH = 0,
37
-	MD3_LOD_MED  = 1,
38
-	MD3_LOD_LOW  = 2,
39
-
40
-} md3_lod_t;
41
-
42
-typedef enum
43
-{
44
-	MD3_SEX_MALE = 0,
45
-	MD3_SEX_FEMALE  = 1,
46
-	MD3_SEX_NEUTER  = 2,
47
-
48
-} md3_sex_t;
49
-
50
-typedef enum
51
-{
52
-	UNSUPPORTED = -1,
53
-	BOTH_DEATH1 = 0,		// The first twirling death animation
54
-	BOTH_DEAD1,				// The end of the first twirling death animation
55
-	BOTH_DEATH2,			// The second twirling death animation
56
-	BOTH_DEAD2,				// The end of the second twirling death animation
57
-	BOTH_DEATH3,			// The back flip death animation
58
-	BOTH_DEAD3,				// The end of the back flip death animation
59
-	TORSO_GESTURE,			// The torso's gesturing animation
60
-	TORSO_ATTACK,			// The torso's attack1 animation
61
-	TORSO_ATTACK2,			// The torso's attack2 animation
62
-	TORSO_DROP,				// The torso's weapon drop animation
63
-	TORSO_RAISE,			// The torso's weapon pickup animation
64
-	TORSO_STAND,			// The torso's idle stand animation
65
-	TORSO_STAND2,			// The torso's idle stand2 animation
66
-	LEGS_WALKCR,			// The legs's crouching walk animation
67
-	LEGS_WALK,				// The legs's walk animation
68
-	LEGS_RUN,				// The legs's run animation
69
-	LEGS_BACK,				// The legs's running backwards animation
70
-	LEGS_SWIM,				// The legs's swimming animation
71
-	LEGS_JUMP,				// The legs's jumping animation
72
-	LEGS_LAND,				// The legs's landing animation
73
-	LEGS_JUMPB,				// The legs's jumping back animation
74
-	LEGS_LANDB,				// The legs's landing back animation
75
-	LEGS_IDLE,				// The legs's idle stand animation
76
-	LEGS_IDLECR,			// The legs's idle crouching animation
77
-	LEGS_TURN				// The legs's turn animation
78
-	//	MD3_ANIM_SIZE
79
-
80
-} md3_animation_id_t;
81
-
82
-typedef struct md3_texture_s
83
-{
84
-	char *name;
85
-	unsigned int name_len;
86
-	int gl_texture_id;
87
-
88
-} md3_texture_t;
89
-
90
-typedef struct md3_animation_s
91
-{
92
-	md3_animation_id_t id;
93
-
94
-	unsigned int first_frame;
95
-	unsigned int end_frame;
96
-	unsigned int num_frames;
97
-	unsigned int looping_frames;
98
-	unsigned int frames_per_second;
99
-
100
-} md3_animation_t;
101
-
102
-
103
-class Md3AnimModel
104
-{
105
- public:
106
-
107
-	enum Md3AnimModelFlags
108
-	{
109
-		fDisableTagInterpolate  = 1,
110
-		fAnimate                = 2,
111
-		fRenderBones            = 4,
112
-		fDrawWeapon             = 8,
113
-		fDisableMeshInterpolate = 16,
114
-		fRenderingWarnings      = 32,
115
-		fUseNormals             = 64
116
-	};
117
-
118
-
119
-	////////////////////////////////////////////////////////////
120
-	// Constructors
121
-	////////////////////////////////////////////////////////////
122
-
123
-	Md3AnimModel();
124
-	/*------------------------------------------------------
125
-	 * Pre  :
126
-	 * Post : Md3AnimModel object is deconstructed
127
-	 *
128
-	 *-- History ------------------------------------------
129
-	 *
130
-	 * 2002.06.19:
131
-	 * Mongoose - Created
132
-	 ------------------------------------------------------*/
133
-
134
-	~Md3AnimModel();
135
-	/*------------------------------------------------------
136
-	 * Pre  : Md3AnimModel object is allocated
137
-	 * Post : Md3AnimModel object is deconstructed
138
-	 *
139
-	 *-- History ------------------------------------------
140
-	 *
141
-	 * 2002.06.19:
142
-	 * Mongoose - Created
143
-	 ------------------------------------------------------*/
144
-
145
-
146
-	////////////////////////////////////////////////////////////
147
-	// Public Accessors
148
-	////////////////////////////////////////////////////////////
149
-
150
-	unsigned int getFlags();
151
-	/*------------------------------------------------------
152
-	 * Pre  :
153
-	 * Post : Gets option flags
154
-	 *
155
-	 *-- History ------------------------------------------
156
-	 *
157
-	 * 2002.12.29:
158
-	 * Mongoose - Created
159
-	 ------------------------------------------------------*/
160
-
161
-	md3_animation_id_t getAnimUpper();
162
-	/*------------------------------------------------------
163
-	 * Pre  :
164
-	 * Post : Get animation for upper model
165
-	 *
166
-	 *-- History ------------------------------------------
167
-	 *
168
-	 * 2002.06.22:
169
-	 * Mongoose - Created
170
-	 ------------------------------------------------------*/
171
-
172
-	md3_animation_id_t getAnimLower();
173
-	/*------------------------------------------------------
174
-	 * Pre  :
175
-	 * Post : Get animation for lower model
176
-	 *
177
-	 *-- History ------------------------------------------
178
-	 *
179
-	 * 2002.06.22:
180
-	 * Mongoose - Created
181
-	 ------------------------------------------------------*/
182
-
183
-
184
-	////////////////////////////////////////////////////////////
185
-	// Public Mutators
186
-	////////////////////////////////////////////////////////////
187
-
188
-	void setFlag(Md3AnimModelFlags flag);
189
-	/*------------------------------------------------------
190
-	 * Pre  :
191
-	 * Post : Sets option flag
192
-	 *
193
-	 *-- History ------------------------------------------
194
-	 *
195
-	 * 2002.12.29:
196
-	 * Mongoose - Created
197
-	 ------------------------------------------------------*/
198
-
199
-	void toggleFlag(Md3AnimModelFlags flag);
200
-	/*------------------------------------------------------
201
-	 * Pre  :
202
-	 * Post : Clear/Set option flag
203
-	 *
204
-	 *-- History ------------------------------------------
205
-	 *
206
-	 * 2002.12.29:
207
-	 * Mongoose - Created
208
-	 ------------------------------------------------------*/
209
-
210
-	void setAnimUpper(md3_animation_id_t anim);
211
-	/*------------------------------------------------------
212
-	 * Pre  :
213
-	 * Post : Animation is set for upper model
214
-	 *
215
-	 *-- History ------------------------------------------
216
-	 *
217
-	 * 2002.06.22:
218
-	 * Mongoose - Created
219
-	 ------------------------------------------------------*/
220
-
221
-	void setAnimLower(md3_animation_id_t anim);
222
-	/*------------------------------------------------------
223
-	 * Pre  :
224
-	 * Post : Animation is set for lower model
225
-	 *
226
-	 *-- History ------------------------------------------
227
-	 *
228
-	 * 2002.06.22:
229
-	 * Mongoose - Created
230
-	 ------------------------------------------------------*/
231
-
232
-	void setDebug(unsigned char level);
233
-	/*------------------------------------------------------
234
-	 * Pre  :
235
-	 * Post : level 0 = errors, 1 = warnings, 2 = debug1
236
-	 *
237
-	 *-- History ------------------------------------------
238
-	 *
239
-	 * 2002.06.19:
240
-	 * Mongoose - Created
241
-	 ------------------------------------------------------*/
242
-
243
-	int load(char *modelPath, char *skin, md3_lod_t modelLoD);
244
-	/*------------------------------------------------------
245
-	 * Pre  : modelPath - Path to directory containg data files
246
-	 *
247
-	 *           eg '/usr/local/games/quake3/qbase3/players/slash'
248
-	 *
249
-	 *        skin - name of skin base to use
250
-	 *
251
-	 *           eg 'default' or 'red' or 'blue' etc
252
-	 *
253
-	 *        modelLoD - Level of detail to use,
254
-	 *
255
-	 * Post : Error code is returned, 0 no error
256
-	 *        Md3s are read into memory
257
-	 *
258
-	 *-- History ------------------------------------------
259
-	 *
260
-	 *
261
-	 * 2002.12.29:
262
-	 * Mongoose - Progressively loads lower LoDs if it can't
263
-	 *            find passed LoD
264
-	 *
265
-	 * 2002.06.19:
266
-	 * Mongoose - Created
267
-	 ------------------------------------------------------*/
268
-
269
-	int loadAnimations(char *modelPath);
270
-	/*------------------------------------------------------
271
-	 * Pre  :
272
-	 * Post : Loads animations for composite model
273
-	 *
274
-	 *-- History ------------------------------------------
275
-	 *
276
-	 * 2002.06.19:
277
-	 * Mongoose - Created
278
-	 ------------------------------------------------------*/
279
-
280
-	int loadWeapon(char *modelPath, const char *name);
281
-	/*------------------------------------------------------
282
-	 * Pre  :
283
-	 * Post : Loads a weapon model
284
-	 *
285
-	 *-- History ------------------------------------------
286
-	 *
287
-	 * 2002.06.19:
288
-	 * Mongoose - Created
289
-	 ------------------------------------------------------*/
290
-
291
-	void render();
292
-	/*------------------------------------------------------
293
-	 * Pre  : Build with USING_OPENGL
294
-	 * Post : Renders entire composite model
295
-	 *
296
-	 *-- History ------------------------------------------
297
-	 *
298
-	 * 2002.06.19:
299
-	 * Mongoose - Created
300
-	 ------------------------------------------------------*/
301
-
302
-	void renderTag(unsigned int id);
303
-	/*------------------------------------------------------
304
-	 * Pre  : Build with USING_OPENGL
305
-	 * Post : Renders tag and it's slaves
306
-	 *
307
-	 *-- History ------------------------------------------
308
-	 *
309
-	 * 2002.06.19:
310
-	 * Mongoose - Created
311
-	 ------------------------------------------------------*/
312
-
313
-	void renderModel(Md3 &model);
314
-	/*------------------------------------------------------
315
-	 * Pre  : Build with USING_OPENGL
316
-	 * Post : Renders single Md3 model
317
-	 *
318
-	 *-- History ------------------------------------------
319
-	 *
320
-	 * 2002.06.19:
321
-	 * Mongoose - Created
322
-	 ------------------------------------------------------*/
323
-
324
-
325
-	unsigned int texNumTest;        /* Number of texTests */
326
-
327
-	md3_texture_t texTest[32];      /* Texture loader/id trans test */
328
-
329
-
330
-private:
331
-
332
-	////////////////////////////////////////////////////////////
333
-	// Private Accessors
334
-	////////////////////////////////////////////////////////////
335
-
336
-
337
-	////////////////////////////////////////////////////////////
338
-	// Private Mutators
339
-	////////////////////////////////////////////////////////////
340
-
341
-	void setCurrentTime(Md3 &model);
342
-	/*------------------------------------------------------
343
-	 * Pre  :
344
-	 * Post : time is set for model animation
345
-	 *
346
-	 *-- History ------------------------------------------
347
-	 *
348
-	 * 2002.06.23:
349
-	 * Mongoose - Created
350
-	 ------------------------------------------------------*/
351
-
352
-	void updateModel(Md3 &model);
353
-	/*------------------------------------------------------
354
-	 * Pre  :
355
-	 * Post : Sets up md3 for next render pass
356
-	 *
357
-	 *-- History ------------------------------------------
358
-	 *
359
-	 * 2002.06.23:
360
-	 * Mongoose - Created, obsoletes old anim arrays
361
-	 ------------------------------------------------------*/
362
-
363
-	void initMd3(Md3 &model, unsigned int id);
364
-	/*------------------------------------------------------
365
-	 * Pre  :
366
-	 * Post : Sets up md3 init animation values
367
-	 *
368
-	 *-- History ------------------------------------------
369
-	 *
370
-	 * 2002.06.23:
371
-	 * Mongoose - Created, obsoletes old anim arrays
372
-	 ------------------------------------------------------*/
373
-
374
-	int addAnim(char *modelPath, md3_animation_id_t id,
375
-					unsigned int firstFrame, unsigned int numFrames,
376
-					unsigned int loopingFrames, unsigned int framesPerSecond);
377
-	/*------------------------------------------------------
378
-	 * Pre  :
379
-	 * Post : Sets up animation array
380
-	 *
381
-	 *-- History ------------------------------------------
382
-	 *
383
-	 * 2002.06.22:
384
-	 * Mongoose - Created, forked off load()
385
-	 ------------------------------------------------------*/
386
-
387
-	int loadMd3(Md3 &model, const char *base, char *modelPath, char *skin,
388
-					md3_lod_t modelLoD);
389
-	/*------------------------------------------------------
390
-	 * Pre  :
391
-	 * Post : Loads model and if given skin
392
-	 *
393
-	 *-- History ------------------------------------------
394
-	 *
395
-	 * 2002.06.22:
396
-	 * Mongoose - Created, forked off load()
397
-	 ------------------------------------------------------*/
398
-
399
-	int loadSkin(Md3 &model, char *filename);
400
-	/*------------------------------------------------------
401
-	 * Pre  :
402
-	 * Post : Loads skin for model
403
-	 *
404
-	 *-- History ------------------------------------------
405
-	 *
406
-	 * 2002.06.19:
407
-	 * Mongoose - Created
408
-	 ------------------------------------------------------*/
409
-
410
-	int loadShader(Md3 &model, char *filename);
411
-	/*------------------------------------------------------
412
-	 * Pre  :
413
-	 * Post : Loads shader for model
414
-	 *
415
-	 *-- History ------------------------------------------
416
-	 *
417
-	 * 2002.06.19:
418
-	 * Mongoose - Created
419
-	 ------------------------------------------------------*/
420
-
421
-	void connectModels(char *tagName, Md3 &modelA, Md3 &modelB);
422
-	/*------------------------------------------------------
423
-	 * Pre  :
424
-	 * Post : Connects models as A slave to B master
425
-	 *
426
-	 *-- History ------------------------------------------
427
-	 *
428
-	 * 2002.06.19:
429
-	 * Mongoose - Created
430
-	 ------------------------------------------------------*/
431
-
432
-	int cacheTexture(char *texture);
433
-	/*------------------------------------------------------
434
-	 * Pre  :
435
-	 * Post : Sets up texture filename caching
436
-	 *
437
-	 *-- History ------------------------------------------
438
-	 *
439
-	 * 2002.06.19:
440
-	 * Mongoose - Created
441
-	 ------------------------------------------------------*/
442
-
443
-	unsigned int mFlags;       /* Model options */
444
-
445
-	Md3 m_head;                /* Head model */
446
-
447
-	Md3 m_upper;               /* Upper body model */
448
-
449
-	Md3 m_lower;               /* Lower body model */
450
-
451
-	Md3 m_weapon;              /* Weapon model */
452
-
453
-	unsigned int m_animCount;  /* Number of animations loaded */
454
-
455
-	unsigned char m_debug;     /* Set level of debug info to stdout */
456
-
457
-	md3_sex_t m_sex;           /* Sex of model */
458
-
459
-	md3_animation_t m_anim[32];        /* This models animation list */
460
-
461
-	md3_animation_id_t m_upperAnim;    /* Current upper model animation */
462
-
463
-	md3_animation_id_t m_lowerAnim;    /* Current lower model animation */
464
-};
465
-
466
-#endif

+ 1
- 30
src/OpenRaider.cpp View File

@@ -28,12 +28,7 @@
28 28
 #include <sys/types.h>
29 29
 
30 30
 #ifdef DEBUG_MEMEORY
31
-#   include "memeory_test.h"
32
-#endif
33
-
34
-#ifdef USING_MD3
35
-#   include "Md3AnimModel.h"
36
-Md3AnimModel gMd3;
31
+#include "memeory_test.h"
37 32
 #endif
38 33
 
39 34
 #include "World.h"
@@ -192,21 +187,6 @@ OpenRaider::~OpenRaider()
192 187
 
193 188
 void eventAnimTest(int anim)
194 189
 {
195
-#ifdef USING_MD3
196
-	switch (anim)
197
-	{
198
-	case TR_ANIAMTION_TURN_R:
199
-	case TR_ANIAMTION_TURN_L:
200
-		//gMd3.setAnimLower(LEGS_TURN);
201
-		break;
202
-	case TR_ANIAMTION_RUN:
203
-		gMd3.setAnimLower(LEGS_RUN);
204
-		break;
205
-	default:
206
-		gMd3.setAnimLower(LEGS_IDLE);
207
-	}
208
-#endif
209
-
210 190
 	if (LARA)
211 191
 	{
212 192
 		SkeletalModel *mdl = (SkeletalModel *)LARA->tmpHook;
@@ -2838,15 +2818,6 @@ void OpenRaider::consoleCommand(char *cmd)
2838 2818
 	{
2839 2819
 		shutdown(0);
2840 2820
 	}
2841
-	else if (rc_command("md3", cmd))
2842
-	{
2843
-#ifdef USING_MD3
2844
-		m_render.loadMd3(cmd, "default");
2845
-		print(true, "\nYou've found an Easter Egg!\n");
2846
-#else
2847
-		print(true, "\nThis build isn't MD3 Easter Egg enabled\n");
2848
-#endif
2849
-	}
2850 2821
 	else if (rc_command("port", cmd))
2851 2822
 	{
2852 2823
 		Network &net = *Network::Instance();

+ 3
- 60
src/Render.cpp View File

@@ -31,20 +31,15 @@
31 31
 #include <string.h>
32 32
 
33 33
 #ifdef USING_EMITTER
34
-#   include "Emitter.h"
34
+#include "Emitter.h"
35 35
 #endif
36 36
 
37 37
 #ifdef DEBUG_MEMEORY
38
-#   include "memeory_test.h"
38
+#include "memeory_test.h"
39 39
 #endif
40 40
 
41 41
 #ifdef DEBUG_GL
42
-#   include "gl_test.cpp"
43
-#endif
44
-
45
-#ifdef USING_MD3
46
-#   include "Md3AnimModel.h"
47
-extern Md3AnimModel gMd3;
42
+#include "gl_test.cpp"
48 43
 #endif
49 44
 
50 45
 #include "Render.h"
@@ -347,48 +342,6 @@ void Render::initTextures(char *textureDir, unsigned int *numLoaded,
347 342
 }
348 343
 
349 344
 
350
-void Render::loadMd3(char *model, char *skin)
351
-{
352
-#ifdef USING_MD3
353
-	char filename[256];
354
-
355
-
356
-	snprintf(filename, 255, "data/models/players/%s", model);
357
-
358
-	if (gMd3.load(filename, skin, MD3_LOD_HIGH) < 0)
359
-	{
360
-		printf("ERROR: MD3 '%s' not loaded\n", filename);
361
-	}
362
-	else
363
-	{
364
-		gMd3.loadWeapon("data/models/weapons2/railgun", "railgun");
365
-		gMd3.loadWeapon("data/models/weapons2/plasma", "plasma");
366
-		gMd3.loadWeapon("data/models/weapons2/machinegun", "machinegun");
367
-		gMd3.setAnimUpper(TORSO_STAND);
368
-		gMd3.setAnimLower(LEGS_WALK);
369
-
370
-		// Setup textures
371
-		for (unsigned int i = 0; i < gMd3.texNumTest; ++i)
372
-		{
373
-			snprintf(filename, 255, "data/%s", gMd3.texTest[i].name);
374
-
375
-			gMd3.texTest[i].gl_texture_id = mTexture.loadTGA(filename);
376
-
377
-			if (gMd3.texTest[i].gl_texture_id < 0)
378
-			{
379
-				printf("ERROR: Md3 texture '%s' not loaded\n", filename);
380
-			}
381
-			else
382
-			{
383
-				(*mNumTexturesLoaded)++;
384
-				(*mNextTextureId) = gMd3.texTest[i].gl_texture_id;
385
-			}
386
-		}
387
-	}
388
-#endif
389
-}
390
-
391
-
392 345
 void Render::initEmitter(const char *name, unsigned int size,
393 346
 								 unsigned int snowTex1, unsigned int snowTex2)
394 347
 {
@@ -1412,17 +1365,7 @@ void Render::drawObjects()
1412 1365
 		glRotated(mCamera->getYaw(), 0, 1, 0);
1413 1366
 #endif
1414 1367
 
1415
-#ifdef USING_MD3
1416
-		glPushMatrix();
1417
-		glTranslated(0, -250, -250);
1418
-		glRotatef(90.0f, 1, 0, 0);
1419
-		glRotatef(90.0f, 0, 0, 1);
1420
-		glScalef(0.15, 0.15, 0.15);
1421
-		gMd3.render();
1422
-		glPopMatrix();
1423
-#else
1424 1368
 		drawModel((SkeletalModel *)LARA->tmpHook);
1425
-#endif
1426 1369
 		glPopMatrix();
1427 1370
 	}
1428 1371
 

+ 0
- 14
src/Render.h View File

@@ -228,20 +228,6 @@ class Render
228 228
 	 * Mongoose - Created, factored out of OpenRaider class
229 229
 	 ------------------------------------------------------*/
230 230
 
231
-	void loadMd3(char *model, char *skin);
232
-	/*------------------------------------------------------
233
-	 * Pre  : model is dir that holds an Md3 model data group
234
-	 *        skin is a skin in that dir
235
-	 *
236
-	 * Post : Loads an Md3 model with animation for a nice
237
-	 *        xmas easter egg that might show up in CVS later
238
-	 *
239
-	 *-- History ------------------------------------------
240
-	 *
241
-	 * 2002.12.25:
242
-	 * Mongoose - Created, factored out of UnRaider class
243
-	 ------------------------------------------------------*/
244
-
245 231
 	void initEmitter(const char *name, unsigned int size,
246 232
 						  unsigned int snowTex1, unsigned int snowTex2);
247 233
 	/*------------------------------------------------------

Loading…
Cancel
Save