1 line
142 KiB
Plaintext
1 line
142 KiB
Plaintext
|
|
{"version":3,"file":"ColladaLoader.cjs","sources":["../../src/loaders/ColladaLoader.js"],"sourcesContent":["import {\n AmbientLight,\n AnimationClip,\n Bone,\n BufferGeometry,\n ClampToEdgeWrapping,\n Color,\n DirectionalLight,\n DoubleSide,\n Euler,\n FileLoader,\n Float32BufferAttribute,\n FrontSide,\n Group,\n Line,\n LineBasicMaterial,\n LineSegments,\n Loader,\n LoaderUtils,\n MathUtils,\n Matrix4,\n Mesh,\n MeshBasicMaterial,\n MeshLambertMaterial,\n MeshPhongMaterial,\n OrthographicCamera,\n PerspectiveCamera,\n PointLight,\n Quaternion,\n QuaternionKeyframeTrack,\n RepeatWrapping,\n Scene,\n Skeleton,\n SkinnedMesh,\n SpotLight,\n TextureLoader,\n Vector2,\n Vector3,\n VectorKeyframeTrack,\n} from 'three'\nimport { TGALoader } from '../loaders/TGALoader'\nimport { UV1 } from '../_polyfill/uv1'\n\nclass ColladaLoader extends Loader {\n constructor(manager) {\n super(manager)\n }\n\n load(url, onLoad, onProgress, onError) {\n const scope = this\n\n const path = scope.path === '' ? LoaderUtils.extractUrlBase(url) : scope.path\n\n const loader = new FileLoader(scope.manager)\n loader.setPath(scope.path)\n loader.setRequestHeader(scope.requestHeader)\n loader.setWithCredentials(scope.withCredentials)\n loader.load(\n url,\n function (text) {\n try {\n onLoad(scope.parse(text, path))\n } catch (e) {\n if (onError) {\n onError(e)\n } else {\n console.error(e)\n }\n\n scope.manager.itemError(url)\n }\n },\n onProgress,\n onError,\n )\n }\n\n parse(text, path) {\n function getElementsByTagName(xml, name) {\n // Non recursive xml.getElementsByTagName() ...\n\n const array = []\n const childNodes = xml.childNodes\n\n for (let i = 0, l = childNodes.length; i < l; i++) {\n const child = childNodes[i]\n\n if (child.nodeName === name) {\n array.push(child)\n }\n }\n\n return array\n }\n\n function parseStrings(text) {\n if (text.length === 0) return []\n\n const parts = text.trim().split(/\\s+/)\n const array = new Array(parts.length)\n\n for (let i = 0, l = parts.length; i < l; i++) {\n array[i] = parts[i]\n }\n\n return array\n }\n\n function parseFloats(text) {\n if (text.length === 0) return []\n\n const parts = text.trim().split(/\\s+/)\n const array = new Array(parts.length)\n\n for (let i = 0, l = parts.length; i < l; i++) {\n array[i] = parseFloat(parts[i])\n }\n\n return array\n }\n\n function parseInts(text) {\n if (text.length === 0) return []\n\n const parts = text.trim().split(/\\s+/)\n const array = new Array(parts.length)\n\n for (let i = 0, l = parts.length; i < l; i++) {\n array[i] = parseInt(parts[i])\n }\n\n return array\n }\n\n function parseId(text) {\n return text.substring(1)\n }\n\n function generateId() {\n return 'three_default_' + count++\n }\n\n function isEmpty(object) {\n return Object.keys(object).length === 0\n }\n\n // asset\n\n function parseAsset(xml) {\n return {\n unit: parseAssetUnit(getElementsByTagName(xml, 'unit')[0]),\n upAxis: parseAssetUpAxis(getElementsByTagName(xml, 'up_axis')[0]),\n }\n }\n\n function parseAssetUnit(xml) {\n if (xml !== undefined && xml.hasAttribute('meter') === true) {\n return parseFloat(xml.getAttribute('meter'))\n } else {\n return 1 // default 1 meter\n }\n }\n\n function parseAssetUpAxis(xml) {\n return xml !== undefined ? xml.textContent : 'Y_UP'\n }\n\n // library\n\n function parseLibrary(xml, libraryName, nodeName, parser) {\n const library = getElementsByTagName(xml, libraryName)[0]\n\n if (library !== undefined) {\n const elements = getElementsByTagName(library, nodeName)\n\n for (let i = 0; i < elements.length; i++) {\n parser(eleme
|