public void LoadData() { List<PropertyReader.Property> props = PropertyReader.getPropList(pcc.Exports[index]); foreach (PropertyReader.Property p in props) { if (pcc.getNameEntry(p.Name) == "FloatTrack") FloatTrack = GetCurveFloat(p, pcc); if(pcc.getNameEntry(p.Name) == "CurveTension") CurveTension = BitConverter.ToSingle(p.raw, 24); } }
public static InterpCurveFloat GetCurveFloat(PropertyReader.Property p, ME3Package pcc) { InterpCurveFloat CurveFloat = new InterpCurveFloat(); CurveFloat.Points = new List<InterpCurvePointFloat>(); int pos = 60; int count = BitConverter.ToInt32(p.raw, 56); for (int j = 0; j < count; j++) { List<PropertyReader.Property> p2 = PropertyReader.ReadProp(pcc, p.raw, pos); InterpCurvePointFloat point = new InterpCurvePointFloat(); for (int i = 0; i < p2.Count(); i++) { if (pcc.getNameEntry(p2[i].Name) == "InVal") point.InVal = BitConverter.ToSingle(p2[i].raw, 24); else if (pcc.getNameEntry(p2[i].Name) == "OutVal") { point.OutVal = BitConverter.ToSingle(p2[i].raw, 24); } else if (pcc.getNameEntry(p2[i].Name) == "ArriveTangent") { point.ArriveTangent = BitConverter.ToSingle(p2[i].raw, 24); } else if (pcc.getNameEntry(p2[i].Name) == "LeaveTangent") { point.LeaveTangent = BitConverter.ToSingle(p2[i].raw, 24); } else if (pcc.getNameEntry(p2[i].Name) == "InterpMode") point.InterpMode = new byteprop(p2[i].raw, "EInterpCurveMode", new string[] { "CIM_Linear", "CIM_CurveAuto", "CIM_Constant", "CIM_CurveUser", "CIM_CurveBreak", "CIM_CurveAutoClamped" }); pos += p2[i].raw.Length; } CurveFloat.Points.Add(point); } return CurveFloat; }