Beispiel #1
0
    /**
     * 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));
    }
Beispiel #2
0
        /**
         * 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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
    public Altitude(ROIO.Utils.MemoryStreamReader stream)
    {
        gat = AltitudeLoader.Load(stream);

        init(gat);
    }
Beispiel #5
0
    public Altitude(BinaryReader stream)
    {
        gat = AltitudeLoader.Load(stream);

        init(gat);
    }
Beispiel #6
0
    public Altitude(BinaryReader stream)
    {
        gat = AltitudeLoader.Load(stream);

        //TODO init pathfinding
    }