diff options
| author | Jasper St. Pierre <jstpierre@mecheye.net> | 2023-09-22 02:11:26 -0700 |
|---|---|---|
| committer | Jasper St. Pierre <jstpierre@mecheye.net> | 2023-09-22 02:11:26 -0700 |
| commit | 54c8c9c4e99fa643950cecf35150c5245f2c9165 (patch) | |
| tree | 72f4c4c1c5057d3d3ca28f8cc5f2f25dca8ce46e /src/d/d_point_wind.cpp | |
| parent | 0b034a877ef561872417d66a2b6874fc26a6c6f7 (diff) | |
d_point_wind match, d_path start
Diffstat (limited to 'src/d/d_point_wind.cpp')
| -rw-r--r-- | src/d/d_point_wind.cpp | 49 |
1 files changed, 43 insertions, 6 deletions
diff --git a/src/d/d_point_wind.cpp b/src/d/d_point_wind.cpp index 3882720d..b9f93035 100644 --- a/src/d/d_point_wind.cpp +++ b/src/d/d_point_wind.cpp @@ -3,21 +3,58 @@ // Translation Unit: d_point_wind.cpp // -#include "d_point_wind.h" -#include "dolphin/types.h" +#include "d/d_point_wind.h" +#include "d/d_com_inf_game.h" +#include "d/d_kankyo_rain.h" +#include "d/d_kankyo_wether.h" +#include "SSystem/SComponent/c_lib.h" /* 800CF31C-800CF398 .text set_pwind_init__12dPointWind_cFP9cM3dGCpsS */ -void dPointWind_c::set_pwind_init(cM3dGCpsS*) { - /* Nonmatching */ +void dPointWind_c::set_pwind_init(cM3dGCpsS* pCps) { + mpCps = pCps; + mWind.mPos = mpCps->mStart; + mWind.mDir = mpCps->mEnd; + mWind.mRadius = mpCps->mRadius; + mWind.field_0x20 = 0.0f; + mWind.mStrength = 1.0f; + dKyw_pwind_cylinder_set(&mWind); } /* 800CF398-800CF5C8 .text set_pwind_move__12dPointWind_cFv */ void dPointWind_c::set_pwind_move() { - /* Nonmatching */ + f32 radScale = 1.8f; + BOOL animate = TRUE; + + cXyz p0 = mpCps->mStart; + cXyz p1 = mpCps->mEnd; + cXyz dir; + dKyr_get_vectle_calc(&p0, &p1, &dir); + + if (strcmp(dComIfGp_getStartStageName(), "sea") == 0 && dComIfGp_roomControl_getStayNo() == 4) { + radScale = 11.0f; + animate = false; + mWind.mPos = p0 + (dir * -100.0f); + } + + mWind.mDir = dir; + mWind.mRadius = mpCps->mRadius * radScale; + mWind.field_0x20 = 0.0f; + + if (animate) { + cLib_addCalc(&mWind.mPos.x, mpCps->mEnd.x, 0.1f, mWind.mRadius, mWind.mRadius * 0.5f); + cLib_addCalc(&mWind.mPos.y, mpCps->mEnd.y, 0.1f, mWind.mRadius, mWind.mRadius * 0.5f); + cLib_addCalc(&mWind.mPos.z, mpCps->mEnd.z, 0.1f, mWind.mRadius, mWind.mRadius * 0.5f); + + if (mWind.mPos.abs(p1) < mWind.mRadius) { + mWind.mPos.x = mpCps->mStart.x; + mWind.mPos.y = mpCps->mStart.y; + mWind.mPos.z = mpCps->mStart.z; + } + } } /* 800CF5C8-800CF5EC .text set_pwind_delete__12dPointWind_cFv */ void dPointWind_c::set_pwind_delete() { - /* Nonmatching */ + dKyw_pntwind_cut(&mWind); } |
