예제 #1
0
        float getCrossValue(float globalF, CGBoundsGroup group)
        {
            switch (group.DistributionMode)
            {
            case CGBoundsGroup.DistributionModeEnum.Parent:
                return(DTMath.MapValue(-0.5f, 0.5f, CrossBase + m_CrossCurve.Evaluate(globalF) + group.PositionOffset.Next));

            case CGBoundsGroup.DistributionModeEnum.Self:
                return(DTMath.MapValue(-0.5f, 0.5f, group.PositionOffset.Next));
            }
            return(0);
        }
예제 #2
0
        /// <summary>
        /// Clamps a float to a range
        /// </summary>
        public static float ClampValue(float tf, CurvyClamping clamping, float minTF, float maxTF)
        {
            switch (clamping)
            {
            case CurvyClamping.Loop:
                float v1 = DTMath.MapValue(0, 1, tf, minTF, maxTF);
                return(DTMath.MapValue(minTF, maxTF, Mathf.Repeat(v1, 1), 0, 1));

            case CurvyClamping.PingPong:
                float v2 = DTMath.MapValue(0, 1, tf, minTF, maxTF);
                return(DTMath.MapValue(minTF, maxTF, Mathf.PingPong(v2, 1), 0, 1));

            default:
                return(Mathf.Clamp(tf, minTF, maxTF));
            }
        }
예제 #3
0
 float getUnrangedCross(float f)
 {
     return(DTMath.MapValue(-0.5f, 0.5f, f, CrossFrom, CrossTo));
 }
예제 #4
0
 float getRangedCross(float f)
 {
     return(DTMath.MapValue(CrossFrom, CrossTo, f, -0.5f, 0.5f));
 }