123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271 |
- #if UNITY_EDITOR
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityEditor;
- using Sirenix.OdinInspector;
- using Sirenix.OdinInspector.Editor;
- using Sirenix.Utilities.Editor;
- using ChivaXR;
- using ChivaXR.Op;
- public class VirtualSimulationManager12 : OdinMenuEditorWindow
- {
- public enum ManagerState
- {
- markContainer,
- animationManager,
- operationManager,
- processManagement,
- animationEditor,
- soundManager,
- videoManager,
- ToolsManager
- }
- [LabelText("Manager View")]
- [LabelWidth(100f)]
- [EnumToggleButtons]
- [ShowInInspector]
- [OnValueChanged("OnValueChange")]
- private ManagerState managerstate;
- private int enumIndex = 0;
- private bool treeRebuild = false;
- private DrawMarkContainer drawMarkContanier = new DrawMarkContainer();
- private DrawProcessManagement drawProcess = new DrawProcessManagement();
- private DrawAnimationManager drawAnimationManager = new DrawAnimationManager();
- private DrawOperationManager drawOperationManager = new DrawOperationManager();
- private DrawAnimationEditor drawAnimationEditor = new DrawAnimationEditor();
- [MenuItem("ChivaTool/VirtualSimulationManager")]
- public static void OpenWindow()
- {
- GetWindow<VirtualSimulationManager12>().Show();
- }
- private void StateChanged()
- {
- treeRebuild = true;
- }
- protected override void Initialize()
- {
- drawMarkContanier.FindMyObject();
- drawProcess.FindMyObject();
- drawAnimationManager.FindMyObject();
- drawOperationManager.FindMyObject();
- drawAnimationEditor.FindMyObject();
- }
- protected override void OnGUI()
- {
- if (treeRebuild && Event.current.type == EventType.Layout)
- {
- ForceMenuTreeRebuild();
- treeRebuild = false;
- }
- SirenixEditorGUI.Title("VirtualSimulationManager", "仿真编辑控制器", TextAlignment.Center, true);
- EditorGUILayout.Space();
- switch (managerstate)
- {
- case ManagerState.soundManager:
- case ManagerState.videoManager:
- case ManagerState.ToolsManager:
- DrawEditor(enumIndex);
- break;
- }
- EditorGUILayout.Space();
- base.OnGUI();
- }
- protected override void DrawEditors()
- {
- switch (managerstate)
- {
- case ManagerState.markContainer:
- case ManagerState.animationManager:
- case ManagerState.operationManager:
- case ManagerState.processManagement:
- case ManagerState.animationEditor:
- DrawEditor(enumIndex);
- break;
- }
- DrawEditor((int)managerstate);
- }
- protected override IEnumerable<object> GetTargets()
- {
- List<object> targets = new List<object>();
- targets.Add(drawMarkContanier);
- targets.Add(drawAnimationManager);
- targets.Add(drawOperationManager);
- targets.Add(drawProcess);
- targets.Add(drawAnimationEditor);
- targets.Add(null);
- targets.Add(null);
- targets.Add(null);
- targets.Add(base.GetTarget());
- enumIndex = targets.Count - 1;
- return targets;
- }
- protected override void DrawMenu()
- {
- switch (managerstate)
- {
- case ManagerState.soundManager:
- case ManagerState.videoManager:
- case ManagerState.ToolsManager:
- base.DrawMenu();
- break;
- }
- }
- protected override OdinMenuTree BuildMenuTree()
- {
- OdinMenuTree tree = new OdinMenuTree();
- switch (managerstate)
- {
- case ManagerState.markContainer:
- break;
- case ManagerState.animationManager:
- break;
- case ManagerState.operationManager:
- break;
- case ManagerState.processManagement:
- break;
- case ManagerState.animationEditor:
- break;
- case ManagerState.soundManager:
- break;
- case ManagerState.videoManager:
- break;
- case ManagerState.ToolsManager:
- DrawToolManagerObject(tree);
- break;
- default:
- break;
- }
- return tree;
- }
- public void DrawToolManagerObject(OdinMenuTree tree)
- {
- ToolWindow stepWindow = new ToolWindow();
- CreateWindow createWindow = new CreateWindow();
- tree.Add("工具配置文件列表/肘型头配置表", stepWindow);
- tree.Add("添加工具配置表", createWindow);
- }
- private void OnValueChange()
- {
- //switch (managerstate)
- //{
- // case ManagerState.soundManager:
- // case ManagerState.videoManager:
- // case ManagerState.ToolsManager:
- // DrawEditor(enumIndex);
- // break;
- //}
- base.ForceMenuTreeRebuild();
- }
- }
- public class DrawMarkContainer : DrawSceneManagerObject<MarkContainer>
- {
- }
- public class DrawProcessManagement : DrawSceneManagerObject<ProcessManagement>
- {
- }
- public class DrawAnimationManager : DrawSceneManagerObject<AnimationManager>
- {
- }
- public class DrawOperationManager : DrawSceneManagerObject<OperationManager>
- {
- }
- public class DrawAnimationEditor : DrawSceneManagerObject<AnimationDataEditor>
- {
- }
- public class ToolWindow
- {
- [TableList(ShowIndexLabels = true)]
- public List<ToolConfig> m_Tools;
- [Button("保存")]
- public void SaveAction()
- {
- }
- }
- public class CreateWindow
- {
-
- }
- public class DrawSceneManagerObject<T> where T : MonoBehaviour
- {
- [ShowIf("@myObject!=null")]
- [InlineEditor(InlineEditorObjectFieldModes.CompletelyHidden)]
- public T myObject;
- public void FindMyObject()
- {
- if (myObject == null)
- {
- myObject = GameObject.FindObjectOfType<T>();
- }
- }
- [ShowIf("@myObject!=null")]
- [GUIColor(0.7f, 1, 0.7f)]
- [ButtonGroup("Top Button", -1000)]
- private void SelectSceneObject()
- {
- if (myObject != null)
- {
- Selection.activeGameObject = myObject.gameObject;
- }
- }
- [ShowIf("@myObject==null")]
- [Button]
- private void CreateManagerObject()
- {
- GameObject newManager = new GameObject();
- newManager.name = "New" + typeof(T).ToString();
- myObject = newManager.AddComponent<T>();
- GameObject managerGroup = GameObject.Find("Manager");
- if (managerGroup == null)
- {
- managerGroup = new GameObject("Manager");
- }
- newManager.transform.parent = managerGroup.transform;
- }
- }
- #endif
|