상속: MonoBehaviour
예제 #1
0
    public override void OnInspectorGUI()
    {
        GoGoComponent gogoComponent = (GoGoComponent)target;
        GoGoPlayer    gogoPlayer    = gogoComponent.gogoPlayer;

        if (gogoPlayer == null)
        {
            return;
        }

        ShowTimeLineGUI();

        EditorGUILayout.Space();
        EditorGUILayout.Space();

        EditorGUILayout.BeginHorizontal();

        if (GUILayout.Button("Add", GUILayout.Width(100)))
        {
            AddKeyFrame();
        }
        if (GUILayout.Button("Remove", GUILayout.Width(100)))
        {
            RemoveKeyFrame();
        }
        ShowCustomTool();
        EditorGUILayout.EndHorizontal();

        scrollPos = EditorGUILayout.BeginScrollView(scrollPos, false, true);
        ShowKeyFrameGUI();
        EditorGUILayout.EndScrollView();

        SceneView.RepaintAll();
    }
예제 #2
0
    void ShowTimeLineGUI()
    {
        GoGoComponent gogoComponent = (GoGoComponent)target;
        GoGoPlayer    gogoPlayer    = gogoComponent.gogoPlayer;

        //! 使用物件本地時間.
        gogoComponent.isUseLocalTime = EditorGUILayout.Toggle("UseLocalTime", gogoComponent.isUseLocalTime);

        if (gogoComponent.isUseLocalTime)
        {
            EditorGUI.indentLevel        = 1;
            gogoComponent.isLoop         = EditorGUILayout.Toggle("Loop", gogoComponent.isLoop);
            gogoComponent.startLocalTime = EditorGUILayout.FloatField("StartTime", gogoComponent.startLocalTime);
            gogoComponent.endLocalTime   = EditorGUILayout.FloatField("EndTime", gogoComponent.endLocalTime);
            gogoComponent.currTime       = EditorGUILayout.Slider("TimeLine",
                                                                  gogoComponent.currTime,
                                                                  gogoComponent.startLocalTime,
                                                                  gogoComponent.endLocalTime);
            EditorGUI.indentLevel = 0;
        }
        else
        {
            gogoPlayer.currTime = EditorGUILayout.Slider("TimeLine",
                                                         gogoPlayer.currTime,
                                                         gogoPlayer.startTime,
                                                         gogoPlayer.endTime);
        }
    }
예제 #3
0
    public float GetCurrTime()
    {
        GoGoComponent gogoComponent = (GoGoComponent)target;
        GoGoPlayer    gogoPlayer    = gogoComponent.gogoPlayer;

        if (gogoComponent.isUseLocalTime)
        {
            return(gogoComponent.currTime);
        }
        else
        {
            return(gogoPlayer.currTime);
        }
    }
예제 #4
0
    public void SetCurrTime(float currTime)
    {
        GoGoComponent gogoComponent = (GoGoComponent)target;
        GoGoPlayer    gogoPlayer    = gogoComponent.gogoPlayer;

        if (gogoComponent.isUseLocalTime)
        {
            gogoComponent.currTime = currTime;
        }
        else
        {
            gogoPlayer.currTime = currTime;
        }
    }
예제 #5
0
    void Refresh()
    {
        GoGoComponent gogoComponent = (GoGoComponent)target;
        GoGoPlayer    gogoPlayer    = gogoComponent.gogoPlayer;

        if (gogoPlayer.gogoManager != null)
        {
            gogoPlayer.gogoManager.currTime = gogoPlayer.startTimeOnManager + (gogoPlayer.currTime / gogoPlayer.speed);
            gogoPlayer.gogoManager.RefreshPlayerTime(0.0f);
            gogoPlayer.gogoManager.Refresh();
        }
        else
        {
            gogoPlayer.Refresh();
        }
    }
예제 #6
0
    protected virtual void UpdateInEditorMode()
    {
        GoGoComponent gogoComponent = (GoGoComponent)target;
        GoGoPlayer    gogoPlayer    = gogoComponent.gogoPlayer;

        if (EditorApplication.isPlaying || gogoPlayer == null ||
            gogoComponent == null || !gogoComponent.enabled)
        {
            return;
        }

        //! 同一個gameobject只能有一個GoGoComponent Enable.
        //! 不然SceneView視窗拖拉物件會卡住.
        ModifyComponentEnable();

        if (IsOnSelectedKeyFrame())
        {
            //! 當KeyFrame數值有變時,重新設定數值.
            KeyFrameBase keyFrame = keyFrameBaseList.ElementAt <KeyFrameBase>(currSelectedKeyFrameIdx);
            if (keyFrame.isChange)
            {
                Refresh();
                keyFrame.isChange = false;
            }
            else if (GetCurrTime() != lastTime)
            {
                Refresh();
            }
            else
            {
                AsignDataToKeyFrame();
            }
        }
        else
        {
            Refresh();
        }

        lastTime = GetCurrTime();
    }
예제 #7
0
    void ModifyComponentEnable()
    {
        GoGoComponent gogoComponent = (GoGoComponent)target;

        if (gogoComponent.enabled != gogoComponent.isLastEnableState)
        {
            gogoComponent.isLastEnableState = gogoComponent.enabled;

            if (gogoComponent.enabled)
            {
                GoGoComponent[] gogoComponenet = gogoComponent.GetComponents <GoGoComponent>();
                for (int i = 0; i < gogoComponenet.Length; i++)
                {
                    if (gogoComponenet[i] != gogoComponent)
                    {
                        gogoComponenet[i].enabled           = false;
                        gogoComponenet[i].isLastEnableState = false;
                    }
                }
            }
        }
    }