/** * Zmena souřadnice y pro vykreslení střechy budovy, přičtení výšky terénu k výšce budovy */ private List <Vector3> GetRoofEdges(ThreeDimObject threeDimObject) { var localCoordinates = threeDimObject.XyzCoordinates; var buildingHeight = threeDimObject.Height * BuildingFloorHeight; var roofEdges = new List <Vector3>(); foreach (var localCoordinate in localCoordinates) { var v = localCoordinate; v.y = TerrainHeight + buildingHeight; roofEdges.Add(v); } return(roofEdges); }
/** * Add previously added/removed buildings into array for writing to the new save file */ private void PrepareSavedObjectsForFutureSave() { if (Map == null || Map.AddedCustomObjects == null) { return; } foreach (var customObject in Map.AddedCustomObjects) { AddedObjects.Add(customObject); } foreach (var removedMapObject in Map.RemovedMapObjects) { var threeDimObject = new ThreeDimObject(removedMapObject.Position); RemovedObjects.Add(threeDimObject); } }
/** * Pokud je objekt v savu oznacen jako zniceny, tak jej nepridavat do mapy */ private bool IsObjectDestroyed(ThreeDimObject threeDimObject) { if (Main.Map.RemovedMapObjects == null || Main.Map.RemovedMapObjects.Length == 0) { return(false); } foreach (var removedMapObject in Main.Map.RemovedMapObjects) { if (removedMapObject.Position.All(threeDimObject.XyzCoordinates.Contains) && removedMapObject.Position.Count == threeDimObject.XyzCoordinates.Count) { return(true); } } return(false); }
/** * */ public static List <ThreeDimObject> GetBuildingsInXyz(List <BuildingObject> buildings) { var threeDimObjects = new List <ThreeDimObject>(); foreach (var building in buildings) { var xyzCoordinates = new List <Vector3>(); foreach (var latLng in building.LatLngCoordinates) { xyzCoordinates.Add(ConvertLatLngToXyz(latLng)); } var threeDimObject = new ThreeDimObject(xyzCoordinates, building.BuildingHeight, building.AddressObject); threeDimObjects.Add(threeDimObject); } return(threeDimObjects); }
/** * Změna Y souřadnice stěn na hodnotu výšky terénu */ private List <Vector3> GetGroundEdges(ThreeDimObject threeDimObject) { TerrainHeight = TerrainUtils.MapTopValue + 1f; var biggestTerrainHeight = 0f; var localCoordinates = threeDimObject.XyzCoordinates; foreach (var localCoordinate in localCoordinates) { var tempHeight = TerrainRender.Get().Terrain.SampleHeight(localCoordinate); //get biggest terrain height if (tempHeight > biggestTerrainHeight) { biggestTerrainHeight = tempHeight; } //get lowest terrain height if (tempHeight < TerrainHeight) { TerrainHeight = tempHeight; } } //no coordinates, set default value if (TerrainHeight == TerrainUtils.MapTopValue + 1f) { TerrainHeight = 0f; } var groundEdges = new List <Vector3>(); foreach (var localCoordinate in localCoordinates) { var v = localCoordinate; v.y = TerrainHeight; groundEdges.Add(v); } //save biggest terrain height for roof edges TerrainHeight = biggestTerrainHeight; return(groundEdges); }