void AddSerializedPlayableModifications(IPlayableAsset asset, AnimationClip clip) { var obj = asset as Object; if (obj == null) { return; } var driver = WindowState.previewDriver; if (driver == null || !AnimationMode.InAnimationMode(driver)) { return; } var serializedObj = new SerializedObject(obj); var bindings = AnimationClipCurveCache.Instance.GetCurveInfo(clip).bindings; var fields = AnimatedParameterUtility.GetScriptPlayableFields(asset); // go through each binding and offset using the field name // so the modification system can find the particle object using the asset as a root foreach (var b in bindings) { foreach (var f in fields) { var propertyPath = f.Name + "." + b.propertyName; if (serializedObj.FindProperty(propertyPath) != null) { DrivenPropertyManager.RegisterProperty(driver, obj, propertyPath); break; } } } }
public static void UnregisterDrivenProperty(Object driver, Object target, string property) { #if UNITY_2020_1_OR_NEWER && RUNTIME_VISIBLE_TO_PROBUILDER_LANDED DrivenPropertyManager.UnregisterProperty(driver, target, property); #else unregisterProperty.Invoke(null, new object[] { driver, target, property }); #endif }
private static void AddPropertyModification(GameObject obj, string propertyName) { AnimationModeDriver previewDriver = TimelineWindow.TimelineState.previewDriver; if (!(previewDriver == null) && AnimationMode.InAnimationMode(previewDriver)) { DrivenPropertyManager.RegisterProperty(previewDriver, obj, propertyName); } }
private static void AddScaleBinding(GameObject root, EditorCurveBinding binding) { var t = root.transform.Find(binding.path); if (t != null) { DrivenPropertyManager.RegisterProperty(s_PreviewDriver, t, "m_LocalScale"); } }
private static void AddPropertyModification(GameObject obj, string propertyName) { var driver = WindowState.previewDriver; if (driver == null || !AnimationMode.InAnimationMode(driver)) { return; } DrivenPropertyManager.RegisterProperty(driver, obj, propertyName); }
private static void AddPropertyModification(Component comp, string name) { if (!(comp == null)) { AnimationModeDriver previewDriver = TimelineWindow.TimelineState.previewDriver; if (!(previewDriver == null) && AnimationMode.InAnimationMode(previewDriver)) { DrivenPropertyManager.RegisterProperty(previewDriver, comp, name); } } }
private void RestorePositionAfterPreview() { DrivenPropertyManager.UnregisterProperties(this); EditorGUIUtility.beginProperty -= BeginDrivenPropertyCheck; if (m_PreviewBackupPosition.HasValue) { if (target is TrailRenderer tr) { tr.Clear(); } m_PreviewBackupPosition = null; } Tools.hidden = false; }
private void SavePositionForPreview() { if (!m_PreviewBackupPosition.HasValue) { if (target is TrailRenderer tr) { m_PreviewBackupPosition = tr.transform.localPosition; m_PreviewIsFirstMove = true; s_PreviewShapeSize = ClampPreviewSize(tr, s_PreviewShapeSize); DrivenPropertyManager.TryRegisterProperty(this, tr.transform, "m_LocalPosition"); DrivenPropertyManager.TryRegisterProperty(this, tr, "s_PreviewTimeScale"); EditorGUIUtility.beginProperty += BeginDrivenPropertyCheck; } m_PreviewTimePercentage = 0.0f; Tools.hidden = true; } }
internal static void UpdatePreviewMode(UndoPropertyModification[] mods, GameObject go) { if (mods.Any(x => IsPositionOrRotation(x) && IsRootModification(x))) { bool hasPosition = false; bool hasRotation = false; foreach (var mod in mods) { EditorCurveBinding binding = new EditorCurveBinding(); if (AnimationUtility.PropertyModificationToEditorCurveBinding(mod.previousValue, go, out binding) != null) { hasPosition |= IsPosition(mod); hasRotation |= IsRotation(mod); AnimationMode.AddPropertyModification(binding, mod.previousValue, true); } } // case 931859 - if we are only changing one field, all fields must be registered before // any recording modifications var driver = WindowState.previewDriver; if (driver != null && AnimationMode.InAnimationMode(driver)) { if (hasPosition) { DrivenPropertyManager.RegisterProperty(driver, go.transform, kLocalPosition + ".x"); DrivenPropertyManager.RegisterProperty(driver, go.transform, kLocalPosition + ".y"); DrivenPropertyManager.RegisterProperty(driver, go.transform, kLocalPosition + ".z"); } else if (hasRotation) { DrivenPropertyManager.RegisterProperty(driver, go.transform, kLocalRotation + ".x"); DrivenPropertyManager.RegisterProperty(driver, go.transform, kLocalRotation + ".y"); DrivenPropertyManager.RegisterProperty(driver, go.transform, kLocalRotation + ".z"); DrivenPropertyManager.RegisterProperty(driver, go.transform, kLocalRotation + ".w"); } } } }
private void AddSerializedPlayableModifications(IPlayableAsset asset, AnimationClip clip) { Object @object = asset as Object; if (!(@object == null)) { AnimationModeDriver previewDriver = TimelineWindow.TimelineState.previewDriver; if (!(previewDriver == null) && AnimationMode.InAnimationMode(previewDriver)) { EditorCurveBinding[] bindings = AnimationClipCurveCache.Instance.GetCurveInfo(clip).bindings; List <FieldInfo> list = AnimatedParameterExtensions.GetScriptPlayableFields(asset).ToList <FieldInfo>(); EditorCurveBinding[] array = bindings; for (int i = 0; i < array.Length; i++) { EditorCurveBinding editorCurveBinding = array[i]; foreach (FieldInfo current in list) { DrivenPropertyManager.RegisterProperty(previewDriver, @object, current.Name + "." + editorCurveBinding.propertyName); } } } } }
private static void AddPropertyModification(Component comp, string name) { if (comp == null) { return; } var driver = WindowState.previewDriver; if (driver == null || !AnimationMode.InAnimationMode(driver)) { return; } // Register Property will display an error if a property doesn't exist (wanted behaviour) // However, it also displays an error on Monobehaviour m_Script property, since it can't be driven. (not wanted behaviour) // case 967026 if (name == "m_Script" && (comp as MonoBehaviour) != null) { return; } DrivenPropertyManager.RegisterProperty(driver, comp, name); }
public static void UnregisterProperties(Object driver) => DrivenPropertyManager.UnregisterProperties(driver);
// Same as RegisterProperty but produces an error if the property could not be found. //public static void TryRegisterProperty(Object driver, Object target, string propertyPath) => DrivenPropertyManager.TryRegisterProperty(driver, target, propertyPath); public static void UnregisterProperty(Object driver, Object target, string propertyPath) => DrivenPropertyManager.UnregisterProperty(driver, target, propertyPath);