using Reset.Core.Tools; using Sirenix.OdinInspector; using UnityEngine; namespace Reset.Units{ public class ResolvedMovement{ public struct MoveDirection{ private Transform owner; private Vector2 _moveRaw; private Vector2 _moveDir; // Always world?? [ShowInInspector] public Vector2 World{ get{ DebugOverlayDrawer.ChangeValue("Movement", "_moveDir", _moveDir); // return owner.TransformDirection(_moveDir.ToVector3()).ToVector2(); return _moveDir; } set{ _moveDir = value; } } [ShowInInspector] public Vector2 Local{ get => owner.InverseTransformDirection(_moveDir.ToVector3()).ToVector2(); private set { // _moveDir = value; } } public Vector2 RawWorld{ get{ DebugOverlayDrawer.ChangeValue("Movement", "_moveRaw", _moveRaw); // return owner.TransformDirection(_moveDir.ToVector3()).ToVector2(); return _moveRaw; } set{ _moveRaw = value; } } public Vector2 RawLocal{ get => owner.InverseTransformDirection(_moveRaw.ToVector3()).ToVector2(); } public MoveDirection(Transform ownerTransform){ owner = ownerTransform; _moveDir = Vector2.zero; _moveRaw = Vector2.zero; } } [ShowInInspector] public MoveDirection moveDirection; public float moveSpeed; public Quaternion rotation; public float rotationSpeed; public float gravity; } }