public override void UpdateCurveWrappers(CinemaClipCurveWrapper clipWrapper) { CinemaMultiActorCurveClip clipCurve = clipWrapper.Behaviour as CinemaMultiActorCurveClip; if (clipCurve == null) return; for (int i = 0; i < clipCurve.CurveData.Count; i++) { MemberClipCurveData member = clipCurve.CurveData[i]; CinemaMemberCurveWrapper memberWrapper = null; if (!clipWrapper.TryGetValue(member.PropertyType.ToString(), member.PropertyName, out memberWrapper)) { memberWrapper = new CinemaMemberCurveWrapper(); memberWrapper.Type = member.PropertyType.ToString(); memberWrapper.PropertyName = member.PropertyName; memberWrapper.Texture = EditorGUIUtility.ObjectContent(null, UnityPropertyTypeInfo.GetUnityType(member.Type)).image; ArrayUtility.Add<CinemaMemberCurveWrapper>(ref clipWrapper.MemberCurves, memberWrapper); int showingCurves = UnityPropertyTypeInfo.GetCurveCount(member.PropertyType); memberWrapper.AnimationCurves = new CinemaAnimationCurveWrapper[showingCurves]; for (int j = 0; j < showingCurves; j++) { memberWrapper.AnimationCurves[j] = new CinemaAnimationCurveWrapper(); memberWrapper.AnimationCurves[j].Id = j; memberWrapper.AnimationCurves[j].Curve = member.GetCurve(j); memberWrapper.AnimationCurves[j].Color = UnityPropertyTypeInfo.GetCurveColor(j); memberWrapper.AnimationCurves[j].Label = UnityPropertyTypeInfo.GetCurveName(member.PropertyType, j); } } } // Remove missing track items List<CinemaMemberCurveWrapper> itemRemovals = new List<CinemaMemberCurveWrapper>(); foreach (CinemaMemberCurveWrapper cw in clipWrapper.MemberCurves) { bool found = false; foreach (MemberClipCurveData member in clipCurve.CurveData) { if (member.PropertyType.ToString() == cw.Type && member.PropertyName == cw.PropertyName) { found = true; break; } } if (!found) { itemRemovals.Add(cw); } } foreach (CinemaMemberCurveWrapper item in itemRemovals) { ArrayUtility.Remove<CinemaMemberCurveWrapper>(ref clipWrapper.MemberCurves, item); } }
public bool TryGetValue(string type, string propertyName, out CinemaMemberCurveWrapper memberWrapper) { memberWrapper = null; foreach (CinemaMemberCurveWrapper wrapper in this.MemberCurves) { if ((wrapper.Type == type) && (wrapper.PropertyName == propertyName)) { memberWrapper = wrapper; return true; } } return false; }
public bool TryGetValue(string type, string propertyName, out CinemaMemberCurveWrapper memberWrapper) { memberWrapper = null; CinemaMemberCurveWrapper[] memberCurves = MemberCurves; for (int i = 0; i < memberCurves.Length; i++) { CinemaMemberCurveWrapper cinemaMemberCurveWrapper = memberCurves[i]; if (cinemaMemberCurveWrapper.Type == type && cinemaMemberCurveWrapper.PropertyName == propertyName) { memberWrapper = cinemaMemberCurveWrapper; return(true); } } return(false); }
protected virtual void CinemaCurveControl_CurvesChanged(object sender, CurveClipWrapperEventArgs e) { if (e.wrapper == null) { return; } CinemaClipCurveWrapper wrapper = e.wrapper; CinemaClipCurve clipCurve = wrapper.Behaviour as CinemaClipCurve; if (clipCurve == null) { return; } Undo.RecordObject(clipCurve, string.Format("Changed {0}", clipCurve.name)); for (int i = 0; i < clipCurve.CurveData.Count; i++) { MemberClipCurveData member = clipCurve.CurveData[i]; CinemaMemberCurveWrapper memberWrapper = null; if (wrapper.TryGetValue(member.Type, member.PropertyName, out memberWrapper)) { int showingCurves = UnityPropertyTypeInfo.GetCurveCount(member.PropertyType); for (int j = 0; j < showingCurves; j++) { member.SetCurve(j, new AnimationCurve(memberWrapper.AnimationCurves[j].Curve.keys)); } } } clipCurve.Firetime = wrapper.Firetime; clipCurve.Duration = wrapper.Duration; EditorUtility.SetDirty(clipCurve); }
public override void UpdateCurveWrappers(CinemaClipCurveWrapper clipWrapper) { CinemaMultiActorCurveClip clipCurve = clipWrapper.Behaviour as CinemaMultiActorCurveClip; if (clipCurve == null) { return; } for (int i = 0; i < clipCurve.CurveData.Count; i++) { MemberClipCurveData member = clipCurve.CurveData[i]; CinemaMemberCurveWrapper memberWrapper = null; if (!clipWrapper.TryGetValue(member.PropertyType.ToString(), member.PropertyName, out memberWrapper)) { memberWrapper = new CinemaMemberCurveWrapper(); memberWrapper.Type = member.PropertyType.ToString(); memberWrapper.PropertyName = member.PropertyName; memberWrapper.Texture = EditorGUIUtility.ObjectContent(null, UnityPropertyTypeInfo.GetUnityType(member.Type)).image; ArrayUtility.Add <CinemaMemberCurveWrapper>(ref clipWrapper.MemberCurves, memberWrapper); int showingCurves = UnityPropertyTypeInfo.GetCurveCount(member.PropertyType); memberWrapper.AnimationCurves = new CinemaAnimationCurveWrapper[showingCurves]; for (int j = 0; j < showingCurves; j++) { memberWrapper.AnimationCurves[j] = new CinemaAnimationCurveWrapper(); memberWrapper.AnimationCurves[j].Id = j; memberWrapper.AnimationCurves[j].Curve = member.GetCurve(j); memberWrapper.AnimationCurves[j].Color = UnityPropertyTypeInfo.GetCurveColor(j); memberWrapper.AnimationCurves[j].Label = UnityPropertyTypeInfo.GetCurveName(member.PropertyType, j); } } } // Remove missing track items List <CinemaMemberCurveWrapper> itemRemovals = new List <CinemaMemberCurveWrapper>(); { // foreach(var cw in clipWrapper.MemberCurves) var __enumerator1 = (clipWrapper.MemberCurves).GetEnumerator(); while (__enumerator1.MoveNext()) { var cw = (CinemaMemberCurveWrapper)__enumerator1.Current; { bool found = false; { // foreach(var member in clipCurve.CurveData) var __enumerator3 = (clipCurve.CurveData).GetEnumerator(); while (__enumerator3.MoveNext()) { var member = (MemberClipCurveData)__enumerator3.Current; { if (member.PropertyType.ToString() == cw.Type && member.PropertyName == cw.PropertyName) { found = true; break; } } } } if (!found) { itemRemovals.Add(cw); } } } } { var __list2 = itemRemovals; var __listCount2 = __list2.Count; for (int __i2 = 0; __i2 < __listCount2; ++__i2) { var item = (CinemaMemberCurveWrapper)__list2[__i2]; { ArrayUtility.Remove <CinemaMemberCurveWrapper>(ref clipWrapper.MemberCurves, item); } } } }
public override void UpdateCurveWrappers(CinemaClipCurveWrapper clipWrapper) { CinemaClipCurve clipCurve = clipWrapper.Behaviour as CinemaClipCurve; if (clipCurve == null) { return; } for (int i = 0; i < clipCurve.CurveData.Count; i++) { MemberClipCurveData member = clipCurve.CurveData[i]; CinemaMemberCurveWrapper memberWrapper = null; if (!clipWrapper.TryGetValue(member.Type, member.PropertyName, out memberWrapper)) { memberWrapper = new CinemaMemberCurveWrapper(); memberWrapper.Type = member.Type; memberWrapper.PropertyName = member.PropertyName; memberWrapper.Texture = EditorGUIUtility.ObjectContent(null, UnityPropertyTypeInfo.GetUnityType(member.Type)).image; ArrayUtility.Add <CinemaMemberCurveWrapper>(ref clipWrapper.MemberCurves, memberWrapper); int showingCurves = UnityPropertyTypeInfo.GetCurveCount(member.PropertyType); memberWrapper.AnimationCurves = new CinemaAnimationCurveWrapper[showingCurves]; for (int j = 0; j < showingCurves; j++) { memberWrapper.AnimationCurves[j] = new CinemaAnimationCurveWrapper(); memberWrapper.AnimationCurves[j].Id = j; memberWrapper.AnimationCurves[j].Curve = new AnimationCurve(member.GetCurve(j).keys); // Make a deep copy. memberWrapper.AnimationCurves[j].Label = UnityPropertyTypeInfo.GetCurveName(member.PropertyType, j); memberWrapper.AnimationCurves[j].Color = UnityPropertyTypeInfo.GetCurveColor(member.Type, member.PropertyName, memberWrapper.AnimationCurves[j].Label, j); } } else { int showingCurves = UnityPropertyTypeInfo.GetCurveCount(member.PropertyType); for (int j = 0; j < showingCurves; j++) { memberWrapper.AnimationCurves[j].Curve = new AnimationCurve(member.GetCurve(j).keys); // Make a deep copy. } } } // Remove missing track items List <CinemaMemberCurveWrapper> itemRemovals = new List <CinemaMemberCurveWrapper>(); for (int i = 0; i < clipWrapper.MemberCurves.Length; i++) { CinemaMemberCurveWrapper cw = clipWrapper.MemberCurves[i]; bool found = false; for (int j = 0; j < clipCurve.CurveData.Count; j++) { MemberClipCurveData member = clipCurve.CurveData[j]; if (member.Type == cw.Type && member.PropertyName == cw.PropertyName) { found = true; break; } } if (!found) { itemRemovals.Add(cw); } } for (int i = 0; i < itemRemovals.Count; i++) { ArrayUtility.Remove <CinemaMemberCurveWrapper>(ref clipWrapper.MemberCurves, itemRemovals[i]); } }