183 using BoneAngles = std::array<glm::vec3, kArmHoldBoneCount>;
187 static const std::array<glm::vec3, kGripPoseJointCount> k_rightFingers{{
188 {30.0f, 20.0f, 0.0f}, {35.0f, 0.0f, 0.0f}, {25.0f, 0.0f, 0.0f}, {10.0f, 0.0f, 0.0f},
189 {25.0f, 0.0f, 0.0f}, {40.0f, 0.0f, 0.0f}, {35.0f, 0.0f, 0.0f}, {15.0f, 0.0f, 0.0f},
190 {55.0f, 0.0f, 0.0f}, {75.0f, 0.0f, 0.0f}, {70.0f, 0.0f, 0.0f}, {30.0f, 0.0f, 0.0f},
191 {60.0f, 0.0f, 0.0f}, {80.0f, 0.0f, 0.0f}, {70.0f, 0.0f, 0.0f}, {30.0f, 0.0f, 0.0f},
192 {60.0f, 0.0f, 0.0f}, {80.0f, 0.0f, 0.0f}, {70.0f, 0.0f, 0.0f}, {30.0f, 0.0f, 0.0f},
194 static const std::array<glm::vec3, kGripPoseJointCount> k_leftFingers{{
195 {35.0f, -20.0f, 0.0f}, {40.0f, 0.0f, 0.0f}, {30.0f, 0.0f, 0.0f}, {10.0f, 0.0f, 0.0f},
196 {65.0f, 0.0f, 0.0f}, {80.0f, 0.0f, 0.0f}, {70.0f, 0.0f, 0.0f}, {30.0f, 0.0f, 0.0f},
197 {70.0f, 0.0f, 0.0f}, {85.0f, 0.0f, 0.0f}, {70.0f, 0.0f, 0.0f}, {30.0f, 0.0f, 0.0f},
198 {70.0f, 0.0f, 0.0f}, {85.0f, 0.0f, 0.0f}, {70.0f, 0.0f, 0.0f}, {30.0f, 0.0f, 0.0f},
199 {65.0f, 0.0f, 0.0f}, {85.0f, 0.0f, 0.0f}, {70.0f, 0.0f, 0.0f}, {30.0f, 0.0f, 0.0f},
202 auto make = [&](glm::vec3 offset,
float scale, BoneAngles right, BoneAngles left,
float yawDeg = 0.0f) {
205 p.
spineRotation = glm::angleAxis(glm::radians(yawDeg), glm::vec3(0.0f, 1.0f, 0.0f));
214 static const std::array<WeaponHoldPose, kRenderableWeaponTypeCount> k_params{{
216 make({-21.0f, 23.5f, 66.25f},
218 {{{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 44.0f}, {-107.0f, -7.0f, 13.0f}, {-1.0f, 24.0f, -41.0f}}},
219 {{{24.0f, 0.0f, 0.0f}, {36.0f, 0.0f, 48.0f}, {71.0f, -3.0f, 6.0f}, {-11.0f, -46.0f, -23.0f}}}),
221 make({-21.0f, -28.25f, 28.75f},
223 {{{0.0f, 0.0f, 0.0f}, {0.0f, 42.0f, 18.0f}, {-155.0f, 4.0f, 9.0f}, {6.0f, 106.0f, -62.0f}}},
224 {{{24.0f, 0.0f, 0.0f}, {40.0f, -16.0f, 46.0f}, {103.0f, -3.0f, 5.0f}, {-6.0f, -57.0f, -41.0f}}}),
226 make({-21.0f, -18.0f, 66.25f},
228 {{{0.0f, 0.0f, 0.0f}, {0.0f, 0.0f, 44.0f}, {-107.0f, -7.0f, 13.0f}, {-1.0f, 24.0f, -41.0f}}},
229 {{{24.0f, 0.0f, 0.0f}, {36.0f, 0.0f, 48.0f}, {71.0f, -3.0f, 6.0f}, {-11.0f, -46.0f, -23.0f}}}),
231 make({-21.0f, 3.25f, 80.0f},
233 {{{0.0f, -14.0f, 0.0f}, {0.0f, 0.0f, 35.0f}, {-120.0f, 5.0f, 7.0f}, {13.0f, 53.0f, -27.0f}}},
234 {{{24.0f, 0.0f, 0.0f}, {36.0f, 0.0f, 48.0f}, {71.0f, -3.0f, 6.0f}, {-11.0f, -123.0f, -21.0f}}}),
236 make({-21.0f, -7.75f, 80.0f},
238 {{{0.0f, -14.0f, 0.0f}, {0.0f, 0.0f, 35.0f}, {-120.0f, 5.0f, 7.0f}, {13.0f, 53.0f, -27.0f}}},
239 {{{24.0f, 0.0f, 0.0f}, {36.0f, 0.0f, 48.0f}, {71.0f, -3.0f, 6.0f}, {-11.0f, -123.0f, -21.0f}}},
243 return k_params[
static_cast<std::size_t
>(type)];
252 .rightArm = {.shoulderOffset = {20.0f, -22.0f, -38.0f},
253 .elbowOffset = {14.0f, -12.0f, -22.0f},
254 .palm = {.offset = {2.5f, -4.0f, -7.0f}, .rotationDegrees = {0.0f, 0.0f, 0.0f}},
256 {.offset = {0.5f, -2.8f, -5.0f}, .rotationDegrees = {0.0f, 0.0f, 0.0f}},
257 {.offset = {1.0f, -2.0f, -3.5f}, .rotationDegrees = {0.0f, 0.0f, 0.0f}},
258 {.offset = {2.0f, -2.3f, -4.0f}, .rotationDegrees = {0.0f, 0.0f, 0.0f}},
259 {.offset = {3.0f, -2.6f, -4.5f}, .rotationDegrees = {0.0f, 0.0f, 0.0f}},
260 {.offset = {4.0f, -2.9f, -5.0f}, .rotationDegrees = {0.0f, 0.0f, 0.0f}},
262 .leftArm = {.shoulderOffset = {-28.0f, -23.0f, -24.0f},
263 .elbowOffset = {-20.0f, -13.0f, -4.0f},
264 .palm = {.offset = {-8.0f, -4.5f, 13.0f}, .rotationDegrees = {0.0f, 0.0f, 0.0f}},
266 {.offset = {-6.0f, -3.2f, 10.5f}, .rotationDegrees = {0.0f, 0.0f, 0.0f}},
267 {.offset = {-8.5f, -2.2f, 15.0f}, .rotationDegrees = {0.0f, 0.0f, 0.0f}},
268 {.offset = {-8.0f, -2.4f, 16.0f}, .rotationDegrees = {0.0f, 0.0f, 0.0f}},
269 {.offset = {-7.2f, -2.8f, 16.2f}, .rotationDegrees = {0.0f, 0.0f, 0.0f}},
270 {.offset = {-6.5f, -3.2f, 15.6f}, .rotationDegrees = {0.0f, 0.0f, 0.0f}},
273 static const std::array<FirstPersonHandMountParams, kRenderableWeaponTypeCount> k_params{{
286 return k_params[
static_cast<std::size_t
>(type)];
293 .scale = {20.0f, 20.0f, 20.0f},
294 .translation = {0.0f, 10.0f, 0.0f},
298 .spinDegreesPerSecond = 45.0f,
299 .bobAmplitude = 6.0f,
303 return k_grenadeParams;
306 static const std::array<WeaponSpawnerModelParams, kRenderableWeaponTypeCount> k_params{{
308 {.scale = {16.0f, 16.0f, 16.0f},
309 .translation = {0.0f, 16.0f, 0.0f},
313 .spinDegreesPerSecond = 45.0f,
314 .bobAmplitude = 6.0f,
317 {.scale = {15.0f, 15.0f, 15.0f},
318 .translation = {0.0f, -25.0f, -4.0f},
322 .spinDegreesPerSecond = 45.0f,
323 .bobAmplitude = 6.0f,
326 {.scale = {15.0f, 15.0f, 15.0f},
327 .translation = {0.0f, -5.0f, 0.0f},
331 .spinDegreesPerSecond = 45.0f,
332 .bobAmplitude = 6.0f,
335 {.scale = {10.0f, 10.0f, 10.0f},
336 .translation = {0.0f, 2.0f, 0.0f},
340 .spinDegreesPerSecond = 45.0f,
341 .bobAmplitude = 6.0f,
344 {.scale = {30.0f, 30.0f, 30.0f},
345 .translation = {0.0f, 2.0f, 0.0f},
349 .spinDegreesPerSecond = 45.0f,
350 .bobAmplitude = 6.0f,
354 return k_params[
static_cast<std::size_t
>(type)];