mirror of
https://github.com/zeldaret/ss
synced 2026-07-09 06:13:17 -04:00
update d_a_insect
This commit is contained in:
+11
-11
@@ -10221,13 +10221,13 @@ fn_8018EB80 = .text:0x8018EB80; // type:function size:0x5C
|
||||
fn_8018EBE0 = .text:0x8018EBE0; // type:function size:0x38
|
||||
fn_8018EC20 = .text:0x8018EC20; // type:function size:0x2C
|
||||
fn_8018EC50 = .text:0x8018EC50; // type:function size:0x538
|
||||
fn_8018F190 = .text:0x8018F190; // type:function size:0x60
|
||||
kill__12dAcOInsect_cFv = .text:0x8018F190; // type:function size:0x60
|
||||
checkForLinkScare__12dAcOInsect_cFv = .text:0x8018F1F0; // type:function size:0xAC
|
||||
fn_8018F2A0 = .text:0x8018F2A0; // type:function size:0xA0
|
||||
checkDeath__12dAcOInsect_cFR9dBgS_Acch = .text:0x8018F2A0; // type:function size:0xA0
|
||||
isLinkUsingBugNet__12dAcOInsect_cFv = .text:0x8018F340; // type:function size:0x4C
|
||||
getLinkSpeedLevel__12dAcOInsect_cFv = .text:0x8018F390; // type:function size:0x50
|
||||
isLinkNearby__12dAcOInsect_cFf = .text:0x8018F3E0; // type:function size:0x40
|
||||
isLinkNearbyZ__12dAcOInsect_cFf = .text:0x8018F420; // type:function size:0x38
|
||||
checkPlayerRadius__12dAcOInsect_cFf = .text:0x8018F3E0; // type:function size:0x40
|
||||
checkPlayerElevationDiff__12dAcOInsect_cFf = .text:0x8018F420; // type:function size:0x38
|
||||
someBaseFunction__12dAcOInsect_cFv = .text:0x8018F460; // type:function size:0xD8
|
||||
dAcOInsect_0x8C__12dAcOInsect_cFv = .text:0x8018F540; // type:function size:0x8
|
||||
someBaseFunction0__12dAcOInsect_cFv = .text:0x8018F550; // type:function size:0xD4
|
||||
@@ -10240,16 +10240,16 @@ dAcOInsect_0x84__12dAcOInsect_cFv = .text:0x8018F7D0; // type:function size:0x8
|
||||
dAcOInsect_0x88__12dAcOInsect_cFv = .text:0x8018F7E0; // type:function size:0x8
|
||||
isLinkCloseAndFlag__12dAcOInsect_cFv = .text:0x8018F7F0; // type:function size:0xA8
|
||||
dAcOInsect_0x94__12dAcOInsect_cFv = .text:0x8018F8A0; // type:function size:0x8
|
||||
fn_8018F8B0 = .text:0x8018F8B0; // type:function size:0x14C
|
||||
fn_8018FA00 = .text:0x8018FA00; // type:function size:0x7C
|
||||
checkDeath__12dAcOInsect_cFR8cCcD_Obj = .text:0x8018F8B0; // type:function size:0x14C
|
||||
checkCaught__12dAcOInsect_cFR8cCcD_Obj = .text:0x8018FA00; // type:function size:0x7C
|
||||
resetScale__12dAcOInsect_cFv = .text:0x8018FA80; // type:function size:0x18
|
||||
fn_8018FAA0__12dAcOInsect_cFv = .text:0x8018FAA0; // type:function size:0x28
|
||||
fn_8018FAD0 = .text:0x8018FAD0; // type:function size:0x314
|
||||
fn_8018FDF0 = .text:0x8018FDF0; // type:function size:0x2C0
|
||||
fn_801900B0 = .text:0x801900B0; // type:function size:0xD0
|
||||
fn_8018FAD0__12dAcOInsect_cFv = .text:0x8018FAD0; // type:function size:0x314
|
||||
fn_8018FDF0__12dAcOInsect_cFRC7mVec3_c = .text:0x8018FDF0; // type:function size:0x2C0
|
||||
fn_801900B0__12dAcOInsect_cFRC7mVec3_cRC7mVec3_c = .text:0x801900B0; // type:function size:0xD0
|
||||
fn_80190180__12dAcOInsect_cFR4mAng = .text:0x80190180; // type:function size:0x2C0
|
||||
fn_80190440 = .text:0x80190440; // type:function size:0x1D0
|
||||
fn_80190610 = .text:0x80190610; // type:function size:0x2C
|
||||
fn_80190440__12dAcOInsect_cFv = .text:0x80190440; // type:function size:0x1D0
|
||||
fn_80190160__12dAcOInsect_cFv = .text:0x80190610; // type:function size:0x2C
|
||||
dAcOInsect_0xAC__12dAcOInsect_cFv = .text:0x80190640; // type:function size:0x4
|
||||
dAcOInsect_0xA8__12dAcOInsect_cFv = .text:0x80190650; // type:function size:0x4
|
||||
dAcOInsect_0xA4__12dAcOInsect_cFv = .text:0x80190660; // type:function size:0x8
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
#include "stddef.h"
|
||||
#include "toBeSorted/tlist.h"
|
||||
|
||||
|
||||
class dAcBase_c;
|
||||
|
||||
struct SoundSource {
|
||||
@@ -147,6 +146,10 @@ public:
|
||||
return diff.x * diff.x + diff.z * diff.z;
|
||||
}
|
||||
|
||||
f32 getDistanceTo(const mVec3_c &to) const {
|
||||
return position.distance(to);
|
||||
}
|
||||
|
||||
bool IsOutOfRange(const mVec3_c &point, f32 radius) {
|
||||
return getSquareDistanceTo(point) > radius;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
#include "d/a/d_a_base.h"
|
||||
#include "d/a/obj/d_a_obj_base.h"
|
||||
#include "d/col/bg/d_bg_w_base.h"
|
||||
#include "d/col/c/c_cc_d.h"
|
||||
#include "d/col/c/c_m3d_g_pla.h"
|
||||
#include "m/m_mtx.h"
|
||||
#include "m/m_vec.h"
|
||||
|
||||
@@ -36,12 +39,14 @@ public:
|
||||
return checkForLinkScare();
|
||||
}
|
||||
/* 0xAC */ virtual void dAcOInsect_0xAC() {}
|
||||
/* 0xB0 */ virtual void dAcOInsect_0xB0();
|
||||
/* 0xB0 */ virtual bool checkCaught(cCcD_Obj &col);
|
||||
|
||||
protected:
|
||||
void goPoof();
|
||||
bool isLinkNearby(f32 radius);
|
||||
bool isLinkNearbyZ(f32 distance);
|
||||
void kill();
|
||||
void checkDeath(dBgS_Acch &acch);
|
||||
bool checkDeath(cCcD_Obj &col);
|
||||
bool checkPlayerRadius(f32 radius);
|
||||
bool checkPlayerElevationDiff(f32 distance);
|
||||
void someBaseFunction();
|
||||
bool someBaseFunction0();
|
||||
bool checkForLinkScare();
|
||||
@@ -50,6 +55,11 @@ protected:
|
||||
static bool isLinkUsingBugNet();
|
||||
bool resetScale();
|
||||
bool fn_8018FAA0();
|
||||
bool fn_8018FAD0();
|
||||
void fn_8018FDF0(const mVec3_c &);
|
||||
int fn_801900B0(const mVec3_c &, const mVec3_c &);
|
||||
void fn_80190440();
|
||||
void fn_80190160();
|
||||
bool fn_80190180(mAng &outAng);
|
||||
|
||||
private:
|
||||
@@ -58,16 +68,26 @@ private:
|
||||
/* 0x335 */ u8 field_0x335;
|
||||
/* 0x338 */ u32 field_0x338;
|
||||
/* 0x33C */ mVec3_c field_0x33C;
|
||||
/* 0x348 */ u8 field_0x348[0x35C - 0x348];
|
||||
/* 0x348 */ mVec3_c field_0x348;
|
||||
/* 0x354 */ f32 field_0x354;
|
||||
/* 0x358 */ f32 field_0x358;
|
||||
/* 0x35C */ f32 field_0x35C;
|
||||
/* 0x360 */ u8 field_0x360[0x3BE - 0x360];
|
||||
/* 0x360 */ mVec3_c field_0x360;
|
||||
/* 0x36C */ mVec3_c field_0x36C;
|
||||
/* 0x378 */ u8 field_0x378[0x3A8 - 0x378];
|
||||
/* 0x3A8 */ cM3dGPla mPlane_0x3A8;
|
||||
/* 0x3B8 */ int mMaterial;
|
||||
/* 0x3BC */ u8 field_0x3BC;
|
||||
/* 0x3BD */ u8 field_0x3BD;
|
||||
/* 0x3BE */ u8 field_0x3BE;
|
||||
/* 0x3BF */ u8 field_0x3BF;
|
||||
/* 0x3C0 */ mMtx_c field_0x3C0;
|
||||
/* 0x3F0 */ u8 field_0x3F0[0x3F8 - 0x3F0];
|
||||
/* 0x3F0 */ u8 field_0x3F0[0x3F4 - 0x3F0];
|
||||
/* 0x3F4 */ u8 field_0x3F4;
|
||||
/* 0x3F8 */ u32 mLinkNearby;
|
||||
/* 0x3FC */ dAcRef_c<dAcBase_c> field_0x3FC;
|
||||
/* 0x408 */ u8 field_0x408[0x40D - 0x408];
|
||||
/* 0x408 */ u8 field_0x408[0x40C - 0x408];
|
||||
/* 0x40C */ u8 field_0x40C;
|
||||
/* 0x40D */ u8 field_0x40D;
|
||||
/* 0x410 */ mVec3_c field_0x410[3];
|
||||
/* 0x434 */ mVec3_c field_0x434[3];
|
||||
|
||||
@@ -224,6 +224,7 @@ public:
|
||||
/* 0x360 */ UNKWORD field_0x360;
|
||||
/* 0x364 */ u32 mActionFlags;
|
||||
/* 0x368 */ u32 mActionFlagsCont;
|
||||
/* 0x36C */ int mCurrentAction; // TODO (Document Enum)
|
||||
|
||||
inline bool checkFlags0x340(u32 mask) const {
|
||||
return (someFlags_0x340 & mask) != 0;
|
||||
@@ -237,5 +238,9 @@ public:
|
||||
return mActionFlags & FLG0_FLY;
|
||||
}
|
||||
|
||||
int getCurrentAction() const {
|
||||
return mCurrentAction;
|
||||
}
|
||||
|
||||
static dAcPy_c *LINK;
|
||||
};
|
||||
|
||||
@@ -97,6 +97,10 @@ public:
|
||||
return getVelocityMag() <= EGG::Math<f32>::epsilon();
|
||||
}
|
||||
|
||||
bool isSlowerThan(f32 speed) const {
|
||||
return fabsf(forwardSpeed) <= speed;
|
||||
}
|
||||
|
||||
// could be their own thing?
|
||||
/* 8002de40 */ static void *getOarcFile(const char *oarcName, const char *fileName);
|
||||
/* 8002de60 */ static void *getOarcSubEntry(const char *oarcName, const char *fileName);
|
||||
|
||||
@@ -67,6 +67,10 @@ public:
|
||||
void CopyGnd() {
|
||||
mGroundCopy = mGnd;
|
||||
}
|
||||
|
||||
f32 GetGroundH() const {
|
||||
return mGroundH;
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -68,6 +68,11 @@ struct mAng {
|
||||
f32 radian() const {
|
||||
return ((2.f * M_PI) / 65536.0f) * mVal;
|
||||
}
|
||||
|
||||
f32 radian2() const {
|
||||
return mVal * sAngToRad;
|
||||
}
|
||||
|
||||
static s16 fromRad(f32 rad) {
|
||||
return rad * sRadToAng;
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "m/m_vec.h"
|
||||
#include "nw4r/types_nw4r.h"
|
||||
#include "rvl/MTX/mtx.h"
|
||||
#include "rvl/MTX/mtxvec.h"
|
||||
|
||||
class mMtx_c : public EGG::Matrix34f {
|
||||
typedef f32 (*MtxRef)[4];
|
||||
@@ -70,6 +71,11 @@ public:
|
||||
void trans(f32 x, f32 y, f32 z) {
|
||||
PSMTXTrans(*this, x, y, z);
|
||||
}
|
||||
mVec3_c multVec(const mVec3_c &v) const {
|
||||
mVec3_c ret = v;
|
||||
PSMTXMultVec(*this, ret, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
mMtx_c &operator+=(const mMtx_c &rhs) {
|
||||
PSMTXConcat(*this, rhs, *this);
|
||||
|
||||
@@ -217,6 +217,13 @@ public:
|
||||
return PSVECMag(*this);
|
||||
}
|
||||
|
||||
f32 distance(const mVec3_c &to) const {
|
||||
return EGG::Math<f32>::sqrt(PSVECSquareDistance(*this, to));
|
||||
}
|
||||
|
||||
f32 squareMagXZ() const {
|
||||
return x * x + z * z;
|
||||
}
|
||||
void rotY(const mAng &angle);
|
||||
|
||||
void CopyTo(nw4r::math::VEC3 *p) {
|
||||
|
||||
+162
-43
@@ -1,47 +1,96 @@
|
||||
#include "d/a/d_a_insect.h"
|
||||
|
||||
#include "c/c_math.h"
|
||||
#include "common.h"
|
||||
#include "d/a/d_a_player.h"
|
||||
#include "d/col/bg/d_bg_pc.h"
|
||||
#include "d/col/bg/d_bg_s.h"
|
||||
#include "d/col/bg/d_bg_s_acch.h"
|
||||
#include "d/col/bg/d_bg_s_lin_chk.h"
|
||||
#include "d/col/bg/d_bg_w_base.h"
|
||||
#include "d/col/c/c_cc_d.h"
|
||||
#include "d/col/c/c_m3d_g_pla.h"
|
||||
#include "egg/math/eggMath.h"
|
||||
#include "m/m_angle.h"
|
||||
#include "m/m_mtx.h"
|
||||
#include "m/m_vec.h"
|
||||
#include "rvl/MTX/mtxvec.h"
|
||||
#include "toBeSorted/attention.h"
|
||||
|
||||
void AcOInsectFloats() {
|
||||
50.0f;
|
||||
1.0f;
|
||||
30.0f;
|
||||
5000.0f;
|
||||
0.1f;
|
||||
10.0f;
|
||||
500.0f;
|
||||
0.0f;
|
||||
400.0f;
|
||||
-200.0f;
|
||||
200.0f;
|
||||
20.0f;
|
||||
EGG::Math<f32>::epsilon();
|
||||
5.0f;
|
||||
-5.0f;
|
||||
0.99f;
|
||||
int x = 0;
|
||||
(f32) x;
|
||||
#include <cmath.h>
|
||||
|
||||
// Very Hack ??
|
||||
static inline bool IsZero(f32 in) {
|
||||
return in <= EGG::Math<f32>::epsilon();
|
||||
}
|
||||
|
||||
void AcOInsectFloats2() {
|
||||
-1.0f;
|
||||
0.5f;
|
||||
2250000.0f;
|
||||
// void AcOInsectFloats() {
|
||||
// 50.0f;
|
||||
// 1.0f;
|
||||
// 30.0f;
|
||||
// 5000.0f;
|
||||
// 0.1f;
|
||||
// 10.0f;
|
||||
// 500.0f;
|
||||
// 0.0f;
|
||||
// 400.0f;
|
||||
// -200.0f;
|
||||
// 200.0f;
|
||||
// 20.0f;
|
||||
// EGG::Math<f32>::epsilon();
|
||||
// 5.0f;
|
||||
// -5.0f;
|
||||
// 0.99f;
|
||||
// int x = 0;
|
||||
// (f32) x;
|
||||
// }
|
||||
|
||||
// void AcOInsectFloats2() {
|
||||
// -1.0f;
|
||||
// 0.5f;
|
||||
// 2250000.0f;
|
||||
// }
|
||||
|
||||
extern "C" void fn_800298B0(u16, mVec3_c *, mVec3_c *, u32, u32, u32, u32, u32);
|
||||
extern "C" u16 PARTICLE_RESOURCE_ID_MAPPING_394_;
|
||||
|
||||
void dAcOInsect_c::kill() {
|
||||
// Small Ordering issue between loading particle id and position
|
||||
fn_800298B0(PARTICLE_RESOURCE_ID_MAPPING_394_, &position, nullptr, 0, 0, 0, 0, 0);
|
||||
playSound(0x1236); // TODO (Sound ID)
|
||||
deleteRequest();
|
||||
}
|
||||
|
||||
bool dAcOInsect_c::checkForLinkScare() {
|
||||
if (dAcPy_c::LINK != nullptr) {
|
||||
// TODO
|
||||
if (dAcPy_c::LINK->getCurrentAction() == 12 /* Rolling */) { // TODO (Player Action Enum)
|
||||
if (dAcPy_c::LINK->getDistanceTo(position) < 50.f) {
|
||||
mLinkNearby = 1;
|
||||
return true;
|
||||
}
|
||||
} else if (dAcPy_c::LINK->forwardSpeed > 1.f) {
|
||||
if (dAcPy_c::LINK->getDistanceTo(position) < 30.f) {
|
||||
mLinkNearby = 1;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void dAcOInsect_c::checkDeath(dBgS_Acch &acch) {
|
||||
if (acch.ChkWaterHit() && acch.mWtr.GetGroundH() >= position.y) {
|
||||
kill();
|
||||
}
|
||||
if (acch.ChkGroundLanding() && dBgS::GetInstance()->GetSpecialCode(acch.mGnd) == POLY_ATTR_LAVA) {
|
||||
kill();
|
||||
}
|
||||
if (position.y < pos_copy.y - 5000.f) {
|
||||
deleteRequest();
|
||||
}
|
||||
}
|
||||
|
||||
bool dAcOInsect_c::isLinkUsingBugNet() {
|
||||
if (dAcPy_c::LINK != nullptr && !dAcPy_c::LINK->isUsingBugnet()) {
|
||||
return false;
|
||||
@@ -64,14 +113,14 @@ s32 dAcOInsect_c::getLinkSpeedLevel() {
|
||||
return 3;
|
||||
}
|
||||
|
||||
bool dAcOInsect_c::isLinkNearby(f32 rad) {
|
||||
bool dAcOInsect_c::checkPlayerRadius(f32 rad) {
|
||||
if (dAcPy_c::LINK != nullptr && isWithinPlayerRadius(rad)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool dAcOInsect_c::isLinkNearbyZ(f32 dist) {
|
||||
bool dAcOInsect_c::checkPlayerElevationDiff(f32 dist) {
|
||||
if (dAcPy_c::LINK != nullptr && fabsf(dAcPy_c::LINK->position.y - position.y) > dist) {
|
||||
return false;
|
||||
}
|
||||
@@ -81,7 +130,7 @@ bool dAcOInsect_c::isLinkNearbyZ(f32 dist) {
|
||||
void dAcOInsect_c::someBaseFunction() {
|
||||
dAcPy_c *link = dAcPy_c::LINK;
|
||||
if (link != nullptr) {
|
||||
if (isLinkNearbyZ(500.0f) && isLinkNearby(dAcOInsect_0x8C())) {
|
||||
if (checkPlayerElevationDiff(500.0f) && checkPlayerRadius(dAcOInsect_0x8C())) {
|
||||
field_0x335 = field_0x334;
|
||||
field_0x334 = link->isUsingBugnet1();
|
||||
if (link->isUsingBugnet1()) {
|
||||
@@ -100,7 +149,7 @@ void dAcOInsect_c::someBaseFunction() {
|
||||
|
||||
bool dAcOInsect_c::someBaseFunction0() {
|
||||
f32 rad = dAcOInsect_0x80();
|
||||
if (isLinkNearbyZ(500.0f) && isLinkNearby(rad)) {
|
||||
if (checkPlayerElevationDiff(500.0f) && checkPlayerRadius(rad)) {
|
||||
field_0x338 = 1;
|
||||
return true;
|
||||
}
|
||||
@@ -130,9 +179,7 @@ void dAcOInsect_c::addAttentionTarget() {
|
||||
void dAcOInsect_c::preAttention() {
|
||||
// It's always the simplest vector functions that cause problems
|
||||
poscopy2 = position;
|
||||
f32 y = position.y;
|
||||
y += 20.0f;
|
||||
poscopy2.y = y;
|
||||
poscopy2.y += 20.f;
|
||||
poscopy3 = poscopy2;
|
||||
}
|
||||
|
||||
@@ -153,6 +200,31 @@ bool dAcOInsect_c::isLinkCloseAndFlag() {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool dAcOInsect_c::checkDeath(cCcD_Obj &col) {
|
||||
if (field_0x3F4 != 0) {
|
||||
field_0x3F4--;
|
||||
return false;
|
||||
}
|
||||
|
||||
if (col.ChkTgHit() &&
|
||||
(col.ChkTgAtHitType(AT_TYPE_0x2) || col.ChkTgAtHitType(AT_TYPE_0x8) || col.ChkTgAtHitType(AT_TYPE_0x20) ||
|
||||
col.ChkTgAtHitType(AT_TYPE_0x40) || col.ChkTgAtHitType(AT_TYPE_0x80) || col.ChkTgAtHitType(AT_TYPE_0x2000) ||
|
||||
col.ChkTgAtHitType(AT_TYPE_0x4000) || col.ChkTgAtHitType(AT_TYPE_0x800000) ||
|
||||
col.ChkTgAtHitType(AT_TYPE_0x800))) {
|
||||
mLinkNearby = 0;
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool dAcOInsect_c::checkCaught(cCcD_Obj &col) {
|
||||
if (col.ChkTgHit() && col.ChkTgAtHitType(AT_TYPE_BUGNET)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool dAcOInsect_c::resetScale() {
|
||||
mScale.set(1.0f, 1.0f, 1.0f);
|
||||
return true;
|
||||
@@ -166,6 +238,50 @@ bool dAcOInsect_c::fn_8018FAA0() {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool dAcOInsect_c::fn_8018FAD0() {
|
||||
f32 speed = fabsf(forwardSpeed);
|
||||
if (IsZero(speed)) {
|
||||
fn_8018FDF0(mPlane_0x3A8.GetN());
|
||||
return true;
|
||||
} else {
|
||||
f32 clampSpeed = speed < 5.0f ? forwardSpeed > 0.f ? forwardSpeed : -5.f : 5.f;
|
||||
|
||||
mVec3_c pos0 = position + field_0x360;
|
||||
mVec3_c pos1 = pos0 + field_0x36C * forwardSpeed;
|
||||
int linType = fn_801900B0(pos0, pos1);
|
||||
field_0x410[0] = pos0;
|
||||
field_0x434[0] = pos1;
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
|
||||
void dAcOInsect_c::fn_8018FDF0(const mVec3_c &point) {
|
||||
mMtx_c mtx;
|
||||
field_0x360 = point;
|
||||
mtx.setAxisRotation(field_0x360, rotation.y.radian2());
|
||||
// TODO
|
||||
f32 a_comparision = 0.99f;
|
||||
}
|
||||
|
||||
int dAcOInsect_c::fn_801900B0(const mVec3_c &point0, const mVec3_c &point1) {
|
||||
cM3dGPla pla;
|
||||
if (!dBgS_ObjLinChk::LineCross(&point0, &point1, this)) {
|
||||
return 1;
|
||||
}
|
||||
if (!dBgS_ObjLinChk::GetTriPla(&pla)) {
|
||||
return 1;
|
||||
}
|
||||
if (mMaterial != dBgS_ObjLinChk::GetMaterial()) {
|
||||
return 2;
|
||||
}
|
||||
|
||||
position = dBgS_ObjLinChk::GetInstance().GetLinEnd();
|
||||
mPlane_0x3A8 = pla;
|
||||
field_0x3BC = 1;
|
||||
fn_8018FDF0(pla.GetN());
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Looks like it decides on a direction and angle based on a target point?
|
||||
bool dAcOInsect_c::fn_80190180(mAng &outAng) {
|
||||
// Stack and reg problems
|
||||
@@ -186,11 +302,8 @@ bool dAcOInsect_c::fn_80190180(mAng &outAng) {
|
||||
if (field_0x3BF != 0) {
|
||||
f32 len = fabsf(field_0x33C.y + field_0x35C * 0.5f - position.y);
|
||||
for (int i = 0; i < 4; i++) {
|
||||
mVec3_c tmp = vecs[i] * 20.0f;
|
||||
// ???
|
||||
mVec3_c tmp2 = tmp;
|
||||
PSMTXMultVec(field_0x3C0, tmp2, tmp2);
|
||||
f32 len2 = fabsf(field_0x33C.y + field_0x35C * 0.5f - tmp2.y);
|
||||
// mVec3_c tmp2 = field_0x3C0.multVec(vecs[i] * 20.0f);
|
||||
f32 len2 = fabsf(field_0x33C.y + field_0x35C * 0.5f - field_0x3C0.multVec(vecs[i] * 20.0f).y);
|
||||
if (len > len2) {
|
||||
len = len2;
|
||||
i3 = i;
|
||||
@@ -198,14 +311,10 @@ bool dAcOInsect_c::fn_80190180(mAng &outAng) {
|
||||
}
|
||||
} else if (field_0x3BE != 0) {
|
||||
mVec3_c dir = field_0x33C - position;
|
||||
f32 len = dir.x * dir.x + dir.z * dir.z;
|
||||
f32 len = dir.squareMagXZ();
|
||||
for (int i = 0; i < 4; i++) {
|
||||
mVec3_c tmp = vecs[i] * 20.0f;
|
||||
// ???
|
||||
mVec3_c tmp2 = tmp;
|
||||
PSMTXMultVec(field_0x3C0, tmp2, tmp2);
|
||||
mVec3_c dir2 = field_0x33C - tmp2;
|
||||
f32 len2 = dir2.x * dir2.x + dir2.z * dir2.z;
|
||||
// mVec3_c tmp2 = field_0x3C0.multVec(vecs[i] * 20.0f);
|
||||
f32 len2 = (field_0x33C - field_0x3C0.multVec(vecs[i] * 20.0f)).squareMagXZ();
|
||||
if (len > len2) {
|
||||
len = len2;
|
||||
i3 = i;
|
||||
@@ -221,3 +330,13 @@ bool dAcOInsect_c::fn_80190180(mAng &outAng) {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void dAcOInsect_c::fn_80190440() {
|
||||
f32 a = 2250000.f; // float order
|
||||
}
|
||||
|
||||
void dAcOInsect_c::fn_80190160() {
|
||||
field_0x33C = field_0x348;
|
||||
field_0x354 = field_0x358;
|
||||
field_0x40C = 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user