constructor(options) {
        super(options);

        if (options.pixels.length === 0 || options.pixels.length % 2 !== 0) {
            throw new Error(`Invalid pixels array. Pixel count: ${options.pixels.length}`);
        }

        this.type = options.type;
        this.pixels = [];
        this.metaData = options.metaData ?? {};

        this.calculateDimensions(options.pixels);
        this.compressPixels(options.pixels);
    }
@param {object} options
@param {MapLayerType} options.type
@param {Array<number>} options.pixels These have to be sorted for the compression to work. Unsorted pixel compressed maps will become larger than uncompressed ones
@param {object} [options.metaData] Probably something like name, id, whatever