A game about forced loneliness, made by TACStudios
1using System;
2using System.Collections;
3using System.Collections.Generic;
4using UnityEngine;
5
6namespace UnityEditor.U2D.Common.Path
7{
8 internal enum TangentMode
9 {
10 Linear = 0,
11 Continuous = 1,
12 Broken = 2
13 }
14
15 [Serializable]
16 internal struct TangentCache
17 {
18 public Vector3 leftTangent;
19 public Vector3 rightTangent;
20 }
21
22 [Serializable]
23 internal struct ControlPoint
24 {
25 public Vector3 position;
26 public Vector3 localLeftTangent;
27 public Vector3 localRightTangent;
28 public TangentMode tangentMode;
29 public TangentCache continuousCache;
30 public TangentCache brokenCache;
31 public bool mirrorLeft;
32
33 public Vector3 leftTangent
34 {
35 get { return localLeftTangent + position; }
36 set { localLeftTangent = value - position; }
37 }
38
39 public Vector3 rightTangent
40 {
41 get { return localRightTangent + position; }
42 set { localRightTangent = value - position; }
43 }
44
45 public void StoreTangents()
46 {
47 if (tangentMode == TangentMode.Continuous)
48 {
49 continuousCache.leftTangent = localLeftTangent;
50 continuousCache.rightTangent = localRightTangent;
51 }
52 else if (tangentMode == TangentMode.Broken)
53 {
54 brokenCache.leftTangent = localLeftTangent;
55 brokenCache.rightTangent = localRightTangent;
56 }
57 }
58
59 public void RestoreTangents()
60 {
61 if (tangentMode == TangentMode.Continuous)
62 {
63 localLeftTangent = continuousCache.leftTangent;
64 localRightTangent = continuousCache.rightTangent;
65 }
66 else if (tangentMode == TangentMode.Broken)
67 {
68 localLeftTangent = brokenCache.leftTangent;
69 localRightTangent = brokenCache.rightTangent;
70 }
71 }
72 }
73}