Tuple operations

This commit is contained in:
Nabnut
2024-09-22 11:24:26 +02:00
parent fbe20325c2
commit bb58ae66e9
30 changed files with 205 additions and 260 deletions

View File

@@ -39,6 +39,54 @@ extern f32 fabsf(f32);
dst[2] = src[2];\
}
#define TUPLE_ADD(dst, vec) { \
dst[0] += vec[0]; \
dst[1] += vec[1]; \
dst[2] += vec[2]; \
}
#define TUPLE_ADD_COPY(dst, vec1, vec2) { \
dst[0] = vec1[0] + vec2[0]; \
dst[1] = vec1[1] + vec2[1]; \
dst[2] = vec1[2] + vec2[2]; \
}
#define TUPLE_DIFF(dst, vec) { \
dst[0] -= vec[0]; \
dst[1] -= vec[1]; \
dst[2] -= vec[2]; \
}
#define TUPLE_DIFF_COPY(dst, vec1, vec2) { \
dst[0] = vec1[0] - vec2[0]; \
dst[1] = vec1[1] - vec2[1]; \
dst[2] = vec1[2] - vec2[2]; \
}
#define TUPLE_MULTIPLY_COPY(dst, vec1, vec2) { \
dst[0] = vec1[0] * vec2[0]; \
dst[1] = vec1[1] * vec2[1]; \
dst[2] = vec1[2] * vec2[2]; \
}
#define TUPLE_SCALE(vec, value) { \
vec[0] *= value; \
vec[1] *= value; \
vec[2] *= value; \
}
#define TUPLE_SCALE_COPY(dst, vec, value) { \
dst[0] = vec[0] * value; \
dst[1] = vec[1] * value; \
dst[2] = vec[2] * value; \
}
#define TUPLE_CROSS_PRODUCT(dst, vec1, vec2) { \
dst[0] = vec1[1] * vec2[2] - vec1[2] * vec2[1]; \
dst[1] = vec1[2] * vec2[0] - vec1[0] * vec2[2]; \
dst[2] = vec1[0] * vec2[1] - vec1[1] * vec2[0]; \
}
#define v3Copy(dst, src) {\
dst[0] = src[0];\
dst[1] = src[1];\
@@ -52,6 +100,9 @@ extern f32 fabsf(f32);
}
#define LENGTH_SQ_VEC3F(v) (v[0]*v[0] + v[1]*v[1] + v[2]*v[2])
#define LENGTH_VEC3F(v) gu_sqrtf(LENGTH_SQ_VEC3F(v))
#define TUPLE_DOT_PRODUCT(vec1, vec2) (vec1[0] * vec2[0] + vec1[1] * vec2[1] + vec1[2] * vec2[2])
//known it uses "+" instead of "|" for fight/code_9D40.c, func_8039049C, case 6
#define FUNC_8030E624(sfx_e, vol, sample_rate) func_8030E624(\

View File

