daPy_lk_c::checkRopeSwingWall

This commit is contained in:
LagoLunatic
2025-06-14 23:41:15 -04:00
parent 92a094ef6d
commit a15a72f209
3 changed files with 84 additions and 37 deletions
+11 -11
View File
@@ -382,17 +382,17 @@ public:
dPa_control_c();
enum {
dPtclGroup_Normal_e,
dPtclGroup_NormalP1_e,
dPtclGroup_Toon_e,
dPtclGroup_ToonP1_e,
dPtclGroup_Projection_e,
dPtclGroup_ShipTail_e,
dPtclGroup_Wind_e,
dPtclGroup_2Dfore_e,
dPtclGroup_2Dback_e,
dPtclGroup_2DmenuFore_e,
dPtclGroup_2DmenuBack_e,
/* 0x0 */ dPtclGroup_Normal_e,
/* 0x1 */ dPtclGroup_NormalP1_e,
/* 0x2 */ dPtclGroup_Toon_e,
/* 0x3 */ dPtclGroup_ToonP1_e,
/* 0x4 */ dPtclGroup_Projection_e,
/* 0x5 */ dPtclGroup_ShipTail_e,
/* 0x6 */ dPtclGroup_Wind_e,
/* 0x7 */ dPtclGroup_2Dfore_e,
/* 0x8 */ dPtclGroup_2Dback_e,
/* 0x9 */ dPtclGroup_2DmenuFore_e,
/* 0xA */ dPtclGroup_2DmenuBack_e,
};
static u8 getRM_ID(u16);
+51 -4
View File
@@ -122,10 +122,57 @@ int daPy_lk_c::changeRopeToHangProc() {
}
/* 8014327C-80143694 .text checkRopeSwingWall__9daPy_lk_cFP4cXyzP4cXyzPsPf */
BOOL daPy_lk_c::checkRopeSwingWall(cXyz*, cXyz*, s16*, f32*) {
/* Nonmatching */
static JGeometry::TVec3<f32> dynamic_scale;
static JGeometry::TVec3<f32> particle_scale;
BOOL daPy_lk_c::checkRopeSwingWall(cXyz* r4, cXyz* r5, s16* r6, f32* r7) {
static JGeometry::TVec3<f32> dynamic_scale(0.25f, 0.25f, 0.25f);
static JGeometry::TVec3<f32> particle_scale(0.75f, 0.75f, 0.75f);
mLinkLinChk.Set(r4, r5, this);
if (dComIfG_Bgsp()->LineCross(&mLinkLinChk)) {
f32 f1 = -*r6 / (f32)m34D4;
if (f1 > 1.0f) {
f1 = 1.0f;
} else if (f1 < -1.0f) {
f1 = -1.0f;
}
if (*r7 > 0.0f) {
*r7 = cM_atan2f(f1, -std::sqrtf(1.0f - f1*f1));
} else {
*r7 = cM_atan2f(f1, std::sqrtf(1.0f - f1*f1));
}
m35A8 = *r7 / m35A4;
daPy_footEffect_c* foot_effect = &mFootEffect[1];
if (foot_effect->getID() != -1) {
foot_effect->getSmokeCallBack()->remove();
foot_effect->getOtherCallBack()->remove();
}
cM3dGPla* plane = dComIfG_Bgsp()->GetTriPla(mLinkLinChk);
cXyz* normal = plane->GetNP();
cXyz sp50 = mLinkLinChk.GetCross() + *normal * 10.0f;
foot_effect->setPos(&sp50);
csXyz angle;
angle.x = cM_atan2s(normal->absXZ(), normal->y);
angle.y = cM_atan2s(normal->x, normal->z);
angle.z = 0;
foot_effect->setAngle(&angle);
JPABaseEmitter* emitter = dComIfGp_particle_setToonP1(
dPa_name::ID_COMMON_2022,
&foot_effect->getPos(), &foot_effect->getAngle(),
NULL, daPy_HIO_basic_c0::m.field_0x2, foot_effect->getSmokeCallBack(),
fopAcM_GetRoomNo(this)
);
if (emitter) {
emitter->setSpread(1.0f);
emitter->setRate(8.0f);
emitter->setGlobalDynamicsScale(dynamic_scale);
emitter->setGlobalParticleScale(particle_scale);
}
return TRUE;
} else {
return FALSE;
}
}
/* 80143694-80143A44 .text setBlendRopeMoveAnime__9daPy_lk_cFi */
+22 -22
View File
@@ -1312,15 +1312,15 @@ int dFile_select_c::DataSelectPaneCopyMove(s16 param_1, s16 param_2) {
case 0:
temp1 = PaneTranceRecTlt2(field_0x3930 - param_1, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 55.0f, 0.0f, 55.0f, 1, 0);
temp2 = PaneTranceRecInfo2(field_0x3930 - param_1, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 55.0f, 0.0f, 55.0f, 1, 0);
temp3 = PaneTranceRecTlt3(field_0x3930 - param_2, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 55.0, 0.0f, 55.0f, 1, 0);
temp4 = PaneTranceRecInfo3(field_0x3930 - param_2, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 55.0, 0.0f, 55.0f, 1, 0);
temp3 = PaneTranceRecTlt3(field_0x3930 - param_2, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 55.0f, 0.0f, 55.0f, 1, 0);
temp4 = PaneTranceRecInfo3(field_0x3930 - param_2, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 55.0f, 0.0f, 55.0f, 1, 0);
break;
case 1:
temp1 = PaneTranceRecTlt1(field_0x3930 - param_1, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 140.0f, 0.0f, 140.0f, 1, 0);
temp2 = PaneTranceRecInfo1(field_0x3930 - param_1, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 140.0f, 0.0f, 140.0f, 1, 0);
temp3 = PaneTranceRecTlt3(field_0x3930 - param_2, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 55.0, 0.0f, 55.0f, 1, 0);
temp4 = PaneTranceRecInfo3(field_0x3930 - param_2, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 55.0, 0.0f, 55.0f, 1, 0);
temp3 = PaneTranceRecTlt3(field_0x3930 - param_2, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 55.0f, 0.0f, 55.0f, 1, 0);
temp4 = PaneTranceRecInfo3(field_0x3930 - param_2, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 55.0f, 0.0f, 55.0f, 1, 0);
break;
case 2:
@@ -1347,14 +1347,14 @@ int dFile_select_c::DataSelectPaneCopyBackMove(s16 param_1, s16 param_2) {
temp5 = 1;
temp6 = 1;
if(field_0x3925 == 0) {
temp1 = PaneTranceRecTlt3(field_0x3930 - param_1, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 0.0f, 0.0, 0.0f, 1, 0);
temp2 = PaneTranceRecInfo3(field_0x3930 - param_1, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 0.0f, 0.0, 0.0f, 1, 0);
temp1 = PaneTranceRecTlt3(field_0x3930 - param_1, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 0.0f, 0.0f, 0.0f, 1, 0);
temp2 = PaneTranceRecInfo3(field_0x3930 - param_1, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 0.0f, 0.0f, 0.0f, 1, 0);
temp3 = 1;
temp4 = 1;
}
else {
temp1 = PaneTranceRecTlt3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, -85.0, 0.0f, 0.0f, g_fsHIO.field_0x07, 2);
temp2 = PaneTranceRecInfo3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, -85.0, 0.0f, 0.0f, g_fsHIO.field_0x07, 2);
temp1 = PaneTranceRecTlt3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, -85.0f, 0.0f, 0.0f, g_fsHIO.field_0x07, 2);
temp2 = PaneTranceRecInfo3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, -85.0f, 0.0f, 0.0f, g_fsHIO.field_0x07, 2);
temp3 = PaneTranceRecTlt2(field_0x3930 - param_2, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 0.0f, 0.0f, 0.0f, 1, 0);
temp4 = PaneTranceRecInfo2(field_0x3930 - param_2, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 0.0f, 0.0f, 0.0f, 1, 0);
}
@@ -1366,20 +1366,20 @@ int dFile_select_c::DataSelectPaneCopyBackMove(s16 param_1, s16 param_2) {
if(field_0x3925 == 0) {
temp1 = PaneTranceRecTlt1(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, 85.0f, 0.0f, 0.0f, g_fsHIO.field_0x07, 2);
temp2 = PaneTranceRecInfo1(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, 85.0f, 0.0f, 0.0f, g_fsHIO.field_0x07, 2);
temp3 = PaneTranceRecTlt3(field_0x3930 - param_2, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 0.0, 0.0f, 0.0f, 1, 0);
temp4 = PaneTranceRecInfo3(field_0x3930 - param_2, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 0.0, 0.0f, 0.0f, 1, 0);
temp3 = PaneTranceRecTlt3(field_0x3930 - param_2, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 0.0f, 0.0f, 0.0f, 1, 0);
temp4 = PaneTranceRecInfo3(field_0x3930 - param_2, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 0.0f, 0.0f, 0.0f, 1, 0);
}
else {
temp1 = PaneTranceRecTlt3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, -85.0, 0.0f, 0.0f, g_fsHIO.field_0x07, 2);
temp2 = PaneTranceRecInfo3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, -85.0, 0.0f, 0.0f, g_fsHIO.field_0x07, 2);
temp1 = PaneTranceRecTlt3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, -85.0f, 0.0f, 0.0f, g_fsHIO.field_0x07, 2);
temp2 = PaneTranceRecInfo3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, -85.0f, 0.0f, 0.0f, g_fsHIO.field_0x07, 2);
temp3 = PaneTranceRecTlt1(field_0x3930 - param_2, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 0.0f, 0.0f, 0.0f, 1, 0);
temp4 = PaneTranceRecInfo1(field_0x3930 - param_2, g_fsHIO.field_0x28, g_fsHIO.field_0x40, 0.0f, 0.0f, 0.0f, 1, 0);
}
break;
case 2:
temp5 = PaneTranceRecTlt3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, -170.0, 0.0f, 0.0f, g_fsHIO.field_0x07, 2);
temp6 = PaneTranceRecInfo3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, -170.0, 0.0f, 0.0f, g_fsHIO.field_0x07, 2);
temp5 = PaneTranceRecTlt3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, -170.0f, 0.0f, 0.0f, g_fsHIO.field_0x07, 2);
temp6 = PaneTranceRecInfo3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, -170.0f, 0.0f, 0.0f, g_fsHIO.field_0x07, 2);
if(field_0x3925 == 0) {
temp1 = PaneTranceRecTlt1(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, 85.0f, 0.0f, 0.0f, g_fsHIO.field_0x07, 2);
@@ -1412,29 +1412,29 @@ int dFile_select_c::DataSelectPaneCopyMove2(s16 param_1, s16 param_2) {
if(field_0x3925 == 0) {
temp1 = PaneTranceRecTlt2(field_0x3930 - param_2, g_fsHIO.field_0x28, 0.0f, 55.0f, 0.0f, 0.0f, 0, 2);
temp2 = PaneTranceRecInfo2(field_0x3930 - param_2, g_fsHIO.field_0x28, 0.0f, 55.0f, 0.0f, 0.0f, 0, 2);
temp3 = PaneTranceRecTlt3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, 55.0, g_fsHIO.field_0x40, 55.0f, 0, 1);
temp4 = PaneTranceRecInfo3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, 55.0, g_fsHIO.field_0x40, 55.0f, 0, 1);
temp3 = PaneTranceRecTlt3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, 55.0f, g_fsHIO.field_0x40, 55.0f, 0, 1);
temp4 = PaneTranceRecInfo3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, 55.0f, g_fsHIO.field_0x40, 55.0f, 0, 1);
}
else {
temp1 = PaneTranceRecTlt2(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, 55.0f, g_fsHIO.field_0x40, 55.0f, 0, 1);
temp2 = PaneTranceRecInfo2(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, 55.0f, g_fsHIO.field_0x40, 55.0f, 0, 1);
temp3 = PaneTranceRecTlt3(field_0x3930 - param_2, g_fsHIO.field_0x28, 0.0f, 55.0, 0.0f, -85.0f, g_fsHIO.field_0x07, 2);
temp4 = PaneTranceRecInfo3(field_0x3930 - param_2, g_fsHIO.field_0x28, 0.0f, 55.0, 0.0f, -85.0f, g_fsHIO.field_0x07, 2);
temp3 = PaneTranceRecTlt3(field_0x3930 - param_2, g_fsHIO.field_0x28, 0.0f, 55.0f, 0.0f, -85.0f, g_fsHIO.field_0x07, 2);
temp4 = PaneTranceRecInfo3(field_0x3930 - param_2, g_fsHIO.field_0x28, 0.0f, 55.0f, 0.0f, -85.0f, g_fsHIO.field_0x07, 2);
}
break;
case 1:
if(field_0x3925 == 0) {
temp1 = PaneTranceRecTlt3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, 55.0, g_fsHIO.field_0x40, 55.0f, 0, 1);
temp2 = PaneTranceRecInfo3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, 55.0, g_fsHIO.field_0x40, 55.0f, 0, 1);
temp1 = PaneTranceRecTlt3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, 55.0f, g_fsHIO.field_0x40, 55.0f, 0, 1);
temp2 = PaneTranceRecInfo3(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, 55.0f, g_fsHIO.field_0x40, 55.0f, 0, 1);
temp3 = PaneTranceRecTlt1(field_0x3930 - param_2, g_fsHIO.field_0x28, 0.0f, 140.0f, 0.0f, 85.0f, 0, 2);
temp4 = PaneTranceRecInfo1(field_0x3930 - param_2, g_fsHIO.field_0x28, 0.0f, 140.0f, 0.0f, 85.0f, 0, 2);
}
else {
temp1 = PaneTranceRecTlt1(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, 140.0f, g_fsHIO.field_0x40, 140.0f, 0, 1);
temp2 = PaneTranceRecInfo1(field_0x3930 - param_1, g_fsHIO.field_0x28, 0.0f, 140.0f, g_fsHIO.field_0x40, 140.0f, 0, 1);
temp3 = PaneTranceRecTlt3(field_0x3930 - param_2, g_fsHIO.field_0x28, 0.0f, 55.0, 0.0f, -85.0f, g_fsHIO.field_0x07, 2);
temp4 = PaneTranceRecInfo3(field_0x3930 - param_2, g_fsHIO.field_0x28, 0.0f, 55.0, 0.0f, -85.0f, g_fsHIO.field_0x07, 2);
temp3 = PaneTranceRecTlt3(field_0x3930 - param_2, g_fsHIO.field_0x28, 0.0f, 55.0f, 0.0f, -85.0f, g_fsHIO.field_0x07, 2);
temp4 = PaneTranceRecInfo3(field_0x3930 - param_2, g_fsHIO.field_0x28, 0.0f, 55.0f, 0.0f, -85.0f, g_fsHIO.field_0x07, 2);
}
break;