예제 #1
0
    private static GridData ParseBin(BinaryReader br, GridData grid)
    {
        // Read header
        ParseBinHeader(br, grid);

        grid.minValue = br.ReadSingle();
        grid.maxValue = br.ReadSingle();
        grid.countX   = br.ReadInt32();
        grid.countY   = br.ReadInt32();
        grid.units    = br.ReadString();
        grid.coloring = (GridData.Coloring)br.ReadByte();

        // Read Metadata (if available)
        grid.metadata = PatchDataIO.ReadBinMetadata(br);

        // Read Categories (if available)
        if (grid.categories != null)
        {
            ReadBinCategories(br, grid);
            if (grid.categories[0].name.EqualsIgnoreCase("None"))
            {
                grid.categoryMask &= ~1u;
            }
        }

        // Allocate grid memory
        grid.InitGridValues();

        byte[] bytes = null;

        // Read values
        bytes = ReadArray(br, bytes, grid.values, 4);

        // Read value masks
        bytes = ReadArray(br, bytes, grid.valuesMask);

        // Read distribution values
        var count = br.ReadByte();

        int[] distributionValues = new int[count];
        bytes = ReadArray(br, bytes, distributionValues, 4);

        // Read max distribution value
        int maxDistributionValue = br.ReadInt32();

        grid.SetDistribution(distributionValues, maxDistributionValue);

        return(grid);
    }
예제 #2
0
    public static void ParseBinProperties(BinaryReader br, MultiGridData multigrid)
    {
        // Read Metadata (if available)
        multigrid.metadata = PatchDataIO.ReadBinMetadata(br);

        // Read coloring
        multigrid.coloring = (GridData.Coloring)br.ReadByte();

        // Read categories (without values)
        int gridCount = br.ReadInt32();

        if (gridCount > 0)
        {
            multigrid.categories = new GridCategory[gridCount];
            for (int i = 0; i < gridCount; i++)
            {
                multigrid.categories[i] = new GridCategory(br.ReadString(), null, Color.white);
            }
        }
    }
예제 #3
0
    public static void ParseBinProperties(BinaryReader br, string filename, PointData pointData)
    {
        pointData.minValue = br.ReadSingle();
        pointData.maxValue = br.ReadSingle();
        pointData.count    = br.ReadInt32();
        pointData.units    = br.ReadString();
        pointData.coloring = (PointData.Coloring)br.ReadByte();

        // Read Metadata (if available)
        pointData.metadata = PatchDataIO.ReadBinMetadata(br);

        // Read Categories (if available)
        if (pointData.categories != null)
        {
            ReadBinCategories(br, pointData, pointData.coloring == PointData.Coloring.Custom);

            int categoriesCount = pointData.categories.Length;
            if (categoriesCount > CategoryFilter.MaxCategories)
            {
                Debug.LogWarning(filename + " has more than " + CategoryFilter.MaxCategories + " categories.");
            }
        }
    }