Fully decompile EFSB actor (#128)

* feat: update

* feat: update

* feat: decompiling actor efsb

* refactor!: refrefactor to do in the future

* style: better looking function
This commit is contained in:
Alessevan
2026-08-11 08:09:53 -04:00
committed by GitHub
parent a05f3d38d0
commit b2a553262f
11 changed files with 120 additions and 71 deletions
+51 -10
View File
@@ -1,8 +1,14 @@
//! TODO: This file was generated automatically and might contain errors
#include "Actor/ActorUnkEFSB.hpp"
#include "System/SysNew.hpp"
extern "C" unk32 func_01ffb428(unk32, unk32);
extern "C" void func_01ffc634(ModelRender *, VecFx32 *, UnkAngleStruct, VecFx32 *);
static ActorUnkZLSL_AnimationTag data_ov031_02114ed0[0x2] = {
{.index = 0x0, .name = "statue_beam"},
{.index = 0x1, .name = "statue_beam"},
};
DECL_PROFILE(ActorProfileUnkEFSB);
Actor *ActorProfileUnkEFSB::Create() {
@@ -12,13 +18,48 @@ Actor *ActorProfileUnkEFSB::Create() {
ActorProfileUnkEFSB::ActorProfileUnkEFSB() :
ActorProfile_Derived1(ActorId_EFSB) {}
ActorUnkEFSB::ActorUnkEFSB() {}
ActorUnkEFSB::ActorUnkEFSB() :
mUnk_098(G3d_GetModelPtr(GET_PROFILE(ActorProfileUnkEFSB)->mUnk_3C.mUnk_50)),
mUnk_0F8(&this->mUnk_0F8.mUnk_1C, &this->mUnk_098, GET_PROFILE(ActorProfileUnkEFSB)->vfunc_04()),
mUnk_154(&this->mUnk_154.mUnk_1C, &this->mUnk_098, GET_PROFILE(ActorProfileUnkEFSB)->vfunc_04()) {}
void ActorUnkEFSB::func_ov031_020fb614(void) {}
void ActorUnkEFSB::func_ov031_020fb6cc(void) {}
void ActorUnkEFSB::func_ov031_020fb704(void) {}
void ActorUnkEFSB::func_ov031_020fb718(void) {}
void ActorUnkEFSB::func_ov031_020fb720(void) {}
bool ActorUnkEFSB::vfunc_18(unk32 param1) {
this->mUnk_0F8.vfunc_1C(data_ov031_02114ed0[0], 0x1000, 0x11F, 0x0);
this->mUnk_154.func_ov000_02099f8(data_ov031_02114ed0[0], 0x1000);
ActorUnkEFSB::~ActorUnkEFSB() {}
ActorProfileUnkEFSB::~ActorProfileUnkEFSB() {}
this->mUnk_1B0 = this->mUnk_5C.mParams[0] << 0xC;
if (this->mUnk_1B0 == 0) {
this->mUnk_1B0 = 0x1000;
}
this->vfunc_54(0x0);
return true;
}
void ActorUnkEFSB::vfunc_20() {
if (this->mUnk_094 != 0x0) {
return;
}
this->mUnk_0F8.vfunc_34();
this->mUnk_154.vfunc_34();
}
void ActorUnkEFSB::vfunc_24() {
this->vfunc_20();
}
void ActorUnkEFSB::vfunc_54(unk32 param1) {
this->mUnk_094 = param1;
}
void ActorUnkEFSB::vfunc_2C(unk32 param1) {
VecFx32 vec;
VecFx32_Init(FLOAT_TO_FX32(1.0f), FLOAT_TO_FX32(1.0f), FLOAT_TO_FX32(1.0f), &vec);
vec.z = func_01ffb428(this->mUnk_1B0, 0x8000);
VecFx32 sp0 = this->mPos;
sp0.y += FLOAT_TO_FX32(0.85f);
func_01ffc634(&this->mUnk_098, &vec, this->mAngleStruct, &sp0);
}
+5 -3
View File
@@ -150,7 +150,9 @@ ActorProfileUnkZLSL::ActorProfileUnkZLSL() :
ActorUnkZLSL::ActorUnkZLSL() :
Actor_Derived1(NULL, 0x0),
mUnk_1620(NULL),
mUnk_276C(NULL) {}
mUnk_2700(0, 0, 0),
mUnk_276C(NULL),
mUnk_27CC(0, 0, 0) {}
void func_ov031_020ea100() {}
@@ -496,7 +498,7 @@ void ActorUnkZLSL::func_ov031_020eb218() {
// non-matching
bool ActorUnkZLSL::func_ov031_020eb2b0(VecFx32 *param1, unk32 param2) {
func_01ff916c(&this->mUnk_2800, param1->y, 0xCD);
func_01ff916c(&this->mUnk_27CC.mUnk_1C, param1->y, 0xCD);
unk16 res = func_02016958(&this->mPos, param1);
func_01ff930c(&this->mAngle, res, 0x71C);
@@ -504,7 +506,7 @@ bool ActorUnkZLSL::func_ov031_020eb2b0(VecFx32 *param1, unk32 param2) {
vec.y += 0x800;
if (!this->mUnk_2874) {
if (this->mUnk_094.mUnk_0C->vfunc_10()->mUnk_0C < 0xA000) {
func_01ff916c(&this->mUnk_2800, 0xCD - 0x400, 0xCD + 0xCD);
func_01ff916c(&this->mUnk_27CC.mUnk_1C, 0xCD - 0x400, 0xCD + 0xCD);
}
}
}