Files
2026-08-20 04:00:53 -04:00

86 lines
2.5 KiB
C++

#pragma once
#include "Game/Camera/CameraMan.hpp"
#include "Game/Camera/CameraTargetArg.hpp"
class Camera;
class CameraHolder;
class CameraParamChunk;
class CameraParamChunkEvent;
class CameraParamChunkHolder;
#define NR_FIFO_ITEMS 2
class CameraManEvent : public CameraMan {
public:
enum EPriority {
};
class ChunkFIFOItem {
public:
ChunkFIFOItem();
/* 0x00 */ CameraParamChunkEvent* mChunk;
/* 0x04 */ CameraTargetArg mTargetArg;
/* 0x14 */ u32 mFrame;
};
class ChunkFIFOItemPair {
public:
inline ChunkFIFOItemPair() {
}
/* 0x00 */ ChunkFIFOItem mFirst;
/* 0x18 */ ChunkFIFOItem mSecond;
};
CameraManEvent(CameraHolder*, CameraParamChunkHolder*, const char*);
virtual ~CameraManEvent();
virtual void init(const JMapInfoIter&);
virtual void calc();
virtual void notifyActivate();
virtual void notifyDeactivate();
virtual bool isInterpolationOff() const;
virtual bool isCollisionOff() const;
virtual bool isZeroFrameMoveOff() const;
virtual bool isCorrectingErpPositionOff() const;
void start(s32, const char*, const CameraTargetArg&, s32);
void end(s32, const char*, s32);
bool isEventActive(s32, const char*) const;
bool isActive() const;
bool doesNextChunkHaveInterpolation() const;
u32 getAnimCameraFrame(s32, const char*) const;
void pauseOnAnimCamera(s32, const char*);
void pauseOffAnimCamera(s32, const char*);
void updateChunkFIFO();
void applyChunk();
void checkReset(ChunkFIFOItem*);
void changeCamera();
void setExtraParam();
void setVPanParam();
void resetCameraIfRequested();
void setSafePose();
CameraParamChunkEvent* findChunk(s32, const char*) const NO_INLINE;
void requestChunk(CameraParamChunkEvent*, EPriority, const CameraTargetArg&, s32);
bool cleanChunkFIFO(CameraParamChunk*);
bool isChunkFIFOEmpty() const;
void sendStartInterpolateFrame(CameraParamChunkEvent*, s32);
s32 getInterpolateFrame(CameraParamChunkEvent*, s32) const;
void sendFinishInterpolateFrame(CameraParamChunkEvent*, s32);
s32 searchPriority(CameraParamChunk*) const;
bool isInFIFO(CameraParamChunk*) const;
bool isAnimCameraEnd(s32, const char*) const;
/* 0x48 */ CameraHolder* mHolder;
/* 0x4C */ CameraParamChunkHolder* mChunkHolder;
/* 0x50 */ Camera* mCamera;
/* 0x54 */ ChunkFIFOItemPair mItems[NR_FIFO_ITEMS];
/* 0xB4 */ CameraParamChunkEvent* mChunk;
/* 0xB8 */ u32 _B8;
/* 0xBC */ bool mRequestReset;
};