Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | import defined from "../Core/defined.js";
/**
* Return the `PropertyTextureProperty` from the given `StructuralMetadata`
* that matches the given description.
*
* If the given structural metadata is `undefined`, then `undefined` is returned.
*
* Otherwise, this method will check all the property textures in the given
* structural metadata.
*
* If it finds a property texture that has a class with an `_id` that matches
* the given name, and that contains a property for the given property name, then
* this property is returned.
*
* Otherwise, `undefined` is returned
*
* @param {StructuralMetadata} structuralMetadata The structural metadata
* @param {string} className The name of the metadata class
* @param {string} propertyName The name of the metadata property
* @returns {PropertyTextureProperty|undefined}
* @private
*/
function getMetadataProperty(structuralMetadata, className, propertyName) {
if (!defined(structuralMetadata)) {
return undefined;
}
const propertyTextures = structuralMetadata.propertyTextures;
for (const propertyTexture of propertyTextures) {
const metadataClass = propertyTexture.class;
if (metadataClass.id === className) {
const properties = propertyTexture.properties;
const property = properties[propertyName];
if (defined(property)) {
return property;
}
}
}
// Note: This could check for property attributes in a similar
// way. But since picking arbitrary property attributes via the
// frame buffer is not supported yet, returning "undefined" here
// causes the picking to bail out early and safely when no
// property texture was found.
// See https://github.com/CesiumGS/cesium/issues/12225
return undefined;
}
export default getMetadataProperty;
|