Esempio n. 1
0
    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);
 }
Esempio n. 3
0
    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;
        }
    }
Esempio n. 4
0
    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;
        }
    }
Esempio n. 5
0
    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;
        }
    }
Esempio n. 6
0
    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);
        }
        //}
    }
Esempio n. 7
0
    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);
    }
Esempio n. 8
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);
    }
Esempio n. 9
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);
    }
Esempio n. 10
0
 public AreaRequestResult(AreaRequest request, AreaIndex result, string filepath)
 {
     _request  = request;
     _result   = result;
     _filepath = filepath;
 }
Esempio n. 11
0
 public SaveAreaRequest(AreaIndex area, string filename)
 {
     this.area     = area;
     this.filename = filename;
 }