/// <summary>
        /// Initializes a new instance of the <see cref="KinematicCharacterController"/> class.
        /// </summary>
        /// <param name="simulation">The simulation.</param>
        /// <param name="upVector">The normalized up vector.</param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="simulation" /> is <see langword="null"/>.
        /// </exception>
        public KinematicCharacterController(Simulation simulation, Vector3F upVector)
        {
            if (simulation == null)
            {
                throw new ArgumentNullException("simulation");
            }

            Simulation = simulation;

            InitializeBody(upVector);

            _forceEffect = new CharacterControllerForceEffect(this);

            // Enable the character controller. (Adds body and force effect to simulation.)
            Enabled = true;
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="KinematicCharacterController"/> class.
        /// </summary>
        /// <param name="simulation">The simulation.</param>
        /// <param name="upVector">The normalized up vector.</param>
        /// <exception cref="ArgumentNullException">
        /// <paramref name="simulation" /> is <see langword="null"/>.
        /// </exception>
        public KinematicCharacterController(Simulation simulation, Vector3F upVector)
        {
            if (simulation == null)
            throw new ArgumentNullException("simulation");

              Simulation = simulation;

              InitializeBody(upVector);

              _forceEffect = new CharacterControllerForceEffect(this);

              // Enable the character controller. (Adds body and force effect to simulation.)
              Enabled = true;
        }