Overte C++ Documentation
TemporaryPairwiseCollisionFilter.h
1 //
2 // TemporaryPairwiseCollisionFilter.h
3 // libraries/physics/src
4 //
5 // Created by Andrew Meadows 2019.08.12
6 // Copyright 2018 High Fidelity, Inc.
7 //
8 // Distributed under the Apache License, Version 2.0.
9 // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10 //
11 
12 #ifndef hifi_TemporaryPairwiseCollisionFilter_h
13 #define hifi_TemporaryPairwiseCollisionFilter_h
14 
15 #include <unordered_map>
16 #include <btBulletDynamicsCommon.h>
17 #include <cstdint>
18 class TemporaryPairwiseCollisionFilter {
19 public:
20  using LastContactMap = std::unordered_map<const btCollisionObject*, uint32_t>;
21 
22  TemporaryPairwiseCollisionFilter() { }
23 
24  bool isFiltered(const btCollisionObject* object) const;
25  void incrementEntry(const btCollisionObject* object);
26  void expireOldEntries();
27  void clearAllEntries() { _filteredContacts.clear(); _stepCount = 0; }
28  void incrementStepCount() { ++_stepCount; }
29 
30 protected:
31  LastContactMap _filteredContacts;
32  uint32_t _stepCount { 0 };
33 };
34 
35 #endif // hifi_TemporaryPairwiseCollisionFilter_h