Esempio n. 1
0
        /// <summary>
        /// Advance the controller and return the new position
        /// </summary>
        /// <param name="tf">the current virtual position (either TF or World Units)</param>
        /// <param name="direction">the current direction</param>
        /// <param name="mode">movement mode</param>
        /// <param name="absSpeed">speed, always positive</param>
        /// <param name="clamping">clamping mode</param>
        protected override void Advance(ref float tf, ref int direction, MoveModeEnum mode, float absSpeed, CurvyClamping clamping)
        {
            _active = this;
            switch (mode)
            {
            case MoveModeEnum.AbsoluteExtrapolate:
                if (UseCache)
                {
                    Spline.MoveByFast(ref tf, ref direction, absSpeed, Clamping);
                    if (IsSwitching)
                    {
                        mSwitchEventArgs.Spline.MoveByFast(ref mSwitchEventArgs.TF, ref mSwitchEventArgs.Direction, absSpeed, Clamping);
                        onSwitchEvent(mSwitchEventArgs);
                    }
                }
                else
                {
                    Spline.MoveBy(ref tf, ref direction, absSpeed, Clamping);
                    if (IsSwitching)
                    {
                        mSwitchEventArgs.Spline.MoveBy(ref mSwitchEventArgs.TF, ref mSwitchEventArgs.Direction, absSpeed, Clamping);
                        onSwitchEvent(mSwitchEventArgs);
                    }
                }
                break;

            case MoveModeEnum.AbsolutePrecise:
                Spline.MoveByLengthFast(ref tf, ref direction, absSpeed, Clamping);
                if (IsSwitching)
                {
                    mSwitchEventArgs.Spline.MoveByLengthFast(ref mSwitchEventArgs.TF, ref mSwitchEventArgs.Direction, absSpeed, Clamping);
                    onSwitchEvent(mSwitchEventArgs);
                }
                break;

            default:     // Relative
                if (UseCache)
                {
                    Spline.MoveFast(ref tf, ref direction, absSpeed, Clamping);
                    if (IsSwitching)
                    {
                        mSwitchEventArgs.Spline.MoveFast(ref mSwitchEventArgs.TF, ref mSwitchEventArgs.Direction, absSpeed, Clamping);
                        onSwitchEvent(mSwitchEventArgs);
                    }
                }
                else
                {
                    Spline.Move(ref tf, ref direction, absSpeed, Clamping);
                    if (IsSwitching)
                    {
                        mSwitchEventArgs.Spline.Move(ref mSwitchEventArgs.TF, ref mSwitchEventArgs.Direction, absSpeed, Clamping);
                        onSwitchEvent(mSwitchEventArgs);
                    }
                }
                break;
            }
            _active = null;
        }
Esempio n. 2
0
 /// <summary>
 /// Advance the controller and return the new position
 /// </summary>
 /// <param name="virtualPosition">the current virtual position (either TF or World Units) </param>
 /// <param name="direction">the current direction</param>
 /// <param name="mode">movement mode</param>
 /// <param name="absSpeed">speed, always positive</param>
 /// <param name="clamping">clamping mode</param>
 protected override void Advance(ref float virtualPosition, ref int direction, MoveModeEnum mode, float absSpeed, CurvyClamping clamping)
 {
     switch (mode)
     {
         case MoveModeEnum.Relative:
             VolumeData.Move(ref virtualPosition, ref direction, absSpeed, clamping);
             break;
         default:
             VolumeData.MoveBy(ref virtualPosition, ref direction, absSpeed, clamping);
             break;
     }
 }
