-
Notifications
You must be signed in to change notification settings - Fork 2
/
Line.cs
48 lines (41 loc) · 1.31 KB
/
Line.cs
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
47
48
using System.Collections.Generic;
namespace Stl2Blueprint
{
public struct Line
{
public readonly Vector3 Start;
public readonly Vector3 End;
public readonly float Len;
public readonly Vector3 Vector;
public readonly Vector3 Dir;
public Line (Vector3 start, Vector3 end)
{
Start = start;
End = end;
Vector = end - start;
Len = Vector.Length();
if (Len == 0)
Dir = new Vector3();
else
Dir = Vector / Len;
}
public static bool operator == (Line v1, Line v2)
{
return (v1.Start == v2.Start && v1.End == v2.End) ||
(v1.End == v2.Start && v1.Start == v2.End);
}
public static bool operator != (Line v1, Line v2)
{
return (v1.Start != v2.Start || v1.End != v2.End) &&
(v1.End != v2.Start || v1.Start != v2.End);
}
public override bool Equals (object obj)
{
return obj is Line edge && ((Start == edge.Start && End == edge.End) || (End == edge.Start && Start == edge.End));
}
public override int GetHashCode ()
{
return -864309161 + Start.GetHashCode() + End.GetHashCode();
}
}
}