constructor( light, options = {} ) {

		super( light );

		// Default configuration with sensible defaults
		this.config = {
			tilesX: options.tilesX || 2,
			tilesY: options.tilesY || 2,
			resolution: options.resolution || light.shadow.mapSize,
			debug: options.debug !== undefined ? options.debug : false
		};

		this.debug = this.config.debug;

		this.originalLight = light;
		this.lightPlane = new Plane( new Vector3( 0, 1, 0 ), 0 );
		this.line = new Line3();

		this.initialLightDirection = new Vector3();
		this.updateLightDirection();

		this._cameraFrameId = new WeakMap();

		this.shadowSize = {
			top: light.shadow.camera.top,
			bottom: light.shadow.camera.bottom,
			left: light.shadow.camera.left,
			right: light.shadow.camera.right,
		};

		this.lights = [];
		this._shadowNodes = [];

		this.tiles = this.generateTiles( this.config.tilesX, this.config.tilesY );

	}
Creates an instance of `TileShadowNode`.

@param {Light} light - The original light source used for shadow mapping.
@param {Object} [options={}] - Configuration options for the tiled shadow node.
@param {number} [options.tilesX=2] - The number of tiles along the X-axis.
@param {number} [options.tilesY=2] - The number of tiles along the Y-axis.
@param {Object} [options.resolution] - The resolution of the shadow map.
@param {boolean} [options.debug=false] - Whether to enable debug mode.