1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
#include "d/a/obj/d_a_obj_water_shield.h"
#include "d/col/bg/d_bg_s.h"
#include "nw4r/types_nw4r.h"
SPECIAL_ACTOR_PROFILE(OBJ_WATER_SHIELD, dAcOwaterShield_c, fProfile::OBJ_WATER_SHIELD, 0x218, 0, 0);
bool dAcOwaterShield_c::createHeap() {
mRes = nw4r::g3d::ResFile(getOarcResFile("WaterWallF103"));
nw4r::g3d::ResMdl mdl = mRes.GetResMdl("WaterWallF103");
TRY_CREATE(mMdl.create(mdl, &mAllocator, 0x32C));
nw4r::g3d::ResAnmClr clr = mRes.GetResAnmClr("WaterWallF103");
TRY_CREATE(mAnmClr.create(mdl, clr, &mAllocator, nullptr, 1));
nw4r::g3d::ResAnmTexSrt srt = mRes.GetResAnmTexSrt("WaterWallF103");
TRY_CREATE(mAnmSrt.create(mdl, srt, &mAllocator, nullptr, 1));
cBgD_t *dzb = (cBgD_t *)getOarcFile("WaterWallF103", "dzb/WaterWallF103.dzb");
PLC *plc = (PLC *)getOarcFile("WaterWallF103", "dat/WaterWallF103.plc");
updateMatrix();
mMdl.setLocalMtx(mWorldMtx);
TRY_CREATE(!mBgW.Set(dzb, plc, cBgW::MOVE_BG_e, &mWorldMtx, &mScale));
mBgW.Lock();
return true;
}
int dAcOwaterShield_c::create() {
CREATE_ALLOCATOR(dAcOwaterShield_c);
dBgS::GetInstance()->Regist(&mBgW, this);
mScnCallback.attach(mMdl);
mMdl.setAnm(mAnmSrt);
mMdl.setAnm(mAnmClr);
mMdl.setPriorityDraw(0x1C, 0x9);
mBoundingBox.Set(mVec3_c(-12000.0f, -2000.0f, -14000.0f), mVec3_c(12000.0f, 11000.0f, 12000.0f));
return SUCCEEDED;
}
int dAcOwaterShield_c::doDelete() {
return SUCCEEDED;
}
int dAcOwaterShield_c::actorExecute() {
mAnmSrt.play();
mAnmClr.play();
return SUCCEEDED;
}
int dAcOwaterShield_c::draw() {
drawModelType1(&mMdl);
return SUCCEEDED;
}
// Weak function order issue IScnObjCallback
|