Ejemplo n.º 1
0
    void OnEnable()
    {
        director.played += Initialize;

        originalWrapMode = director.extrapolationMode;
        // director.extrapolationMode = DirectorWrapMode.Hold;
    }
 public PlayableDirectorExtended(
     PlayableDirector _PlayableDirector,
     DirectorWrapMode _DirectorWrapMode,
     bool _State)
 {
     m_PlayableDirector = _PlayableDirector;
     m_DirectorWrapMode = _DirectorWrapMode;
     m_State            = _State;
 }
Ejemplo n.º 3
0
 public void Play(PlayableAsset asset, DirectorWrapMode mode)
 {
     if (asset == null)
     {
         throw new ArgumentNullException("asset");
     }
     this.playableAsset     = asset;
     this.extrapolationMode = mode;
     this.Play();
 }
Ejemplo n.º 4
0
        public override void OnInspectorGUI()
        {
            if (this.PlayableAssetOutputsChanged())
            {
                this.SynchSceneBindings();
            }
            base.serializedObject.Update();
            if (DirectorEditor.PropertyFieldAsObject(this.m_PlayableAsset, DirectorEditor.Styles.PlayableText, typeof(PlayableAsset), false, false))
            {
                base.serializedObject.ApplyModifiedProperties();
                this.SynchSceneBindings();
                InternalEditorUtility.RepaintAllViews();
            }
            EditorGUILayout.PropertyField(this.m_UpdateMethod, DirectorEditor.Styles.UpdateMethod, new GUILayoutOption[0]);
            Rect       controlRect = EditorGUILayout.GetControlRect(true, new GUILayoutOption[0]);
            GUIContent label       = EditorGUI.BeginProperty(controlRect, DirectorEditor.Styles.InitialStateContent, this.m_InitialState);
            bool       flag        = this.m_InitialState.enumValueIndex != 0;

            EditorGUI.BeginChangeCheck();
            flag = EditorGUI.Toggle(controlRect, label, flag);
            if (EditorGUI.EndChangeCheck())
            {
                this.m_InitialState.enumValueIndex = ((!flag) ? 0 : 1);
            }
            EditorGUI.EndProperty();
            EditorGUI.BeginChangeCheck();
            EditorGUILayout.PropertyField(this.m_WrapMode, DirectorEditor.Styles.WrapModeContent, new GUILayoutOption[0]);
            if (EditorGUI.EndChangeCheck())
            {
                DirectorWrapMode enumValueIndex = (DirectorWrapMode)this.m_WrapMode.enumValueIndex;
                foreach (PlayableDirector current in base.targets.OfType <PlayableDirector>())
                {
                    current.extrapolationMode = enumValueIndex;
                }
            }
            DirectorEditor.PropertyFieldAsFloat(this.m_InitialTime, DirectorEditor.Styles.InitialTimeContent);
            if (Application.isPlaying)
            {
                this.CurrentTimeField();
            }
            if (base.targets.Length == 1)
            {
                PlayableAsset x = this.m_PlayableAsset.objectReferenceValue as PlayableAsset;
                if (x != null)
                {
                    this.DoDirectorBindingInspector();
                }
            }
            base.serializedObject.ApplyModifiedProperties();
        }
Ejemplo n.º 5
0
        protected bool _PlayEffect(GuiEffect a_guiEffect, DirectorWrapMode a_eWrapMode, DirectorUpdateMode a_eUpdateMode, UnityAction <string> a_onFinished)
        {
            if (a_guiEffect == null || a_guiEffect.timelineAsset == null || m_objOwner.activeInHierarchy == false)
            {
                return(false);
            }

            m_director.Stop();

            m_director.extrapolationMode = a_eWrapMode;
            m_director.initialTime       = 0;
            m_director.timeUpdateMode    = a_eUpdateMode;

            m_director.Play(a_guiEffect.timelineAsset);
            m_currEfect = a_guiEffect;
            m_currEfect.onFinished.AddListener(a_onFinished);

            return(true);
        }