@@ -338,10 +338,8 @@ void chflibbit_update(Actor *this){
}
player_getPosition(player_position);
spB0[0] = player_position[0] - this->position[0];
spB0[1] = player_position[1] - this->position[1];
spB0[2] = player_position[2] - this->position[2];
player_distance = gu_sqrtf(spB0[0]*spB0[0] + spB0[1]*spB0[1] + spB0[2]*spB0[2]);
TUPLE_DIFF_COPY(spB0, player_position, this->position)
player_distance = LENGTH_VEC3F(spB0);
if(ml_timer_update(&local->unk24, spA4)){
func_8030E878(0x3f0, randf2(0.9f, 1.1f), randi2(12000, 19000), this->position, 500.0f, 2500.0f);
@@ -427,15 +425,11 @@ void chflibbit_update(Actor *this){
}
if(this->state == 6){
sp4C[0] = this->position[0] - player_position[0];
sp4C[1] = this->position[1] - player_position[1];
sp4C[2] = this->position[2] - player_position[2];
TUPLE_DIFF_COPY(sp4C, this->position, player_position)
sp4C[1] = 0.0f;
ml_vec3f_set_length(sp4C, 400.0f * spA4);
this->position[0] = this->position[0] + sp4C[0];
this->position[1] = this->position[1] + sp4C[1];
this->position[2] = this->position[2] + sp4C[2];
TUPLE_ADD_COPY(this->position, this->position, sp4C)
this->position_y += local->unk14*spA4;
local->unk14 -= 3000.0f*spA4;

View File

@@ -88,7 +88,7 @@ void chmudhut_update(Actor *this){
if( (150.0f < diffPos[1])
&& (player_getActiveHitbox(this->marker) == HITBOX_1_BEAK_BUSTER)
&& (func_8028F20C())
&& (gu_sqrtf(diffPos[0]*diffPos[0] + diffPos[1]*diffPos[1] + diffPos[2]*diffPos[2]) < 350.f)
&& (LENGTH_VEC3F(diffPos) < 350.f)
){
tmp = (s32)( (this->position_y - 600.f)/430.0f);
diffPos[0] = this->position_x;

View File

@@ -371,7 +371,7 @@ void BGS_func_8038E034(Actor *this) {
spA8[0] = spB4[0] - this->position[0];
spA8[1] = spB4[1] - this->position[1];
spA8[2] = spB4[2] - this->position[2];
spA4 = gu_sqrtf(spA8[0]*spA8[0] + spA8[1]*spA8[1] + spA8[2]*spA8[2]);
spA4 = LENGTH_VEC3F(spA8);
if (ml_timer_update(&local->unk28, sp9C) != 0) {
func_8030E878(0x3F0, randf2(0.9f, 1.1f), randi2(12000, 19000), this->position, 500.0f, 2500.0f);
local->unk28 = randf2(1.0f, 6.0f);

View File

@@ -132,14 +132,11 @@ void BGS_func_80389850(Actor *this, s32 arg1) {
local = (ActorLocal_BGS_3420 *)&this->local;
vile = marker_getActor(local->vile_marker);
if (arg1 != 0) {
if (gu_sqrtf(this->position[0]*this->position[0] + this->position[1]*this->position[1] + this->position[2]*this->position[2]) < 800.0f) {
sp7C[0] = 0.0f;
sp7C[1] = 150.0f;
sp7C[2] = 300.0f;
if (LENGTH_VEC3F(this->position) < 800.0f) {
TUPLE_ASSIGN(sp7C, 0.0f, 150.0f, 300.0f)
ml_vec3f_yaw_rotate_copy(sp7C, sp7C, vile->yaw);
sp94[0] = vile->position[0] + sp7C[0];
sp94[1] = vile->position[1] + sp7C[1];
sp94[2] = vile->position[2] + sp7C[2];
TUPLE_ADD_COPY(sp94, vile->position, sp7C)
func_802C8F70(vile->yaw);
jiggy_spawn(JIGGY_28_BGS_MR_VILE, sp94);
} else {

View File

@@ -68,7 +68,7 @@ void func_803864D4(Actor *this){
if(!CC_func_80388CA0()){
local->unk4 = 2.0f;
}
else if(60.0f < gu_sqrtf(sp30[0]*sp30[0] + sp30[1]*sp30[1] + sp30[2]*sp30[2])){
else if(60.0f < LENGTH_VEC3F(sp30)){
local->unk4 = 0.05f;
}
else{

View File

@@ -136,7 +136,7 @@ void CC_func_80387A40(Struct_CC_13C0_1* arg0, Struct68s* arg1, f32 arg2) {
sp50[2] -= sp38[2];
sp28 = ((sp50[0]*sp44[0] + sp50[1]*sp44[1] + sp50[2]*sp44[2]) >= 0.0f) ? 1 : -1;
if (sp28 == -arg0->unk8) {
if (gu_sqrtf(sp50[0]*sp50[0] + sp50[1]*sp50[1] + sp50[2] * sp50[2]) < (func_80351830(arg1) * 250.0f)) {
if (LENGTH_VEC3F(sp50) < (func_80351830(arg1) * 250.0f)) {
func_8038803C(arg0->unk0);
}
}

View File

@@ -101,7 +101,7 @@ void CCW_func_80387A40(Actor *this) {
local->unk18[0] += sp5C[0] * sp68;
local->unk18[1] += sp5C[1] * sp68;
local->unk18[2] += sp5C[2] * sp68;
if (local->unk8 < gu_sqrtf(local->unk18[0]*local->unk18[0] + local->unk18[1]*local->unk18[1] + local->unk18[2]*local->unk18[2])) {
if (local->unk8 < LENGTH_VEC3F(local->unk18)) {
ml_vec3f_set_length(local->unk18, local->unk8);
}
func_80258A4C(this->position, this->yaw - 90.0f, local->unkC, &sp58, &sp54, &sp50);
@@ -117,7 +117,7 @@ void CCW_func_80387A40(Actor *this) {
sfxsource_set_fade_distances(local->unk0, 500.0f, 1500.0f);
sfxsource_set_position(local->unk0, this->position);
func_8030E2C4(local->unk0);
sfxsource_setSampleRate(local->unk0, 2000.0f + 8000.0f*(gu_sqrtf(local->unk18[0]*local->unk18[0] + local->unk18[1]*local->unk18[1] + local->unk18[2]*local->unk18[2])/ local->unk8));
sfxsource_setSampleRate(local->unk0, 2000.0f + 8000.0f*(LENGTH_VEC3F(local->unk18)/ local->unk8));
if (!mapSpecificFlags_get(local->unk4->unk2)) {
player_getPosition(sp44);
if (sp44[2] > -600.0f) {

View File

@@ -85,7 +85,7 @@ void chhut_update(Actor *this){
if(150.0f < diff_pos[1]
&& player_getActiveHitbox(this->marker) == HITBOX_1_BEAK_BUSTER
&& func_8028F20C()
&& gu_sqrtf(diff_pos[0]*diff_pos[0] + diff_pos[1]*diff_pos[1] + diff_pos[2]*diff_pos[2]) < 350.0f
&& LENGTH_VEC3F(diff_pos) < 350.0f
){
diff_pos[0] = this->position_x;
diff_pos[1] = this->position_y;

View File

@@ -161,7 +161,7 @@ void chmotzhand_update(Actor *this){
sp3C[0] = sp30[0] - this->position_x;
sp3C[1] = sp30[1] - this->position_y;
sp3C[2] = sp30[2] - this->position_z;
if(gu_sqrtf(sp3C[0]*sp3C[0] + sp3C[1]*sp3C[1] + sp3C[2]*sp3C[2]) < 5.0f){
if(LENGTH_VEC3F(sp3C) < 5.0f){
if(*local->pattern_ptr == 0xff){
chMotzhand_setState(this, 1);
}

View File

@@ -186,9 +186,8 @@ void chnapper_update(Actor *this){
sp30[0] = player_position[0] - this->position_x;
sp30[1] = player_position[1] - this->position_y;
sp30[2] = player_position[2] - this->position_z;
if( 0.0f < sp30[2]
&& gu_sqrtf(sp30[0]*sp30[0] + sp30[1]*sp30[1] + sp30[2]*sp30[2]) < 600.0f
){
if (0.0f < sp30[2] && LENGTH_VEC3F(sp30) < 600.0f) {
__chnapper_setState(this, 5);
}
else{//L8038703C

View File

@@ -140,7 +140,7 @@ void func_8038AF90(Struct_MMM_47D0_0 *arg0, Struct68s *arg1, f32 arg2) {
arg0->unkC[0] *= 0.7;
arg0->unkC[2] *= 0.7;
}
if (gu_sqrtf(arg0->unkC[0]*arg0->unkC[0] + arg0->unkC[1]*arg0->unkC[1] + arg0->unkC[2]*arg0->unkC[2]) > 400.0f) {
if (LENGTH_VEC3F(arg0->unkC) > 400.0f) {
ml_vec3f_set_length(arg0->unkC, 400.0f);
}
sp54[0] += arg0->unkC[0] * arg2;
@@ -173,7 +173,7 @@ void func_8038AF90(Struct_MMM_47D0_0 *arg0, Struct68s *arg1, f32 arg2) {
sfxsource_setSampleRate(sp38, 0);
} else {
sp38 = func_80351758(arg1);
sfxsource_setSampleRate(sp38, (s32) ((gu_sqrtf(arg0->unkC[0]*arg0->unkC[0] + arg0->unkC[1]*arg0->unkC[1] + arg0->unkC[2]*arg0->unkC[2]) / 400.0) * 15000.0));
sfxsource_setSampleRate(sp38, (s32) ((LENGTH_VEC3F(arg0->unkC) / 400.0) * 15000.0));
}
player_getPosition(sp48);
func_8035179C(arg1, sp54);

View File

@@ -165,7 +165,7 @@ int func_8038EF08(Actor *this, f32 (*position)[3], f32 arg2){
sp54[0] = (*position)[0] - this->position_x;
sp54[1] = (*position)[1] - this->position_y;
sp54[2] = (*position)[2] - this->position_z;
if(180.0 < gu_sqrtf(sp54[0]*sp54[0] + sp54[1]*sp54[1] + sp54[2]*sp54[2]))
if(180.0 < LENGTH_VEC3F(sp54))
ml_vec3f_set_length(&sp54, 150.0f);
local->unk20[0] = sp54[0] + this->position_x;

View File

@@ -408,7 +408,7 @@ void func_80388080(Actor *this){
sp6C[0] = this->unk1C_x - this->position_x;
sp6C[1] = this->unk1C_y - this->position_y;
sp6C[2] = this->unk1C_z - this->position_z;
if( gu_sqrtf(sp6C[0]*sp6C[0] + sp6C[1]*sp6C[1] + sp6C[2]*sp6C[2] ) < 40.0f){
if( LENGTH_VEC3F(sp6C) < 40.0f){
ml_vec3f_set_length(sp6C, 400.0f);
}
else{

View File

@@ -58,9 +58,7 @@ bool __chClam_updateTarget(Actor *this, f32 arg1) {
&& (egg != 0)
&& func_80307258(egg->position, this->unk10_25 - 1, this->unk10_18 - 1) != -1
) {
target_position[0] = egg->position[0];
target_position[1] = egg->position[1];
target_position[2] = egg->position[2];
TUPLE_COPY(target_position, egg->position)
phi_f2 = red_feather_dist;
}
else if(
@@ -69,9 +67,7 @@ bool __chClam_updateTarget(Actor *this, f32 arg1) {
&& (red_feather != 0)
&& func_80307258(red_feather->position, this->unk10_25 - 1, this->unk10_18 - 1) != -1
){
target_position[0] = red_feather->position[0];
target_position[1] = red_feather->position[1];
target_position[2] = red_feather->position[2];
TUPLE_COPY(target_position, red_feather->position)
phi_f2 = egg_dist;
}
else if ((func_80329530(this, 1200) != 0) && (func_803292E0(this) != 0)) {

View File

@@ -43,8 +43,6 @@ void ml_vec3f_roll_rotate_copy(f32 arg0[3], f32 arg1[3], f32);
#define _SQ2(x, y) ((x) * (x) + (y) * (y))
#define _SQ3(x, y, z) (((x) * (x)) + ((y) * (y)) + ((z) * (z)))
#define _SQ3v1(v) (v[0] * v[0] + v[1] * v[1] + v[2] * v[2])
#define _SQ3v2(v1, v2) (v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2])
/* .code */
f32 func_80255D70(f32 x)
@@ -101,9 +99,7 @@ void func_80255E58(f32 vec1[3], f32 vec2[3], f32 vec3[3], f32 vec4[3])
{
f32 tmp[3];
tmp[0] = vec3[0] - vec1[0];
tmp[1] = vec3[1] - vec1[1];
tmp[2] = vec3[2] - vec1[2];
TUPLE_DIFF_COPY(tmp, vec3, vec1)
ml_vec3f_yaw_rotate_copy(tmp, tmp, -vec2[1]);
ml_vec3f_pitch_rotate_copy( tmp, tmp, -vec2[0]);
@@ -118,17 +114,13 @@ f32 func_80255F14(f32 vec1[3], f32 vec2[3])
ml_vec3f_normalize_copy(tmp1, vec1);
ml_vec3f_normalize_copy(tmp2, vec2);
return tmp1[0] * tmp2[0]
+ tmp1[1] * tmp2[1]
+ tmp1[2] * tmp2[2];
return TUPLE_DOT_PRODUCT(tmp1, tmp2);
}
//ml_vec3f_cross_product
void ml_crossProduct_vec3f(f32 dst[3], f32 src1[3], f32 src2[3])
void ml_crossProduct_vec3f(f32 dst[3], f32 vec1[3], f32 vec2[3])
{
dst[0] = src1[1] * src2[2] - src1[2] * src2[1];
dst[1] = src1[2] * src2[0] - src1[0] * src2[2];
dst[2] = src1[0] * src2[1] - src1[1] * src2[0];
TUPLE_CROSS_PRODUCT(dst, vec1, vec2)
}
void ml_interpolate_vec3f(f32 dst[3], f32 vec1[3], f32 vec2[3], f32 scale)
@@ -140,20 +132,14 @@ void ml_interpolate_vec3f(f32 dst[3], f32 vec1[3], f32 vec2[3], f32 scale)
f32 ml_dotProduct_vec3f(f32 vec1[3], f32 vec2[3])
{
return vec1[0] * vec2[0]
+ vec1[1] * vec2[1]
+ vec1[2] * vec2[2];
return TUPLE_DOT_PRODUCT(vec1, vec2);
}
f32 ml_distance_vec3f(f32 vec1[3], f32 vec2[3])
{
f32 diff[3];
diff[0] = vec1[0] - vec2[0];
diff[1] = vec1[1] - vec2[1];
diff[2] = vec1[2] - vec2[2];
return gu_sqrtf(_SQ3(diff[0], diff[1], diff[2]));
TUPLE_DIFF_COPY(diff, vec1, vec2)
return LENGTH_VEC3F(diff);
}
f32 func_802560D0(f32 arg0[3], f32 arg1[3], f32 arg2[3]) {
@@ -167,18 +153,16 @@ f32 func_802560D0(f32 arg0[3], f32 arg1[3], f32 arg2[3]) {
f32 sp20;
f32 pad58;
sp24[0] = arg1[0] - arg0[0];
sp24[1] = arg1[1] - arg0[1];
sp24[2] = arg1[2] - arg0[2];
sp20 = gu_sqrtf(sp24[0]*sp24[0] + sp24[1]*sp24[1] + sp24[2]*sp24[2]);
TUPLE_DIFF_COPY(sp24, arg1, arg0)
sp20 = LENGTH_VEC3F(sp24);
if (sp20 < 0.01) {
return ml_distance_vec3f(arg0, arg2);
}
sp3C[0] = arg2[0] - arg0[0];
sp3C[1] = arg2[1] - arg0[1];
sp3C[2] = arg2[2] - arg0[2];
sp38 = gu_sqrtf(sp3C[0]*sp3C[0] + sp3C[1]*sp3C[1] + sp3C[2]*sp3C[2]);
TUPLE_DIFF_COPY(sp3C, arg2, arg0)
sp38 = LENGTH_VEC3F(sp3C);
if (sp38 < 0.01) {
return sp38;
}
@@ -195,11 +179,8 @@ f32 ml_distanceSquared_vec3f(f32 vec1[3], f32 vec2[3])
{
f32 diff[3];
diff[0] = vec1[0] - vec2[0];
diff[1] = vec1[1] - vec2[1];
diff[2] = vec1[2] - vec2[2];
return _SQ3(diff[0], diff[1], diff[2]);
TUPLE_DIFF_COPY(diff, vec1, vec2)
return LENGTH_SQ_VEC3F(diff);
}
void func_802562DC(f32 vec1[3], f32 vec2[3], f32 vec3[3])
@@ -208,23 +189,18 @@ void func_802562DC(f32 vec1[3], f32 vec2[3], f32 vec3[3])
? vec1[1] * 100
: vec1[1] / -vec2[1];
vec2[0] *= tmp;
vec2[1] *= tmp;
vec2[2] *= tmp;
vec3[0] = vec1[0] + vec2[0];
vec3[1] = vec1[1] + vec2[1];
vec3[2] = vec1[2] + vec2[2];
TUPLE_SCALE(vec2, tmp)
TUPLE_ADD_COPY(vec3, vec1, vec2)
}
f32 ml_vec2f_length(f32 vec[3])
f32 ml_vec3f_length_unused(f32 vec[3])
{
return gu_sqrtf(_SQ3(vec[0], vec[1], vec[2]));
return LENGTH_VEC3F(vec);
}
void ml_vec3f_normalize_copy(f32 arg0[3], f32 arg1[3])
{
f32 length_squared = _SQ3(arg1[0], arg1[1], arg1[2]);
f32 length_squared = LENGTH_SQ_VEC3F(arg1);
f32 inverse;
if (length_squared != 0)
@@ -240,15 +216,12 @@ void ml_vec3f_normalize_copy(f32 arg0[3], f32 arg1[3])
void ml_vec3f_normalize(f32 vec[3])
{
f32 length_squared = _SQ3(vec[0], vec[1], vec[2]);
f32 length_squared = LENGTH_SQ_VEC3F(vec);
if (length_squared != 0)
{
f32 inverse = 1.0 / gu_sqrtf(length_squared);
vec[0] *= inverse;
vec[1] *= inverse;
vec[2] *= inverse;
TUPLE_SCALE(vec, inverse)
}
}
@@ -277,7 +250,7 @@ void ml_3f_normalize(f32 *x, f32 *y, f32 *z)
void ml_vec3f_set_length_copy(f32 dst[3], f32 src[3], f32 len)
{
f32 mag = gu_sqrtf(_SQ3(src[0], src[1], src[2]));
f32 mag = LENGTH_VEC3F(src);
if (mag != 0)
ml_vec3f_scale_copy(dst, src, len / mag);
@@ -374,15 +347,12 @@ void ml_vec3f_roll_rotate_copy(f32 dst[3], f32 src[3], f32 roll)
void ml_vec3f_set_length(f32 arg0[3], f32 arg1)
{
f32 length = gu_sqrtf(_SQ3(arg0[0], arg0[1], arg0[2]));
f32 length = LENGTH_VEC3F(arg0);
if (length != 0)
{
f32 inv_length = arg1 / length;
arg0[0] = arg0[0] * inv_length;
arg0[1] = arg0[1] * inv_length;
arg0[2] = arg0[2] * inv_length;
TUPLE_SCALE_COPY(arg0, arg0, inv_length)
}
}
@@ -400,16 +370,12 @@ f32 func_80256AB4(f32 x1, f32 y1, f32 x2, f32 y2)
//ml_vec3f_sin_of_angle_between_vectors
f32 func_80256B54(f32 vec1[3], f32 vec2[3])
{
f32 a = gu_sqrtf(_SQ3v1(vec1));
f32 b = gu_sqrtf(_SQ3v1(vec2));
f32 a = LENGTH_VEC3F(vec1);
f32 b = LENGTH_VEC3F(vec2);
f32 tmp[3];
tmp[0] = vec1[1] * vec2[2] - vec1[2] * vec2[1];
tmp[1] = vec1[2] * vec2[0] - vec1[0] * vec2[2];
tmp[2] = vec1[0] * vec2[1] - vec1[1] * vec2[0];
return gu_sqrtf(_SQ3v1(tmp)) / (a * b);
TUPLE_CROSS_PRODUCT(tmp, vec1, vec2)
return LENGTH_VEC3F(tmp) / (a * b);
}
f32 func_80256C60(f32 vec[3], s32 val)
@@ -462,9 +428,7 @@ void func_80256F44(f32 vec1[3], f32 vec2[3], f32 vec3[3], f32 dst[3])
ml_vec3f_pitch_rotate_copy(tmp2, tmp1, vec2[0]);
ml_vec3f_yaw_rotate_copy(tmp1, tmp2, vec2[1]);
dst[0] = vec1[0] + tmp1[0];
dst[1] = vec1[1] + tmp1[1];
dst[2] = vec1[2] + tmp1[2];
TUPLE_ADD_COPY(dst, vec1, tmp1)
}
f32 ml_acosf(f32 x)
@@ -702,7 +666,7 @@ void func_80257918(f32 arg0[3], f32 arg1[3], f32 arg2[3], f32 arg3[3]){
f32 sp2C[3];
f32 scale;
scale = _SQ3v2(arg3, arg1) - _SQ3v2(arg3, arg2);
scale = TUPLE_DOT_PRODUCT(arg3, arg1) - TUPLE_DOT_PRODUCT(arg3, arg2);
ml_vec3f_scale_copy(sp2C, arg3, scale);
ml_vec3f_diff_copy(arg0, arg1, sp2C);
}
@@ -816,12 +780,10 @@ void func_80257DB0(f32 arg0[3], f32 arg1[3], f32 arg2[3])
void ml_setLength_vec3f(f32 v[3], f32 a)
{
if (_SQ3(v[0], v[1], v[2]) > a * a)
if (LENGTH_SQ_VEC3F(v) > a * a)
{
ml_vec3f_normalize_copy(v, v);
v[0] *= a;
v[1] *= a;
v[2] *= a;
TUPLE_SCALE(v, a)
}
}
@@ -855,10 +817,7 @@ int func_80257F18(f32 src[3], f32 target[3], f32 *yaw)
*yaw = 0;
diff[0] = target[0] - src[0];
diff[1] = target[1] - src[1];
diff[2] = target[2] - src[2];
TUPLE_DIFF_COPY(diff, target, src)
h = gu_sqrtf(_SQ2(diff[2], diff[0]));
if (h < 0.01) // (f64) 0.01
@@ -883,10 +842,7 @@ int func_8025801C(f32 target[3], f32 *yaw)
*yaw = 0;
diff[0] = target[0];
diff[1] = target[1];
diff[2] = target[2];
TUPLE_COPY(diff, target)
h = gu_sqrtf(_SQ2(diff[2], diff[0]));
if (h < 0.01) // (f64) 0.01
@@ -1014,7 +970,7 @@ f32 func_802586B0(f32 vec1[3], f32 vec2[3])
return 0;
}
f32 func_80258708(f32 vec1[3], f32 vec2[3])
f32 ml_vec3f_length(f32 vec1[3], f32 vec2[3])
{
f32 val = vec1[0] - vec2[0];
f32 dY = vec1[1] - vec2[1];
@@ -1028,7 +984,7 @@ f32 func_80258708(f32 vec1[3], f32 vec2[3])
return 0;
}
f32 func_80258780(f32 vec1[3], f32 vec2[3])
f32 ml_vec3f_length_sq(f32 vec1[3], f32 vec2[3])
{
f32 dX = vec1[0] - vec2[0];
f32 dY = vec1[1] - vec2[1];
@@ -1118,10 +1074,7 @@ void func_80258A4C(f32 vec1[3], f32 arg1, f32 vec2[3], f32 *arg3, f32 *arg4, f32
f32 t1[3];
f32 t2[3];
t1[0] = vec2[0] - vec1[0];
t1[1] = vec2[1] - vec1[1];
t1[2] = vec2[2] - vec1[2];
TUPLE_DIFF_COPY(t1, vec2, vec1)
t1[1] = 0;
*arg3 = gu_sqrtf(_SQ3(t1[0], t1[1], t1[2]));
@@ -1132,7 +1085,7 @@ void func_80258A4C(f32 vec1[3], f32 arg1, f32 vec2[3], f32 *arg3, f32 *arg4, f32
ml_vec3f_yaw_rotate_copy(t2, t2, arg1);
*arg4 = t1[0] * t2[0] + t1[1] * t2[1] + t1[2] * t2[2];
*arg4 = TUPLE_DOT_PRODUCT(t1, t2);
*arg5 = func_80256AB4(t2[0], t2[2], t1[0], t1[2]);
if (*arg4 < 0)
@@ -1148,51 +1101,37 @@ void ml_vec3f_clear(f32 dst[3])
void ml_vec3f_copy(f32 dst[3], f32 src[3])
{
dst[0] = src[0];
dst[1] = src[1];
dst[2] = src[2];
TUPLE_COPY(dst, src)
}
void ml_vec3f_diff_copy(f32 dst[3], f32 src1[3], f32 src2[3])
{
dst[0] = src1[0] - src2[0];
dst[1] = src1[1] - src2[1];
dst[2] = src1[2] - src2[2];
TUPLE_DIFF_COPY(dst, src1, src2)
}
void ml_vec3f_diff(f32 dst[3], f32 src[3])
{
dst[0] -= src[0];
dst[1] -= src[1];
dst[2] -= src[2];
TUPLE_DIFF(dst, src)
}
void ml_vec3f_assign(f32 dst[3], f32 x, f32 y, f32 z)
{
dst[0] = x;
dst[1] = y;
dst[2] = z;
TUPLE_ASSIGN(dst, x, y, z)
}
void ml_vec3f_add(f32 dst[3], f32 src1[3], f32 src2[3])
{
dst[0] = src1[0] + src2[0];
dst[1] = src1[1] + src2[1];
dst[2] = src1[2] + src2[2];
TUPLE_ADD_COPY(dst, src1, src2)
}
void ml_vec3f_scale(f32 vec[3], f32 scale)
{
vec[0] *= scale;
vec[1] *= scale;
vec[2] *= scale;
TUPLE_SCALE(vec, scale)
}
void ml_vec3f_scale_copy(f32 dst[3], f32 src[3], f32 scale)
{
dst[0] = src[0] * scale;
dst[1] = src[1] * scale;
dst[2] = src[2] * scale;
TUPLE_SCALE_COPY(dst, src, scale)
}
void func_80258CDC(f32 vec1[3], f32 vec2[3])
@@ -1204,78 +1143,55 @@ void func_80258CDC(f32 vec1[3], f32 vec2[3])
void ml_vec3w_to_vec3f(f32 dst[3], s32 src[3])
{
dst[0] = src[0];
dst[1] = src[1];
dst[2] = src[2];
TUPLE_COPY(dst, src)
}
void ml_vec3h_to_vec3f(f32 dst[3], s16 src[3])
{
dst[0] = src[0];
dst[1] = src[1];
dst[2] = src[2];
TUPLE_COPY(dst, src)
}
void ml_vec3f_to_vec3w(s32 dst[3], f32 src[3])
{
dst[0] = src[0];
dst[1] = src[1];
dst[2] = src[2];
TUPLE_COPY(dst, src)
}
void ml_vec3f_to_vec3h(s16 dst[3], f32 src[3])
{
dst[0] = src[0];
dst[1] = src[1];
dst[2] = src[2];
TUPLE_COPY(dst, src)
}
void ml_translate_y_local(f32 position[3], f32 rotation[3], f32 dy)
{
f32 vec[3];
vec[0] = 0;
vec[1] = dy;
vec[2] = 0;
TUPLE_ASSIGN(vec, 0, dy, 0)
ml_vec3f_pitch_rotate_copy(vec, vec, rotation[0]);
ml_vec3f_yaw_rotate_copy(vec, vec, rotation[1]);
position[0] += vec[0];
position[1] += vec[1];
position[2] += vec[2];
TUPLE_ADD(position, vec)
}
void ml_translate_z_local(f32 dst[3], f32 src[3], f32 dz)
{
f32 vec[3];
vec[0] = 0;
vec[1] = 0;
vec[2] = dz;
TUPLE_ASSIGN(vec, 0, 0, dz)
ml_vec3f_pitch_rotate_copy(vec, vec, src[0]);
ml_vec3f_yaw_rotate_copy(vec, vec, src[1]);
dst[0] += vec[0];
dst[1] += vec[1];
dst[2] += vec[2];
TUPLE_ADD(dst, vec)
}
void ml_translate_x_local(f32 dst[3], f32 src[3], f32 dx)
{
f32 vec[3];
vec[0] = dx;
vec[1] = 0;
vec[2] = 0;
TUPLE_ASSIGN(vec, dx, 0, 0)
ml_vec3f_pitch_rotate_copy(vec, vec, src[0]);
ml_vec3f_yaw_rotate_copy(vec, vec, src[1]);
dst[0] += vec[0];
dst[1] += vec[1];
dst[2] += vec[2];
TUPLE_ADD(dst, vec)
}
void func_8025901C(f32 arg0, f32 arg1[3], f32 arg2[3], f32 arg3){
@@ -1333,46 +1249,43 @@ f32 mlDiffDegF(f32 arg0, f32 arg1)
return diff;
}
bool func_80259254(f32 vec[3], f32 x, f32 z, f32 val)
bool ml_vec3f_point_within_horizontal_distance(f32 vec[3], f32 x, f32 z, f32 distance)
{
f32 diff[3];
diff[0] = x - vec[0];
diff[1] = 0;
diff[2] = z - vec[2];
return _SQ3(diff[0], 0, diff[2]) <= distance * distance;
}
bool ml_vec3f_within_horizontal_distance(f32 vec1[3], f32 vec2[3], f32 distance)
{
f32 diff[3];
diff[0] = vec1[0] - vec2[0];
diff[2] = vec1[2] - vec2[2];
return _SQ3(diff[0], 0, diff[2]) < distance * distance;
}
bool ml_vec3w_within_horizontal_distance(s32 vec1[3], s32 vec2[3], s32 distance)
{
s32 diff[3];
diff[0] = vec1[0] - vec2[0];
diff[2] = vec1[2] - vec2[2];
return _SQ3(diff[0], 0, diff[2]) < distance * distance;
}
bool ml_vec3f_within_distance(f32 vec1[3], f32 vec2[3], f32 distance)
{
f32 t[3];
t[0] = x - vec[0];
t[1] = 0;
t[2] = z - vec[2];
return _SQ3(t[0], 0, t[2]) <= val * val;
}
bool func_802592C4(f32 v1[3], f32 v2[3], f32 a)
{
f32 t[3];
t[0] = v1[0] - v2[0];
t[2] = v1[2] - v2[2];
return _SQ3(t[0], 0, t[2]) < a * a;
}
bool func_80259328(s32 v1[3], s32 v2[3], s32 a)
{
s32 t[3];
t[0] = v1[0] - v2[0];
t[2] = v1[2] - v2[2];
return _SQ3(t[0], 0, t[2]) < a * a;
}
bool func_80259384(f32 v1[3], f32 v2[3], f32 a)
{
f32 t[3];
t[0] = v2[0] - v1[0];
t[1] = v2[1] - v1[1];
t[2] = v2[2] - v1[2];
return _SQ3(t[0], t[1], t[2]) <= a * a;
TUPLE_DIFF_COPY(t, vec2, vec1)
return LENGTH_SQ_VEC3F(t) <= distance * distance;
}
bool func_80259400(f32 a0)
@@ -1447,7 +1360,7 @@ f32 func_80259554(f32 dst[3], f32 vec1[3], f32 vec2[3], f32 vec3[3])
ml_vec3f_diff_copy(tmp1, vec2, vec1);
ml_vec3f_diff_copy(tmp2, vec3, vec1);
mag = gu_sqrtf(_SQ3v1(tmp2));
mag = LENGTH_VEC3F(tmp2);
if (mag == 0.0) // f64
{
@@ -1459,7 +1372,7 @@ f32 func_80259554(f32 dst[3], f32 vec1[3], f32 vec2[3], f32 vec3[3])
ml_vec3f_set_length_copy(tmp1, tmp1, ml_cos_deg(tmp3) * mag);
if (_SQ3v2(tmp1, tmp2) > 0)
if (TUPLE_DOT_PRODUCT(tmp1, tmp2) > 0)
ml_vec3f_add(dst, vec1, tmp1);
else
ml_vec3f_diff_copy(dst, vec1, tmp1);

View File

@@ -14,7 +14,7 @@ extern void func_802A6388(f32);
extern f32 chwadingboots_802D6E4C(Actor *);
extern void set_turbo_duration(f32);
extern f32 chtrainers_getDuration(Actor *);
extern int func_80259254(f32 vec[3], f32 x, f32 z, f32 val);
extern int ml_vec3f_point_within_horizontal_distance(f32 vec[3], f32 x, f32 z, f32 val);
extern void func_802EE354(Actor *, s32, s32, s32, f32, f32, f32, f32 arg8[3], s32, f32 arg10[2]);
extern void func_8035644C(s32);
extern void func_8035646C(s32 arg0);

View File

@@ -271,9 +271,7 @@ void baModel_setVisible(s32 arg0){
void baModel_802921D4(f32 arg0[3]){
if(player_getWaterState() == BSWATERGROUP_0_NONE){
D_8037C150.unk0 = 1;
D_8037C150.unk4[0] = arg0[0];
D_8037C150.unk4[1] = arg0[1];
D_8037C150.unk4[2] = arg0[2];
TUPLE_COPY(D_8037C150.unk4, arg0)
}
}

View File

@@ -3,8 +3,6 @@
#include "variables.h"
#include "core2/ba/physics.h"
#define _SQ3v1(v) (v[0] * v[0] + v[1] * v[1] + v[2] * v[2])
extern f32 ml_sin_deg(f32);
extern f32 ml_dotProduct_vec3f(f32[3], f32[3]);
extern void func_80256D0C(f32, f32, f32, f32, f32, f32 *, f32 *, f32 *);
@@ -118,7 +116,8 @@ void __baphysics_update_no_gravity(void){
//update velocity
ml_vec3f_diff_copy(sp24, baphysics_target_velocity, s_player_velocity);
ml_vec3f_scale(sp24, time_getDelta()*baphysics_acceleration);
if(_SQ3v1(sp24) < 0.02){
if (LENGTH_SQ_VEC3F(sp24) < 0.02) {
ml_vec3f_copy(s_player_velocity, baphysics_target_velocity);
}
else{

View File

@@ -2,7 +2,7 @@
#include "functions.h"
#include "variables.h"
extern bool func_80259254(f32[3], f32, f32, f32);
extern bool ml_vec3f_point_within_horizontal_distance(f32[3], f32, f32, f32);
/* .data */
ActorAnimationInfo chCrabAnimations[] ={
@@ -185,7 +185,7 @@ void __chCrab_die(ActorMarker *marker, ActorMarker *other){
this->unk138_27 = 1;
marker_despawn(marker);
if( map_get() == MAP_B_CC_CLANKERS_CAVERN
&& func_80259254(this->position, 13778.0f, 0.0f, 3000.0f)
&& ml_vec3f_point_within_horizontal_distance(this->position, 13778.0f, 0.0f, 3000.0f)
) {
this->depth_mode = MODEL_RENDER_DEPTH_COMPARE;
if( !jiggyscore_isCollected(JIGGY_16_CC_SNIPPETS)

View File

@@ -2,7 +2,7 @@
#include "functions.h"
#include "variables.h"
extern int func_802592C4(f32[3], f32[3], f32);
extern int ml_vec3f_within_horizontal_distance(f32[3], f32[3], f32);
extern void func_802EFA20(ParticleEmitter *, f32, f32);
extern void subaddie_set_state_with_direction(Actor *, s32, f32, s32);
extern void func_80328FB0(Actor *, f32);
@@ -198,7 +198,7 @@ int __chSnowman_CCW_playerInProtectedZone(void){
f32 player_position[3];
if(map_get() == MAP_46_CCW_WINTER){
player_getPosition(player_position);
if(func_802592C4(player_position, ccw_no_attack_zone, 900.0f))
if(ml_vec3f_within_horizontal_distance(player_position, ccw_no_attack_zone, 900.0f))
return 1;
}
return 0;

View File

@@ -8,7 +8,7 @@
#include <core1/viewport.h>
extern int func_80259254(f32 vec[3], f32 x, f32 z, f32 val);
extern int ml_vec3f_point_within_horizontal_distance(f32 vec[3], f32 x, f32 z, f32 val);
extern f32 player_getYaw(void);
/* .bss */
@@ -179,7 +179,7 @@ int func_8028B094(void){
int player_isInHorizontalRadius(f32 arg0[3], f32 arg1){
f32 sp1C[3];
_player_getPosition(sp1C);
return func_80259254(sp1C, arg0[0], arg0[2], arg1);
return ml_vec3f_point_within_horizontal_distance(sp1C, arg0[0], arg0[2], arg1);
}
s32 func_8028B120(void){return 0;}

View File

@@ -4,7 +4,6 @@
#include <core1/viewport.h>
#define _SQ3(x, y, z) (((x) * (x)) + ((y) * (y)) + ((z) * (z)))
#define _SQ3v1(v) (v[0] * v[0] + v[1] * v[1] + v[2] * v[2])
/*.code*/
void func_802F87B0(struct6s *this){
@@ -28,8 +27,7 @@ void func_802F87B0(struct6s *this){
sp4C[1] = randf2(200.0f, 500.0f);
sp4C[2] = -f20;
if(gu_sqrtf(_SQ3v1((&this->unkC))) < 5.0f)
{
if (LENGTH_VEC3F((&this->unkC)) < 5.0f) {
ml_vec3f_yaw_rotate_copy(sp4C, sp4C, randf2(0.0f, 360.0f));
}
else{

View File

@@ -1759,7 +1759,7 @@ s32 func_80306EF4(s32 arg0[3], s32 arg1, u32 arg2) {
for(var_s0 = var_s1->unk8; var_s0 < var_s1->unk8 + var_s1->count; var_s0++){
if( (var_s0->unk10_3 & arg2)
&& (temp_s4 >= var_s0->position[1]) && (temp_s6 < var_s0->position[1])
&& (func_80259328(arg0, (void *) var_s0, var_s0->radius))
&& (ml_vec3w_within_horizontal_distance(arg0, (void *) var_s0, var_s0->radius))
) {
return var_s1 - D_8036A9C8;
}
@@ -1769,7 +1769,7 @@ s32 func_80306EF4(s32 arg0[3], s32 arg1, u32 arg2) {
for(var_s0 = var_s1->unk8; var_s0 < var_s1->unk8 + var_s1->count; var_s0++){
if( (var_s0->unk10_3 & arg2)
&& ((var_s0->unk10_3 & 2) || ((temp_s4 >= var_s0->position[1]) && (temp_s6 < var_s0->position[1])))
&& (func_80259328(arg0, (void *) var_s0, var_s0->radius))
&& (ml_vec3w_within_horizontal_distance(arg0, (void *) var_s0, var_s0->radius))
) {
return var_s1 - D_8036A9C8;
}
@@ -1865,7 +1865,7 @@ s32 func_80307504(f32 arg0[3], s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
if (arg4 & 1) {
if (var_s0->unk10_3 & arg4) {
if (!(max < var_s0->position[1]) && (min < var_s0->position[1])) {
if (func_80259328(sp4C, var_s0->position, var_s0->radius)) {
if (ml_vec3w_within_horizontal_distance(sp4C, var_s0->position, var_s0->radius)) {
return arg2;
}
}
@@ -1874,7 +1874,7 @@ s32 func_80307504(f32 arg0[3], s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
else{
if( (var_s0->unk10_3 & arg4))
if( ((var_s0->unk10_3 & 2) || (!(max < var_s0->position[1]) && (min < var_s0->position[1]))))
if( func_80259328(&sp4C, var_s0->position, var_s0->radius))
if (ml_vec3w_within_horizontal_distance(&sp4C, var_s0->position, var_s0->radius))
return arg2;
}
@@ -1882,7 +1882,7 @@ s32 func_80307504(f32 arg0[3], s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
for(var_s0 = temp_s1->unk8; var_s0 < temp_s1->unk8 + temp_s1->count; var_s0++){
if (var_s0->unk10_3 & arg4)
if (!(max < var_s0->position[1]) && (min < var_s0->position[1]))
if(func_80259328(&sp4C, var_s0, var_s0->radius))
if (ml_vec3w_within_horizontal_distance(&sp4C, var_s0, var_s0->radius))
return (var_s0 - temp_s1->unk8);
}
}
@@ -1890,7 +1890,7 @@ s32 func_80307504(f32 arg0[3], s32 arg1, s32 arg2, s32 arg3, s32 arg4) {
for(var_s0 = temp_s1->unk8; var_s0 < temp_s1->unk8 + temp_s1->count; var_s0++){
if ((var_s0->unk10_3 & arg4))
if(((var_s0->unk10_3 & 2) || (!(max < var_s0->position[1]) && (min < var_s0->position[1]))))
if(func_80259328(&sp4C, var_s0, var_s0->radius))
if (ml_vec3w_within_horizontal_distance(&sp4C, var_s0, var_s0->radius))
return var_s0 - temp_s1->unk8;
}
}

View File

@@ -45,7 +45,7 @@ void func_80323238(void){}
// =============================================BREAK ???
extern f32 func_80258708(f32 [3], f32[3]);
extern f32 ml_vec3f_length(f32 [3], f32[3]);
extern f32 ml_distanceSquared_vec3f(f32 [3], f32 [3]);
extern void func_80341180(f32, s32, s32, f32 *, f32 [3]);
@@ -74,11 +74,11 @@ f32 func_803232AC(f32 *arg0, f32 arg1, f32 arg2, s32 arg3, f32 arg4) {
while(var_f20 + arg4 < arg2){
var_f20 += arg4;
func_80341180(var_f20, arg3, 3, arg0, sp60);
var_f22 += func_80258708(sp6C, sp60);
var_f22 += ml_vec3f_length(sp6C, sp60);
ml_vec3f_copy(sp6C, sp60);
}
func_80341180(arg2, arg3, 3, arg0, sp60);
var_f22 += func_80258708(sp6C, sp60);
var_f22 += ml_vec3f_length(sp6C, sp60);
return var_f22;
}
@@ -196,7 +196,7 @@ f32 func_80323A48(f32 arg0[3], s32 arg1, f32 arg2, f32 arg3, f32 arg4) {
if (arg4 == 1.0) {
var_f24 = arg4;
func_80341180(var_f24, arg1, 3, arg0, spDC);
var_f22 = var_f26 + func_80258708(spF4, spDC);
var_f22 = var_f26 + ml_vec3f_length(spF4, spDC);
} else {
var_f24 += arg4;
var_f24 = var_f24 - (s32)var_f24;
@@ -210,17 +210,17 @@ f32 func_80323A48(f32 arg0[3], s32 arg1, f32 arg2, f32 arg3, f32 arg4) {
}
} else {
func_80341180(var_f24, arg1, 3, arg0, spDC);
var_f22 = var_f26 + func_80258708(spF4, spDC);
var_f22 = var_f26 + ml_vec3f_length(spF4, spDC);
}
} else {
if (arg4 == 1.0) {
if (var_f24 < 0.0) {
var_f24 = 0;
func_80341180(var_f24, arg1, 3, arg0, &spDC);
var_f22 = var_f26 + func_80258708(&spF4, &spDC);
var_f22 = var_f26 + ml_vec3f_length(&spF4, &spDC);
} else {
func_80341180(var_f24, arg1, 3, arg0, &spDC);
var_f22 = var_f26 + func_80258708(&spF4, &spDC);
var_f22 = var_f26 + ml_vec3f_length(&spF4, &spDC);
}
} else if (var_f24 < arg4) {
var_f24 -= arg4;
@@ -235,7 +235,7 @@ f32 func_80323A48(f32 arg0[3], s32 arg1, f32 arg2, f32 arg3, f32 arg4) {
var_f22 = var_f26 + gu_sqrtf(spD0[0]*spD0[0] + spD0[1]*spD0[1] + spD0[2]*spD0[2]);
} else {
func_80341180(var_f24, arg1, 3, arg0, &spDC);
var_f22 = var_f26 + func_80258708(&spF4, &spDC);
var_f22 = var_f26 + ml_vec3f_length(&spF4, &spDC);
}
}

View File

@@ -8,8 +8,8 @@
#define DIST_SQ_VEC3F(v1, v2) ((v1[0] - v2[0])*(v1[0] - v2[0]) + (v1[1] - v2[1])*(v1[1] - v2[1]) + (v1[2] - v2[2])*(v1[2] - v2[2]))
extern f32 func_80258708(f32[3], f32[3]);
extern bool func_80259384(f32[3], f32[3], f32);
extern f32 ml_vec3f_length(f32[3], f32[3]);
extern bool ml_vec3f_within_distance(f32[3], f32[3], f32);
extern void func_802D7124(Actor *, f32);
extern void func_802EE6CC(f32[3], s32[4], s32[4], s32, f32, f32, s32, s32, s32);
@@ -660,7 +660,7 @@ Actor *actorArray_findClosestActorFromActorId(f32 position[3], enum actor_e acto
&& (i_actor->modelCacheIndex != 0x108)
&& !i_actor->despawn_flag
) {
i_dist = func_80258708(position, i_actor->position);
i_dist = ml_vec3f_length(position, i_actor->position);
if (i_dist < min_dist) {
min_dist = i_dist;
closest_actor = i_actor;
@@ -735,7 +735,7 @@ bool func_803270B8(f32 arg0[3], f32 arg1, enum marker_collision_func_type_e arg2
if( !i_ptr->despawn_flag
&& i_ptr->marker->collidable
&& ((arg3 == NULL) || arg3(i_ptr))
&& func_80259384(i_ptr->position, arg0, arg1)
&& ml_vec3f_within_distance(i_ptr->position, arg0, arg1)
) {
if (i_ptr->marker->unk58 == NULL || i_ptr->marker->unk58(i_ptr->marker, arg4)
) {

View File

@@ -2,7 +2,7 @@
#include "functions.h"
#include "variables.h"
extern f32 func_80258780(f32[3], f32[3]);
extern f32 ml_vec3f_length_sq(f32[3], f32[3]);
typedef struct{
f32 unk0;
@@ -67,7 +67,7 @@ void func_80352114(Struct_core2_CB050_0 *arg0, s32 arg1, f32 arg2) {
player_getPosition(player_position);
if( (func_80294660() == 0x100)
&& func_8028F20C()
&& (func_80258780(player_position, arg0->unk4C) < 50000.0f)
&& (ml_vec3f_length_sq(player_position, arg0->unk4C) < 50000.0f)
) {
sp58 = arg0->unk4C[0] - player_position[0];
sp54 = arg0->unk4C[2] - player_position[2];

View File

@@ -7,7 +7,7 @@
extern bool func_80245314(f32[3], f32[3], f32, f32, u32);
extern int func_80244D94(f32[3], f32[3], f32[3], u32, f32);
extern int func_8024575C(f32[3], f32[3], f32, f32[3], s32, u32);
extern f32 func_80258708(f32[3], f32[3]);
extern f32 ml_vec3f_length(f32[3], f32[3]);
extern f32 func_80259198(f32, f32);
extern f32 func_8028E82C(void);
extern f32 player_getYaw(void);
@@ -102,7 +102,7 @@ bool func_802BC640(f32 arg0[3], f32 arg1[3], f32 arg2, s32 arg3) {
ml_vec3f_add(sp78, arg0, sp9C);
func_80244D94(arg0, sp78, sp88, 0x9E0000, 40.0f);
func_8024575C(arg0, sp78, 40.0f, sp88, 4, 0x9E0000);
if (phi_f26 < func_80258708(arg0, sp78)) {
if (phi_f26 < ml_vec3f_length(arg0, sp78)) {
ncDynamicCamera_setPosition(sp78);
ml_vec3f_clear(D_8037D9C8);
ml_vec3f_clear(D_8037D9E0);

View File

@@ -11,7 +11,7 @@
#define SNACKER_BB_DIALOG_0 VER_SELECT(0xe26, 0xa68, 0, 0)
#define SNACKER_BB_DIALOG_1 VER_SELECT(0xe33, 0xa75, 0, 0)
s32 func_80259254(f32 *, f32, f32, f32);
s32 ml_vec3f_point_within_horizontal_distance(f32 *, f32, f32, f32);
void ncFirstPersonCamera_getZoomedInRotation(f32 *);
extern u8 D_8037DCCA;
@@ -34,7 +34,7 @@ static s32 __snackerctl_player_within_distance(f32 x, f32 z, f32 dist){
f32 player_position[3];
_player_getPosition(player_position);
return func_80259254(player_position, x, z, dist);
return ml_vec3f_point_within_horizontal_distance(player_position, x, z, dist);
}
static SnackerCtlState __snackerctl_update_ttc(void){

View File

@@ -2,7 +2,7 @@
#include "functions.h"
#include "variables.h"
extern bool func_80259384(f32[3], f32[3], f32);
extern bool ml_vec3f_within_distance(f32[3], f32[3], f32);
void func_803902B8(Actor *this);
Actor *func_80390030(ActorMarker *marker, Gfx **gfx, Mtx **mtx, Vtx **vtx);
@@ -95,7 +95,7 @@ void func_803902B8(Actor *this) {
this->initialized = TRUE;
}
_player_getPosition(sp5C);
sp58 = func_80259384(this->position, sp5C, 1750.0f) && !this->is_first_encounter;
sp58 = ml_vec3f_within_distance(this->position, sp5C, 1750.0f) && !this->is_first_encounter;
if (sp58 && !this->unk38_0) {
func_8032BB88(this, 0, 0x1F4);
func_8025A6EC(COMUSIC_79_CHEATO, 0);
@@ -105,7 +105,7 @@ void func_803902B8(Actor *this) {
func_8039024C(this);
}
this->unk38_0 = sp58;
sp58 = func_80259384(this->position, sp5C, 400.0f);
sp58 = ml_vec3f_within_distance(this->position, sp5C, 400.0f);
if (fileProgressFlag_get(sp54 + 0xAD)) {
func_8024E55C(0, sp3C);
sp58 &= (sp3C[FACE_BUTTON(BUTTON_B)] == 1) || func_8028EC04();