actor_info OK

This commit is contained in:
robojumper
2025-06-07 14:06:23 +02:00
parent ac94c5f0ef
commit b53bafeeb4
11 changed files with 1736 additions and 858 deletions
+17 -19
View File
@@ -17,6 +17,7 @@
#include "f/f_list_nd.h"
#include "m/m_angle.h"
#include "m/m_vec.h"
#include "toBeSorted/actor_info.h"
#include "toBeSorted/event.h"
#include "toBeSorted/event_manager.h"
#include "toBeSorted/file_manager.h"
@@ -33,13 +34,10 @@ mVec3_c *dAcBase_c::s_Create_Position;
mAng3_c *dAcBase_c::s_Create_Rotation;
mVec3_c *dAcBase_c::s_Create_Scale;
dAcBase_c *dAcBase_c::s_Create_Parent;
ObjInfo *dAcBase_c::s_Create_ObjInfo;
const ActorInfo *dAcBase_c::s_Create_ActorInfo;
u8 dAcBase_c::s_Create_Subtype;
extern "C" ObjInfo *getObjByActorIdAndSubtype_unkNamespace(ProfileName, u8);
extern "C" ObjInfo *getObjByActorName_unkNamespace(char *name);
extern "C" char *getObjectName_8006a730(ObjInfo *);
extern "C" SoundSource *soundForActorInitRelated_803889c0(s8, fBase_c *, char *, u8);
extern "C" SoundSource *soundForActorInitRelated_803889c0(s8, fBase_c *, const char *, u8);
bool dAcBase_c::createHeap() {
return true;
@@ -50,7 +48,7 @@ bool dAcBase_c::createHeap() {
// 8002c3b0
dAcBase_c::dAcBase_c()
: heap_allocator(),
obj_info(s_Create_ObjInfo),
mpActorInfo(s_Create_ActorInfo),
sound_list(),
obj_pos(&position),
params2(s_Create_Params2),
@@ -82,8 +80,8 @@ dAcBase_c::dAcBase_c()
fProfile::fActorProfile_c *profile = (fProfile::fActorProfile_c *)((*fProfile::sProfileList)[profile_name]);
actor_properties = profile->mActorProperties;
if (obj_info == nullptr) {
obj_info = getObjByActorIdAndSubtype_unkNamespace(profile_name, actor_subtype);
if (mpActorInfo == nullptr) {
mpActorInfo = getActorInfoByProfileAndSubtype(profile_name, actor_subtype);
}
someStr[0] = '\0';
}
@@ -98,7 +96,7 @@ dAcBase_c::~dAcBase_c() {}
void dAcBase_c::setTempCreateParams(
mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, s32 roomId, u32 params2, dAcBase_c *parent, u8 subtype, u16 unkFlag,
s8 viewClipIdx, ObjInfo *objInfo
s8 viewClipIdx, const ActorInfo *actorInfo
) {
s_Create_Position = pos;
s_Create_Rotation = rot;
@@ -109,22 +107,22 @@ void dAcBase_c::setTempCreateParams(
s_Create_Subtype = subtype;
s_Create_UnkFlags = unkFlag;
s_Create_ViewClipIdx = viewClipIdx;
s_Create_ObjInfo = objInfo;
s_Create_ActorInfo = actorInfo;
}
// has regswap
SoundSource *dAcBase_c::FUN_8002c690() {
if (obj_info == nullptr) {
if (mpActorInfo == nullptr) {
return nullptr;
}
s32 unk_val = obj_info->unk_0xA;
if (unk_val == -1) {
s32 soundSourceCategory = mpActorInfo->soundSourceCategory;
if (soundSourceCategory == -1) {
return nullptr;
}
char *objName = getObjectName_8006a730(obj_info);
return soundForActorInitRelated_803889c0(unk_val, this, objName, subtype);
const char *objName = getActorName(mpActorInfo);
return soundForActorInitRelated_803889c0(soundSourceCategory, this, objName, subtype);
}
int dAcBase_c::initAllocatorWork1Heap(int size, char *name, int align) {
@@ -344,16 +342,16 @@ u32 dAcBase_c::getParams2Lower() const {
// 8002d020
dAcBase_c *dAcBase_c::findActor(char *objName, dAcBase_c *parent) {
ObjInfo *objInfo = getObjByActorName_unkNamespace(objName);
if (objInfo == nullptr) {
const ActorInfo *actorInfo = getActorInfoByName(objName);
if (actorInfo == nullptr) {
return nullptr;
} else {
do {
parent = (dAcBase_c *)fManager_c::searchBaseByProfName(objInfo->obj_id, parent);
parent = (dAcBase_c *)fManager_c::searchBaseByProfName(actorInfo->profileId, parent);
if (parent == nullptr) {
break;
}
} while (parent->actor_subtype != objInfo->subtype);
} while (parent->actor_subtype != actorInfo->subtype);
}
return parent;
}