Beispiel #1
0
 public void Dispose()
 {
     data = null;
     rss.SetActive(false);
     flag.SetActive(false);
     Position = Vector3Int.one * -1;
     gameObject.SetActive(false);
 }
Beispiel #2
0
    private void ReleaseQuadNode(QuadNode quadNode)
    {
        ReadOnlyCollection <Vector3Int> rssClientPosition = quadNode.Points;

        //Debugger.Log("release count " + rssClientPosition.Count);
        for (int i = 0; i < rssClientPosition.Count; i++)
        {
            try
            {
                //rssClientPosition.Log(" - ");
                RSS_PositionRow rss = RSSPositionTable.GetRssAt(rssClientPosition[i].ToSerPosition());
                int             id  = rss != null ? rss.ID : -1;
                ReturnRSS(id);
            }
            catch (Exception e)
            {
                Debugger.Log(e.ToString());
            }
        }
    }
Beispiel #3
0
    public void SetResourceData(RSS_PositionRow _data, Flag group, Vector3 worldPosition)
    {
        data = _data;
        if (Data != null)
        {
            rss = transform.GetChild(Data.RssType - 1).gameObject;
            rss?.SetActive(true);

            if (group != Flag.None)
            {
                flag = transform.GetChild((int)group).gameObject;
            }
            flag?.SetActive(true);

            // parse position
            Position = Data.Position.Parse3Int().ToClientPosition();

            transform.position = worldPosition;
            LookAtCamera();
        }
    }
Beispiel #4
0
    private IEnumerator StartCreateRssWaiting()
    {
        AJPHelper.Operation oper = RSSPositionTable.Operation;
        while (!oper.IsDone)
        {
            yield return(null);
        }

        //if (!treeInited)
        //{
        //    int rssCount = RSSPositionTable.Count;
        //    for (int iter = 0; iter < rssCount; iter++)
        //    {
        //        rssPositionTree.Insert
        //            (RSSPositionTable.ReadOnlyRows[iter].Position.Parse3Int().ToClientPosition());
        //    }
        //    treeInited = true;
        //}

        if (!treeInited)
        {
            rssPositionTree.AsyncCreateTree(GetRssPositionEnumerable());
            while (!rssPositionTree.IsAsyncCreateComplete)
            {
                yield return(null);
            }
            treeInited = true;
            Debugger.Log("quad tree inited");
        }

        isCreateComplete = false;
        int count = WaitForCreate.Count;

        //int i = count - 1;

        while (WaitForCreate.Count > 0 && !isCreateComplete)
        {
            Vector3Int      pos     = WaitForCreate[WaitForCreate.Count - 1].ToSerPosition();
            RSS_PositionRow rssData = RSSPositionTable.GetRssAt(pos);
            if (rssData != null &&
                !Resources.ContainsKey(rssData.ID))
            {
                /// Using pool object for natural resource
                NaturalResource rs = RssPooling.GetItem();
                rs.gameObject.name = "Resource" + rssData.RssType.ToString() + rssData.ID;

                Vector3 worldPos = MapIns.CellToWorld(rssData.Position.Parse3Int().ToClientPosition());
                rs.SetResourceData(rssData, Flag.Owner, worldPos);
                Resources[rssData.ID] = rs;
                rs.gameObject.SetActive(true);

                //Debugger.Log("Created " + rssData.ID);
            }

            WaitForCreate.RemoveAt(WaitForCreate.Count - 1);
            //i--;
            yield return(null);
        }
        isCreateComplete = true;
        yield break;
    }