convert line ends
[canaan.git] / prj / cam / src / dark / crspider.c
blob181c65a00f24ab1ec541150029e98dac5268872e
1 /*
2 @Copyright Looking Glass Studios, Inc.
3 1996,1997,1998,1999,2000 Unpublished Work.
4 */
6 // $Header: r:/t2repos/thief2/src/dark/crspider.c,v 1.11 1998/10/23 01:49:15 CCAROLLO Exp $
8 #include <creatur_.h>
9 #include <crspider.h>
10 #include <drkcret.h> // to get actor type definition
12 #include <dbmem.h> // must be last included header
14 // Joints
15 #define base 0
16 #define lmand 1
17 #define lmelbow 2
18 #define rmand 3
19 #define rmelbow 4
20 #define r1shldr 5
21 #define r1elbow 6
22 #define r1wrist 7
23 #define r2shldr 8
24 #define r2elbow 9
25 #define r2wrist 10
26 #define r3shldr 11
27 #define r3elbow 12
28 #define r3wrist 13
29 #define r4shldr 14
30 #define r4elbow 15
31 #define r4wrist 16
32 #define l1shldr 17
33 #define l1elbow 18
34 #define l1wrist 19
35 #define l2shldr 20
36 #define l2elbow 21
37 #define l2wrist 22
38 #define l3shldr 23
39 #define l3elbow 24
40 #define l3wrist 25
41 #define l4shldr 26
42 #define l4elbow 27
43 #define l4wrist 28
44 #define r1finger 29
45 #define r2finger 30
46 #define r3finger 31
47 #define r4finger 32
48 #define l1finger 33
49 #define l2finger 34
50 #define l3finger 35
51 #define l4finger 36
52 #define ltip 37
53 #define rtip 38
55 // mapping from joint id to exposed joint enum
56 static int g_aSpidJointMap[] =
58 -1,
59 0, // head
60 -1,
61 -1,
63 -1,
64 -1,
65 -1,
66 -1,
67 -1,
68 -1,
69 -1,
70 -1,
71 -1,
72 -1,
73 -1,
74 -1,
75 -1,
76 -1,
77 -1,
78 -1,
79 -1,
82 #define SPIDER_LEG_PHYS_RADIUS 0.3
84 static sCrPhysModOffset g_SwordPhysOffsets[] = \
86 {l1wrist, l1finger, 0.0, SPIDER_LEG_PHYS_RADIUS},
87 {l1wrist, l1finger, 0.8, SPIDER_LEG_PHYS_RADIUS},
88 {r1wrist, r1finger, 0.0, SPIDER_LEG_PHYS_RADIUS},
89 {r1wrist, r1finger, 0.8, SPIDER_LEG_PHYS_RADIUS},
92 static sCrPhysModOffsetTable g_WeaponPhysTable = \
94 sizeof(g_SwordPhysOffsets)/sizeof(g_SwordPhysOffsets[0]), g_SwordPhysOffsets
97 static sCrPhysModOffset g_aPhysModOffsets[] = \
99 { base, base, 0.0, 0.8},
100 { base, lmand, -2.6, 0.7 },
101 { base, rmand, -2.6, 0.7 },
105 // array of mappings from jointIDs -> parent jointIDs
106 static int g_aSpidJointParents[] =
108 base, // base
109 base, // lmand
110 lmand, // lmelbow
111 base, // rmand
112 rmand, // rmelbow
113 base, // r1shldr
114 r1shldr, // r1elbow
115 r1elbow, // r1wrist
116 base, // r2shldr
117 r2shldr, // r2elbow
118 r2elbow, // r2wrist
119 base, // r3shldr
120 r3shldr, // r3elbow
121 r3elbow, // r3wrist
122 base, // r4shldr
123 r4shldr, // r4elbow
124 r4elbow, // r4wrist
125 base, // l1shldr
126 l1shldr, // l1elbow
127 l1elbow, // l1wrist
128 base, // l2shldr
129 l2shldr, // l2elbow
130 l2elbow, // l2wrist
131 base, // l3shldr
132 l3shldr, // l3elbow
133 l3elbow, // l3wrist
134 base, // l4shldr
135 l4shldr, // l4elbow
136 l4elbow, // l4wrist
139 // @TODO: finish filling these out for real
141 static torso g_aDefTorsos[]= {\
142 {base,-1,3,{lmand,rmand,r1shldr}},
143 {base,-1,3,{r2shldr,r3shldr,r4shldr}},
144 {base,-1,3,{l1shldr,l1shldr,l3shldr}},
145 {base,-1,1,{l4shldr}},
148 static limb g_aDefLimbs[]= {\
149 {0,1,2,{rmand,rmelbow,rtip}},
150 {0,1,2,{lmand,lmelbow,ltip}},
151 {0,1,3,{r1shldr,r1elbow,r1wrist,r1finger}},
152 {0,1,3,{r2shldr,r2elbow,r2wrist,r2finger}},
153 {0,1,3,{r3shldr,r3elbow,r3wrist,r3finger}},
154 {0,1,3,{r4shldr,r4elbow,r4wrist,r4finger}},
155 {0,1,3,{l1shldr,l1elbow,l1wrist,l1finger}},
156 {0,1,3,{l2shldr,l2elbow,l2wrist,l2finger}},
157 {0,1,3,{l3shldr,l3elbow,l3wrist,l3finger}},
158 {0,1,3,{l4shldr,l4elbow,l4wrist,l4finger}},
161 static int g_FootJoints[]={ r1finger, l1finger };
163 const sCreatureDesc sCrSpiderDesc = \
165 kDATYPE_Spider, // actor type
166 4, // num torsos
167 10, // num limbs
168 39, // num joints
169 "spidey7", // default lengths filename
170 sizeof(g_aPhysModOffsets)/sizeof(g_aPhysModOffsets[0]), // number of phys models
171 1.5, // default phys radius
172 g_aPhysModOffsets, // array of phys model offsets
173 g_aSpidJointParents, // joint parent mapping
174 g_aSpidJointMap,
175 sizeof(g_FootJoints)/sizeof(g_FootJoints[0]), // num feet
176 g_FootJoints, // foot joints
177 g_aDefTorsos, // default torso values (if lengths file not found)
178 g_aDefLimbs, // default limb values (if lengths file not found)
179 kDCrWeap_NumWeapons, // number of weapons
180 &g_WeaponPhysTable, // weapon physics model offsets
181 FALSE, // always ballistic
182 FALSE, // uses head tracking