1 #include "csg.h"
2
3 vec3_t g_hull_size[NUM_HULLS][2] =
4 {
5 {// 0x0x0
6 {0, 0, 0}, {0, 0, 0}
7 }
8 ,
9 {// 32x32x72
10 {-16, -16, -36}, {16, 16, 36}
11 }
12 ,
13 {// 64x64x64
14 {-32, -32, -32}, {32, 32, 32}
15 }
16 ,
17 {// 32x32x36
18 {-16, -16, -18}, {16, 16, 18}
19 }
20 };
21
LoadHullfile(const char * filename)22 void LoadHullfile(const char* filename)
23 {
24 if (filename == NULL)
25 {
26 return;
27 }
28
29 if (q_exists(filename))
30 {
31 Log("Loading hull definitions from '%s'\n", filename);
32 }
33 else
34 {
35 Error("Could not find hull definition file '%s'\n", filename);
36 return;
37 }
38
39 float x1,y1,z1;
40 float x2,y2,z2;
41 char magic;
42
43 FILE* file = fopen(filename, "r");
44
45 int count;
46 int i;
47
48 magic = (char)fgetc(file);
49 rewind(file);
50
51 if(magic == '(')
52 { // Test for old-style hull-file
53
54 for (i=0; i < NUM_HULLS; i++)
55 {
56 count = fscanf(file, "( %f %f %f ) ( %f %f %f )\n", &x1, &y1, &z1, &x2, &y2, &z2);
57 if (count != 6)
58 {
59 Error("Could not parse old hull definition file '%s' (%d, %d)\n", filename, i, count);
60 }
61
62 g_hull_size[i][0][0] = x1;
63 g_hull_size[i][0][1] = y1;
64 g_hull_size[i][0][2] = z1;
65
66 g_hull_size[i][1][0] = x2;
67 g_hull_size[i][1][1] = y2;
68 g_hull_size[i][1][2] = z2;
69
70 }
71
72 }
73 else
74 {
75 // Skip hull 0 (visibile polygons)
76 for (i=1; i<NUM_HULLS; i++)
77 {
78 count = fscanf(file, "%f %f %f\n", &x1, &y1, &z1);
79 if (count != 3)
80 {
81 Error("Could not parse new hull definition file '%s' (%d, %d)\n", filename, i, count);
82 }
83 x1 *= 0.5;
84 y1 *= 0.5;
85 z1 *= 0.5;
86
87 g_hull_size[i][0][0] = -x1;
88 g_hull_size[i][0][1] = -y1;
89 g_hull_size[i][0][2] = -z1;
90
91 g_hull_size[i][1][0] = x1;
92 g_hull_size[i][1][1] = y1;
93 g_hull_size[i][1][2] = z1;
94 }
95 }
96
97 fclose(file);
98 }