Engine²
Open-source game engine written in C++.
Loading...
Searching...
No Matches
BroadPhaseLayerImpl.hpp
Go to the documentation of this file.
1#pragma once
2
4#include "Layers.hpp"
5
6#include <array>
7
8// clang-format off
9#include <Jolt/Jolt.h>
10// clang-format on
11
12#include <Jolt/Physics/Collision/BroadPhase/BroadPhaseLayer.h>
13#include <Jolt/Physics/Collision/ObjectLayer.h>
14
15namespace Physics::Utils {
16// BroadPhaseLayerInterface implementation
17// This defines a mapping between object and broadphase layers.
18class BPLayerInterfaceImpl final : public JPH::BroadPhaseLayerInterface {
19 public:
26
27 virtual JPH::uint GetNumBroadPhaseLayers() const override { return BroadPhaseLayers::NUM_LAYERS; }
28
29 virtual JPH::BroadPhaseLayer GetBroadPhaseLayer(JPH::ObjectLayer inLayer) const override
30 {
31 JPH_ASSERT(inLayer < Layers::NUM_LAYERS);
32 return _objectToBroadPhase[inLayer];
33 }
34
35 const char *GetBroadPhaseLayerName(JPH::BroadPhaseLayer inLayer) const override
36 {
37 switch ((JPH::BroadPhaseLayer::Type) inLayer)
38 {
39 case (JPH::BroadPhaseLayer::Type) BroadPhaseLayers::NON_MOVING: return "NON_MOVING";
40 case (JPH::BroadPhaseLayer::Type) BroadPhaseLayers::MOVING: return "MOVING";
41 default: JPH_ASSERT(false); return "INVALID";
42 }
43 }
44
45 private:
46 std::array<JPH::BroadPhaseLayer, Layers::NUM_LAYERS> _objectToBroadPhase;
47};
48;
49} // namespace Physics::Utils
BPLayerInterfaceImpl()
Definition BroadPhaseLayerImpl.hpp:20
std::array< JPH::BroadPhaseLayer, Layers::NUM_LAYERS > _objectToBroadPhase
Definition BroadPhaseLayerImpl.hpp:46
virtual JPH::BroadPhaseLayer GetBroadPhaseLayer(JPH::ObjectLayer inLayer) const override
Definition BroadPhaseLayerImpl.hpp:29
virtual JPH::uint GetNumBroadPhaseLayers() const override
Definition BroadPhaseLayerImpl.hpp:27
const char * GetBroadPhaseLayerName(JPH::BroadPhaseLayer inLayer) const override
Definition BroadPhaseLayerImpl.hpp:35
static constexpr JPH::BroadPhaseLayer NON_MOVING(0)
static constexpr JPH::uint NUM_LAYERS(2)
static constexpr JPH::BroadPhaseLayer MOVING(1)
static constexpr JPH::ObjectLayer NUM_LAYERS
Definition Layers.hpp:13
static constexpr JPH::ObjectLayer MOVING
Definition Layers.hpp:12
static constexpr JPH::ObjectLayer NON_MOVING
Definition Layers.hpp:11
Definition BiMap.hpp:7