Merge pull request #177 from swekka/d_a_obj_bird_statue

d_a_obj_bird_statue OK
This commit is contained in:
robojumper
2025-05-25 15:56:10 +02:00
committed by GitHub
4 changed files with 46 additions and 5 deletions
@@ -2,9 +2,9 @@ _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
dAcOBirdStatue_c_classInit__Fv = .text:0x00000070; // type:function size:0x54
fn_627_D0 = .text:0x000000D0; // type:function size:0x98
fn_627_170 = .text:0x00000170; // type:function size:0xA4
fn_627_220 = .text:0x00000220; // type:function size:0x28
createHeap__16dAcOBirdStatue_cFv = .text:0x000000D0; // type:function size:0x98
create__16dAcOBirdStatue_cFv = .text:0x00000170; // type:function size:0xA4
draw__16dAcOBirdStatue_cFv = .text:0x00000220; // type:function size:0x28
__dt__16dAcOBirdStatue_cFv = .text:0x00000250; // type:function size:0x68
_ctors = .ctors:0x00000000; // type:label scope:global
_dtors = .dtors:0x00000000; // type:label scope:global
+1 -1
View File
@@ -1958,7 +1958,7 @@ config.libs = [
NonMatching, "d_a_obj_bigbomb_flower", "REL/d/a/obj/d_a_obj_bigbomb_flower.cpp"
),
Rel(NonMatching, "d_a_obj_bird_sp", "REL/d/a/obj/d_a_obj_bird_sp.cpp"),
Rel(NonMatching, "d_a_obj_bird_statue", "REL/d/a/obj/d_a_obj_bird_statue.cpp"),
Rel(Matching, "d_a_obj_bird_statue", "REL/d/a/obj/d_a_obj_bird_statue.cpp"),
Rel(NonMatching, "d_a_obj_blade", "REL/d/a/obj/d_a_obj_blade.cpp"),
Rel(NonMatching, "d_a_obj_blast_rock", "REL/d/a/obj/d_a_obj_blast_rock.cpp"),
Rel(NonMatching, "d_a_obj_block_rope", "REL/d/a/obj/d_a_obj_block_rope.cpp"),
+6 -1
View File
@@ -6,9 +6,14 @@
class dAcOBirdStatue_c : public dAcObjBase_c {
public:
dAcOBirdStatue_c() {}
virtual ~dAcOBirdStatue_c() {}
virtual ~dAcOBirdStatue_c() {}
virtual bool createHeap() override;
virtual int create() override;
virtual int draw() override;
private:
/* 0x330 */ m3d::smdl_c mMdl;
};
#endif
+36
View File
@@ -1,3 +1,39 @@
#include "d/a/obj/d_a_obj_bird_statue.h"
SPECIAL_ACTOR_PROFILE(OBJ_BIRD_STATUE, dAcOBirdStatue_c, fProfile::OBJ_BIRD_STATUE, 0x285, 0, 3);
bool dAcOBirdStatue_c::createHeap() {
void *data = getOarcResFile("BirdStatue");
if (data == nullptr) {
return false;
}
nw4r::g3d::ResFile file(data);
if (!file.IsValid()) {
return false;
}
nw4r::g3d::ResMdl mdl = file.GetResMdl("BirdStatue");
if (!mdl.IsValid()) {
return false;
}
return mMdl.create(mdl, &heap_allocator, 0, 1, nullptr);
}
int dAcOBirdStatue_c::create() {
if (!initAllocatorWork1Heap(0xffffffff, "dAcOBirdStatue_c::m_allocator", 0x20)) {
return FAILED;
}
updateMatrix();
mMdl.setLocalMtx(mWorldMtx);
mVec3_c min, max;
mMdl.getBounds(&min,&max);
boundingBox.Set(min, max);
return SUCCEEDED;
}
int dAcOBirdStatue_c::draw(){
dAcObjBase_c::drawModelType1(&mMdl);
return SUCCEEDED;
}