mirror of
https://github.com/encounter/ph.git
synced 2026-03-30 11:34:37 -07:00
111 lines
3.3 KiB
C++
111 lines
3.3 KiB
C++
#pragma once
|
|
|
|
#include "global.h"
|
|
#include "types.h"
|
|
|
|
#include "Actor/Actor.hpp"
|
|
#include "Actor/ActorRef.hpp"
|
|
#include "Actor/FilterActorBase.hpp"
|
|
#include "Physics/AABB.hpp"
|
|
#include "Physics/Sphere.hpp"
|
|
|
|
struct ActorManager_UnkStruct_68 {
|
|
/* 0 */ u32 unk_0;
|
|
/* 4 */ u32 unk_4;
|
|
/* 8 */ u32 unk_8;
|
|
/* c */
|
|
};
|
|
|
|
class FilterActor : public FilterActorBase {
|
|
/* 00 (base) */
|
|
/* 04 */ u32 mType;
|
|
/* 08 */ s32 mUnk_08;
|
|
/* 0c */ s32 mUnk_0c;
|
|
/* 10 */ ActorRef *mExcludeRefs; // list of excluded actor ids, terminated by -1
|
|
/* 14 */ bool mExcludeNotInAABB;
|
|
/* 15 */ unk8 mUnk_15[3];
|
|
/* 18 */ AABB mAABB;
|
|
/* 30 */ bool mExcludeNotInSphere;
|
|
/* 31 */ unk8 mUnk_1a[3];
|
|
/* 34 */ Sphere mSphere;
|
|
/* 44 */
|
|
|
|
/* 0 */ virtual bool Filter(Actor *actor) override;
|
|
/* 4 */
|
|
};
|
|
|
|
struct ActorList {
|
|
/* 0 */ ActorRef *actors;
|
|
/* 4 */ s32 capacity;
|
|
/* 8 */ s32 length;
|
|
/* c */
|
|
};
|
|
|
|
class ActorManager {
|
|
public:
|
|
/* 00 */ u16 mMaxActors;
|
|
/* 02 */ u16 mNumActors;
|
|
/* 04 */ unk32 mMaxActorIndex;
|
|
/* 08 */ s32 mCacheEmptyActorIndex;
|
|
/* 0c */ unk32 mNextActorId;
|
|
/* 10 */ Actor **mActorTable;
|
|
/* 14 */ void *mUnk_14;
|
|
/* 18 */ unk8 mUnk_18[4];
|
|
/* 1c */ unk32 mUnk_1c;
|
|
/* 20 */ unk32 mUnk_20;
|
|
/* 24 */ unk32 mUnk_24;
|
|
/* 28 */ unk8 mUnk_28;
|
|
/* 29 */ bool mUnk_29;
|
|
/* 2a */ unk8 mUnk_2a;
|
|
/* 2b */ unk8 mUnk_2b;
|
|
/* 2c */ unk32 mUnk_2c;
|
|
/* 30 */ unk32 mUnk_30;
|
|
/* 34 */ unk32 mUnk_34;
|
|
/* 38 */ unk8 mUnk_38[4];
|
|
/* 3c */ u32 mUnk_3c;
|
|
/* 40 */ unk32 mUnk_40;
|
|
/* 44 */ unk32 mUnk_44;
|
|
/* 48 */ u32 mUnk_48;
|
|
/* 4c */ unk32 mUnk_4c;
|
|
/* 50 */ unk32 mUnk_50;
|
|
/* 54 */ unk8 mUnk_54[4];
|
|
/* 58 */ u32 mUnk_58;
|
|
/* 5c */ unk32 mUnk_5c;
|
|
/* 60 */ unk32 mUnk_60;
|
|
/* 64 */ unk8 mUnk_64[4];
|
|
/* 68 */ ActorManager_UnkStruct_68 mUnk_68[5];
|
|
/* a4 */ unk8 mUnk_a4[0x20];
|
|
/* c4 */
|
|
|
|
void DeleteActor(u32 index, bool param2);
|
|
static void func_ov00_020c3484(ActorRef *ref, ActorManager *actorMgr, unk32 param3);
|
|
void Actor_vfunc_10(u32 param1);
|
|
Actor *FindActorById(s32 id);
|
|
Actor *GetActor(ActorRef *ref);
|
|
s32 FilterActors(FilterActorBase *filter, ActorList *filteredActors);
|
|
static void FindActorByType(ActorRef *ref, ActorManager *actorMgr, ActorTypeId type);
|
|
static void FindNearestActorOfType(ActorRef *ref, ActorManager *actorMgr, ActorTypeId type, Vec3p *pos);
|
|
bool func_ov00_020c398c(u32 index);
|
|
void func_ov00_020c399c(u32 index, Cylinder *cylinder);
|
|
Actor *func_ov00_020c39ac(s32 index, const ActorTypeId *actorTypes, bool param3);
|
|
s32 func_ov00_020c3b2c(s32 *param1);
|
|
s32 func_ov00_020c3bb0(unk32 param1, s32 *param2);
|
|
void func_ov00_020c3ce8(unk32 param1, bool param2);
|
|
void Actor_vfunc_28();
|
|
static bool ActorTypeIsOneOf(ActorTypeId type, const ActorTypeId *types);
|
|
|
|
static void Create();
|
|
static void Destroy();
|
|
ActorManager();
|
|
~ActorManager();
|
|
void func_ov004_0210532c();
|
|
void func_ov004_021053dc();
|
|
void func_ov004_021054a4(s32 *param1, s32 param2, unk32 param3);
|
|
void func_ov004_0210554c();
|
|
bool func_ov004_02105578(unk32 param1);
|
|
bool func_ov004_02105608(unk32 param1, unk32 param2, unk32 param3);
|
|
void func_ov004_021056b8();
|
|
};
|
|
|
|
extern ActorManager *gActorManager;
|