protected override void OnSave(TreeNodeGraph graph) { if (graph == null) { return; } var root = graph.GetRoot(); if (root != null) { var param = root.data as EntityParamModel; string name = "model"; if (string.IsNullOrEmpty(param.asset) == false) { name = param.asset.Replace(".prefab", ""); } string path = EditorUtility.SaveFilePanel("导出特效配置文件", Application.dataPath + "/Resources/r/config/", name, "txt"); path = path.ToLower(); EditorUtility.DisplayProgressBar("请稍候", "正在导出特效配置文件", 0.1f); Save(param, path); EditorUtility.ClearProgressBar(); AssetDatabase.Refresh(); } }
public static void SelectEntityParam() { Selection.selectionChanged = () => { if (Application.isPlaying) { if (Selection.activeGameObject != null) { if (uint.TryParse(Selection.activeGameObject.name, out uint id)) { BattleEntity entity = BattleManager.Instance.GetEntity(id); if (entity != null) { var window = GetWindow <EntityParamWindow>(); if (window != null && window.config == entity.config) { return; } BattleManager.Instance.GetParam(entity.config, (param) => { TreeNodeGraph graph = TreeNodeGraph.CreateGraph(param); if (graph != null) { window = Open <EntityParamWindow>(graph); window.config = entity.config; } }); } } } } }; }
public TreeNode(TreeNodeGraph graph, int id, ITreeNode node) { this.graph = graph; this.id = id; data = node; name = node.name; rect = node.rect; data.OnAddChild = OnAddChild; }
public static T Open <T>(TreeNodeGraph graph) where T : TreeNodeWindow { T t = GetWindow <T>(); t.titleContent = new GUIContent(typeof(T).Name); t.data = graph; return(t); }
private void OnEnable() { hideFlags = HideFlags.HideAndDontSave; mMenuDic = GetMenu(); if (data == null) { data = new TreeNodeGraph(); } }
protected static void AddChildNode(ref TreeNodeGraph graph, ref TreeNode parent, ITreeNode param) { if (parent != null) { for (int i = 0; i < param.children.Count; ++i) { TreeNode node = graph.AddNode(param.children[i]); node.parent = parent; AddChildNode(ref graph, ref node, param.children[i]); } } }
public static TreeNodeGraph CreateGraph(ITreeNode root) { if (root == null) { return(null); } TreeNodeGraph graph = new TreeNodeGraph(); var node = graph.AddNode(root); AddChildNode(ref graph, ref node, root); return(graph); }
private static TreeNodeGraph CreateTemplate() { var modelParam = new EntityParamModel(); modelParam.rect = new Rect(20, 20, TreeNode.WIDTH, TreeNode.HEIGHT); var actionParam = new EntityParamAction(); actionParam.rect = new Rect(300, 20, TreeNode.WIDTH, TreeNode.HEIGHT); modelParam.AddChild(actionParam); var animationParam = new EntityParamAnimation(); animationParam.rect = new Rect(600, 20, TreeNode.WIDTH, TreeNode.HEIGHT); modelParam.AddChild(animationParam); return(TreeNodeGraph.CreateGraph(modelParam)); }
/// <summary> /// 显示编辑器的主要组件 /// </summary> private void DrawEditor() { DrawToolbar(); BeginWindows(); if (data == null) { data = new TreeNodeGraph(); } for (int i = 0; i < data.nodes.Count; i++) { //data.nodes[i].rect = GUILayout.Window(i,data.nodes[i].rect, DrawNode, data.nodes[i].id + "-" + data.nodes[i].name, WindowStyle); data.nodes[i].rect = GUI.Window(i, data.nodes[i].rect, DrawNode, data.nodes[i].id + "-" + data.nodes[i].name); DrawConnection(data.nodes[i]); } EndWindows(); }
private static bool OnOpeEntityParam(int instanceID, int line) { var asset = EditorUtility.InstanceIDToObject(instanceID) as TextAsset; if (asset != null) { EntityParam param = EntityParam.Create(asset.text); if (param != null) { TreeNodeGraph graph = TreeNodeGraph.CreateGraph(param); if (graph != null) { Open <EntityParamWindow>(graph); return(true); } } } return(false); }
protected override TreeNodeGraph OnLoad() { string path = EditorUtility.OpenFilePanel("Select a config", Application.dataPath + "/Resources/r/config/", "txt"); if (string.IsNullOrEmpty(path)) { return(null); } Debug.Log(path); string text = File.ReadAllText(path); EntityParam param = EntityParam.Create(text); if (param != null) { return(TreeNodeGraph.CreateGraph(param)); } return(base.OnLoad()); }
//绘制工具栏 private void DrawToolbar() { mToolBarRect = new Rect(0, 0, Screen.width, 20); GUILayout.BeginArea(mToolBarRect, EditorStyles.toolbar); GUILayout.BeginHorizontal(new GUILayoutOption[0]); if (GUILayout.Button("New", EditorStyles.toolbarButton, new GUILayoutOption[] { GUILayout.Width(42f) })) { data = OnNew(); } if (GUILayout.Button("Load", EditorStyles.toolbarButton, new GUILayoutOption[] { GUILayout.Width(42f) })) { var graph = OnLoad(); if (graph != null) { data = graph; } } if (GUILayout.Button("Save", EditorStyles.toolbarButton, new GUILayoutOption[] { GUILayout.Width(42f) })) { OnSave(data); } GUILayout.FlexibleSpace(); GUILayout.EndVertical(); GUILayout.EndArea(); }
protected virtual void OnSave(TreeNodeGraph graph) { }