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; } } } }
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; } } }