diff --git a/config/SOUE01/rels/d_a_obj_fence_konsaiNP/splits.txt b/config/SOUE01/rels/d_a_obj_fence_konsaiNP/splits.txt index 42b014c5..f9a1c918 100644 --- a/config/SOUE01/rels/d_a_obj_fence_konsaiNP/splits.txt +++ b/config/SOUE01/rels/d_a_obj_fence_konsaiNP/splits.txt @@ -11,3 +11,5 @@ REL/executor.c: REL/d/a/obj/d_a_obj_fence_konsai.cpp: .text start:0x00000070 end:0x00000364 + .rodata start:0x00000000 end:0x00000018 + .data start:0x00000000 end:0x000000E8 diff --git a/config/SOUE01/rels/d_a_obj_fence_konsaiNP/symbols.txt b/config/SOUE01/rels/d_a_obj_fence_konsaiNP/symbols.txt index 1534e4e7..89e6381a 100644 --- a/config/SOUE01/rels/d_a_obj_fence_konsaiNP/symbols.txt +++ b/config/SOUE01/rels/d_a_obj_fence_konsaiNP/symbols.txt @@ -2,15 +2,15 @@ _prolog = .text:0x00000000; // type:function size:0x2C scope:global _epilog = .text:0x00000030; // type:function size:0x2C scope:global _unresolved = .text:0x00000060; // type:function size:0x4 scope:global dAcOfenceKonsai_c_classInit__Fv = .text:0x00000070; // type:function size:0x64 -AcOfenceKonsai__initModels = .text:0x000000E0; // type:function size:0xF0 -AcOfenceKonsai__init = .text:0x000001D0; // type:function size:0xC8 -fn_381_2A0 = .text:0x000002A0; // type:function size:0x8 -fn_381_2B0 = .text:0x000002B0; // type:function size:0x8 -AcOfenceKonsai__draw = .text:0x000002C0; // type:function size:0x28 +createHeap__17dAcOfenceKonsai_cFv = .text:0x000000E0; // type:function size:0xF0 +create__17dAcOfenceKonsai_cFv = .text:0x000001D0; // type:function size:0xC8 +doDelete__17dAcOfenceKonsai_cFv = .text:0x000002A0; // type:function size:0x8 +actorExecute__17dAcOfenceKonsai_cFv = .text:0x000002B0; // type:function size:0x8 +draw__17dAcOfenceKonsai_cFv = .text:0x000002C0; // type:function size:0x28 __dt__17dAcOfenceKonsai_cFv = .text:0x000002F0; // type:function size:0x74 _ctors = .ctors:0x00000000; // type:label scope:global _dtors = .dtors:0x00000000; // type:label scope:global lbl_381_rodata_0 = .rodata:0x00000000; // type:object size:0x18 data:float g_profile_OBJ_FENCE_KONSAI = .data:0x00000000; // type:object size:0x44 lbl_381_data_44 = .data:0x00000044; // type:object size:0x24 -AcOfenceKonsai__vtable = .data:0x00000068; // type:object size:0x80 +__vt__17dAcOfenceKonsai_c = .data:0x00000068; // type:object size:0x80 diff --git a/configure.py b/configure.py index 03c24656..c19f8576 100644 --- a/configure.py +++ b/configure.py @@ -1401,7 +1401,7 @@ config.libs = [ Rel(Matching, "d_a_obj_fence_boko2", "REL/d/a/obj/d_a_obj_fence_boko2.cpp"), Rel(Matching, "d_a_obj_fence_boko", "REL/d/a/obj/d_a_obj_fence_boko.cpp"), Rel(NonMatching, "d_a_obj_fence_iron", "REL/d/a/obj/d_a_obj_fence_iron.cpp"), - Rel(NonMatching, "d_a_obj_fence_konsai", "REL/d/a/obj/d_a_obj_fence_konsai.cpp"), + Rel(Matching, "d_a_obj_fence_konsai", "REL/d/a/obj/d_a_obj_fence_konsai.cpp"), Rel(NonMatching, "d_a_obj_fire", "REL/d/a/obj/d_a_obj_fire.cpp"), Rel(NonMatching, "d_a_obj_firewall", "REL/d/a/obj/d_a_obj_firewall.cpp"), Rel(NonMatching, "d_a_obj_fire_obstacle", "REL/d/a/obj/d_a_obj_fire_obstacle.cpp"), diff --git a/include/d/a/obj/d_a_obj_fence_konsai.h b/include/d/a/obj/d_a_obj_fence_konsai.h index 99f9a760..74cd5c06 100644 --- a/include/d/a/obj/d_a_obj_fence_konsai.h +++ b/include/d/a/obj/d_a_obj_fence_konsai.h @@ -2,11 +2,21 @@ #define D_A_OBJ_FENCE_KONSAI_H #include "d/a/obj/d_a_obj_base.h" +#include "d/col/bg/d_bg_w.h" class dAcOfenceKonsai_c : public dAcObjBase_c { public: dAcOfenceKonsai_c() {} + virtual int create() override; + virtual int doDelete() override; + virtual int draw() override; + virtual bool createHeap() override; virtual ~dAcOfenceKonsai_c() {} + virtual int actorExecute() override; + + nw4r::g3d::ResFile mResFile; + m3d::smdl_c mModel; + dBgW mCollision; private: }; diff --git a/src/REL/d/a/obj/d_a_obj_fence_konsai.cpp b/src/REL/d/a/obj/d_a_obj_fence_konsai.cpp index 02f93daa..99acbd61 100644 --- a/src/REL/d/a/obj/d_a_obj_fence_konsai.cpp +++ b/src/REL/d/a/obj/d_a_obj_fence_konsai.cpp @@ -1,3 +1,39 @@ #include "d/a/obj/d_a_obj_fence_konsai.h" +#include "d/col/bg/d_bg_s.h" + SPECIAL_ACTOR_PROFILE(OBJ_FENCE_KONSAI, dAcOfenceKonsai_c, fProfile::OBJ_FENCE_KONSAI, 0x1E3, 0, 3); + +bool dAcOfenceKonsai_c::createHeap() { + mResFile = nw4r::g3d::ResFile(getOarcResFile("FenceKonsai")); + nw4r::g3d::ResMdl mdl = mResFile.GetResMdl("FenceKonsai"); + TRY_CREATE(mModel.create(mdl, &heap_allocator, 0x120)); + cBgD_t *dzb = (cBgD_t *)getOarcFile("FenceKonsai", "dzb/FenceKonsai.dzb"); + PLC *plc = (PLC *)getOarcFile("FenceKonsai", "dat/FenceKonsai.plc"); + updateMatrix(); + mModel.setLocalMtx(mWorldMtx); + TRY_CREATE(!mCollision.Set(dzb, plc, cBgW::MOVE_BG_e, &mWorldMtx, &mScale)); + mCollision.Lock(); + return true; +} + +int dAcOfenceKonsai_c::create() { + CREATE_ALLOCATOR(dAcOfenceKonsai_c); + dBgS::GetInstance()->Regist(&mCollision, this); + mModel.setPriorityDraw(0x1C, 0x9); + boundingBox.Set(mVec3_c(-100.0f, -10.0f, -30.0f), mVec3_c(100.0f, 270.0f, 40.0f)); + return SUCCEEDED; +} + +int dAcOfenceKonsai_c::doDelete() { + return SUCCEEDED; +} + +int dAcOfenceKonsai_c::actorExecute() { + return SUCCEEDED; +} + +int dAcOfenceKonsai_c::draw() { + drawModelType1(&mModel); + return SUCCEEDED; +}