Beispiel #1
0
        public override void Display(int minX, int maxX, int minY, int maxY, TerrainPositionsFromCameraBoundaries terrainPositionsFromCameraBoundaries)
        {
            GameObject go;

            foreach (Building building in _buildingList.Buildings)
            {
                if (terrainPositionsFromCameraBoundaries.IsInsidePolygon(building.Position2D))
                {
                    //object is not displayed yet
                    if (!building.BuildingObjectPoolingComponent)
                    {
                        go = _objectPoolerManager.SpawnFromPool(
                            Prefix + building.BuildingType,
                            building.Position,
                            building.Rotation
                            );

                        building.BuildingObjectPoolingComponent = go.GetComponent <BuildingObjectPoolingComponent>();
                    }
                }
                else
                {
                    //hide object
                    if (building.BuildingObjectPoolingComponent)
                    {
                        _objectPoolerManager.ReleaseBackToPool(Prefix + building.BuildingType, building.BuildingObjectPoolingComponent.gameObject);

                        building.BuildingObjectPoolingComponent = null;
                    }
                }
            }
        }
        public override void Display(int minX, int maxX, int minY, int maxY, TerrainPositionsFromCameraBoundaries terrainPositionsFromCameraBoundaries)
        {
            GameObject go;

            foreach (Person person in _personList.People)
            {
                if (terrainPositionsFromCameraBoundaries.IsInsidePolygon(person.Position2D))
                {
                    //object is not displayed yet
                    if (!person.PersonObjectPoolingComponent)
                    {
                        go = _objectPoolerManager.SpawnFromPool(
                            Prefix + person.PersonType,
                            person.Position,
                            person.Rotation
                            );

                        person.PersonObjectPoolingComponent = go.GetComponent <PersonObjectPoolingComponent>();
                        person.PersonObjectPoolingComponent.SetPerson(person);
                    }
                }
                else
                {
                    //hide object
                    if (person.PersonObjectPoolingComponent)
                    {
                        _objectPoolerManager.ReleaseBackToPool(Prefix + person.PersonType, person.PersonObjectPoolingComponent.gameObject);

                        person.PersonObjectPoolingComponent.UnsetPerson();
                        person.PersonObjectPoolingComponent = null;
                    }
                }
            }
        }
Beispiel #3
0
        public TerrainPositionsFromCameraBoundaries Get(int margin = 0)
        {
            TerrainPositionsFromCameraBoundaries terrainPositions = new TerrainPositionsFromCameraBoundaries(
                _terrainHitter.Hit(_cameraComponent.ScreenPointToRay(new Vector2(0 - margin, 0 - margin))),
                _terrainHitter.Hit(_cameraComponent.ScreenPointToRay(new Vector2(Screen.width + margin, 0 - margin))),
                _terrainHitter.Hit(_cameraComponent.ScreenPointToRay(new Vector2(0 - margin, Screen.height + margin))),
                _terrainHitter.Hit(_cameraComponent.ScreenPointToRay(new Vector2(Screen.width + margin, Screen.height + margin)))
                );

            return(terrainPositions);
        }
        private void DisplayOne(IBuilding building, TerrainPositionsFromCameraBoundaries terrainPositions)
        {
            GameObject go;

            if (terrainPositions.IsInsidePolygon(building.Position2D))
            {
                //object is not displayed yet
                if (!building.BuildingConfigurator)
                {
                    go = _objectPoolerManager.SpawnFromPool(
                        Prefix + building.BuildingType,
                        building.Position,
                        Quaternion.Euler(0, building.Rotation * 90f, 0)
                        );

                    building.BuildingConfigurator = go.GetComponent <BuildingConfigurator>();

                    if (building is IWall wall)
                    {
                        wall.WallConfigurator = go.GetComponent <WallConfigurator>();
                        wall.WallConfigurator.SetWall(wall);
                        _wallSidesUpdater.Update(wall);
                    }
                }
                else
                {
                    if (building is IWall wall)
                    {
                        //it can be enabled to make code more efficient
                        //if (_mapLayersLastUpdate != _wallSidesUpdater.GetLayersLastChangedDate())
                        {
                            _wallSidesUpdater.Update(wall);
                        }
                    }
                }
            }
            else
            {
                //hide object
                if (building.BuildingConfigurator)
                {
                    _objectPoolerManager.ReleaseBackToPool(Prefix + building.BuildingType, building.BuildingConfigurator.gameObject);
                    building.BuildingConfigurator = null;
                }
            }
        }
        public override void Display(int minX, int maxX, int minY, int maxY, TerrainPositionsFromCameraBoundaries terrainPositionsFromCameraBoundaries)
        {
            if (_buildingList.BuildingsEditorPreview != null)
            {
                DisplayOne(_buildingList.BuildingsEditorPreview, terrainPositionsFromCameraBoundaries);
            }

            foreach (IBuilding building in _buildingList.Buildings)
            {
                DisplayOne(building, terrainPositionsFromCameraBoundaries);
            }

            foreach (IBuilding building in _buildingList.BuildingsEditor)
            {
                DisplayOne(building, terrainPositionsFromCameraBoundaries);
            }
        }
Beispiel #6
0
 public abstract void Display(int minX, int maxX, int minY, int maxY, TerrainPositionsFromCameraBoundaries terrainPositionsFromCameraBoundaries);