Ejemplo n.º 6
0
        public void PlayEffect(string a_strEffectName, DirectorWrapMode a_eWrapMode, DirectorUpdateMode a_eUpdateMode, UnityAction <string> a_onFinished = null)
        {
            GuiEffect guiEffect = null;

            for (int i = 0; i < commonEffects.Count; ++i)
            {
                if (commonEffects[i].strName == a_strEffectName)
                {
                    guiEffect = commonEffects[i];
                    break;
                }
            }

            if (guiEffect == null)
            {
                return;
            }

            _PlayEffect(guiEffect, a_eWrapMode, a_eUpdateMode, a_onFinished);
        }
        private void UpdateTime(Playable playable)
        {
            double           num = Math.Max(0.1, this.director.get_playableAsset().get_duration());
            DirectorWrapMode extrapolationMode = this.director.get_extrapolationMode();

            if (extrapolationMode != null)
            {
                if (extrapolationMode != 1)
                {
                    if (extrapolationMode == 2)
                    {
                        this.director.set_time(PlayableExtensions.GetTime <Playable>(playable));
                    }
                }
                else
                {
                    this.director.set_time(Math.Max(0.0, PlayableExtensions.GetTime <Playable>(playable) % num));
                }
            }
            else
            {
                this.director.set_time(Math.Min(num, Math.Max(0.0, PlayableExtensions.GetTime <Playable>(playable))));
            }
        }
        private void UpdateTime(Playable playable)
        {
            double           num = Math.Max(0.1, this.director.playableAsset.duration);
            DirectorWrapMode extrapolationMode = this.director.extrapolationMode;

            if (extrapolationMode != DirectorWrapMode.Hold)
            {
                if (extrapolationMode != DirectorWrapMode.Loop)
                {
                    if (extrapolationMode == DirectorWrapMode.None)
                    {
                        this.director.time = playable.GetTime <Playable>();
                    }
                }
                else
                {
                    this.director.time = Math.Max(0.0, playable.GetTime <Playable>() % num);
                }
            }
            else
            {
                this.director.time = Math.Min(num, Math.Max(0.0, playable.GetTime <Playable>()));
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Creates and initializes a ScriptPlayable with a TimeNotificationBehaviour.
        /// </summary>
        /// <param name="graph">The playable graph.</param>
        /// <param name="duration">The duration of the playable.</param>
        /// <param name="loopMode">The loop mode of the playable.</param>
        /// <returns>A new TimeNotificationBehaviour linked to the PlayableGraph.</returns>
        public static ScriptPlayable <TimeNotificationBehaviour> Create(PlayableGraph graph, double duration, DirectorWrapMode loopMode)
        {
            var notificationsPlayable = ScriptPlayable <TimeNotificationBehaviour> .Create(graph);

            notificationsPlayable.SetDuration(duration);
            notificationsPlayable.SetTimeWrapMode(loopMode);
            notificationsPlayable.SetPropagateSetTime(true);
            return(notificationsPlayable);
        }
 internal static void SetTimeWrapMode <U>(this U playable, DirectorWrapMode value) where U : struct, IPlayable
 {
     playable.GetHandle().SetTimeWrapMode(value);
 }
Ejemplo n.º 11
0
 //Play clip in playable director PlayPlayableDirector(timelineAssets[id], DirectorWrapMode. )
 public void PlayPlayableDirector(TimelineAsset timelineAsset, DirectorWrapMode directorWrap)
 {
     playableDirector.extrapolationMode = directorWrap;  //Set director wrap mode in playableDirector
     playableDirector.playableAsset     = timelineAsset; // Set clip
     playableDirector.Play();                            //Play
 }
 extern internal void SetTimeWrapMode(DirectorWrapMode mode);
Ejemplo n.º 13
0
 private static extern void SetTimeWrapMode_Injected(ref PlayableHandle _unity_self, DirectorWrapMode mode);
Ejemplo n.º 14
0
        public static ScriptPlayable <TimeNotificationBehaviour> CreateNotificationsPlayable(PlayableGraph graph, IEnumerable <IMarker> markers, double duration, DirectorWrapMode extrapolationMode)
        {
            var notificationPlayable = ScriptPlayable <TimeNotificationBehaviour> .Null;

            foreach (var e in markers)
            {
                var notif = e as INotification;
                if (notif == null)
                {
                    continue;
                }

                if (notificationPlayable.Equals(ScriptPlayable <TimeNotificationBehaviour> .Null))
                {
                    notificationPlayable = TimeNotificationBehaviour.Create(graph,
                                                                            duration, extrapolationMode);
                }

                var time       = (DiscreteTime)e.time;
                var tlDuration = (DiscreteTime)duration;
                if (time >= tlDuration && time <= tlDuration.OneTickAfter() && tlDuration != 0)
                {
                    time = tlDuration.OneTickBefore();
                }

                var notificationOptionProvider = e as INotificationOptionProvider;
                if (notificationOptionProvider != null)
                {
                    notificationPlayable.GetBehaviour().AddNotification((double)time, notif, notificationOptionProvider.flags);
                }
                else
                {
                    notificationPlayable.GetBehaviour().AddNotification((double)time, notif);
                }
            }

            return(notificationPlayable);
        }
Ejemplo n.º 15
0
 internal void SetTimeWrapMode(DirectorWrapMode mode)
 {
     PlayableHandle.SetTimeWrapMode_Injected(ref this, mode);
 }
Ejemplo n.º 16
0
 private extern void SetWrapMode(DirectorWrapMode mode);
Ejemplo n.º 17
0
 public void Play(PlayableAsset playableAsset, DirectorWrapMode directorWrapMode)
 {
     m_Director.Play(playableAsset, directorWrapMode);
 }