Esempio n. 3
0
        /// <summary>
        /// Advance the controller and return the new position
        /// </summary>
        /// <param name="tf">the current virtual position (either TF or World Units)</param>
        /// <param name="direction">the current direction</param>
        /// <param name="mode">movement mode</param>
        /// <param name="absSpeed">speed, always positive</param>
        /// <param name="clamping">clamping mode</param>
        protected override void Advance(ref float tf, ref int direction, MoveModeEnum mode, float absSpeed, CurvyClamping clamping)
        {
            _active = this;
            switch (mode)
            {
                case MoveModeEnum.AbsoluteExtrapolate:
                    if (UseCache)
                    {
                        Spline.MoveByFast(ref tf, ref direction, absSpeed, Clamping);
                        if (IsSwitching)
                        {
                            mSwitchEventArgs.Spline.MoveByFast(ref mSwitchEventArgs.TF, ref mSwitchEventArgs.Direction, absSpeed, Clamping);
                            onSwitchEvent(mSwitchEventArgs);
                        }
                    }
                    else
                    {
                        Spline.MoveBy(ref tf, ref direction, absSpeed, Clamping);
                        if (IsSwitching)
                        {
                            mSwitchEventArgs.Spline.MoveBy(ref mSwitchEventArgs.TF, ref mSwitchEventArgs.Direction, absSpeed, Clamping);
                            onSwitchEvent(mSwitchEventArgs);
                        }
                    }
                    break;
                case MoveModeEnum.AbsolutePrecise:
                    Spline.MoveByLengthFast(ref tf, ref direction, absSpeed, Clamping);
                    if (IsSwitching)
                    {
                        mSwitchEventArgs.Spline.MoveByLengthFast(ref mSwitchEventArgs.TF, ref mSwitchEventArgs.Direction, absSpeed, Clamping);
                        onSwitchEvent(mSwitchEventArgs);
                    }
                    break;
                default: // Relative
                    if (UseCache)
                    {
                        Spline.MoveFast(ref tf, ref direction, absSpeed, Clamping);
                        if (IsSwitching)
                        {
                            mSwitchEventArgs.Spline.MoveFast(ref mSwitchEventArgs.TF, ref mSwitchEventArgs.Direction, absSpeed, Clamping);
                            onSwitchEvent(mSwitchEventArgs);
                        }
                    }
                    else
                    {
                        Spline.Move(ref tf, ref direction, absSpeed, Clamping);
                        if (IsSwitching)
                        {
                            mSwitchEventArgs.Spline.Move(ref mSwitchEventArgs.TF, ref mSwitchEventArgs.Direction, absSpeed, Clamping);
                            onSwitchEvent(mSwitchEventArgs);
                        }
                    }
                    break;
            }
            _active = null;

        }
Esempio n. 4
0
        /// <summary>
        /// Advances the specified virtual position.
        /// </summary>
        /// <param name="virtualPosition">The virtual position.</param>
        /// <param name="direction">The direction.</param>
        /// <param name="mode">The mode.</param>
        /// <param name="absSpeed">The abs speed.</param>
        /// <param name="clamping">The clamping.</param>
        protected override void Advance(ref float virtualPosition, ref int direction, MoveModeEnum mode, float absSpeed, CurvyClamping clamping)
        {
            switch (mode)
            {
            case MoveModeEnum.Relative:
                PathData.Move(ref virtualPosition, ref direction, absSpeed, clamping);
                break;

            default:
                PathData.MoveBy(ref virtualPosition, ref direction, absSpeed, clamping);
                break;
            }
        }
Esempio n. 5
0
 /// <summary>
 /// Advance the controller and return the new position
 /// </summary>
 /// <param name="tf">the current virtual position (either TF or World Units) </param>
 /// <param name="direction">the current direction</param>
 /// <param name="mode">movement mode</param>
 /// <param name="absSpeed">speed, always positive</param>
 /// <param name="clamping">clamping mode</param>
 protected virtual void Advance(ref float tf, ref int direction, MoveModeEnum mode, float absSpeed, CurvyClamping clamping)
 {
 }
Esempio n. 6
0
 /// <summary>
 /// Advance the controller and return the new position
 /// </summary>
 /// <param name="tf">the current virtual position (either TF or World Units) </param>
 /// <param name="direction">the current direction</param>
 /// <param name="mode">movement mode</param>
 /// <param name="absSpeed">speed, always positive</param>
 /// <param name="clamping">clamping mode</param>
 protected virtual void Advance(ref float tf, ref int direction, MoveModeEnum mode, float absSpeed, CurvyClamping clamping)
 {
 }