All files / engine/Source/Scene getMetadataProperty.js

0% Statements 0/11
0% Branches 0/6
0% Functions 0/1
0% Lines 0/11

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;