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(); }
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); } }
public float GetCurrTime() { GoGoComponent gogoComponent = (GoGoComponent)target; GoGoPlayer gogoPlayer = gogoComponent.gogoPlayer; if (gogoComponent.isUseLocalTime) { return(gogoComponent.currTime); } else { return(gogoPlayer.currTime); } }
public void SetCurrTime(float currTime) { GoGoComponent gogoComponent = (GoGoComponent)target; GoGoPlayer gogoPlayer = gogoComponent.gogoPlayer; if (gogoComponent.isUseLocalTime) { gogoComponent.currTime = currTime; } else { gogoPlayer.currTime = currTime; } }
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(); } }
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(); }
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; } } } } }