public override void ReturnToPool()
        {
            HandleAnimationComplete();

            OnEntityReachedTarget.ClearCallback();

            base.ReturnToPool();
        }
        public virtual void ReturnToPool()
        {
            ID              = 0;
            BackingEntity   = null;
            EntityBehaviour = null;

            SpriteRenderer.color = Color.white;
            SpriteRenderer.transform.localPosition = Vector3.zero;
            PlayAnimation(null);

            OnEndOfUpdate.ClearCallback();
            OnEntityFinishedAnimation.ClearCallback();

            gameObject.SetActive(false);
            MyObjectPool?.ReturnObjectToPool(this);
        }