From c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Sun, 19 Apr 2020 17:19:32 -0400 Subject: Inital commit --- .../Editor/Utilities/BindingUtility.cs | 58 ++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/BindingUtility.cs (limited to 'Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/BindingUtility.cs') diff --git a/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/BindingUtility.cs b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/BindingUtility.cs new file mode 100644 index 0000000..5565817 --- /dev/null +++ b/Library/PackageCache/com.unity.timeline@1.2.13/Editor/Utilities/BindingUtility.cs @@ -0,0 +1,58 @@ +using System; +using UnityEngine; +using UnityEngine.Playables; +using UnityEngine.Timeline; +using Object = UnityEngine.Object; + +namespace UnityEditor.Timeline +{ + static class BindingUtility + { + public static Type GetRequiredBindingType(PlayableBinding binding) + { + return binding.outputTargetType; + } + + public static void Bind(PlayableDirector director, TrackAsset bindTo, Object objectToBind) + { + if (director == null || bindTo == null || TimelineWindow.instance == null) + return; + + TimelineWindow.instance.state.previewMode = false; // returns all objects to previous state + TimelineUndo.PushUndo(director, "PlayableDirector Binding"); + director.SetGenericBinding(bindTo, objectToBind); + TimelineWindow.instance.state.rebuildGraph = true; + } + + public static BindingAction GetBindingAction(Type requiredBindingType, Object objectToBind) + { + if (requiredBindingType == null || objectToBind == null) + return BindingAction.DoNotBind; + + // prevent drag and drop of prefab assets + if (PrefabUtility.IsPartOfPrefabAsset(objectToBind)) + return BindingAction.DoNotBind; + + if (requiredBindingType.IsInstanceOfType(objectToBind)) + return BindingAction.BindDirectly; + + var draggedGameObject = objectToBind as GameObject; + + if (!typeof(Component).IsAssignableFrom(requiredBindingType) || draggedGameObject == null) + return BindingAction.DoNotBind; + + if (draggedGameObject.GetComponent(requiredBindingType) == null) + return BindingAction.BindToMissingComponent; + + return BindingAction.BindToExistingComponent; + } + } + + enum BindingAction + { + DoNotBind, + BindDirectly, + BindToExistingComponent, + BindToMissingComponent + } +} -- cgit v1.2.3