mirror of https://github.com/zeldaret/botw.git
40 lines
1.2 KiB
C++
40 lines
1.2 KiB
C++
#include "KingSystem/Physics/System/physClosestPointQuery.h"
|
|
#include "KingSystem/Physics/RigidBody/physRigidBody.h"
|
|
#include "KingSystem/Physics/System/physQueryContactPointInfo.h"
|
|
#include "KingSystem/Physics/physDefines.h"
|
|
#include "KingSystem/Physics/physLayerMaskBuilder.h"
|
|
|
|
namespace ksys::phys {
|
|
|
|
ClosestPointQuery::ClosestPointQuery(RigidBody* body, QueryContactPointInfo* contact_point_info)
|
|
: mBody(body), mContactPointInfo(contact_point_info) {
|
|
reset();
|
|
}
|
|
|
|
ClosestPointQuery::~ClosestPointQuery() = default;
|
|
|
|
void ClosestPointQuery::reset() {
|
|
mIsSuccess = false;
|
|
_18 = 0;
|
|
}
|
|
|
|
void ClosestPointQuery::setLayerMasks(const LayerMaskBuilder& builder) {
|
|
mContactPointInfo->setLayerMasks(builder);
|
|
}
|
|
|
|
bool ClosestPointQuery::isSuccess() const {
|
|
return mIsSuccess;
|
|
}
|
|
|
|
void ClosestPointQuery::setLayerMasksAndBodyCollisionFilterInfo(const LayerMaskBuilder& builder) {
|
|
EntityCollisionMask mask;
|
|
mask.regular.query_custom_receiver_layer_mask =
|
|
builder.getMasks()[int(ContactLayerType::Entity)].layers;
|
|
mask.regular.layer = ContactLayer::EntityQueryCustomReceiver;
|
|
mBody->setCollisionFilterInfo(mask.raw);
|
|
|
|
setLayerMasks(builder);
|
|
}
|
|
|
|
} // namespace ksys::phys
|