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 }