private void Start() { MainGrid = LoadLastSave ? GroundLoader.Load() : GroundLoader.Load(DefaultGridFile.text); InteractionMesh = new InteractionMesh(new Mesh()); UpdateInteractionGrid(); InteractionMeshObject.GetComponent <MeshFilter>().mesh = InteractionMesh.Mesh; BaseGridVisual.GetComponent <MeshFilter>().mesh = CloneInteractionMesh(); optionsSource = new OptionsByDesignation(VoxelBlueprints); visualsAssembler = new VoxelVisualsManager(VoxelDisplayMat, optionsSource); solver = new VisualsSolvingManager(MainGrid, optionsSource); }
private GND LoadGround(string mapname, RSW world, Action <string, string, object> callback) { string gndPath = "data/" + GetFilePath(WorldLoader.files.gnd); GND ground = FileManager.Load(gndPath) as GND; if (ground == null) { throw new Exception("Could not load gnd for " + mapname); } GND.Mesh compiledGround = GroundLoader.Compile(ground, world.water.level, world.water.waveHeight); LoadGroundTexture(world, compiledGround); Progress += 1; callback.Invoke(mapname, "MAP_GROUND", compiledGround); return(ground); }
public void Load(string mapname, Action <string, string, object> callback) { Progress = 0; // Load RSW string rswPath = "data/" + GetFilePath(mapname); RSW world = FileManager.Load(rswPath) as RSW; if (world == null) { throw new Exception("Could not load rsw for " + mapname); } // Load GAT string gatPath = "data/" + GetFilePath(WorldLoader.files.gat); Altitude altitude = FileManager.Load(gatPath) as Altitude; if (altitude == null) { throw new Exception("Could not load gat for " + mapname); } callback.Invoke(mapname, "MAP_ALTITUDE", altitude); // Load GND string gndPath = "data/" + GetFilePath(WorldLoader.files.gnd); GND ground = FileManager.Load(gndPath) as GND; if (ground == null) { throw new Exception("Could not load gnd for " + mapname); } var compiledGround = GroundLoader.Compile(ground, world.water.level, world.water.waveHeight); LoadGroundTexture(world, compiledGround); callback.Invoke(mapname, "MAP_WORLD", world); callback.Invoke(mapname, "MAP_GROUND", compiledGround); var compiledModels = LoadModels(world.modelDescriptors, ground); callback.Invoke(mapname, "MAP_MODELS", compiledModels); }
private void Update() { if (TestSave) { TestSave = false; GroundLoader.Save(MainGrid); Debug.Log("Grid Saved"); } if (TestLoad) { TestLoad = false; MainGrid = GroundLoader.Load(); Debug.Log("Grid Loaded"); } if (solver.ChangedVoxels != null) { UpdateChangedVoxels(); } visualsAssembler.ConstantlyUpdateComponentTransforms(); }
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); }
private static object DoLoad(string file, string ext) { //string fileWOExt = file.Replace("." + ext, ""); switch (ext) { case "grf": return(File.OpenRead(file)); // Regular images files case "jpg": case "jpeg": case "png": using (var br = ReadSync(file)) { return(new RawImage() { data = br.ToArray() }); } case "bmp": using (var br = ReadSync(file)) return(loader.LoadBMP(br)); case "tga": using (var br = ReadSync(file)) return(TGALoader.LoadTGA(br)); // Texts case "txt": case "xml": case "lua": using (var br = ReadSync(file)) { if (br != null) { return(Encoding.UTF8.GetString(br.ToArray())); } else { return(null); } } case "spr": using (var br = ReadSync(file)) { if (br != null) { SPR spr = SpriteLoader.Load(br); spr.SwitchToRGBA(); spr.Compile(); spr.filename = file; return(spr); } else { return(null); } } case "str": using (var br = ReadSync(file)) { if (br != null) { STR str = EffectLoader.Load(br); return(str); } else { return(null); } } // Binary case "gat": using (var br = ReadSync(file)) return(new Altitude(br)); case "rsw": using (var br = ReadSync(file)) return(WorldLoader.Load(br)); case "gnd": using (var br = ReadSync(file)) return(GroundLoader.Load(br)); case "rsm": using (var br = ReadSync(file)) return(ModelLoader.Load(br)); // Audio case "wav": using (var br = ReadSync(file)) { 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": case "act": //return new Action(ReadSync(file)).compile(); Debug.LogWarning("Can't read " + file + "\nLoader for " + ext + " is not implemented"); break; default: throw new System.Exception("Unknown file format: " + file); } return(null); }