Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
MorsGames
GitHub Repository: MorsGames/sm64plus
Path: blob/master/src/goddard/draw_objects.h
7858 views
1
#ifndef GD_DRAW_OBJECTS_H
2
#define GD_DRAW_OBJECTS_H
3
4
#include <PR/ultratypes.h>
5
6
#include "gd_types.h"
7
#include "macros.h"
8
9
// TODO: make this an enum without causing bss reordering
10
#define COLOUR_BLACK 0
11
#define COLOUR_WHITE 1
12
#define COLOUR_RED 2
13
#define COLOUR_GREEN 3
14
#define COLOUR_BLUE 4
15
#define COLOUR_GRAY 5
16
#define COLOUR_DARK_GRAY 6
17
#define COLOUR_DARK_BLUE 7
18
#define COLOUR_YELLOW 8
19
#define COLOUR_PINK 9
20
#define COLOUR_BLACK2 10 // same as COLOUR_BLACK
21
22
// data
23
extern struct ObjCamera *gViewUpdateCamera;
24
25
// bss
26
// this is unused, but it needs to be declared before gGdLightGroup
27
extern u8 gUnref_801B9B30[0x88];
28
extern struct ObjGroup *gGdLightGroup; // ObjGroup* of ObjLights
29
30
// functions
31
void draw_light(struct ObjLight *light);
32
void draw_material(struct ObjMaterial *mtl);
33
struct GdColour *gd_get_colour(s32 idx);
34
void draw_face(struct ObjFace *face);
35
void draw_label(struct ObjLabel *label);
36
void draw_net(struct ObjNet *self);
37
void draw_gadget(struct ObjGadget *gdgt);
38
void draw_camera(struct ObjCamera *cam);
39
void world_pos_to_screen_coords(struct GdVec3f *pos, struct ObjCamera *cam, struct ObjView *view);
40
void draw_nothing(UNUSED struct GdObj *nop);
41
void draw_particle(struct GdObj *obj);
42
void draw_bone(struct GdObj *obj);
43
void draw_joint(struct GdObj *obj);
44
void draw_group(struct ObjGroup *grp);
45
void draw_plane(struct GdObj *obj);
46
void apply_obj_draw_fn(struct GdObj *obj);
47
void create_gddl_for_shapes(struct ObjGroup *grp);
48
void map_face_materials(struct ObjGroup *faces, struct ObjGroup *mtls);
49
void map_vertices(struct ObjGroup *facegrp, struct ObjGroup *vtxgrp);
50
void update_view(struct ObjView *view);
51
52
#endif // GD_DRAW_OBJECTS_H
53
54