Mario Kart 64
Loading...
Searching...
No Matches
World.h
Go to the documentation of this file.
1#pragma once
2
3#include <libultraship.h>
4#include "CoreMath.h"
6#include "objects/Object.h"
7#include "Cup.h"
8#include "vehicles/Train.h"
9#include "vehicles/Car.h"
10#include "objects/BombKart.h"
11#include "PlayerBombKart.h"
12#include "vehicles/Train.h"
13#include "TrainCrossing.h"
14#include "objects/Thwomp.h"
15#include "objects/Penguin.h"
16#include "objects/Seagull.h"
17#include "objects/Lakitu.h"
18#include <memory>
19#include <unordered_map>
20#include "Actor.h"
21#include "StaticMeshActor.h"
23
24#include "editor/Editor.h"
25#include "editor/GameObject.h"
26
27extern "C" {
28#include "camera.h"
29#include "objects.h"
30};
31
32class Cup; // <-- Forward declaration
33class OObject;
34class Course;
35class StaticMeshActor;
36class AVehicle;
37class OBombKart;
38class TrainCrossing;
39class OLakitu;
40class GameObject; // <-- Editor
41
42class World {
43 typedef struct {
44 std::vector<Mtx> Hud;
45 std::vector<Mtx> Objects;
46 std::vector<Mtx> Shadows;
47 std::vector<Mtx> Karts;
48 std::vector<Mtx> Effects;
49 std::vector<Mtx> Persp;
50 std::vector<Mtx> LookAt;
51 } Matrix;
52
53public:
54 explicit World();
55 ~World();
56
57 std::shared_ptr<Course> AddCourse(std::shared_ptr<Course> course);
58
59 AActor* AddActor(AActor* actor);
60 struct Actor* AddBaseActor();
61 void AddEditorObject(Actor* actor, const char* name);
62 AActor* GetActor(size_t index);
63
64 void TickActors();
67
69 StaticMeshActor* AddStaticMeshActor(std::string name, FVector pos, IRotator rot, FVector scale, std::string model, int32_t* collision);
71
72 OObject* AddObject(OObject* object);
73
74 void TickObjects();
75 void TickObjects60fps();
76 void DrawObjects(s32 cameraId);
77 Object *GetObjectByIndex(size_t);
78
79 void TickParticles();
80 void DrawParticles(s32 cameraId);
82 void Reset(void); // Sets OObjects or AActors static member variables back to default values
83
84 void AddCup(Cup*);
85 void SetCup(Cup* cup);
86 void SetCupIndex(size_t index);
87 const char* GetCupName();
88 u32 GetCupIndex();
89 u32 NextCup();
90 u32 PreviousCup();
91 void SetCourseFromCup();
92
94 void ClearWorld(void);
95
96
97 // These are only for browsing through the course list
98 void SetCourse(const char*);
99 template<typename T>
101 for (const auto& course : Courses) {
102 if (dynamic_cast<T*>(course.get())) {
103 CurrentCourse = course;
104 return;
105 }
106 }
107 printf("World::SetCourseByType() No course by the type found");
108 }
109 void NextCourse(void);
110 void PreviousCourse(void);
111
113
114
115 std::shared_ptr<Course> CurrentCourse;
117
118 std::vector<Cup*> Cups;
119 size_t CupIndex = 1;
120
121 std::vector<StaticMeshActor*> StaticMeshActors;
122 std::vector<AActor*> Actors;
123 std::vector<OObject*> Objects;
124 std::vector<ParticleEmitter*> Emitters;
125
126 std::unordered_map<s32, OLakitu*> Lakitus;
127
129 PlayerBombKart playerBombKart[4]; // Used in battle mode
130
131 TrainCrossing* AddCrossing(Vec3f position, u32 waypointMin, u32 waypointMax, f32 approachRadius, f32 exitRadius);
132 std::vector<std::shared_ptr<TrainCrossing>> Crossings;
133
134 // Holds all available courses
135 std::vector<std::shared_ptr<Course>> Courses;
136 size_t CourseIndex = 0; // For browsing courses.
137private:
138
139};
140
141extern World gWorldInstance;
World gWorldInstance
Definition Game.cpp:75
Definition Actor.h:13
Definition Cup.h:10
Definition BombKart.h:25
Definition Lakitu.h:22
Definition Object.h:10
Definition ParticleEmitter.h:12
Definition PlayerBombKart.h:6
Definition StaticMeshActor.h:9
TrainCrossing class.
Definition TrainCrossing.h:18
Definition World.h:42
std::vector< ParticleEmitter * > Emitters
Definition World.h:124
void TickObjects()
Definition World.cpp:230
void Reset(void)
Definition World.cpp:268
std::unordered_map< s32, OLakitu * > Lakitus
Definition World.h:126
struct Actor * AddBaseActor()
Definition World.cpp:140
void ClearWorld(void)
Definition World.cpp:282
size_t CourseIndex
Definition World.h:136
World * GetWorld(void)
size_t CupIndex
Definition World.h:119
Cup * CurrentCup
Definition World.h:116
void AddCup(Cup *)
Definition World.cpp:37
Actor * ConvertAActorToActor(AActor *actor)
Definition World.cpp:170
std::vector< StaticMeshActor * > StaticMeshActors
Definition World.h:121
std::vector< std::shared_ptr< Course > > Courses
Definition World.h:135
std::vector< std::shared_ptr< TrainCrossing > > Crossings
Definition World.h:132
StaticMeshActor * AddStaticMeshActor(std::string name, FVector pos, IRotator rot, FVector scale, std::string model, int32_t *collision)
Definition World.cpp:189
PlayerBombKart playerBombKart[4]
Definition World.h:129
void PreviousCourse(void)
Definition World.cpp:118
std::vector< OObject * > Objects
Definition World.h:123
OObject * AddObject(OObject *object)
Definition World.cpp:214
void SetCup(Cup *cup)
Definition World.cpp:91
std::vector< AActor * > Actors
Definition World.h:122
void DrawParticles(s32 cameraId)
Definition World.cpp:261
void TickActors()
Definition World.cpp:180
u32 PreviousCup()
Definition World.cpp:75
void AddEditorObject(Actor *actor, const char *name)
Definition World.cpp:149
~World()
Definition World.cpp:25
AActor * ConvertActorToAActor(Actor *actor)
Definition World.cpp:160
void SetCupIndex(size_t index)
Definition World.cpp:87
void NextCourse(void)
Definition World.cpp:109
void DeleteStaticMeshActors()
Definition World.cpp:203
Object * GetObjectByIndex(size_t)
Definition World.cpp:274
std::vector< Cup * > Cups
Definition World.h:118
void TickObjects60fps()
Definition World.cpp:238
TrainCrossing * AddCrossing(Vec3f position, u32 waypointMin, u32 waypointMax, f32 approachRadius, f32 exitRadius)
Definition World.cpp:45
u32 GetCupIndex()
Definition World.cpp:52
void SetCourseFromCup()
Definition World.cpp:41
AActor * GetActor(size_t index)
Definition World.cpp:176
AActor * AddActor(AActor *actor)
Definition World.cpp:127
u32 NextCup()
Definition World.cpp:56
const char * GetCupName()
std::shared_ptr< Course > CurrentCourse
Definition World.h:115
void SetCourseByType()
Definition World.h:100
void SetCourse(const char *)
Definition World.cpp:98
Matrix Mtx
Definition World.h:112
void DrawObjects(s32 cameraId)
Definition World.cpp:249
void DrawStaticMeshActors()
Definition World.cpp:197
void TickParticles()
Definition World.cpp:255
std::shared_ptr< Course > AddCourse(std::shared_ptr< Course > course)
Definition World.cpp:32
ParticleEmitter * AddEmitter(ParticleEmitter *emitter)
Definition World.cpp:244
World()
Definition World.cpp:24
f32 Vec3f[3]
Definition common_structs.h:10
Definition actor_types.h:124
Definition CoreMath.h:18
Definition CoreMath.h:123
Definition objects.h:14
Definition World.h:43
std::vector< Mtx > Effects
Definition World.h:48
std::vector< Mtx > Shadows
Definition World.h:46
std::vector< Mtx > Karts
Definition World.h:47
std::vector< Mtx > Objects
Definition World.h:45
std::vector< Mtx > Hud
Definition World.h:44
std::vector< Mtx > LookAt
Definition World.h:50
std::vector< Mtx > Persp
Definition World.h:49