예제 #1
0
        private static bool IsTooDense(KeyframeContainer <Vector4> key, KeyframeContainer <Vector4> previousKey,
                                       float sampleStep)
        {
            float delta = Mathf.Abs(key.time - previousKey.time);

            // epsilon is too small here, use a bigger threshold
            return((delta - sampleStep) < -1e-5f /*-std::numeric_limits<float>::epsilon()*/);
        }
예제 #2
0
        private void AddToList(AnimationClipCurveData curveData, List <Curve> curves, int index)
        {
            var item = curves.Last();

            if (item.path != curveData.path)
            {
                throw new FormatException();
            }

            foreach (var key in curveData.curve.keys)
            {
                var keyData = item.keys.Find(x => Mathf.Abs(x.time - key.time) < float.Epsilon);
                if (keyData == null)
                {
                    keyData      = new KeyframeContainer <Vector4>();
                    keyData.time = key.time;
                    item.keys.Add(keyData);
                }

                keyData.value[index]    = key.value;
                keyData.inSlope[index]  = key.inTangent;
                keyData.outSlope[index] = key.outTangent;
            }
        }