src/octree/world/WorldOctantId.js
/**
 * A world octant identifier.
 *
 * Each octant can be identified by a LOD index and a positional key.
 */
export class WorldOctantId {
	/**
	 * Constructs a new world octant identifier.
	 *
	 * @param {Number} [lod=0] - The LOD index.
	 * @param {Number} [key=0] - The key.
	 */
	constructor(lod = 0, key = 0) {
		/**
		 * The LOD grid in which the world octant resides.
		 *
		 * @type {Number}
		 */
		this.lod = lod;
		/**
		 * The unique key of the world octant.
		 *
		 * @type {Number}
		 */
		this.key = key;
	}
	/**
	 * Sets the LOD index and key.
	 *
	 * @param {Number} lod - The LOD index.
	 * @param {Number} key - The key.
	 * @return {WorldOctantId} This octant identifier.
	 */
	set(lod, key) {
		this.lod = lod;
		this.key = key;
	}
	/**
	 * Copies the given octant identifier.
	 *
	 * @param {WorldOctantId} id - An octant identifier.
	 * @return {WorldOctantId} This octant identifier.
	 */
	copy(id) {
		this.lod = id.lod;
		this.key = id.key;
		return this;
	}
	/**
	 * Clones this octant identifier.
	 *
	 * @return {WorldOctantId} The cloned octant identifier.
	 */
	clone() {
		return new this.constructor().copy(this);
	}
}