public GenericBinding FindBinding(int index) { int curves = 0; for (int i = 0; i < genericBindings.Count; i++) { GenericBinding b = genericBindings[i]; curves += b.attribute == 2 ? 4 : b.attribute <= 4 ? 3 : 1; if (curves > index) { return(b); } } return(null); }
public AnimationClipBindingConstant(ObjectReader reader) { int numBindings = reader.ReadInt32(); genericBindings = new GenericBinding[numBindings]; for (int i = 0; i < numBindings; i++) { genericBindings[i] = new GenericBinding(reader); } int numMappings = reader.ReadInt32(); pptrCurveMapping = new PPtr <Object> [numMappings]; for (int i = 0; i < numMappings; i++) { pptrCurveMapping[i] = new PPtr <Object>(reader); } }
public AnimationClipBindingConstant ConvertValueArrayToGenericBinding() { var bindings = new AnimationClipBindingConstant(); var genericBindings = new List <GenericBinding>(); var values = m_Binding; for (int i = 0; i < values.m_ValueArray.Length;) { var curveID = values.m_ValueArray[i].m_ID; var curveTypeID = values.m_ValueArray[i].m_TypeID; var binding = new GenericBinding(); genericBindings.Add(binding); if (curveTypeID == 4174552735) //CRC(PositionX)) { binding.path = curveID; binding.attribute = 1; //kBindTransformPosition binding.typeID = ClassIDType.Transform; i += 3; } else if (curveTypeID == 2211994246) //CRC(QuaternionX)) { binding.path = curveID; binding.attribute = 2; //kBindTransformRotation binding.typeID = ClassIDType.Transform; i += 4; } else if (curveTypeID == 1512518241) //CRC(ScaleX)) { binding.path = curveID; binding.attribute = 3; //kBindTransformScale binding.typeID = ClassIDType.Transform; i += 3; } else { binding.typeID = ClassIDType.Animator; binding.path = 0; binding.attribute = curveID; i++; } } bindings.genericBindings = genericBindings.ToArray(); return(bindings); }