SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
SingleEmitter.cpp
1#include "Game/Effect/EffectSystem.hpp"
2#include "Game/Effect/SingleEmitter.hpp"
3#include "Game/Util/EffectUtil.hpp"
4
5SingleEmitter::SingleEmitter() {
6 mEmitter = nullptr;
7 _4 = 0;
8 mGroupId = 0;
9 mSpawn = SINGLE_EMITTER_UNDEF_SPAWN;
10}
11
12void SingleEmitter::init(u16 unk) {
13 _4 = unk;
14}
15
16void SingleEmitter::deleteEmitter() {
17 if (isValid()) {
18 MR::Effect::deleteParticleEmitter(mEmitter);
19 }
20}
21
22void SingleEmitter::scanParticleEmitter(EffectSystem *pSystem) {
23 ParticleEmitter* emitter;
24 if (mSpawn == SINGLE_EMITTER_UNDEF_SPAWN) {
25 emitter = pSystem->createEmitter(_4, mGroupId, 0);
26 mSpawn = emitter->isContinuousParticle() ? SINGLE_EMITTER_CONTINUOUS_SPAWN : SINGLE_EMITTER_ONE_TIME_SPAWN;
27 pSystem->forceDeleteEmitter(emitter);
28 }
29}
30
31bool SingleEmitter::isOneTime() const {
32 if (mEmitter) {
33 return !mEmitter->isContinuousParticle();
34 } else {
35 return !mSpawn;
36 }
37}
38
39bool SingleEmitter::isValid() const {
40 if (mEmitter == nullptr) {
41 return false;
42 } else {
43 return mEmitter->mManager;
44 }
45}
46
47void SingleEmitter::link(ParticleEmitter *pEmitter) {
48 mEmitter = pEmitter;
49 MR::Effect::setLinkSingleEmitter(pEmitter, this);
50}
51
52void SingleEmitter::unlink() {
53 MR::Effect::setLinkSingleEmitter(mEmitter, nullptr);
54 mEmitter = nullptr;
55}