|
|
|
@@ -1,49 +1,416 @@
|
|
|
|
|
#include "Actor/Character/ActorCharacter.hpp"
|
|
|
|
|
#include "Physics/Cylinder.hpp"
|
|
|
|
|
#include "Player/TouchControl.hpp"
|
|
|
|
|
#include "Save/AdventureFlags.hpp"
|
|
|
|
|
#include "Unknown/UnkStruct_ov000_020c0c08.hpp"
|
|
|
|
|
#include "Unknown/UnkStruct_ov000_020e8b08.hpp"
|
|
|
|
|
#include "nds/math.h"
|
|
|
|
|
|
|
|
|
|
void ActorCharacter::func_ov014_02144d94() {}
|
|
|
|
|
void ActorCharacter::func_ov014_02144dec() {}
|
|
|
|
|
void ActorCharacter::func_ov014_02144e14() {}
|
|
|
|
|
void ActorCharacter::func_ov014_02144e28() {}
|
|
|
|
|
void ActorCharacter::func_ov014_02144e3c() {}
|
|
|
|
|
void ActorCharacter::func_ov014_02144e58() {}
|
|
|
|
|
void ActorCharacter::func_ov014_02144e74() {}
|
|
|
|
|
extern "C" void func_ov000_0209a4f4(UnkStruct_ov000_0209a50c *);
|
|
|
|
|
ARM void ActorCharacter::func_ov014_02144d94() {
|
|
|
|
|
UnkStruct_ov000_0209a50c UStack_b8;
|
|
|
|
|
UStack_b8.mUnk_04 = -1;
|
|
|
|
|
UStack_b8.mUnk_09 = 0x32;
|
|
|
|
|
UStack_b8.mUnk_0a = 0;
|
|
|
|
|
UStack_b8.mUnk_0b = 0;
|
|
|
|
|
mUnk_1b4 = gAdventureFlags->func_ov00_02097810(&UStack_b8);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ActorCharacter_288::ActorCharacter_288() :
|
|
|
|
|
UnkStruct_ov000_020c0c08(mUnk_24, NULL) {}
|
|
|
|
|
ActorCharacter::ActorCharacter() {}
|
|
|
|
|
ARM void ActorCharacter::func_ov014_02144dec() {
|
|
|
|
|
gAdventureFlags->func_ov00_02097bcc(mUnk_1b4);
|
|
|
|
|
mUnk_1b4 = -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ActorCharacter::~ActorCharacter() {}
|
|
|
|
|
bool ActorCharacter::Init() {}
|
|
|
|
|
void ActorCharacter::vfunc_20(bool param1) {}
|
|
|
|
|
ARM bool ActorCharacter::func_ov014_02144e14() {
|
|
|
|
|
return mUnk_020.mUnk_00[1] != 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ActorCharacter::func_ov014_02145178() {}
|
|
|
|
|
void ActorCharacter::func_ov014_021451f0(unk32 *param1) {}
|
|
|
|
|
void ActorCharacter::func_ov014_02145258() {}
|
|
|
|
|
unk32 ActorCharacter::func_ov014_021452b0() {}
|
|
|
|
|
unk32 ActorCharacter::func_ov014_02145318() {}
|
|
|
|
|
void ActorCharacter::func_ov014_021453f4() {}
|
|
|
|
|
void ActorCharacter::func_ov014_02145414() {}
|
|
|
|
|
void ActorCharacter::func_ov014_0214548c() {}
|
|
|
|
|
void ActorCharacter::func_ov014_02145508() {}
|
|
|
|
|
static void func_ov014_02145520(ActorCharacter *actor) {}
|
|
|
|
|
void ActorCharacter::func_ov014_0214552c() {}
|
|
|
|
|
ARM bool ActorCharacter::func_ov014_02144e28() {
|
|
|
|
|
return mUnk_020.mUnk_00[3] != 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ActorCharacter::vfunc_80() {}
|
|
|
|
|
void ActorCharacter::vfunc_84() {}
|
|
|
|
|
void ActorCharacter::vfunc_cc() {}
|
|
|
|
|
void ActorCharacter::vfunc_c8() {}
|
|
|
|
|
bool ActorCharacter::vfunc_78() {}
|
|
|
|
|
void ActorCharacter::vfunc_74() {}
|
|
|
|
|
void ActorCharacter::vfunc_7c() {}
|
|
|
|
|
bool ActorCharacter::vfunc_90() {}
|
|
|
|
|
void ActorCharacter::vfunc_94() {}
|
|
|
|
|
bool ActorCharacter::vfunc_98() {}
|
|
|
|
|
void ActorCharacter::vfunc_d0() {}
|
|
|
|
|
bool ActorCharacter::vfunc_9c() {}
|
|
|
|
|
void ActorCharacter::vfunc_ec(unk32 param1) {}
|
|
|
|
|
void ActorCharacter::vfunc_f0(unk32 param1) {}
|
|
|
|
|
ARM bool ActorCharacter::func_ov014_02144e3c() {
|
|
|
|
|
return gAdventureFlags->Get(mUnk_020.mUnk_00[1]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ActorCharacter::func_ov014_0214591c() {}
|
|
|
|
|
ARM bool ActorCharacter::func_ov014_02144e58() {
|
|
|
|
|
return gAdventureFlags->Get(mUnk_020.mUnk_00[3]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool ActorCharacter::IsHitboxTouched(bool param1) {}
|
|
|
|
|
ARM bool ActorCharacter::func_ov014_02144e74() {
|
|
|
|
|
return mInactive && this->func_ov014_02144e58();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM ActorCharacter_1d8_b0::ActorCharacter_1d8_b0() :
|
|
|
|
|
UnkStruct_ov000_020c0c08(&mUnk_24, NULL) {}
|
|
|
|
|
|
|
|
|
|
extern "C" void Fill32(unk32, unk32 *, unk32);
|
|
|
|
|
ARM ActorCharacter::ActorCharacter() :
|
|
|
|
|
mUnk_1d8(this) {
|
|
|
|
|
mUnk_448 = 3;
|
|
|
|
|
mUnk_454 = -1;
|
|
|
|
|
mUnk_458 = -1;
|
|
|
|
|
mUnk_460 = 0x153;
|
|
|
|
|
mUnk_464 = 0x71;
|
|
|
|
|
mUnk_468 = 0;
|
|
|
|
|
mUnk_469 = 0;
|
|
|
|
|
Fill32(0, mUnk_46c, 4);
|
|
|
|
|
Fill32(0, mUnk_46c, 4);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM ActorCharacter::~ActorCharacter() {}
|
|
|
|
|
|
|
|
|
|
ARM bool ActorCharacter::Init() {
|
|
|
|
|
ActorCharacterBase::Init();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern unk32 data_ov000_020e9370;
|
|
|
|
|
extern "C" void func_ov005_02102c2c(unk32 *, unk32, Vec3p *, unk32, unk32, unk32, unk32, unk32, unk32, unk32);
|
|
|
|
|
ARM void ActorCharacter::vfunc_20(bool param1) {
|
|
|
|
|
if (param1 ? mUnk_0a4.mUnk_01 : mUnk_0a4.mUnk_00) {
|
|
|
|
|
mUnk_1d8.func_ov000_020c5f1c();
|
|
|
|
|
if (mUnk_45c > 0) {
|
|
|
|
|
func_ov005_02102c2c(&data_ov000_020e9370, 0, &mPos, mUnk_45c, mUnk_45c, 0, 0x1f, 1, 1, 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct UnkStruct_ov005_021082e4 {
|
|
|
|
|
/* 00 */ unk32 mUnk_00;
|
|
|
|
|
/* 04 */ unk32 mUnk_04;
|
|
|
|
|
/* 08 */ unk32 mUnk_08;
|
|
|
|
|
/* 0c */ unk32 mUnk_0c;
|
|
|
|
|
/* 10 */ unk32 mUnk_10;
|
|
|
|
|
/* 14 */
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
extern unk32 data_027e0ff8;
|
|
|
|
|
extern "C" void func_ov005_021082e4(unk32, ActorRef *, Vec3p *, Vec3p *, UnkStruct_ov005_021082e4 *, unk32, unk32);
|
|
|
|
|
ARM void ActorCharacter::func_ov014_02145178() {
|
|
|
|
|
UnkStruct_ov005_021082e4 unk;
|
|
|
|
|
unk.mUnk_0c = 0;
|
|
|
|
|
unk.mUnk_00 = 0;
|
|
|
|
|
unk.mUnk_04 = 0;
|
|
|
|
|
unk.mUnk_08 = 0;
|
|
|
|
|
unk32 size = mHitbox.size;
|
|
|
|
|
unk.mUnk_10 = size * 2;
|
|
|
|
|
unk.mUnk_00 = 0;
|
|
|
|
|
unk.mUnk_04 = size;
|
|
|
|
|
unk.mUnk_0c = size;
|
|
|
|
|
unk.mUnk_08 = 0;
|
|
|
|
|
func_ov005_021082e4(data_027e0ff8, &mRef, &mPos, &mPrevPos, &unk, mUnk_448, -1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM void ActorCharacter::func_ov014_021451f0(unk32 *param1) {
|
|
|
|
|
unk32 iVar1 = param1[0];
|
|
|
|
|
mHitbox.pos.x = 0;
|
|
|
|
|
mHitbox.pos.y = iVar1;
|
|
|
|
|
mHitbox.pos.z = 0;
|
|
|
|
|
mHitbox.size = iVar1;
|
|
|
|
|
mUnk_08c.pos.x = mHitbox.pos.x;
|
|
|
|
|
mUnk_08c.pos.y = mHitbox.pos.y;
|
|
|
|
|
mUnk_08c.pos.z = mHitbox.pos.z;
|
|
|
|
|
mUnk_08c.size = mHitbox.size;
|
|
|
|
|
mUnk_0a4.mUnk_04.pos.x = 0;
|
|
|
|
|
mUnk_0a4.mUnk_04.pos.y = iVar1;
|
|
|
|
|
mUnk_0a4.mUnk_04.pos.z = 0;
|
|
|
|
|
mUnk_0a4.mUnk_04.size = iVar1 + 0x1000;
|
|
|
|
|
mUnk_45c = param1[1];
|
|
|
|
|
mYOffset = param1[2];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" bool func_ov000_020ccf0c(void *, ActorRef *);
|
|
|
|
|
ARM void ActorCharacter::func_ov014_02145258() {
|
|
|
|
|
Vec3p vel = mVel;
|
|
|
|
|
if (func_ov000_020ccf0c(&mUnk_1c4, &mRef)) {
|
|
|
|
|
Vec3p_Add(&vel, &mUnk_1c4.mUnk_00, &vel);
|
|
|
|
|
}
|
|
|
|
|
Vec3p_Add(&mPos, &vel, &mPos);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM unk32 ActorCharacter::func_ov014_021452b0() {
|
|
|
|
|
Vec3p offsetPos;
|
|
|
|
|
mUnk_1d8.mActor->GetOffsetPos(&offsetPos);
|
|
|
|
|
mUnk_1d8.mUnk_020.func_ov014_0214a92c(&offsetPos, &mUnk_1d8.mActor->mPos, mUnk_1d8.mActor->mAngle);
|
|
|
|
|
mVel.x = 0;
|
|
|
|
|
mVel.z = 0;
|
|
|
|
|
this->ApplyGravity();
|
|
|
|
|
this->func_ov014_02145258();
|
|
|
|
|
this->func_ov00_020c3094();
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" void ApproachAngle_thunk(u16 *src, unk32 dst, s16 param3);
|
|
|
|
|
ARM unk32 ActorCharacter::func_ov014_02145318() {
|
|
|
|
|
Vec3p offsetPos;
|
|
|
|
|
mUnk_1d8.mActor->GetOffsetPos(&offsetPos);
|
|
|
|
|
unk32 angle = mUnk_1d8.mUnk_020.func_ov014_0214aa0c(&offsetPos, mUnk_1d8.mActor->mAngle);
|
|
|
|
|
|
|
|
|
|
if (!mUnk_468) {
|
|
|
|
|
s16 angleDiff = angle - (s16) mAngle;
|
|
|
|
|
if (angleDiff < -0x7fff) {
|
|
|
|
|
angleDiff = (u32) -0x7fff >> 0x11;
|
|
|
|
|
} else if (angleDiff < 0) {
|
|
|
|
|
angleDiff = -angleDiff;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
unk32 speed = (angleDiff << 0xa) >> 0xc;
|
|
|
|
|
if (speed > FLOAT_TO_Q20(0.6667)) {
|
|
|
|
|
speed = FLOAT_TO_Q20(0.6667);
|
|
|
|
|
} else if (speed < FLOAT_TO_Q20(0.0888)) {
|
|
|
|
|
speed = FLOAT_TO_Q20(0.0888);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ApproachAngle_thunk(&this->mAngle, angle, speed);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mVel.x = 0;
|
|
|
|
|
mVel.z = 0;
|
|
|
|
|
this->ApplyGravity();
|
|
|
|
|
this->func_ov014_02145258();
|
|
|
|
|
this->func_ov00_020c3094();
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM void ActorCharacter::func_ov014_021453f4(unk32 param1) {
|
|
|
|
|
mUnk_430.func_ov000_020c66e4(&mPos, mAngle, param1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM void ActorCharacter::func_ov014_02145414(unk32 param1, unk32 param2) {
|
|
|
|
|
Vec3p offsetPos;
|
|
|
|
|
mUnk_430.func_ov000_020c6838(&mPos, param1, mAngle, param2, &mVel, &mAngle);
|
|
|
|
|
mUnk_1d8.mActor->GetOffsetPos(&offsetPos);
|
|
|
|
|
mUnk_1d8.mUnk_020.func_ov014_0214a92c(&offsetPos, &mUnk_1d8.mActor->mPos, mUnk_1d8.mActor->mAngle);
|
|
|
|
|
this->ApplyGravity();
|
|
|
|
|
this->func_ov014_02145258();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM void ActorCharacter::func_ov014_0214548c(unk32 param1) {
|
|
|
|
|
Vec3p vec;
|
|
|
|
|
if (!mUnk_430.func_ov000_020c66e4(&mPos, mAngle, param1)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (!mUnk_430.func_ov000_020c6e30(&vec)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
mPos.x = vec.x;
|
|
|
|
|
mPos.y = vec.y;
|
|
|
|
|
mPos.z = vec.z;
|
|
|
|
|
mPrevPos.x = vec.x;
|
|
|
|
|
mPrevPos.y = vec.y;
|
|
|
|
|
mPrevPos.z = vec.z;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM void ActorCharacter::func_ov014_02145508() {
|
|
|
|
|
mUnk_430.func_ov000_020c6f08(&mPos);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM bool ActorCharacter::func_ov014_02145520(ActorCharacterBase *actor) {
|
|
|
|
|
return ((ActorCharacter *) actor)->func_ov014_0214552c();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM bool ActorCharacter::func_ov014_0214552c() {
|
|
|
|
|
mUnk_1d8.func_ov014_02145cac();
|
|
|
|
|
this->func_ov014_02145414(mUnk_460, 0xaab);
|
|
|
|
|
this->func_ov00_020c3094();
|
|
|
|
|
bool result = mUnk_430.func_ov000_020c6794(&mPos);
|
|
|
|
|
if (result) {
|
|
|
|
|
mUnk_460 = 0x153;
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM void ActorCharacter::vfunc_80() {
|
|
|
|
|
ActorCharacterBase::vfunc_80();
|
|
|
|
|
if (mUnk_469) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
mUnk_44c = mUnk_1d8.mUnk_248.mUnk_00[mUnk_1d8.mUnk_248.mUnk_08];
|
|
|
|
|
mUnk_1d8.func_ov014_02145f0c(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM void ActorCharacter::vfunc_84() {
|
|
|
|
|
ActorCharacterBase::vfunc_84();
|
|
|
|
|
if (mUnk_469) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
mUnk_1d8.mUnk_020.mUnk_70.Reset();
|
|
|
|
|
mUnk_1d8.func_ov014_02145f0c(mUnk_44c);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// non-matching
|
|
|
|
|
ARM void ActorCharacter::vfunc_cc() {
|
|
|
|
|
bool unk;
|
|
|
|
|
ActorCharacter_1d8 *pUnk_1d8 = &mUnk_1d8;
|
|
|
|
|
if (mUnk_454 == pUnk_1d8->mUnk_248.mUnk_00[pUnk_1d8->mUnk_248.mUnk_08] && mUnk_1d8.mUnk_10->mUnk_0c.func_0202e58c()) {
|
|
|
|
|
unk = data_ov000_020e8b08 != NULL && mRef.id == data_ov000_020e8b08->mUnk_20[data_ov000_020e8b08->mUnk_55].id;
|
|
|
|
|
this->vfunc_f0(unk, 1);
|
|
|
|
|
mUnk_454 = -1;
|
|
|
|
|
}
|
|
|
|
|
mUnk_46c[0] &= ~1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM void ActorCharacter::vfunc_c8() {
|
|
|
|
|
this->func_ov014_02145318();
|
|
|
|
|
mUnk_1d8.func_ov014_02145cac();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM bool ActorCharacter::vfunc_78() {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM void ActorCharacter::vfunc_74(ActorRef *ref) {
|
|
|
|
|
int iVar1;
|
|
|
|
|
int iVar2;
|
|
|
|
|
|
|
|
|
|
if (ref->id == mRef.id) {
|
|
|
|
|
mUnk_1d8.mUnk_020.mUnk_70.Reset();
|
|
|
|
|
if (mUnk_1d8.mUnk_248.mUnk_00[mUnk_1d8.mUnk_248.mUnk_08] == 2) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (mUnk_469) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if ((mUnk_46c[0] & 1U) != 0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
mUnk_1d8.func_ov014_02145f0c(2);
|
|
|
|
|
} else {
|
|
|
|
|
mUnk_1d8.mUnk_020.mUnk_70.id = ref->id;
|
|
|
|
|
mUnk_1d8.mUnk_020.mUnk_70.index = ref->index;
|
|
|
|
|
if (mUnk_1d8.mUnk_248.mUnk_00[mUnk_1d8.mUnk_248.mUnk_08] == 0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (mUnk_469) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if ((mUnk_46c[0] & 1U) != 0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
mUnk_1d8.func_ov014_02145f0c(0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM void ActorCharacter::vfunc_7c(ActorRef *ref) {
|
|
|
|
|
if (ref->id != mRef.id) {
|
|
|
|
|
mUnk_1d8.mUnk_020.mUnk_70.id = ref->id;
|
|
|
|
|
mUnk_1d8.mUnk_020.mUnk_70.index = ref->index;
|
|
|
|
|
} else {
|
|
|
|
|
mUnk_1d8.mUnk_020.mUnk_70.Reset();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// non-matching
|
|
|
|
|
ARM bool ActorCharacter::vfunc_90(unk32 param1, unk32 param2) {
|
|
|
|
|
u32 iVar1;
|
|
|
|
|
u32 iVar2;
|
|
|
|
|
|
|
|
|
|
if (!mUnk_1c2) {
|
|
|
|
|
this->func_ov014_021453f4((unk8) param1);
|
|
|
|
|
mUnk_430.mUnk_0c = param2;
|
|
|
|
|
if (mUnk_1b8 == NULL) {
|
|
|
|
|
mUnk_1b8 = func_ov014_02145520;
|
|
|
|
|
mUnk_1bc = this;
|
|
|
|
|
}
|
|
|
|
|
mUnk_450 = mUnk_1d8.mUnk_248.mUnk_00[mUnk_1d8.mUnk_248.mUnk_08];
|
|
|
|
|
mUnk_1d8.func_ov014_02145f0c(this->UnkInline1());
|
|
|
|
|
mUnk_1c2 = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool result = mUnk_1b8 != func_ov014_02145520;
|
|
|
|
|
if (result) {
|
|
|
|
|
mUnk_1c2 = false;
|
|
|
|
|
mUnk_1d8.func_ov014_02145f0c(mUnk_450);
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM void ActorCharacter::vfunc_94(unk32 param1, unk32 param2) {
|
|
|
|
|
ActorCharacter_430_04 *unk1;
|
|
|
|
|
ActorCharacter_430_04_04 *unk2;
|
|
|
|
|
|
|
|
|
|
this->func_ov014_021453f4((unk8) param1);
|
|
|
|
|
unk1 = mUnk_430.mUnk_04;
|
|
|
|
|
if (param2 == 0) {
|
|
|
|
|
unk2 = &unk1->mUnk_04[unk1->mUnk_00[1] - 1];
|
|
|
|
|
} else {
|
|
|
|
|
unk2 = &unk1->mUnk_04[0];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Vec3p vec;
|
|
|
|
|
Vec3p_Set(&vec, unk2->mUnk_04.x, unk2->mUnk_04.y, unk2->mUnk_04.z);
|
|
|
|
|
vec.z = unk2->mUnk_04.z;
|
|
|
|
|
|
|
|
|
|
mPos.x = vec.x;
|
|
|
|
|
mPos.y = vec.y;
|
|
|
|
|
mPos.z = vec.z;
|
|
|
|
|
mPrevPos.x = vec.x;
|
|
|
|
|
mPrevPos.y = vec.y;
|
|
|
|
|
mPrevPos.z = vec.z;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM bool ActorCharacter::vfunc_98() {
|
|
|
|
|
mUnk_1c3 = true;
|
|
|
|
|
mUnk_44c = mUnk_1d8.mUnk_248.mUnk_00[mUnk_1d8.mUnk_248.mUnk_08];
|
|
|
|
|
return mUnk_1d8.func_ov014_02145f0c(0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM void ActorCharacter::vfunc_d0() {
|
|
|
|
|
mUnk_1d8.func_ov014_02145cac();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM bool ActorCharacter::vfunc_9c() {
|
|
|
|
|
mUnk_1c3 = false;
|
|
|
|
|
return mUnk_1d8.func_ov014_02145f0c(mUnk_44c);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM void ActorCharacter::vfunc_ec(unk32 param1) {
|
|
|
|
|
mUnk_1d8.func_ov014_02145f0c(param1);
|
|
|
|
|
mUnk_46c[0] |= 1;
|
|
|
|
|
if (mUnk_1d8.mUnk_10->mUnk_0c.mUnk_00 == 1) {
|
|
|
|
|
mUnk_454 = param1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM void ActorCharacter::vfunc_f0(unk32 param1, unk32 param2) {
|
|
|
|
|
mUnk_1d8.func_ov014_02145f0c(param1 ? 2 : 0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ARM void ActorCharacter::func_ov014_0214591c() {
|
|
|
|
|
if ((mUnk_46c[0] & 1U) == 0) {
|
|
|
|
|
bool unk = data_ov000_020e8b08 == NULL || mRef.id == data_ov000_020e8b08->mUnk_20[data_ov000_020e8b08->mUnk_55].id;
|
|
|
|
|
mUnk_1d8.func_ov014_02145f0c(unk ? 2 : 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
struct UnkStruct_ov014_02145974 {
|
|
|
|
|
/* 00 */ PAD(0x00, 0x18);
|
|
|
|
|
/* 18 */ Cylinder mUnk_18;
|
|
|
|
|
/* 28 */ Cylinder mUnk_28;
|
|
|
|
|
/* 38 */
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
ARM bool ActorCharacter::IsHitboxTouched(bool param1) {
|
|
|
|
|
UnkStruct_ov014_02145974 sp_0;
|
|
|
|
|
{
|
|
|
|
|
sp_0.mUnk_28.size = (mYOffset + (mYOffset << 1)) >> 3;
|
|
|
|
|
Vec3p pos = {mPos.x, mPos.y, mPos.z};
|
|
|
|
|
sp_0.mUnk_28.pos = pos;
|
|
|
|
|
sp_0.mUnk_28.pos.y += mYOffset >> 1;
|
|
|
|
|
}
|
|
|
|
|
{
|
|
|
|
|
sp_0.mUnk_18.size = FLOAT_TO_Q20(0.3);
|
|
|
|
|
Vec3p pos = {mPos.x, mPos.y, mPos.z};
|
|
|
|
|
sp_0.mUnk_18.pos = pos;
|
|
|
|
|
sp_0.mUnk_18.pos.y += mYOffset + FLOAT_TO_Q20(0.3);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (param1) {
|
|
|
|
|
return TouchControl::func_0202b864(&sp_0.mUnk_28.pos, sp_0.mUnk_28.size, 8) ||
|
|
|
|
|
TouchControl::func_0202b864(&sp_0.mUnk_18.pos, sp_0.mUnk_18.size, 8);
|
|
|
|
|
} else {
|
|
|
|
|
return TouchControl::func_0202b894(&sp_0.mUnk_28.pos, sp_0.mUnk_28.size, 8) ||
|
|
|
|
|
TouchControl::func_0202b894(&sp_0.mUnk_18.pos, sp_0.mUnk_18.size, 8);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|