@itwin/core-frontend
Version:
iTwin.js frontend components
67 lines • 2.71 kB
JavaScript
;
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
/** @packageDocumentation
* @module Rendering
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.createRenderInstancesParamsBuilder = createRenderInstancesParamsBuilder;
exports.collectRenderInstancesParamsTransferables = collectRenderInstancesParamsTransferables;
const Symbols_1 = require("../../common/internal/Symbols");
const InstancedGraphicParams_1 = require("../../common/render/InstancedGraphicParams");
const InstancedGraphicPropsBuilder_1 = require("../../common/internal/render/InstancedGraphicPropsBuilder");
const core_common_1 = require("@itwin/core-common");
class Builder {
[Symbols_1._implementationProhibited] = undefined;
_instances = new InstancedGraphicPropsBuilder_1.InstancedGraphicPropsBuilder();
_modelId;
_containsFeatures = false;
constructor(modelId) {
this._modelId = modelId;
}
add(instance) {
this._instances.add(instance);
if (undefined !== instance.feature) {
this._containsFeatures = true;
}
}
finish() {
const numInstances = this._instances.length;
if (numInstances === 0) {
throw new Error("No instances defined");
}
let featureTable;
if (this._containsFeatures) {
featureTable = new core_common_1.FeatureTable(numInstances, this._modelId);
}
const instances = this._instances.finish(featureTable);
const result = {
[Symbols_1._implementationProhibited]: "renderInstancesParams",
instances,
};
if (featureTable) {
const packedTable = core_common_1.PackedFeatureTable.pack(featureTable);
result.features = {
data: packedTable.data,
modelId: packedTable.batchModelId,
count: packedTable.numFeatures,
};
}
return result;
}
}
function createRenderInstancesParamsBuilder(args) {
return new Builder(args.modelId);
}
function collectRenderInstancesParamsTransferables(xfers, inParams) {
const params = inParams;
if (params.instances) {
InstancedGraphicParams_1.InstancedGraphicProps.collectTransferables(xfers, params.instances);
}
if (params.features) {
xfers.add(params.features.data.buffer);
}
}
//# sourceMappingURL=RenderInstancesParamsImpl.js.map