Mario Kart 64
Loading...
Searching...
No Matches
update.inc.c
Go to the documentation of this file.
1#include <actors.h>
2#include <waypoints.h>
3#include <defines.h>
4#include <main.h>
5#include <actors_extended.h>
6#include <code_800029B0.h>
7
8void func_802B3B44(struct ShellActor *shell) {
9 u16 currentWaypoint;
10 u16 nextWaypoint;
11 f32 temp_f0;
12 f32 temp_f0_2;
13 f32 temp_f0_3;
14 f32 temp_f12_3;
15 f32 temp_f14_2;
16 f32 temp_f16_2;
17 f32 temp_f2;
18 f32 temp_f12;
19 f32 temp_f28;
20 f32 temp_f20;
21 f32 temp_f22;
22 f32 temp_f24;
23 f32 temp_f12_0;
24 f32 temp_f12_1;
25 f32 temp_f12_2;
26 f32 temp_f18_3;
27 f32 temp_f16_3;
28 f32 temp_f26;
29 Vec3f origPos;
30
31 currentWaypoint = shell->pathIndex;
32 temp_f2 = D_80164490[currentWaypoint].posX;
33 temp_f12 = D_80164490[currentWaypoint].posY;
34 temp_f28 = D_80164490[currentWaypoint].posZ;
35 nextWaypoint = currentWaypoint + 1;
36
37 if (nextWaypoint >= D_80164430) {
38 nextWaypoint -= D_80164430;
39 }
40
41 temp_f20 = temp_f2 - shell->pos[0];
42 temp_f22 = temp_f12 - shell->pos[1];
43 temp_f24 = temp_f28 - shell->pos[2];
44 temp_f0 = (temp_f20 * temp_f20) + (temp_f22 * temp_f22) + (temp_f24 * temp_f24);
45 if (temp_f0 > 400.0f) {
46 temp_f18_3 = D_80164490[nextWaypoint].posX;
47 temp_f16_3 = D_80164490[nextWaypoint].posY;
48 temp_f26 = D_80164490[nextWaypoint].posZ;
49
50 temp_f12_0 = temp_f18_3 - shell->pos[0];
51 temp_f12_1 = temp_f16_3 - shell->pos[1];
52 temp_f12_2 = temp_f26 - shell->pos[2];
53
54 temp_f0_3 = (temp_f12_0 * temp_f12_0) + (temp_f12_1 * temp_f12_1) + (temp_f12_2 * temp_f12_2);
55 if (temp_f0_3 < temp_f0) {
56 shell->pathIndex = nextWaypoint;
57 } else {
58 temp_f0_2 = sqrtf(temp_f0) * 4.0f;
59 temp_f20 /= temp_f0_2;
60 temp_f22 /= temp_f0_2;
61 temp_f24 /= temp_f0_2;
62
63 temp_f12_3 = shell->velocity[0];
64 temp_f14_2 = shell->velocity[1];
65 temp_f16_2 = shell->velocity[2];
66
67 temp_f12_3 += temp_f20;
68 temp_f14_2 += temp_f22;
69 temp_f16_2 += temp_f24;
70 temp_f0 = sqrtf((temp_f12_3 * temp_f12_3) + (temp_f14_2 * temp_f14_2) + (temp_f16_2 * temp_f16_2));
71 if (temp_f0 > 6.0f) {
72 temp_f0 /= 6.0f;
73 temp_f12_3 /= temp_f0;
74 temp_f14_2 /= temp_f0;
75 temp_f16_2 /= temp_f0;
76 }
77 shell->velocity[0] = temp_f12_3;
78 shell->velocity[1] = temp_f14_2;
79 shell->velocity[2] = temp_f16_2;
80
81 origPos[0] = shell->pos[0];
82 origPos[1] = shell->pos[1];
83 origPos[2] = shell->pos[2];
84
85 shell->pos[0] += temp_f12_3;
86 shell->pos[1] += temp_f14_2;
87 shell->pos[2] += temp_f16_2;
88 func_802AD950(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], origPos[0], origPos[1], origPos[2]);
89 func_802B4E30((struct Actor *) shell);
90 }
91 } else {
92 if (temp_f0 > 5.0f) {
93 shell->pos[0] = temp_f2;
94 shell->pos[1] = shell->boundingBoxSize + temp_f12;
95 shell->pos[2] = temp_f28;
96 shell->pathIndex = nextWaypoint;
97 } else {
98 temp_f18_3 = D_80164490[nextWaypoint].posX;
99 temp_f16_3 = D_80164490[nextWaypoint].posY;
100 temp_f26 = D_80164490[nextWaypoint].posZ;
101
102 shell->pos[0] = (temp_f2 + temp_f18_3) * 0.5f;
103 shell->pos[1] = ((temp_f12 + temp_f16_3) * 0.5f) + shell->boundingBoxSize;
104 shell->pos[2] = (temp_f28 + temp_f26) * 0.5f;
105
106 shell->velocity[0] = (temp_f18_3 - temp_f2) * 0.5f;
107 shell->velocity[1] = (temp_f16_3 - temp_f12) * 0.5f;
108 shell->velocity[2] = (temp_f26 - temp_f28) * 0.5f;
109 }
110 }
111}
112
113void func_802B3E7C(struct ShellActor *shell, Player *player) {
114 f32 x_velocity;
115 f32 z_velocity;
116 f32 xz_dist;
117 Vec3f newPosition;
118
119 x_velocity = player->pos[0];
120 x_velocity -= shell->pos[0];
121 z_velocity = player->pos[2];
122 z_velocity -= shell->pos[2];
123 xz_dist = sqrtf((x_velocity * x_velocity) + (z_velocity * z_velocity)) / 8;
124 if (xz_dist == 0.0f) {
125 x_velocity = 0.0f;
126 z_velocity = 0.0f;
127 } else {
128 x_velocity /= xz_dist;
129 z_velocity /= xz_dist;
130 }
131
132 newPosition[0] = shell->pos[0];
133 newPosition[1] = shell->pos[1];
134 newPosition[2] = shell->pos[2];
135 shell->pos[0] += x_velocity;
136 shell->pos[1] -= 2.0f;
137 shell->pos[2] += z_velocity;
138 shell->velocity[0] = x_velocity;
139 shell->velocity[1] = -2.0f;
140 shell->velocity[2] = z_velocity;
141
142 if (player->effects & BOO_EFFECT) {
143 destroy_destructable_actor((struct Actor *) shell);
144 } else {
145 func_802AD950(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], newPosition[0], newPosition[1], newPosition[2]);
146 func_802B4E30((struct Actor *) shell);
147 func_802B4104(shell);
148 }
149}
150
155s16 func_802B3FD0(Player *owner, struct ShellActor *shell) {
156 Player *player;
157 s32 playerIndex;
158 f32 playerToShellDistance;
159 s16 playerId = -1;
160 f32 smallestDistance = 25000000.0f;
161
162 for (playerIndex = 0; playerIndex < 4; playerIndex++) {
163 player = &gPlayers[playerIndex];
164 if ((player->type & PLAYER_EXISTS) == 0) {continue;}
165 if (player == owner) {continue; }
166 if (gPlayerBalloonCount[playerIndex] < 0) { continue; }
167 // func_802B51E8 is not quite a 3D distance function, it doubles (rather than squares) the Z difference of the positions
168 playerToShellDistance = func_802B51E8(player->pos, shell->pos);
169 if (playerToShellDistance < smallestDistance) {
170 smallestDistance = playerToShellDistance;
171 playerId = player - gPlayerOne;
172 }
173
174 }
175
176 return playerId;
177}
178
179void func_802B4104(struct ShellActor *shell) {
180 if ((shell->unk30.unk3C[0] < 0.0f) && ((shell->unk30.unk48[1] < 0.25f) || (shell->unk30.unk48[1] > -0.25f))) {
181 destroy_destructable_actor((struct Actor *) shell);
182 func_800C98B8(shell->pos, shell->velocity, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x54));
183 shell->flags |= 0x80;
184 } else if ((shell->unk30.unk3C[1] < 0.0f) && ((shell->unk30.unk54[1] < 0.25f) || (shell->unk30.unk54[1] < -0.25f))) {
185 destroy_destructable_actor((struct Actor *) shell);
186 func_800C98B8(shell->pos, shell->velocity, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x54));
187 shell->flags |= 0x80;
188 }
189}
190
197 UNUSED f32 pad9;
198 Player *player;
199 f32 temp_f0;
201 f32 temp_f2;
202 s16 temp_v0;
203 UNUSED s16 pad3;
205 struct Controller *controller;
207 UNUSED f32 pad0;
208 UNUSED f32 pad1;
209 UNUSED f32 pad2;
225
226 pad1 = shell->pos[0];
227 pad0 = shell->pos[2];
228 pad2 = shell->pos[1];
229 pad13 = shell->type;
230 if ((pad0 < (f32) gCourseMinZ) || ((f32) gCourseMaxZ < pad0) || (pad1 < (f32) gCourseMinX) || ((f32) gCourseMaxX < pad1) || (pad2 < (f32) gCourseMinY)) {
232 }
233
234 shell->rotVelocity += 0x71C;
235 switch (shell->state) {
236 case HELD_SHELL:
237 player = &gPlayers[shell->playerId];
238 copy_collision(&player->unk_110, &shell->unk30);
239 somePosVel[0] = 0.0f;
240 somePosVel[1] = player->boundingBoxSize;
241 somePosVel[2] = -(player->boundingBoxSize + shell->boundingBoxSize + 2.0f);
243 shell->pos[0] = player->pos[0] + somePosVel[0];
244 pad7 = player->pos[1] - somePosVel[1];
245 shell->pos[2] = player->pos[2] + somePosVel[2];
246 temp_f0 = func_802ABE30(shell->pos[0], pad7, shell->pos[2], player->unk_110.unk3A);
247 temp_f2 = pad7 - temp_f0;
248
249 if ((temp_f2 < 5.0f) && (temp_f2 > -5.0f)) {
250 shell->pos[1] = shell->boundingBoxSize + temp_f0;
251 } else {
252 shell->pos[1] = pad7;
253 }
254
255 if ((player->type & PLAYER_HUMAN) != 0) {
256 if (gDemoMode) {
258 } else {
259 controller = &gControllers[shell->playerId];
260 }
261 } else {
263 }
264
265 if ((controller->buttonDepressed & Z_TRIG) != 0) {
267 shell->state = RELEASED_SHELL;
268 if (player->unk_0C0 > 0) {
269 shell->rotAngle = 0x78E3;
270 } else {
271 shell->rotAngle = -0x78E4;
272 }
273 }
274 break;
275 case RELEASED_SHELL:
276 player = &gPlayers[shell->playerId];
277 if (shell->rotAngle > 0) {
278 shell->rotAngle -= 0x71C;
279 if (shell->rotAngle < 0) {
280 shell->state = MOVING_SHELL;
281 func_800C9060(shell->playerId, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x04));
282 func_800C90F4(shell->playerId, (player->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x00));
283 if (pad13 == ACTOR_RED_SHELL) {
285 } else {
287 func_800C9D80(shell->pos, shell->velocity, SOUND_ARG_LOAD(0x51, 0x01, 0x80, 0x08));
288 }
289 }
290 } else {
291 shell->rotAngle += 0x71C;
292 if (shell->rotAngle > 0) {
293 shell->state = MOVING_SHELL;
294 func_800C9060(shell->playerId, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x04));
295 func_800C90F4(shell->playerId, (player->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x00));
296 if (pad13 == ACTOR_RED_SHELL) {
298 } else {
300 func_800C9D80(shell->pos, shell->velocity, SOUND_ARG_LOAD(0x51, 0x01, 0x80, 0x08));
301 }
302 }
303 }
304 if (shell->state == MOVING_SHELL) {
305 shell->someTimer = 0x001E;
306 temp_f0 = 8.0f;
307 if (player->unk_094 > 8.0f) {
308 temp_f0 = player->unk_094 * 1.2f;
309 }
310 somePosVel[0] = 0.0f;
311 somePosVel[1] = 0.0f;
312 somePosVel[2] = temp_f0;
313 func_802B64C4(somePosVel, (s16) (player->rotation[1] + player->unk_0C0));
314 shell->velocity[0] = somePosVel[0];
315 shell->velocity[1] = somePosVel[1];
316 shell->velocity[2] = somePosVel[2];
317 } else {
318 somePosVel[0] = sins(shell->rotAngle) * 8.0f;
319 somePosVel[1] = shell->boundingBoxSize - player->boundingBoxSize;
320 somePosVel[2] = coss(shell->rotAngle) * 8.0f;
322 shell->pos[0] = player->pos[0] + somePosVel[0];
323 shell->pos[1] = player->pos[1] + somePosVel[1];
324 shell->pos[2] = player->pos[2] + somePosVel[2];
325 }
326 break;
327 case MOVING_SHELL:
328 player = &gPlayers[shell->playerId];
329 shell->someTimer -= 1;
330 if (shell->someTimer == 0) {
331 shell->flags &= 0xEFFF;
332 if (shell->type == ACTOR_BLUE_SPINY_SHELL) {
333 shell->targetPlayer = gPlayerPositionLUT[0];
334 shell->state = BLUE_SHELL_LOCK_ON;
335 shell->shellId = 1000.0f;
337 if ((s32) D_80164430 < temp_v0) {
339 }
340 shell->pathIndex = temp_v0;
341 } else if (gModeSelection == BATTLE) {
342 shell->shellId = 1000.0f;
343 shell->targetPlayer = func_802B3FD0(player, shell);
344 if (shell->targetPlayer < 0) {
345 shell->flags = 0x8000;
346 shell->velocity[1] = 3.0f;
347 shell->pathIndex = 0;
348 shell->someTimer = 0x003C;
349 shell->state = DESTROYED_SHELL;
350 } else {
351 shell->state = RED_SHELL_LOCK_ON;
352 }
353 } else {
354 if (player->currentRank == 0) {
355 shell->state = TRIPLE_GREEN_SHELL;
356 shell->someTimer = 0x0258;
358 if ((s32) D_80164430 < temp_v0) {
360 }
361 shell->pathIndex = temp_v0;
362 } else if (player->currentRank >= 5) {
364 shell->shellId = 1000.0f;
366 if ((s32) D_80164430 < temp_v0) {
368 }
369 shell->pathIndex = temp_v0;
370 shell->targetPlayer = gPlayerPositionLUT[player->currentRank - 1];
371 } else {
372 shell->state = RED_SHELL_LOCK_ON;
373 shell->shellId = 1000.0f;
374 shell->targetPlayer = gPlayerPositionLUT[player->currentRank - 1];
375 }
376 }
377 }
378 shell->velocity[1] -= 0.5;
379 if (shell->velocity[1] < -2.0f) {
380 shell->velocity[1] = -2.0f;
381 }
382 origPos[0] = shell->pos[0];
383 origPos[1] = shell->pos[1];
384 origPos[2] = shell->pos[2];
385 shell->pos[0] += shell->velocity[0];
386 shell->pos[1] += shell->velocity[1];
387 shell->pos[2] += shell->velocity[2];
388 func_802AD950(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], origPos[0], origPos[1], origPos[2]);
389 func_802B4E30((struct Actor *) shell);
391 break;
393 func_802B3E7C(shell, &gPlayers[shell->targetPlayer]);
394 break;
397 if (shell->someTimer == 0) {
398 if ((shell->flags & 0xF) == 0) {
400 } else {
401 shell->someTimer -= 1;
402 }
403 }
404 break;
407 player = &gPlayers[shell->targetPlayer];
408 temp_f0 = player->pos[0];
409 temp_f0 -= shell->pos[0];
410 temp_f2 = player->pos[2];
411 temp_f2 -= shell->pos[2];
412 if (((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) < 40000.0f) {
413 shell->state = RED_SHELL_LOCK_ON;
414 }
415 break;
416 case TRIPLE_RED_SHELL:
417 player = &gPlayers[shell->playerId];
418 parent = (TripleShellParent *) &gActorList[shell->parentIndex];
419 if (parent->type != ACTOR_TRIPLE_RED_SHELL) {
421 } else {
422 shell->rotAngle += parent->rotVelocity;
423 somePosVel[0] = sins(shell->rotAngle) * 8.0f;
424 somePosVel[1] = shell->boundingBoxSize - player->boundingBoxSize;
425 somePosVel[2] = coss(shell->rotAngle) * 8.0f;
427 origPos[0] = shell->pos[0];
428 origPos[1] = shell->pos[1];
429 origPos[2] = shell->pos[2];
430 shell->pos[0] = player->pos[0] + somePosVel[0];
431 shell->pos[1] = player->pos[1] + somePosVel[1];
432 shell->pos[2] = player->pos[2] + somePosVel[2];
433 func_802AD950(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], origPos[0], origPos[1], origPos[2]);
434 func_802B4E30((struct Actor *) shell);
435 }
436 break;
437 case DESTROYED_SHELL:
438 shell->velocity[1] -= 0.3f;
439 if (shell->velocity[1] < -5.0f) {
440 shell->velocity[1] = -5.0f;
441 }
442 shell->rotAngle += 0x5B0;
443 shell->someTimer -= 1;
444 shell->pos[1] += shell->velocity[1];
445 if (shell->someTimer == 0) {
446 destroy_actor((struct Actor *) shell);
447 }
448 break;
451 shell->targetPlayer = gPlayerPositionLUT[0];
452 player = &gPlayers[gPlayerPositionLUT[0]];
453 temp_f0 = player->pos[0];
454 temp_f0 -= shell->pos[0];
455 temp_f2 = player->pos[2];
456 temp_f2 -= shell->pos[2];
457 if (((temp_f0 * temp_f0) + (temp_f2 * temp_f2)) < 40000.0f) {
459 }
460 break;
461 case 9:
462 func_802B3E7C(shell, &gPlayers[shell->targetPlayer]);
463 break;
464 default:
465 break;
466 }
467}
@ ACTOR_BLUE_SPINY_SHELL
Definition actor_types.h:80
@ ACTOR_RED_SHELL
Definition actor_types.h:46
@ ACTOR_TRIPLE_RED_SHELL
Definition actor_types.h:60
@ DESTROYED_SHELL
Definition actor_types.h:100
@ MOVING_SHELL
Definition actor_types.h:95
@ HELD_SHELL
Definition actor_types.h:93
@ TRIPLE_RED_SHELL
Definition actor_types.h:99
@ BLUE_SHELL_TARGET_ELIMINATED
Definition actor_types.h:102
@ RELEASED_SHELL
Definition actor_types.h:94
@ GREEN_SHELL_HIT_A_RACER
Definition actor_types.h:98
@ TRIPLE_GREEN_SHELL
Definition actor_types.h:97
@ BLUE_SHELL_LOCK_ON
Definition actor_types.h:101
@ RED_SHELL_LOCK_ON
Definition actor_types.h:96
void destroy_destructable_actor(struct Actor *actor)
Definition actors.c:1814
void destroy_actor(struct Actor *actor)
Definition actors.c:1291
void func_802B4E30(struct Actor *arg0)
Definition actors_extended.c:962
void copy_collision(Collision *arg0, Collision *arg1)
Definition actors_extended.c:19
void func_802B3E7C(struct ShellActor *shell, Player *player)
Definition update.inc.c:113
void func_802B3B44(struct ShellActor *shell)
Definition update.inc.c:8
void func_802B4104(struct ShellActor *shell)
Definition update.inc.c:179
void update_actor_red_blue_shell(struct ShellActor *shell)
Update the red and blue shell actors.
Definition update.inc.c:196
s16 func_802B3FD0(Player *owner, struct ShellActor *shell)
Definition update.inc.c:155
s16 gCourseMinZ
Definition code_800029B0.c:93
s16 gCourseMaxZ
Definition code_800029B0.c:92
s16 gCourseMinX
Definition code_800029B0.c:87
struct Actor gActorList[ACTOR_LIST_SIZE]
Definition code_800029B0.c:148
s16 gCourseMinY
Definition code_800029B0.c:90
s16 gCourseMaxX
Definition code_800029B0.c:86
s16 gPlayerPositionLUT[8]
Definition code_800029B0.c:144
s32 add_red_shell_in_unexpired_actor_list(s32 actorIndex)
Definition code_80005FD0.c:3253
TrackWaypoint * D_80164490
Definition code_80005FD0.c:166
u16 gNearestWaypointByPlayerId[12]
Definition code_80005FD0.c:162
s32 add_blue_shell_in_unexpired_actor_list(s32 arg0)
Definition code_80005FD0.c:3269
u16 D_80164430
Definition code_80005FD0.c:161
s16 gPlayerBalloonCount[8]
Definition code_80057C60_var.c:232
u16 func_802AD950(Collision *collision, f32 boundingBoxSize, f32 x1, f32 y1, f32 z1, f32 x2, f32 y2, f32 z2)
Definition collision.c:1233
f32 func_802ABE30(f32 x, f32 y, f32 z, u16 index)
Definition collision.c:520
f32 Vec3f[3]
Definition common_structs.h:6
#define BOO_EFFECT
Definition defines.h:371
#define BATTLE
Definition defines.h:137
#define PLAYER_EXISTS
Definition defines.h:100
#define PLAYER_HUMAN
Definition defines.h:99
void func_800C9060(u8 playerId, u32 soundBits)
Definition external.c:2894
void func_800C90F4(u8 playerId, u32 soundBits)
Definition external.c:2906
void func_800C9D80(Vec3f position, Vec3f velocity, u32 soundBits)
Definition external.c:3134
void func_800C98B8(Vec3f position, Vec3f velocity, u32 soundBits)
Definition external.c:3049
#define UNUSED
Definition macros.h:24
Player * gPlayerOne
Definition main.c:74
Player gPlayers[NUM_PLAYERS]
Definition main.c:73
struct Controller gControllers[NUM_PLAYERS]
Definition main.c:63
u16 gDemoMode
Definition main.c:173
struct Controller * gControllerOne
Definition main.c:64
s32 gModeSelection
Definition main.c:182
float sqrtf(float)
f32 sins(u16 arg0)
Definition math_util.c:1055
void func_802B64C4(Vec3f arg0, s16 arg1)
Definition math_util.c:606
f32 func_802B51E8(Vec3f arg0, Vec3f arg1)
Definition math_util.c:71
void mtxf_translate_vec3f_mat3(Vec3f pos, Mat3 mat)
Definition math_util.c:572
f32 coss(u16 arg0)
Definition math_util.c:1059
#define Z_TRIG
Definition os.h:398
#define SOUND_ARG_LOAD(sound_bank, byte2, byte3, sound_id)
Definition sounds.h:14
Definition actor_types.h:120
Vec3f velocity
Definition actor_types.h:130
s16 flags
Definition actor_types.h:122
Vec3f pos
Definition actor_types.h:129
Vec3f unk3C
Definition common_structs.h:146
u16 unk30
Definition common_structs.h:139
u16 unk3A
Definition common_structs.h:145
Vec3f unk54
Definition common_structs.h:148
Vec3f unk48
Definition common_structs.h:147
Definition common_structs.h:71
u16 buttonDepressed
Definition common_structs.h:76
Definition common_structs.h:269
s16 unk_0C0
Definition common_structs.h:321
Collision unk_110
Definition common_structs.h:346
f32 unk_094
Definition common_structs.h:306
Mat3 orientationMatrix
Definition common_structs.h:348
u16 characterId
Definition common_structs.h:376
u32 effects
Definition common_structs.h:320
Vec3s rotation
Definition common_structs.h:283
f32 boundingBoxSize
Definition common_structs.h:296
u16 type
Definition common_structs.h:270
s16 currentRank
Definition common_structs.h:272
Vec3f pos
Definition common_structs.h:279
Definition actor_types.h:302
f32 boundingBoxSize
Definition actor_types.h:315
Vec3f velocity
Definition actor_types.h:324
Vec3f pos
Definition actor_types.h:323
Collision unk30
Definition actor_types.h:325
u16 pathIndex
Definition actor_types.h:319
s16 posZ
Definition waypoints.h:9
s16 posY
Definition waypoints.h:8
s16 posX
Definition waypoints.h:7
Definition actor_types.h:286
s16 type
Definition actor_types.h:287
signed int s32
Definition ultratypes.h:15
signed short int s16
Definition ultratypes.h:13
float f32
Definition ultratypes.h:33
unsigned short int u16
Definition ultratypes.h:14