/** * Parse file and render buildings when scene starts */ private void Start() { Caching.ClearCache(); //hide and lock cursor into center UiUtils.HideCursor(); TutorialUtils.InitTutorial(TutorialCanvas, Settings); BuildingPickerCanvas.SetActive(false); ExitCanvasDialog.SetActive(false); //load XML file tags var xmlFile = new XmlDocument(); //load file xmlFile.Load(FileUtils.GetFullMapPath(Map.MapName)); //get node and way tags var nodeTags = xmlFile.SelectNodes(".//node"); var wayTags = xmlFile.SelectNodes(".//way"); //cache IDs in node tag for coordinate pairing var nodeTagIds = CacheNodeTagIds(nodeTags); //parse building and roads var buildings = BuildingLoader.Get().LoadFile(nodeTags, nodeTagIds, wayTags); var roads = RoadLoader.Get().LoadFile(nodeTags, nodeTagIds, wayTags); var trees = TreeLoader.Get().LoadFile(); var mapMiddlePoint = GetMiddlePoint(buildings, roads); //download elevation data AltitudeLoader.Get().SetAltitude(TerrainUtils.GetLatLngGrid(mapMiddlePoint)); //render terrain, buildings, roads etc. StartCoroutine(RenderObjects(mapMiddlePoint, buildings, roads, trees)); }
/** * Transform ElevationAPI data into terrain heights */ private float[,] ConvertHeights() { var heights = AltitudeLoader.Get().AltitudeData; var convertedHeights = new float[TerrainUtils.MapWidth, TerrainUtils.MapHeight]; var maxValue = heights.Max(x => x.Elevation); var minValue = heights.Min(y => y.Elevation); var heightsIndex = 0; for (var i = 0; i < TerrainUtils.MapWidth; i++) { for (var j = 0; j < TerrainUtils.MapHeight; j++) { //creating of terrain edges if (i == 0 || j == 0 || i == TerrainUtils.MapWidth - 1 || j == TerrainUtils.MapWidth - 1) { convertedHeights[i, j] = 0; } else { convertedHeights[i, j] = (heights[heightsIndex].Elevation - minValue) / (maxValue - minValue); } ++heightsIndex; } } return(convertedHeights); }
private static object DoLoad(string file, string ext) { if (ext == "grf") { return(File.OpenRead(file)); } else { using (var br = ReadSync(file)) { if (br == null) { throw new Exception($"Could not load file: {file}"); } switch (ext) { // Images case "jpg": case "jpeg": case "png": return(new RawImage() { data = br.ToArray() }); case "bmp": return(loader.LoadBMP(br)); case "tga": return(TGALoader.LoadTGA(br)); // Text case "txt": case "xml": case "lua": return(Encoding.UTF8.GetString(br.ToArray())); case "spr": SPR spr = SpriteLoader.Load(br); spr.SwitchToRGBA(); spr.Compile(); spr.filename = file; return(spr); case "str": return(EffectLoader.Load(br, Path.GetDirectoryName(file).Replace("\\", "/"))); case "act": return(ActionLoader.Load(br)); // Binary case "gat": return(AltitudeLoader.Load(br)); case "rsw": return(WorldLoader.Load(br)); case "gnd": return(GroundLoader.Load(br)); case "rsm": return(ModelLoader.Load(br)); // Audio case "wav": WAVLoader.WAVFile wav = WAVLoader.OpenWAV(br.ToArray()); AudioClip clip = AudioClip.Create(file, wav.samples, wav.channels, wav.sampleRate, false); clip.SetData(wav.leftChannel, 0); return(clip); case "mp3": case "ogg": break; case "json": return(JObject.Parse(Encoding.UTF8.GetString(br.ToArray()))); default: throw new Exception($"Unsuported file format: {ext} for file {file}"); } } } return(null); }
public Altitude(ROIO.Utils.MemoryStreamReader stream) { gat = AltitudeLoader.Load(stream); init(gat); }
public Altitude(BinaryReader stream) { gat = AltitudeLoader.Load(stream); init(gat); }
public Altitude(BinaryReader stream) { gat = AltitudeLoader.Load(stream); //TODO init pathfinding }