Ejemplo n.º 1
0
        public void SaveQuaddTreeTo(string file_tree, string file_object)
        {
            List <string> quadtree_info = new List <string>();
            List <string> object_info   = new List <string>();
            List <int>    list_id       = new List <int>();

            root.Traversal(object_info, quadtree_info, list_id);

            //Ghi file cây quadtree
            using (StreamWriter sw = new StreamWriter(file_tree, false))
            {
                sw.WriteLine(root.BOUNDS.Width.ToString());

                foreach (string node_info in quadtree_info)
                {
                    sw.WriteLine(node_info);
                }

                sw.Close();
            }

            //Ghi file đối tượng
            using (StreamWriter sw = new StreamWriter(file_object, false))
            {
                sw.WriteLine(object_info.Count.ToString());

                foreach (string o_info in object_info)
                {
                    sw.WriteLine(o_info);
                }

                sw.Close();
            }
        }
Ejemplo n.º 2
0
        public void Traversal(List <string> object_info, List <string> quadtree_info, List <int> list_id)
        {
            //Lấy thông tin node mẹ
            String parent_info = String.Format("{0} {1} {2} {3}", id, bounds.X, bounds.Y, bounds.Width);

            //Kiểm tra đệ quy các node lá
            if (top_left != null)
            {
                quadtree_info.Add(parent_info);
                top_left.Traversal(object_info, quadtree_info, list_id);
                top_right.Traversal(object_info, quadtree_info, list_id);
                bot_left.Traversal(object_info, quadtree_info, list_id);
                bot_right.Traversal(object_info, quadtree_info, list_id);
            }
            else
            {
                //Nếu là node lá cuối cùng thì lấy danh sách đối tượng.
                parent_info += " ";
                foreach (GameObject go in list_object)
                {
                    //Kiểm tra đối tượng có được thêm trước đó hay chưa
                    bool is_exist = false;

                    foreach (int o_id in list_id)
                    {
                        if (o_id == go.ID)
                        {
                            is_exist = true;
                            break;
                        }
                    }

                    //Nếu chưa duyệt qua đối tượng thì thêm ID đối tượng
                    //vào object_info
                    if (!is_exist)
                    {
                        list_id.Add(go.ID);
                        object_info.Add(go.ToString());
                    }

                    parent_info += go.ID + " ";
                }

                quadtree_info.Add(parent_info);
            }
        }