mirror of
https://github.com/zeldaret/botw
synced 2026-08-17 13:09:22 -04:00
ksys/phys: Implement ContactMgr::registerContactPoint for queries
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
#include "KingSystem/Physics/System/physEntityGroupFilter.h"
|
||||
#include "KingSystem/Physics/System/physGroupFilter.h"
|
||||
#include "KingSystem/Physics/System/physLayerContactPointInfo.h"
|
||||
#include "KingSystem/Physics/System/physQueryContactPointInfo.h"
|
||||
#include "KingSystem/Physics/System/physSystem.h"
|
||||
#include "KingSystem/Utils/Debug.h"
|
||||
|
||||
@@ -231,6 +232,25 @@ bool ContactMgr::registerContactPoint(ContactPointInfo* info, const ContactPoint
|
||||
return disable_contact == ContactPointInfo::ShouldDisableContact::Yes;
|
||||
}
|
||||
|
||||
bool ContactMgr::registerContactPoint(QueryContactPointInfo* info, const ContactPoint& point,
|
||||
bool penetrating) {
|
||||
int pool_index = allocateContactPoint();
|
||||
if (pool_index == -1)
|
||||
return false;
|
||||
|
||||
auto& point_in_pool = mContactPointPool[pool_index];
|
||||
point_in_pool = point;
|
||||
|
||||
if (info->mNumContactPoints >= info->mPoints.size() && info->_2c < 2)
|
||||
return false;
|
||||
|
||||
int index = info->mNumContactPoints.increment();
|
||||
info->mPoints[index] = &point_in_pool;
|
||||
info->mPoints[index]->flags.makeAllZero();
|
||||
info->mPoints[index]->flags.change(ContactPoint::Flag::Penetrating, penetrating);
|
||||
return true;
|
||||
}
|
||||
|
||||
void ContactMgr::registerContactPoint(LayerContactPointInfo* info, const ContactPoint& point,
|
||||
bool penetrating) {
|
||||
int pool_index = allocateContactPoint();
|
||||
|
||||
@@ -29,6 +29,7 @@ struct CollidingBodies;
|
||||
class CollisionInfo;
|
||||
class ContactLayerCollisionInfo;
|
||||
class ContactPointInfoBase;
|
||||
class QueryContactPointInfo;
|
||||
class RigidBody;
|
||||
struct RigidBodyCollisionMasks;
|
||||
class ContactPointInfo;
|
||||
@@ -123,8 +124,8 @@ public:
|
||||
const RigidBodyCollisionMasks& colliding_body_masks,
|
||||
bool penetrating);
|
||||
|
||||
// 0x0000007100fb35cc
|
||||
void registerContactPoint(void* unk_info, const ContactPoint& point, bool penetrating);
|
||||
bool registerContactPoint(QueryContactPointInfo* info, const ContactPoint& point,
|
||||
bool penetrating);
|
||||
|
||||
void registerContactPoint(LayerContactPointInfo* info, const ContactPoint& point,
|
||||
bool penetrating);
|
||||
|
||||
Reference in New Issue
Block a user