Home Reference Source

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);

	}

}