import DeveloperError from "../Core/DeveloperError.js"; /** * The content of a tile in a {@link Cesium3DTileset}. *

* Derived classes of this interface provide access to individual features in the tile. * Access derived objects through {@link Cesium3DTile#content}. *

*

* This type describes an interface and is not intended to be instantiated directly. *

* * @alias Cesium3DTileContent * @constructor */ function Cesium3DTileContent() { /** * Gets or sets if any feature's property changed. Used to * optimized applying a style when a feature's property changed. *

* This is used to implement the Cesium3DTileContent interface, but is * not part of the public Cesium API. *

* * @type {Boolean} * * @private */ this.featurePropertiesDirty = false; } Object.defineProperties(Cesium3DTileContent.prototype, { /** * Gets the number of features in the tile. * * @memberof Cesium3DTileContent.prototype * * @type {Number} * @readonly */ featuresLength: { // eslint-disable-next-line getter-return get: function () { DeveloperError.throwInstantiationError(); }, }, /** * Gets the number of points in the tile. *

* Only applicable for tiles with Point Cloud content. This is different than {@link Cesium3DTileContent#featuresLength} which * equals the number of groups of points as distinguished by the BATCH_ID feature table semantic. *

* * @see {@link https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/PointCloud#batched-points} * * @memberof Cesium3DTileContent.prototype * * @type {Number} * @readonly */ pointsLength: { // eslint-disable-next-line getter-return get: function () { DeveloperError.throwInstantiationError(); }, }, /** * Gets the number of triangles in the tile. * * @memberof Cesium3DTileContent.prototype * * @type {Number} * @readonly */ trianglesLength: { // eslint-disable-next-line getter-return get: function () { DeveloperError.throwInstantiationError(); }, }, /** * Gets the tile's geometry memory in bytes. * * @memberof Cesium3DTileContent.prototype * * @type {Number} * @readonly */ geometryByteLength: { // eslint-disable-next-line getter-return get: function () { DeveloperError.throwInstantiationError(); }, }, /** * Gets the tile's texture memory in bytes. * * @memberof Cesium3DTileContent.prototype * * @type {Number} * @readonly */ texturesByteLength: { // eslint-disable-next-line getter-return get: function () { DeveloperError.throwInstantiationError(); }, }, /** * Gets the amount of memory used by the batch table textures, in bytes. * * @memberof Cesium3DTileContent.prototype * * @type {Number} * @readonly */ batchTableByteLength: { // eslint-disable-next-line getter-return get: function () { DeveloperError.throwInstantiationError(); }, }, /** * Gets the array of {@link Cesium3DTileContent} objects for contents that contain other contents, such as composite tiles. The inner contents may in turn have inner contents, such as a composite tile that contains a composite tile. * * @see {@link https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/Composite|Composite specification} * * @memberof Cesium3DTileContent.prototype * * @type {Array} * @readonly */ innerContents: { // eslint-disable-next-line getter-return get: function () { DeveloperError.throwInstantiationError(); }, }, /** * Gets the promise that will be resolved when the tile's content is ready to render. * * @memberof Cesium3DTileContent.prototype * * @type {Promise.} * @readonly */ readyPromise: { // eslint-disable-next-line getter-return get: function () { DeveloperError.throwInstantiationError(); }, }, /** * Gets the tileset for this tile. * * @memberof Cesium3DTileContent.prototype * * @type {Cesium3DTileset} * @readonly */ tileset: { // eslint-disable-next-line getter-return get: function () { DeveloperError.throwInstantiationError(); }, }, /** * Gets the tile containing this content. * * @memberof Cesium3DTileContent.prototype * * @type {Cesium3DTile} * @readonly */ tile: { // eslint-disable-next-line getter-return get: function () { DeveloperError.throwInstantiationError(); }, }, /** * Gets the url of the tile's content. * @memberof Cesium3DTileContent.prototype * * @type {String} * @readonly */ url: { // eslint-disable-next-line getter-return get: function () { DeveloperError.throwInstantiationError(); }, }, /** * Gets the batch table for this content. *

* This is used to implement the Cesium3DTileContent interface, but is * not part of the public Cesium API. *

* * @type {Cesium3DTileBatchTable} * @readonly * * @private */ batchTable: { // eslint-disable-next-line getter-return get: function () { DeveloperError.throwInstantiationError(); }, }, /** * Gets the metadata for this content, whether it is available explicitly or via * implicit tiling. If there is no metadata, this property should be undefined. *

* This is used to implement the Cesium3DTileContent interface, but is * not part of the public Cesium API. *

* * @type {ImplicitMetadataView|undefined} * * @private * @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy. */ metadata: { // eslint-disable-next-line getter-return get: function () { DeveloperError.throwInstantiationError(); }, set: function (value) { DeveloperError.throwInstantiationError(); }, }, /** * Gets the group for this content if the content has metadata (3D Tiles 1.1) or * if it uses the 3DTILES_metadata extension. If neither are present, * this property should be undefined. *

* This is used to implement the Cesium3DTileContent interface, but is * not part of the public Cesium API. *

* * @type {Cesium3DTileContentGroup|undefined} * * @private * @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy. */ group: { // eslint-disable-next-line getter-return get: function () { DeveloperError.throwInstantiationError(); }, set: function (value) { DeveloperError.throwInstantiationError(); }, }, }); /** * Returns whether the feature has this property. * * @param {Number} batchId The batchId for the feature. * @param {String} name The case-sensitive name of the property. * @returns {Boolean} true if the feature has this property; otherwise, false. */ Cesium3DTileContent.prototype.hasProperty = function (batchId, name) { DeveloperError.throwInstantiationError(); }; /** * Returns the {@link Cesium3DTileFeature} object for the feature with the * given batchId. This object is used to get and modify the * feature's properties. *

* Features in a tile are ordered by batchId, an index used to retrieve their metadata from the batch table. *

* * @see {@link https://github.com/CesiumGS/3d-tiles/tree/main/specification/TileFormats/BatchTable}. * * @param {Number} batchId The batchId for the feature. * @returns {Cesium3DTileFeature} The corresponding {@link Cesium3DTileFeature} object. * * @exception {DeveloperError} batchId must be between zero and {@link Cesium3DTileContent#featuresLength} - 1. */ Cesium3DTileContent.prototype.getFeature = function (batchId) { DeveloperError.throwInstantiationError(); }; /** * Called when {@link Cesium3DTileset#debugColorizeTiles} changes. *

* This is used to implement the Cesium3DTileContent interface, but is * not part of the public Cesium API. *

* * @param {Boolean} enabled Whether to enable or disable debug settings. * @returns {Cesium3DTileFeature} The corresponding {@link Cesium3DTileFeature} object. * @private */ Cesium3DTileContent.prototype.applyDebugSettings = function (enabled, color) { DeveloperError.throwInstantiationError(); }; /** * Apply a style to the content *

* This is used to implement the Cesium3DTileContent interface, but is * not part of the public Cesium API. *

* * @param {Cesium3DTileStyle} style The style. * * @private */ Cesium3DTileContent.prototype.applyStyle = function (style) { DeveloperError.throwInstantiationError(); }; /** * Called by the tile during tileset traversal to get the draw commands needed to render this content. * When the tile's content is in the PROCESSING state, this creates WebGL resources to ultimately * move to the READY state. *

* This is used to implement the Cesium3DTileContent interface, but is * not part of the public Cesium API. *

* * @param {Cesium3DTileset} tileset The tileset containing this tile. * @param {FrameState} frameState The frame state. * * @private */ Cesium3DTileContent.prototype.update = function (tileset, frameState) { DeveloperError.throwInstantiationError(); }; /** * Returns true if this object was destroyed; otherwise, false. *

* If this object was destroyed, it should not be used; calling any function other than * isDestroyed will result in a {@link DeveloperError} exception. *

* This is used to implement the Cesium3DTileContent interface, but is * not part of the public Cesium API. *

* * @returns {Boolean} true if this object was destroyed; otherwise, false. * * @see Cesium3DTileContent#destroy * * @private */ Cesium3DTileContent.prototype.isDestroyed = function () { DeveloperError.throwInstantiationError(); }; /** * Destroys the WebGL resources held by this object. Destroying an object allows for deterministic * release of WebGL resources, instead of relying on the garbage collector to destroy this object. *

* Once an object is destroyed, it should not be used; calling any function other than * isDestroyed will result in a {@link DeveloperError} exception. Therefore, * assign the return value (undefined) to the object as done in the example. *

* This is used to implement the Cesium3DTileContent interface, but is * not part of the public Cesium API. *

* * @exception {DeveloperError} This object was destroyed, i.e., destroy() was called. * * @example * content = content && content.destroy(); * * @see Cesium3DTileContent#isDestroyed * * @private */ Cesium3DTileContent.prototype.destroy = function () { DeveloperError.throwInstantiationError(); }; export default Cesium3DTileContent;