Plasma Engine  2.0
Loading...
Searching...
No Matches
CollisionFilter.h
1#pragma once
2
3#include <Foundation/Containers/StaticArray.h>
4#include <Foundation/Strings/String.h>
5#include <GameEngine/GameEngineDLL.h>
6
8class PL_GAMEENGINE_DLL plCollisionFilterConfig
9{
10public:
12
13 void SetGroupName(plUInt32 uiGroup, plStringView sName);
14
15 plStringView GetGroupName(plUInt32 uiGroup) const;
16
17 void EnableCollision(plUInt32 uiGroup1, plUInt32 uiGroup2, bool bEnable = true);
18
19 bool IsCollisionEnabled(plUInt32 uiGroup1, plUInt32 uiGroup2) const;
20
21 inline plUInt32 GetFilterMask(plUInt32 uiGroup) const { return m_GroupMasks[uiGroup]; }
22
24 plUInt32 GetNumNamedGroups() const;
25
28 plUInt32 GetNamedGroupIndex(plUInt32 uiGroup) const;
29
31 plUInt32 GetFilterGroupByName(plStringView sName) const;
32
34 plUInt32 FindUnnamedGroup() const;
35
36 void Save(plStreamWriter& inout_stream) const;
37 void Load(plStreamReader& inout_stream);
38
39 static constexpr const plStringView s_sConfigFile = ":project/RuntimeConfigs/CollisionLayers.cfg"_plsv;
40
41 plResult Save(plStringView sFile = s_sConfigFile) const;
42 plResult Load(plStringView sFile = s_sConfigFile);
43
44
45private:
46 plUInt32 m_GroupMasks[32];
47 char m_GroupNames[32][32];
48};
A 32x32 matrix of named filters that can be configured to enable or disable collisions.
Definition CollisionFilter.h:9
Interface for binary in (read) streams.
Definition Stream.h:22
Interface for binary out (write) streams.
Definition Stream.h:107
plStringView represent a read-only sub-string of a larger string, as it can store a dedicated string ...
Definition StringView.h:34
Default enum for returning failure or success, instead of using a bool.
Definition Types.h:54