MUDA
Loading...
Searching...
No Matches
collision_pair.h
1#pragma once
2#include <iostream>
3#include <muda/muda_def.h>
4#include <muda/ext/eigen/eigen_core_cxx20.h>
5
6namespace muda::spatial_hash
7{
9{
10 Eigen::Vector2i id;
11
12 public:
13 Eigen::Vector2i IDs() const { return id; }
14
15 MUDA_GENERIC CollisionPair(int i, int j)
16 {
17 if(i > j)
18 {
19 id[0] = j;
20 id[1] = i;
21 }
22 else
23 {
24 id[0] = i;
25 id[1] = j;
26 }
27 }
28
29 MUDA_GENERIC CollisionPair()
30 : id(-1, -1)
31 {
32 }
33
34 MUDA_GENERIC friend bool operator<(const CollisionPair& l, const CollisionPair& r)
35 {
36 return (l.id[0] < r.id[0]) || (l.id[0] == r.id[0] && l.id[1] < r.id[1]);
37 }
38
39 MUDA_GENERIC friend bool operator==(const CollisionPair& l, const CollisionPair& r)
40 {
41 return (l.id[0] == r.id[0] && l.id[1] == r.id[1]);
42 }
43
44 MUDA_GENERIC bool is_valid() const { return id[0] != -1 && id[1] != -1; }
45
46 friend std::ostream& operator<<(std::ostream& os, const CollisionPair& c)
47 {
48 os << "(" << c.id[0] << "," << c.id[1] << ")";
49 return os;
50 }
51
52 MUDA_GENERIC static CollisionPair invalid()
53 {
54 return CollisionPair(-1, -1);
55 }
56};
57} // namespace muda::spatial_hash
Definition collision_pair.h:9