diff options
| author | MegaMech <inkstudios1@hotmail.com> | 2024-12-16 16:42:17 -0700 |
|---|---|---|
| committer | MegaMech <inkstudios1@hotmail.com> | 2024-12-16 16:42:17 -0700 |
| commit | 60014ec46695fb964a685d6a17d5fc63e02ab7b8 (patch) | |
| tree | 7b7f58cb395ce42008c5e08d30d43eff2de0743d /src/engine/particles | |
| parent | 7f22f75db7fa7a1b2149bc953d2a159c52bc5e8b (diff) | |
More changes
Diffstat (limited to 'src/engine/particles')
| -rw-r--r-- | src/engine/particles/ParticleEmitter.cpp | 13 | ||||
| -rw-r--r-- | src/engine/particles/ParticleEmitter.h | 23 | ||||
| -rw-r--r-- | src/engine/particles/StarEmitter.cpp | 31 | ||||
| -rw-r--r-- | src/engine/particles/StarEmitter.h | 42 |
4 files changed, 109 insertions, 0 deletions
diff --git a/src/engine/particles/ParticleEmitter.cpp b/src/engine/particles/ParticleEmitter.cpp new file mode 100644 index 000000000..5154abf56 --- /dev/null +++ b/src/engine/particles/ParticleEmitter.cpp @@ -0,0 +1,13 @@ +#include <libultraship.h> + +#include "ParticleEmitter.h" + + + +ParticleEmitter::ParticleEmitter() {} + + // Virtual functions to be overridden by derived classes +void ParticleEmitter::Tick() { } +void ParticleEmitter::Draw(s32 cameraId) { } + +bool ParticleEmitter::IsMod() { return false; } diff --git a/src/engine/particles/ParticleEmitter.h b/src/engine/particles/ParticleEmitter.h new file mode 100644 index 000000000..1a71164d1 --- /dev/null +++ b/src/engine/particles/ParticleEmitter.h @@ -0,0 +1,23 @@ +#pragma once + +#include <libultraship.h> + +extern "C" { +#include "macros.h" +#include "main.h" +#include "camera.h" +#include "common_structs.h" + + +class ParticleEmitter { +public: + virtual ~ParticleEmitter() = default; // Virtual destructor for proper cleanup in derived classes + + explicit ParticleEmitter(); + + virtual void Tick(); + virtual void Draw(s32 cameraId); + virtual bool IsMod(); +}; + +}
\ No newline at end of file diff --git a/src/engine/particles/StarEmitter.cpp b/src/engine/particles/StarEmitter.cpp new file mode 100644 index 000000000..b717f177d --- /dev/null +++ b/src/engine/particles/StarEmitter.cpp @@ -0,0 +1,31 @@ + + +#include "StarEmitter.h" + +extern "C" { +#include "render_objects.h" +#include "common_data.h" +#include "code_80057C60.h" +} + +void StarEmitter::Tick() { + +} + +void StarEmitter::Draw(s32 cameraId) { // func_80054BE8 + s32 var_s0; + s32 temp_a0; + Camera* camera; + + camera = &camera1[cameraId]; + gSPDisplayList(gDisplayListHead++, (Gfx*)D_0D007AE0); + load_texture_block_ia8_nomirror(D_8018D488, 0x00000020, 0x00000020); + func_8004B35C(0x000000FF, 0x000000FF, 0, 0x000000FF); + D_80183E80[0] = 0; + for (var_s0 = 0; var_s0 < gObjectParticle3_SIZE; var_s0++) { + temp_a0 = gObjectParticle3[var_s0]; + if ((temp_a0 != -1) && (gObjectList[temp_a0].state >= 2)) { + func_80054AFC(temp_a0, camera->pos); + } + } +} diff --git a/src/engine/particles/StarEmitter.h b/src/engine/particles/StarEmitter.h new file mode 100644 index 000000000..20841598c --- /dev/null +++ b/src/engine/particles/StarEmitter.h @@ -0,0 +1,42 @@ +#pragma once + +#include <libultraship.h> +#include <vector> +#include "ParticleEmitter.h" + +extern "C" { +#include "macros.h" +#include "main.h" +#include "vehicles.h" +#include "waypoints.h" +#include "common_structs.h" +#include "objects.h" +#include "course_offsets.h" +#include "some_data.h" +} + +/** + * Used in the podium ceremony when the trophy appears + */ +class StarEmitter : public ParticleEmitter { +public: + enum Behaviour : uint16_t { + }; + +public: + f32 Diameter = 0.0f; // Waddle in a circle around the spawn point at this diameter. + uint16_t MirrorModeAngleOffset; + + explicit StarEmitter(Vec3f pos); + + virtual void Tick() override; + virtual void Draw(s32 cameraId) override; + void func_80086700(s32 objectIndex); + void func_80086940(s32 objectIndex); + void func_80086C14(s32 objectIndex); + void func_80086C6C(s32 objectIndex); + +private: + + s32 _idx; +}; |
