Jolt Physics
A multi core friendly Game Physics Engine
Loading...
Searching...
No Matches
ObjectLayer.h
Go to the documentation of this file.
1// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)
2// SPDX-FileCopyrightText: 2021 Jorrit Rouwe
3// SPDX-License-Identifier: MIT
4
5#pragma once
6
8
10
12#if JPH_OBJECT_LAYER_BITS == 16
14#elif JPH_OBJECT_LAYER_BITS == 32
15 using ObjectLayer = uint32;
16#elif JPH_OBJECT_LAYER_BITS == 64
17 using ObjectLayer = uint64;
18#else
19 #error Invalid value for JPH_OBJECT_LAYER_BITS. Must be 16, 32 or 64.
20#endif
21
23static constexpr ObjectLayer cObjectLayerInvalid = ObjectLayer(~ObjectLayer(0U));
24
27{
28public:
30 virtual ~ObjectLayerFilter() = default;
31
33 virtual bool ShouldCollide([[maybe_unused]] ObjectLayer inLayer) const
34 {
35 return true;
36 }
37
38#ifdef JPH_TRACK_BROADPHASE_STATS
40 virtual String GetDescription() const
41 {
42 return "No Description";
43 }
44#endif // JPH_TRACK_BROADPHASE_STATS
45};
46
49{
50public:
52 virtual ~ObjectLayerPairFilter() = default;
53
55 virtual bool ShouldCollide([[maybe_unused]] ObjectLayer inLayer1, [[maybe_unused]] ObjectLayer inLayer2) const
56 {
57 return true;
58 }
59};
60
63{
64public:
66 DefaultObjectLayerFilter(const ObjectLayerPairFilter &inObjectLayerPairFilter, ObjectLayer inLayer) :
67 mObjectLayerPairFilter(inObjectLayerPairFilter),
68 mLayer(inLayer)
69 {
70 }
71
74 mObjectLayerPairFilter(inRHS.mObjectLayerPairFilter),
75 mLayer(inRHS.mLayer)
76 {
77 }
78
79 // See ObjectLayerFilter::ShouldCollide
80 virtual bool ShouldCollide(ObjectLayer inLayer) const override
81 {
82 return mObjectLayerPairFilter.ShouldCollide(mLayer, inLayer);
83 }
84
85private:
86 const ObjectLayerPairFilter & mObjectLayerPairFilter;
87 ObjectLayer mLayer;
88};
89
92{
93public:
96 mLayer(inLayer)
97 {
98 }
99
100 // See ObjectLayerFilter::ShouldCollide
101 virtual bool ShouldCollide(ObjectLayer inLayer) const override
102 {
103 return mLayer == inLayer;
104 }
105
106private:
107 ObjectLayer mLayer;
108};
109
#define JPH_EXPORT
Definition Core.h:303
std::uint64_t uint64
Definition Core.h:569
#define JPH_NAMESPACE_END
Definition Core.h:487
std::uint32_t uint32
Definition Core.h:567
#define JPH_NAMESPACE_BEGIN
Definition Core.h:481
std::uint16_t uint16
Definition Core.h:566
uint16 ObjectLayer
Layer that objects can be in, determines which other objects it can collide with.
Definition ObjectLayer.h:13
std::basic_string< char, std::char_traits< char >, STLAllocator< char > > String
Definition STLAllocator.h:107
Default filter class that uses the pair filter in combination with a specified layer to filter layers...
Definition ObjectLayer.h:63
virtual bool ShouldCollide(ObjectLayer inLayer) const override
Function to filter out object layers when doing collision query test (return true to allow testing ag...
Definition ObjectLayer.h:80
DefaultObjectLayerFilter(const ObjectLayerPairFilter &inObjectLayerPairFilter, ObjectLayer inLayer)
Constructor.
Definition ObjectLayer.h:66
DefaultObjectLayerFilter(const DefaultObjectLayerFilter &inRHS)
Copy constructor.
Definition ObjectLayer.h:73
Class that makes another class non-copyable. Usage: Inherit from NonCopyable.
Definition NonCopyable.h:11
Filter class for object layers.
Definition ObjectLayer.h:27
virtual bool ShouldCollide(ObjectLayer inLayer) const
Function to filter out object layers when doing collision query test (return true to allow testing ag...
Definition ObjectLayer.h:33
virtual ~ObjectLayerFilter()=default
Destructor.
Filter class to test if two objects can collide based on their object layer. Used while finding colli...
Definition ObjectLayer.h:49
virtual bool ShouldCollide(ObjectLayer inLayer1, ObjectLayer inLayer2) const
Returns true if two layers can collide.
Definition ObjectLayer.h:55
virtual ~ObjectLayerPairFilter()=default
Destructor.
Allows objects from a specific layer only.
Definition ObjectLayer.h:92
virtual bool ShouldCollide(ObjectLayer inLayer) const override
Function to filter out object layers when doing collision query test (return true to allow testing ag...
Definition ObjectLayer.h:101
SpecifiedObjectLayerFilter(ObjectLayer inLayer)
Constructor.
Definition ObjectLayer.h:95