Пример #1
0
            public TimelineState GetTimelineState(GameObject sourceObject = null)
            {
                if (_timelineState == null)
                {
                    if (string.IsNullOrEmpty(_file._filePath))
                    {
                        if (_stateMachine != null)
                        {
                            foreach (TimelineState state in _stateMachine._states)
                            {
                                if (state._stateId == _stateId)
                                {
                                    _timelineState = state;
                                    break;
                                }
                            }
                        }
                        else
                        {
                            throw new Exception("TimelineStateRefProperty need to be fixed up by TimelineStateMachine");
                        }
                    }
                    else
                    {
                        TextAsset asset = _file.LoadAsset();
                        _stateMachine = TimelineStateMachine.FromTextAsset(asset, sourceObject);
                        _file.UnloadAsset();
                        _timelineState = _stateMachine.GetTimelineState(_stateId);
                    }
                }

                return(_timelineState);
            }
Пример #2
0
        public void SetTexture(int i)
        {
            if (textures.IsEmpty())
            {
                return;
            }
            if (Platform.isPlaying)
            {
                GetLoader().Load(textures[i], null);
            }
            else
            {
#if UNITY_EDITOR
                i = MathUtil.Clamp(i, 0, textures.Count);
                if (GetLoader().Target != null)
                {
                    AssetRef r = textures[i];
                    r.LoadAsset <Texture>(t => {
                        GetLoader().Target.mainTexture = t;
                #if UNITY_5_3_OR_NEWER
                        UnityEditor.SceneManagement.EditorSceneManager.MarkAllScenesDirty();
                #else
                        UnityEditor.EditorUtility.SetDirty(GetLoader().gameObject);
                #endif
                    });
                }
#endif
            }
        }
Пример #3
0
            public Material GetMaterial()
            {
                if (_material == null)
                {
                    if (_materialIndex != -1)
                    {
                        if (_materialIndex == kGraphicMaterialIndex)
                        {
                            Graphic graphic = _graphic.GetComponent();

                            if (graphic != null)
                            {
                                _material = graphic.material;
                            }
                        }
                        else
                        {
                            Renderer renderer = _renderer.GetComponent();

                            if (renderer != null && 0 <= _materialIndex && _materialIndex < renderer.sharedMaterials.Length)
                            {
                                _material = renderer.materials[_materialIndex];
                            }
                        }
                    }
                    else
                    {
                        _material = _materialRef.LoadAsset();
                    }
                }

                return(_material);
            }
Пример #4
0
            public State GetState(GameObject sourceObject = null)
            {
                if (_state == null)
                {
                    //If file path is invalid then its an internal state.
                    if (IsInternal())
                    {
                        if (_parentStateMachine != null)
                        {
                            _state = _parentStateMachine.GetState(_stateId);
                        }
                        else
                        {
                            throw new Exception("StateRefProperty need to be fixed up by a StateMachine before allowing access to internal state.");
                        }
                    }
                    //Otherwise its pointing at an external asset.
                    else
                    {
                        TextAsset asset = _file.LoadAsset();
                        _parentStateMachine = StateMachine.FromTextAsset(asset, sourceObject);
                        _file.UnloadAsset();
                        _state = _parentStateMachine.GetState(_stateId);
                    }
                }

                return(_state);
            }
            private PlayableAsset GetPlayableAsset()
            {
                if (_playableAsset.IsValid())
                {
#if UNITY_EDITOR
                    return(_playableAsset._editorAsset);
#else
                    return(_playableAsset.LoadAsset());
#endif
                }
                else
                {
                    PlayableDirector playableDirector = _director.GetComponent();
                    return(playableDirector.playableAsset);
                }
            }
            public override IEnumerator PerformState(StateMachineComponent stateMachine)
            {
                PlayableDirector director = _director.GetComponent();
                PlayableAsset    playable = _playableAsset.LoadAsset();

                if (director != null && playable != null)
                {
                    director.Play(playable, DirectorWrapMode.None);

                    while (director.playableGraph.IsValid() && !director.playableGraph.IsDone())
                    {
                        yield return(null);
                    }
                }

                stateMachine.GoToState(StateMachine.Run(stateMachine, _goToState));
            }
Пример #7
0
            public override void OnStartConditionChecking(StateMachineComponent stateMachine)
            {
                _playableDirector = _director.GetComponent();

                if (_playableDirector != null)
                {
                    if (_playableAsset.IsValid())
                    {
                        PlayableAsset playable = _playableAsset.LoadAsset();
                        _playableDirector.Play(playable, _wrapMode);
                    }
                    else
                    {
                        _playableDirector.Play(_playableDirector.playableAsset, _wrapMode);
                    }
                }
            }
            public eEventTriggerReturn Trigger(StateMachineComponent stateMachine)
            {
                PlayableDirector director = _director.GetComponent();

                if (director != null)
                {
                    if (_playableAsset.IsValid())
                    {
                        PlayableAsset playable = _playableAsset.LoadAsset();
                        director.Play(playable, _wrapMode);
                    }
                    else
                    {
                        director.Play(director.playableAsset, _wrapMode);
                    }
                }

                return(eEventTriggerReturn.EventFinished);
            }