Mario Kart 64
Loading...
Searching...
No Matches
render.inc.c
Go to the documentation of this file.
1#include <actors.h>
2#include <main.h>
5
13void render_actor_falling_rock(Camera* camera, struct FallingRock* rock) {
14 Vec3s sp98;
15 Vec3f sp8C;
16 Mat4 mtx;
17 f32 height;
18 UNUSED s32 pad[4];
19
20 if (rock->respawnTimer != 0) {
21 return;
22 }
23
24 height = is_within_render_distance(camera->pos, rock->pos, camera->rot[1], 400.0f, gCameraZoom[camera - camera1],
25 4000000.0f);
26
27 if (CVarGetInteger("gNoCulling", 0) == 1) {
28 height = CLAMP(height, 0.0f, 250000.0f);
29 }
30
31 if (height < 0.0f) {
32 return;
33 }
34
35 if (height < 250000.0f) {
36
37 if (rock->unk30.unk34 == 1) {
38 sp8C[0] = rock->pos[0];
39 sp8C[2] = rock->pos[2];
40 height = calculate_surface_height(sp8C[0], rock->pos[1], sp8C[2], rock->unk30.meshIndexZX);
41 sp98[0] = 0;
42 sp98[1] = 0;
43 sp98[2] = 0;
44 sp8C[1] = height + 2.0f;
45
46 FrameInterpolation_RecordOpenChild("rock_shadow", (uintptr_t) rock);
47 mtxf_pos_rotation_xyz(mtx, sp8C, sp98);
48 if (render_set_position(mtx, 0) == 0) {
50 return;
51 }
52 gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_dl_6F88);
54 }
55 }
56
57 // @port: Tag the transform.
58 FrameInterpolation_RecordOpenChild("rock", (uintptr_t) rock);
59
60 mtxf_pos_rotation_xyz(mtx, rock->pos, rock->rot);
61 if (render_set_position(mtx, 0) == 0) {
62 // @port Pop the transform id.
64 return;
65 }
66 gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_dl_falling_rock);
67
68 // @port Pop the transform id.
70}
void FrameInterpolation_RecordOpenChild(const void *a, uintptr_t b)
Definition FrameInterpolation.cpp:646
void FrameInterpolation_RecordCloseChild(void)
Definition FrameInterpolation.cpp:656
void gSPDisplayList(Gfx *pkt, Gfx *dl)
Definition GBIMiddleware.cpp:11
Camera * camera1
Definition camera.c:29
f32 calculate_surface_height(f32 x, f32 y, f32 z, u16 index)
Definition collision.c:462
f32 Vec3f[3]
Definition common_structs.h:10
s16 Vec3s[3]
Definition common_structs.h:15
f32 Mat4[4][4]
Definition common_structs.h:20
void render_actor_falling_rock(Camera *camera, struct FallingRock *rock)
Renders the falling rock actor. Actor used in Choco Mountain.
Definition render.inc.c:13
#define CLAMP(var, min, max)
Definition macros.h:138
#define UNUSED
Definition macros.h:26
Gfx * gDisplayListHead
Definition main.c:136
f32 gCameraZoom[4]
Definition main.c:126
s32 render_set_position(Mat4 mtx, s32 arg1)
Definition math_util.c:54
f32 is_within_render_distance(Vec3f cameraPos, Vec3f objectPos, u16 orientationY, f32 minDistance, f32 fov, f32 maxDistance)
Definition math_util.c:1100
void mtxf_pos_rotation_xyz(Mat4 out, Vec3f pos, Vec3s orientation)
Definition math_util.c:450
Mat4 mtx
Definition render_objects.c:4163
Definition camera.h:27
Vec3s rot
Definition camera.h:34
Vec3f pos
Definition camera.h:28
u16 unk34
Definition common_structs.h:150
u16 meshIndexZX
Definition common_structs.h:154
Definition actor_types.h:181
Collision unk30
Definition actor_types.h:192
s16 respawnTimer
Definition actor_types.h:184
Vec3s rot
Definition actor_types.h:188
Vec3f pos
Definition actor_types.h:190