Beispiel #1
0
        public override void DoWork(float dt)
        {
            // Remove Last Added Elements
            while (lastAdded > 0)
            {
                queue.Dequeue();
                lastAdded--;
            }

            lastAdded = 0;
            for (int xi = xs; xi < xe; xi++)
            {
                for (int y = 0; y < cg.numCells.Y; y++)
                {
                    var        ae = cg.EDynamic[xi, y];
                    SeenEntity se = new SeenEntity();
                    se.GridPos.X  = xi;
                    se.GridPos.Y  = y;
                    se.IsBuilding = false;
                    se.TeamIndex  = -1;
                    bool use = false;

                    // Check For Units
                    if (ae != null)
                    {
                        for (int i = 0; i < ae.Count; i++)
                        {
                            se.TeamIndex = ae[i].Team.Index;
                            use          = true;
                            // Enemy Trumps Friendly Visuals
                            if (ae[i].Team != team)
                            {
                                break;
                            }
                        }
                    }

                    // Building Overrides Units
                    if (cg.EStatic[xi, y] != null)
                    {
                        se.TeamIndex  = cg.EStatic[xi, y].Team.Index;
                        se.IsBuilding = true;
                        use           = true;
                    }

                    // Add The Seen Entity
                    if (use)
                    {
                        queue.Enqueue(se);
                        lastAdded++;
                    }
                }
            }
        }
Beispiel #2
0
        public override void DoWork(float dt)
        {
            // Remove Last Added Elements
            while(lastAdded > 0) {
                queue.Dequeue();
                lastAdded--;
            }

            lastAdded = 0;
            for(int xi = xs; xi < xe; xi++) {
                for(int y = 0; y < cg.numCells.Y; y++) {
                    var ae = cg.EDynamic[xi, y];
                    SeenEntity se = new SeenEntity();
                    se.GridPos.X = xi;
                    se.GridPos.Y = y;
                    se.IsBuilding = false;
                    se.TeamIndex = -1;
                    bool use = false;

                    // Check For Units
                    if(ae != null) {
                        for(int i = 0; i < ae.Count; i++) {
                            se.TeamIndex = ae[i].Team.Index;
                            use = true;
                            // Enemy Trumps Friendly Visuals
                            if(ae[i].Team != team) break;
                        }
                    }

                    // Building Overrides Units
                    if(cg.EStatic[xi, y] != null) {
                        se.TeamIndex = cg.EStatic[xi, y].Team.Index;
                        se.IsBuilding = true;
                        use = true;
                    }

                    // Add The Seen Entity
                    if(use) {
                        queue.Enqueue(se);
                        lastAdded++;
                    }
                }
            }
        }