public byte[] GetMergeMask(NoiseAreaType[] areaTypes, NoiseAreaType neighborTypeToBaseMaskOn)
        {
            // Create the pattern for the neighbor type
            pattern = GetPattern(areaTypes, neighborTypeToBaseMaskOn);

            if (pattern == EmptyPattern)
            {
                return null;
            }

            // Return the mask that matches the pattern
            return masks[patterns[pattern]];
        }
        private string GetPattern(NoiseAreaType[] areaTypes, NoiseAreaType neighborTypeToBaseMaskOn)
        {
            // Clear the neighbor map to a default state
            neighborMap[0] = '0';
            neighborMap[1] = '0';
            neighborMap[2] = '0';
            neighborMap[3] = '0';
            neighborMap[4] = '-';
            neighborMap[5] = '0';
            neighborMap[6] = '0';
            neighborMap[7] = '0';
            neighborMap[8] = '0';

            // Sides: Left, Top, Right, Bottom
            if (areaTypes[3] == neighborTypeToBaseMaskOn) neighborMap[0] = '1';
            if (areaTypes[1] == neighborTypeToBaseMaskOn) neighborMap[1] = '1';
            if (areaTypes[5] == neighborTypeToBaseMaskOn) neighborMap[2] = '1';
            if (areaTypes[7] == neighborTypeToBaseMaskOn) neighborMap[3] = '1';

            // Corners: Top Left, Top Right, Bottom Right, Bottom Left
            if (areaTypes[0] == neighborTypeToBaseMaskOn) neighborMap[5] = '1';
            if (areaTypes[2] == neighborTypeToBaseMaskOn) neighborMap[6] = '1';
            if (areaTypes[8] == neighborTypeToBaseMaskOn) neighborMap[7] = '1';
            if (areaTypes[6] == neighborTypeToBaseMaskOn) neighborMap[8] = '1';

            // Return the pattern as a string
            return new string(neighborMap);
        }
Exemplo n.º 3
0
        public AreaThemeHandler(NoiseManager noiseManager)
        {
            this.noiseManager = noiseManager;

            AreaTypes = new NoiseAreaType[9];
        }