Path: blob/master/thirdparty/jolt_physics/Jolt/Physics/Collision/BroadPhase/BroadPhaseLayerInterfaceTable.h
9918 views
// Jolt Physics Library (https://github.com/jrouwe/JoltPhysics)1// SPDX-FileCopyrightText: 2023 Jorrit Rouwe2// SPDX-License-Identifier: MIT34#pragma once56#include <Jolt/Physics/Collision/BroadPhase/BroadPhaseLayer.h>78JPH_NAMESPACE_BEGIN910/// BroadPhaseLayerInterface implementation.11/// This defines a mapping between object and broadphase layers.12/// This implementation uses a simple table13class BroadPhaseLayerInterfaceTable : public BroadPhaseLayerInterface14{15public:16JPH_OVERRIDE_NEW_DELETE1718BroadPhaseLayerInterfaceTable(uint inNumObjectLayers, uint inNumBroadPhaseLayers) :19mNumBroadPhaseLayers(inNumBroadPhaseLayers)20{21mObjectToBroadPhase.resize(inNumObjectLayers, BroadPhaseLayer(0));22#if defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED)23mBroadPhaseLayerNames.resize(inNumBroadPhaseLayers, "Undefined");24#endif // JPH_EXTERNAL_PROFILE || JPH_PROFILE_ENABLED25}2627void MapObjectToBroadPhaseLayer(ObjectLayer inObjectLayer, BroadPhaseLayer inBroadPhaseLayer)28{29JPH_ASSERT((BroadPhaseLayer::Type)inBroadPhaseLayer < mNumBroadPhaseLayers);30mObjectToBroadPhase[inObjectLayer] = inBroadPhaseLayer;31}3233virtual uint GetNumBroadPhaseLayers() const override34{35return mNumBroadPhaseLayers;36}3738virtual BroadPhaseLayer GetBroadPhaseLayer(ObjectLayer inLayer) const override39{40return mObjectToBroadPhase[inLayer];41}4243#if defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED)44void SetBroadPhaseLayerName(BroadPhaseLayer inLayer, const char *inName)45{46mBroadPhaseLayerNames[(BroadPhaseLayer::Type)inLayer] = inName;47}4849virtual const char * GetBroadPhaseLayerName(BroadPhaseLayer inLayer) const override50{51return mBroadPhaseLayerNames[(BroadPhaseLayer::Type)inLayer];52}53#endif // JPH_EXTERNAL_PROFILE || JPH_PROFILE_ENABLED5455private:56uint mNumBroadPhaseLayers;57Array<BroadPhaseLayer> mObjectToBroadPhase;58#if defined(JPH_EXTERNAL_PROFILE) || defined(JPH_PROFILE_ENABLED)59Array<const char *> mBroadPhaseLayerNames;60#endif // JPH_EXTERNAL_PROFILE || JPH_PROFILE_ENABLED61};6263JPH_NAMESPACE_END646566