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); }
public AreaThemeHandler(NoiseManager noiseManager) { this.noiseManager = noiseManager; AreaTypes = new NoiseAreaType[9]; }