提交 6a3cbc0a 编写于 作者: T tanghai

修复行为树错误

上级 48857e7e
......@@ -10,9 +10,9 @@ using Object = UnityEngine.Object;
namespace MyEditor
{
public class BTEntity: Entity
public class BTEditor: Entity
{
private static BTEntity instance;
private static BTEditor instance;
public const int NodeIdStartIndex = 100000;
private int AutoID = NodeIdStartIndex;
......@@ -34,7 +34,7 @@ namespace MyEditor
}
}
public static BTEntity Instance
public static BTEditor Instance
{
get
{
......@@ -43,7 +43,15 @@ namespace MyEditor
return instance;
}
instance = new BTEntity();
instance = new BTEditor();
AssemblyManager.Instance.Add("Model", typeof(Init).Assembly);
AssemblyManager.Instance.Add("Editor", typeof(BTEditor).Assembly);
instance.LoadNodeTypeProto();
instance.AddComponent<EventComponent>();
instance.AddComponent<TimerComponent>();
instance.AddComponent<BTDebugComponent>();
return instance;
}
......@@ -98,7 +106,6 @@ namespace MyEditor
public void NewLoadData()
{
LoadNodeTypeProto();
NewLoadPrefabTree();
FilterClassify();
}
......@@ -191,7 +198,7 @@ namespace MyEditor
public void RemoveUnusedArgs(NodeProto nodeProto)
{
NodeMeta proto = BTEntity.Instance.GetNodeMeta(nodeProto.Name);
NodeMeta proto = BTEditor.Instance.GetNodeMeta(nodeProto.Name);
List<string> unUsedList = new List<string>();
foreach (KeyValuePair<string, object> item in nodeProto.Args.Dict())
{
......@@ -420,9 +427,11 @@ namespace MyEditor
}
selectNodeName = "";
CurTreeGO = go;
NewLoadData();
BTEditorWindow.ShowWindow();
Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeOpenEditor);
BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeOpenEditor);
}
public string[] GetCanInPutEnvKeyArray(BehaviorNodeData nodeData, NodeFieldDesc desc)
......
......@@ -95,11 +95,11 @@ namespace MyEditor
case EventType.KeyUp:
if (e.keyCode == KeyCode.Escape || (e.keyCode == KeyCode.S && e.control))
{
BTEntity.Instance.SaveAll();
BTEditor.Instance.SaveAll();
}
else if (e.keyCode == KeyCode.F4)
{
BTEntity.Instance.SaveAll();
BTEditor.Instance.SaveAll();
}
break;
case EventType.MouseDown:
......@@ -109,7 +109,7 @@ namespace MyEditor
public void OnDestroy()
{
BTEntity.Reset();
BTEditor.Reset();
}
public void onUpdatePropList(params object[] list)
......
......@@ -53,10 +53,10 @@ namespace MyEditor
public BehaviorNodeData(string proto_name)
{
this.Name = proto_name;
this.Proto = BTEntity.Instance.GetNodeMeta(proto_name);
this.Proto = BTEditor.Instance.GetNodeMeta(proto_name);
if (this.Proto == null)
{
this.Proto = BTEntity.Instance.GetNodeMeta("Unknow");
this.Proto = BTEditor.Instance.GetNodeMeta("Unknow");
return;
}
this.Classify = this.Proto.classify;
......@@ -108,7 +108,7 @@ namespace MyEditor
public void ResetId()
{
this.Id = BTEntity.Instance.AutoNodeId();
this.Id = BTEditor.Instance.AutoNodeId();
foreach (BehaviorNodeData child in children)
{
child.ResetId();
......
......@@ -14,7 +14,7 @@ namespace MyEditor
if (GUILayout.Button("打开行为树"))
{
BTEntity.Instance.OpenBehaviorEditor(config.gameObject);
BTEditor.Instance.OpenBehaviorEditor(config.gameObject);
}
EditorUtility.SetDirty(config);
}
......
......@@ -11,7 +11,7 @@ namespace Model
{
BehaviorNodeConfig go = treeConfig.CreateNodeConfig(rootName);
treeConfig.RootNodeConfig = go.GetComponent<BehaviorNodeConfig>();
treeConfig.RootNodeConfig.id = BTEntity.NodeIdStartIndex;
treeConfig.RootNodeConfig.id = BTEditor.NodeIdStartIndex;
go.gameObject.name = rootName;
return go;
}
......@@ -33,9 +33,11 @@ namespace Model
private static BehaviorNodeConfig CreateNodeConfig(this BehaviorTreeConfig treeConfig, string name)
{
NodeMeta proto = BTEntity.Instance.GetNodeMeta(name);
GameObject go = new GameObject();
go.name = name;
NodeMeta proto = BTEditor.Instance.GetNodeMeta(name);
GameObject go = new GameObject()
{
name = name
};
go.transform.parent = treeConfig.gameObject.transform;
BehaviorNodeConfig node = go.AddComponent<BehaviorNodeConfig>();
node.name = name;
......
......@@ -68,7 +68,7 @@ namespace MyEditor
foreach (string name in nodeNameList)
{
NodeMeta proto = BTEntity.Instance.GetNodeMeta(name);
NodeMeta proto = BTEditor.Instance.GetNodeMeta(name);
if (GUILayout.Button(name + $"({proto.describe})", GetButtonStyle()))
{
if (SubWinType.CreateNode == mSubWinType)
......@@ -109,7 +109,7 @@ namespace MyEditor
selectType = Enum.GetName(typeof(NodeClassifyType), mEnumNodeTypeSelection - 1);
foreach (string name in list)
{
NodeMeta proto = BTEntity.Instance.GetNodeMeta(name);
NodeMeta proto = BTEditor.Instance.GetNodeMeta(name);
if (selectType == proto.classify)
{
result1.Add(name);
......@@ -125,7 +125,7 @@ namespace MyEditor
List<string> result2 = new List<string>();
foreach (string name in result1)
{
NodeMeta proto = BTEntity.Instance.GetNodeMeta(name);
NodeMeta proto = BTEditor.Instance.GetNodeMeta(name);
if (name.ToUpper().Contains(text.ToUpper()) || proto.describe.ToUpper().Contains(text.ToUpper()))
{
result2.Add(name);
......
......@@ -8,12 +8,12 @@ namespace MyEditor
{
public void Run(BehaviorTree tree, List<long> pathList)
{
if (BTEntity.Instance.BehaviorTreeConfig != null)
if (BTEditor.Instance.BehaviorTreeConfig != null)
{
BTEntity.Instance.ClearDebugState();
BTEntity.Instance.GetComponent<BTDebugComponent>().TreePathList.Add(pathList);
BTEntity.Instance.GetComponent<BTDebugComponent>().BehaviorTree = tree;
BTEntity.Instance.SetDebugState(pathList);
BTEditor.Instance.ClearDebugState();
BTEditor.Instance.GetComponent<BTDebugComponent>().TreePathList.Add(pathList);
BTEditor.Instance.GetComponent<BTDebugComponent>().BehaviorTree = tree;
BTEditor.Instance.SetDebugState(pathList);
}
}
}
......
......@@ -199,7 +199,7 @@ namespace MyEditor
if (mDragingRightBorder)
{
mRightWidth -= e.delta.x;
Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeRightDesignerDrag, e.delta.x);
BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeRightDesignerDrag, e.delta.x);
return;
}
......@@ -327,9 +327,9 @@ namespace MyEditor
if (mSelectedNode != null)
{
if (mSelectedNode.NodeData.Proto.classify == NodeClassifyType.Root.ToString() ||
BTEntity.Instance.CurTree.Root.Id == mSelectedNode.NodeData.Id)
BTEditor.Instance.CurTree.Root.Id == mSelectedNode.NodeData.Id)
{
List<NodeMeta> list = BTEntity.Instance.Classify2NodeProtoList[NodeClassifyType.Root.ToString()];
List<NodeMeta> list = BTEditor.Instance.Classify2NodeProtoList[NodeClassifyType.Root.ToString()];
foreach (NodeMeta nodeType in list)
{
result.Add(nodeType.name);
......@@ -339,7 +339,7 @@ namespace MyEditor
else
{
// NodeChildLimitType nodeChildLimitType = mSelectedNode.NodeData.IsLeaf() ? NodeChildLimitType.All : NodeChildLimitType.WithChild;
List<NodeMeta> canSubtituteList = BTEntity.Instance.AllNodeProtoList;
List<NodeMeta> canSubtituteList = BTEditor.Instance.AllNodeProtoList;
canSubtituteList.Sort(CompareShowName);
foreach (NodeMeta nodeType in canSubtituteList)
{
......@@ -362,7 +362,7 @@ namespace MyEditor
{
List<string> result = new List<string>();
foreach (KeyValuePair<string, List<NodeMeta>> kv in BTEntity.Instance.Classify2NodeProtoList)
foreach (KeyValuePair<string, List<NodeMeta>> kv in BTEditor.Instance.Classify2NodeProtoList)
{
string classify = kv.Key;
List<NodeMeta> nodeProtoList = kv.Value;
......@@ -389,8 +389,8 @@ namespace MyEditor
menu.AddItem(new GUIContent("创建子节点"), false, this.PopUpCreate);
menu.AddItem(new GUIContent("替换当前节点"), false, this.PopUpReplace);
string selectNodeName = BTEntity.Instance.selectNodeName;
string selectNodeType = BTEntity.Instance.selectNodeType;
string selectNodeName = BTEditor.Instance.selectNodeName;
string selectNodeType = BTEditor.Instance.selectNodeType;
if (mSelectedNode != null && selectNodeName != "")
{
if (selectNodeType != NodeClassifyType.Root.ToString() && mSelectedNode.NodeData.Children.Count < mSelectedNode.NodeData.Proto.child_limit)
......@@ -467,8 +467,8 @@ namespace MyEditor
private void CreateNode()
{
NodeMeta nodeProto = BTEntity.Instance.GetNodeMeta(BTEntity.Instance.selectNodeName);
BehaviorNodeData nodeData = BTEntity.Instance.CreateNode((int) BTEntity.Instance.CurTree.Id, nodeProto.name);
NodeMeta nodeProto = BTEditor.Instance.GetNodeMeta(BTEditor.Instance.selectNodeName);
BehaviorNodeData nodeData = BTEditor.Instance.CreateNode((int) BTEditor.Instance.CurTree.Id, nodeProto.name);
CreateNode(nodeData, MousePosToGraphPos(mMousePos));
}
......@@ -500,8 +500,8 @@ namespace MyEditor
}
if (mCopyNode != null && mCopyNode != mSelectedNode)
{
BehaviorNodeData data = BTEntity.Instance.CopyNode(mCopyNode.NodeData);
BTEntity.Instance.ResetTreeId();
BehaviorNodeData data = BTEditor.Instance.CopyNode(mCopyNode.NodeData);
BTEditor.Instance.ResetTreeId();
NodeDesigner node = CreateNode(data, Vector2.zero);
ConnectNode(node, mSelectedNode);
}
......@@ -537,20 +537,20 @@ namespace MyEditor
return;
}
mDetachedNodes.Remove(mSelectedNode);
BTEntity.Instance.ResetTreeId();
BTEditor.Instance.ResetTreeId();
}
private void ChangeNodeType()
{
ChangeNodeType(BTEntity.Instance.selectNodeName);
ChangeNodeType(BTEditor.Instance.selectNodeName);
}
//有待优化
private void ChangeNodeType(object obj)
{
string nodeType = (string) obj;
NodeMeta nodeProto = BTEntity.Instance.GetNodeMeta(nodeType);
BehaviorNodeData nodeData = BTEntity.Instance.CreateNode((int) BTEntity.Instance.CurTree.Id, nodeProto.name);
NodeMeta nodeProto = BTEditor.Instance.GetNodeMeta(nodeType);
BehaviorNodeData nodeData = BTEditor.Instance.CreateNode((int) BTEditor.Instance.CurTree.Id, nodeProto.name);
NodeDesigner oldNode = mSelectedNode;
NodeDesigner newNode = new NodeDesigner(nodeData);
......@@ -558,11 +558,11 @@ namespace MyEditor
{
newNode.NodeData.Id = RootNode.NodeData.Id;
RootNode = newNode;
BehaviorTreeData oldTree = BTEntity.Instance.CurTree;
BehaviorTreeData oldTree = BTEditor.Instance.CurTree;
BehaviorTreeData newTree = new BehaviorTreeData(oldTree.Id);
newTree.classify = oldTree.classify;
newTree.Root = nodeData;
BTEntity.Instance.CurTree = newTree;
BTEditor.Instance.CurTree = newTree;
}
else
{
......@@ -575,8 +575,8 @@ namespace MyEditor
{
newNode.AddChild(child);
}
BTEntity.Instance.ResetTreeId();
Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeAfterChangeNodeType);
BTEditor.Instance.ResetTreeId();
BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeAfterChangeNodeType);
}
public void onChangeNodeType(params object[] list)
......@@ -606,20 +606,20 @@ namespace MyEditor
{
mDetachedNodes.Add(node);
}
BTEntity.Instance.ResetTreeId();
Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeCreateNode, node);
BTEditor.Instance.ResetTreeId();
BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeCreateNode, node);
return node;
}
/// 事件相关
public NodeDesigner onCreateTree(params object[] list)
{
if (BTEntity.Instance.CurTree == null)
if (BTEditor.Instance.CurTree == null)
{
Log.Error($"CurTree can not be null");
return null;
}
RootNode = new NodeDesigner(BTEntity.Instance.CurTree.Root);
RootNode = new NodeDesigner(BTEditor.Instance.CurTree.Root);
CalcGraphRect();
return RootNode;
}
......@@ -636,8 +636,8 @@ namespace MyEditor
string name = (string) list[0];
Vector2 pos = (Vector2) list[1];
NodeMeta nodeProto = BTEntity.Instance.GetNodeMeta(name);
BehaviorNodeData nodeData = BTEntity.Instance.CreateNode((int) BTEntity.Instance.CurTree.Id, nodeProto.name);
NodeMeta nodeProto = BTEditor.Instance.GetNodeMeta(name);
BehaviorNodeData nodeData = BTEditor.Instance.CreateNode((int) BTEditor.Instance.CurTree.Id, nodeProto.name);
CreateNode(nodeData, pos);
}
......@@ -707,7 +707,7 @@ namespace MyEditor
public void ClickNode(NodeDesigner dstNode)
{
Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeClickNode, dstNode);
BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeClickNode, dstNode);
}
public void ShiftNode(NodeDesigner dstNode)
......@@ -734,7 +734,7 @@ namespace MyEditor
int idx = parent1.Children.IndexOf(node1);
parent1.AddChild(node2, idx);
parent1.AutoSort();
//BTEntity.GetInstance().ResetTreeId();
//BTEditor.GetInstance().ResetTreeId();
}
// //不同父,插到node1的子节点
......@@ -745,7 +745,7 @@ namespace MyEditor
// parent2.AutoSort();
// node1.AddChild(node2);
// node1.AutoSort();
// BTEntity.GetInstance().ResetTreeId();
// BTEditor.GetInstance().ResetTreeId();
}
public void MoveNode(NodeDesigner dstNode)
......@@ -776,7 +776,7 @@ namespace MyEditor
parent2.AutoSort();
node1.AddChild(node2);
node1.AutoSort();
//BTEntity.GetInstance().ResetTreeId();
//BTEditor.GetInstance().ResetTreeId();
}
}
}
\ No newline at end of file
......@@ -90,7 +90,7 @@ namespace MyEditor
public void Init()
{
NodeData.Proto = BTEntity.Instance.GetNodeMeta(NodeData.Name);
NodeData.Proto = BTEditor.Instance.GetNodeMeta(NodeData.Name);
string[] arr = NodeData.Proto.style.Split('/');
string style = arr.Length > 0? arr[0] : "";
if (style == "")
......@@ -178,7 +178,7 @@ namespace MyEditor
{
GUI.DrawTexture(rect, mBoxSelectHighLight);
}
else if (BTEntity.Instance.IsHighLight(this.NodeData))
else if (BTEditor.Instance.IsHighLight(this.NodeData))
{
GUI.DrawTexture(rect, mBoxHighLight);
}
......@@ -281,17 +281,17 @@ namespace MyEditor
if (!isSelected && mouse.x > Pos.x - Width / 2 - 30f && mouse.x < Pos.x + Width / 2 + 30f && mouse.y > Pos.y - Height / 2 &&
mouse.y < Pos.y + Height / 2)
{
Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeMouseInNode, NodeData, this);
BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeMouseInNode, NodeData, this);
}
//并判断是否点中了连线柄
if (mouse.x > LeftPos.x - 30f && mouse.x < LeftPos.x + 10f && mouse.y > LeftPos.y - 30f && mouse.y < LeftPos.y + 30f)
{
Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeConnectState, this, State.ConnectLeft);
BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeConnectState, this, State.ConnectLeft);
}
if (mouse.x > RightPos.x - 10f && mouse.x < RightPos.x + 30f && mouse.y > RightPos.y - 30f && mouse.y < RightPos.y + 30f && NodeData.CanAddChild())
{
Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeConnectState, this, State.ConnectRight);
BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeConnectState, this, State.ConnectRight);
}
for (int i = 0; i < this.Children.Count; i++)
......@@ -305,7 +305,7 @@ namespace MyEditor
isSelected = flag;
if (flag)
{
BTEntity.Instance.SelectNode(this.NodeData);
BTEditor.Instance.SelectNode(this.NodeData);
}
}
......
......@@ -9,14 +9,14 @@ namespace Model
{
public class BTEditorTree
{
private int _id = BTEntity.NodeIdStartIndex;
private int _id = BTEditor.NodeIdStartIndex;
private readonly Node _root;
public BTEditorTree(BehaviorTreeConfig config)
{
Type rootType = typeof(Game).Assembly.GetType($"Model.{config.RootNodeProto.Name}");
Node root = (Node) Activator.CreateInstance(rootType, config.RootNodeProto);
root.Id = BTEntity.NodeIdStartIndex;
root.Id = BTEditor.NodeIdStartIndex;
Queue<NodeProto> protoStack = new Queue<NodeProto>();
Queue<Node> nodeStack = new Queue<Node>();
protoStack.Enqueue(config.RootNodeProto);
......@@ -73,7 +73,7 @@ namespace Model
private BTEditorTree(Node root, BehaviorTreeConfig config)
{
_root = root;
_root.Id = BTEntity.NodeIdStartIndex;
_root.Id = BTEditor.NodeIdStartIndex;
this.BTConfig = config;
}
......
......@@ -113,7 +113,7 @@ namespace MyEditor
mNodeFoldout = new FoldoutFolder("所有节点", SelectNodeFolderCallback);
mNodeFoldout.Fold = true;
foreach (KeyValuePair<string, List<NodeMeta>> kv in BTEntity.Instance.Classify2NodeProtoList)
foreach (KeyValuePair<string, List<NodeMeta>> kv in BTEditor.Instance.Classify2NodeProtoList)
{
string classify = kv.Key;
List<NodeMeta> nodeTypeList = kv.Value;
......@@ -195,18 +195,18 @@ namespace MyEditor
{
Rect boxRect = new Rect(0f, Screen.height - offset + 15f, this.mWidth, 200f);
GUILayout.BeginArea(boxRect);
BTEntity.Instance.selectNodeName = "";
BTEditor.Instance.selectNodeName = "";
if (mCurNode != null)
{
string[] arr = mCurNode.Text.Split(' ');
string name = arr[0];
BTEntity.Instance.selectNodeName = name;
BTEntity.Instance.selectNodeType = mCurNode.folderName;
BTEditor.Instance.selectNodeName = name;
BTEditor.Instance.selectNodeType = mCurNode.folderName;
if (mCurNode.folderName != NodeClassifyType.Root.ToString())
{
if (GUILayout.Button("新建"))
{
Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreePropertyDesignerNewCreateClick, name, Vector2.zero);
BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreePropertyDesignerNewCreateClick, name, Vector2.zero);
}
}
if (mCurNode.folderName != NodeClassifyType.Root.ToString() ||
......@@ -214,15 +214,15 @@ namespace MyEditor
{
if (GUILayout.Button("替换"))
{
Game.Scene.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeReplaceClick, name, Vector2.zero);
BTEditor.Instance.GetComponent<EventComponent>().Run(EventIdType.BehaviorTreeReplaceClick, name, Vector2.zero);
}
}
if (GUILayout.Button("保存"))
{
BTEntity.Instance.SaveAll();
BTEditor.Instance.SaveAll();
}
NodeMeta node = BTEntity.Instance.GetNodeMeta(name);
NodeMeta node = BTEditor.Instance.GetNodeMeta(name);
GUILayout.Label("节点名:" + node.name);
GUILayout.Label("描述:" + node.describe);
}
......@@ -232,7 +232,7 @@ namespace MyEditor
private void ClearNodes()
{
BTEntity.Instance.selectNodeName = "";
BTEditor.Instance.selectNodeName = "";
mEnumNodeTypeSelection = 0;
mSearchNode = "";
foreach (FoldoutFolder folder in mNodeFoldout.Folders)
......@@ -308,7 +308,7 @@ namespace MyEditor
value = (GameObject) EditorGUILayout.ObjectField(desc, value, typeof(GameObject), false);
if (value.GetComponent<BehaviorTreeConfig>() != null && GUILayout.Button("打开行为树"))
{
BTEntity.Instance.OpenBehaviorEditor(value);
BTEditor.Instance.OpenBehaviorEditor(value);
SetToolBar(2);
}
EditorGUILayout.EndHorizontal();
......@@ -323,7 +323,7 @@ namespace MyEditor
}
if (GUILayout.Button("保存行为树"))
{
BTEntity.Instance.SaveAll();
BTEditor.Instance.SaveAll();
}
NodeMeta proto = mCurBehaviorNode.Proto;
GUILayout.Space(10f);
......@@ -382,7 +382,7 @@ namespace MyEditor
{
NodeFieldDesc desc = fieldList[i];
Type fieldType = NodeMetaHelper.GetFieldType(nodeName, desc.name);
NodeMeta nodeMeta = BTEntity.Instance.GetNodeMeta(nodeName);
NodeMeta nodeMeta = BTEditor.Instance.GetNodeMeta(nodeName);
// 如果不存在这个参数,给一个默认的
if (!mCurBehaviorNode.Args.ContainsKey(desc.name))
......@@ -630,7 +630,7 @@ namespace MyEditor
private object InputEnumFieldValue(NodeFieldDesc desc)
{
string oldValue = mCurBehaviorNode.Args.Get(desc.name)?.ToString();
string[] enumValueArr = BTEntity.Instance.GetCanInPutEnvKeyArray(mCurBehaviorNode, desc);
string[] enumValueArr = BTEditor.Instance.GetCanInPutEnvKeyArray(mCurBehaviorNode, desc);
if (enumValueArr.Length == 0)
{
enumValueArr = new string[1] { BTEnvKey.None };
......@@ -704,8 +704,8 @@ namespace MyEditor
public void DrawDebugView()
{
BehaviorTree behaviorTree = BTEntity.Instance.GetComponent<BTDebugComponent>().BehaviorTree;
List<List<long>> treePathList = BTEntity.Instance.GetComponent<BTDebugComponent>().TreePathList;
BehaviorTree behaviorTree = BTEditor.Instance.GetComponent<BTDebugComponent>().BehaviorTree;
List<List<long>> treePathList = BTEditor.Instance.GetComponent<BTDebugComponent>().TreePathList;
if (behaviorTree == null)
{
return;
......@@ -713,7 +713,7 @@ namespace MyEditor
if (GUILayout.Button("清空执行记录"))
{
treePathList.Clear();
BTEntity.Instance.ClearDebugState();
BTEditor.Instance.ClearDebugState();
}
const float offset = 55f;
GUILayout.BeginArea(new Rect(0f, 20f, this.mWidth, Screen.height - offset));
......@@ -721,12 +721,12 @@ namespace MyEditor
new Rect(0f, 0f, this.mWidth, Screen.height - offset), this.mTreeScrollPos,
new Rect(0f, 0f, this.mWidth - 20f, treePathList.Count * 22), false, false);
for (int i = 0; i < BTEntity.Instance.GetComponent<BTDebugComponent>().TreePathList.Count; i++)
for (int i = 0; i < BTEditor.Instance.GetComponent<BTDebugComponent>().TreePathList.Count; i++)
{
if (GUILayout.Button($"frame{i}"))
{
BTEntity.Instance.ClearDebugState();
BTEntity.Instance.SetDebugState(treePathList[i]);
BTEditor.Instance.ClearDebugState();
BTEditor.Instance.SetDebugState(treePathList[i]);
}
}
GUI.EndScrollView();
......
......@@ -9,37 +9,50 @@ Prefab:
m_Modifications: []
m_RemovedComponents: []
m_ParentPrefab: {fileID: 0}
m_RootGameObject: {fileID: 1000012987241756}
m_RootGameObject: {fileID: 1783477931437860}
m_IsPrefabParent: 1
--- !u!1 &1000010648217578
--- !u!1 &1120422365835790
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4465453297948628}
- component: {fileID: 114509792806546196}
m_Layer: 0
m_Name: UICreateRoot
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1279530075351798
GameObject:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4000012502268996}
- component: {fileID: 114000012927878958}
- component: {fileID: 114000012831209000}
- component: {fileID: 114000012254895660}
- component: {fileID: 4936977615441378}
- component: {fileID: 114626019597701266}
m_Layer: 0
m_Name: UIScale
m_Name: Sequence
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1000011153220328
--- !u!1 &1731652014909292
GameObject:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4000010573939176}
- component: {fileID: 114000012101497390}
- component: {fileID: 114000012687440004}
- component: {fileID: 114000013925923264}
- component: {fileID: 4480680075265146}
- component: {fileID: 114176872673644624}
- component: {fileID: 114472900551181156}
m_Layer: 0
m_Name: CreateUIEffect
m_TagString: Untagged
......@@ -47,208 +60,181 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1000012663018806
--- !u!1 &1783477931437860
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4000012504621142}
- component: {fileID: 114000012710832806}
- component: {fileID: 114000010724577698}
- component: {fileID: 4011488779620680}
- component: {fileID: 114700535858552550}
m_Layer: 0
m_Name: UICreateRoot
m_Name: "BT_\u521B\u5EFAUI\u884C\u4E3A\u6811"
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!1 &1000012987241756
--- !u!1 &1806181600933056
GameObject:
m_ObjectHideFlags: 0
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4000013585351022}
- component: {fileID: 114000011653782440}
- component: {fileID: 4646367730243502}
- component: {fileID: 114986442712064258}
m_Layer: 0
m_Name: "BT_\u5927\u5385UI\u521B\u5EFA\u65F6\u6267\u884C\u884C\u4E3A\u6811"
m_Name: Selector
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4000010573939176
--- !u!4 &4011488779620680
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1000011153220328}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_GameObject: {fileID: 1783477931437860}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 4000012504621142}
m_RootOrder: 1
m_Children:
- {fileID: 4465453297948628}
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &4000012502268996
--- !u!4 &4465453297948628
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1000010648217578}
m_GameObject: {fileID: 1120422365835790}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 4000012504621142}
m_Children:
- {fileID: 4646367730243502}
m_Father: {fileID: 4011488779620680}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &4000012504621142
--- !u!4 &4480680075265146
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1000012663018806}
m_GameObject: {fileID: 1731652014909292}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 4000012502268996}
- {fileID: 4000010573939176}
m_Father: {fileID: 4000013585351022}
m_Children: []
m_Father: {fileID: 4646367730243502}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!4 &4000013585351022
--- !u!4 &4646367730243502
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1000012987241756}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_GameObject: {fileID: 1806181600933056}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
- {fileID: 4000012504621142}
m_Father: {fileID: 0}
- {fileID: 4480680075265146}
- {fileID: 4936977615441378}
m_Father: {fileID: 4465453297948628}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &114000010724577698
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1000012663018806}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 872ab75cd8949824c994b1fb31d221f1, type: 3}
m_Name:
m_EditorClassIdentifier:
fieldName: ui
fieldValue: UI
--- !u!114 &114000011653782440
MonoBehaviour:
--- !u!4 &4936977615441378
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1000012987241756}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 450b9a4ed562c1546b663af4135cc7e7, type: 3}
m_Name:
m_EditorClassIdentifier:
RootNodeConfig: {fileID: 114000012710832806}
mAutoId: 1
--- !u!114 &114000012101497390
m_GameObject: {fileID: 1279530075351798}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 4646367730243502}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &114176872673644624
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1000011153220328}
m_GameObject: {fileID: 1731652014909292}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2d74453161f00b24287b1f1fb56b0778, type: 3}
m_Script: {fileID: 11500000, guid: 840ecb1e4ef94d2429fcb0ff2696d581, type: 3}
m_Name:
m_EditorClassIdentifier:
id: 100003
describe:
--- !u!114 &114000012254895660
--- !u!114 &114472900551181156
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1000010648217578}
m_GameObject: {fileID: 1731652014909292}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 543f3ab39de095e4e80a0c5bbff4242e, type: 3}
m_Script: {fileID: 11500000, guid: 179b62fdf77cfeb4188878f675b8fffd, type: 3}
m_Name:
m_EditorClassIdentifier:
fieldName: scale
fieldValue: 1
--- !u!114 &114000012687440004
fieldName: effect
fieldValue: {fileID: 0}
--- !u!114 &114509792806546196
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1000011153220328}
m_GameObject: {fileID: 1120422365835790}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 872ab75cd8949824c994b1fb31d221f1, type: 3}
m_Script: {fileID: 11500000, guid: 840ecb1e4ef94d2429fcb0ff2696d581, type: 3}
m_Name:
m_EditorClassIdentifier:
fieldName: uiKey
fieldValue: UI
--- !u!114 &114000012710832806
id: 100001
describe: "\u521B\u5EFAUI\u884C\u4E3A\u6811"
--- !u!114 &114626019597701266
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1000012663018806}
m_GameObject: {fileID: 1279530075351798}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2d74453161f00b24287b1f1fb56b0778, type: 3}
m_Script: {fileID: 11500000, guid: 840ecb1e4ef94d2429fcb0ff2696d581, type: 3}
m_Name:
m_EditorClassIdentifier:
id: 100001
describe: "\u5927\u5385UI\u521B\u5EFA\u65F6\u6267\u884C\u884C\u4E3A\u6811"
--- !u!114 &114000012831209000
id: 100004
describe:
--- !u!114 &114700535858552550
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1000010648217578}
m_GameObject: {fileID: 1783477931437860}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 872ab75cd8949824c994b1fb31d221f1, type: 3}
m_Script: {fileID: 11500000, guid: 4f1d451aabfc8454d94cbc4032d6a308, type: 3}
m_Name:
m_EditorClassIdentifier:
fieldName: uiKey
fieldValue: UI
--- !u!114 &114000012927878958
RootNodeConfig: {fileID: 114509792806546196}
--- !u!114 &114986442712064258
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1000010648217578}
m_GameObject: {fileID: 1806181600933056}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 2d74453161f00b24287b1f1fb56b0778, type: 3}
m_Script: {fileID: 11500000, guid: 840ecb1e4ef94d2429fcb0ff2696d581, type: 3}
m_Name:
m_EditorClassIdentifier:
id: 100002
describe:
--- !u!114 &114000013925923264
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1000011153220328}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7be3fccf10005084b99360e730465802, type: 3}
m_Name:
m_EditorClassIdentifier:
fieldName: effect
fieldValue: {fileID: 1000013439777610, guid: ec75b784e8d7596478790f42fd4d9937, type: 2}
fileFormatVersion: 2
guid: 5dfe2c32bf2efc044a7f3f57c34ab334
timeCreated: 1487666017
licenseType: Pro
guid: f9f78e1edb39dfd41a2722b1a53c7ad4
timeCreated: 1498460809
licenseType: Free
NativeFormatImporter:
mainObjectFileID: 100100000
userData:
assetBundleName:
assetBundleVariant:
......@@ -55,7 +55,7 @@ namespace Model
private static void InitFieldValue(ref Node node, NodeProto nodeProto)
{
Type type = typeof(Game).Assembly.GetType("Model." + nodeProto.Name);
Type type = AssemblyManager.Instance.Get("Model").GetType("Model." + nodeProto.Name);
foreach (var args_item in nodeProto.Args.Dict())
{
......
......@@ -38,7 +38,12 @@ namespace Model
public static Type[] GetMonoTypes()
{
return typeof(Game).Assembly.GetTypes();
List<Type> types = new List<Type>();
foreach (Assembly assembly in AssemblyManager.Instance.GetAll())
{
types.AddRange(assembly.GetTypes());
}
return types.ToArray();
}
public static IMethod[] GetMethodInfo(string typeName)
......
......@@ -29,6 +29,8 @@ namespace Model
{
Instance = this;
AssemblyManager.Instance.Add("Model", typeof(Model.Init).Assembly);
this.RegisterAssembly();
this.RegisterILAdapter();
this.RegisterDelegate();
......
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
namespace Model
{
public class AssemblyManager
{
private static readonly AssemblyManager instance = new AssemblyManager();
public static AssemblyManager Instance
{
get
{
return instance;
}
}
private readonly Dictionary<string, Assembly> dictionary = new Dictionary<string, Assembly>();
public void Add(string name, Assembly assembly)
{
this.dictionary[name] = assembly;
}
public void Remove(string name)
{
this.dictionary.Remove(name);
}
public Assembly[] GetAll()
{
return this.dictionary.Values.ToArray();
}
public Assembly Get(string name)
{
return this.dictionary[name];
}
}
}
fileFormatVersion: 2
guid: 65c436598fced964691bd88d3883b041
timeCreated: 1498464228
licenseType: Free
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
......@@ -12,12 +12,15 @@
<ProjectTypeGuids>{E097FAD1-6243-4DAD-9C02-E9B9EFC3FFC1};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
<TargetFrameworkProfile></TargetFrameworkProfile>
<CompilerResponseFile></CompilerResponseFile>
<TargetFrameworkProfile>
</TargetFrameworkProfile>
<CompilerResponseFile>
</CompilerResponseFile>
<UnityProjectType>Editor:5</UnityProjectType>
<UnityBuildTarget>StandaloneWindows64:19</UnityBuildTarget>
<UnityVersion>2017.1.0b8</UnityVersion>
<RootNamespace></RootNamespace>
<RootNamespace>
</RootNamespace>
<LangVersion>6</LangVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
......@@ -140,7 +143,7 @@
<Compile Include="Assets\Editor\BehaviorTreeEditor\BTBatchOperation.cs" />
<Compile Include="Assets\Editor\BehaviorTreeEditor\BTDesignerUtility.cs" />
<Compile Include="Assets\Editor\BehaviorTreeEditor\BTEditorWindow.cs" />
<Compile Include="Assets\Editor\BehaviorTreeEditor\BTEntity.cs" />
<Compile Include="Assets\Editor\BehaviorTreeEditor\BTEditor.cs" />
<Compile Include="Assets\Editor\BehaviorTreeEditor\Component\BTDebugComponent.cs" />
<Compile Include="Assets\Editor\BehaviorTreeEditor\CustomArrayField.cs" />
<Compile Include="Assets\Editor\BehaviorTreeEditor\Event\BehaviorTreeAfterChangeNodeTypeEvent_SelectNode.cs" />
......@@ -168,4 +171,4 @@
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="GenerateTargetFrameworkMonikerAttribute" />
</Project>
</Project>
\ No newline at end of file
......@@ -484,6 +484,7 @@
<Compile Include="Assets\Scripts\Message\OpcodeHelper.cs" />
<Compile Include="Assets\Scripts\Message\RpcException.cs" />
<Compile Include="Assets\Scripts\MonoMethod.cs" />
<Compile Include="Assets\Scripts\Object\AssemblyManager.cs" />
<Compile Include="Assets\Scripts\Object\Component.cs" />
<Compile Include="Assets\Scripts\Object\Disposer.cs" />
<Compile Include="Assets\Scripts\Object\Entity.cs" />
......
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:String x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/IntelliSenseCompletingCharacters/CSharpCompletingCharacters/NonCompletingCharacters/@EntryValue"></s:String></wpf:ResourceDictionary>
\ No newline at end of file
<s:String x:Key="/Default/CodeEditing/Intellisense/CodeCompletion/IntelliSenseCompletingCharacters/CSharpCompletingCharacters/NonCompletingCharacters/@EntryValue"></s:String>
<s:String x:Key="/Default/Housekeeping/Layout/DialogWindows/RefactoringWizardWindow/Location/@EntryValue">247,-4</s:String></wpf:ResourceDictionary>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册