mirror of
https://github.com/zeldaret/ss
synced 2026-10-07 21:30:59 -04:00
d_a_obj_girahumu_sword_link
This commit is contained in:
@@ -4,23 +4,23 @@ _unresolved = .text:0x00000060; // type:function size:0x4 scope:global
|
||||
__register_global_object = .text:0x00000070; // type:function size:0x1C scope:global
|
||||
__destroy_global_chain = .text:0x00000090; // type:function size:0x54 scope:global
|
||||
dAcObjGirahimuSwordLink_c_classInit__Fv = .text:0x000000F0; // type:function size:0x1A4
|
||||
fn_238_2A0 = .text:0x000002A0; // type:function size:0x84
|
||||
fn_238_330 = .text:0x00000330; // type:function size:0x58
|
||||
fn_238_390 = .text:0x00000390; // type:function size:0x90
|
||||
fn_238_420 = .text:0x00000420; // type:function size:0xCC
|
||||
fn_238_4F0 = .text:0x000004F0; // type:function size:0x58
|
||||
__dt__26dSwordSwingEffectProcMgr_cFv = .text:0x000002A0; // type:function size:0x84
|
||||
__ct__22dCcD_Linked<8dCcD_Cps>Fv = .text:0x00000330; // type:function size:0x58
|
||||
__dt__22dCcD_Linked<8dCcD_Cps>Fv = .text:0x00000390; // type:function size:0x90
|
||||
__dt__16dEnemySwordMdl_cFv = .text:0x00000420; // type:function size:0xCC
|
||||
__dt__15dShadowCircle_cFv = .text:0x000004F0; // type:function size:0x58
|
||||
__dt__38sFState_c<25dAcObjGirahimuSwordLink_c>Fv = .text:0x00000550; // type:function size:0x58
|
||||
__dt__41sFStateFct_c<25dAcObjGirahimuSwordLink_c>Fv = .text:0x000005B0; // type:function size:0x6C
|
||||
__dt__94sStateMgr_c<25dAcObjGirahimuSwordLink_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000620; // type:function size:0xA0
|
||||
__dt__64sFStateMgr_c<25dAcObjGirahimuSwordLink_c,20sStateMethodUsr_FI_c>Fv = .text:0x000006C0; // type:function size:0xA4
|
||||
AcObjGirahimuSwordLink__initModels = .text:0x00000770; // type:function size:0xB4
|
||||
AcObjGirahimuSwordLink__init = .text:0x00000830; // type:function size:0x74
|
||||
createHeap__25dAcObjGirahimuSwordLink_cFv = .text:0x00000770; // type:function size:0xB4
|
||||
create__25dAcObjGirahimuSwordLink_cFv = .text:0x00000830; // type:function size:0x74
|
||||
changeState__94sStateMgr_c<25dAcObjGirahimuSwordLink_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>FRC12sStateIDIf_c = .text:0x000008B0; // type:function size:0x10
|
||||
AcObjGirahimuSwordLink__boundingBoxStuff = .text:0x000008C0; // type:function size:0x100
|
||||
AcObjGirahimuSwordLink__update = .text:0x000009C0; // type:function size:0x108
|
||||
init__25dAcObjGirahimuSwordLink_cFv = .text:0x000008C0; // type:function size:0x100
|
||||
actorExecute__25dAcObjGirahimuSwordLink_cFv = .text:0x000009C0; // type:function size:0x108
|
||||
executeState__94sStateMgr_c<25dAcObjGirahimuSwordLink_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>Fv = .text:0x00000AD0; // type:function size:0x10
|
||||
getStateID__94sStateMgr_c<25dAcObjGirahimuSwordLink_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c>CFv = .text:0x00000AE0; // type:function size:0x10
|
||||
AcObjGirahimuSwordLink__draw = .text:0x00000AF0; // type:function size:0x104
|
||||
draw__25dAcObjGirahimuSwordLink_cFv = .text:0x00000AF0; // type:function size:0x104
|
||||
initializeState_Hide__25dAcObjGirahimuSwordLink_cFv = .text:0x00000C00; // type:function size:0x4
|
||||
executeState_Hide__25dAcObjGirahimuSwordLink_cFv = .text:0x00000C10; // type:function size:0x4
|
||||
finalizeState_Hide__25dAcObjGirahimuSwordLink_cFv = .text:0x00000C20; // type:function size:0x4
|
||||
@@ -35,7 +35,7 @@ executeState_Throw__25dAcObjGirahimuSwordLink_cFv = .text:0x00000E00; // type:fu
|
||||
finalizeState_Throw__25dAcObjGirahimuSwordLink_cFv = .text:0x00000F60; // type:function size:0xC
|
||||
initializeState_AtThrow__25dAcObjGirahimuSwordLink_cFv = .text:0x00000F70; // type:function size:0x3C
|
||||
executeState_AtThrow__25dAcObjGirahimuSwordLink_cFv = .text:0x00000FB0; // type:function size:0x278
|
||||
fn_238_1230 = .text:0x00001230; // type:function size:0x48
|
||||
ChkAtHit__8cCcD_ObjFv = .text:0x00001230; // type:function size:0x48
|
||||
finalizeState_AtThrow__25dAcObjGirahimuSwordLink_cFv = .text:0x00001280; // type:function size:0xC
|
||||
initializeState_Stick__25dAcObjGirahimuSwordLink_cFv = .text:0x00001290; // type:function size:0x50
|
||||
executeState_Stick__25dAcObjGirahimuSwordLink_cFv = .text:0x000012E0; // type:function size:0x14C
|
||||
@@ -43,18 +43,18 @@ finalizeState_Stick__25dAcObjGirahimuSwordLink_cFv = .text:0x00001430; // type:f
|
||||
initializeState_Reflect__25dAcObjGirahimuSwordLink_cFv = .text:0x00001440; // type:function size:0x74
|
||||
executeState_Reflect__25dAcObjGirahimuSwordLink_cFv = .text:0x000014C0; // type:function size:0x3F0
|
||||
finalizeState_Reflect__25dAcObjGirahimuSwordLink_cFv = .text:0x000018B0; // type:function size:0xC
|
||||
AcObjGirahimuSwordLink__setStateEquip = .text:0x000018C0; // type:function size:0x18
|
||||
AcObjGirahimuSwordLink__setStateGetSword = .text:0x000018E0; // type:function size:0x18
|
||||
AcObjGirahimuSwordLink__setStateHide = .text:0x00001900; // type:function size:0x18
|
||||
AcObjGirahimuSwordLink__setStateThrow = .text:0x00001920; // type:function size:0x5C
|
||||
AcObjGirahimuSwordLink__setStateAtThrow = .text:0x00001980; // type:function size:0x48
|
||||
fn_238_19D0 = .text:0x000019D0; // type:function size:0x4
|
||||
fn_238_19E0 = .text:0x000019E0; // type:function size:0xA4
|
||||
AcObjGirahimuSwordLink__setSwordModelMatrixMaybe = .text:0x00001A90; // type:function size:0xE0
|
||||
AcObjGirahimuSwordLink__isInStateHide = .text:0x00001B70; // type:function size:0x44
|
||||
AcObjGirahimuSwordLink__isInStateStick = .text:0x00001BC0; // type:function size:0x44
|
||||
fn_238_1C10 = .text:0x00001C10; // type:function size:0x1D0
|
||||
AcObjGirahimuSwordLink__someCollisionCheck = .text:0x00001DE0; // type:function size:0x420
|
||||
setEquip__25dAcObjGirahimuSwordLink_cFv = .text:0x000018C0; // type:function size:0x18
|
||||
setGetSword__25dAcObjGirahimuSwordLink_cFv = .text:0x000018E0; // type:function size:0x18
|
||||
setHide__25dAcObjGirahimuSwordLink_cFv = .text:0x00001900; // type:function size:0x18
|
||||
setThrow__25dAcObjGirahimuSwordLink_cFRC7mVec3_c4mAngf = .text:0x00001920; // type:function size:0x5C
|
||||
setAtThrow__25dAcObjGirahimuSwordLink_cFRC7mVec3_c = .text:0x00001980; // type:function size:0x48
|
||||
fn_238_19D0__25dAcObjGirahimuSwordLink_cFv = .text:0x000019D0; // type:function size:0x4
|
||||
updateModelMatrix__25dAcObjGirahimuSwordLink_cFv = .text:0x000019E0; // type:function size:0xA4
|
||||
setTransform__25dAcObjGirahimuSwordLink_cFRC6mMtx_cRC7mVec3_c = .text:0x00001A90; // type:function size:0xE0
|
||||
isHide__25dAcObjGirahimuSwordLink_cFv = .text:0x00001B70; // type:function size:0x44
|
||||
isStick__25dAcObjGirahimuSwordLink_cFv = .text:0x00001BC0; // type:function size:0x44
|
||||
reflect__25dAcObjGirahimuSwordLink_cFRC7mVec3_cfff = .text:0x00001C10; // type:function size:0x1D0
|
||||
lineCheck__25dAcObjGirahimuSwordLink_cFv = .text:0x00001DE0; // type:function size:0x420
|
||||
__dt__25dAcObjGirahimuSwordLink_cFv = .text:0x00002200; // type:function size:0x170
|
||||
build__41sFStateFct_c<25dAcObjGirahimuSwordLink_c>FRC12sStateIDIf_c = .text:0x00002370; // type:function size:0x60
|
||||
dispose__41sFStateFct_c<25dAcObjGirahimuSwordLink_c>FRP10sStateIf_c = .text:0x000023D0; // type:function size:0xC
|
||||
@@ -73,7 +73,7 @@ initializeState__40sFStateID_c<25dAcObjGirahimuSwordLink_c>CFR25dAcObjGirahimuSw
|
||||
__sinit_\d_a_obj_girahimu_sword_link_cpp = .text:0x00002530; // type:function size:0x56C scope:local
|
||||
__dt__40sFStateID_c<25dAcObjGirahimuSwordLink_c>Fv = .text:0x00002AA0; // type:function size:0x58
|
||||
isSameName__40sFStateID_c<25dAcObjGirahimuSwordLink_c>CFPCc = .text:0x00002B00; // type:function size:0x88
|
||||
fn_238_2B90 = .text:0x00002B90; // type:function size:0x8
|
||||
@272@__dt__22dCcD_Linked<8dCcD_Cps>Fv = .text:0x00002B90; // type:function size:0x8
|
||||
_ctors = .ctors:0x00000000; // type:label scope:global
|
||||
_dtors = .dtors:0x00000000; // type:label scope:global
|
||||
__destroy_global_chain_reference = .dtors:0x00000000; // type:object size:0x4 scope:global
|
||||
@@ -88,22 +88,22 @@ lbl_238_data_40 = .data:0x00000040; // type:object size:0x4 data:4byte
|
||||
lbl_238_data_44 = .data:0x00000044; // type:object size:0xC data:4byte
|
||||
lbl_238_data_50 = .data:0x00000050; // type:object size:0x1C data:4byte
|
||||
lbl_238_data_6C = .data:0x0000006C; // type:object size:0x4 data:4byte
|
||||
AcObjGirahimuSwordLink__vtable = .data:0x00000070; // type:object size:0x80
|
||||
lbl_238_data_F0 = .data:0x000000F0; // type:object size:0x30
|
||||
lbl_238_data_120 = .data:0x00000120; // type:object size:0x30
|
||||
lbl_238_data_150 = .data:0x00000150; // type:object size:0x18
|
||||
lbl_238_data_168 = .data:0x00000168; // type:object size:0x18
|
||||
lbl_238_data_180 = .data:0x00000180; // type:object size:0x10
|
||||
lbl_238_data_190 = .data:0x00000190; // type:object size:0x70
|
||||
lbl_238_data_200 = .data:0x00000200; // type:object size:0xC
|
||||
lbl_238_data_20C = .data:0x0000020C; // type:object size:0x23C
|
||||
__vt__25dAcObjGirahimuSwordLink_c = .data:0x00000070; // type:object size:0x80
|
||||
__vt__64sFStateMgr_c<25dAcObjGirahimuSwordLink_c,20sStateMethodUsr_FI_c> = .data:0x000000F0; // type:object size:0x30
|
||||
__vt__94sStateMgr_c<25dAcObjGirahimuSwordLink_c,20sStateMethodUsr_FI_c,12sFStateFct_c,13sStateIDChk_c> = .data:0x00000120; // type:object size:0x30
|
||||
__vt__41sFStateFct_c<25dAcObjGirahimuSwordLink_c> = .data:0x00000150; // type:object size:0x18
|
||||
__vt__38sFState_c<25dAcObjGirahimuSwordLink_c> = .data:0x00000168; // type:object size:0x18
|
||||
__vt__16dEnemySwordMdl_c = .data:0x00000180; // type:object size:0x10
|
||||
__vt__22dCcD_Linked<8dCcD_Cps> = .data:0x00000190; // type:object size:0x70
|
||||
__vt__26dSwordSwingEffectProcMgr_c = .data:0x00000200; // type:object size:0xC
|
||||
__vt__15dShadowCircle_c = .data:0x0000020C; // type:object size:0x23C
|
||||
lbl_238_data_448 = .data:0x00000448; // type:object size:0x34
|
||||
__global_destructor_chain = .bss:0x00000000; // type:object size:0x4 scope:global
|
||||
lbl_238_bss_8 = .bss:0x00000008; // type:object size:0x10 data:4byte
|
||||
AcObjGirahimuSwordLink__STATE_HIDE = .bss:0x00000018; // type:object size:0x40 data:4byte
|
||||
AcObjGirahimuSwordLink__STATE_EQUIP = .bss:0x00000058; // type:object size:0x40 data:4byte
|
||||
AcObjGirahimuSwordLink__STATE_GET_SWORD = .bss:0x00000098; // type:object size:0x40 data:4byte
|
||||
AcObjGirahimuSwordLink__STATE_THROW = .bss:0x000000D8; // type:object size:0x40 data:4byte
|
||||
AcObjGirahimuSwordLink__STATE_AT_THROW = .bss:0x00000118; // type:object size:0x40 data:4byte
|
||||
AcObjGirahimuSwordLink__STATE_STICK = .bss:0x00000158; // type:object size:0x40 data:4byte
|
||||
AcObjGirahimuSwordLink__STATE_REFLECT = .bss:0x00000198; // type:object size:0x48 data:4byte
|
||||
StateID_Hide__25dAcObjGirahimuSwordLink_c = .bss:0x00000018; // type:object size:0x40 data:4byte
|
||||
StateID_Equip__25dAcObjGirahimuSwordLink_c = .bss:0x00000058; // type:object size:0x40 data:4byte
|
||||
StateID_GetSword__25dAcObjGirahimuSwordLink_c = .bss:0x00000098; // type:object size:0x40 data:4byte
|
||||
StateID_Throw__25dAcObjGirahimuSwordLink_c = .bss:0x000000D8; // type:object size:0x40 data:4byte
|
||||
StateID_AtThrow__25dAcObjGirahimuSwordLink_c = .bss:0x00000118; // type:object size:0x40 data:4byte
|
||||
StateID_Stick__25dAcObjGirahimuSwordLink_c = .bss:0x00000158; // type:object size:0x40 data:4byte
|
||||
StateID_Reflect__25dAcObjGirahimuSwordLink_c = .bss:0x00000198; // type:object size:0x48 data:4byte
|
||||
|
||||
@@ -1123,7 +1123,7 @@ create__12dAcObjBase_cFPCcUlUlPC7mVec3_cPC7mAng3_cPC7mVec3_cUlUsSc = .text:0x800
|
||||
findObject__12dAcObjBase_cFQ28fProfile14PROFILE_NAME_eP9fLiMgBa_cP12dAcObjBase_c = .text:0x8002E770; // type:function size:0x7C
|
||||
getNextObject__12dAcObjBase_cFP9fLiMgBa_cP12dAcObjBase_c = .text:0x8002E7F0; // type:function size:0x58
|
||||
isPlayer__12dAcObjBase_cFv = .text:0x8002E850; // type:function size:0x14
|
||||
calcVelocity__12dAcObjBase_cFR7mVec3_cf = .text:0x8002E870; // type:function size:0x68
|
||||
calcVelocity__12dAcObjBase_cFRC7mVec3_cf = .text:0x8002E870; // type:function size:0x68
|
||||
calcVelocity__12dAcObjBase_cFv = .text:0x8002E8E0; // type:function size:0xB8
|
||||
updateMatrix__12dAcObjBase_cFv = .text:0x8002E9A0; // type:function size:0x58
|
||||
ActorObjectBase__setDefaultCullDistance = .text:0x8002EA00; // type:function size:0xC
|
||||
@@ -3051,7 +3051,7 @@ createSwingEntries__26dSwordSwingEffectProcMgr_cFRC7mVec3_cRC7mVec3_c = .text:0x
|
||||
calc__26dSwordSwingEffectProcMgr_cFRC7mVec3_cRC7mVec3_c = .text:0x8006B310; // type:function size:0x94
|
||||
entry__26dSwordSwingEffectProcMgr_cFv = .text:0x8006B3B0; // type:function size:0x10
|
||||
create__16dEnemySwordMdl_cFP12mAllocator_cPvPCcUlRC7mVec3_cRC7mVec3_cR9cCcD_SttsPQ23EGG7ResTIMGiPUl = .text:0x8006B3C0; // type:function size:0x140
|
||||
create__16dEnemySwordMdl_cFP12mAllocator_cQ34nw4r3g3d7ResFilePCcUlRC7mVec3_cRC7mVec3_cR9cCcD_SttsPQ23EGG7ResTIMGiPUl = .text:0x8006B500; // type:function size:0x13C
|
||||
create__16dEnemySwordMdl_cFP12mAllocator_cRQ34nw4r3g3d7ResFilePCcUlRC7mVec3_cRC7mVec3_cR9cCcD_SttsPQ23EGG7ResTIMGiPUl = .text:0x8006B500; // type:function size:0x13C
|
||||
enableAttack__16dEnemySwordMdl_cFv = .text:0x8006B640; // type:function size:0x20
|
||||
fn_8006B660__16dEnemySwordMdl_cFiiiiiiiiif = .text:0x8006B660; // type:function size:0xB4
|
||||
setDamageMaybe__16dEnemySwordMdl_cFUc = .text:0x8006B720; // type:function size:0x10
|
||||
@@ -3059,7 +3059,7 @@ fn_8006B730 = .text:0x8006B730; // type:function size:0x5C
|
||||
fn_8006B790 = .text:0x8006B790; // type:function size:0x10
|
||||
fn_8006B7A0__16dEnemySwordMdl_cFUl = .text:0x8006B7A0; // type:function size:0x5C
|
||||
fn_8006B800__16dEnemySwordMdl_cFUl = .text:0x8006B800; // type:function size:0x10
|
||||
fn_8006B810 = .text:0x8006B810; // type:function size:0x5C
|
||||
SetGrp__16dEnemySwordMdl_cFUl = .text:0x8006B810; // type:function size:0x5C
|
||||
fn_8006B870 = .text:0x8006B870; // type:function size:0x10
|
||||
calc__16dEnemySwordMdl_cFRC6mMtx_cRC7mVec3_cb = .text:0x8006B880; // type:function size:0x2A8
|
||||
entry__16dEnemySwordMdl_cFP12dAcObjBase_cP15dShadowCircle_cP9mSphere_c = .text:0x8006BB30; // type:function size:0xA4
|
||||
|
||||
@@ -206,13 +206,14 @@ public:
|
||||
static dAcObjBase_c *findObject(fProfile::PROFILE_NAME_e actorId, fLiMgBa_c *refList, dAcObjBase_c *parent);
|
||||
static dAcObjBase_c *getNextObject(fLiMgBa_c *ref, dAcObjBase_c *parent);
|
||||
bool isPlayer();
|
||||
void calcVelocity(mVec3_c &pos, f32 speed);
|
||||
void calcVelocity(const mVec3_c &pos, f32 speed);
|
||||
void calcVelocity();
|
||||
void updateMatrix();
|
||||
void setDefaultCullDistance();
|
||||
void fn_8002EA30(f32, f32, f32, f32, f32, void *);
|
||||
void fn_8002EA60(void *);
|
||||
void fn_8002EB30(void *);
|
||||
|
||||
void putInODesert(f32 depth, mVec3_c *position);
|
||||
void fn_8002ECD0(m3d::smdl_c *smdl, UNKWORD);
|
||||
// Disabling makes Items and Link Disappear
|
||||
|
||||
@@ -2,13 +2,41 @@
|
||||
#define D_A_OBJ_GIRAHIMU_SWORD_LINK_H
|
||||
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/bg/d_bg_s_acch.h"
|
||||
#include "d/d_shadow.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_mtx.h"
|
||||
#include "m/m_quat.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "s/s_State.hpp"
|
||||
#include "toBeSorted/d_emitter.h"
|
||||
#include "toBeSorted/d_enemy_sword_mdl.h"
|
||||
|
||||
class dAcObjGirahimuSwordLink_c : public dAcObjBase_c {
|
||||
public:
|
||||
dAcObjGirahimuSwordLink_c() : mStateMgr(*this) {}
|
||||
dAcObjGirahimuSwordLink_c() : mEmitter(this), mStateMgr(*this) {}
|
||||
virtual ~dAcObjGirahimuSwordLink_c() {}
|
||||
|
||||
virtual int create() override;
|
||||
virtual int draw() override;
|
||||
virtual bool createHeap() override;
|
||||
virtual int actorExecute() override;
|
||||
|
||||
void init();
|
||||
|
||||
void setEquip();
|
||||
void setGetSword();
|
||||
void setHide();
|
||||
void setThrow(const mVec3_c &force, mAng angle, f32 rate);
|
||||
void setAtThrow(const mVec3_c &velocity);
|
||||
void fn_238_19D0();
|
||||
void updateModelMatrix();
|
||||
void setTransform(const mMtx_c &mtx, const mVec3_c &pos);
|
||||
bool isHide();
|
||||
bool isStick();
|
||||
void reflect(const mVec3_c &rot, f32 gravity, f32, f32 force);
|
||||
bool lineCheck();
|
||||
|
||||
STATE_FUNC_DECLARE(dAcObjGirahimuSwordLink_c, Hide);
|
||||
STATE_FUNC_DECLARE(dAcObjGirahimuSwordLink_c, Equip);
|
||||
STATE_FUNC_DECLARE(dAcObjGirahimuSwordLink_c, GetSword);
|
||||
@@ -17,8 +45,32 @@ public:
|
||||
STATE_FUNC_DECLARE(dAcObjGirahimuSwordLink_c, Stick);
|
||||
STATE_FUNC_DECLARE(dAcObjGirahimuSwordLink_c, Reflect);
|
||||
|
||||
STATE_MGR_DEFINE_UTIL_CHANGESTATE(dAcObjGirahimuSwordLink_c);
|
||||
STATE_MGR_DEFINE_UTIL_EXECUTESTATE(dAcObjGirahimuSwordLink_c);
|
||||
STATE_MGR_DEFINE_UTIL_ISSTATE(dAcObjGirahimuSwordLink_c);
|
||||
STATE_MGR_DEFINE_UTIL_GETSTATEID(dAcObjGirahimuSwordLink_c);
|
||||
|
||||
private:
|
||||
/* 0x??? */ STATE_MGR_DECLARE(dAcObjGirahimuSwordLink_c);
|
||||
/* 0x330 */ dEnemySwordMdl_c mMdl;
|
||||
/* 0x86C */ dShadowCircle_c mShadow;
|
||||
/* 0x874 */ dEmitter_c mEmitter;
|
||||
|
||||
/* 0x8A8 */ s16 field_0x8A8;
|
||||
/* 0x8AA */ s16 field_0x8AA;
|
||||
/* 0x8AC */ u16 mTrailEmitterID;
|
||||
/* 0x8B0 */ mMtx_c field_0x8B0;
|
||||
/* 0x8E0 */ dBgS_AcchCir mAcchCir;
|
||||
/* 0x93C */ dBgS_ObjAcch mAcch;
|
||||
|
||||
/* 0xCEC */ mVec3_c mGhirahimPos;
|
||||
/* 0xCF8 */ mAng3_c mAngleCopy;
|
||||
/* 0xD00 */ mQuat_c field_0xD00;
|
||||
/* 0xD10 */ mAng field_0xD10;
|
||||
/* 0xD14 */ mVec3_c field_0xD14;
|
||||
/* 0xD20 */ u8 field_0xD20[4];
|
||||
/* 0xD24 */ mAng field_0xD24;
|
||||
/* 0xD26 */ bool field_0xD26;
|
||||
/* 0xD28 */ STATE_MGR_DECLARE(dAcObjGirahimuSwordLink_c);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -684,7 +684,8 @@ public:
|
||||
|
||||
static s32 getCurrentTunicType();
|
||||
static s32 getCurrentSwordType();
|
||||
static const char *getSwordName(s32);
|
||||
|
||||
static const char *getSwordName(s32 = sCurrentSword);
|
||||
static s32 getCurrentlyEquippedShieldType();
|
||||
|
||||
static const mColor &getEarringsColor();
|
||||
|
||||
@@ -43,7 +43,7 @@ public:
|
||||
cCcD_Stts &stts, EGG::ResTIMG *pImg, int nView, u32 *pSize
|
||||
);
|
||||
bool create(
|
||||
mAllocator_c *alloc, nw4r::g3d::ResFile resFile, const char *mdlName, u32 bufferOption, const mVec3_c &v1,
|
||||
mAllocator_c *alloc, nw4r::g3d::ResFile &resFile, const char *mdlName, u32 bufferOption, const mVec3_c &v1,
|
||||
const mVec3_c &v2, cCcD_Stts &stts, EGG::ResTIMG *pImg, int nView, u32 *pSize
|
||||
);
|
||||
|
||||
@@ -60,14 +60,18 @@ public:
|
||||
void setDamageMaybe(u8 damage);
|
||||
void fn_8006B7A0(u32);
|
||||
void fn_8006B800(u32);
|
||||
void SetGrp(u32);
|
||||
|
||||
void enable() {
|
||||
enableAttack();
|
||||
mProc.setActive(true);
|
||||
}
|
||||
|
||||
void disable() {
|
||||
void setInactive() {
|
||||
mIsActive = false;
|
||||
}
|
||||
void disable() {
|
||||
setInactive();
|
||||
mProc.setActive(false);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,5 +1,24 @@
|
||||
#include "d/a/obj/d_a_obj_girahimu_sword_link.h"
|
||||
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_player.h"
|
||||
#include "d/col/bg/d_bg_s.h"
|
||||
#include "d/col/bg/d_bg_s_lin_chk.h"
|
||||
#include "d/col/c/c_cc_d.h"
|
||||
#include "d/col/c/c_m3d_g_pla.h"
|
||||
#include "d/snd/d_snd_wzsound.h"
|
||||
#include "f/f_base.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_mtx.h"
|
||||
#include "m/m_quat.h"
|
||||
#include "m/m_sphere.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/g3d/res/g3d_resfile.h"
|
||||
#include "nw4r/math/math_arithmetic.h"
|
||||
#include "s/s_Math.h"
|
||||
#include "toBeSorted/attention.h"
|
||||
#include "toBeSorted/d_emitter.h"
|
||||
|
||||
SPECIAL_ACTOR_PROFILE(OBJ_GH_SW_L, dAcObjGirahimuSwordLink_c, fProfile::OBJ_GH_SW_L, 0x114, 0, 2);
|
||||
|
||||
STATE_DEFINE(dAcObjGirahimuSwordLink_c, Hide);
|
||||
@@ -10,24 +29,431 @@ STATE_DEFINE(dAcObjGirahimuSwordLink_c, AtThrow);
|
||||
STATE_DEFINE(dAcObjGirahimuSwordLink_c, Stick);
|
||||
STATE_DEFINE(dAcObjGirahimuSwordLink_c, Reflect);
|
||||
|
||||
bool dAcObjGirahimuSwordLink_c::createHeap() {
|
||||
nw4r::g3d::ResFile res = dAcPy_c::GetLink()->getSwordResFile();
|
||||
TRY_CREATE(mMdl.create(
|
||||
&mAllocator, res, dAcPy_c::getSwordName(), 0x130, mVec3_c::Zero, mVec3_c(100.0f, 0.0f, 0.0f), mStts, nullptr, 1,
|
||||
nullptr
|
||||
));
|
||||
return true;
|
||||
}
|
||||
|
||||
int dAcObjGirahimuSwordLink_c::create() {
|
||||
CREATE_ALLOCATOR(dAcObjGirahimuSwordLink_c);
|
||||
init();
|
||||
changeState(StateID_Hide);
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
void dAcObjGirahimuSwordLink_c::init() {
|
||||
mAcceleration = 0.0f;
|
||||
mStts.SetRank(12);
|
||||
mMaxSpeed = -6000.0f;
|
||||
mBoundingBox.Set(mVec3_c(-100.0f, -100.0f, -100.0f), mVec3_c(100.0f, 100.0f, 100.0f));
|
||||
mAcch.Set(&mPosition, &mOldPosition, this, 1, &mAcchCir, nullptr, nullptr, nullptr);
|
||||
mAcchCir.SetWall(0.0f, 50.0f);
|
||||
mMdl.fn_8006B660(4, 1, 0, 0, 0, 0, 0, 0x400, 12, 40.0f);
|
||||
}
|
||||
|
||||
int dAcObjGirahimuSwordLink_c::actorExecute() {
|
||||
if (--field_0x8A8 <= 0) {
|
||||
field_0x8A8 = 0;
|
||||
}
|
||||
executeState();
|
||||
fn_238_19D0();
|
||||
mAcch.CrrPos(*dBgS::GetInstance());
|
||||
updateModelMatrix();
|
||||
if (getStateID().isEqual(StateID_Stick)) {
|
||||
mPositionCopy3 = mPosition;
|
||||
mPositionCopy3.y += 50.0f;
|
||||
mPositionCopy2 = mPositionCopy3;
|
||||
|
||||
AttentionManager::GetInstance()->addUnk3Target(*this, 0x2 | 0x1, 600.0f, 50.0f, -200.0f, 200.0f);
|
||||
}
|
||||
return SUCCEEDED;
|
||||
}
|
||||
|
||||
int dAcObjGirahimuSwordLink_c::draw() {
|
||||
if (getStateID().isEqual(StateID_Hide)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
mMdl.entry(this, nullptr, nullptr);
|
||||
static mSphere_c sph(mVec3_c(0.0f, 100.0f, 0.0f), 200.0f);
|
||||
fn_8002edb0(mShadow, mMdl.mMdl, &sph, -1, -1, 0.0f);
|
||||
return true;
|
||||
}
|
||||
|
||||
void dAcObjGirahimuSwordLink_c::initializeState_Hide() {}
|
||||
void dAcObjGirahimuSwordLink_c::executeState_Hide() {}
|
||||
void dAcObjGirahimuSwordLink_c::finalizeState_Hide() {}
|
||||
void dAcObjGirahimuSwordLink_c::initializeState_Equip() {}
|
||||
|
||||
void dAcObjGirahimuSwordLink_c::initializeState_Equip() {
|
||||
mAcceleration = 0.0f;
|
||||
mVelocity.set(0.0f, 0.0f, 0.0f);
|
||||
mRotation.set(mAng(0), mAng(0), mAng(0));
|
||||
mMdl.SetGrp(0xC);
|
||||
}
|
||||
void dAcObjGirahimuSwordLink_c::executeState_Equip() {}
|
||||
void dAcObjGirahimuSwordLink_c::finalizeState_Equip() {}
|
||||
void dAcObjGirahimuSwordLink_c::initializeState_GetSword() {}
|
||||
void dAcObjGirahimuSwordLink_c::executeState_GetSword() {}
|
||||
void dAcObjGirahimuSwordLink_c::finalizeState_GetSword() {}
|
||||
void dAcObjGirahimuSwordLink_c::initializeState_Throw() {}
|
||||
void dAcObjGirahimuSwordLink_c::executeState_Throw() {}
|
||||
void dAcObjGirahimuSwordLink_c::finalizeState_Throw() {}
|
||||
void dAcObjGirahimuSwordLink_c::initializeState_AtThrow() {}
|
||||
void dAcObjGirahimuSwordLink_c::executeState_AtThrow() {}
|
||||
void dAcObjGirahimuSwordLink_c::finalizeState_AtThrow() {}
|
||||
void dAcObjGirahimuSwordLink_c::initializeState_Stick() {}
|
||||
void dAcObjGirahimuSwordLink_c::executeState_Stick() {}
|
||||
void dAcObjGirahimuSwordLink_c::finalizeState_Stick() {}
|
||||
void dAcObjGirahimuSwordLink_c::initializeState_Reflect() {}
|
||||
void dAcObjGirahimuSwordLink_c::executeState_Reflect() {}
|
||||
void dAcObjGirahimuSwordLink_c::finalizeState_Reflect() {}
|
||||
|
||||
void dAcObjGirahimuSwordLink_c::initializeState_GetSword() {
|
||||
mAcceleration = 3.0f;
|
||||
mVec3_c v(-7.0f, 112.0f, 36.0f);
|
||||
v.rotY(mAngleCopy.y);
|
||||
v += mGhirahimPos;
|
||||
calcVelocity(v, 29.0f);
|
||||
mMdl.SetGrp(0xC);
|
||||
mRotation.z = 0;
|
||||
}
|
||||
void dAcObjGirahimuSwordLink_c::executeState_GetSword() {
|
||||
mRotation.z -= 0x2000;
|
||||
mVelocity.y -= mAcceleration;
|
||||
mPosition += mVelocity;
|
||||
}
|
||||
void dAcObjGirahimuSwordLink_c::finalizeState_GetSword() {
|
||||
mRotation.z = 0;
|
||||
}
|
||||
|
||||
void dAcObjGirahimuSwordLink_c::initializeState_Throw() {
|
||||
field_0x8B0.toQuat(field_0xD00);
|
||||
mMdl.enableAttack();
|
||||
}
|
||||
void dAcObjGirahimuSwordLink_c::executeState_Throw() {
|
||||
mVec3_c to(-1.0f, 0.0f, 0.0f);
|
||||
mQuat_c q;
|
||||
mVec3_c from(1.0f, 0.0f, 0.0f);
|
||||
q.slerp(from, to, 1.0f);
|
||||
field_0xD00.slerpTo(q, 0.2f, field_0xD00);
|
||||
field_0x8B0.fromQuat(field_0xD00);
|
||||
|
||||
mVelocity.y -= mAcceleration;
|
||||
mRotation.z += field_0xD10;
|
||||
mPosition += mVelocity;
|
||||
|
||||
if (lineCheck()) {
|
||||
changeState(StateID_Reflect);
|
||||
return;
|
||||
}
|
||||
if (mPosition.y <= mGhirahimPos.y - 500.0f) {
|
||||
mPosition.y = mGhirahimPos.y;
|
||||
field_0xD14.set(0.0f, 1.0f, 0.0f);
|
||||
changeState(StateID_Reflect);
|
||||
}
|
||||
}
|
||||
void dAcObjGirahimuSwordLink_c::finalizeState_Throw() {
|
||||
mMdl.setInactive();
|
||||
}
|
||||
|
||||
void dAcObjGirahimuSwordLink_c::initializeState_AtThrow() {
|
||||
field_0x8B0.toQuat(field_0xD00);
|
||||
mMdl.enableAttack();
|
||||
}
|
||||
void dAcObjGirahimuSwordLink_c::executeState_AtThrow() {
|
||||
holdSound(SE_OGhSwL_FLY_LV);
|
||||
|
||||
cCcD_Obj *pCcAt = mMdl.mCcList.findAtHit();
|
||||
if (pCcAt != nullptr) {
|
||||
if (pCcAt->GetAtActor()->isActorPlayer() && pCcAt->GetAtFlag0x2()) {
|
||||
field_0xD14.set(0.0f, 0.0f, 1.0f);
|
||||
field_0xD14.rotY(dAcPy_c::GetLink()->mRotation.y);
|
||||
|
||||
changeState(StateID_Reflect);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
mVec3_c moveDir = mVelocity;
|
||||
moveDir.normalizeRS();
|
||||
(void)mVelocity.mag(); // lol
|
||||
|
||||
mQuat_c q;
|
||||
mVec3_c from(1.0f, 0.0f, 0.0f);
|
||||
q.slerp(from, moveDir, 1.0f);
|
||||
field_0xD00.slerpTo(q, 0.5f, field_0xD00);
|
||||
field_0x8B0.fromQuat(field_0xD00);
|
||||
|
||||
mVelocity.y -= mAcceleration;
|
||||
mPosition += mVelocity;
|
||||
if (lineCheck()) {
|
||||
changeState(StateID_Reflect);
|
||||
return;
|
||||
}
|
||||
|
||||
if (mPosition.y <= mGhirahimPos.y + 5.0f) {
|
||||
field_0xD14.set(0.0f, 1.0f, 0.0f);
|
||||
changeState(StateID_Reflect);
|
||||
return;
|
||||
}
|
||||
|
||||
mTrailEmitterID = PARTICLE_RESOURCE_ID_MAPPING_1_;
|
||||
mWorldMtx.transM(30.0f, 0.0f, 0.0f);
|
||||
mEmitter.holdEffect(mTrailEmitterID, mWorldMtx, nullptr, nullptr);
|
||||
mWorldMtx.transM(-30.0f, 0.0f, 0.0f);
|
||||
}
|
||||
void dAcObjGirahimuSwordLink_c::finalizeState_AtThrow() {
|
||||
mMdl.setInactive();
|
||||
}
|
||||
|
||||
void dAcObjGirahimuSwordLink_c::initializeState_Stick() {
|
||||
holdSound(SE_OGhSwL_BOUND);
|
||||
mMdl.setInactive();
|
||||
mAcceleration = 0.0f;
|
||||
mVelocity.set(0.0f, 0.0f, 0.0f);
|
||||
}
|
||||
void dAcObjGirahimuSwordLink_c::executeState_Stick() {
|
||||
mVec3_c to(-1.0f, 0.0f, 0.0f);
|
||||
field_0x8B0.multVec(to, to);
|
||||
to.y = 0.0f;
|
||||
to.normalizeRS();
|
||||
|
||||
mQuat_c q;
|
||||
mVec3_c from(-1.0f, 0.0f, 0.0f);
|
||||
q.slerp(from, to, 1.0f);
|
||||
field_0xD00.slerpTo(q, 0.5f, field_0xD00);
|
||||
field_0x8B0.fromQuat(field_0xD00);
|
||||
|
||||
from = mPosition - dAcPy_c::GetLink()->mPosition;
|
||||
if (from.absXZ() < 60.0f) {
|
||||
changeState(StateID_Hide);
|
||||
dAcPy_c::GetLinkM()->relatedToUsingItem0x11();
|
||||
}
|
||||
}
|
||||
void dAcObjGirahimuSwordLink_c::finalizeState_Stick() {
|
||||
mRotation.z = 0;
|
||||
}
|
||||
|
||||
void dAcObjGirahimuSwordLink_c::initializeState_Reflect() {
|
||||
s32 _weird_zero = 0;
|
||||
reflect(field_0xD14, 3.0f, 10.f + _weird_zero, 0.5f);
|
||||
field_0x8AA = 0;
|
||||
}
|
||||
void dAcObjGirahimuSwordLink_c::executeState_Reflect() {
|
||||
sLib::chaseAngle(mRotation.z.ref(), 0, 0x1000);
|
||||
mVec3_c direction = mVelocity;
|
||||
|
||||
if (field_0xD26) {
|
||||
mMdl.mCcList.findAtHit();
|
||||
mMdl.SetGrp(0x3E);
|
||||
}
|
||||
|
||||
switch (field_0x8AA) {
|
||||
case 0:
|
||||
field_0xD24 += 0x1000;
|
||||
direction.normalizeRS();
|
||||
// fatll-through
|
||||
case 1:
|
||||
field_0xD24 += 0x1000;
|
||||
direction.normalizeRS();
|
||||
direction.y = field_0xD24.sin() * 0.3f;
|
||||
direction.normalizeRS();
|
||||
break;
|
||||
case 2:
|
||||
field_0xD24 += 0x1000;
|
||||
direction.normalizeRS();
|
||||
direction.y = field_0xD24.sin() * 0.3f;
|
||||
direction.normalizeRS();
|
||||
}
|
||||
mQuat_c q;
|
||||
mVec3_c from(1.0f, 0.0f, 0.0f);
|
||||
q.slerp(from, direction, 1.0f);
|
||||
field_0xD00.slerpTo(q, 0.5f, field_0xD00);
|
||||
field_0x8B0.fromQuat(field_0xD00);
|
||||
|
||||
mVelocity.y -= mAcceleration;
|
||||
mPosition += mVelocity;
|
||||
if (lineCheck()) {
|
||||
if (mPosition.y < 40.0f) {
|
||||
field_0x8AA++;
|
||||
}
|
||||
if (field_0x8AA >= 3) {
|
||||
changeState(StateID_Stick);
|
||||
} else {
|
||||
reflect(field_0xD14, 3.0f, 5.0f, 0.5f);
|
||||
}
|
||||
} else {
|
||||
if (mPosition.y <= mGhirahimPos.y + 5.0f) {
|
||||
mPosition.y = mGhirahimPos.y + 5.0f;
|
||||
field_0xD14.set(0.0f, 1.0f, 0.0f);
|
||||
|
||||
if (mPosition.y < 40.0f) {
|
||||
field_0x8AA++;
|
||||
}
|
||||
if (field_0x8AA < 3) {
|
||||
reflect(field_0xD14, 3.0f, 5.0f, 0.5f);
|
||||
} else {
|
||||
direction.set(1.0f, 0.0f, 0.0f);
|
||||
field_0x8B0.multVec(direction, direction);
|
||||
direction.y = 0.0f;
|
||||
direction.normalizeRS();
|
||||
mQuat_c q;
|
||||
mVec3_c from(1.0f, 0.0f, 0.0f);
|
||||
q.slerp(from, direction, 1.0f);
|
||||
field_0xD00.slerpTo(q, 0.5f, field_0xD00);
|
||||
field_0x8B0.fromQuat(field_0xD00);
|
||||
|
||||
changeState(StateID_Stick);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
mTrailEmitterID = PARTICLE_RESOURCE_ID_MAPPING_1_;
|
||||
mWorldMtx.transM(30.0f, 0.0f, 0.0f);
|
||||
mEmitter.holdEffect(mTrailEmitterID, mWorldMtx, nullptr, nullptr);
|
||||
mWorldMtx.transM(-30.0f, 0.0f, 0.0f);
|
||||
}
|
||||
void dAcObjGirahimuSwordLink_c::finalizeState_Reflect() {
|
||||
field_0xD26 = false;
|
||||
}
|
||||
|
||||
void dAcObjGirahimuSwordLink_c::setEquip() {
|
||||
changeState(StateID_Equip);
|
||||
}
|
||||
|
||||
void dAcObjGirahimuSwordLink_c::setGetSword() {
|
||||
changeState(StateID_GetSword);
|
||||
}
|
||||
|
||||
void dAcObjGirahimuSwordLink_c::setHide() {
|
||||
changeState(StateID_Hide);
|
||||
}
|
||||
|
||||
void dAcObjGirahimuSwordLink_c::setThrow(const mVec3_c &force, mAng angle, f32 rate) {
|
||||
mAcceleration = 3.0f;
|
||||
field_0xD10 = angle;
|
||||
calcVelocity(force, rate);
|
||||
changeState(StateID_Throw);
|
||||
}
|
||||
|
||||
void dAcObjGirahimuSwordLink_c::setAtThrow(const mVec3_c &velocity) {
|
||||
mAcceleration = 0.0f;
|
||||
field_0xD10 = 0;
|
||||
mVelocity.set(velocity);
|
||||
changeState(StateID_AtThrow);
|
||||
}
|
||||
|
||||
void dAcObjGirahimuSwordLink_c::fn_238_19D0() {
|
||||
return;
|
||||
}
|
||||
|
||||
void dAcObjGirahimuSwordLink_c::updateModelMatrix() {
|
||||
mWorldMtx.transS(mPosition.x, mPosition.y, mPosition.z);
|
||||
mWorldMtx.concat(field_0x8B0);
|
||||
mWorldMtx.ZXYrotM(mRotation);
|
||||
mMdl.calc(mWorldMtx, mPosition - mOldPosition, false);
|
||||
}
|
||||
|
||||
void dAcObjGirahimuSwordLink_c::setTransform(const mMtx_c &mtx, const mVec3_c &pos) {
|
||||
field_0x8B0 = mtx;
|
||||
field_0x8B0.ZrotM(-0x4000);
|
||||
field_0x8B0.XrotM(0x4000);
|
||||
setPosition(pos);
|
||||
setOldPosition(pos);
|
||||
}
|
||||
|
||||
bool dAcObjGirahimuSwordLink_c::isHide() {
|
||||
return getStateID().isEqual(StateID_Hide);
|
||||
}
|
||||
|
||||
bool dAcObjGirahimuSwordLink_c::isStick() {
|
||||
return getStateID().isEqual(StateID_Stick);
|
||||
}
|
||||
|
||||
// NONMATCHING
|
||||
void dAcObjGirahimuSwordLink_c::reflect(const mVec3_c &rot, f32 gravity, f32, f32 force) {
|
||||
if (rot.y == 1.0f) {
|
||||
startSound(SE_OGhSwL_BOUND);
|
||||
} else {
|
||||
startSound(SE_OGhSwL_HIT);
|
||||
}
|
||||
|
||||
mVec3_c v0(-mVelocity.x, -mVelocity.y, -mVelocity.z);
|
||||
mAng a1 = v0.atan2sX_Z();
|
||||
mAng a2 = rot.atan2sX_Z();
|
||||
s32 s = a1 - a2;
|
||||
f32 mag = nw4r::math::FAbs(mAng(s).normal_c());
|
||||
if (mag <= 0.1f) {
|
||||
mag = 0.1f;
|
||||
}
|
||||
if (mag >= 1.0f) {
|
||||
mag = 1.0f;
|
||||
}
|
||||
|
||||
f32 m = rot.mag();
|
||||
f32 dot = v0.dot(rot);
|
||||
f32 scale = dot * 2.0f / m;
|
||||
|
||||
mVec3_c v;
|
||||
mVelocity = rot * scale - v0;
|
||||
mVelocity *= force;
|
||||
|
||||
if (gravity < 0.0f) {
|
||||
gravity = -gravity;
|
||||
}
|
||||
mAcceleration = gravity;
|
||||
}
|
||||
|
||||
bool dAcObjGirahimuSwordLink_c::lineCheck() {
|
||||
mMtx_c m = field_0x8B0;
|
||||
m.ZXYrotM(mRotation);
|
||||
|
||||
mVec3_c start, end;
|
||||
start = mPosition;
|
||||
mVec3_c v0(100.0f, 0.0f, 0.0f);
|
||||
m.multVec(v0, v0);
|
||||
v0 += mPosition;
|
||||
end = v0;
|
||||
|
||||
v0.set(0.0f, mVelocity.mag(), 0.0f);
|
||||
m.multVec(v0, v0);
|
||||
v0 += mPosition;
|
||||
start = v0;
|
||||
|
||||
dBgS_ObjLinChk linChk;
|
||||
linChk.Set(&start, &end, nullptr);
|
||||
if (dBgS::GetInstance()->LineCross(&linChk)) {
|
||||
cM3dGPla pla;
|
||||
if (dBgS::GetInstance()->GetTriPla(linChk, &pla)) {
|
||||
field_0xD14.x = pla.GetN().x;
|
||||
field_0xD14.y = pla.GetN().y;
|
||||
field_0xD14.z = pla.GetN().z;
|
||||
}
|
||||
|
||||
if (mVelocity.dot(field_0xD14) < 0.0f) {
|
||||
mVec3_c newPos = linChk.GetLinEnd();
|
||||
mVec3_c v1 = field_0xD14;
|
||||
v1.normalizeRS();
|
||||
v1 *= 5.0f;
|
||||
newPos += v1;
|
||||
mPosition = newPos;
|
||||
if (mPosition.y <= mGhirahimPos.y + 5.0f) {
|
||||
mPosition.y = mGhirahimPos.y + 5.0f;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
linChk.Set(&end, &start, nullptr);
|
||||
if (dBgS::GetInstance()->LineCross(&linChk)) {
|
||||
cM3dGPla pla;
|
||||
if (dBgS::GetInstance()->GetTriPla(linChk, &pla)) {
|
||||
field_0xD14.x = pla.GetN().x;
|
||||
field_0xD14.y = pla.GetN().y;
|
||||
field_0xD14.z = pla.GetN().z;
|
||||
}
|
||||
|
||||
if (mVelocity.dot(field_0xD14) < 0.0f) {
|
||||
mVec3_c newPos = linChk.GetLinEnd();
|
||||
mVec3_c v1 = field_0xD14;
|
||||
v1.normalizeRS();
|
||||
v1.multScalar(5.0f);
|
||||
newPos += v1;
|
||||
mPosition = newPos;
|
||||
if (mPosition.y <= mGhirahimPos.y + 5.0f) {
|
||||
mPosition.y = mGhirahimPos.y + 5.0f;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ bool dEnemySwordMdl_c::create(
|
||||
}
|
||||
|
||||
bool dEnemySwordMdl_c::create(
|
||||
mAllocator_c *alloc, nw4r::g3d::ResFile resFile, const char *mdlName, u32 bufferOption, const mVec3_c &v1,
|
||||
mAllocator_c *alloc, nw4r::g3d::ResFile &resFile, const char *mdlName, u32 bufferOption, const mVec3_c &v1,
|
||||
const mVec3_c &v2, cCcD_Stts &stts, EGG::ResTIMG *pImg, int nView, u32 *pSize
|
||||
) {
|
||||
nw4r::g3d::ResMdl mdl = resFile.GetResMdl(mdlName);
|
||||
|
||||
Reference in New Issue
Block a user