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(); } } }
public void Read(AssetReader reader) { StreamedClip.Read(reader); DenseClip.Read(reader); if (HasConstantClip(reader.Version)) { ConstantClip.Read(reader); } if (HasBinding(reader.Version)) { Binding.Read(reader); } }
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; GenericBinding binding = bindings.FindBinding(index); string path = GetCurvePath(tos, binding.Path); if (binding.IsTransform) { AddTransformCurve(time, binding.TransformType, constant.Constants, slopeValues, slopeValues, curveIndex, path); curveIndex += binding.TransformType.GetDimension(); } else if (binding.CustomType == BindingCustomType.None) { AddDefaultCurve(binding, path, time, constant.Constants[curveIndex]); curveIndex++; } else { AddCustomCurve(bindings, binding, path, time, constant.Constants[curveIndex]); curveIndex++; } } } }