diff options
Diffstat (limited to 'Client/Assembly-CSharp/Wire.cs')
-rw-r--r-- | Client/Assembly-CSharp/Wire.cs | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/Wire.cs b/Client/Assembly-CSharp/Wire.cs new file mode 100644 index 0000000..055bc41 --- /dev/null +++ b/Client/Assembly-CSharp/Wire.cs @@ -0,0 +1,61 @@ +using System; +using UnityEngine; + +public class Wire : MonoBehaviour +{ + public Vector2 BaseWorldPos { get; internal set; } + + private const int WireDepth = -14; + + public SpriteRenderer Liner; + + public SpriteRenderer ColorBase; + + public SpriteRenderer ColorEnd; + + public Collider2D hitbox; + + public SpriteRenderer WireTip; + + public sbyte WireId; + + public void Start() + { + this.BaseWorldPos = base.transform.position; + } + + public void ResetLine(Vector3 targetWorldPos, bool reset = false) + { + if (reset) + { + this.Liner.transform.localScale = new Vector3(0f, 0f, 0f); + this.WireTip.transform.eulerAngles = Vector3.zero; + this.WireTip.transform.position = base.transform.position; + return; + } + Vector2 vector = targetWorldPos - base.transform.position; + Vector2 normalized = vector.normalized; + Vector3 localPosition = default(Vector3); + localPosition = vector - normalized * 0.075f; + localPosition.z = -0.01f; + this.WireTip.transform.localPosition = localPosition; + float magnitude = vector.magnitude; + this.Liner.transform.localScale = new Vector3(magnitude, 1f, 1f); + this.Liner.transform.localPosition = vector / 2f; + this.WireTip.transform.LookAt2d(targetWorldPos); + this.Liner.transform.localEulerAngles = new Vector3(0f, 0f, Vector2.SignedAngle(Vector2.right, vector)); + } + + public void ConnectRight(WireNode node) + { + Vector3 position = node.transform.position; + this.ResetLine(position, false); + } + + public void SetColor(Color color) + { + this.Liner.material.SetColor("_Color", color); + this.ColorBase.color = color; + this.ColorEnd.color = color; + } +} |