Beispiel #1
0
        /**
         * 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);
        }
Beispiel #2
0
    /**
     * 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);
        }
    }
Beispiel #3
0
        /**
         * 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);
        }
Beispiel #4
0
        /**
         *
         */
        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);
        }
Beispiel #5
0
        /**
         * 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);
        }