diff options
| author | Léo Lam <leo@leolam.fr> | 2022-03-02 01:18:25 +0100 |
|---|---|---|
| committer | Léo Lam <leo@leolam.fr> | 2022-03-02 01:25:11 +0100 |
| commit | b2a66ca8586d435dc417d0d9aa65e6b445fe9855 (patch) | |
| tree | ef64560ad069e99e7773ab905671222b3b8ea163 /src/KingSystem/Physics/System/physContactPointInfoEx.cpp | |
| parent | 220cb534689303a2ef4df51a41b6142cfe9b7ee2 (diff) | |
ksys/phys: ContactPointInfoEx -> ContactLayerContactPointInfo
Turns out it's the equivalent to ContactLayerCollisionInfo.
Diffstat (limited to 'src/KingSystem/Physics/System/physContactPointInfoEx.cpp')
| -rw-r--r-- | src/KingSystem/Physics/System/physContactPointInfoEx.cpp | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/src/KingSystem/Physics/System/physContactPointInfoEx.cpp b/src/KingSystem/Physics/System/physContactPointInfoEx.cpp deleted file mode 100644 index 2f1851b4..00000000 --- a/src/KingSystem/Physics/System/physContactPointInfoEx.cpp +++ /dev/null @@ -1,109 +0,0 @@ -#include "KingSystem/Physics/System/physContactPointInfoEx.h" -#include "KingSystem/Physics/System/physContactMgr.h" -#include "KingSystem/Physics/System/physSystem.h" - -namespace ksys::phys { - -ContactPointInfoEx* ContactPointInfoEx::make(sead::Heap* heap, int num, int num2, - const sead::SafeString& name, int a, int b, int c) { - return System::instance()->allocContactPointsEx(heap, num, num2, name, a, b, c); -} - -void ContactPointInfoEx::free(ContactPointInfoEx* instance) { - System::instance()->freeContactPointInfoEx(instance); -} - -bool ContactPointInfoEx::registerLayerPair(ContactLayer layer1, ContactLayer layer2, bool enabled) { - if (mLayerType == ContactLayerType::Invalid) - mLayerType = getContactLayerType(layer1); - - if (!isPairUnknown(layer1, layer2)) - return false; - - // Add a new one. - auto* entry = mLayerEntries.emplaceBack(); - if (entry == nullptr) - return false; - - entry->layer1 = layer1; - entry->layer2 = layer2; - entry->enabled = enabled; - [&] { System::instance()->registerContactPointLayerPair(this, layer1, layer2, enabled); }(); - return true; -} - -bool ContactPointInfoEx::isPairUnknown(ContactLayer layer1, ContactLayer layer2) const { - for (int i = 0; i < mLayerEntries.size(); ++i) { - const auto* entry = mLayerEntries[i]; - if (int(layer1) == entry->layer1 && int(layer2) == entry->layer2) - return false; - if (int(layer1) == entry->layer2 && int(layer2) == entry->layer1) - return false; - } - return true; -} - -ContactPointInfoEx::ContactPointInfoEx(const sead::SafeString& name, int a, int b, int c) - : ContactPointInfoBase(name, a, b, c) {} - -ContactPointInfoEx::~ContactPointInfoEx() = default; - -void ContactPointInfoEx::allocPoints(sead::Heap* heap, int num, int num2) { - mPoints.allocBufferAssert(num, heap); - mLayerEntries.allocBuffer(num2, heap); -} - -void ContactPointInfoEx::freePoints() { - mPoints.freeBuffer(); - mLayerEntries.freeBuffer(); -} - -void ContactPointInfoEx::Iterator::getData(sead::Vector3f* out, - ContactPointInfoEx::Iterator::Mode mode) const { - const float scale = getPoint()->scale; - out->e = getPoint()->_10.e; - - switch (mode) { - case Mode::_0: { - if (getPoint()->flags.isOn(ContactPoint::Flag::_2)) - return; - *out += getPoint()->_1c * -scale; - break; - } - - case Mode::_1: { - if (!getPoint()->flags.isOn(ContactPoint::Flag::_2)) - return; - *out += getPoint()->_1c * scale; - break; - } - - case Mode::_2: - default: { - *out += getPoint()->_1c * scale * 0.5f; - break; - } - } -} - -sead::Vector3f -ContactPointInfoEx::Iterator::getData(ContactPointInfoEx::Iterator::Mode mode) const { - sead::Vector3f out; - getData(&out, mode); - return out; -} - -ContactPointInfoEx::Iterator::Iterator(const ContactPointInfoEx::Points& points, int count) - : mPoints(points.getBufferPtr()), mPointsNum(count), mPointsStart(points.getBufferPtr()) { - for (int i = 0; i != count; ++i) { - if (!mPoints[i]->flags.isOn(ContactPoint::Flag::_1)) - break; - ++mIdx; - } -} - -ContactPointInfoEx::IteratorEnd::IteratorEnd(const ContactPointInfoEx::Points& points, int count) - : mIdx(count), mPoints(points.getBufferPtr()), mPointsNum(count), - mPointsStart(points.getBufferPtr()) {} - -} // namespace ksys::phys |
