diff options
| author | Léo Lam <leo@leolam.fr> | 2022-03-17 13:29:27 +0100 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2022-03-18 01:19:59 +0100 |
| commit | bd1c2b6ed69bde46dabf27ea239b68c00c117e26 (patch) | |
| tree | 58c9714275b9c79c533e7814fe338fabd1ae0248 /src/KingSystem/Map | |
| parent | 8d88461c52f6e118a0997edc1b8230724021558a (diff) | |
ksys/phys: Start adding RayCast
Diffstat (limited to 'src/KingSystem/Map')
| -rw-r--r-- | src/KingSystem/Map/mapAutoPlacement.cpp | 31 | ||||
| -rw-r--r-- | src/KingSystem/Map/mapAutoPlacement.h | 13 |
2 files changed, 22 insertions, 22 deletions
diff --git a/src/KingSystem/Map/mapAutoPlacement.cpp b/src/KingSystem/Map/mapAutoPlacement.cpp index 886a65da..a49e6153 100644 --- a/src/KingSystem/Map/mapAutoPlacement.cpp +++ b/src/KingSystem/Map/mapAutoPlacement.cpp @@ -7,11 +7,23 @@ #include "KingSystem/Map/mapAutoPlacementFlowMgr.h" #include "KingSystem/Map/mapAutoPlacementMgr.h" #include "KingSystem/Physics/RigidBody/physRigidBody.h" +#include "KingSystem/Physics/System/physRayCast.h" #include "KingSystem/Utils/Byaml/Byaml.h" #include "KingSystem/World/worldWeatherMgr.h" namespace ksys::map { +// TODO: this phys::RayCast derived class should be moved to phys:: +struct Raycast : phys::RayCast { + Raycast(); + ~Raycast() override; + + static Raycast* create(void*, u32); + + void sub_7100FC55AC(u32); + void release(); +}; + AutoPlacement::AutoPlacement() = default; AutoPlacement::~AutoPlacement() = default; @@ -128,23 +140,22 @@ bool PlacementThing::invoke() { if (mRaycast == nullptr || mState != State::Initialized) return false; - mRaycast->addContactLayer(phys::ContactLayer::EntityGround); - mRaycast->addContactLayer(phys::ContactLayer::EntityGroundRough); - mRaycast->addContactLayer(phys::ContactLayer::EntityGroundSmooth); - mRaycast->addContactLayer(phys::ContactLayer::EntityAirWall); - mRaycast->addContactLayer(phys::ContactLayer::EntityGroundObject); - mRaycast->addContactLayer(phys::ContactLayer::EntityTree); + mRaycast->enableLayer(phys::ContactLayer::EntityGround); + mRaycast->enableLayer(phys::ContactLayer::EntityGroundRough); + mRaycast->enableLayer(phys::ContactLayer::EntityGroundSmooth); + mRaycast->enableLayer(phys::ContactLayer::EntityAirWall); + mRaycast->enableLayer(phys::ContactLayer::EntityGroundObject); + mRaycast->enableLayer(phys::ContactLayer::EntityTree); if (_8944) { sead::Vector3f v1 = mVec1 + sead::Vector3f{0, 4, 30}; sead::Vector3f v2 = mVec1 - sead::Vector3f{0, 4, 30}; - mRaycast->sub_7100FC38A0(v1, v2); + mRaycast->setStartAndEnd(v1, v2); } else { sead::Vector3f v1{mVec1.x, 2000.0f, mVec1.z}; sead::Vector3f v2{mVec1.x, -100.0f, mVec1.z}; - mRaycast->sub_7100FC38A0(v1, v2); - // void** p = &mRaycast->mGroups[0]._68; - // *p = &mDelegate; + mRaycast->setStartAndEnd(v1, v2); + mRaycast->setCallback(&mDelegate); } mState = State::LayersDone; diff --git a/src/KingSystem/Map/mapAutoPlacement.h b/src/KingSystem/Map/mapAutoPlacement.h index ecdb3a36..0ec68ba8 100644 --- a/src/KingSystem/Map/mapAutoPlacement.h +++ b/src/KingSystem/Map/mapAutoPlacement.h @@ -20,18 +20,7 @@ class AutoPlacement; struct AutoPlacementFlowRes; class PlacementThing; -// TODO: move this -struct Raycast { - Raycast(); - virtual ~Raycast(); - - static Raycast* create(void*, u32); - - void addContactLayer(phys::ContactLayer layer); - void sub_7100FC55AC(u32); - void release(); - void sub_7100FC38A0(const sead::Vector3f&, const sead::Vector3f&); -}; +struct Raycast; struct PlacementGroup { sead::SafeString a; |
