public void OnDrawGizmos()
 {
     if (navSteps.Count > 0)
     {
         SimpleNav2DStep step      = navSteps.Peek();
         Vector3         targetPos = transform.position;
         targetPos.x = step.targetXPosition;
         Gizmos.DrawLine(transform.position, targetPos);
     }
 }
    // Update is called once per frame
    void Update()
    {
        if (navSteps.Count == 0)
        {
            return;
        }

        SimpleNav2DStep activeStep = navSteps.Peek();

        if (activeStep.climbDownStairs)
        {
            if (!characterController.isOnStairs)
            {
                // mount stairs
                characterController.MountStairs(activeStep.targetStairs);
            }
            else
            {
                // move down stairs
                int downDirection = characterController.GetStairsUpDirection() * -1;
                characterController.Move(Vector2.right * downDirection);

                if (characterController.GetStairsDistanceToEnd(downDirection) <= 0f || !characterController.isOnStairs)
                {
                    // bottom of stairs
                    navSteps.Pop();
                }
            }
        }
        else if (activeStep.climbUpStairs)
        {
            if (!characterController.isOnStairs)
            {
                // mount stairs
                characterController.MountStairs(activeStep.targetStairs);
            }
            else
            {
                // move up stairs
                int upDirection = characterController.GetStairsUpDirection();
                characterController.Move(Vector2.right * upDirection);

                if (characterController.GetStairsDistanceToEnd(upDirection) <= 0f || !characterController.isOnStairs)
                {
                    // top of stairs
                    navSteps.Pop();
                }
            }
        }
        else
        {
            // move towards this x
            float difference = activeStep.targetXPosition - transform.position.x;
            if (Mathf.Abs(difference) > 0.5f)
            {
                // move toward target
                characterController.Move(Vector2.right * Mathf.Sign(difference));
            }
            else
            {
                // at target
                navSteps.Pop();
            }
        }
    }