mirror of https://github.com/zeldaret/botw.git
ksys/phys: Deduplicate hkpEntity -> RigidBody getters
This commit is contained in:
parent
a9ee6f839e
commit
9b1d08ca99
|
@ -18,11 +18,6 @@
|
|||
|
||||
namespace ksys::phys {
|
||||
|
||||
static RigidBody* getRigidBody(hkpRigidBody* hk_body) {
|
||||
// This needs to be kept in sync with the RigidBody constructor!
|
||||
return reinterpret_cast<RigidBody*>(hk_body->getUserData());
|
||||
}
|
||||
|
||||
static void clearCallbackDelay(const hkpContactPointEvent& event) {
|
||||
event.m_contactMgr->m_contactPointCallbackDelay = 0;
|
||||
}
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include "KingSystem/Physics/RigidBody/physRigidBody.h"
|
||||
#include "KingSystem/Physics/System/physContactMgr.h"
|
||||
#include "KingSystem/Physics/System/physSystem.h"
|
||||
#include "KingSystem/Physics/physConversions.h"
|
||||
#include "KingSystem/Utils/BitField.h"
|
||||
#include "KingSystem/Utils/HeapUtil.h"
|
||||
|
||||
|
@ -365,12 +366,9 @@ KSYS_ALWAYS_INLINE hkBool EntityGroupFilter::isCollisionEnabled(const hkpShapeRa
|
|||
|
||||
hkBool EntityGroupFilter::isCollisionEnabled(const hkpWorldRayCastInput& inputA,
|
||||
const hkpCollidable& collidableB) const {
|
||||
if (collidableB.getType() == hkpWorldObject::BROAD_PHASE_ENTITY) {
|
||||
auto* entity = static_cast<const hkpEntity*>(collidableB.getOwner());
|
||||
auto* body = entity ? reinterpret_cast<RigidBody*>(entity->getUserData()) : nullptr;
|
||||
if (body && body->hasFlag(RigidBody::Flag::_200))
|
||||
return false;
|
||||
}
|
||||
auto* body = getRigidBody(collidableB);
|
||||
if (body && body->hasFlag(RigidBody::Flag::_200))
|
||||
return false;
|
||||
|
||||
return testCollisionForRayCasting(inputA.m_filterInfo, collidableB.getCollisionFilterInfo());
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
#include <Havok/Physics2012/Dynamics/World/hkpWorldObject.h>
|
||||
#include <basis/seadRawPrint.h>
|
||||
#include "KingSystem/Physics/RigidBody/physRigidBody.h"
|
||||
#include "KingSystem/Physics/physConversions.h"
|
||||
#include "KingSystem/Utils/HeapUtil.h"
|
||||
|
||||
namespace ksys::phys {
|
||||
|
@ -181,12 +182,9 @@ hkBool SensorGroupFilter::isCollisionEnabled(const hkpShapeRayCastInput& aInput,
|
|||
|
||||
hkBool SensorGroupFilter::isCollisionEnabled(const hkpWorldRayCastInput& inputA,
|
||||
const hkpCollidable& collidableB) const {
|
||||
if (collidableB.getType() == hkpWorldObject::BROAD_PHASE_ENTITY) {
|
||||
auto* entity = static_cast<const hkpEntity*>(collidableB.getOwner());
|
||||
auto* body = entity ? reinterpret_cast<RigidBody*>(entity->getUserData()) : nullptr;
|
||||
if (body && body->hasFlag(RigidBody::Flag::_200))
|
||||
return false;
|
||||
}
|
||||
auto* body = getRigidBody(collidableB);
|
||||
if (body && body->hasFlag(RigidBody::Flag::_200))
|
||||
return false;
|
||||
|
||||
return testCollisionForRayCasting(inputA.m_filterInfo, collidableB.getCollisionFilterInfo());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue