mirror of
https://github.com/PodeCaradox/GalaxyQuest-SteamFrame.git
synced 2026-10-18 22:01:24 +02:00
The sources of Petari (https://github.com/SMGCommunity/Petari), the Super Mario Galaxy decompilation by the SMGCommunity, at commit 0a5c6608dc3b4c44a9aa68c2535d1793dc565f02, unchanged but for LF line endings: LICENSE (as LICENSE-Petari.txt; CC0 1.0), include/, libs/ and src/. Left out: the game data Petari keeps from the original executable, the error message archive (include/Game/System/ ErrorArchive.hpp) and two tables (src/Game/System/GalaxyID.bcsv and StoryEvent.bcsv); GalaxyQuest's converter takes them from the player's own disc. The port's changes follow in the next commit, so `git diff petari-base -- decomp` shows them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
120 lines
3.4 KiB
C++
120 lines
3.4 KiB
C++
#pragma once
|
|
|
|
#include "Game/Util/Array.hpp"
|
|
#include <JSystem/JGeometry/TVec.hpp>
|
|
|
|
class AutoEffectInfo;
|
|
class EffectSystem;
|
|
class JPAParticleCallBack;
|
|
class MultiEmitterCallBack;
|
|
class MultiEmitterCallBackBase;
|
|
class MultiEmitterParticleCallBack;
|
|
class ParticleEmitter;
|
|
class SingleEmitter;
|
|
class SyncBckEffectInfo;
|
|
class XanimePlayer;
|
|
|
|
class MultiEmitter {
|
|
public:
|
|
MultiEmitter(const char*, const TVec3f*, const TVec3f*, const TVec3f*, const TVec3f&);
|
|
MultiEmitter(const char*, MtxPtr, const TVec3f&);
|
|
MultiEmitter(const char*, MtxPtr, const TVec3f*, const TVec3f&);
|
|
MultiEmitter(const char*);
|
|
|
|
void createEmitter();
|
|
void createEmitterWithCallBack(MultiEmitterCallBackBase*);
|
|
|
|
void deleteEmitter();
|
|
void forceDeleteEmitter();
|
|
void forceDelete(EffectSystem*);
|
|
void deleteForeverEmitter();
|
|
void playCalcAndDeleteForeverEmitter();
|
|
|
|
bool isValid() const;
|
|
bool isExistOneTimeEmitter() const;
|
|
|
|
void setHostSRT(const TVec3f*, const TVec3f*, const TVec3f*);
|
|
void setHostMtx(MtxPtr);
|
|
void setOffset(const TVec3f&);
|
|
void setBaseScale(f32);
|
|
void setName(const char*);
|
|
bool isEqualName(u16) const;
|
|
|
|
ParticleEmitter* getParticleEmitter(int) const;
|
|
void create(EffectSystem*);
|
|
void scanParticleEmitter(EffectSystem*);
|
|
|
|
void forceFollowOn();
|
|
void forceFollowOff();
|
|
void forceScaleOn();
|
|
|
|
void initSyncBck(XanimePlayer*, const char*, s32, f32);
|
|
void onDeleteSyncBck(bool, f32);
|
|
void addSyncBck(const XanimePlayer*, const char*);
|
|
void setContinueBckEnd(bool);
|
|
void onCreateSyncClipping();
|
|
void onForceDeleteSyncClipping();
|
|
void stopEmitterOnClipped();
|
|
void playEmitterOffClipped();
|
|
|
|
void setDrawOrder(s32);
|
|
|
|
void addChildEmitter(MultiEmitter*);
|
|
|
|
void setGlobalRotationDegree(const TVec3f&, s32);
|
|
|
|
void allocateEmitter(const char*);
|
|
SingleEmitter* getValidEmitter(s32, bool);
|
|
void createOneTimeEmitter();
|
|
void createForeverEmitter();
|
|
|
|
// In MultiEmitterAccess
|
|
void setGlobalRotation(const TVec3s&, s32);
|
|
void setGlobalTranslation(const TVec3f&, s32);
|
|
void setGlobalScale(const TVec3f&, s32);
|
|
void setGlobalSRTMatrix(const Mtx, s32);
|
|
void setGlobalPrmColor(u8, u8, u8, s32);
|
|
void setGlobalEnvColor(u8, u8, u8, s32);
|
|
void setLocalScale(const TVec3f&, s32);
|
|
void setDirectionalSpeed(f32, s32);
|
|
void setRate(f32, s32);
|
|
void stopCalcEmitter(s32);
|
|
void playCalcEmitter(s32);
|
|
void stopDrawParticle(s32);
|
|
void playDrawParticle(s32);
|
|
void setParticleCallBackPtr(JPAParticleCallBack*, s32);
|
|
void pauseOff(s32);
|
|
|
|
// In MarioEffect
|
|
void setGlobalScale(f32, s32);
|
|
|
|
inline bool isFlagOn(u16 flag) const {
|
|
u16 mask = mFlags & flag;
|
|
return mask == flag;
|
|
}
|
|
|
|
inline bool isFlagOff(u16 flag) const {
|
|
u16 mask = mFlags & flag;
|
|
return mask != flag;
|
|
}
|
|
|
|
inline void turnFlagOn(u16 flag) {
|
|
mFlags |= flag;
|
|
}
|
|
|
|
inline void turnFlagOff(u16 flag) {
|
|
mFlags &= ~flag;
|
|
}
|
|
|
|
/* 0x00 */ MR::AssignableArray< SingleEmitter > mEmitters;
|
|
/* 0x08 */ MR::Vector< MR::FixedArray< MultiEmitter*, 4 > > mChildren;
|
|
/* 0x1C */ MultiEmitterCallBack* mCallBack;
|
|
/* 0x20 */ MultiEmitterParticleCallBack* mParticleCallBack;
|
|
/* 0x24 */ SyncBckEffectInfo* _24;
|
|
/* 0x28 */ const AutoEffectInfo* _28;
|
|
/* 0x2C */ f32 _2C;
|
|
/* 0x30 */ f32 _30;
|
|
/* 0x34 */ u16 mHash;
|
|
/* 0x36 */ u8 mFlags;
|
|
};
|