Files
sms/include/Camera/CubeManagerBase.hpp
2026-11-03 02:22:25 +03:00

92 lines
2.2 KiB
C++

#ifndef CAMERA_CUBE_MANAGER_BASE_HPP
#define CAMERA_CUBE_MANAGER_BASE_HPP
#include <Camera/CubeMapTool.hpp>
#include <Strategic/NameRefPtrAry.hpp>
#include <JSystem/JDrama/JDRViewObj.hpp>
#include <JSystem/JGadget/std-vector.hpp>
#include <dolphin/mtx.h>
class TCubeManagerBase;
extern TCubeManagerBase* gpCubeCamera;
extern TCubeManagerBase* gpCubeMirror;
extern TCubeManagerBase* gpCubeWire;
extern TCubeManagerBase* gpCubeStream;
extern TCubeManagerBase* gpCubeShadow;
extern TCubeManagerBase* gpCubeSoundChange;
extern TCubeManagerBase* gpCubeSoundEffect;
class TCubeManagerBase : public JDrama::TViewObj {
public:
TCubeManagerBase(const char*, const char*);
TCubeManagerBase(const char*, u8);
// fabricated
void initializer();
virtual ~TCubeManagerBase() { }
virtual void load(JSUMemoryInputStream& stream);
virtual void perform(u32 cue, JDrama::TGraphics* graphics);
s32 getDataNo(s32) const;
int getInCubeNo(const Vec&) const;
bool isInCube(const Vec&, s32) const;
bool isInCube(const Vec&, const char*) const;
void calcPointInCubeRatio(const Vec&, s32, float*, float*, float*) const;
// fabricated
TCubeGeneralInfo* getCubeInfo(s32 no) const { return unk14->begin()[no]; }
public:
/* 0x10 */ u8 unk10;
/* 0x14 */ TNameRefPtrAryT<TCubeGeneralInfo>* unk14;
/* 0x18 */ const char* unk18;
};
class TCubeManagerMarioIn : public TCubeManagerBase {
public:
TCubeManagerMarioIn(const char* param_1, const char* param_2)
: TCubeManagerBase(param_1, param_2)
, unk1C(-1)
{
}
/* 0x1C */ int unk1C;
};
class TCubeManagerArea;
extern TCubeManagerArea* gpCubeArea;
class TCubeManagerArea : public TCubeManagerMarioIn {
public:
TCubeManagerArea(const char* param_1, const char* param_2)
: TCubeManagerMarioIn(param_1, param_2)
{
}
bool isInAreaCube(const Vec&) const;
};
class TCubeManagerFast;
extern TCubeManagerFast* gpCubeFastA;
extern TCubeManagerFast* gpCubeFastB;
extern TCubeManagerFast* gpCubeFastC;
class TCubeManagerFast : public TCubeManagerMarioIn {
public:
TCubeManagerFast(const char* param_1, const char* param_2)
: TCubeManagerMarioIn(param_1, param_2)
{
}
bool isInOtherCube(const Vec&) const;
};
bool SMS_IsInOtherFastCube(const Vec&);
bool SMS_IsInSameCameraCube(const Vec&);
#endif