12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import Check from "../Core/Check.js";
- /**
- * An enum describing the built-in instance attribute semantics.
- *
- * @enum {String}
- *
- * @private
- */
- const InstanceAttributeSemantic = {
- /**
- * Per-instance translation.
- *
- * @type {String}
- * @constant
- */
- TRANSLATION: "TRANSLATION",
- /**
- * Per-instance rotation.
- *
- * @type {String}
- * @constant
- */
- ROTATION: "ROTATION",
- /**
- * Per-instance scale.
- *
- * @type {String}
- * @constant
- */
- SCALE: "SCALE",
- /**
- * Per-instance feature ID.
- *
- * @type {String}
- * @constant
- */
- FEATURE_ID: "_FEATURE_ID",
- };
- /**
- * Gets the instance attribute semantic matching the glTF attribute semantic.
- *
- * @returns {InstanceAttributeSemantic} The instance attribute semantic, or undefined if there is no match.
- *
- * @private
- */
- InstanceAttributeSemantic.fromGltfSemantic = function (gltfSemantic) {
- //>>includeStart('debug', pragmas.debug);
- Check.typeOf.string("gltfSemantic", gltfSemantic);
- //>>includeEnd('debug')
- let semantic = gltfSemantic;
- // Strip the set index from the semantic
- const setIndexRegex = /^(\w+)_\d+$/;
- const setIndexMatch = setIndexRegex.exec(gltfSemantic);
- if (setIndexMatch !== null) {
- semantic = setIndexMatch[1];
- }
- switch (semantic) {
- case "TRANSLATION":
- return InstanceAttributeSemantic.TRANSLATION;
- case "ROTATION":
- return InstanceAttributeSemantic.ROTATION;
- case "SCALE":
- return InstanceAttributeSemantic.SCALE;
- case "_FEATURE_ID":
- return InstanceAttributeSemantic.FEATURE_ID;
- }
- return undefined;
- };
- export default Object.freeze(InstanceAttributeSemantic);
|