You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

130 lines
4.8 KiB
JavaScript

import defined from "../Core/defined.js";
/**
* @private
*/
function Cesium3DTilesetStatistics() {
// Rendering statistics
this.selected = 0;
this.visited = 0;
// Loading statistics
this.numberOfCommands = 0;
this.numberOfAttemptedRequests = 0;
this.numberOfPendingRequests = 0;
this.numberOfTilesProcessing = 0;
this.numberOfTilesWithContentReady = 0; // Number of tiles with content loaded, does not include empty tiles
this.numberOfTilesTotal = 0; // Number of tiles in tileset JSON (and other tileset JSON files as they are loaded)
this.numberOfLoadedTilesTotal = 0; // Running total of loaded tiles for the lifetime of the session
// Features statistics
this.numberOfFeaturesSelected = 0; // Number of features rendered
this.numberOfFeaturesLoaded = 0; // Number of features in memory
this.numberOfPointsSelected = 0;
this.numberOfPointsLoaded = 0;
this.numberOfTrianglesSelected = 0;
// Styling statistics
this.numberOfTilesStyled = 0;
this.numberOfFeaturesStyled = 0;
// Optimization statistics
this.numberOfTilesCulledWithChildrenUnion = 0;
// Memory statistics
this.geometryByteLength = 0;
this.texturesByteLength = 0;
this.batchTableByteLength = 0;
}
Cesium3DTilesetStatistics.prototype.clear = function () {
this.selected = 0;
this.visited = 0;
this.numberOfCommands = 0;
this.numberOfAttemptedRequests = 0;
this.numberOfFeaturesSelected = 0;
this.numberOfPointsSelected = 0;
this.numberOfTrianglesSelected = 0;
this.numberOfTilesStyled = 0;
this.numberOfFeaturesStyled = 0;
this.numberOfTilesCulledWithChildrenUnion = 0;
};
function updatePointAndFeatureCounts(statistics, content, decrement, load) {
var contents = content.innerContents;
var pointsLength = content.pointsLength;
var trianglesLength = content.trianglesLength;
var featuresLength = content.featuresLength;
var geometryByteLength = content.geometryByteLength;
var texturesByteLength = content.texturesByteLength;
var batchTableByteLength = content.batchTableByteLength;
if (load) {
statistics.numberOfFeaturesLoaded += decrement
? -featuresLength
: featuresLength;
statistics.numberOfPointsLoaded += decrement ? -pointsLength : pointsLength;
statistics.geometryByteLength += decrement
? -geometryByteLength
: geometryByteLength;
statistics.texturesByteLength += decrement
? -texturesByteLength
: texturesByteLength;
statistics.batchTableByteLength += decrement
? -batchTableByteLength
: batchTableByteLength;
} else {
statistics.numberOfFeaturesSelected += decrement
? -featuresLength
: featuresLength;
statistics.numberOfPointsSelected += decrement
? -pointsLength
: pointsLength;
statistics.numberOfTrianglesSelected += decrement
? -trianglesLength
: trianglesLength;
}
if (defined(contents)) {
var length = contents.length;
for (var i = 0; i < length; ++i) {
updatePointAndFeatureCounts(statistics, contents[i], decrement, load);
}
}
}
Cesium3DTilesetStatistics.prototype.incrementSelectionCounts = function (
content
) {
updatePointAndFeatureCounts(this, content, false, false);
};
Cesium3DTilesetStatistics.prototype.incrementLoadCounts = function (content) {
updatePointAndFeatureCounts(this, content, false, true);
};
Cesium3DTilesetStatistics.prototype.decrementLoadCounts = function (content) {
updatePointAndFeatureCounts(this, content, true, true);
};
Cesium3DTilesetStatistics.clone = function (statistics, result) {
result.selected = statistics.selected;
result.visited = statistics.visited;
result.numberOfCommands = statistics.numberOfCommands;
result.selected = statistics.selected;
result.numberOfAttemptedRequests = statistics.numberOfAttemptedRequests;
result.numberOfPendingRequests = statistics.numberOfPendingRequests;
result.numberOfTilesProcessing = statistics.numberOfTilesProcessing;
result.numberOfTilesWithContentReady =
statistics.numberOfTilesWithContentReady;
result.numberOfTilesTotal = statistics.numberOfTilesTotal;
result.numberOfFeaturesSelected = statistics.numberOfFeaturesSelected;
result.numberOfFeaturesLoaded = statistics.numberOfFeaturesLoaded;
result.numberOfPointsSelected = statistics.numberOfPointsSelected;
result.numberOfPointsLoaded = statistics.numberOfPointsLoaded;
result.numberOfTrianglesSelected = statistics.numberOfTrianglesSelected;
result.numberOfTilesStyled = statistics.numberOfTilesStyled;
result.numberOfFeaturesStyled = statistics.numberOfFeaturesStyled;
result.numberOfTilesCulledWithChildrenUnion =
statistics.numberOfTilesCulledWithChildrenUnion;
result.geometryByteLength = statistics.geometryByteLength;
result.texturesByteLength = statistics.texturesByteLength;
result.batchTableByteLength = statistics.batchTableByteLength;
};
export default Cesium3DTilesetStatistics;