summaryrefslogtreecommitdiff
path: root/src/REL/d/a/obj/d_a_obj_lava_F200.cpp
diff options
context:
space:
mode:
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.cpp66
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;
+}