예제 #1
0
    //创建物体
    public static void SelectDB(AbstractMap _mapController)
    {
        using (var db = new LiteDB.LiteDatabase(Path.Combine(Application.streamingAssetsPath, "mylitedb.db")))
        {
            var placements = db.GetCollection <Placement>("placements");
            var result     = placements.FindAll();

            foreach (var VARIABLE in result)
            {
                Debug.Log(VARIABLE.Name);
                string[]        l               = SplitStr(VARIABLE.Latlon);
                string[]        r               = SplitStr(VARIABLE.Rotation);
                string[]        s               = SplitStr(VARIABLE.Scale);
                Vector2d        v2D             = new Vector2d(Convert.ToDouble(l[0]), Convert.ToDouble(l[1]));
                Vector3         rotation        = new Vector3(Convert.ToSingle(r[0]), Convert.ToSingle(r[1]), Convert.ToSingle(r[2]));
                Vector3         scale           = new Vector3(Convert.ToSingle(s[0]), Convert.ToSingle(s[1]), Convert.ToSingle(s[2]));
                PlaceMentSerial placeMentSerial = new PlaceMentSerial()
                {
                    Name     = VARIABLE.Name,
                    Latlon   = v2D,
                    Rotation = rotation,
                    Scale    = scale
                };

                PutObj.CreateBuildMap(_mapController, VARIABLE.Name, v2D, rotation, scale);
                Debug.Log(MapData.Placements);
                MapData.Placements.Add(placeMentSerial);
                foreach (var VARIABLE1 in MapData.Placements)
                {
                    Debug.Log(VARIABLE1.Name);
                    Debug.Log(VARIABLE1.Rotation);
                    Debug.Log(VARIABLE1.Scale);
                }
            }
        }
    }
예제 #2
0
    void Update()
    {
        if (isLoad)
        {
            if (_mapController.AbsoluteZoom == 16)
            {
                if (i != _mapController.AbsoluteZoom)
                {
                    foreach (var item in towers)
                    {
                        Destroy(ActivetowerList.Find((GameObject s) => s.GetComponent <TowerID>().id == item.id));
                        ActivetowerList.Remove(ActivetowerList.Find((GameObject s) =>
                                                                    s.GetComponent <TowerID>().id == item.id));
                    }
                }
                i = _mapController.AbsoluteZoom;
                foreach (var item in towers)
                {
                    Vector2d r = Conversions.LatitudeLongitudeToTileId(item.latlon.x, item.latlon.y,
                                                                       _mapController.AbsoluteZoom);


                    bool flag = true;
                    foreach (var VARIABLE in ActivetowerList)
                    {
                        if (VARIABLE.GetComponent <TowerID>().id == item.id)
                        {
                            flag = false;
                        }
                    }
                    foreach (var item1 in transform.GetComponentsInChildren <Transform>())
                    {
                        if (item1.GetComponent <MeshCollider>() == null)
                        {
                            if (item1.tag == "Tile")
                            {
                                item1.gameObject.AddComponent <MeshCollider>();
                            }
                        }
                    }
                    if (_mapController.MapVisualizer.ActiveTiles.ContainsKey(new UnwrappedTileId(_mapController.AbsoluteZoom,
                                                                                                 (int)r.x,
                                                                                                 (int)r.y)) && flag)
                    {
                        Debug.Log("在范围内实例化");
                        //在范围内实例化
                        GameObject go;
                        StartCoroutine(WaiforTower());
                        if (item.type == "NZT")
                        {
                            go = PutObj.CreateBuildMap(_mapController, "nzt",
                                                       item.latlon, _mapController.AbsoluteZoom);
                        }
                        else
                        {
                            go = PutObj.CreateBuildMap(_mapController, "zxt",
                                                       item.latlon, _mapController.AbsoluteZoom);
                        }
                        go.AddComponent <TowerID>().id         = item.id;
                        go.GetComponent <TowerID>().towerId    = item.towerId;
                        go.GetComponent <TowerID>().towerState = item.towerState;
                        go.GetComponent <TowerID>().jichu      = item.jichu;
                        go.GetComponent <TowerID>().zuta       = item.zuta;
                        go.GetComponent <TowerID>().jiaxian    = item.jiaxian;
                        ActivetowerList.Add(go);
                    }

                    if (!_mapController.MapVisualizer.ActiveTiles.ContainsKey(new UnwrappedTileId(_mapController.AbsoluteZoom,
                                                                                                  (int)r.x,
                                                                                                  (int)r.y)) && !flag)
                    {
                        Debug.Log("不在范围内,删除");

                        Destroy(ActivetowerList.Find((GameObject s) => s.GetComponent <TowerID>().id == item.id));
                        ActivetowerList.Remove(ActivetowerList.Find((GameObject s) =>
                                                                    s.GetComponent <TowerID>().id == item.id));
                        //删除不在范围内的hudUI
                        //Destroy(HUDController.Instance.UHD_UIList.Find((GameObject s) => s.GetComponent<CircleItem>().HUD_ID == item.id));
                        //HUDController.Instance.UHD_UIList.Remove(HUDController.Instance.UHD_UIList.Find((GameObject s) =>
                        // s.GetComponent<CircleItem>().HUD_ID == item.id));
                    }
                }
            }
            else
            {
                foreach (var item in towers)
                {
                    Destroy(ActivetowerList.Find((GameObject s) => s.GetComponent <TowerID>().id == item.id));
                    ActivetowerList.Remove(ActivetowerList.Find((GameObject s) =>
                                                                s.GetComponent <TowerID>().id == item.id));
                }
            }
        }
    }