@carbonenginejs/runtime-resource 0.14.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/resource/geometry/TriGeometryRes.js +312 -209
- package/dist/resource/geometry/TriGeometryRes.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js +2 -2
- package/dist/resource/shader/reflection/Tr2EffectParameterAnnotation.js.map +1 -1
- package/dist/resource/shader/reflection/Tr2EffectResource.js +2 -2
- package/dist/resource/shader/reflection/Tr2EffectResource.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js +2 -2
- package/dist/resource/texture/Tr2TexturePipelineStepCompress.js.map +1 -1
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js +2 -2
- package/dist/resource/texture/Tr2TexturePipelineStepPack.js.map +1 -1
- package/package.json +61 -61
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TriGeometryRes.js","sources":["../../../../src/resource/geometry/TriGeometryRes.js"],"sourcesContent":["// Source: trinity/trinity/Resources/TriGeometryRes.h\n// Source: trinity/trinity/Resources/TriGeometryRes.cpp\n// Source: trinity/trinity/Resources/TriGeometryRes_Blue.cpp\nimport { CjsSchema, carbon, impl, io, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { box3 } from \"@carbonenginejs/runtime-utils/box3\";\nimport { triangleNormalTo } from \"@carbonenginejs/runtime-utils/mesh\";\nimport { ray3 } from \"@carbonenginejs/runtime-utils/ray3\";\nimport { sph3 } from \"@carbonenginejs/runtime-utils/sph3\";\nimport { vec3 } from \"@carbonenginejs/runtime-utils/vec3\";\nimport { vec4 } from \"@carbonenginejs/runtime-utils/vec4\";\nimport { CjsResource } from \"../CjsResource.js\";\nimport {\n assertResourcePayloadArray,\n assertResourcePayloadObject,\n resourceBoundaryError,\n resourcePayloadError\n} from \"../resourceBoundary.js\";\n\n/**\n * Resource record that owns geometry payload facts (meshes, optional\n * skeletons and animations) and LOD-force metadata, while engine packages\n * decide device buffers, vertex declarations, and draw-time state.\n *\n * Geometry inspection composes the generic math supplied by runtime-utils\n * with resource-specific payload traversal.\n */\nexport class TriGeometryRes extends CjsResource\n{\n forceLod = false;\n forcedLodIndex = -1;\n name = \"\";\n\n /** Creates a TriGeometryRes with caller-provided initial state. */\n constructor(values = null)\n {\n super();\n this.SetValues(values || {}, {\n markDirty: false,\n skipUpdate: true,\n skipEvents: true\n });\n }\n\n /**\n * Attach a plain geometry payload.\n *\n * @param {object|null} payload\n * @param {object|null} options\n * @returns {TriGeometryRes}\n */\n SetPayload(payload = null, options = null)\n {\n if (payload === null)\n {\n super.SetPayload(null);\n return this;\n }\n assertResourcePayloadObject(\"TriGeometryRes\", payload);\n assertResourcePayloadArray(\"TriGeometryRes\", payload, \"meshes\");\n for (const field of [ \"skeletons\", \"animations\" ])\n {\n if (payload[field] !== undefined && !Array.isArray(payload[field]))\n {\n throw resourcePayloadError(\"TriGeometryRes\", \"Expected an array when provided.\", field);\n }\n }\n super.SetPayload(payload);\n this.SetValues(options || {});\n return this;\n }\n\n /**\n * Get mesh count from the CPU geometry payload.\n *\n * @returns {number}\n */\n GetMeshCount()\n {\n return this.GetPayload()?.meshes?.length || 0;\n }\n\n /**\n * Get animation count from the CPU geometry payload.\n *\n * @returns {number}\n */\n GetAnimationCount()\n {\n return this.GetPayload()?.animations?.length || 0;\n }\n\n /**\n * Get skeleton count from the CPU geometry payload.\n *\n * @returns {number}\n */\n GetSkeletonCount()\n {\n return this.GetPayload()?.skeletons?.length || 0;\n }\n\n /**\n * Get one resource-owned skeleton from the CPU geometry payload.\n *\n * @param {number} skeletonIndex\n * @returns {*}\n */\n GetSkeletonData(skeletonIndex = 0)\n {\n const index = Number(skeletonIndex);\n\n if (!Number.isInteger(index) || index < 0)\n {\n return null;\n }\n\n return this.GetPayload()?.skeletons?.[index] || null;\n }\n\n /**\n * Get mesh area count from a CPU geometry payload mesh.\n *\n * @param {number} meshIndex\n * @returns {number}\n */\n GetMeshAreaCount(meshIndex = 0)\n {\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\n return mesh?.areas?.length || 0;\n }\n\n /**\n * Get mesh name from a CPU geometry payload.\n *\n * @param {number} meshIndex\n * @returns {string}\n */\n GetMeshName(meshIndex = 0)\n {\n return this.GetPayload()?.meshes?.[meshIndex]?.name || \"\";\n }\n\n /**\n * Get mesh area name from a CPU geometry payload.\n *\n * @param {number} meshIndex\n * @param {number} areaIndex\n * @returns {string}\n */\n GetMeshAreaName(meshIndex = 0, areaIndex = 0)\n {\n return this.GetPayload()?.meshes?.[meshIndex]?.areas?.[areaIndex]?.name || \"\";\n }\n\n /**\n * Get area bounding box from geometry payload data.\n *\n * @param {number} meshIndex\n * @param {number} areaIndex\n * @param {ArrayLike<number>|null} outMin\n * @param {ArrayLike<number>|null} outMax\n * @returns {*|boolean}\n */\n GetAreaBoundingBox(meshIndex = 0, areaIndex = 0, outMin = null, outMax = null)\n {\n const area = TriGeometryRes.getMeshAreas(this.GetPayload()?.meshes?.[meshIndex])?.[areaIndex];\n const bounds = TriGeometryRes.getBounds(area);\n return TriGeometryRes.copyBounds(bounds, outMin, outMax);\n }\n\n /**\n * Get mesh bounding box from geometry payload data.\n * @param {number} meshIndex\n * @param {ArrayLike<number>|null} outMin\n * @param {ArrayLike<number>|null} outMax\n * @returns {*|boolean}\n */\n GetBoundingBox(meshIndex = 0, outMin = null, outMax = null)\n {\n const payload = this.GetPayload();\n const bounds = TriGeometryRes.getBounds(payload?.meshes?.[meshIndex])\n || TriGeometryRes.getBounds(payload);\n return TriGeometryRes.copyBounds(bounds, outMin, outMax);\n }\n\n /**\n * Get mesh bounding sphere from geometry payload data.\n * @param {number} meshIndex\n * @param {ArrayLike<number>|null} out\n * @returns {*|boolean}\n */\n GetBoundingSphere(meshIndex = 0, out = null)\n {\n const payload = this.GetPayload();\n const sphere = TriGeometryRes.getSphere(payload?.meshes?.[meshIndex])\n || TriGeometryRes.getSphere(payload);\n if (!out) return sphere;\n if (!sphere) return false;\n vec4.copy(out, sphere);\n return true;\n }\n\n /**\n * Calculate a transformed bounding box from canonical CPU vertex data.\n *\n * Carbon stores the same matrix bytes as gl-matrix; transforming one point\n * therefore uses the ordinary column-vector index layout.\n *\n * @param {number} meshIndex\n * @param {ArrayLike<number>} transform\n * @returns {{min: number[], max: number[]}|null}\n */\n CalculateBoundingBoxFromTransform(meshIndex = 0, transform = null)\n {\n if (!transform || transform.length < 16)\n {\n throw new TypeError(\"TriGeometryRes transform must contain 16 matrix elements.\");\n }\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\n if (!mesh) return null;\n const positions = TriGeometryRes.getMeshPositions(mesh);\n const sourceBounds = TriGeometryRes.getBounds(mesh);\n if (!positions && !sourceBounds) return null;\n\n const\n bounds = box3.alloc(),\n point = vec3.alloc();\n try\n {\n if (!TriGeometryRes.setBoundsFromPositions(bounds, positions, point))\n {\n if (!sourceBounds) return null;\n box3.fromBounds(bounds, sourceBounds.min, sourceBounds.max);\n }\n box3.transformMat4(bounds, bounds, transform);\n return {\n min: [ bounds[0], bounds[1], bounds[2] ],\n max: [ bounds[3], bounds[4], bounds[5] ]\n };\n }\n finally\n {\n vec3.unalloc(point);\n box3.unalloc(bounds);\n }\n }\n\n /**\n * Recalculate bounding sphere data from canonical CPU vertex positions.\n *\n * @returns {boolean}\n */\n RecalculateBoundingSphere()\n {\n let updated = false;\n const\n sphere = sph3.alloc(),\n point = vec3.alloc();\n try\n {\n for (const mesh of this.GetPayload()?.meshes || [])\n {\n if (!TriGeometryRes.calculateMeshSphere(sphere, mesh, point)) continue;\n TriGeometryRes.setMeshSphere(mesh, sphere);\n updated = true;\n }\n return updated;\n }\n finally\n {\n vec3.unalloc(point);\n sph3.unalloc(sphere);\n }\n }\n\n /**\n * Reloading belongs to the resource manager because it owns source and\n * canonical replacement policy.\n *\n * @throws {Error}\n */\n Reload() {\n throw resourceBoundaryError(\n \"TriGeometryRes\",\n \"Reload\",\n \"Request a reload through CjsResMan so source reads and canonical replacement remain manager-owned.\"\n );\n }\n\n /**\n * Intersect a ray with canonical CPU triangle data.\n *\n * @param {ArrayLike<number>} position\n * @param {ArrayLike<number>} direction\n * @returns {object}\n */\n GetIntersectionPointNormalBone(position, direction)\n {\n return TriGeometryRes.intersectGeometry(\n this.GetPayload()?.meshes,\n position,\n direction,\n -1\n );\n }\n\n /**\n * Intersect a ray with one area index across canonical CPU meshes.\n *\n * @param {ArrayLike<number>} position\n * @param {ArrayLike<number>} direction\n * @param {number} areaIndex\n * @returns {object}\n */\n GetAreaIntersectionPointNormalBone(position, direction, areaIndex = -1)\n {\n if (!Number.isInteger(areaIndex) || areaIndex < -1)\n {\n throw new RangeError(\"TriGeometryRes area index must be -1 or a non-negative integer.\");\n }\n return TriGeometryRes.intersectGeometry(\n this.GetPayload()?.meshes,\n position,\n direction,\n areaIndex\n );\n }\n\n /**\n * Get vertex element descriptors for a mesh.\n *\n * @param {number} meshIndex\n * @returns {Array<*>}\n */\n GetMeshVertexElements(meshIndex = 0)\n {\n return this.GetPayload()?.meshes?.[meshIndex]?.vertexElements || [];\n }\n\n /**\n * Saving belongs to the selected geometry format writer and destination.\n *\n * @throws {Error}\n */\n SaveMesh()\n {\n throw resourceBoundaryError(\n \"TriGeometryRes\",\n \"SaveMesh\",\n \"Use a geometry format writer with the resource payload and a caller-owned destination.\"\n );\n }\n\n static payload = \"geometry\";\n\n /**\n * Gets the canonical area list from a mesh or its first LOD.\n *\n * @param {object|null} mesh\n * @returns {Array<*>|null}\n */\n static getMeshAreas(mesh)\n {\n return mesh?.areas || mesh?.lods?.[0]?.areas || null;\n }\n\n /**\n * Gets canonical bounds from a geometry payload object.\n *\n * @param {object|null} value\n * @returns {{min: ArrayLike<number>, max: ArrayLike<number>}|null}\n */\n static getBounds(value)\n {\n if (!value || typeof value !== \"object\") return null;\n if (value.bounds?.min && value.bounds?.max) return value.bounds;\n if (value.minBounds && value.maxBounds)\n {\n return { min: value.minBounds, max: value.maxBounds };\n }\n return null;\n }\n\n /**\n * Gets the canonical bounding sphere from a geometry payload object.\n *\n * @param {object|null} value\n * @returns {ArrayLike<number>|null}\n */\n static getSphere(value)\n {\n if (!value || typeof value !== \"object\") return null;\n return value.sphere || value.boundingSphere || null;\n }\n\n /**\n * Copies bounds into caller-owned outputs, or returns the source object.\n *\n * @param {{min: ArrayLike<number>, max: ArrayLike<number>}|null} bounds\n * @param {ArrayLike<number>|null} outMin\n * @param {ArrayLike<number>|null} outMax\n * @returns {*|boolean}\n */\n static copyBounds(bounds, outMin, outMax)\n {\n if (!outMin && !outMax) return bounds;\n if (!bounds || !outMin || !outMax) return false;\n vec3.copy(outMin, bounds.min);\n vec3.copy(outMax, bounds.max);\n return true;\n }\n\n /**\n * Gets canonical positions from a mesh or its first LOD.\n *\n * @param {object|null} mesh\n * @returns {ArrayLike<number>|Array<ArrayLike<number>>|null}\n */\n static getMeshPositions(mesh)\n {\n return mesh?.vertex?.position\n || mesh?.positions\n || mesh?.lods?.[0]?.vertex?.position\n || mesh?.lods?.[0]?.positions\n || null;\n }\n\n /**\n * Gets the number of vertices represented by flat or nested positions.\n *\n * @param {ArrayLike<number>|Array<ArrayLike<number>>|null} positions\n * @returns {number}\n */\n static getPositionCount(positions)\n {\n if (!positions) return 0;\n return typeof positions[0] === \"number\"\n ? Math.floor(positions.length / 3)\n : positions.length;\n }\n\n /**\n * Calculates bounds from canonical positions using caller-owned scratch.\n *\n * @param {ArrayLike<number>} out\n * @param {ArrayLike<number>|Array<ArrayLike<number>>|null} positions\n * @param {ArrayLike<number>} point\n * @returns {boolean}\n */\n static setBoundsFromPositions(out, positions, point)\n {\n const count = this.getPositionCount(positions);\n let found = false;\n for (let index = 0; index < count; index++)\n {\n if (!this.copyPosition(point, positions, index)) continue;\n if (!found)\n {\n out[0] = out[3] = point[0];\n out[1] = out[4] = point[1];\n out[2] = out[5] = point[2];\n found = true;\n continue;\n }\n out[0] = Math.min(out[0], point[0]);\n out[1] = Math.min(out[1], point[1]);\n out[2] = Math.min(out[2], point[2]);\n out[3] = Math.max(out[3], point[0]);\n out[4] = Math.max(out[4], point[1]);\n out[5] = Math.max(out[5], point[2]);\n }\n return found;\n }\n\n /**\n * Calculates a bounding sphere from positions using caller-owned scratch.\n *\n * @param {ArrayLike<number>} out\n * @param {ArrayLike<number>|Array<ArrayLike<number>>|null} positions\n * @param {ArrayLike<number>} point\n * @returns {boolean}\n */\n static setSphereFromPositions(out, positions, point)\n {\n const count = this.getPositionCount(positions);\n let\n found = false,\n minX = Infinity,\n minY = Infinity,\n minZ = Infinity,\n maxX = -Infinity,\n maxY = -Infinity,\n maxZ = -Infinity;\n\n for (let index = 0; index < count; index++)\n {\n if (!this.copyPosition(point, positions, index)) continue;\n minX = Math.min(minX, point[0]);\n minY = Math.min(minY, point[1]);\n minZ = Math.min(minZ, point[2]);\n maxX = Math.max(maxX, point[0]);\n maxY = Math.max(maxY, point[1]);\n maxZ = Math.max(maxZ, point[2]);\n found = true;\n }\n if (!found) return false;\n\n out[0] = (minX + maxX) * 0.5;\n out[1] = (minY + maxY) * 0.5;\n out[2] = (minZ + maxZ) * 0.5;\n let maxSquaredRadius = 0;\n for (let index = 0; index < count; index++)\n {\n if (!this.copyPosition(point, positions, index)) continue;\n const\n x = out[0] - point[0],\n y = out[1] - point[1],\n z = out[2] - point[2];\n maxSquaredRadius = Math.max(maxSquaredRadius, x * x + y * y + z * z);\n }\n out[3] = Math.sqrt(maxSquaredRadius);\n return true;\n }\n\n /**\n * Calculates a mesh sphere from positions or existing bounds.\n *\n * @param {ArrayLike<number>} out\n * @param {object} mesh\n * @param {ArrayLike<number>} point\n * @returns {boolean}\n */\n static calculateMeshSphere(out, mesh, point)\n {\n if (this.setSphereFromPositions(out, this.getMeshPositions(mesh), point)) return true;\n const bounds = this.getBounds(mesh);\n if (!bounds) return false;\n sph3.fromBounds(out, bounds.min, bounds.max);\n return true;\n }\n\n /**\n * Stores a calculated sphere in the mesh's canonical sphere fields.\n *\n * @param {object} mesh\n * @param {ArrayLike<number>} sphere\n * @returns {void}\n */\n static setMeshSphere(mesh, sphere)\n {\n if (mesh.sphere && typeof mesh.sphere.set === \"function\") mesh.sphere.set(sphere);\n else mesh.sphere = [ ...sphere ];\n if (mesh.boundingSphere && typeof mesh.boundingSphere.set === \"function\")\n {\n mesh.boundingSphere.set(sphere);\n }\n else if (\"boundingSphere\" in mesh)\n {\n mesh.boundingSphere = [ ...sphere ];\n }\n }\n\n /**\n * Intersects a ray with canonical CPU geometry.\n *\n * @param {Array<object>|null} meshes\n * @param {ArrayLike<number>} position\n * @param {ArrayLike<number>} direction\n * @param {number} areaIndex\n * @returns {object}\n */\n static intersectGeometry(meshes, position, direction, areaIndex)\n {\n this.validateRayVector(position, \"position\");\n this.validateRayVector(direction, \"direction\");\n const\n ray = ray3.from(ray3.alloc(), position, direction),\n point = vec3.alloc(),\n vertexA = vec3.alloc(),\n vertexB = vec3.alloc(),\n vertexC = vec3.alloc(),\n normal = vec3.alloc();\n let nearest = null;\n try\n {\n for (let meshIndex = 0; meshIndex < (meshes?.length || 0); meshIndex++)\n {\n const mesh = meshes[meshIndex];\n const positions = this.getMeshPositions(mesh);\n if (!positions) continue;\n const groups = mesh?.indices || mesh?.lods?.[0]?.indices || null;\n if (ArrayBuffer.isView(groups)\n || (Array.isArray(groups) && typeof groups[0] === \"number\"))\n {\n if (areaIndex !== -1 && areaIndex !== 0) continue;\n nearest = this.intersectFaces(\n nearest,\n groups,\n 0,\n mesh,\n meshIndex,\n positions,\n position,\n ray,\n point,\n vertexA,\n vertexB,\n vertexC,\n normal\n );\n continue;\n }\n if (Array.isArray(groups))\n {\n for (let groupIndex = 0; groupIndex < groups.length; groupIndex++)\n {\n if (areaIndex !== -1 && areaIndex !== groupIndex) continue;\n const faces = groups[groupIndex]?.faces || groups[groupIndex]?.indices || [];\n nearest = this.intersectFaces(\n nearest,\n faces,\n groupIndex,\n mesh,\n meshIndex,\n positions,\n position,\n ray,\n point,\n vertexA,\n vertexB,\n vertexC,\n normal\n );\n }\n continue;\n }\n if (areaIndex === -1 || areaIndex === 0)\n {\n nearest = this.intersectFaces(\n nearest,\n null,\n 0,\n mesh,\n meshIndex,\n positions,\n position,\n ray,\n point,\n vertexA,\n vertexB,\n vertexC,\n normal\n );\n }\n }\n return nearest || {\n hit: false,\n boneIndex: -1,\n point: [ 0, 0, 0 ],\n normal: [ 0, 0, 0 ],\n distance: Infinity,\n meshIndex: -1,\n areaIndex\n };\n }\n finally\n {\n vec3.unalloc(normal);\n vec3.unalloc(vertexC);\n vec3.unalloc(vertexB);\n vec3.unalloc(vertexA);\n vec3.unalloc(point);\n ray3.unalloc(ray);\n }\n }\n\n /**\n * Validates a caller-provided ray vector.\n *\n * @param {ArrayLike<number>} value\n * @param {string} name\n * @returns {void}\n */\n static validateRayVector(value, name)\n {\n if (!value\n || value.length < 3\n || !Number.isFinite(value[0])\n || !Number.isFinite(value[1])\n || !Number.isFinite(value[2]))\n {\n throw new TypeError(`TriGeometryRes ray ${name} must contain three finite numbers.`);\n }\n }\n\n /**\n * Intersects a ray with one flat face list.\n *\n * @param {object|null} nearest\n * @param {ArrayLike<number>|null} faces\n * @param {number} areaIndex\n * @param {object} mesh\n * @param {number} meshIndex\n * @param {ArrayLike<number>|Array<ArrayLike<number>>} positions\n * @param {ArrayLike<number>} rayOrigin\n * @param {ArrayLike<number>} ray\n * @param {ArrayLike<number>} point\n * @param {ArrayLike<number>} vertexA\n * @param {ArrayLike<number>} vertexB\n * @param {ArrayLike<number>} vertexC\n * @param {ArrayLike<number>} normal\n * @returns {object|null}\n */\n static intersectFaces(\n nearest,\n faces,\n areaIndex,\n mesh,\n meshIndex,\n positions,\n rayOrigin,\n ray,\n point,\n vertexA,\n vertexB,\n vertexC,\n normal\n )\n {\n const count = faces?.length ?? this.getPositionCount(positions);\n for (let index = 0; index + 2 < count; index += 3)\n {\n const\n vertexIndexA = faces ? faces[index] : index,\n vertexIndexB = faces ? faces[index + 1] : index + 1,\n vertexIndexC = faces ? faces[index + 2] : index + 2;\n if (!this.copyPosition(vertexA, positions, vertexIndexA)\n || !this.copyPosition(vertexB, positions, vertexIndexB)\n || !this.copyPosition(vertexC, positions, vertexIndexC)\n || !ray3.getIntersectVertices(\n point,\n ray,\n vertexA,\n vertexB,\n vertexC,\n false\n ))\n {\n continue;\n }\n const distance = vec3.distance(rayOrigin, point);\n if (nearest && nearest.distance <= distance) continue;\n if (!nearest)\n {\n nearest = {\n hit: true,\n boneIndex: -1,\n point: [ 0, 0, 0 ],\n normal: [ 0, 0, 0 ],\n distance,\n meshIndex,\n areaIndex\n };\n }\n nearest.boneIndex = this.getMeshBoneIndex(mesh, vertexIndexA);\n vec3.copy(nearest.point, point);\n triangleNormalTo(normal, vertexA, vertexB, vertexC);\n vec3.copy(nearest.normal, normal);\n nearest.distance = distance;\n nearest.meshIndex = meshIndex;\n nearest.areaIndex = areaIndex;\n }\n return nearest;\n }\n\n /**\n * Copies one flat or nested position into caller-owned output.\n *\n * @param {ArrayLike<number>} out\n * @param {ArrayLike<number>|Array<ArrayLike<number>>} positions\n * @param {number} index\n * @returns {boolean}\n */\n static copyPosition(out, positions, index)\n {\n if (!Number.isInteger(index) || index < 0) return false;\n if (typeof positions[0] === \"number\")\n {\n const offset = index * 3;\n if (offset + 2 >= positions.length) return false;\n out[0] = positions[offset];\n out[1] = positions[offset + 1];\n out[2] = positions[offset + 2];\n return true;\n }\n const point = positions[index];\n if (!point || point.length < 3) return false;\n out[0] = point[0];\n out[1] = point[1];\n out[2] = point[2];\n return true;\n }\n\n /**\n * Gets the first blend index for a mesh vertex.\n *\n * @param {object} mesh\n * @param {number} vertexIndex\n * @returns {number}\n */\n static getMeshBoneIndex(mesh, vertexIndex)\n {\n const indices = mesh?.vertex?.blendIndices || mesh?.blendIndices;\n if (!indices) return -1;\n if (typeof indices[0] === \"number\")\n {\n return Number(indices[vertexIndex * 4] ?? indices[vertexIndex] ?? -1);\n }\n return Number(indices[vertexIndex]?.[0] ?? -1);\n }\n\n}\n\n// Declared as data rather than with decorators, so the resource tree loads from\n// source without a transform. Field order is key order, and GetValues() exports\n// in that order.\nCjsSchema.define(TriGeometryRes, {\n className: \"TriGeometryRes\",\n family: \"resources\",\n fields: {\n forceLod: [ type.boolean, io.readwrite ],\n forcedLodIndex: [ type.int32, io.readwrite ],\n name: [ type.string, io.readwrite ]\n },\n methods: {\n GetMeshCount: [ carbon.method, impl.adapted ],\n GetAnimationCount: [ carbon.method, impl.adapted ],\n GetSkeletonCount: [ carbon.method, impl.adapted ],\n GetSkeletonData: [ carbon.method, impl.adapted ],\n GetMeshAreaCount: [ carbon.method, impl.adapted ],\n GetMeshName: [ carbon.method, impl.adapted ],\n GetMeshAreaName: [ carbon.method, impl.adapted ],\n GetAreaBoundingBox: [ carbon.method, impl.adapted ],\n GetBoundingBox: [ carbon.method, impl.adapted ],\n GetBoundingSphere: [ carbon.method, impl.adapted ],\n CalculateBoundingBoxFromTransform: [ carbon.method, impl.adapted ],\n RecalculateBoundingSphere: [ carbon.method, impl.adapted ],\n Reload: [ carbon.method, impl.notSupported ],\n GetIntersectionPointNormalBone: [ carbon.method, impl.adapted ],\n GetAreaIntersectionPointNormalBone: [ carbon.method, impl.adapted ],\n GetMeshVertexElements: [ carbon.method, impl.adapted ],\n SaveMesh: [ carbon.method, impl.notSupported ]\n }\n});\n"],"names":["TriGeometryRes","CjsResource","forceLod","forcedLodIndex","name","constructor","values","SetValues","markDirty","skipUpdate","skipEvents","SetPayload","payload","options","assertResourcePayloadObject","assertResourcePayloadArray","field","undefined","Array","isArray","resourcePayloadError","GetMeshCount","GetPayload","meshes","length","GetAnimationCount","animations","GetSkeletonCount","skeletons","GetSkeletonData","skeletonIndex","index","Number","isInteger","GetMeshAreaCount","meshIndex","mesh","areas","GetMeshName","GetMeshAreaName","areaIndex","GetAreaBoundingBox","outMin","outMax","area","getMeshAreas","bounds","getBounds","copyBounds","GetBoundingBox","GetBoundingSphere","out","sphere","getSphere","vec4","copy","CalculateBoundingBoxFromTransform","transform","TypeError","positions","getMeshPositions","sourceBounds","box3","alloc","point","vec3","setBoundsFromPositions","fromBounds","min","max","transformMat4","unalloc","RecalculateBoundingSphere","updated","sph3","calculateMeshSphere","setMeshSphere","Reload","resourceBoundaryError","GetIntersectionPointNormalBone","position","direction","intersectGeometry","GetAreaIntersectionPointNormalBone","RangeError","GetMeshVertexElements","vertexElements","SaveMesh","lods","value","minBounds","maxBounds","boundingSphere","vertex","getPositionCount","Math","floor","count","found","copyPosition","setSphereFromPositions","minX","Infinity","minY","minZ","maxX","maxY","maxZ","maxSquaredRadius","x","y","z","sqrt","set","validateRayVector","ray","ray3","from","vertexA","vertexB","vertexC","normal","nearest","groups","indices","ArrayBuffer","isView","intersectFaces","groupIndex","faces","hit","boneIndex","distance","isFinite","rayOrigin","vertexIndexA","vertexIndexB","vertexIndexC","getIntersectVertices","getMeshBoneIndex","triangleNormalTo","offset","vertexIndex","blendIndices","CjsSchema","define","className","family","fields","type","boolean","io","readwrite","int32","string","methods","carbon","method","impl","adapted","notSupported"],"mappings":";;;;;;;;;;AAAA;AACA;AACA;;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,cAAc,SAASC,WAAW,CAC/C;AACEC,EAAAA,QAAQ,GAAG,KAAK;EAChBC,cAAc,GAAG,EAAE;AACnBC,EAAAA,IAAI,GAAG,EAAE;;AAET;AACAC,EAAAA,WAAWA,CAACC,MAAM,GAAG,IAAI,EACzB;AACE,IAAA,KAAK,EAAE;AACP,IAAA,IAAI,CAACC,SAAS,CAACD,MAAM,IAAI,EAAE,EAAE;AAC3BE,MAAAA,SAAS,EAAE,KAAK;AAChBC,MAAAA,UAAU,EAAE,IAAI;AAChBC,MAAAA,UAAU,EAAE;AACd,KAAC,CAAC;AACJ,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEC,UAAUA,CAACC,OAAO,GAAG,IAAI,EAAEC,OAAO,GAAG,IAAI,EACzC;IACE,IAAID,OAAO,KAAK,IAAI,EACpB;AACE,MAAA,KAAK,CAACD,UAAU,CAAC,IAAI,CAAC;AACtB,MAAA,OAAO,IAAI;AACb,IAAA;AACAG,IAAAA,2BAA2B,CAAC,gBAAgB,EAAEF,OAAO,CAAC;AACtDG,IAAAA,0BAA0B,CAAC,gBAAgB,EAAEH,OAAO,EAAE,QAAQ,CAAC;IAC/D,KAAK,MAAMI,KAAK,IAAI,CAAE,WAAW,EAAE,YAAY,CAAE,EACjD;AACE,MAAA,IAAIJ,OAAO,CAACI,KAAK,CAAC,KAAKC,SAAS,IAAI,CAACC,KAAK,CAACC,OAAO,CAACP,OAAO,CAACI,KAAK,CAAC,CAAC,EAClE;AACE,QAAA,MAAMI,oBAAoB,CAAC,gBAAgB,EAAE,kCAAkC,EAAEJ,KAAK,CAAC;AACzF,MAAA;AACF,IAAA;AACA,IAAA,KAAK,CAACL,UAAU,CAACC,OAAO,CAAC;AACzB,IAAA,IAAI,CAACL,SAAS,CAACM,OAAO,IAAI,EAAE,CAAC;AAC7B,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACEQ,EAAAA,YAAYA,GACZ;IACE,OAAO,IAAI,CAACC,UAAU,EAAE,EAAEC,MAAM,EAAEC,MAAM,IAAI,CAAC;AAC/C,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACEC,EAAAA,iBAAiBA,GACjB;IACE,OAAO,IAAI,CAACH,UAAU,EAAE,EAAEI,UAAU,EAAEF,MAAM,IAAI,CAAC;AACnD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACEG,EAAAA,gBAAgBA,GAChB;IACE,OAAO,IAAI,CAACL,UAAU,EAAE,EAAEM,SAAS,EAAEJ,MAAM,IAAI,CAAC;AAClD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEK,EAAAA,eAAeA,CAACC,aAAa,GAAG,CAAC,EACjC;AACE,IAAA,MAAMC,KAAK,GAAGC,MAAM,CAACF,aAAa,CAAC;IAEnC,IAAI,CAACE,MAAM,CAACC,SAAS,CAACF,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,EACzC;AACE,MAAA,OAAO,IAAI;AACb,IAAA;IAEA,OAAO,IAAI,CAACT,UAAU,EAAE,EAAEM,SAAS,GAAGG,KAAK,CAAC,IAAI,IAAI;AACtD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEG,EAAAA,gBAAgBA,CAACC,SAAS,GAAG,CAAC,EAC9B;IACE,MAAMC,IAAI,GAAG,IAAI,CAACd,UAAU,EAAE,EAAEC,MAAM,GAAGY,SAAS,CAAC;AACnD,IAAA,OAAOC,IAAI,EAAEC,KAAK,EAAEb,MAAM,IAAI,CAAC;AACjC,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEc,EAAAA,WAAWA,CAACH,SAAS,GAAG,CAAC,EACzB;AACE,IAAA,OAAO,IAAI,CAACb,UAAU,EAAE,EAAEC,MAAM,GAAGY,SAAS,CAAC,EAAE/B,IAAI,IAAI,EAAE;AAC3D,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;EACEmC,eAAeA,CAACJ,SAAS,GAAG,CAAC,EAAEK,SAAS,GAAG,CAAC,EAC5C;AACE,IAAA,OAAO,IAAI,CAAClB,UAAU,EAAE,EAAEC,MAAM,GAAGY,SAAS,CAAC,EAAEE,KAAK,GAAGG,SAAS,CAAC,EAAEpC,IAAI,IAAI,EAAE;AAC/E,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEqC,EAAAA,kBAAkBA,CAACN,SAAS,GAAG,CAAC,EAAEK,SAAS,GAAG,CAAC,EAAEE,MAAM,GAAG,IAAI,EAAEC,MAAM,GAAG,IAAI,EAC7E;AACE,IAAA,MAAMC,IAAI,GAAG5C,cAAc,CAAC6C,YAAY,CAAC,IAAI,CAACvB,UAAU,EAAE,EAAEC,MAAM,GAAGY,SAAS,CAAC,CAAC,GAAGK,SAAS,CAAC;AAC7F,IAAA,MAAMM,MAAM,GAAG9C,cAAc,CAAC+C,SAAS,CAACH,IAAI,CAAC;IAC7C,OAAO5C,cAAc,CAACgD,UAAU,CAACF,MAAM,EAAEJ,MAAM,EAAEC,MAAM,CAAC;AAC1D,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACEM,EAAAA,cAAcA,CAACd,SAAS,GAAG,CAAC,EAAEO,MAAM,GAAG,IAAI,EAAEC,MAAM,GAAG,IAAI,EAC1D;AACE,IAAA,MAAM/B,OAAO,GAAG,IAAI,CAACU,UAAU,EAAE;AACjC,IAAA,MAAMwB,MAAM,GAAG9C,cAAc,CAAC+C,SAAS,CAACnC,OAAO,EAAEW,MAAM,GAAGY,SAAS,CAAC,CAAC,IAChEnC,cAAc,CAAC+C,SAAS,CAACnC,OAAO,CAAC;IACtC,OAAOZ,cAAc,CAACgD,UAAU,CAACF,MAAM,EAAEJ,MAAM,EAAEC,MAAM,CAAC;AAC1D,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACEO,iBAAiBA,CAACf,SAAS,GAAG,CAAC,EAAEgB,GAAG,GAAG,IAAI,EAC3C;AACE,IAAA,MAAMvC,OAAO,GAAG,IAAI,CAACU,UAAU,EAAE;AACjC,IAAA,MAAM8B,MAAM,GAAGpD,cAAc,CAACqD,SAAS,CAACzC,OAAO,EAAEW,MAAM,GAAGY,SAAS,CAAC,CAAC,IAChEnC,cAAc,CAACqD,SAAS,CAACzC,OAAO,CAAC;AACtC,IAAA,IAAI,CAACuC,GAAG,EAAE,OAAOC,MAAM;AACvB,IAAA,IAAI,CAACA,MAAM,EAAE,OAAO,KAAK;AACzBE,IAAAA,IAAI,CAACC,IAAI,CAACJ,GAAG,EAAEC,MAAM,CAAC;AACtB,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACEI,iCAAiCA,CAACrB,SAAS,GAAG,CAAC,EAAEsB,SAAS,GAAG,IAAI,EACjE;IACE,IAAI,CAACA,SAAS,IAAIA,SAAS,CAACjC,MAAM,GAAG,EAAE,EACvC;AACE,MAAA,MAAM,IAAIkC,SAAS,CAAC,2DAA2D,CAAC;AAClF,IAAA;IACA,MAAMtB,IAAI,GAAG,IAAI,CAACd,UAAU,EAAE,EAAEC,MAAM,GAAGY,SAAS,CAAC;AACnD,IAAA,IAAI,CAACC,IAAI,EAAE,OAAO,IAAI;AACtB,IAAA,MAAMuB,SAAS,GAAG3D,cAAc,CAAC4D,gBAAgB,CAACxB,IAAI,CAAC;AACvD,IAAA,MAAMyB,YAAY,GAAG7D,cAAc,CAAC+C,SAAS,CAACX,IAAI,CAAC;AACnD,IAAA,IAAI,CAACuB,SAAS,IAAI,CAACE,YAAY,EAAE,OAAO,IAAI;AAE5C,IAAA,MACEf,MAAM,GAAGgB,IAAI,CAACC,KAAK,EAAE;AACrBC,MAAAA,KAAK,GAAGC,IAAI,CAACF,KAAK,EAAE;IACtB,IACA;MACE,IAAI,CAAC/D,cAAc,CAACkE,sBAAsB,CAACpB,MAAM,EAAEa,SAAS,EAAEK,KAAK,CAAC,EACpE;AACE,QAAA,IAAI,CAACH,YAAY,EAAE,OAAO,IAAI;AAC9BC,QAAAA,IAAI,CAACK,UAAU,CAACrB,MAAM,EAAEe,YAAY,CAACO,GAAG,EAAEP,YAAY,CAACQ,GAAG,CAAC;AAC7D,MAAA;MACAP,IAAI,CAACQ,aAAa,CAACxB,MAAM,EAAEA,MAAM,EAAEW,SAAS,CAAC;MAC7C,OAAO;AACLW,QAAAA,GAAG,EAAE,CAAEtB,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,CAAE;AACxCuB,QAAAA,GAAG,EAAE,CAAEvB,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC,EAAEA,MAAM,CAAC,CAAC,CAAC;OACvC;AACH,IAAA,CAAC,SAED;AACEmB,MAAAA,IAAI,CAACM,OAAO,CAACP,KAAK,CAAC;AACnBF,MAAAA,IAAI,CAACS,OAAO,CAACzB,MAAM,CAAC;AACtB,IAAA;AACF,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACE0B,EAAAA,yBAAyBA,GACzB;IACE,IAAIC,OAAO,GAAG,KAAK;AACnB,IAAA,MACErB,MAAM,GAAGsB,IAAI,CAACX,KAAK,EAAE;AACrBC,MAAAA,KAAK,GAAGC,IAAI,CAACF,KAAK,EAAE;IACtB,IACA;AACE,MAAA,KAAK,MAAM3B,IAAI,IAAI,IAAI,CAACd,UAAU,EAAE,EAAEC,MAAM,IAAI,EAAE,EAClD;QACE,IAAI,CAACvB,cAAc,CAAC2E,mBAAmB,CAACvB,MAAM,EAAEhB,IAAI,EAAE4B,KAAK,CAAC,EAAE;AAC9DhE,QAAAA,cAAc,CAAC4E,aAAa,CAACxC,IAAI,EAAEgB,MAAM,CAAC;AAC1CqB,QAAAA,OAAO,GAAG,IAAI;AAChB,MAAA;AACA,MAAA,OAAOA,OAAO;AAChB,IAAA,CAAC,SAED;AACER,MAAAA,IAAI,CAACM,OAAO,CAACP,KAAK,CAAC;AACnBU,MAAAA,IAAI,CAACH,OAAO,CAACnB,MAAM,CAAC;AACtB,IAAA;AACF,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACEyB,EAAAA,MAAMA,GAAG;AACP,IAAA,MAAMC,qBAAqB,CACzB,gBAAgB,EAChB,QAAQ,EACR,oGACF,CAAC;AACH,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,8BAA8BA,CAACC,QAAQ,EAAEC,SAAS,EAClD;AACE,IAAA,OAAOjF,cAAc,CAACkF,iBAAiB,CACrC,IAAI,CAAC5D,UAAU,EAAE,EAAEC,MAAM,EACzByD,QAAQ,EACRC,SAAS,EACT,EACF,CAAC;AACH,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACEE,kCAAkCA,CAACH,QAAQ,EAAEC,SAAS,EAAEzC,SAAS,GAAG,EAAE,EACtE;AACE,IAAA,IAAI,CAACR,MAAM,CAACC,SAAS,CAACO,SAAS,CAAC,IAAIA,SAAS,GAAG,EAAE,EAClD;AACE,MAAA,MAAM,IAAI4C,UAAU,CAAC,iEAAiE,CAAC;AACzF,IAAA;AACA,IAAA,OAAOpF,cAAc,CAACkF,iBAAiB,CACrC,IAAI,CAAC5D,UAAU,EAAE,EAAEC,MAAM,EACzByD,QAAQ,EACRC,SAAS,EACTzC,SACF,CAAC;AACH,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACE6C,EAAAA,qBAAqBA,CAAClD,SAAS,GAAG,CAAC,EACnC;AACE,IAAA,OAAO,IAAI,CAACb,UAAU,EAAE,EAAEC,MAAM,GAAGY,SAAS,CAAC,EAAEmD,cAAc,IAAI,EAAE;AACrE,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACEC,EAAAA,QAAQA,GACR;AACE,IAAA,MAAMT,qBAAqB,CACzB,gBAAgB,EAChB,UAAU,EACV,wFACF,CAAC;AACH,EAAA;EAEA,OAAOlE,OAAO,GAAG,UAAU;;AAE3B;AACF;AACA;AACA;AACA;AACA;EACE,OAAOiC,YAAYA,CAACT,IAAI,EACxB;AACE,IAAA,OAAOA,IAAI,EAAEC,KAAK,IAAID,IAAI,EAAEoD,IAAI,GAAG,CAAC,CAAC,EAAEnD,KAAK,IAAI,IAAI;AACtD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOU,SAASA,CAAC0C,KAAK,EACtB;IACE,IAAI,CAACA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE,OAAO,IAAI;AACpD,IAAA,IAAIA,KAAK,CAAC3C,MAAM,EAAEsB,GAAG,IAAIqB,KAAK,CAAC3C,MAAM,EAAEuB,GAAG,EAAE,OAAOoB,KAAK,CAAC3C,MAAM;AAC/D,IAAA,IAAI2C,KAAK,CAACC,SAAS,IAAID,KAAK,CAACE,SAAS,EACtC;MACE,OAAO;QAAEvB,GAAG,EAAEqB,KAAK,CAACC,SAAS;QAAErB,GAAG,EAAEoB,KAAK,CAACE;OAAW;AACvD,IAAA;AACA,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOtC,SAASA,CAACoC,KAAK,EACtB;IACE,IAAI,CAACA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE,OAAO,IAAI;IACpD,OAAOA,KAAK,CAACrC,MAAM,IAAIqC,KAAK,CAACG,cAAc,IAAI,IAAI;AACrD,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAO5C,UAAUA,CAACF,MAAM,EAAEJ,MAAM,EAAEC,MAAM,EACxC;AACE,IAAA,IAAI,CAACD,MAAM,IAAI,CAACC,MAAM,EAAE,OAAOG,MAAM;IACrC,IAAI,CAACA,MAAM,IAAI,CAACJ,MAAM,IAAI,CAACC,MAAM,EAAE,OAAO,KAAK;IAC/CsB,IAAI,CAACV,IAAI,CAACb,MAAM,EAAEI,MAAM,CAACsB,GAAG,CAAC;IAC7BH,IAAI,CAACV,IAAI,CAACZ,MAAM,EAAEG,MAAM,CAACuB,GAAG,CAAC;AAC7B,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOT,gBAAgBA,CAACxB,IAAI,EAC5B;AACE,IAAA,OAAOA,IAAI,EAAEyD,MAAM,EAAEb,QAAQ,IACxB5C,IAAI,EAAEuB,SAAS,IACfvB,IAAI,EAAEoD,IAAI,GAAG,CAAC,CAAC,EAAEK,MAAM,EAAEb,QAAQ,IACjC5C,IAAI,EAAEoD,IAAI,GAAG,CAAC,CAAC,EAAE7B,SAAS,IAC1B,IAAI;AACX,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;EACE,OAAOmC,gBAAgBA,CAACnC,SAAS,EACjC;AACE,IAAA,IAAI,CAACA,SAAS,EAAE,OAAO,CAAC;IACxB,OAAO,OAAOA,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,GACnCoC,IAAI,CAACC,KAAK,CAACrC,SAAS,CAACnC,MAAM,GAAG,CAAC,CAAC,GAChCmC,SAAS,CAACnC,MAAM;AACtB,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAO0C,sBAAsBA,CAACf,GAAG,EAAEQ,SAAS,EAAEK,KAAK,EACnD;AACE,IAAA,MAAMiC,KAAK,GAAG,IAAI,CAACH,gBAAgB,CAACnC,SAAS,CAAC;IAC9C,IAAIuC,KAAK,GAAG,KAAK;IACjB,KAAK,IAAInE,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGkE,KAAK,EAAElE,KAAK,EAAE,EAC1C;MACE,IAAI,CAAC,IAAI,CAACoE,YAAY,CAACnC,KAAK,EAAEL,SAAS,EAAE5B,KAAK,CAAC,EAAE;MACjD,IAAI,CAACmE,KAAK,EACV;AACE/C,QAAAA,GAAG,CAAC,CAAC,CAAC,GAAGA,GAAG,CAAC,CAAC,CAAC,GAAGa,KAAK,CAAC,CAAC,CAAC;AAC1Bb,QAAAA,GAAG,CAAC,CAAC,CAAC,GAAGA,GAAG,CAAC,CAAC,CAAC,GAAGa,KAAK,CAAC,CAAC,CAAC;AAC1Bb,QAAAA,GAAG,CAAC,CAAC,CAAC,GAAGA,GAAG,CAAC,CAAC,CAAC,GAAGa,KAAK,CAAC,CAAC,CAAC;AAC1BkC,QAAAA,KAAK,GAAG,IAAI;AACZ,QAAA;AACF,MAAA;AACA/C,MAAAA,GAAG,CAAC,CAAC,CAAC,GAAG4C,IAAI,CAAC3B,GAAG,CAACjB,GAAG,CAAC,CAAC,CAAC,EAAEa,KAAK,CAAC,CAAC,CAAC,CAAC;AACnCb,MAAAA,GAAG,CAAC,CAAC,CAAC,GAAG4C,IAAI,CAAC3B,GAAG,CAACjB,GAAG,CAAC,CAAC,CAAC,EAAEa,KAAK,CAAC,CAAC,CAAC,CAAC;AACnCb,MAAAA,GAAG,CAAC,CAAC,CAAC,GAAG4C,IAAI,CAAC3B,GAAG,CAACjB,GAAG,CAAC,CAAC,CAAC,EAAEa,KAAK,CAAC,CAAC,CAAC,CAAC;AACnCb,MAAAA,GAAG,CAAC,CAAC,CAAC,GAAG4C,IAAI,CAAC1B,GAAG,CAAClB,GAAG,CAAC,CAAC,CAAC,EAAEa,KAAK,CAAC,CAAC,CAAC,CAAC;AACnCb,MAAAA,GAAG,CAAC,CAAC,CAAC,GAAG4C,IAAI,CAAC1B,GAAG,CAAClB,GAAG,CAAC,CAAC,CAAC,EAAEa,KAAK,CAAC,CAAC,CAAC,CAAC;AACnCb,MAAAA,GAAG,CAAC,CAAC,CAAC,GAAG4C,IAAI,CAAC1B,GAAG,CAAClB,GAAG,CAAC,CAAC,CAAC,EAAEa,KAAK,CAAC,CAAC,CAAC,CAAC;AACrC,IAAA;AACA,IAAA,OAAOkC,KAAK;AACd,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOE,sBAAsBA,CAACjD,GAAG,EAAEQ,SAAS,EAAEK,KAAK,EACnD;AACE,IAAA,MAAMiC,KAAK,GAAG,IAAI,CAACH,gBAAgB,CAACnC,SAAS,CAAC;IAC9C,IACEuC,KAAK,GAAG,KAAK;AACbG,MAAAA,IAAI,GAAGC,QAAQ;AACfC,MAAAA,IAAI,GAAGD,QAAQ;AACfE,MAAAA,IAAI,GAAGF,QAAQ;MACfG,IAAI,GAAG,CAACH,QAAQ;MAChBI,IAAI,GAAG,CAACJ,QAAQ;MAChBK,IAAI,GAAG,CAACL,QAAQ;IAElB,KAAK,IAAIvE,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGkE,KAAK,EAAElE,KAAK,EAAE,EAC1C;MACE,IAAI,CAAC,IAAI,CAACoE,YAAY,CAACnC,KAAK,EAAEL,SAAS,EAAE5B,KAAK,CAAC,EAAE;MACjDsE,IAAI,GAAGN,IAAI,CAAC3B,GAAG,CAACiC,IAAI,EAAErC,KAAK,CAAC,CAAC,CAAC,CAAC;MAC/BuC,IAAI,GAAGR,IAAI,CAAC3B,GAAG,CAACmC,IAAI,EAAEvC,KAAK,CAAC,CAAC,CAAC,CAAC;MAC/BwC,IAAI,GAAGT,IAAI,CAAC3B,GAAG,CAACoC,IAAI,EAAExC,KAAK,CAAC,CAAC,CAAC,CAAC;MAC/ByC,IAAI,GAAGV,IAAI,CAAC1B,GAAG,CAACoC,IAAI,EAAEzC,KAAK,CAAC,CAAC,CAAC,CAAC;MAC/B0C,IAAI,GAAGX,IAAI,CAAC1B,GAAG,CAACqC,IAAI,EAAE1C,KAAK,CAAC,CAAC,CAAC,CAAC;MAC/B2C,IAAI,GAAGZ,IAAI,CAAC1B,GAAG,CAACsC,IAAI,EAAE3C,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/BkC,MAAAA,KAAK,GAAG,IAAI;AACd,IAAA;AACA,IAAA,IAAI,CAACA,KAAK,EAAE,OAAO,KAAK;IAExB/C,GAAG,CAAC,CAAC,CAAC,GAAG,CAACkD,IAAI,GAAGI,IAAI,IAAI,GAAG;IAC5BtD,GAAG,CAAC,CAAC,CAAC,GAAG,CAACoD,IAAI,GAAGG,IAAI,IAAI,GAAG;IAC5BvD,GAAG,CAAC,CAAC,CAAC,GAAG,CAACqD,IAAI,GAAGG,IAAI,IAAI,GAAG;IAC5B,IAAIC,gBAAgB,GAAG,CAAC;IACxB,KAAK,IAAI7E,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGkE,KAAK,EAAElE,KAAK,EAAE,EAC1C;MACE,IAAI,CAAC,IAAI,CAACoE,YAAY,CAACnC,KAAK,EAAEL,SAAS,EAAE5B,KAAK,CAAC,EAAE;MACjD,MACE8E,CAAC,GAAG1D,GAAG,CAAC,CAAC,CAAC,GAAGa,KAAK,CAAC,CAAC,CAAC;QACrB8C,CAAC,GAAG3D,GAAG,CAAC,CAAC,CAAC,GAAGa,KAAK,CAAC,CAAC,CAAC;QACrB+C,CAAC,GAAG5D,GAAG,CAAC,CAAC,CAAC,GAAGa,KAAK,CAAC,CAAC,CAAC;AACvB4C,MAAAA,gBAAgB,GAAGb,IAAI,CAAC1B,GAAG,CAACuC,gBAAgB,EAAEC,CAAC,GAAGA,CAAC,GAAGC,CAAC,GAAGA,CAAC,GAAGC,CAAC,GAAGA,CAAC,CAAC;AACtE,IAAA;IACA5D,GAAG,CAAC,CAAC,CAAC,GAAG4C,IAAI,CAACiB,IAAI,CAACJ,gBAAgB,CAAC;AACpC,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOjC,mBAAmBA,CAACxB,GAAG,EAAEf,IAAI,EAAE4B,KAAK,EAC3C;AACE,IAAA,IAAI,IAAI,CAACoC,sBAAsB,CAACjD,GAAG,EAAE,IAAI,CAACS,gBAAgB,CAACxB,IAAI,CAAC,EAAE4B,KAAK,CAAC,EAAE,OAAO,IAAI;AACrF,IAAA,MAAMlB,MAAM,GAAG,IAAI,CAACC,SAAS,CAACX,IAAI,CAAC;AACnC,IAAA,IAAI,CAACU,MAAM,EAAE,OAAO,KAAK;AACzB4B,IAAAA,IAAI,CAACP,UAAU,CAAChB,GAAG,EAAEL,MAAM,CAACsB,GAAG,EAAEtB,MAAM,CAACuB,GAAG,CAAC;AAC5C,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOO,aAAaA,CAACxC,IAAI,EAAEgB,MAAM,EACjC;AACE,IAAA,IAAIhB,IAAI,CAACgB,MAAM,IAAI,OAAOhB,IAAI,CAACgB,MAAM,CAAC6D,GAAG,KAAK,UAAU,EAAE7E,IAAI,CAACgB,MAAM,CAAC6D,GAAG,CAAC7D,MAAM,CAAC,CAAC,KAC7EhB,IAAI,CAACgB,MAAM,GAAG,CAAE,GAAGA,MAAM,CAAE;AAChC,IAAA,IAAIhB,IAAI,CAACwD,cAAc,IAAI,OAAOxD,IAAI,CAACwD,cAAc,CAACqB,GAAG,KAAK,UAAU,EACxE;AACE7E,MAAAA,IAAI,CAACwD,cAAc,CAACqB,GAAG,CAAC7D,MAAM,CAAC;AACjC,IAAA,CAAC,MACI,IAAI,gBAAgB,IAAIhB,IAAI,EACjC;AACEA,MAAAA,IAAI,CAACwD,cAAc,GAAG,CAAE,GAAGxC,MAAM,CAAE;AACrC,IAAA;AACF,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAO8B,iBAAiBA,CAAC3D,MAAM,EAAEyD,QAAQ,EAAEC,SAAS,EAAEzC,SAAS,EAC/D;AACE,IAAA,IAAI,CAAC0E,iBAAiB,CAAClC,QAAQ,EAAE,UAAU,CAAC;AAC5C,IAAA,IAAI,CAACkC,iBAAiB,CAACjC,SAAS,EAAE,WAAW,CAAC;AAC9C,IAAA,MACEkC,GAAG,GAAGC,IAAI,CAACC,IAAI,CAACD,IAAI,CAACrD,KAAK,EAAE,EAAEiB,QAAQ,EAAEC,SAAS,CAAC;AAClDjB,MAAAA,KAAK,GAAGC,IAAI,CAACF,KAAK,EAAE;AACpBuD,MAAAA,OAAO,GAAGrD,IAAI,CAACF,KAAK,EAAE;AACtBwD,MAAAA,OAAO,GAAGtD,IAAI,CAACF,KAAK,EAAE;AACtByD,MAAAA,OAAO,GAAGvD,IAAI,CAACF,KAAK,EAAE;AACtB0D,MAAAA,MAAM,GAAGxD,IAAI,CAACF,KAAK,EAAE;IACvB,IAAI2D,OAAO,GAAG,IAAI;IAClB,IACA;AACE,MAAA,KAAK,IAAIvF,SAAS,GAAG,CAAC,EAAEA,SAAS,IAAIZ,MAAM,EAAEC,MAAM,IAAI,CAAC,CAAC,EAAEW,SAAS,EAAE,EACtE;AACE,QAAA,MAAMC,IAAI,GAAGb,MAAM,CAACY,SAAS,CAAC;AAC9B,QAAA,MAAMwB,SAAS,GAAG,IAAI,CAACC,gBAAgB,CAACxB,IAAI,CAAC;QAC7C,IAAI,CAACuB,SAAS,EAAE;AAChB,QAAA,MAAMgE,MAAM,GAAGvF,IAAI,EAAEwF,OAAO,IAAIxF,IAAI,EAAEoD,IAAI,GAAG,CAAC,CAAC,EAAEoC,OAAO,IAAI,IAAI;QAChE,IAAIC,WAAW,CAACC,MAAM,CAACH,MAAM,CAAC,IACxBzG,KAAK,CAACC,OAAO,CAACwG,MAAM,CAAC,IAAI,OAAOA,MAAM,CAAC,CAAC,CAAC,KAAK,QAAS,EAC7D;UACE,IAAInF,SAAS,KAAK,CAAC,CAAC,IAAIA,SAAS,KAAK,CAAC,EAAE;AACzCkF,UAAAA,OAAO,GAAG,IAAI,CAACK,cAAc,CAC3BL,OAAO,EACPC,MAAM,EACN,CAAC,EACDvF,IAAI,EACJD,SAAS,EACTwB,SAAS,EACTqB,QAAQ,EACRmC,GAAG,EACHnD,KAAK,EACLsD,OAAO,EACPC,OAAO,EACPC,OAAO,EACPC,MACF,CAAC;AACD,UAAA;AACF,QAAA;AACA,QAAA,IAAIvG,KAAK,CAACC,OAAO,CAACwG,MAAM,CAAC,EACzB;AACE,UAAA,KAAK,IAAIK,UAAU,GAAG,CAAC,EAAEA,UAAU,GAAGL,MAAM,CAACnG,MAAM,EAAEwG,UAAU,EAAE,EACjE;YACE,IAAIxF,SAAS,KAAK,CAAC,CAAC,IAAIA,SAAS,KAAKwF,UAAU,EAAE;AAClD,YAAA,MAAMC,KAAK,GAAGN,MAAM,CAACK,UAAU,CAAC,EAAEC,KAAK,IAAIN,MAAM,CAACK,UAAU,CAAC,EAAEJ,OAAO,IAAI,EAAE;AAC5EF,YAAAA,OAAO,GAAG,IAAI,CAACK,cAAc,CAC3BL,OAAO,EACPO,KAAK,EACLD,UAAU,EACV5F,IAAI,EACJD,SAAS,EACTwB,SAAS,EACTqB,QAAQ,EACRmC,GAAG,EACHnD,KAAK,EACLsD,OAAO,EACPC,OAAO,EACPC,OAAO,EACPC,MACF,CAAC;AACH,UAAA;AACA,UAAA;AACF,QAAA;QACA,IAAIjF,SAAS,KAAK,CAAC,CAAC,IAAIA,SAAS,KAAK,CAAC,EACvC;AACEkF,UAAAA,OAAO,GAAG,IAAI,CAACK,cAAc,CAC3BL,OAAO,EACP,IAAI,EACJ,CAAC,EACDtF,IAAI,EACJD,SAAS,EACTwB,SAAS,EACTqB,QAAQ,EACRmC,GAAG,EACHnD,KAAK,EACLsD,OAAO,EACPC,OAAO,EACPC,OAAO,EACPC,MACF,CAAC;AACH,QAAA;AACF,MAAA;AACA,MAAA,OAAOC,OAAO,IAAI;AAChBQ,QAAAA,GAAG,EAAE,KAAK;QACVC,SAAS,EAAE,CAAC,CAAC;AACbnE,QAAAA,KAAK,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AAClByD,QAAAA,MAAM,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AACnBW,QAAAA,QAAQ,EAAE9B,QAAQ;QAClBnE,SAAS,EAAE,CAAC,CAAC;AACbK,QAAAA;OACD;AACH,IAAA,CAAC,SAED;AACEyB,MAAAA,IAAI,CAACM,OAAO,CAACkD,MAAM,CAAC;AACpBxD,MAAAA,IAAI,CAACM,OAAO,CAACiD,OAAO,CAAC;AACrBvD,MAAAA,IAAI,CAACM,OAAO,CAACgD,OAAO,CAAC;AACrBtD,MAAAA,IAAI,CAACM,OAAO,CAAC+C,OAAO,CAAC;AACrBrD,MAAAA,IAAI,CAACM,OAAO,CAACP,KAAK,CAAC;AACnBoD,MAAAA,IAAI,CAAC7C,OAAO,CAAC4C,GAAG,CAAC;AACnB,IAAA;AACF,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOD,iBAAiBA,CAACzB,KAAK,EAAErF,IAAI,EACpC;AACE,IAAA,IAAI,CAACqF,KAAK,IACLA,KAAK,CAACjE,MAAM,GAAG,CAAC,IAChB,CAACQ,MAAM,CAACqG,QAAQ,CAAC5C,KAAK,CAAC,CAAC,CAAC,CAAC,IAC1B,CAACzD,MAAM,CAACqG,QAAQ,CAAC5C,KAAK,CAAC,CAAC,CAAC,CAAC,IAC1B,CAACzD,MAAM,CAACqG,QAAQ,CAAC5C,KAAK,CAAC,CAAC,CAAC,CAAC,EAC/B;AACE,MAAA,MAAM,IAAI/B,SAAS,CAAC,CAAA,mBAAA,EAAsBtD,IAAI,qCAAqC,CAAC;AACtF,IAAA;AACF,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAO2H,cAAcA,CACnBL,OAAO,EACPO,KAAK,EACLzF,SAAS,EACTJ,IAAI,EACJD,SAAS,EACTwB,SAAS,EACT2E,SAAS,EACTnB,GAAG,EACHnD,KAAK,EACLsD,OAAO,EACPC,OAAO,EACPC,OAAO,EACPC,MAAM,EAER;IACE,MAAMxB,KAAK,GAAGgC,KAAK,EAAEzG,MAAM,IAAI,IAAI,CAACsE,gBAAgB,CAACnC,SAAS,CAAC;AAC/D,IAAA,KAAK,IAAI5B,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG,CAAC,GAAGkE,KAAK,EAAElE,KAAK,IAAI,CAAC,EACjD;MACE,MACEwG,YAAY,GAAGN,KAAK,GAAGA,KAAK,CAAClG,KAAK,CAAC,GAAGA,KAAK;AAC3CyG,QAAAA,YAAY,GAAGP,KAAK,GAAGA,KAAK,CAAClG,KAAK,GAAG,CAAC,CAAC,GAAGA,KAAK,GAAG,CAAC;AACnD0G,QAAAA,YAAY,GAAGR,KAAK,GAAGA,KAAK,CAAClG,KAAK,GAAG,CAAC,CAAC,GAAGA,KAAK,GAAG,CAAC;MACrD,IAAI,CAAC,IAAI,CAACoE,YAAY,CAACmB,OAAO,EAAE3D,SAAS,EAAE4E,YAAY,CAAC,IACnD,CAAC,IAAI,CAACpC,YAAY,CAACoB,OAAO,EAAE5D,SAAS,EAAE6E,YAAY,CAAC,IACpD,CAAC,IAAI,CAACrC,YAAY,CAACqB,OAAO,EAAE7D,SAAS,EAAE8E,YAAY,CAAC,IACpD,CAACrB,IAAI,CAACsB,oBAAoB,CAC3B1E,KAAK,EACLmD,GAAG,EACHG,OAAO,EACPC,OAAO,EACPC,OAAO,EACP,KACF,CAAC,EACH;AACE,QAAA;AACF,MAAA;MACA,MAAMY,QAAQ,GAAGnE,IAAI,CAACmE,QAAQ,CAACE,SAAS,EAAEtE,KAAK,CAAC;AAChD,MAAA,IAAI0D,OAAO,IAAIA,OAAO,CAACU,QAAQ,IAAIA,QAAQ,EAAE;MAC7C,IAAI,CAACV,OAAO,EACZ;AACEA,QAAAA,OAAO,GAAG;AACRQ,UAAAA,GAAG,EAAE,IAAI;UACTC,SAAS,EAAE,EAAE;AACbnE,UAAAA,KAAK,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;AAClByD,UAAAA,MAAM,EAAE,CAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAE;UACnBW,QAAQ;UACRjG,SAAS;AACTK,UAAAA;SACD;AACH,MAAA;MACAkF,OAAO,CAACS,SAAS,GAAG,IAAI,CAACQ,gBAAgB,CAACvG,IAAI,EAAEmG,YAAY,CAAC;MAC7DtE,IAAI,CAACV,IAAI,CAACmE,OAAO,CAAC1D,KAAK,EAAEA,KAAK,CAAC;MAC/B4E,gBAAgB,CAACnB,MAAM,EAAEH,OAAO,EAAEC,OAAO,EAAEC,OAAO,CAAC;MACnDvD,IAAI,CAACV,IAAI,CAACmE,OAAO,CAACD,MAAM,EAAEA,MAAM,CAAC;MACjCC,OAAO,CAACU,QAAQ,GAAGA,QAAQ;MAC3BV,OAAO,CAACvF,SAAS,GAAGA,SAAS;MAC7BuF,OAAO,CAAClF,SAAS,GAAGA,SAAS;AAC/B,IAAA;AACA,IAAA,OAAOkF,OAAO;AAChB,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAOvB,YAAYA,CAAChD,GAAG,EAAEQ,SAAS,EAAE5B,KAAK,EACzC;AACE,IAAA,IAAI,CAACC,MAAM,CAACC,SAAS,CAACF,KAAK,CAAC,IAAIA,KAAK,GAAG,CAAC,EAAE,OAAO,KAAK;AACvD,IAAA,IAAI,OAAO4B,SAAS,CAAC,CAAC,CAAC,KAAK,QAAQ,EACpC;AACE,MAAA,MAAMkF,MAAM,GAAG9G,KAAK,GAAG,CAAC;MACxB,IAAI8G,MAAM,GAAG,CAAC,IAAIlF,SAAS,CAACnC,MAAM,EAAE,OAAO,KAAK;AAChD2B,MAAAA,GAAG,CAAC,CAAC,CAAC,GAAGQ,SAAS,CAACkF,MAAM,CAAC;MAC1B1F,GAAG,CAAC,CAAC,CAAC,GAAGQ,SAAS,CAACkF,MAAM,GAAG,CAAC,CAAC;MAC9B1F,GAAG,CAAC,CAAC,CAAC,GAAGQ,SAAS,CAACkF,MAAM,GAAG,CAAC,CAAC;AAC9B,MAAA,OAAO,IAAI;AACb,IAAA;AACA,IAAA,MAAM7E,KAAK,GAAGL,SAAS,CAAC5B,KAAK,CAAC;IAC9B,IAAI,CAACiC,KAAK,IAAIA,KAAK,CAACxC,MAAM,GAAG,CAAC,EAAE,OAAO,KAAK;AAC5C2B,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAGa,KAAK,CAAC,CAAC,CAAC;AACjBb,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAGa,KAAK,CAAC,CAAC,CAAC;AACjBb,IAAAA,GAAG,CAAC,CAAC,CAAC,GAAGa,KAAK,CAAC,CAAC,CAAC;AACjB,IAAA,OAAO,IAAI;AACb,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACE,EAAA,OAAO2E,gBAAgBA,CAACvG,IAAI,EAAE0G,WAAW,EACzC;IACE,MAAMlB,OAAO,GAAGxF,IAAI,EAAEyD,MAAM,EAAEkD,YAAY,IAAI3G,IAAI,EAAE2G,YAAY;AAChE,IAAA,IAAI,CAACnB,OAAO,EAAE,OAAO,EAAE;AACvB,IAAA,IAAI,OAAOA,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,EAClC;AACE,MAAA,OAAO5F,MAAM,CAAC4F,OAAO,CAACkB,WAAW,GAAG,CAAC,CAAC,IAAIlB,OAAO,CAACkB,WAAW,CAAC,IAAI,EAAE,CAAC;AACvE,IAAA;AACA,IAAA,OAAO9G,MAAM,CAAC4F,OAAO,CAACkB,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAChD,EAAA;AAEF;;AAEA;AACA;AACA;AACAE,SAAS,CAACC,MAAM,CAACjJ,cAAc,EAAE;AAC/BkJ,EAAAA,SAAS,EAAE,gBAAgB;AAC3BC,EAAAA,MAAM,EAAE,WAAW;AACnBC,EAAAA,MAAM,EAAE;IACNlJ,QAAQ,EAAE,CAAEmJ,IAAI,CAACC,OAAO,EAAEC,EAAE,CAACC,SAAS,CAAE;IACxCrJ,cAAc,EAAE,CAAEkJ,IAAI,CAACI,KAAK,EAAEF,EAAE,CAACC,SAAS,CAAE;IAC5CpJ,IAAI,EAAE,CAAEiJ,IAAI,CAACK,MAAM,EAAEH,EAAE,CAACC,SAAS;GAClC;AACDG,EAAAA,OAAO,EAAE;IACPtI,YAAY,EAAE,CAAEuI,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAC7CtI,iBAAiB,EAAE,CAAEmI,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAClDpI,gBAAgB,EAAE,CAAEiI,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IACjDlI,eAAe,EAAE,CAAE+H,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAChD7H,gBAAgB,EAAE,CAAE0H,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IACjDzH,WAAW,EAAE,CAAEsH,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAC5CxH,eAAe,EAAE,CAAEqH,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAChDtH,kBAAkB,EAAE,CAAEmH,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IACnD9G,cAAc,EAAE,CAAE2G,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAC/C7G,iBAAiB,EAAE,CAAE0G,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAClDvG,iCAAiC,EAAE,CAAEoG,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAClEvF,yBAAyB,EAAE,CAAEoF,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAC1DlF,MAAM,EAAE,CAAE+E,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACE,YAAY,CAAE;IAC5CjF,8BAA8B,EAAE,CAAE6E,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IAC/D5E,kCAAkC,EAAE,CAAEyE,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IACnE1E,qBAAqB,EAAE,CAAEuE,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACC,OAAO,CAAE;IACtDxE,QAAQ,EAAE,CAAEqE,MAAM,CAACC,MAAM,EAAEC,IAAI,CAACE,YAAY;AAC9C;AACF,CAAC,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"TriGeometryRes.js","sources":["../../../../src/resource/geometry/TriGeometryRes.js"],"sourcesContent":["// Source: trinity/trinity/Resources/TriGeometryRes.h\r\n// Source: trinity/trinity/Resources/TriGeometryRes.cpp\r\n// Source: trinity/trinity/Resources/TriGeometryRes_Blue.cpp\r\nimport { CjsSchema, carbon, impl, io, type } from \"@carbonenginejs/runtime-utils/schema\";\r\nimport { box3 } from \"@carbonenginejs/runtime-utils/box3\";\r\nimport { triangleNormalTo } from \"@carbonenginejs/runtime-utils/mesh\";\r\nimport { ray3 } from \"@carbonenginejs/runtime-utils/ray3\";\r\nimport { sph3 } from \"@carbonenginejs/runtime-utils/sph3\";\r\nimport { vec3 } from \"@carbonenginejs/runtime-utils/vec3\";\r\nimport { vec4 } from \"@carbonenginejs/runtime-utils/vec4\";\r\nimport { CjsResource } from \"../CjsResource.js\";\r\nimport {\r\n assertResourcePayloadArray,\r\n assertResourcePayloadObject,\r\n resourceBoundaryError,\r\n resourcePayloadError\r\n} from \"../resourceBoundary.js\";\r\n\r\n/**\r\n * Resource record that owns geometry payload facts (meshes, optional\r\n * skeletons and animations) and LOD-force metadata, while engine packages\r\n * decide device buffers, vertex declarations, and draw-time state.\r\n *\r\n * Geometry inspection composes the generic math supplied by runtime-utils\r\n * with resource-specific payload traversal.\r\n */\r\nexport class TriGeometryRes extends CjsResource\r\n{\r\n forceLod = false;\r\n forcedLodIndex = -1;\r\n name = \"\";\r\n\r\n /** Creates a TriGeometryRes with caller-provided initial state. */\r\n constructor(values = null)\r\n {\r\n super();\r\n this.SetValues(values || {}, {\r\n markDirty: false,\r\n skipUpdate: true,\r\n skipEvents: true\r\n });\r\n }\r\n\r\n /**\r\n * Attach a plain geometry payload.\r\n *\r\n * @param {object|null} payload\r\n * @param {object|null} options\r\n * @returns {TriGeometryRes}\r\n */\r\n SetPayload(payload = null, options = null)\r\n {\r\n if (payload === null)\r\n {\r\n super.SetPayload(null);\r\n return this;\r\n }\r\n assertResourcePayloadObject(\"TriGeometryRes\", payload);\r\n assertResourcePayloadArray(\"TriGeometryRes\", payload, \"meshes\");\r\n for (const field of [ \"skeletons\", \"animations\" ])\r\n {\r\n if (payload[field] !== undefined && !Array.isArray(payload[field]))\r\n {\r\n throw resourcePayloadError(\"TriGeometryRes\", \"Expected an array when provided.\", field);\r\n }\r\n }\r\n super.SetPayload(payload);\r\n this.SetValues(options || {});\r\n return this;\r\n }\r\n\r\n /**\r\n * Get mesh count from the CPU geometry payload.\r\n *\r\n * @returns {number}\r\n */\r\n GetMeshCount()\r\n {\r\n return this.GetPayload()?.meshes?.length || 0;\r\n }\r\n\r\n /**\r\n * Get animation count from the CPU geometry payload.\r\n *\r\n * @returns {number}\r\n */\r\n GetAnimationCount()\r\n {\r\n return this.GetPayload()?.animations?.length || 0;\r\n }\r\n\r\n /**\r\n * Get skeleton count from the CPU geometry payload.\r\n *\r\n * @returns {number}\r\n */\r\n GetSkeletonCount()\r\n {\r\n return this.GetPayload()?.skeletons?.length || 0;\r\n }\r\n\r\n /**\r\n * Get one resource-owned skeleton from the CPU geometry payload.\r\n *\r\n * @param {number} skeletonIndex\r\n * @returns {*}\r\n */\r\n GetSkeletonData(skeletonIndex = 0)\r\n {\r\n const index = Number(skeletonIndex);\r\n\r\n if (!Number.isInteger(index) || index < 0)\r\n {\r\n return null;\r\n }\r\n\r\n return this.GetPayload()?.skeletons?.[index] || null;\r\n }\r\n\r\n /**\r\n * Get mesh area count from a CPU geometry payload mesh.\r\n *\r\n * @param {number} meshIndex\r\n * @returns {number}\r\n */\r\n GetMeshAreaCount(meshIndex = 0)\r\n {\r\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\r\n return mesh?.areas?.length || 0;\r\n }\r\n\r\n // Carbon TriGeometryRes.cpp:294-319. Walks LODs from the LOWEST quality up\r\n // and takes the first whose authored maxScreenSize still covers the requested\r\n // size; a request larger than the best LOD falls back to LOD 0, which Carbon\r\n // comments explicitly. forceLod pins the index instead, clamped to the last\r\n // LOD.\r\n\r\n /**\r\n * The LOD index this mesh should be drawn at for a screen size, or -1 when the\r\n * mesh does not exist.\r\n *\r\n * @param {number} meshIndex\r\n * @param {number} screenSize\r\n * @returns {number}\r\n */\r\n GetLodIndexForScreenSize(meshIndex = 0, screenSize = Infinity)\r\n {\r\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\r\n\r\n if (!mesh) return -1;\r\n\r\n // A decoder may flatten a single-LOD mesh, putting the areas on the mesh\r\n // itself; that mesh IS its own only LOD (see getMeshAreas).\r\n const lods = mesh.lods?.length ? mesh.lods : null;\r\n const lastLod = lods ? lods.length - 1 : 0;\r\n\r\n if (this.forceLod && this.forcedLodIndex >= 0)\r\n {\r\n return Math.min(this.forcedLodIndex, lastLod);\r\n }\r\n\r\n for (let index = lastLod; index >= 0; index--)\r\n {\r\n const maxScreenSize = (lods ? lods[index]?.maxScreenSize : mesh.maxScreenSize) ?? 0;\r\n if (maxScreenSize >= screenSize) return index;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n // Carbon TriGeometryRes.cpp:268-279. Carbon overloads this on float\r\n // screenSize versus int lodIndex; JavaScript cannot, so the index form is\r\n // GetMeshLodByIndex. Carbon indexes m_lods with the result unguarded, so a\r\n // mesh with an EMPTY lod list reads out of bounds there; this port returns\r\n // null (docs/research/carbon-known-defects.md).\r\n\r\n /**\r\n * The LOD data this mesh should be drawn at for a screen size, or null when\r\n * the mesh has no LODs.\r\n *\r\n * @param {number} meshIndex\r\n * @param {number} screenSize\r\n * @returns {object|null}\r\n */\r\n GetMeshLod(meshIndex = 0, screenSize = Infinity)\r\n {\r\n return this.GetMeshLodByIndex(meshIndex, this.GetLodIndexForScreenSize(meshIndex, screenSize));\r\n }\r\n\r\n /**\r\n * The LOD data at an explicit index, or null when the mesh or index does not\r\n * exist (Carbon TriGeometryRes.cpp:281-292).\r\n *\r\n * @param {number} meshIndex\r\n * @param {number} lodIndex\r\n * @returns {object|null}\r\n */\r\n GetMeshLodByIndex(meshIndex = 0, lodIndex = 0)\r\n {\r\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\r\n\r\n if (!mesh || lodIndex < 0) return null;\r\n\r\n if (mesh.lods?.length)\r\n {\r\n return lodIndex < mesh.lods.length ? mesh.lods[lodIndex] : null;\r\n }\r\n\r\n return lodIndex === 0 && mesh.areas ? mesh : null;\r\n }\r\n\r\n /**\r\n * Get mesh name from a CPU geometry payload.\r\n *\r\n * @param {number} meshIndex\r\n * @returns {string}\r\n */\r\n GetMeshName(meshIndex = 0)\r\n {\r\n return this.GetPayload()?.meshes?.[meshIndex]?.name || \"\";\r\n }\r\n\r\n /**\r\n * Get mesh area name from a CPU geometry payload.\r\n *\r\n * @param {number} meshIndex\r\n * @param {number} areaIndex\r\n * @returns {string}\r\n */\r\n GetMeshAreaName(meshIndex = 0, areaIndex = 0)\r\n {\r\n return this.GetPayload()?.meshes?.[meshIndex]?.areas?.[areaIndex]?.name || \"\";\r\n }\r\n\r\n /**\r\n * Get area bounding box from geometry payload data.\r\n *\r\n * @param {number} meshIndex\r\n * @param {number} areaIndex\r\n * @param {ArrayLike<number>|null} outMin\r\n * @param {ArrayLike<number>|null} outMax\r\n * @returns {*|boolean}\r\n */\r\n GetAreaBoundingBox(meshIndex = 0, areaIndex = 0, outMin = null, outMax = null)\r\n {\r\n const area = TriGeometryRes.getMeshAreas(this.GetPayload()?.meshes?.[meshIndex])?.[areaIndex];\r\n const bounds = TriGeometryRes.getBounds(area);\r\n return TriGeometryRes.copyBounds(bounds, outMin, outMax);\r\n }\r\n\r\n /**\r\n * Get mesh bounding box from geometry payload data.\r\n * @param {number} meshIndex\r\n * @param {ArrayLike<number>|null} outMin\r\n * @param {ArrayLike<number>|null} outMax\r\n * @returns {*|boolean}\r\n */\r\n GetBoundingBox(meshIndex = 0, outMin = null, outMax = null)\r\n {\r\n const payload = this.GetPayload();\r\n const bounds = TriGeometryRes.getBounds(payload?.meshes?.[meshIndex])\r\n || TriGeometryRes.getBounds(payload);\r\n return TriGeometryRes.copyBounds(bounds, outMin, outMax);\r\n }\r\n\r\n /**\r\n * Get mesh bounding sphere from geometry payload data.\r\n * @param {number} meshIndex\r\n * @param {ArrayLike<number>|null} out\r\n * @returns {*|boolean}\r\n */\r\n GetBoundingSphere(meshIndex = 0, out = null)\r\n {\r\n const payload = this.GetPayload();\r\n const sphere = TriGeometryRes.getSphere(payload?.meshes?.[meshIndex])\r\n || TriGeometryRes.getSphere(payload);\r\n if (!out) return sphere;\r\n if (!sphere) return false;\r\n vec4.copy(out, sphere);\r\n return true;\r\n }\r\n\r\n /**\r\n * Calculate a transformed bounding box from canonical CPU vertex data.\r\n *\r\n * Carbon stores the same matrix bytes as gl-matrix; transforming one point\r\n * therefore uses the ordinary column-vector index layout.\r\n *\r\n * @param {number} meshIndex\r\n * @param {ArrayLike<number>} transform\r\n * @returns {{min: number[], max: number[]}|null}\r\n */\r\n CalculateBoundingBoxFromTransform(meshIndex = 0, transform = null)\r\n {\r\n if (!transform || transform.length < 16)\r\n {\r\n throw new TypeError(\"TriGeometryRes transform must contain 16 matrix elements.\");\r\n }\r\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\r\n if (!mesh) return null;\r\n const positions = TriGeometryRes.getMeshPositions(mesh);\r\n const sourceBounds = TriGeometryRes.getBounds(mesh);\r\n if (!positions && !sourceBounds) return null;\r\n\r\n const\r\n bounds = box3.alloc(),\r\n point = vec3.alloc();\r\n try\r\n {\r\n if (!TriGeometryRes.setBoundsFromPositions(bounds, positions, point))\r\n {\r\n if (!sourceBounds) return null;\r\n box3.fromBounds(bounds, sourceBounds.min, sourceBounds.max);\r\n }\r\n box3.transformMat4(bounds, bounds, transform);\r\n return {\r\n min: [ bounds[0], bounds[1], bounds[2] ],\r\n max: [ bounds[3], bounds[4], bounds[5] ]\r\n };\r\n }\r\n finally\r\n {\r\n vec3.unalloc(point);\r\n box3.unalloc(bounds);\r\n }\r\n }\r\n\r\n /**\r\n * Recalculate bounding sphere data from canonical CPU vertex positions.\r\n *\r\n * @returns {boolean}\r\n */\r\n RecalculateBoundingSphere()\r\n {\r\n let updated = false;\r\n const\r\n sphere = sph3.alloc(),\r\n point = vec3.alloc();\r\n try\r\n {\r\n for (const mesh of this.GetPayload()?.meshes || [])\r\n {\r\n if (!TriGeometryRes.calculateMeshSphere(sphere, mesh, point)) continue;\r\n TriGeometryRes.setMeshSphere(mesh, sphere);\r\n updated = true;\r\n }\r\n return updated;\r\n }\r\n finally\r\n {\r\n vec3.unalloc(point);\r\n sph3.unalloc(sphere);\r\n }\r\n }\r\n\r\n /**\r\n * Reloading belongs to the resource manager because it owns source and\r\n * canonical replacement policy.\r\n *\r\n * @throws {Error}\r\n */\r\n Reload() {\r\n throw resourceBoundaryError(\r\n \"TriGeometryRes\",\r\n \"Reload\",\r\n \"Request a reload through CjsResMan so source reads and canonical replacement remain manager-owned.\"\r\n );\r\n }\r\n\r\n /**\r\n * Intersect a ray with canonical CPU triangle data.\r\n *\r\n * @param {ArrayLike<number>} position\r\n * @param {ArrayLike<number>} direction\r\n * @returns {object}\r\n */\r\n GetIntersectionPointNormalBone(position, direction)\r\n {\r\n return TriGeometryRes.intersectGeometry(\r\n this.GetPayload()?.meshes,\r\n position,\r\n direction,\r\n -1\r\n );\r\n }\r\n\r\n /**\r\n * Intersect a ray with one area index across canonical CPU meshes.\r\n *\r\n * @param {ArrayLike<number>} position\r\n * @param {ArrayLike<number>} direction\r\n * @param {number} areaIndex\r\n * @returns {object}\r\n */\r\n GetAreaIntersectionPointNormalBone(position, direction, areaIndex = -1)\r\n {\r\n if (!Number.isInteger(areaIndex) || areaIndex < -1)\r\n {\r\n throw new RangeError(\"TriGeometryRes area index must be -1 or a non-negative integer.\");\r\n }\r\n return TriGeometryRes.intersectGeometry(\r\n this.GetPayload()?.meshes,\r\n position,\r\n direction,\r\n areaIndex\r\n );\r\n }\r\n\r\n /**\r\n * Get vertex element descriptors for a mesh.\r\n *\r\n * @param {number} meshIndex\r\n * @returns {Array<*>}\r\n */\r\n GetMeshVertexElements(meshIndex = 0)\r\n {\r\n // The CMF reader emits the element list as `decl`, matching the CMF struct\r\n // field; this accessor read only `vertexElements`, which no reader in this\r\n // package populates, so it returned an empty list for every real decoded\r\n // payload. Both names are accepted because the name is the producer's.\r\n const mesh = this.GetPayload()?.meshes?.[meshIndex];\r\n\r\n return mesh?.decl || mesh?.vertexElements || [];\r\n }\r\n\r\n /**\r\n * Saving belongs to the selected geometry format writer and destination.\r\n *\r\n * @throws {Error}\r\n */\r\n SaveMesh()\r\n {\r\n throw resourceBoundaryError(\r\n \"TriGeometryRes\",\r\n \"SaveMesh\",\r\n \"Use a geometry format writer with the resource payload and a caller-owned destination.\"\r\n );\r\n }\r\n\r\n static payload = \"geometry\";\r\n\r\n // Carbon TriGeometryRes.cpp:158-178, declared beside the class\r\n // (TriGeometryRes.h:202) because it reads LOD data rather than resource\r\n // state - which is why it is static here. It returns a PLAIN SUM and does not\r\n // multiply by three: the *3 belongs to the caller, so triangles-only is a\r\n // property of the mesh draw path rather than of the geometry layer.\r\n\r\n /**\r\n * The summed primitive count over `count` areas of a LOD starting at `index`,\r\n * with the run clamped to the area list as Carbon clamps it; zero when the\r\n * index is out of range, which callers treat as \"emit no draw\".\r\n *\r\n * @param {object|null} lod\r\n * @param {number} index\r\n * @param {number} count\r\n * @returns {number}\r\n */\r\n static getPrimitiveCount(lod, index, count)\r\n {\r\n const areas = lod?.areas ?? null;\r\n const areaCount = areas?.length ?? 0;\r\n\r\n if (!areaCount || index >= areaCount) return 0;\r\n\r\n const run = index + count > areaCount ? areaCount - index : count;\r\n\r\n let primitiveCount = 0;\r\n\r\n for (let offset = 0; offset < run; offset++)\r\n {\r\n primitiveCount += areas[index + offset]?.primitiveCount ?? 0;\r\n }\r\n\r\n return primitiveCount;\r\n }\r\n\r\n /**\r\n * Gets the canonical area list from a mesh or its first LOD.\r\n *\r\n * @param {object|null} mesh\r\n * @returns {Array<*>|null}\r\n */\r\n static getMeshAreas(mesh)\r\n {\r\n return mesh?.areas || mesh?.lods?.[0]?.areas || null;\r\n }\r\n\r\n /**\r\n * Gets canonical bounds from a geometry payload object.\r\n *\r\n * @param {object|null} value\r\n * @returns {{min: ArrayLike<number>, max: ArrayLike<number>}|null}\r\n */\r\n static getBounds(value)\r\n {\r\n if (!value || typeof value !== \"object\") return null;\r\n if (value.bounds?.min && value.bounds?.max) return value.bounds;\r\n if (value.minBounds && value.maxBounds)\r\n {\r\n return { min: value.minBounds, max: value.maxBounds };\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Gets the canonical bounding sphere from a geometry payload object.\r\n *\r\n * @param {object|null} value\r\n * @returns {ArrayLike<number>|null}\r\n */\r\n static getSphere(value)\r\n {\r\n if (!value || typeof value !== \"object\") return null;\r\n return value.sphere || value.boundingSphere || null;\r\n }\r\n\r\n /**\r\n * Copies bounds into caller-owned outputs, or returns the source object.\r\n *\r\n * @param {{min: ArrayLike<number>, max: ArrayLike<number>}|null} bounds\r\n * @param {ArrayLike<number>|null} outMin\r\n * @param {ArrayLike<number>|null} outMax\r\n * @returns {*|boolean}\r\n */\r\n static copyBounds(bounds, outMin, outMax)\r\n {\r\n if (!outMin && !outMax) return bounds;\r\n if (!bounds || !outMin || !outMax) return false;\r\n vec3.copy(outMin, bounds.min);\r\n vec3.copy(outMax, bounds.max);\r\n return true;\r\n }\r\n\r\n /**\r\n * Gets canonical positions from a mesh or its first LOD.\r\n *\r\n * @param {object|null} mesh\r\n * @returns {ArrayLike<number>|Array<ArrayLike<number>>|null}\r\n */\r\n static getMeshPositions(mesh)\r\n {\r\n return mesh?.vertex?.position\r\n || mesh?.positions\r\n || mesh?.lods?.[0]?.vertex?.position\r\n || mesh?.lods?.[0]?.positions\r\n || null;\r\n }\r\n\r\n /**\r\n * Gets the number of vertices represented by flat or nested positions.\r\n *\r\n * @param {ArrayLike<number>|Array<ArrayLike<number>>|null} positions\r\n * @returns {number}\r\n */\r\n static getPositionCount(positions)\r\n {\r\n if (!positions) return 0;\r\n return typeof positions[0] === \"number\"\r\n ? Math.floor(positions.length / 3)\r\n : positions.length;\r\n }\r\n\r\n /**\r\n * Calculates bounds from canonical positions using caller-owned scratch.\r\n *\r\n * @param {ArrayLike<number>} out\r\n * @param {ArrayLike<number>|Array<ArrayLike<number>>|null} positions\r\n * @param {ArrayLike<number>} point\r\n * @returns {boolean}\r\n */\r\n static setBoundsFromPositions(out, positions, point)\r\n {\r\n const count = this.getPositionCount(positions);\r\n let found = false;\r\n for (let index = 0; index < count; index++)\r\n {\r\n if (!this.copyPosition(point, positions, index)) continue;\r\n if (!found)\r\n {\r\n out[0] = out[3] = point[0];\r\n out[1] = out[4] = point[1];\r\n out[2] = out[5] = point[2];\r\n found = true;\r\n continue;\r\n }\r\n out[0] = Math.min(out[0], point[0]);\r\n out[1] = Math.min(out[1], point[1]);\r\n out[2] = Math.min(out[2], point[2]);\r\n out[3] = Math.max(out[3], point[0]);\r\n out[4] = Math.max(out[4], point[1]);\r\n out[5] = Math.max(out[5], point[2]);\r\n }\r\n return found;\r\n }\r\n\r\n /**\r\n * Calculates a bounding sphere from positions using caller-owned scratch.\r\n *\r\n * @param {ArrayLike<number>} out\r\n * @param {ArrayLike<number>|Array<ArrayLike<number>>|null} positions\r\n * @param {ArrayLike<number>} point\r\n * @returns {boolean}\r\n */\r\n static setSphereFromPositions(out, positions, point)\r\n {\r\n const count = this.getPositionCount(positions);\r\n let\r\n found = false,\r\n minX = Infinity,\r\n minY = Infinity,\r\n minZ = Infinity,\r\n maxX = -Infinity,\r\n maxY = -Infinity,\r\n maxZ = -Infinity;\r\n\r\n for (let index = 0; index < count; index++)\r\n {\r\n if (!this.copyPosition(point, positions, index)) continue;\r\n minX = Math.min(minX, point[0]);\r\n minY = Math.min(minY, point[1]);\r\n minZ = Math.min(minZ, point[2]);\r\n maxX = Math.max(maxX, point[0]);\r\n maxY = Math.max(maxY, point[1]);\r\n maxZ = Math.max(maxZ, point[2]);\r\n found = true;\r\n }\r\n if (!found) return false;\r\n\r\n out[0] = (minX + maxX) * 0.5;\r\n out[1] = (minY + maxY) * 0.5;\r\n out[2] = (minZ + maxZ) * 0.5;\r\n let maxSquaredRadius = 0;\r\n for (let index = 0; index < count; index++)\r\n {\r\n if (!this.copyPosition(point, positions, index)) continue;\r\n const\r\n x = out[0] - point[0],\r\n y = out[1] - point[1],\r\n z = out[2] - point[2];\r\n maxSquaredRadius = Math.max(maxSquaredRadius, x * x + y * y + z * z);\r\n }\r\n out[3] = Math.sqrt(maxSquaredRadius);\r\n return true;\r\n }\r\n\r\n /**\r\n * Calculates a mesh sphere from positions or existing bounds.\r\n *\r\n * @param {ArrayLike<number>} out\r\n * @param {object} mesh\r\n * @param {ArrayLike<number>} point\r\n * @returns {boolean}\r\n */\r\n static calculateMeshSphere(out, mesh, point)\r\n {\r\n if (this.setSphereFromPositions(out, this.getMeshPositions(mesh), point)) return true;\r\n const bounds = this.getBounds(mesh);\r\n if (!bounds) return false;\r\n sph3.fromBounds(out, bounds.min, bounds.max);\r\n return true;\r\n }\r\n\r\n /**\r\n * Stores a calculated sphere in the mesh's canonical sphere fields.\r\n *\r\n * @param {object} mesh\r\n * @param {ArrayLike<number>} sphere\r\n * @returns {void}\r\n */\r\n static setMeshSphere(mesh, sphere)\r\n {\r\n if (mesh.sphere && typeof mesh.sphere.set === \"function\") mesh.sphere.set(sphere);\r\n else mesh.sphere = [ ...sphere ];\r\n if (mesh.boundingSphere && typeof mesh.boundingSphere.set === \"function\")\r\n {\r\n mesh.boundingSphere.set(sphere);\r\n }\r\n else if (\"boundingSphere\" in mesh)\r\n {\r\n mesh.boundingSphere = [ ...sphere ];\r\n }\r\n }\r\n\r\n /**\r\n * Intersects a ray with canonical CPU geometry.\r\n *\r\n * @param {Array<object>|null} meshes\r\n * @param {ArrayLike<number>} position\r\n * @param {ArrayLike<number>} direction\r\n * @param {number} areaIndex\r\n * @returns {object}\r\n */\r\n static intersectGeometry(meshes, position, direction, areaIndex)\r\n {\r\n this.validateRayVector(position, \"position\");\r\n this.validateRayVector(direction, \"direction\");\r\n const\r\n ray = ray3.from(ray3.alloc(), position, direction),\r\n point = vec3.alloc(),\r\n vertexA = vec3.alloc(),\r\n vertexB = vec3.alloc(),\r\n vertexC = vec3.alloc(),\r\n normal = vec3.alloc();\r\n let nearest = null;\r\n try\r\n {\r\n for (let meshIndex = 0; meshIndex < (meshes?.length || 0); meshIndex++)\r\n {\r\n const mesh = meshes[meshIndex];\r\n const positions = this.getMeshPositions(mesh);\r\n if (!positions) continue;\r\n const groups = mesh?.indices || mesh?.lods?.[0]?.indices || null;\r\n if (ArrayBuffer.isView(groups)\r\n || (Array.isArray(groups) && typeof groups[0] === \"number\"))\r\n {\r\n if (areaIndex !== -1 && areaIndex !== 0) continue;\r\n nearest = this.intersectFaces(\r\n nearest,\r\n groups,\r\n 0,\r\n mesh,\r\n meshIndex,\r\n positions,\r\n position,\r\n ray,\r\n point,\r\n vertexA,\r\n vertexB,\r\n vertexC,\r\n normal\r\n );\r\n continue;\r\n }\r\n if (Array.isArray(groups))\r\n {\r\n for (let groupIndex = 0; groupIndex < groups.length; groupIndex++)\r\n {\r\n if (areaIndex !== -1 && areaIndex !== groupIndex) continue;\r\n const faces = groups[groupIndex]?.faces || groups[groupIndex]?.indices || [];\r\n nearest = this.intersectFaces(\r\n nearest,\r\n faces,\r\n groupIndex,\r\n mesh,\r\n meshIndex,\r\n positions,\r\n position,\r\n ray,\r\n point,\r\n vertexA,\r\n vertexB,\r\n vertexC,\r\n normal\r\n );\r\n }\r\n continue;\r\n }\r\n if (areaIndex === -1 || areaIndex === 0)\r\n {\r\n nearest = this.intersectFaces(\r\n nearest,\r\n null,\r\n 0,\r\n mesh,\r\n meshIndex,\r\n positions,\r\n position,\r\n ray,\r\n point,\r\n vertexA,\r\n vertexB,\r\n vertexC,\r\n normal\r\n );\r\n }\r\n }\r\n return nearest || {\r\n hit: false,\r\n boneIndex: -1,\r\n point: [ 0, 0, 0 ],\r\n normal: [ 0, 0, 0 ],\r\n distance: Infinity,\r\n meshIndex: -1,\r\n areaIndex\r\n };\r\n }\r\n finally\r\n {\r\n vec3.unalloc(normal);\r\n vec3.unalloc(vertexC);\r\n vec3.unalloc(vertexB);\r\n vec3.unalloc(vertexA);\r\n vec3.unalloc(point);\r\n ray3.unalloc(ray);\r\n }\r\n }\r\n\r\n /**\r\n * Validates a caller-provided ray vector.\r\n *\r\n * @param {ArrayLike<number>} value\r\n * @param {string} name\r\n * @returns {void}\r\n */\r\n static validateRayVector(value, name)\r\n {\r\n if (!value\r\n || value.length < 3\r\n || !Number.isFinite(value[0])\r\n || !Number.isFinite(value[1])\r\n || !Number.isFinite(value[2]))\r\n {\r\n throw new TypeError(`TriGeometryRes ray ${name} must contain three finite numbers.`);\r\n }\r\n }\r\n\r\n /**\r\n * Intersects a ray with one flat face list.\r\n *\r\n * @param {object|null} nearest\r\n * @param {ArrayLike<number>|null} faces\r\n * @param {number} areaIndex\r\n * @param {object} mesh\r\n * @param {number} meshIndex\r\n * @param {ArrayLike<number>|Array<ArrayLike<number>>} positions\r\n * @param {ArrayLike<number>} rayOrigin\r\n * @param {ArrayLike<number>} ray\r\n * @param {ArrayLike<number>} point\r\n * @param {ArrayLike<number>} vertexA\r\n * @param {ArrayLike<number>} vertexB\r\n * @param {ArrayLike<number>} vertexC\r\n * @param {ArrayLike<number>} normal\r\n * @returns {object|null}\r\n */\r\n static intersectFaces(\r\n nearest,\r\n faces,\r\n areaIndex,\r\n mesh,\r\n meshIndex,\r\n positions,\r\n rayOrigin,\r\n ray,\r\n point,\r\n vertexA,\r\n vertexB,\r\n vertexC,\r\n normal\r\n )\r\n {\r\n const count = faces?.length ?? this.getPositionCount(positions);\r\n for (let index = 0; index + 2 < count; index += 3)\r\n {\r\n const\r\n vertexIndexA = faces ? faces[index] : index,\r\n vertexIndexB = faces ? faces[index + 1] : index + 1,\r\n vertexIndexC = faces ? faces[index + 2] : index + 2;\r\n if (!this.copyPosition(vertexA, positions, vertexIndexA)\r\n || !this.copyPosition(vertexB, positions, vertexIndexB)\r\n || !this.copyPosition(vertexC, positions, vertexIndexC)\r\n || !ray3.getIntersectVertices(\r\n point,\r\n ray,\r\n vertexA,\r\n vertexB,\r\n vertexC,\r\n false\r\n ))\r\n {\r\n continue;\r\n }\r\n const distance = vec3.distance(rayOrigin, point);\r\n if (nearest && nearest.distance <= distance) continue;\r\n if (!nearest)\r\n {\r\n nearest = {\r\n hit: true,\r\n boneIndex: -1,\r\n point: [ 0, 0, 0 ],\r\n normal: [ 0, 0, 0 ],\r\n distance,\r\n meshIndex,\r\n areaIndex\r\n };\r\n }\r\n nearest.boneIndex = this.getMeshBoneIndex(mesh, vertexIndexA);\r\n vec3.copy(nearest.point, point);\r\n triangleNormalTo(normal, vertexA, vertexB, vertexC);\r\n vec3.copy(nearest.normal, normal);\r\n nearest.distance = distance;\r\n nearest.meshIndex = meshIndex;\r\n nearest.areaIndex = areaIndex;\r\n }\r\n return nearest;\r\n }\r\n\r\n /**\r\n * Copies one flat or nested position into caller-owned output.\r\n *\r\n * @param {ArrayLike<number>} out\r\n * @param {ArrayLike<number>|Array<ArrayLike<number>>} positions\r\n * @param {number} index\r\n * @returns {boolean}\r\n */\r\n static copyPosition(out, positions, index)\r\n {\r\n if (!Number.isInteger(index) || index < 0) return false;\r\n if (typeof positions[0] === \"number\")\r\n {\r\n const offset = index * 3;\r\n if (offset + 2 >= positions.length) return false;\r\n out[0] = positions[offset];\r\n out[1] = positions[offset + 1];\r\n out[2] = positions[offset + 2];\r\n return true;\r\n }\r\n const point = positions[index];\r\n if (!point || point.length < 3) return false;\r\n out[0] = point[0];\r\n out[1] = point[1];\r\n out[2] = point[2];\r\n return true;\r\n }\r\n\r\n /**\r\n * Gets the first blend index for a mesh vertex.\r\n *\r\n * @param {object} mesh\r\n * @param {number} vertexIndex\r\n * @returns {number}\r\n */\r\n static getMeshBoneIndex(mesh, vertexIndex)\r\n {\r\n const indices = mesh?.vertex?.blendIndices || mesh?.blendIndices;\r\n if (!indices) return -1;\r\n if (typeof indices[0] === \"number\")\r\n {\r\n return Number(indices[vertexIndex * 4] ?? indices[vertexIndex] ?? -1);\r\n }\r\n return Number(indices[vertexIndex]?.[0] ?? -1);\r\n }\r\n\r\n}\r\n\r\n// Declared as data rather than with decorators, so the resource tree loads from\r\n// source without a transform. Field order is key order, and GetValues() exports\r\n// in that order.\r\nCjsSchema.define(TriGeometryRes, {\r\n className: \"TriGeometryRes\",\r\n family: \"resources\",\r\n fields: {\r\n forceLod: [ type.boolean, io.readwrite ],\r\n forcedLodIndex: [ type.int32, io.readwrite ],\r\n name: [ type.string, io.readwrite ]\r\n },\r\n methods: {\r\n GetMeshCount: [ carbon.method, impl.adapted ],\r\n GetAnimationCount: [ carbon.method, impl.adapted ],\r\n GetSkeletonCount: [ carbon.method, impl.adapted ],\r\n GetSkeletonData: [ carbon.method, impl.adapted ],\r\n GetMeshAreaCount: [ carbon.method, impl.adapted ],\r\n GetLodIndexForScreenSize: [ carbon.method, impl.adapted ],\r\n GetMeshLod: [ carbon.method, impl.adapted ],\r\n GetMeshLodByIndex: [ carbon.method, impl.adapted ],\r\n GetMeshName: [ carbon.method, impl.adapted ],\r\n GetMeshAreaName: [ carbon.method, impl.adapted ],\r\n GetAreaBoundingBox: [ carbon.method, impl.adapted ],\r\n GetBoundingBox: [ carbon.method, impl.adapted ],\r\n GetBoundingSphere: [ carbon.method, impl.adapted ],\r\n CalculateBoundingBoxFromTransform: [ carbon.method, impl.adapted ],\r\n RecalculateBoundingSphere: [ carbon.method, impl.adapted ],\r\n Reload: [ carbon.method, impl.notSupported ],\r\n GetIntersectionPointNormalBone: [ carbon.method, impl.adapted ],\r\n GetAreaIntersectionPointNormalBone: [ carbon.method, impl.adapted ],\r\n GetMeshVertexElements: [ carbon.method, impl.adapted ],\r\n SaveMesh: [ carbon.method, impl.notSupported ]\r\n }\r\n});\r\n"],"names":["TriGeometryRes","CjsResource","forceLod","forcedLodIndex","name","constructor","values","SetValues","markDirty","skipUpdate","skipEvents","SetPayload","payload","options","assertResourcePayloadObject","assertResourcePayloadArray","field","undefined","Array","isArray","resourcePayloadError","GetMeshCount","GetPayload","meshes","length","GetAnimationCount","animations","GetSkeletonCount","skeletons","GetSkeletonData","skeletonIndex","index","Number","isInteger","GetMeshAreaCount","meshIndex","mesh","areas","GetLodIndexForScreenSize","screenSize","Infinity","lods","lastLod","Math","min","maxScreenSize","GetMeshLod","GetMeshLodByIndex","lodIndex","GetMeshName","GetMeshAreaName","areaIndex","GetAreaBoundingBox","outMin","outMax","area","getMeshAreas","bounds","getBounds","copyBounds","GetBoundingBox","GetBoundingSphere","out","sphere","getSphere","vec4","copy","CalculateBoundingBoxFromTransform","transform","TypeError","positions","getMeshPositions","sourceBounds","box3","alloc","point","vec3","setBoundsFromPositions","fromBounds","max","transformMat4","unalloc","RecalculateBoundingSphere","updated","sph3","calculateMeshSphere","setMeshSphere","Reload","resourceBoundaryError","GetIntersectionPointNormalBone","position","direction","intersectGeometry","GetAreaIntersectionPointNormalBone","RangeError","GetMeshVertexElements","decl","vertexElements","SaveMesh","getPrimitiveCount","lod","count","areaCount","run","primitiveCount","offset","value","minBounds","maxBounds","boundingSphere","vertex","getPositionCount","floor","found","copyPosition","setSphereFromPositions","minX","minY","minZ","maxX","maxY","maxZ","maxSquaredRadius","x","y","z","sqrt","set","validateRayVector","ray","ray3","from","vertexA","vertexB","vertexC","normal","nearest","groups","indices","ArrayBuffer","isView","intersectFaces","groupIndex","faces","hit","boneIndex","distance","isFinite","rayOrigin","vertexIndexA","vertexIndexB","vertexIndexC","getIntersectVertices","getMeshBoneIndex","triangleNormalTo","vertexIndex","blendIndices","CjsSchema","define","className","family","fields","type","boolean","io","readwrite","int32","string","methods","carbon","method","impl","adapted","notSupported"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CjsSchema, type, impl
|
|
1
|
+
import { CjsSchema, type, impl } from '@carbonenginejs/runtime-utils/schema';
|
|
2
2
|
import { CjsModel } from '@carbonenginejs/runtime-utils/model';
|
|
3
3
|
import { dwordToFloat } from '@carbonenginejs/runtime-utils/math/num';
|
|
4
4
|
import { isPlainObject } from '@carbonenginejs/runtime-utils/is';
|
|
@@ -112,7 +112,7 @@ CjsSchema.define(Tr2EffectParameterAnnotation, {
|
|
|
112
112
|
family: "shader",
|
|
113
113
|
fields: {
|
|
114
114
|
name: type.string,
|
|
115
|
-
type: [type.int32,
|
|
115
|
+
type: [type.int32, type.enum("Type")],
|
|
116
116
|
boolValue: type.boolean,
|
|
117
117
|
rawValue: [impl.adapted, impl.reason("Carbon reads numeric annotations into typed values; the portable source contract retains the exact uint32 payload so NaN, negative zero, and integer bit patterns round-trip losslessly."), type.uint32],
|
|
118
118
|
intValue: type.int32,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2EffectParameterAnnotation.js","sources":["../../../../../src/resource/shader/reflection/Tr2EffectParameterAnnotation.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\nimport { CjsSchema, impl,
|
|
1
|
+
{"version":3,"file":"Tr2EffectParameterAnnotation.js","sources":["../../../../../src/resource/shader/reflection/Tr2EffectParameterAnnotation.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\nimport { CjsSchema, impl, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport { dwordToFloat } from \"@carbonenginejs/runtime-utils/math/num\";\nimport {\n isPlainObject\n} from \"@carbonenginejs/runtime-utils/is\";\nimport { recordRawValue, recordText, toRecordRawValue, toRecordText } from \"./carbonRecordFields.js\";\n\n/** Typed annotation attached to a reflected effect parameter. */\nexport class Tr2EffectParameterAnnotation extends CjsModel\n{\n\n /** name (const char*) */\n name = \"\";\n\n /** type (Type - enum Type) */\n type = 0;\n\n /** boolValue (bool) */\n boolValue = false;\n\n /** Exact serialized BOOL, INT, or FLOAT payload bits. */\n rawValue = 0;\n\n /** intValue (int) */\n intValue = 0;\n\n /** floatValue (float) */\n floatValue = 0;\n\n /** stringValue (const char*) */\n stringValue = \"\";\n\n /**\n * Build one typed annotation from its Carbon v15 description record.\n *\n * The type byte decides which member is meaningful, and every non-string type\n * arrives as four untyped bytes rather than a number — Carbon writes the value\n * through one member of a `{float,int32_t}` union and reads it back through\n * another, so the bit pattern is the only faithful carrier. `rawValue` keeps\n * those bits and the typed accessor is derived from them, never the reverse.\n *\n * @param {object} record Carbon annotation record.\n * @returns {Tr2EffectParameterAnnotation} Reflected annotation.\n */\n static fromCarbonBinary(record)\n {\n if (!isPlainObject(record))\n {\n throw new TypeError(\"Carbon effect annotation record must be an object\");\n }\n\n const annotation = new this();\n annotation.name = recordText(record.name);\n annotation.type = record.type;\n\n switch (annotation.type)\n {\n case this.Type.BOOL:\n annotation.rawValue = recordRawValue(record.rawValue);\n annotation.boolValue = annotation.rawValue !== 0;\n break;\n\n case this.Type.INT:\n annotation.rawValue = recordRawValue(record.rawValue);\n annotation.intValue = annotation.rawValue | 0;\n break;\n\n case this.Type.FLOAT:\n annotation.rawValue = recordRawValue(record.rawValue);\n annotation.floatValue = dwordToFloat(annotation.rawValue);\n break;\n\n case this.Type.STRING:\n annotation.stringValue = recordText(record.stringValue);\n break;\n\n default:\n throw new Error(\n `Carbon effect annotation type ${annotation.type} is unsupported`\n );\n }\n\n return annotation;\n }\n\n /**\n * Emit this annotation as a Carbon v15 record.\n *\n * The type byte decides which branch the writer takes, and every non-string\n * type travels as the raw bits rather than the typed member.\n *\n * @returns {object} Carbon annotation record.\n */\n toCarbonBinary()\n {\n if (this.type === Tr2EffectParameterAnnotation.Type.STRING)\n {\n return {\n name: toRecordText(this.name),\n type: this.type,\n stringValue: toRecordText(this.stringValue),\n rawValue: null\n };\n }\n return {\n name: toRecordText(this.name),\n type: this.type,\n stringValue: null,\n rawValue: toRecordRawValue(this.rawValue)\n };\n }\n\n static Type = Object.freeze({\n BOOL: 0,\n INT: 1,\n FLOAT: 2,\n STRING: 3\n });\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectParameterAnnotation, {\n className: \"Tr2EffectParameterAnnotation\",\n family: \"shader\",\n fields: {\n name: type.string,\n type: [ type.int32, type.enum(\"Type\") ],\n boolValue: type.boolean,\n rawValue: [ impl.adapted, impl.reason(\"Carbon reads numeric annotations into typed values; the portable source contract retains the exact uint32 payload so NaN, negative zero, and integer bit patterns round-trip losslessly.\"), type.uint32 ],\n intValue: type.int32,\n floatValue: type.float32,\n stringValue: type.string\n }\n});\n"],"names":["Tr2EffectParameterAnnotation","CjsModel","name","type","boolValue","rawValue","intValue","floatValue","stringValue","fromCarbonBinary","record","isPlainObject","TypeError","annotation","recordText","Type","BOOL","recordRawValue","INT","FLOAT","dwordToFloat","STRING","Error","toCarbonBinary","toRecordText","toRecordRawValue","Object","freeze","CjsSchema","define","className","family","fields","string","int32","enum","boolean","impl","adapted","reason","uint32","float32"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CjsSchema, type
|
|
1
|
+
import { CjsSchema, type } from '@carbonenginejs/runtime-utils/schema';
|
|
2
2
|
import { CjsModel } from '@carbonenginejs/runtime-utils/model';
|
|
3
3
|
import { isPlainObject } from '@carbonenginejs/runtime-utils/is';
|
|
4
4
|
import { recordText, toRecordText } from './carbonRecordFields.js';
|
|
@@ -111,7 +111,7 @@ CjsSchema.define(Tr2EffectResource, {
|
|
|
111
111
|
isSRGB: type.boolean,
|
|
112
112
|
isAutoregister: type.boolean,
|
|
113
113
|
name: type.string,
|
|
114
|
-
type: [type.int32,
|
|
114
|
+
type: [type.int32, type.enum("Type")],
|
|
115
115
|
arrayElements: type.uint32
|
|
116
116
|
}
|
|
117
117
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2EffectResource.js","sources":["../../../../../src/resource/shader/reflection/Tr2EffectResource.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\nimport { CjsSchema, impl,
|
|
1
|
+
{"version":3,"file":"Tr2EffectResource.js","sources":["../../../../../src/resource/shader/reflection/Tr2EffectResource.js"],"sourcesContent":["// Source: trinity/trinity/Shader/Tr2EffectDescription.h\nimport { CjsSchema, impl, type } from \"@carbonenginejs/runtime-utils/schema\";\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\nimport {\n isPlainObject\n} from \"@carbonenginejs/runtime-utils/is\";\nimport { recordText, toRecordText } from \"./carbonRecordFields.js\";\n\n/** Reflected SRV or UAV resource metadata. */\nexport class Tr2EffectResource extends CjsModel\n{\n\n /** isSRGB (bool) */\n isSRGB = false;\n\n /** isAutoregister (bool) */\n isAutoregister = false;\n\n /** name (const char*) */\n name = \"\";\n\n /** type (Type - enum Type) */\n type = 0;\n\n /** arrayElements (uint32_t) */\n arrayElements = 0;\n\n /**\n * Build one SRV or UAV from its Carbon v15 description record.\n *\n * Both a texture record and a UAV record land here, and they are not the same\n * shape: a UAV record carries no `isSRGB` at all. Carbon's reader hardcodes\n * `isSRGB = false` for UAVs rather than reading a byte, and `Uav::Save` omits\n * it, so the field being absent is correct rather than missing — reading\n * `undefined` through `!!` reproduces Carbon exactly. The array size is spelled\n * `count` in the record and `arrayElements` on the class.\n *\n * @param {object} record Carbon texture or UAV record.\n * @returns {Tr2EffectResource} Reflected resource.\n */\n static fromCarbonBinary(record)\n {\n if (!isPlainObject(record))\n {\n throw new TypeError(\"Carbon effect resource record must be an object\");\n }\n\n const resource = new this();\n resource.name = recordText(record.name);\n resource.type = record.type;\n resource.arrayElements = record.count;\n resource.isSRGB = !!record.isSRGB;\n resource.isAutoregister = !!record.isAutoregister;\n return resource;\n }\n\n /**\n * Emit this resource as a Carbon v15 texture or UAV record.\n *\n * A UAV record is one byte shorter: it carries no `isSRGB`, because Carbon's\n * reader hardcodes it false and `Uav::Save` omits it. Emitting the field\n * anyway would desynchronise every following field in the stage.\n *\n * @param {number} registerIndex Register this resource is bound at.\n * @param {boolean} [uav] Whether to emit the UAV shape.\n * @returns {object} Carbon texture or UAV record.\n */\n toCarbonBinary(registerIndex, uav = false)\n {\n const record = {\n registerIndex,\n name: toRecordText(this.name),\n type: this.type,\n count: this.arrayElements,\n isAutoregister: this.isAutoregister ? 1 : 0\n };\n if (uav)\n {\n return record;\n }\n return {\n registerIndex,\n name: record.name,\n type: record.type,\n count: record.count,\n isSRGB: this.isSRGB ? 1 : 0,\n isAutoregister: record.isAutoregister\n };\n }\n\n static BINDLESS_SAMPLER = 100;\n\n static Type = Object.freeze({\n TEXTURE_1D: 1,\n TEXTURE_2D: 2,\n TEXTURE_3D: 3,\n TEXTURE_CUBE: 4,\n TEXTURE_TYPELESS: 5,\n BUFFER: 6,\n STRUCTURED_BUFFER: 7,\n TBUFFER: 8,\n BYTEADDRESS_BUFFER: 9,\n UAV_RWTYPED: 10,\n UAV_RWSTRUCTURED: 11,\n UAV_RWBYTEADDRESS: 12,\n UAV_APPEND_STRUCTURED: 13,\n UAV_CONSUME_STRUCTURED: 14,\n UAV_RWSTRUCTURED_WITH_COUNTER: 15\n });\n\n}\n\n// Declared imperatively rather than with decorators, so this module stays\n// plain ESM that loads from source without a transform. The decorator\n// expressions are reused verbatim, so the registered metadata is identical.\n// Statics belong in `methods`: decorateMethod targets the prototype and\n// would register a static as an instance field.\nCjsSchema.define(Tr2EffectResource, {\n className: \"Tr2EffectResource\",\n family: \"shader\",\n fields: {\n isSRGB: type.boolean,\n isAutoregister: type.boolean,\n name: type.string,\n type: [ type.int32, type.enum(\"Type\") ],\n arrayElements: type.uint32\n }\n});\n"],"names":["Tr2EffectResource","CjsModel","isSRGB","isAutoregister","name","type","arrayElements","fromCarbonBinary","record","isPlainObject","TypeError","resource","recordText","count","toCarbonBinary","registerIndex","uav","toRecordText","BINDLESS_SAMPLER","Type","Object","freeze","TEXTURE_1D","TEXTURE_2D","TEXTURE_3D","TEXTURE_CUBE","TEXTURE_TYPELESS","BUFFER","STRUCTURED_BUFFER","TBUFFER","BYTEADDRESS_BUFFER","UAV_RWTYPED","UAV_RWSTRUCTURED","UAV_RWBYTEADDRESS","UAV_APPEND_STRUCTURED","UAV_CONSUME_STRUCTURED","UAV_RWSTRUCTURED_WITH_COUNTER","CjsSchema","define","className","family","fields","boolean","string","int32","enum","uint32"],"mappings":";;;;;AAAA;;AAQA;AACO,MAAMA,iBAAiB,SAASC,QAAQ,CAC/C;AAEE;AACAC,EAAAA,MAAM,GAAG,KAAK;;AAEd;AACAC,EAAAA,cAAc,GAAG,KAAK;;AAEtB;AACAC,EAAAA,IAAI,GAAG,EAAE;;AAET;AACAC,EAAAA,IAAI,GAAG,CAAC;;AAER;AACAC,EAAAA,aAAa,GAAG,CAAC;;AAEjB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,OAAOC,gBAAgBA,CAACC,MAAM,EAC9B;AACE,IAAA,IAAI,CAACC,aAAa,CAACD,MAAM,CAAC,EAC1B;AACE,MAAA,MAAM,IAAIE,SAAS,CAAC,iDAAiD,CAAC;AACxE,IAAA;AAEA,IAAA,MAAMC,QAAQ,GAAG,IAAI,IAAI,EAAE;IAC3BA,QAAQ,CAACP,IAAI,GAAGQ,UAAU,CAACJ,MAAM,CAACJ,IAAI,CAAC;AACvCO,IAAAA,QAAQ,CAACN,IAAI,GAAGG,MAAM,CAACH,IAAI;AAC3BM,IAAAA,QAAQ,CAACL,aAAa,GAAGE,MAAM,CAACK,KAAK;AACrCF,IAAAA,QAAQ,CAACT,MAAM,GAAG,CAAC,CAACM,MAAM,CAACN,MAAM;AACjCS,IAAAA,QAAQ,CAACR,cAAc,GAAG,CAAC,CAACK,MAAM,CAACL,cAAc;AACjD,IAAA,OAAOQ,QAAQ;AACjB,EAAA;;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEG,EAAAA,cAAcA,CAACC,aAAa,EAAEC,GAAG,GAAG,KAAK,EACzC;AACE,IAAA,MAAMR,MAAM,GAAG;MACbO,aAAa;AACbX,MAAAA,IAAI,EAAEa,YAAY,CAAC,IAAI,CAACb,IAAI,CAAC;MAC7BC,IAAI,EAAE,IAAI,CAACA,IAAI;MACfQ,KAAK,EAAE,IAAI,CAACP,aAAa;AACzBH,MAAAA,cAAc,EAAE,IAAI,CAACA,cAAc,GAAG,CAAC,GAAG;KAC3C;AACD,IAAA,IAAIa,GAAG,EACP;AACE,MAAA,OAAOR,MAAM;AACf,IAAA;IACA,OAAO;MACLO,aAAa;MACbX,IAAI,EAAEI,MAAM,CAACJ,IAAI;MACjBC,IAAI,EAAEG,MAAM,CAACH,IAAI;MACjBQ,KAAK,EAAEL,MAAM,CAACK,KAAK;AACnBX,MAAAA,MAAM,EAAE,IAAI,CAACA,MAAM,GAAG,CAAC,GAAG,CAAC;MAC3BC,cAAc,EAAEK,MAAM,CAACL;KACxB;AACH,EAAA;EAEA,OAAOe,gBAAgB,GAAG,GAAG;AAE7B,EAAA,OAAOC,IAAI,GAAGC,MAAM,CAACC,MAAM,CAAC;AAC1BC,IAAAA,UAAU,EAAE,CAAC;AACbC,IAAAA,UAAU,EAAE,CAAC;AACbC,IAAAA,UAAU,EAAE,CAAC;AACbC,IAAAA,YAAY,EAAE,CAAC;AACfC,IAAAA,gBAAgB,EAAE,CAAC;AACnBC,IAAAA,MAAM,EAAE,CAAC;AACTC,IAAAA,iBAAiB,EAAE,CAAC;AACpBC,IAAAA,OAAO,EAAE,CAAC;AACVC,IAAAA,kBAAkB,EAAE,CAAC;AACrBC,IAAAA,WAAW,EAAE,EAAE;AACfC,IAAAA,gBAAgB,EAAE,EAAE;AACpBC,IAAAA,iBAAiB,EAAE,EAAE;AACrBC,IAAAA,qBAAqB,EAAE,EAAE;AACzBC,IAAAA,sBAAsB,EAAE,EAAE;AAC1BC,IAAAA,6BAA6B,EAAE;AACjC,GAAC,CAAC;AAEJ;;AAEA;AACA;AACA;AACA;AACA;AACAC,SAAS,CAACC,MAAM,CAACtC,iBAAiB,EAAE;AAClCuC,EAAAA,SAAS,EAAE,mBAAmB;AAC9BC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,MAAM,EAAE;IACNvC,MAAM,EAAEG,IAAI,CAACqC,OAAO;IACpBvC,cAAc,EAAEE,IAAI,CAACqC,OAAO;IAC5BtC,IAAI,EAAEC,IAAI,CAACsC,MAAM;AACjBtC,IAAAA,IAAI,EAAE,CAAEA,IAAI,CAACuC,KAAK,EAAEvC,IAAI,CAACwC,IAAI,CAAC,MAAM,CAAC,CAAE;IACvCvC,aAAa,EAAED,IAAI,CAACyC;AACtB;AACF,CAAC,CAAC;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { applyDecs2311 as _applyDecs2311 } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
-
import { io, type
|
|
2
|
+
import { io, type } from '@carbonenginejs/runtime-utils/schema';
|
|
3
3
|
import { CjsModel } from '@carbonenginejs/runtime-utils/model';
|
|
4
4
|
|
|
5
5
|
let _initClass, _init_format, _init_extra_format, _init_b, _init_extra_b, _init_g, _init_extra_g, _init_r, _init_extra_r;
|
|
@@ -14,7 +14,7 @@ class Tr2TexturePipelineStepCompress extends CjsModel {
|
|
|
14
14
|
} = _applyDecs2311(this, [type.define({
|
|
15
15
|
className: "Tr2TexturePipelineStepCompress",
|
|
16
16
|
family: "resources"
|
|
17
|
-
})], [[[io, io.persist, type, type.int32, void 0,
|
|
17
|
+
})], [[[io, io.persist, type, type.int32, void 0, type.enum("PixelFormat")], 16, "format"], [[io, io.persist, type, type.float32], 16, "b"], [[io, io.persist, type, type.float32], 16, "g"], [[io, io.persist, type, type.float32], 16, "r"]], 0, void 0, CjsModel));
|
|
18
18
|
}
|
|
19
19
|
constructor(...args) {
|
|
20
20
|
super(...args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2TexturePipelineStepCompress.js","sources":["../../../../src/resource/texture/Tr2TexturePipelineStepCompress.js"],"sourcesContent":["// Source: trinity/trinity/Resources/TexturePipeline/Tr2TexturePipelineStepCompress.h\r\n// Schema: format-carbon resources/Tr2TexturePipelineStepCompress.json; maintained by runtime-resource.\r\nimport { io,
|
|
1
|
+
{"version":3,"file":"Tr2TexturePipelineStepCompress.js","sources":["../../../../src/resource/texture/Tr2TexturePipelineStepCompress.js"],"sourcesContent":["// Source: trinity/trinity/Resources/TexturePipeline/Tr2TexturePipelineStepCompress.h\r\n// Schema: format-carbon resources/Tr2TexturePipelineStepCompress.json; maintained by runtime-resource.\r\nimport { io, type } from \"@carbonenginejs/runtime-utils/schema\";\r\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\r\n\r\n/** Tr2TexturePipelineStepCompress (resources) - maintained from schema shapeHash 4d367f1c.... */\r\n@type.define({ className: \"Tr2TexturePipelineStepCompress\", family: \"resources\" })\r\nexport class Tr2TexturePipelineStepCompress extends CjsModel\r\n{\r\n\r\n /** m_format (Tr2RenderContextEnum::PixelFormat - enum PixelFormat) [READWRITE, PERSIST, ENUM] */\r\n @io.persist\r\n @type.int32\r\n @type.enum(\"PixelFormat\")\r\n format = 71;\r\n\r\n /** m_bWeight (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n b = 1;\r\n\r\n /** m_gWeight (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n g = 1;\r\n\r\n /** m_rWeight (float) [READWRITE, PERSIST] */\r\n @io.persist\r\n @type.float32\r\n r = 1;\r\n\r\n}\r\n"],"names":["_Tr2TexturePipelineSt","Tr2TexturePipelineStepCompress","CjsModel","e","_init_format","_init_extra_format","_init_b","_init_extra_b","_init_g","_init_extra_g","_init_r","_init_extra_r","c","_initClass","_applyDecs","type","define","className","family","io","persist","int32","enum","float32","constructor","args","format","b","g","r"],"mappings":";;;;;;AAKA;AAAA,IAAAA;AACA,MAAAC,8BAAA,SACoDC,QAAQ,CAC5D;AAAA,EAAA;AAAA,IAAA,CAAA;AAAAC,MAAAA,CAAA,EAAA,CAAAC,YAAA,EAAAC,kBAAA,EAAAC,OAAA,EAAAC,aAAA,EAAAC,OAAA,EAAAC,aAAA,EAAAC,OAAA,EAAAC,aAAA,CAAA;MAAAC,CAAA,EAAA,CAAAZ,qBAAA,EAAAa,UAAA;AAAA,KAAA,GAAAC,cAAA,CAAA,IAAA,EAAA,CAFCC,IAAI,CAACC,MAAM,CAAC;AAAEC,MAAAA,SAAS,EAAE,gCAAgC;AAAEC,MAAAA,MAAM,EAAE;KAAa,CAAC,CAAA,EAAA,CAAA,CAAA,CAK/EC,EAAE,EAAFA,EAAE,CAACC,OAAO,EACVL,IAAI,EAAJA,IAAI,CAACM,KAAK,UACVN,IAAI,CAACO,IAAI,CAAC,aAAa,CAAC,CAAA,EAAA,EAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAIxBH,EAAE,EAAFA,EAAE,CAACC,OAAO,EACVL,IAAI,EAAJA,IAAI,CAACQ,OAAO,CAAA,EAAA,EAAA,EAAA,GAAA,CAAA,EAAA,CAAA,CAIZJ,EAAE,EAAFA,EAAE,CAACC,OAAO,EACVL,IAAI,EAAJA,IAAI,CAACQ,OAAO,CAAA,EAAA,EAAA,EAAA,GAAA,CAAA,EAAA,CAAA,CAIZJ,EAAE,EAAFA,EAAE,CAACC,OAAO,EACVL,IAAI,EAAJA,IAAI,CAACQ,OAAO,CAAA,EAAA,EAAA,EAAA,GAAA,CAAA,CAAA,EAAA,CAAA,EAAA,MAAA,EArBqCrB,QAAQ,CAAA;AAAA;AAAAsB,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;IAAAd,aAAA,CAAA,IAAA,CAAA;AAAA,EAAA;AAG1D;EAIAe,MAAM,GAAAtB,YAAA,CAAA,IAAA,EAAG,EAAE,CAAA;;AAEX;AAGAuB,EAAAA,CAAC,IAAAtB,kBAAA,CAAA,IAAA,CAAA,EAAAC,OAAA,OAAG,CAAC,CAAA;;AAEL;AAGAsB,EAAAA,CAAC,IAAArB,aAAA,CAAA,IAAA,CAAA,EAAAC,OAAA,OAAG,CAAC,CAAA;;AAEL;AAGAqB,EAAAA,CAAC,IAAApB,aAAA,CAAA,IAAA,CAAA,EAAAC,OAAA,OAAG,CAAC,CAAA;AAAC,EAAA;IAAAG,UAAA,EAAA;AAAA;AAER;;;;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { applyDecs2311 as _applyDecs2311 } from '../../_virtual/_rollupPluginBabelHelpers.js';
|
|
2
|
-
import { io, type
|
|
2
|
+
import { io, type } from '@carbonenginejs/runtime-utils/schema';
|
|
3
3
|
import { CjsModel } from '@carbonenginejs/runtime-utils/model';
|
|
4
4
|
|
|
5
5
|
let _initClass, _init_format, _init_extra_format, _init_a, _init_extra_a, _init_b, _init_extra_b, _init_g, _init_extra_g, _init_r, _init_extra_r;
|
|
@@ -14,7 +14,7 @@ class Tr2TexturePipelineStepPack extends CjsModel {
|
|
|
14
14
|
} = _applyDecs2311(this, [type.define({
|
|
15
15
|
className: "Tr2TexturePipelineStepPack",
|
|
16
16
|
family: "resources"
|
|
17
|
-
})], [[[io, io.persist, type, type.int32, void 0,
|
|
17
|
+
})], [[[io, io.persist, type, type.int32, void 0, type.enum("PixelFormat")], 16, "format"], [[io, io.persist, void 0, type.objectRef("Tr2TexturePackChannel")], 16, "a"], [[io, io.persist, void 0, type.objectRef("Tr2TexturePackChannel")], 16, "b"], [[io, io.persist, void 0, type.objectRef("Tr2TexturePackChannel")], 16, "g"], [[io, io.persist, void 0, type.objectRef("Tr2TexturePackChannel")], 16, "r"]], 0, void 0, CjsModel));
|
|
18
18
|
}
|
|
19
19
|
constructor(...args) {
|
|
20
20
|
super(...args);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tr2TexturePipelineStepPack.js","sources":["../../../../src/resource/texture/Tr2TexturePipelineStepPack.js"],"sourcesContent":["// Source: trinity/trinity/Resources/TexturePipeline/Tr2TexturePipelineStepPack.h\r\n// Schema: format-carbon resources/Tr2TexturePipelineStepPack.json; maintained by runtime-resource.\r\nimport { io,
|
|
1
|
+
{"version":3,"file":"Tr2TexturePipelineStepPack.js","sources":["../../../../src/resource/texture/Tr2TexturePipelineStepPack.js"],"sourcesContent":["// Source: trinity/trinity/Resources/TexturePipeline/Tr2TexturePipelineStepPack.h\r\n// Schema: format-carbon resources/Tr2TexturePipelineStepPack.json; maintained by runtime-resource.\r\nimport { io, type } from \"@carbonenginejs/runtime-utils/schema\";\r\nimport { CjsModel } from \"@carbonenginejs/runtime-utils/model\";\r\n\r\n/** Tr2TexturePipelineStepPack (resources) - maintained from schema shapeHash 3efe48d4.... */\r\n@type.define({ className: \"Tr2TexturePipelineStepPack\", family: \"resources\" })\r\nexport class Tr2TexturePipelineStepPack extends CjsModel\r\n{\r\n\r\n /** m_format (Tr2RenderContextEnum::PixelFormat - enum PixelFormat) [READWRITE, PERSIST, ENUM] */\r\n @io.persist\r\n @type.int32\r\n @type.enum(\"PixelFormat\")\r\n format = 87;\r\n\r\n /** m_a (PTr2TexturePackChannel) [READ, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"Tr2TexturePackChannel\")\r\n a = null;\r\n\r\n /** m_b (PTr2TexturePackChannel) [READ, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"Tr2TexturePackChannel\")\r\n b = null;\r\n\r\n /** m_g (PTr2TexturePackChannel) [READ, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"Tr2TexturePackChannel\")\r\n g = null;\r\n\r\n /** m_r (PTr2TexturePackChannel) [READ, PERSIST] */\r\n @io.persist\r\n @type.objectRef(\"Tr2TexturePackChannel\")\r\n r = null;\r\n\r\n}\r\n"],"names":["_Tr2TexturePipelineSt","Tr2TexturePipelineStepPack","CjsModel","e","_init_format","_init_extra_format","_init_a","_init_extra_a","_init_b","_init_extra_b","_init_g","_init_extra_g","_init_r","_init_extra_r","c","_initClass","_applyDecs","type","define","className","family","io","persist","int32","enum","objectRef","constructor","args","format","a","b","g","r"],"mappings":";;;;;;AAKA;AAAA,IAAAA;AACA,MAAAC,0BAAA,SACgDC,QAAQ,CACxD;AAAA,EAAA;AAAA,IAAA,CAAA;AAAAC,MAAAA,CAAA,GAAAC,YAAA,EAAAC,kBAAA,EAAAC,OAAA,EAAAC,aAAA,EAAAC,OAAA,EAAAC,aAAA,EAAAC,OAAA,EAAAC,aAAA,EAAAC,OAAA,EAAAC,aAAA,CAAA;MAAAC,CAAA,EAAA,CAAAd,qBAAA,EAAAe,UAAA;AAAA,KAAA,GAAAC,cAAA,CAAA,IAAA,EAAA,CAFCC,IAAI,CAACC,MAAM,CAAC;AAAEC,MAAAA,SAAS,EAAE,4BAA4B;AAAEC,MAAAA,MAAM,EAAE;AAAY,KAAC,CAAC,CAAA,EAAA,CAAA,CAAA,CAK3EC,EAAE,EAAFA,EAAE,CAACC,OAAO,EACVL,IAAI,EAAJA,IAAI,CAACM,KAAK,EAAA,MAAA,EACVN,IAAI,CAACO,IAAI,CAAC,aAAa,CAAC,CAAA,EAAA,EAAA,EAAA,QAAA,CAAA,EAAA,CAAA,CAIxBH,EAAE,EAAFA,EAAE,CAACC,OAAO,EAAA,MAAA,EACVL,IAAI,CAACQ,SAAS,CAAC,uBAAuB,CAAC,eAIvCJ,EAAE,EAAFA,EAAE,CAACC,OAAO,EAAA,MAAA,EACVL,IAAI,CAACQ,SAAS,CAAC,uBAAuB,CAAC,CAAA,EAAA,EAAA,EAAA,GAAA,CAAA,EAAA,CAAA,CAIvCJ,EAAE,EAAFA,EAAE,CAACC,OAAO,UACVL,IAAI,CAACQ,SAAS,CAAC,uBAAuB,CAAC,CAAA,EAAA,EAAA,EAAA,GAAA,CAAA,EAAA,CAAA,CAIvCJ,EAAE,EAAFA,EAAE,CAACC,OAAO,EAAA,MAAA,EACVL,IAAI,CAACQ,SAAS,CAAC,uBAAuB,CAAC,yBA1BMvB,QAAQ,CAAA;AAAA;AAAAwB,EAAAA,WAAAA,CAAA,GAAAC,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA;IAAAd,aAAA,CAAA,IAAA,CAAA;AAAA,EAAA;AAGtD;EAIAe,MAAM,GAAAxB,YAAA,CAAA,IAAA,EAAG,EAAE,CAAA;;AAEX;AAGAyB,EAAAA,CAAC,IAAAxB,kBAAA,CAAA,IAAA,CAAA,EAAAC,OAAA,OAAG,IAAI,CAAA;;AAER;AAGAwB,EAAAA,CAAC,IAAAvB,aAAA,CAAA,IAAA,CAAA,EAAAC,OAAA,OAAG,IAAI,CAAA;;AAER;AAGAuB,EAAAA,CAAC,IAAAtB,aAAA,CAAA,IAAA,CAAA,EAAAC,OAAA,OAAG,IAAI,CAAA;;AAER;AAGAsB,EAAAA,CAAC,IAAArB,aAAA,CAAA,IAAA,CAAA,EAAAC,OAAA,OAAG,IAAI,CAAA;AAAC,EAAA;IAAAG,UAAA,EAAA;AAAA;AAEX;;;;"}
|
package/package.json
CHANGED
|
@@ -1,63 +1,63 @@
|
|
|
1
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
2
|
+
"name": "@carbonenginejs/runtime-resource",
|
|
3
|
+
"version": "0.16.0",
|
|
4
|
+
"description": "CarbonEngineJS resource lifecycle, cache, source, and object loading contracts.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"exports": {
|
|
7
|
+
".": "./dist/index.js",
|
|
8
|
+
"./resource": "./dist/resource/index.js",
|
|
9
|
+
"./resource/audio": "./dist/resource/audio/index.js",
|
|
10
|
+
"./resource/geometry": "./dist/resource/geometry/index.js",
|
|
11
|
+
"./resource/geometry/granny": "./dist/resource/geometry/granny/index.js",
|
|
12
|
+
"./resource/shader": "./dist/resource/shader/index.js",
|
|
13
|
+
"./resource/texture": "./dist/resource/texture/index.js",
|
|
14
|
+
"./worker": "./dist/worker/CjsResManWorker.js",
|
|
15
|
+
"./format": "./dist/format/index.js",
|
|
16
|
+
"./formats": "./dist/formats/index.js",
|
|
17
|
+
"./formats/black": "./dist/formats/black/index.js",
|
|
18
|
+
"./formats/black/schema": "./dist/formats/black/core/blackSchema.js",
|
|
19
|
+
"./formats/black/enums": "./dist/formats/black/core/blackEnums.js",
|
|
20
|
+
"./formats/black/version": "./dist/formats/black/core/blackVersion.js",
|
|
21
|
+
"./formats/bnk": "./dist/formats/bnk/index.js",
|
|
22
|
+
"./formats/cmf": "./dist/formats/cmf/index.js",
|
|
23
|
+
"./formats/dds": "./dist/formats/dds/index.js",
|
|
24
|
+
"./formats/dxbc": "./dist/formats/dxbc/index.js",
|
|
25
|
+
"./formats/hlsl": "./dist/formats/hlsl/index.js",
|
|
26
|
+
"./formats/webgl": "./dist/formats/webgl/index.js",
|
|
27
|
+
"./formats/webgpu": "./dist/formats/webgpu/index.js",
|
|
28
|
+
"./formats/fbx": "./dist/formats/fbx/index.js",
|
|
29
|
+
"./formats/flac": "./dist/formats/flac/index.js",
|
|
30
|
+
"./formats/gif": "./dist/formats/gif/index.js",
|
|
31
|
+
"./formats/gltf": "./dist/formats/gltf/index.js",
|
|
32
|
+
"./formats/gr2": "./dist/formats/gr2/index.js",
|
|
33
|
+
"./formats/jpeg": "./dist/formats/jpeg/index.js",
|
|
34
|
+
"./formats/mp3": "./dist/formats/mp3/index.js",
|
|
35
|
+
"./formats/mp4": "./dist/formats/mp4/index.js",
|
|
36
|
+
"./formats/obj": "./dist/formats/obj/index.js",
|
|
37
|
+
"./formats/ogg": "./dist/formats/ogg/index.js",
|
|
38
|
+
"./formats/pickle": "./dist/formats/pickle/index.js",
|
|
39
|
+
"./formats/png": "./dist/formats/png/index.js",
|
|
40
|
+
"./formats/red": "./dist/formats/red/index.js",
|
|
41
|
+
"./formats/red/schema": "./dist/formats/red/core/blackDefinitions.js",
|
|
42
|
+
"./formats/stl": "./dist/formats/stl/index.js",
|
|
43
|
+
"./formats/tga": "./dist/formats/tga/index.js",
|
|
44
|
+
"./formats/wav": "./dist/formats/wav/index.js",
|
|
45
|
+
"./formats/webm": "./dist/formats/webm/index.js",
|
|
46
|
+
"./formats/webp": "./dist/formats/webp/index.js",
|
|
47
|
+
"./formats/wem": "./dist/formats/wem/index.js",
|
|
48
|
+
"./formats/yaml": "./dist/formats/yaml/index.js"
|
|
49
|
+
},
|
|
50
|
+
"sideEffects": false,
|
|
51
|
+
"engines": {
|
|
52
|
+
"node": ">=18"
|
|
53
|
+
},
|
|
54
|
+
"dependencies": {
|
|
55
|
+
"@carbonenginejs/runtime-utils": "^0.1.5",
|
|
56
|
+
"meshoptimizer": "^1.2.0",
|
|
57
|
+
"yaml": "^2.4.0"
|
|
58
|
+
},
|
|
59
|
+
"license": "MIT",
|
|
60
|
+
"publishConfig": {
|
|
61
|
+
"access": "public"
|
|
62
|
+
}
|
|
63
63
|
}
|