Various imps

This commit is contained in:
2022-08-05 03:23:49 -07:00
parent 7cd80cf53b
commit 7043befead
22 changed files with 981 additions and 126 deletions

View File

@@ -0,0 +1,46 @@
#ifndef __COBJECTLIST_HPP__
#define __COBJECTLIST_HPP__
#define kMaxObjects 1024
enum EGameObjectList {
kGOL_Invalid = -1,
kGOL_All,
kGOL_Actor,
kGOL_PhysicsActor,
kGOL_GameCamera,
kGOL_GameLight,
kGOL_ListeningAi,
kGOL_AiWaypoint,
kGOL_PlatformAndDoor,
};
class CEntity;
class CObjectList {
struct SObjectListEntry {
CEntity* mEnt;
s16 mNext;
s16 mPrev;
SObjectListEntry();
};
public:
CObjectList(EGameObjectList list);
bool IsQualified(CEntity& ent);
void AddObject(CEntity& ent);
void RemoveObject(TUniqueId uid);
CEntity* GetObjectById();
const CEntity* GetObjectById() const;
CEntity* GetValidObjectById(TUniqueId uid);
const CEntity* GetValidObjectById(TUniqueId uid) const;
CEntity* operator[](s32 idx);
const CEntity* operator[](s32 idx) const;
const CEntity* GetValidObjectByIndex(s32 idx) const;
s32 size() const { return mCount; }
private:
SObjectListEntry mObjects[1024];
EGameObjectList mListType;
s16 mFirstId = -1;
s16 mCount = 0;
}
#endif // __COBJECTLIST_HPP__

View File

@@ -0,0 +1,32 @@
#ifndef __CBALLCAMERA_HPP__
#define __CBALLCAMERA_HPP__
class CBallCamera {
public:
enum EBallCameraState {
kBCS_Default,
kBCS_One,
kBCS_Chase,
kBCS_Boost,
kBCS_ToBall,
kBCS_FromBall,
};
enum EBallCameraBehaviour {
kBCB_Default,
kBCB_FreezeLookPosition, // Unused
kBCB_HintBallToCam,
kBCB_HintInitializePosition,
kBCB_HintFixedPosition,
kBCB_HintFixedTransform,
kBCB_PathCameraDesiredPos, // Unused
kBCB_PathCamera,
kBCB_SpindleCamera,
};
enum ESplineState {
kSS_Invalid,
kSS_Nav,
kSS_Arc,
};
};
#endif // __CBALLCAMERA_HPP__

View File

@@ -0,0 +1,38 @@
#ifndef __CCAMERAHINT_HPP__
#define __CCAMERAHINT_HPP__
#include "types.h"
#include "MetroidPrime/Cameras/CBallCamera.hpp"
#include "Kyoto/Math/CVector3f.hpp"
class CCameraHint {
public:
CCameraHint(u32 overrideFlags, CBallCamera::EBallCameraBehaviour behaviour, f32 minDist, f32 maxDist,
f32 backwardsDist, const CVector3f& lookAtOffset, const CVector3f& chaseLookAtOffset,
const CVector3f& ballToCam, f32 fov, f32 attitudeRange, f32 azimuthRange,
f32 anglePerSecond, f32 clampVelRange, f32 clampRotRange, f32 elevation, f32 interpolateTime,
f32 clampVelTime, f32 controlInterpDur);
virtual ~CCameraHint();
private:
u32 mOverrideFlags;
CBallCamera::EBallCameraBehaviour mBehaviour;
f32 mMinDist;
f32 mMaxDist;
f32 mBackwardsDist;
CVector3f mLookAtOffset;
CVector3f mChaseLookAtOffset;
CVector3f mBallToCam;
f32 mFov;
f32 mAttitudeRange;
f32 mAzimuthRange;
f32 mAnglePerSecond;
f32 mClampVelRange;
f32 mClampRotRange;
f32 mElevation;
f32 mInterpolateTime;
f32 mClampVelTime;
f32 mControlInterpDur;
};
#endif // __CCAMERAHINT_HPP__