diff options
Diffstat (limited to 'Client/Assembly-CSharp/PowerTools/SpriteAnimNodes.cs')
-rw-r--r-- | Client/Assembly-CSharp/PowerTools/SpriteAnimNodes.cs | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/PowerTools/SpriteAnimNodes.cs b/Client/Assembly-CSharp/PowerTools/SpriteAnimNodes.cs new file mode 100644 index 0000000..2669ac1 --- /dev/null +++ b/Client/Assembly-CSharp/PowerTools/SpriteAnimNodes.cs @@ -0,0 +1,232 @@ +using System; +using UnityEngine; + +namespace PowerTools +{ + public class SpriteAnimNodes : MonoBehaviour + { + public static readonly int NUM_NODES = 10; + + [SerializeField] + [HideInInspector] + private Vector2 m_node0 = Vector2.zero; + + [SerializeField] + [HideInInspector] + private Vector2 m_node1 = Vector2.zero; + + [SerializeField] + [HideInInspector] + private Vector2 m_node2 = Vector2.zero; + + [SerializeField] + [HideInInspector] + private Vector2 m_node3 = Vector2.zero; + + [SerializeField] + [HideInInspector] + private Vector2 m_node4 = Vector2.zero; + + [SerializeField] + [HideInInspector] + private Vector2 m_node5 = Vector2.zero; + + [SerializeField] + [HideInInspector] + private Vector2 m_node6 = Vector2.zero; + + [SerializeField] + [HideInInspector] + private Vector2 m_node7 = Vector2.zero; + + [SerializeField] + [HideInInspector] + private Vector2 m_node8 = Vector2.zero; + + [SerializeField] + [HideInInspector] + private Vector2 m_node9 = Vector2.zero; + + [SerializeField] + [HideInInspector] + private float m_ang0; + + [SerializeField] + [HideInInspector] + private float m_ang1; + + [SerializeField] + [HideInInspector] + private float m_ang2; + + [SerializeField] + [HideInInspector] + private float m_ang3; + + [SerializeField] + [HideInInspector] + private float m_ang4; + + [SerializeField] + [HideInInspector] + private float m_ang5; + + [SerializeField] + [HideInInspector] + private float m_ang6; + + [SerializeField] + [HideInInspector] + private float m_ang7; + + [SerializeField] + [HideInInspector] + private float m_ang8; + + [SerializeField] + [HideInInspector] + private float m_ang9; + + private SpriteRenderer m_spriteRenderer; + + public Vector3 GetPosition(int nodeId, bool ignoredPivot = false) + { + if (this.m_spriteRenderer == null) + { + this.m_spriteRenderer = base.GetComponent<SpriteRenderer>(); + } + if (this.m_spriteRenderer == null || this.m_spriteRenderer.sprite == null) + { + return Vector2.zero; + } + Vector3 vector = this.GetLocalPosition(nodeId, ignoredPivot); + vector = base.transform.rotation * vector; + vector.Scale(base.transform.lossyScale); + return vector + base.transform.position; + } + + public Vector3 GetLocalPosition(int nodeId, bool ignoredPivot = false) + { + if (this.m_spriteRenderer == null) + { + this.m_spriteRenderer = base.GetComponent<SpriteRenderer>(); + } + if (this.m_spriteRenderer == null || this.m_spriteRenderer.sprite == null) + { + return Vector2.zero; + } + Vector3 vector = this.GetPositionRaw(nodeId); + vector.y = -vector.y; + if (ignoredPivot) + { + vector += this.m_spriteRenderer.sprite.rect.size * 0.5f - this.m_spriteRenderer.sprite.pivot; + } + vector *= 1f / this.m_spriteRenderer.sprite.pixelsPerUnit; + if (this.m_spriteRenderer.flipX) + { + vector.x = -vector.x; + } + if (this.m_spriteRenderer.flipY) + { + vector.y = -vector.y; + } + return vector; + } + + public float GetAngle(int nodeId) + { + float angleRaw = this.GetAngleRaw(nodeId); + if (this.m_spriteRenderer == null) + { + this.m_spriteRenderer = base.GetComponent<SpriteRenderer>(); + } + if (this.m_spriteRenderer == null || this.m_spriteRenderer.sprite == null) + { + return 0f; + } + return angleRaw + base.transform.eulerAngles.z; + } + + public Vector2 GetPositionRaw(int nodeId) + { + switch (nodeId) + { + case 0: + return this.m_node0; + case 1: + return this.m_node1; + case 2: + return this.m_node2; + case 3: + return this.m_node3; + case 4: + return this.m_node4; + case 5: + return this.m_node5; + case 6: + return this.m_node6; + case 7: + return this.m_node7; + case 8: + return this.m_node8; + case 9: + return this.m_node9; + default: + return Vector2.zero; + } + } + + public float GetAngleRaw(int nodeId) + { + switch (nodeId) + { + case 0: + return this.m_ang0; + case 1: + return this.m_ang1; + case 2: + return this.m_ang2; + case 3: + return this.m_ang3; + case 4: + return this.m_ang4; + case 5: + return this.m_ang5; + case 6: + return this.m_ang6; + case 7: + return this.m_ang7; + case 8: + return this.m_ang8; + case 9: + return this.m_ang9; + default: + return 0f; + } + } + + public void Reset() + { + this.m_node0 = Vector2.zero; + this.m_node1 = Vector2.zero; + this.m_node2 = Vector2.zero; + this.m_node3 = Vector2.zero; + this.m_node4 = Vector2.zero; + this.m_node5 = Vector2.zero; + this.m_node6 = Vector2.zero; + this.m_node7 = Vector2.zero; + this.m_node8 = Vector2.zero; + this.m_node9 = Vector2.zero; + this.m_ang0 = 0f; + this.m_ang1 = 0f; + this.m_ang2 = 0f; + this.m_ang3 = 0f; + this.m_ang4 = 0f; + this.m_ang5 = 0f; + this.m_ang6 = 0f; + this.m_ang7 = 0f; + this.m_ang8 = 0f; + this.m_ang9 = 0f; + } + } +} |