private void DrawDataInspector(BtNodeData data) { EditorGUIUtility.labelWidth = 24; if (!string.IsNullOrEmpty(mDelKey)) { data.RemoveData(mDelKey); if (mChangeDict.ContainsKey(mDelKey)) { mChangeDict.Remove(mDelKey); } mDelKey = null; } foreach (var key in mChangeDict.Keys) { data.AddData(key, mChangeDict[key]); } mChangeDict.Clear(); if (data.data != null) { foreach (var kv in data.data) { DrawItemInspector(kv); } } EditorGUILayout.BeginHorizontal(); { mKey = EditorGUILayout.TextField("key:", mKey); mValue = EditorGUILayout.TextField("val:", mValue); if (GUILayout.Button("+", GUILayout.MaxWidth(20))) { if (!string.IsNullOrEmpty(mKey)) { data.AddData(mKey, mValue); mKey = ""; mValue = ""; } } } EditorGUILayout.EndHorizontal(); }
public BehaviourTree(string name, BtNodeData data = null) { Name = name; NodeDict = new Dictionary <string, BtNode>(); NodePosDict = new Dictionary <string, int>(); BrokenNodeDict = new Dictionary <string, BtNode>(); if (data == null) { data = new BtNodeData(BtConst.RootName, null, (BtEditorWindow.Window.position.width - BtConst.RightInspectWidth) / 2, 50); data.AddData("restart", "1"); } Root = new BtNode(this, null, data); AddNode(Root); BtHelper.AutoAlignPosition(Root); }