public static BTStatus Swim(Animal agent, Vector2 direction, float speed, AnimalAnimationState state, bool surface, int tries = 10)
        {
            var targetPos = AIUtilities.FindTargetSwimPosition(agent.Position, 5.0f, 20.0f, direction, 90, 360, tries, surface);
            if (targetPos == agent.Position)
                return BTStatus.Failure;

            agent.AnimationState = state;
            agent.Target.Set(agent.Position, targetPos, speed);
            agent.NextTick = agent.Target.TargetTime;

            return BTStatus.Success;
        }