All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
CollisionMaterialIndexLookupPair.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Collision.h"
6 #include "Types.h"
7 
8 #include <vector>
9 #include <limits>
10 
11 namespace Eegeo
12 {
13  namespace Collision
14  {
15 
17  {
19  : FirstCollisionFaceIndex(0)
20  , MaterialIndex(0)
21  {}
22 
23  u32 FirstCollisionFaceIndex;
24  u16 MaterialIndex;
25  };
26 
27 
29  {
30  void Add(int collisionFaceIndex, u16 materialIndex)
31  {
32  if (m_pairs.empty() || m_pairs.back().MaterialIndex != materialIndex)
33  {
35  Eegeo_ASSERT(collisionFaceIndex >= 0);
36  pair.FirstCollisionFaceIndex = collisionFaceIndex;
37  pair.MaterialIndex = materialIndex;
38  m_pairs.push_back(pair);
39  }
40  }
41 
42  void Reserve(size_t capacity) { m_pairs.reserve(capacity); }
43  void Clear() { m_pairs.clear(); }
44 
45  const std::vector<CollisionMaterialIndexLookupPair>& Pairs() const { return m_pairs; }
46  private:
47  std::vector<CollisionMaterialIndexLookupPair> m_pairs;
48  };
49  }
50 }