2022-11-08 23:04:51 +00:00
|
|
|
#ifndef _CSCRIPTWORLDTELEPORTER
|
|
|
|
#define _CSCRIPTWORLDTELEPORTER
|
|
|
|
|
|
|
|
#include "MetroidPrime/CEntity.hpp"
|
|
|
|
|
|
|
|
#include "MetroidPrime/CAnimationParameters.hpp"
|
|
|
|
|
|
|
|
#include "Kyoto/Math/CVector3f.hpp"
|
|
|
|
|
|
|
|
class CScriptWorldTeleporter : public CEntity {
|
|
|
|
public:
|
|
|
|
CScriptWorldTeleporter(TUniqueId uid, const rstl::string& name, const CEntityInfo& info,
|
|
|
|
bool active, CAssetId worldId, CAssetId areaId);
|
|
|
|
CScriptWorldTeleporter(TUniqueId uid, const rstl::string& name, const CEntityInfo& info,
|
|
|
|
bool active, CAssetId worldId, CAssetId areaId, CAssetId playerAncs,
|
|
|
|
uint charIdx, uint defaultAnim, const CVector3f& playerScale,
|
|
|
|
CAssetId platformModel, const CVector3f& platformScale,
|
|
|
|
CAssetId backgroundModel, const CVector3f& backgroundScale,
|
|
|
|
bool upElevator, ushort soundId, uchar volume, uchar panning);
|
|
|
|
CScriptWorldTeleporter(TUniqueId uid, const rstl::string& name, const CEntityInfo& info,
|
2022-11-16 21:19:24 +00:00
|
|
|
bool active, CAssetId worldId, CAssetId areaId, int soundId,
|
2022-11-08 23:04:51 +00:00
|
|
|
uchar volume, uchar panning, CAssetId fontId, CAssetId stringId,
|
|
|
|
bool fadeWhite, float charFadeIn, float charsPerSecond, float showDelay);
|
|
|
|
~CScriptWorldTeleporter();
|
|
|
|
|
|
|
|
void Accept(IVisitor&) override;
|
|
|
|
void AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CStateManager& mgr) override;
|
|
|
|
void StartTransition(CStateManager&);
|
|
|
|
|
|
|
|
bool GetFadeWhite() const { return x40_27_fadeWhite; }
|
|
|
|
|
|
|
|
private:
|
|
|
|
enum ETeleporterType { kTT_NoTransition, kTT_Elevator, kTT_Text };
|
|
|
|
|
|
|
|
CAssetId x34_worldId;
|
|
|
|
CAssetId x38_areaId;
|
|
|
|
ETeleporterType x3c_type; // = ETeleporterType::NoTransition;
|
|
|
|
bool x40_24_upElevator : 1; // = false;
|
|
|
|
bool x40_25_inTransition : 1; // = false;
|
|
|
|
bool x40_26_ : 1;
|
|
|
|
bool x40_27_fadeWhite : 1; // = false;
|
|
|
|
float x44_charFadeIn; // = 0.1f;
|
|
|
|
float x48_charsPerSecond; // = 8.0f;
|
|
|
|
float x4c_showDelay; // = 0.0f;
|
|
|
|
CAnimationParameters x50_playerAnim;
|
|
|
|
CVector3f x5c_playerScale;
|
|
|
|
CAssetId x68_platformModel;
|
|
|
|
CVector3f x6c_platformScale;
|
|
|
|
CAssetId x78_backgroundModel;
|
|
|
|
CVector3f x7c_backgroundScale;
|
|
|
|
ushort x88_soundId; // = -1;
|
|
|
|
uchar x8a_volume; // = 0;
|
|
|
|
uchar x8b_panning; // = 0;
|
|
|
|
CAssetId x8c_fontId;
|
|
|
|
CAssetId x90_stringId;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // _CSCRIPTWORLDTELEPORTER
|