-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTransform.cs
More file actions
32 lines (29 loc) · 991 Bytes
/
Transform.cs
File metadata and controls
32 lines (29 loc) · 991 Bytes
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
using System.Numerics;
public struct Transform {
public Transform(Vector3 pos, Quaternion rot) {
Position = pos;
Rotation = rot;
}
public Vector3 Position;
public Quaternion Rotation;
public static Transform Zero => new(Vector3.Zero, Quaternion.Identity);
public static Transform Lerp(Transform a, Transform b, float t, bool clamp) {
return new Transform {
Position = Vector3.Lerp( a.Position, b.Position, t ),
Rotation = Quaternion.Slerp( a.Rotation, b.Rotation, t ),
};
}
public override readonly bool Equals(object obj) {
var t = obj as Transform?;
if (t is null)
return false;
if (t.Value.Position != Position)
return false;
if (t.Value.Rotation != Rotation)
return false;
return true;
}
public override int GetHashCode() => HashCode.Combine(Position, Rotation);
public static bool operator ==(Transform left, Transform right) => left.Equals(right);
public static bool operator !=(Transform left, Transform right) => !(left == right);
}