import defaultValue from '../Core/defaultValue.js'; import defineProperties from '../Core/defineProperties.js'; import destroyObject from '../Core/destroyObject.js'; import getStringFromTypedArray from '../Core/getStringFromTypedArray.js'; import RuntimeError from '../Core/RuntimeError.js'; import when from '../ThirdParty/when.js'; /** * Represents content for a tile in a * {@link https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification|3D Tiles} tileset whose * content points to another 3D Tiles tileset. *

* Implements the {@link Cesium3DTileContent} interface. *

* * @alias Tileset3DTileContent * @constructor * * @private */ function Tileset3DTileContent(tileset, tile, resource, arrayBuffer, byteOffset) { this._tileset = tileset; this._tile = tile; this._resource = resource; this._readyPromise = when.defer(); this.featurePropertiesDirty = false; initialize(this, arrayBuffer, byteOffset); } defineProperties(Tileset3DTileContent.prototype, { featuresLength : { get : function() { return 0; } }, pointsLength : { get : function() { return 0; } }, trianglesLength : { get : function() { return 0; } }, geometryByteLength : { get : function() { return 0; } }, texturesByteLength : { get : function() { return 0; } }, batchTableByteLength : { get : function() { return 0; } }, innerContents : { get : function() { return undefined; } }, readyPromise : { get : function() { return this._readyPromise.promise; } }, tileset : { get : function() { return this._tileset; } }, tile : { get : function() { return this._tile; } }, url : { get : function() { return this._resource.getUrlComponent(true); } }, batchTable : { get : function() { return undefined; } } }); function initialize(content, arrayBuffer, byteOffset) { byteOffset = defaultValue(byteOffset, 0); var uint8Array = new Uint8Array(arrayBuffer); var jsonString = getStringFromTypedArray(uint8Array, byteOffset); var tilesetJson; try { tilesetJson = JSON.parse(jsonString); } catch (error) { content._readyPromise.reject(new RuntimeError('Invalid tile content.')); return; } content._tileset.loadTileset(content._resource, tilesetJson, content._tile); content._readyPromise.resolve(content); } /** * Part of the {@link Cesium3DTileContent} interface. Tileset3DTileContent * always returns false since a tile of this type does not have any features. */ Tileset3DTileContent.prototype.hasProperty = function(batchId, name) { return false; }; /** * Part of the {@link Cesium3DTileContent} interface. Tileset3DTileContent * always returns undefined since a tile of this type does not have any features. */ Tileset3DTileContent.prototype.getFeature = function(batchId) { return undefined; }; Tileset3DTileContent.prototype.applyDebugSettings = function(enabled, color) { }; Tileset3DTileContent.prototype.applyStyle = function(style) { }; Tileset3DTileContent.prototype.update = function(tileset, frameState) { }; Tileset3DTileContent.prototype.isDestroyed = function() { return false; }; Tileset3DTileContent.prototype.destroy = function() { return destroyObject(this); }; export default Tileset3DTileContent;