summit/frontend/node_modules/three-stdlib/loaders/VRMLLoader.cjs.map

1 line
124 KiB
Plaintext
Raw Normal View History

2025-12-08 16:31:30 +00:00
{"version":3,"file":"VRMLLoader.cjs","sources":["../../src/loaders/VRMLLoader.js"],"sourcesContent":["import {\n BackSide,\n BoxGeometry,\n BufferAttribute,\n BufferGeometry,\n ClampToEdgeWrapping,\n Color,\n ConeGeometry,\n CylinderGeometry,\n DataTexture,\n DoubleSide,\n FileLoader,\n Float32BufferAttribute,\n FrontSide,\n Group,\n LineBasicMaterial,\n LineSegments,\n Loader,\n LoaderUtils,\n Mesh,\n MeshBasicMaterial,\n MeshPhongMaterial,\n Object3D,\n Points,\n PointsMaterial,\n Quaternion,\n RepeatWrapping,\n Scene,\n ShapeUtils,\n SphereGeometry,\n TextureLoader,\n Vector2,\n Vector3,\n} from 'three'\nimport { Lexer, CstParser, createToken } from '../libs/chevrotain'\n\nclass VRMLLoader 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(data, path) {\n const nodeMap = {}\n\n function generateVRMLTree(data) {\n // create lexer, parser and visitor\n\n const tokenData = createTokens()\n\n const lexer = new VRMLLexer(tokenData.tokens)\n const parser = new VRMLParser(tokenData.tokenVocabulary)\n const visitor = createVisitor(parser.getBaseCstVisitorConstructor())\n\n // lexing\n\n const lexingResult = lexer.lex(data)\n parser.input = lexingResult.tokens\n\n // parsing\n\n const cstOutput = parser.vrml()\n\n if (parser.errors.length > 0) {\n console.error(parser.errors)\n\n throw Error('THREE.VRMLLoader: Parsing errors detected.')\n }\n\n // actions\n\n const ast = visitor.visit(cstOutput)\n\n return ast\n }\n\n function createTokens() {\n // from http://gun.teipir.gr/VRML-amgem/spec/part1/concepts.html#SyntaxBasics\n\n const RouteIdentifier = createToken({\n name: 'RouteIdentifier',\n pattern: /[^\\x30-\\x39\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d][^\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d]*[\\.][^\\x30-\\x39\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d][^\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d]*/,\n })\n const Identifier = createToken({\n name: 'Identifier',\n pattern: /[^\\x30-\\x39\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d][^\\0-\\x20\\x22\\x27\\x23\\x2b\\x2c\\x2d\\x2e\\x5b\\x5d\\x5c\\x7b\\x7d]*/,\n longer_alt: RouteIdentifier,\n })\n\n // from http://gun.teipir.gr/VRML-amgem/spec/part1/nodesRef.html\n\n const nodeTypes = [\n 'Anchor',\n 'Billboard',\n 'Collision',\n 'Group',\n 'Transform', // grouping nodes\n 'Inline',\n 'LOD',\n 'Switch', // special groups\n 'AudioClip',\n 'DirectionalLight',\n 'PointLight',\n 'Script',\n 'Shape',\n 'Sound',\n 'SpotLight',\n 'WorldInfo', // common nodes\n 'CylinderSensor',\n 'PlaneSensor',\n 'ProximitySensor',\n 'SphereSensor',\n 'TimeSensor',\n 'TouchSensor',\n 'VisibilitySensor', // sensors\n 'Box',\n 'Cone',\n 'Cylinder',\n 'ElevationGrid',\n 'Extrusion',\n 'IndexedFaceSet',\n 'IndexedLineSet',\n 'PointSet',\n 'Sphere', // geometries\n 'Color',\n 'Coordinate',\n 'Normal',\n 'Text