My Project
EdgeBuilder.h
1 #pragma once
2 
3 #include <unordered_set>
4 
5 namespace ParaEngine
6 {
10 class EdgeHash
11 {
12 public:
13  EdgeHash();
14  EdgeHash(int v0, int v1);
15 
16  unsigned int hashCode() const;
17  bool operator==(const EdgeHash& rhs) const;
18 
19  DWORD m_v0; // indices
20  DWORD m_v1; // indices
21 };
22 
27 {
28 public:
30  enum{
31  bucket_size = 4, // 0 < bucket_size
32  min_buckets = 128}; // min_buckets = 2 ^^ N, 0 < N
33 
34  size_t operator( )( const EdgeHash& Key ) const
35  {
36  return Key.hashCode();
37  }
38  bool operator( )( const EdgeHash& _Key1,const EdgeHash& _Key2) const
39  {
40  return !(_Key1== _Key2);
41  }
42 };
43 
48 {
49 public:
50  CEdgeBuilder(void);
51  ~CEdgeBuilder(void);
52 public:
53  static void AddEdge( std::unordered_set <EdgeHash, hash_compare_edge> & edgeTable, DWORD& dwNumEdges, WORD v0, WORD v1 );
54 };
55 }
For shadow volume: indexed edge building.
Definition: EdgeBuilder.h:10
different physics engine has different winding order.
Definition: EventBinding.h:32
the hash compare class for stdext hash_set used in shadow volume edge building
Definition: EdgeBuilder.h:26
a set of static function for edge building for shadow volume
Definition: EdgeBuilder.h:47