import Check from "../Core/Check.js"; /** * An enum of metadata types. These metadata types are containers containing * one or more components of type {@link MetadataComponentType} * * @enum MetadataType * @private * @experimental This feature is using part of the 3D Tiles spec that is not final and is subject to change without Cesium's standard deprecation policy. */ var MetadataType = { /** * A single component * * @type {String} * @constant * @private */ SINGLE: "SINGLE", /** * A vector with two components * * @type {String} * @constant * @private */ VEC2: "VEC2", /** * A vector with three components * * @type {String} * @constant * @private */ VEC3: "VEC3", /** * A vector with four components * * @type {String} * @constant * @private */ VEC4: "VEC4", /** * A 2x2 matrix, stored in column-major format. * * @type {String} * @constant * @private */ MAT2: "MAT2", /** * A 2x2 matrix, stored in column-major format. * * @type {String} * @constant * @private */ MAT3: "MAT3", /** * A 2x2 matrix, stored in column-major format. * * @type {String} * @constant * @private */ MAT4: "MAT4", /** * An array of values. A componentType property is needed to * define what type of values are stored in the array. * * @type {String} * @constant * @private */ ARRAY: "ARRAY", }; /** * Check if a type is VEC2, VEC3 or VEC4 * * @param {MetadataType} type The type * @return {Boolean} true if the type is a vector, false otherwise */ MetadataType.isVectorType = function (type) { //>>includeStart('debug', pragmas.debug); Check.typeOf.string("type", type); //>>includeEnd('debug'); switch (type) { case MetadataType.VEC2: case MetadataType.VEC3: case MetadataType.VEC4: return true; default: return false; } }; /** * Check if a type is MAT2, MAT3 or MAT4 * * @param {MetadataType} type The type * @return {Boolean} true if the type is a matrix, false otherwise */ MetadataType.isMatrixType = function (type) { //>>includeStart('debug', pragmas.debug); Check.typeOf.string("type", type); //>>includeEnd('debug'); switch (type) { case MetadataType.MAT2: case MetadataType.MAT3: case MetadataType.MAT4: return true; default: return false; } }; /** * Get the number of components for a type. e.g. a VECN returns N. * The only exception is the ARRAY type, whose number of components is * determined separately by the componentCount property in the metadata * extension. * * @param {MetadataType} type The type to get the component count for * @return {Number} The number of components, or undefined for ARRAY */ MetadataType.getComponentCount = function (type) { //>>includeStart('debug', pragmas.debug); Check.typeOf.string("type", type); //>>includeEnd('debug'); switch (type) { case MetadataType.SINGLE: return 1; case MetadataType.VEC2: return 2; case MetadataType.VEC3: return 3; case MetadataType.VEC4: return 4; case MetadataType.MAT2: return 4; case MetadataType.MAT3: return 9; case MetadataType.MAT4: return 16; default: return undefined; } }; export default Object.freeze(MetadataType);