Exemplo n.º 1
0
        /// <summary>
        /// Oscilates a quaternion.
        /// </summary>
        /// <param name="amount"> The amount to wiggle by in degrees.</param>
        /// <param name="axis"> The axis to wiggle around </param>
        public static CommandDelegate Wiggle(Ref <Quaternion> rotation, float amount, double duration, Vector3 axis)
        {
            CheckArgumentNonNull(rotation, "rotation");

            Quaternion startQuaternion = Quaternion.identity;

            float val = 0.0f;

            Ref <float> floatRef = new Ref <float>(
                () => val,
                (t) =>
            {
                val            = t;
                rotation.Value = startQuaternion * Quaternion.AngleAxis(val, axis);
            }
                );

            return(Cmd.Sequence(
                       Cmd.Do(() =>
            {
                startQuaternion = rotation.Value;
                val = 0.0f;
            }),

                       Cmd.Oscillate(
                           floatRef, amount, duration, Ease.Smooth()
                           )
                       ));
        }