d_bg_w work

This commit is contained in:
Jasper St. Pierre
2024-02-10 19:06:48 -08:00
parent e03ef324b9
commit e34d6b1036
2 changed files with 23 additions and 7 deletions
+3 -3
View File
@@ -165,10 +165,10 @@ public:
void SetGroundCheckOffset(f32 offset) { m_ground_check_offset = offset; }
void SetWallHit() { m_flags |= WALL_HIT; }
void ClrWallNone() { m_flags &= ~WALL_NONE; }
void OnSeaCheckOn() { m_flags |= SEA_CHECK;}
void OnSeaCheckOn() { m_flags |= SEA_CHECK; }
bool ChkSeaCheckOn() { return m_flags & SEA_CHECK;}
void OnSeaWaterHeight() { m_flags |= SEA_WATER_HEIGHT;}
bool ChkSeaWaterHeight() { return m_flags & SEA_WATER_HEIGHT;}
void OnSeaWaterHeight() { m_flags |= SEA_WATER_HEIGHT; }
bool ChkSeaWaterHeight() { return m_flags & SEA_WATER_HEIGHT; }
bool ChkSeaIn() { return m_flags & SEA_IN;}
cM3dGCyl* GetWallBmdCylP() { return &m_wall_cyl; }
+20 -4
View File
@@ -5,20 +5,36 @@
#include "d/d_bg_w.h"
#include "d/d_bg_s.h"
#include "d/d_bg_s_acch.h"
#define CHECK_FLOAT_CLASS(line, x) JUT_ASSERT(line, !(((sizeof(x) == sizeof(float)) ? __fpclassifyf((float)(x)) : __fpclassifyd((double)(x)) ) == 1));
/* 800A5C3C-800A5CA8 .text __ct__4dBgWFv */
dBgW::dBgW() {
/* Nonmatching */
mRotYDelta = 0;
mOldRotY = 0;
m_crr_func = NULL;
mpRideCb = NULL;
mpPushPullCb = NULL;
mFlag = 0;
mRoomNo = 0xFFFF;
mRoomNo2 = 0xFF;
}
/* 800A5CA8-800A5CD4 .text Move__4dBgWFv */
void dBgW::Move() {
/* Nonmatching */
mFlag |= 0x01;
cBgW::Move();
}
/* 800A5CD4-800A5E64 .text positionWallCorrect__4dBgWFP9dBgS_AcchfR8cM3dGPlaP4cXyzf */
void dBgW::positionWallCorrect(dBgS_Acch*, f32, cM3dGPla&, cXyz*, f32) {
/* Nonmatching */
void dBgW::positionWallCorrect(dBgS_Acch* acch, f32 dist, cM3dGPla& plane, cXyz* pupper_pos, f32 speed) {
acch->SetWallHit();
f32 move = speed * dist;
pupper_pos->x += move * plane.mNormal.x;
pupper_pos->z += move * plane.mNormal.z;
CHECK_FLOAT_CLASS(0xd0, pupper_pos->x);
CHECK_FLOAT_CLASS(0xd1, pupper_pos->z);
}
/* 800A5E64-800A6DF8 .text RwgWallCorrect__4dBgWFP9dBgS_AcchUs */