Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public abstract class FactComparer : EqualityComparer<Fact>
{
protected bool search_righthanded;
protected abstract bool Compare (Fact search, Fact fact);
public FactComparer SetSearchRight()
{
search_righthanded = true;
return this;
}
public FactComparer SetSearchLeft()
{
search_righthanded = false;
return this;
}
public override bool Equals(Fact left, Fact right)
{
return search_righthanded ? Compare(left, right) : Compare(right, left);
}
public override int GetHashCode(Fact obj)
{
return 0; //obj.GetHashCode();
}
}
public class FactEquivalentsComparer : FactComparer
{
protected override bool Compare (Fact search, Fact fact)
{
return search.Equivalent(fact);
}
}
class LineFactHightDirectionComparer : FactComparer
{
protected override bool Compare (Fact search, Fact fact)
{
return fact is LineFact && search is LineFact
&& Math3d.IsApproximatelyParallel(((LineFact) fact).Dir, ((LineFact) search).Dir)
Marco Zimmer
committed
&& ((LineFact) fact).Distance + Math3d.vectorPrecission >= ((LineFact) search).Distance;
// && Mathf.Approximately(((LineFact) x).Distance, ((LineFact) y).Distance);
}
}