summaryrefslogtreecommitdiff
path: root/src/KingSystem/Physics/System/physClosestPointQuery.h
blob: 8a5b0b8684e510c7fa568d5871eccf03e63362b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#pragma once

#include <basis/seadTypes.h>
#include <math/seadMatrix.h>
#include <prim/seadRuntimeTypeInfo.h>

namespace ksys::phys {

class LayerMaskBuilder;
class RigidBody;
class QueryContactPointInfo;

class ClosestPointQuery {
    SEAD_RTTI_BASE(ClosestPointQuery)
public:
    ClosestPointQuery(RigidBody* body, QueryContactPointInfo* contact_point_info);
    virtual ~ClosestPointQuery();

    RigidBody* getBody() const { return mBody; }
    QueryContactPointInfo* getContactPointInfo() const { return mContactPointInfo; }

    void setLayerMasks(const LayerMaskBuilder& builder);
    void setLayerMasksAndBodyCollisionFilterInfo(const LayerMaskBuilder& builder);

    // 0x0000007100fb0850
    bool execute(bool unk);
    bool isSuccess() const;

protected:
    void reset();

    RigidBody* mBody{};
    QueryContactPointInfo* mContactPointInfo{};
    u32 _18{};
    bool mIsSuccess = false;
    sead::Matrix34f mMtx = sead::Matrix34f::ident;
};

}  // namespace ksys::phys