예제 #1
0
        /// <summary>
        ///     Gets the wrapped uv.
        /// </summary>
        /// <returns>The wrapped uv.</returns>
        /// <param name="uV">U v.</param>
        private Vector2 GetWrappedUv(Vector2 uV)
        {
            float u = uV.x;
            float v = uV.y;

            switch (m_Wrap)
            {
            case Wrap.Clamp:
                u = HydraMathUtils.Clamp(u, 0.0f, 1.0f);
                v = HydraMathUtils.Clamp(v, 0.0f, 1.0f);
                break;

            case Wrap.Repeat:
                u = Mathf.Repeat(u, 1.0f);
                v = Mathf.Repeat(v, 1.0f);
                break;

            case Wrap.PingPong:
                u = HydraMathUtils.PingPong(u, 1.0f);
                v = HydraMathUtils.PingPong(v, 1.0f);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(new Vector2(u, v));
        }
예제 #2
0
        /// <summary>
        ///     Clamp the point to the rect.
        /// </summary>
        /// <param name="extends">Extends.</param>
        /// <param name="point">Point.</param>
        public static Vector2 Clamp(this Rect extends, Vector2 point)
        {
            extends = extends.Abs();

            float x = HydraMathUtils.Clamp(point.x, extends.xMin, extends.xMax);
            float y = HydraMathUtils.Clamp(point.y, extends.yMin, extends.yMax);

            return(new Vector2(x, y));
        }
예제 #3
0
 /// <summary>
 ///     Validates the time scale.
 /// </summary>
 /// <returns>The time scale.</returns>
 /// <param name="scale">Scale.</param>
 public static float ValidateTimeScale(float scale)
 {
     return(HydraMathUtils.Clamp(scale, 0.0f, 10.0f));
 }