public int GetInt(int x, int y, IntDataID id) { if (AreCoordinatesInvalid(x, y)) { return(1); } PixelInformation info = GetPixelInformation(x, y); if (IsPixelInformationInvalid(info)) { Debug.LogWarning("THigns went BAD " + info); } AreaIndex area = null; try { area = _areas[info.areaX, info.areaY]; } catch (Exception e) { Debug.LogWarning("THigns went BAD " + e); info = GetPixelInformation(x, y); } switch (id) { case IntDataID.NoiseLayerData: return(area.DataLayer.NoiseLayerData.data[info.areaPixelX, info.areaPixelY]); } return(0); }
protected override void DumpArgs(TextWriter writer) { writer.Write(' '); writer.Write(AreaIndex.ToHex()); writer.Write(' '); writer.Write(X); writer.Write(' '); writer.Write(Y); writer.Write(' '); writer.Write(Width); writer.Write(' '); writer.Write(Height); }
public void SetByte(int x, int y, byte value, ByteDataLyerID id) { PixelInformation info = GetPixelInformation(x, y); AreaIndex area = _areas[info.areaX, info.areaY]; switch (id) { case ByteDataLyerID.WaterLayerData: area.DataLayer.WaterLayerData.data[info.areaPixelX, info.areaPixelY] = value; break; } }
public void SetInt(int x, int y, int value, IntDataID id) { PixelInformation info = GetPixelInformation(x, y); AreaIndex area = _areas[info.areaX, info.areaY]; switch (id) { case IntDataID.NoiseLayerData: area.DataLayer.NoiseLayerData.data[info.areaPixelX, info.areaPixelY] = value; break; } }
public void SetUshort(int x, int y, ushort value, UshortDataID id) { PixelInformation info = GetPixelInformation(x, y); AreaIndex area = _areas[info.areaX, info.areaY]; switch (id) { case UshortDataID.HeightLayerData: area.DataLayer.HeightLayerData.data[info.areaPixelX, info.areaPixelY] = value; break; } }
protected override void ThreadFunction() { IsRunning = true; //while (IsRunning) //{ try { bool hasRequest = _loadedAreasRequests.Count != 0; if (hasRequest) { _loadedAreasRequests.ForEach((loadedArea) => { AreaIndex areaIndex = null; if (File.Exists(GetFilePath(loadedArea))) { string allfilesString = string.Empty; FileStream areaFileStream = File.Open(GetFilePath(loadedArea), FileMode.OpenOrCreate); areaIndex = (AreaIndex)bf.Deserialize(areaFileStream); areaFileStream.Close(); allfilesString = string.Empty; } else { Debug.LogErrorFormat("File does not exist {0}", GetFilePath(loadedArea)); } loadedArea.SetResult(new AreaRequestResult(loadedArea.Request, areaIndex, GetFilePath(loadedArea))); Thread.Sleep(100); }); } } catch (Exception e) { Debug.LogError("Error while loading area files: \n" + e); throw; } _loadedAreasRequests.Clear(); if (OnComplete != null) { OnComplete(this); } //} }
public ushort GetUshort(int x, int y, UshortDataID id) { if (AreCoordinatesInvalid(x, y)) { return(1); } PixelInformation info = GetPixelInformation(x, y); if (IsPixelInformationInvalid(info)) { Debug.LogWarning("Thigns went BAD " + info); } AreaIndex area = _areas[info.areaX, info.areaY]; switch (id) { case UshortDataID.HeightLayerData: return(area.DataLayer.HeightLayerData.data[info.areaPixelX, info.areaPixelY]); } return(0); }
public byte GetByte(int x, int y, ByteDataLyerID id) { if (AreCoordinatesInvalid(x, y)) { return(1); } PixelInformation info = GetPixelInformation(x, y); if (IsPixelInformationInvalid(info)) { Debug.LogWarning("THigns went BAD " + info); } AreaIndex area = _areas[info.areaX, info.areaY]; switch (id) { case ByteDataLyerID.WaterLayerData: return(area.DataLayer.WaterLayerData.data[info.areaPixelX, info.areaPixelY]); } return(0); }
public WorldIndex Generate(string persistentDataPath) { SharpSerializer serializer = new SharpSerializer(); WorldIndex index = new WorldIndex(); index.Dimensions = _dimensions; index.AreaFilenameFormatSource = _dataConfig.AreaFilenameFormatSource; index.AreaRelativeDirectory = _dataConfig.AreaDataRelativeDirectory; index.FileDataExtension = _dataConfig.DataFileExtensions; index.Version = _dataConfig.Version; index.SerializationType = _dataConfig.AreaSerializationType; index.AreaDimensions = _dataConfig.AreaDimensions; string worldDirectory = string.Join(DataConfig.DirectoryDelimiter, new string[] { persistentDataPath, _dataConfig.GetRelativeWorldIndexPath(_uid) }); string areaDirectory = string.Join(DataConfig.DirectoryDelimiter, new string[] { worldDirectory, _dataConfig.AreaDataRelativeDirectory }); string indexFilePath = string.Join(DataConfig.DirectoryDelimiter, new string[] { worldDirectory, _dataConfig.IndexFilename }); int areaDimensions = _dataConfig.AreaDimensions; Debug.Log("Saving World to " + indexFilePath); Directory.CreateDirectory(worldDirectory); Directory.CreateDirectory(areaDirectory); FileStream fileStream = File.Open(indexFilePath, FileMode.CreateNew); using (var stream = fileStream) { serializer.Serialize(index, fileStream); } int horizontalAreaCount = _dimensions.Width / areaDimensions; int verticalAreaCount = _dimensions.Width / areaDimensions; for (int i = 0; i < horizontalAreaCount; i++) { for (int j = 0; j < horizontalAreaCount; j++) { AreaIndex area = new AreaIndex(); area.DataLayer = new DataLayer(); area.DataLayer.NoiseLayerData = _cloudLayer.GenerateData(_dimensions, areaDimensions, i, j); area.DataLayer.WaterLayerData = _waterLayer.GenerateData(_dimensions, areaDimensions, i, j); area.DataLayer.HeightLayerData = _heightLayer.GenerateData(_dimensions, areaDimensions, i, j); string filename = string.Format(_dataConfig.AreaFilenameFormatSource, i, j, _dataConfig.DataFileExtensions); FileStream areaFileStream = File.Open(String.Join(DataConfig.DirectoryDelimiter, new string[] { areaDirectory, filename }), FileMode.CreateNew); switch (_dataConfig.AreaSerializationType) { case SerializationType.Binary: BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(areaFileStream, area); break; case SerializationType.SharpSerializer: using (var stream = areaFileStream) { serializer.Serialize(area, areaFileStream); } break; } areaFileStream.Close(); } } return(index); }
public AreaRequestResult(AreaRequest request, AreaIndex result, string filepath) { _request = request; _result = result; _filepath = filepath; }
public SaveAreaRequest(AreaIndex area, string filename) { this.area = area; this.filename = filename; }