diff options
Diffstat (limited to 'src/REL/d/a/obj/d_a_obj_lava_F200.cpp')
| -rw-r--r-- | src/REL/d/a/obj/d_a_obj_lava_F200.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/src/REL/d/a/obj/d_a_obj_lava_F200.cpp b/src/REL/d/a/obj/d_a_obj_lava_F200.cpp index e69de29b..78ad3147 100644 --- a/src/REL/d/a/obj/d_a_obj_lava_F200.cpp +++ b/src/REL/d/a/obj/d_a_obj_lava_F200.cpp @@ -0,0 +1,66 @@ +#include <d/a/obj/d_a_obj_lava_F200.h> +#include <toBeSorted/room_manager.h> + +SPECIAL_ACTOR_PROFILE(OBJ_LAVA_F200, dAcOlavaF200_c, fProfile::OBJ_LAVA_F200, 0x0214, 0, 0); + +bool dAcOlavaF200_c::createHeap() { + mBrres = getOarcResFile("LavaF200"); + RoomManager::bindStageResToFile(&mBrres); + + nw4r::g3d::ResMdl mdl0 = mBrres.GetResMdl("LavaF200"); + TRY_CREATE(mModels[0].create(mdl0, &heap_allocator, 0x32C)); + nw4r::g3d::ResAnmTexSrt anmTex0 = mBrres.GetResAnmTexSrt("LavaF200"); + TRY_CREATE(mTexAnms[0].create(mdl0, anmTex0, &heap_allocator, nullptr, 1)); + nw4r::g3d::ResAnmClr anmClr0 = mBrres.GetResAnmClr("LavaF200"); + TRY_CREATE(mClrAnms[0].create(mdl0, anmClr0, &heap_allocator, nullptr, 1)); + + nw4r::g3d::ResMdl mdl1 = mBrres.GetResMdl("LavaF200_s"); + TRY_CREATE(mModels[1].create(mdl1, &heap_allocator, 0x32C)); + nw4r::g3d::ResAnmTexSrt anmTex1 = mBrres.GetResAnmTexSrt("LavaF200_s"); + TRY_CREATE(mTexAnms[1].create(mdl1, anmTex1, &heap_allocator, nullptr, 1)); + nw4r::g3d::ResAnmClr anmClr1 = mBrres.GetResAnmClr("LavaF200_s"); + TRY_CREATE(mClrAnms[1].create(mdl1, anmClr1, &heap_allocator, nullptr, 1)); + + return true; +} + +int dAcOlavaF200_c::create() { + if (!initAllocatorWork1Heap(-1, "dAcOlavaF200_c::m_allocator", 0x20)) { + return FAILED; + } + + mModels[0].setAnm(mTexAnms[0]); + mModels[1].setAnm(mTexAnms[1]); + mModels[0].setAnm(mClrAnms[0]); + mModels[1].setAnm(mClrAnms[1]); + + updateMatrix(); + for (int i = 0; i < 2; i++) { + mModels[i].setLocalMtx(worldMatrix); + } + + mModels[0].setPriorityDraw(0x1C, 9); + mModels[1].setPriorityDraw(0x22, 9); + setBoundingBox(mVec3_c(-0.0f, -0.0f, -0.0f), mVec3_c(0.0f, 0.0f, 0.0f)); + + return SUCCEEDED; +} + +int dAcOlavaF200_c::doDelete() { + return 1; +} + +int dAcOlavaF200_c::actorExecute() { + mTexAnms[0].play(); + mTexAnms[1].play(); + mClrAnms[0].play(); + mClrAnms[1].play(); + return 1; +} + +int dAcOlavaF200_c::draw() { + for (int i = 0; i < 2; i++) { + drawModelType1(&mModels[i]); + } + return 1; +} |
