Exemplo n.º 1
0
        private void ProcessConstant(Clip clip, AnimationClipBindingConstant bindings, IReadOnlyDictionary <uint, string> tos, int frameCount)
        {
            DenseClip    dense       = clip.DenseClip;
            ConstantClip constant    = clip.ConstantClip;
            int          streamCount = clip.StreamedClip.CurveCount;
            int          denseCount  = clip.DenseClip.CurveCount;

            // only first and last frames
            for (int frameIndex = 0; frameIndex < frameCount; frameIndex += (frameCount > 1 ? frameCount - 1 : 1))
            {
                float time = frameIndex / dense.SampleRate;
                for (int curveIndex = 0; curveIndex < constant.Constants.Count;)
                {
                    int index = streamCount + denseCount + curveIndex;
                    if (!GetGenericBinding(bindings, index, out GenericBinding binding))
                    {
                        curveIndex++;
                        continue;
                    }

                    string path = GetCurvePath(tos, binding.Path);
                    AddComplexCurve(time, binding.BindingType, constant.Constants, curveIndex, path);
                    curveIndex += binding.BindingType.GetDimension();
                }
            }
        }
Exemplo n.º 2
0
        private void ProcessConstant(Clip clip, AnimationClipBindingConstant bindings, IReadOnlyDictionary <uint, string> tos, float lastFrame)
        {
            ConstantClip constant    = clip.ConstantClip;
            int          streamCount = clip.StreamedClip.CurveCount;
            int          denseCount  = clip.DenseClip.CurveCount;

            float[] slopeValues = new float[4];             // no slopes - 0 values

            // only first and last frames
            float time = 0.0f;

            for (int i = 0; i < 2; i++, time += lastFrame)
            {
                for (int curveIndex = 0; curveIndex < constant.Constants.Count;)
                {
                    int index = streamCount + denseCount + curveIndex;
                    if (!GetGenericBinding(bindings, index, out GenericBinding binding))
                    {
                        curveIndex++;
                        continue;
                    }

                    string path = GetCurvePath(tos, binding.Path);
                    AddComplexCurve(time, binding.BindingType, constant.Constants, slopeValues, slopeValues, curveIndex, path);
                    curveIndex += binding.BindingType.GetDimension();
                }
            }
        }