UNPKG

vue-cesium

Version:
297 lines (292 loc) 7.36 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); require('../../../composables/index.js'); var cesiumProps = require('../../../utils/cesium-props.js'); var util = require('../../../utils/util.js'); var emits$1 = require('../../../utils/emits.js'); var index = require('../../../composables/use-primitives/index.js'); "use strict"; const emits = { ...emits$1.primitiveEmits, allTilesLoaded: () => true, initialTilesLoaded: () => true, loadProgress: (numberOfPendingRequests, numberOfTilesProcessing) => true, tileFailed: (url, errorMsg) => true, tileLoad: (tile) => true, tileUnload: (tile) => true, tileVisible: (tile) => true }; const tilesetPrimitiveProps = { url: [String, Object], ...cesiumProps.show, ...cesiumProps.modelMatrix, modelUpAxis: { type: Number // default: 1 // Cesium.Axis.Y }, modelForwardAxis: { type: Number // default: 0 // Cesium.Axis.X }, ...cesiumProps.shadows, ...cesiumProps.maximumScreenSpaceError, // Deprecated maximumMemoryUsage: { type: Number // default: 512 }, cacheBytes: { type: Number, default: 536870912 }, maximumCacheOverflowBytes: { type: Number, default: 536870912 }, cullWithChildrenBounds: { type: Boolean, default: true }, cullRequestsWhileMoving: { type: Boolean, default: true }, cullRequestsWhileMovingMultiplier: { type: Number, default: 60 }, preloadWhenHidden: { type: Boolean, default: false }, preloadFlightDestinations: { type: Boolean, default: true }, preferLeaves: { type: Boolean, default: false }, dynamicScreenSpaceError: { type: Boolean, default: false }, dynamicScreenSpaceErrorDensity: { type: Number, default: 278e-5 }, dynamicScreenSpaceErrorFactor: { type: Number, default: 4 }, dynamicScreenSpaceErrorHeightFalloff: { type: Number, default: 0.25 }, progressiveResolutionHeightFraction: { type: Number, default: 0.3 }, foveatedScreenSpaceError: { type: Boolean, default: true }, foveatedConeSize: { type: Number, default: 0.1 }, foveatedMinimumScreenSpaceErrorRelaxation: { type: Number, default: 0 }, foveatedInterpolationCallback: Function, foveatedTimeDelay: { type: Number, default: 0.2 }, skipLevelOfDetail: { type: Boolean, default: false }, baseScreenSpaceError: { type: Number, default: 1024 }, skipScreenSpaceErrorFactor: { type: Number, default: 16 }, skipLevels: { type: Number, default: 1 }, immediatelyLoadDesiredLevelOfDetail: { type: Boolean, default: false }, loadSiblings: { type: Boolean, default: false }, ...cesiumProps.clippingPlanes, ...cesiumProps.classificationType, ...cesiumProps.ellipsoid, pointCloudShading: Object, ...cesiumProps.imageBasedLightingFactor, ...cesiumProps.lightColor2, ...cesiumProps.luminanceAtZenith, ...cesiumProps.sphericalHarmonicCoefficients, ...cesiumProps.specularEnvironmentMaps, ...cesiumProps.imageBasedLighting, ...cesiumProps.backFaceCulling, enableShowOutline: { type: Boolean, default: true }, showOutline: { type: Boolean, default: true }, ...cesiumProps.outlineColor, vectorClassificationOnly: { type: Boolean, default: false }, vectorKeepDecodedPositions: { type: Boolean, default: false }, featureIdIndex: { type: Number, default: 0 }, instanceFeatureIdIndex: { type: Number, default: 0 }, featureIdLabel: { type: [String, Number] }, instanceFeatureIdLabel: { type: [String, Number] }, splitDirection: { type: Number, default: 0 //Cesium.SplitDirection.NONE }, projectTo2D: { type: Boolean, default: false }, showCreditsOnScreen: { type: Boolean, default: false }, debugHeatmapTilePropertyName: String, debugFreezeFrame: { type: Boolean, default: false }, debugColorizeTiles: { type: Boolean, default: false }, ...cesiumProps.debugWireframe, ...cesiumProps.debugShowBoundingVolume, debugShowContentBoundingVolume: { type: Boolean, default: false }, debugShowViewerRequestVolume: { type: Boolean, default: false }, debugShowGeometricError: { type: Boolean, default: false }, debugShowRenderingStatistics: { type: Boolean, default: false }, debugShowMemoryUsage: { type: Boolean, default: false }, debugShowUrl: { type: Boolean, default: false }, ...cesiumProps.enableMouseEvent, enableModelExperimental: { type: Boolean, default: false }, ...cesiumProps.customShader, properties: { type: Array }, fragmentShader: String, replaceFS: Boolean, assetId: Number }; var PrimitiveTileset = vue.defineComponent({ name: "VcPrimitiveTileset", props: tilesetPrimitiveProps, emits, setup(props, ctx) { const instance = vue.getCurrentInstance(); instance.cesiumClass = "Cesium3DTileset"; instance.cesiumEvents = ["allTilesLoaded", "initialTilesLoaded", "loadProgress", "tileFailed", "tileLoad", "tileUnload", "tileVisible"]; const primitivesStates = index["default"](props, ctx, instance); instance.proxy.creatingPromise.then((obj) => { const tileset = obj.cesiumObject; instance.removeCallbacks.push(tileset.tileVisible.addEventListener(updateTile)); }); const updateTile = (tile) => { const content = tile.content; const model = content._model; for (let i = 0; i < content.featuresLength; i++) { const feature = content.getFeature(i); if (props.properties && props.properties.length) { props.properties.forEach((property) => { if (feature.hasProperty(property["key"]) && feature.getProperty(property["key"]) === property["keyValue"]) { feature.setProperty(property["propertyName"], property["propertyValue"]); } }); } } if (props.fragmentShader && model && model._sourcePrograms && model._rendererResources) { Object.keys(model._sourcePrograms).forEach((key) => { var _a; const program = model._sourcePrograms[key]; const sourceShaders = model._rendererResources.sourceShaders; if (props.replaceFS) { sourceShaders[program.fragmentShader] = props.fragmentShader; } else { const oldFS = sourceShaders[program.fragmentShader]; const webgl2 = (_a = primitivesStates.$services.viewer.scene.context) == null ? void 0 : _a.webgl2; sourceShaders[program.fragmentShader] = oldFS.replace( `${webgl2 ? "out_FragColor" : "gl_FragColor"} = vec4(color, 1.0); }`, `${webgl2 ? "out_FragColor" : "gl_FragColor"} = vec4(color, 1.0); ${props.fragmentShader} } ` ); } }); model._shouldRegenerateShaders = true; } }; return () => { var _a; return vue.createCommentVNode(util.kebabCase(((_a = instance.proxy) == null ? void 0 : _a.$options.name) || "")); }; } }); exports["default"] = PrimitiveTileset; exports.tilesetPrimitiveProps = tilesetPrimitiveProps; //# sourceMappingURL=index.js.map