public NEData Get(object key) { NEData data = null; m_dicData.TryGetValue(key, out data); return(data); }
private void SaveTreeToTreeData() { if (m_nTreeComposeIndex < 0 || m_nTreeComposeIndex > NEConfig.arrTreeComposeData.Length) { Debug.Log("需要选择树的类型"); return; } var composeData = NEConfig.arrTreeComposeData[m_nTreeComposeIndex]; NEData data = GetCurrentTreeNEData(); if (data == null) { Debug.Log("没有树数据"); return; } string dir = composeData.fileDir; if (dir.StartsWith("Assets")) { dir = dir.Replace("Assets", ""); } string path = EditorUtility.SaveFilePanel("保存数据", Application.dataPath + dir, "", composeData.fileExt); if (path.Length != 0) { NEUtil.SerializerObject(path, data, m_lstNodeDataType.ToArray()); } AssetDatabase.Refresh(); }
private void DebugNEData(NEData neData) { Debug.Log(neData.editorPos + "," + neData.data.GetType()); if (neData.lstChild != null) { for (int i = 0; i < neData.lstChild.Count; i++) { DebugNEData(neData.lstChild[i]); } } }
private void LoadTreeByTreeData() { string path = EditorUtility.OpenFilePanel("加载数据", Application.dataPath, "bytes"); if (path.Length != 0) { //通过前后缀确定当前数据是哪种类型,需要先切换到当前类型,在加载数据,否则数据有可能不对 NEData neData = NEUtil.DeSerializerObject(path, typeof(NEData), m_lstNodeDataType.ToArray()) as NEData; CreateTreeByTreeData(neData); } }
private NEData GetCurrentTreeNEData() { if (m_cRoot == null) { return(null); } var lstConnection = m_cCanvas.lstConnection; List <NENode> handNodes = new List <NENode>(); NEData neData = GetNodeNEData(m_cRoot, lstConnection, handNodes); return(neData); }
private NENode CreateNENode(NEData neData) { if (neData.data == null) { Debug.LogError("neData.data == null"); return(null); } object neNode = CreateNENodeByData(neData.data); NENode parentNode = m_cCanvas.CreateNode(neData.editorPos, neNode); if (neData.lstChild != null) { for (int i = 0; i < neData.lstChild.Count; i++) { NENode childNode = CreateNENode(neData.lstChild[i]); NEConnection connection = m_cCanvas.CreateConnect(parentNode, childNode); } } return(parentNode); }
private NEData GetNodeNEData(NENode node, List <NEConnection> lst, List <NENode> handNodes) { if (handNodes.Contains(node)) { Debug.LogError("树的连线进入死循环,节点=" + node.node.GetType()); return(null); } handNodes.Add(node); INENode neNode = node.node as INENode; NEData neData = new NEData(); neData.data = neNode.data; neData.editorPos = node.rect.center; List <NENode> lstSubNode = new List <NENode>(); for (int i = 0; i < lst.Count; i++) { NEConnection connection = lst[i]; if (connection.outPoint.node == node) { NENode childNode = connection.inPoint.node; lstSubNode.Add(childNode); } } lstSubNode.Sort(NodeSort); for (int i = 0; i < lstSubNode.Count; i++) { NENode childNode = lstSubNode[i]; NEData childNEData = GetNodeNEData(childNode, lst, handNodes); if (neData.lstChild == null) { neData.lstChild = new List <NEData>(); } neData.lstChild.Add(childNEData); } return(neData); }
private void Load(NETreeComposeType conposeType) { NEData neData = null; if (m_cRoot != null) { foreach (var item in NEConfig.arrTreeComposeData) { if (item.rootType == m_cRoot.node.GetType()) { if (item == conposeType) { neData = GetCurrentTreeNEData(); } break; } } m_cRoot = null; } NEUtil.LoadTreeComposeTypes(conposeType, out m_lstNodeType, out m_lstNodeDataType); //移除根节点 List <Type> lst = new List <Type>(); for (int i = 0; i < m_lstNodeType.Count; i++) { if (!IsRootType(m_lstNodeType[i])) { lst.Add(m_lstNodeType[i]); } } if (m_cCanvas != null) { m_cCanvas.Dispose(); } m_cCanvas = new NECanvas(lst, CreateNENodeByNENodeType); CreateTreeByTreeData(neData); }
private void LoadTreeByTreeData() { if (m_nTreeComposeIndex < 0 || m_nTreeComposeIndex > NEConfig.arrTreeComposeData.Length) { Debug.Log("需要选择树的类型"); return; } var composeData = NEConfig.arrTreeComposeData[m_nTreeComposeIndex]; string dir = composeData.fileDir; if (dir.StartsWith("Assets")) { dir = dir.Replace("Assets", ""); } string path = EditorUtility.OpenFilePanel("加载数据", Application.dataPath + dir, composeData.fileExt); if (path.Length != 0) { //通过前后缀确定当前数据是哪种类型,需要先切换到当前类型,在加载数据,否则数据有可能不对 NEData neData = NEUtil.DeSerializerObject(path, typeof(NEData), m_lstNodeDataType.ToArray()) as NEData; CreateTreeByTreeData(neData); } }
private NENode CreateTreeByTreeData(NEData neData) { if (m_cCanvas != null) { m_cCanvas.Clear(); } NENode node = null; if (neData == null) { var composeData = NEConfig.arrTreeComposeData[m_nTreeComposeIndex]; object data = CreateNENodeByNENodeType(composeData.rootType); Vector2 center = m_cCanvas.scrollViewRect.center; node = m_cCanvas.CreateNode(center, data); } else { node = CreateNENode(neData); } m_cRoot = node; FocusCanvasCenterPosition(); return(node); }
private void ParseData(string path, byte[] bytesData) { NEData neData = NEUtil.DeSerializerObjectFromBuff(bytesData, typeof(NEData), m_arrParseTypes) as NEData; Type type = neData.data.GetType(); FieldInfo[] fields = type.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.FlattenHierarchy); bool hasPropertyKey = false; foreach (var item in fields) { if (item.GetCustomAttributes(typeof(NEPropertyKeyAttribute), true).Length > 0) { object key = item.GetValue(neData.data); m_dicData.Add(key, neData); hasPropertyKey = true; break; } } if (!hasPropertyKey) { CLog.LogError(neData.data.GetType() + " can not find NEPropertyKeyAttribute!"); } }