diff options
| author | Max Roncace <me@caseif.net> | 2026-02-18 01:58:52 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-02-17 22:58:52 -0800 |
| commit | a790efafc526f79a79fad38186335d222a215cb5 (patch) | |
| tree | 963dadd351a6aebd60f4a87d03ef32fe3bd10762 /src/d/d_cc_s.cpp | |
| parent | 34ea82dd28e74bb375d0ace2cf6aab94da9de569 (diff) | |
d_cursor_mng mostly matching (#3101)
Diffstat (limited to 'src/d/d_cc_s.cpp')
| -rw-r--r-- | src/d/d_cc_s.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/d/d_cc_s.cpp b/src/d/d_cc_s.cpp index f7e275dea4..ccb8501542 100644 --- a/src/d/d_cc_s.cpp +++ b/src/d/d_cc_s.cpp @@ -536,6 +536,48 @@ bool dCcS::ChkCamera(cXyz& param_0, cXyz& param_1, f32 param_2, fopAc_ac_c* para return false; } +#if PLATFORM_WII +BOOL dCcS::ChkLine(cXyz& i_p_start, cXyz& i_p_end, f32 i_radius, fopAc_ac_c** o_actor) { + u16 obj_co_count = mObjCoCount; + if (obj_co_count == 0) { + return 0; + } + cCcD_Obj** max_obj_pp = &mpObjCo[mObjCoCount]; + cCcD_CpsAttr cps_attr; + cps_attr.Set(i_p_start, i_p_end, i_radius); + cps_attr.CalcAabBox(); + *o_actor = NULL; + f32 z_max = -FLT_MAX; + cCcD_DivideInfo sp18; + mDivideArea.CalcDivideInfoOverArea(&sp18, cps_attr.mAab); + cCcD_Obj** obj_pp = mpObjCo; + while (obj_pp < max_obj_pp) { + cCcD_Obj* obj_p = *obj_pp; + if (obj_p->GetObjCo().getSPrm() & 1) { + fopAc_ac_c* temp_r31 = dComIfGp_getPlayer(0); + if (obj_p->GetAc() != temp_r31 && (*obj_pp)->GetDivideInfo().Chk(sp18) != 0) { + f32 sp8; + if ((*obj_pp)->GetShapeAttr()->CrossCo(cps_attr, &sp8) != 0) { + fopAc_ac_c* actor = (*obj_pp)->GetAc(); + if (actor != NULL && + actor->attention_info.flags & (fopAc_AttnFlag_LOCK_e | fopAc_AttnFlag_BATTLE_e)) { + Vec spC; + PSMTXMultVec(dComIfGd_getViewMtx(), &actor->current.pos, &spC); + if (spC.z < 0.0f && spC.z > z_max) { + *o_actor = actor; + z_max = spC.z; + } + } + } + } + } + obj_pp++; + } + + return *o_actor != NULL; +} +#endif + bool dCcS::chkCameraPoint(cXyz const& param_0, cCcD_ShapeAttr::Shape* param_1, fopAc_ac_c* param_2, fopAc_ac_c* param_3) { if (mObjCoCount == 0) { |
