コード例 #1
0
        public NEData Get(object key)
        {
            NEData data = null;

            m_dicData.TryGetValue(key, out data);
            return(data);
        }
コード例 #2
0
        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();
        }
コード例 #3
0
 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]);
         }
     }
 }
コード例 #4
0
ファイル: NETreeWindow.cs プロジェクト: 353162889/NodeEditor
        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);
            }
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
            }
        }
コード例 #10
0
        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);
        }
コード例 #11
0
        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!");
            }
        }