Example #1
0
        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);
            }
        }
Example #4
0
        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");
            }
        }
Example #5
0
        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);
         }
     }
 }
Example #7
0
        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;
        }
Example #8
0
        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;
            }
        }
Example #9
0
        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);
                        }
                    }
                }
            }
        }
Example #11
0
        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);