@xviewer.js/core 1.0.2 → 1.0.3
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/main.cjs +69 -75
- package/dist/main.cjs.map +1 -1
- package/dist/module.js +70 -76
- package/dist/module.js.map +1 -1
- package/package.json +1 -1
- package/types/Component.d.ts +0 -4
- package/types/Viewer.d.ts +0 -5
package/dist/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sources":["../src/base/EventEmitter.ts","../src/base/Logger.ts","../src/base/mixin.ts","../src/base/getClassInstance.ts","../src/asset/Loader.ts","../src/loaders/EXRLoader.ts","../src/loaders/FBXLoader.ts","../src/loaders/GLTFLoader.ts","../src/loaders/HDRLoader.ts","../src/loaders/JSONLoader.ts","../src/loaders/TextureLoader.ts","../src/loaders/BINLoader.ts","../../../node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs","../src/math/Damp.ts","../src/math/Constant.ts","../src/math/Interpolation.ts","../src/math/AnimationCurve.ts","../src/math/Perlin.ts","../src/math/Easing.ts","../src/PropertyManager.ts","../src/cinestation/CinestationBlendDefinition.ts","../src/ObjectInstance.ts","../src/Utils.ts","../src/Component.ts","../src/cinestation/CinestationBrain.ts","../src/cinestation/VirtualCamera.ts","../src/Pressability.ts","../src/DeviceInput.ts","../src/DetectUA.ts","../src/SystemInfo.ts","../src/cinestation/FreelookVirtualCamera.ts","../src/primitive/Box.ts","../src/primitive/Sphere.ts","../src/primitive/Plane.ts","../src/components/Reflector.ts","../src/components/Animation.ts","../src/components/ContactShadows.ts","../src/constants.ts","../src/materials/DiscardMaterial.ts","../src/shaderMaterial.ts","../src/components/AccumulativeShadows.ts","../src/components/Center.ts","../src/materials/glsl/fullscreen.glsl.ts","../src/materials/glsl/boxfilterblur.glsl.ts","../src/materials/glsl/panorama.glsl.ts","../src/materials/getShaderMaterial.ts","../src/materials/ReflectorMaterial.ts","../src/materials/ShadowMaterial.ts","../src/Mount.ts","../src/plugins/UI.ts","../src/passes/cubeuv/utils.ts","../src/Scheduler.ts","../src/ComponentScheduler.ts","../src/ComponentManager.ts","../src/TaskManager.ts","../src/WebGL.ts","../src/enums/Orientation.ts","../src/asset/ResourceManager.ts","../src/Viewer.ts","../src/passes/cubeuv/MergeReflectPass.ts","../src/passes/mipGaussianBlendWeight.ts","../src/passes/cubeuv/MergeBlurPass.ts","../src/plugins/Environment.ts","../src/plugins/BoxProjection.ts","../src/plugins/PerformanceMonitor.ts","../src/plugins/DropFile.ts"],"sourcesContent":["interface EventHandler {\n name: string;\n callback: (...args: any[]) => any;\n target?: Object;\n once?: boolean;\n}\n\ninterface Listener<T> {\n name: T, callback: (...args: any[]) => any;\n}\n\nexport class EventEmitter<T extends string = string> {\n\n protected _events: { [k: string]: EventHandler[] } = {};\n protected _removeEvent(list: EventHandler[], index: number, name: string) {\n if (index > -1) {\n list.splice(index, 1);\n if (list.length === 0) {\n delete this._events[name];\n }\n }\n return this;\n }\n\n clear() {\n this._events = {};\n return this;\n }\n\n has(name: T) {\n return !!this._events[name];\n }\n\n on(name: T, callback: (...args: any[]) => any, target?: Object, once: boolean = false) {\n let list = this._events[name];\n if (list == null) {\n list = this._events[name] = [];\n }\n\n let index = list.findIndex(v => v.callback === callback && (!target || v.target === target));\n if (index > -1) {\n console.warn(`event: ${name} duplicate registered`);\n return;\n }\n\n list.push({ name, callback, target, once });\n return this;\n }\n\n off(name: T, callback: (...args: any[]) => any, target?: Object) {\n let list = this._events[name];\n if (list) {\n let index = list.findIndex(a => (a.callback === callback) && (!target || a.target === target));\n this._removeEvent(list, index, name);\n }\n return this;\n }\n\n onof(name: T, callback: (...args: any[]) => any, container: Object & { _listeners?: Listener<T>[] }) {\n if (container._listeners === undefined) {\n container._listeners = [];\n }\n container._listeners.push({ name, callback });\n this.on(name, callback);\n return this;\n }\n\n offof(container: Object & { _listeners?: Listener<T>[] }) {\n for (let v of container._listeners) {\n this.off(v.name, v.callback);\n }\n return this;\n }\n\n targetOff(target: Object) {\n for (let name in this._events) {\n let list = this._events[name];\n for (let i = list.length; i--;) {\n let v = list[i];\n if (v.target === target) {\n this._removeEvent(list, i, name);\n }\n }\n }\n return this;\n }\n\n emit(name: T, ...args: any[]) {\n let list = this._events[name];\n if (list) {\n for (let i = list.length; i--;) {\n let v = list[i];\n if (v) { //callback可能会删除list元素\n if (v.once) this._removeEvent(list, i, name);\n if (v.target) v.callback.apply(v.target, args);\n else v.callback(...args);\n }\n }\n }\n return this;\n }\n}\n","/**\n * @class\n * @private\n */\n/* tslint:disable */\nconst noop = (message?: any, ...optionalParams: any[]) => {};\nconst debug = console.log.bind(console);\nconst info = console.info.bind(console);\nconst warn = console.warn.bind(console);\nconst error = console.error.bind(console);\n\nexport const Logger = {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop,\n isEnabled: false,\n\n /** Turn on log */\n enable() {\n this.debug = debug;\n this.info = info;\n this.warn = warn;\n this.error = error;\n this.isEnabled = true;\n },\n\n /** Turn off log */\n disable() {\n this.debug = noop;\n this.info = noop;\n this.warn = noop;\n this.error = noop;\n this.isEnabled = false;\n }\n};\n","export function mixin(derivedCtor: any, baseCtors: any[]): void {\n baseCtors.forEach((baseCtor) => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {\n Object.defineProperty(\n derivedCtor.prototype,\n name,\n Object.getOwnPropertyDescriptor(baseCtor.prototype, name) || Object.create(null)\n );\n });\n });\n}","export function getClassInstance(constructor: any, args: any[] = []) {\n return typeof constructor === \"function\" ? new constructor(...args) : constructor;\n}","import { LoadingManager, Object3D } from \"three\";\nimport { ResourceManager } from \"./ResourceManager\";\nimport { TextureSettings } from \"../TextureSettings\";\n\nexport interface LoadProperties {\n url: string,\n buffer?: string | ArrayBuffer,\n texSettings?: TextureSettings,\n path?: string;\n resourcePath?: string;\n dracoPath?: string;\n manager?: LoadingManager;\n onLoad: (asset: any) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (event: ErrorEvent) => void,\n}\n\nexport abstract class Loader {\n static _texKeys = [\n \"map\", \"alphaMap\", \"aoMap\", \"bumpMap\", \"displacementMap\", \"emissiveMap\",\n \"envMap\", \"lightMap\", \"metalnessMap\", \"normalMap\", \"roughnessMap\", \"specularMap\", \"alphaMap\"\n ]\n static _setUserData(node: Object3D) {\n const keys = Loader._texKeys;\n\n const meshes = [];\n const textures = {};\n const materials = {};\n const queue = [node];\n\n while (queue.length !== 0) {\n let object = queue.shift() as any;\n if (object.isMesh) {\n meshes.push(object);\n const mat = object.material;\n if (Array.isArray(mat)) mat.forEach(v => materials[v.uuid] = v)\n else materials[mat.uuid] = mat;\n }\n queue.push(...object.children);\n }\n\n Object.values(materials).forEach(mat => {\n keys.forEach(k => {\n let tex = mat[k];\n if (tex) {\n textures[tex.uuid] = tex;\n }\n });\n })\n\n Object.assign(node.userData, { meshes, materials, textures });\n\n return node;\n }\n\n constructor(public manager: ResourceManager) { };\n abstract extension: string[];\n abstract load(props: LoadProperties): void;\n\n}","import { LoadProperties, Loader } from \"../asset/Loader\";\nimport { EXRLoader as EXRLoaderPrimitive } from \"three/examples/jsm/loaders/EXRLoader.js\";\n\nexport class EXRLoader extends Loader {\n extension: string[] = [\"exr\"];\n\n load({\n url,\n path,\n resourcePath,\n manager,\n texSettings,\n onLoad,\n onProgress,\n onError,\n }: LoadProperties) {\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new EXRLoaderPrimitive();\n }\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n loader.load(url, tex => onLoad(Object.assign(tex, texSettings)), onProgress, onError);\n }\n\n private _loader: EXRLoaderPrimitive;\n}","import { Group } from \"three\";\nimport { LoadProperties, Loader } from \"../asset/Loader\";\nimport { FBXLoader as FBXLoaderPrimitive } from \"three/examples/jsm/loaders/FBXLoader.js\";\n\nexport class FBXLoader extends Loader {\n extension: string[] = [\"fbx\"];\n\n load({\n url,\n buffer,\n path,\n resourcePath,\n manager,\n onLoad,\n onProgress,\n onError\n }: LoadProperties) {\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new FBXLoaderPrimitive();\n }\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n\n const loadCallback = (node: Group) => {\n onLoad(Loader._setUserData(node));\n }\n\n if (buffer) {\n loadCallback(loader.parse(buffer, resourcePath));\n }\n else {\n loader.load(url, loadCallback, onProgress, onError);\n }\n }\n\n private _loader: FBXLoaderPrimitive;\n}","import { LoadProperties, Loader } from \"../asset/Loader\";\n\nimport { GLTF, GLTFLoader as GLTFLoaderPrimitive } from \"three/examples/jsm/loaders/GLTFLoader.js\";\nimport { DRACOLoader } from \"three/examples/jsm/loaders/DRACOLoader.js\";\nimport { MeshoptDecoder } from \"three/examples/jsm/libs/meshopt_decoder.module.js\";\n\nexport class GLTFLoader extends Loader {\n extension: string[] = [\"gltf\", \"glb\"];\n\n load({\n url,\n buffer,\n path,\n resourcePath,\n dracoPath,\n manager,\n onLoad,\n onProgress,\n onError\n }: LoadProperties) {\n\n let dracoLoader = this._dracoLoader;\n if (dracoLoader === undefined) {\n dracoLoader = this._dracoLoader = new DRACOLoader();\n }\n dracoLoader.manager = manager;\n dracoLoader.setDecoderPath(dracoPath);\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new GLTFLoaderPrimitive();\n loader.setDRACOLoader(dracoLoader);\n loader.setMeshoptDecoder(MeshoptDecoder);\n }\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n\n const loadCallback = (gltf: GLTF) => {\n const node = gltf.scene;\n node.animations.push(...gltf.animations);\n onLoad(Loader._setUserData(node));\n }\n\n if (buffer) {\n loader.parse(buffer, resourcePath, loadCallback, onError);\n }\n else {\n loader.load(url, loadCallback, onProgress, onError);\n }\n }\n\n private _loader: GLTFLoaderPrimitive;\n private _dracoLoader: DRACOLoader;\n}","import { EquirectangularReflectionMapping } from \"three\";\nimport { LoadProperties, Loader } from \"../asset/Loader\";\nimport { RGBELoader } from \"three/examples/jsm/loaders/RGBELoader.js\";\n\nexport class HDRLoader extends Loader {\n extension: string[] = [\"hdr\"];\n\n load({\n url,\n path,\n resourcePath,\n manager,\n texSettings,\n onLoad,\n onProgress,\n onError,\n }: LoadProperties): void {\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new RGBELoader();\n }\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n\n const settings = Object.assign({ mapping: EquirectangularReflectionMapping }, texSettings);\n loader.load(url, tex => onLoad(Object.assign(tex, settings)), onProgress, onError);\n }\n\n private _loader: RGBELoader;\n}","import { FileLoader } from \"three\";\nimport { LoadProperties, Loader } from \"../asset/Loader\";\n\nexport class JSONLoader extends Loader {\n extension: string[] = [\"json\"];\n\n load({\n url,\n path,\n resourcePath,\n manager,\n onLoad,\n onProgress,\n onError\n }: LoadProperties) {\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new FileLoader();\n }\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n loader.load(url, (file: string) => onLoad(JSON.parse(file)), onProgress, onError);\n }\n\n private _loader: FileLoader;\n}","import { SRGBColorSpace, Texture, TextureLoader as TextureLoaderPrimitive } from \"three\";\nimport { LoadProperties, Loader } from \"../asset/Loader\";\n\nexport class TextureLoader extends Loader {\n extension: string[] = [\"png\", \"jpg\", \"webp\", \"avif\"];\n\n load({\n url,\n path,\n resourcePath,\n manager,\n texSettings,\n onLoad,\n onProgress,\n onError\n }: LoadProperties): void {\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new TextureLoaderPrimitive();\n }\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n\n const loadCallback = (tex: Texture) => {\n tex.colorSpace = SRGBColorSpace;\n onLoad(Object.assign(tex, texSettings));\n }\n loader.load(url, loadCallback, onProgress, onError);\n }\n\n private _loader: TextureLoaderPrimitive;\n}","\nimport { GLTF, GLTFLoader } from \"three/examples/jsm/loaders/GLTFLoader.js\";\nimport { DRACOLoader } from \"three/examples/jsm/loaders/DRACOLoader.js\";\nimport { MeshoptDecoder } from \"three/examples/jsm/libs/meshopt_decoder.module.js\";\nimport { Loader, LoadProperties } from \"../asset/Loader\";\n\nexport class BINLoader extends Loader {\n extension: string[] = [\"bin\"];\n salt: number = 255;\n\n load({\n url,\n buffer,\n path,\n resourcePath,\n dracoPath,\n manager,\n onLoad,\n onProgress,\n onError\n }: LoadProperties): void {\n let dracoLoader = this._dracoLoader;\n if (dracoLoader === undefined) {\n dracoLoader = this._dracoLoader = new DRACOLoader();\n }\n dracoLoader.manager = manager;\n dracoLoader.setDecoderPath(dracoPath);\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new CustomLoader();\n loader.setDRACOLoader(dracoLoader);\n loader.setMeshoptDecoder(MeshoptDecoder);\n }\n loader.salt = this.salt;\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n\n const loadCallback = (gltf: GLTF) => {\n const node = gltf.scene;\n node.animations.push(...gltf.animations);\n onLoad(Loader._setUserData(node));\n }\n\n if (buffer) {\n loader.parse(buffer as ArrayBuffer, resourcePath, loadCallback, onError);\n }\n else {\n loader.load(url, loadCallback, onProgress, onError);\n }\n }\n\n private _loader: CustomLoader;\n private _dracoLoader: DRACOLoader;\n}\n\nclass CustomLoader extends GLTFLoader {\n salt: number = 255;\n parse(data: ArrayBuffer, path: string, onLoad: (gltf: GLTF) => void, onError?: (event: ErrorEvent) => void): void {\n super.parse(glbDecode(data, this.salt), path, onLoad, onError);\n }\n}\n\nconst BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\nconst BINARY_EXTENSION_HEADER_LENGTH = 12;\n\nfunction encryptArray(array: Uint8Array, salt: number) {\n for (let i = 0, n = array.length; i < n; i++) {\n array[i] ^= salt;\n }\n return array;\n}\n\nfunction glbDecode(buffer: ArrayBuffer, salt: number = 255) {\n encryptArray(new Uint8Array(buffer, 0, 4), salt);\n\n const headerView = new DataView(buffer, 0, BINARY_EXTENSION_HEADER_LENGTH);\n const textDecoder = new TextDecoder();\n const header = {\n magic: textDecoder.decode(new Uint8Array(buffer.slice(0, 4))),\n version: headerView.getUint32(4, true),\n length: headerView.getUint32(8, true)\n };\n\n if (header.magic !== BINARY_EXTENSION_HEADER_MAGIC) {\n throw new Error('Unsupported glTF-Binary header.');\n }\n else if (header.version < 2.0) {\n throw new Error('Legacy binary file detected.');\n }\n\n const chunkContentsLength = header.length - BINARY_EXTENSION_HEADER_LENGTH;\n const chunkView = new DataView(buffer, BINARY_EXTENSION_HEADER_LENGTH);\n let chunkIndex = 0;\n\n while (chunkIndex < chunkContentsLength) {\n\n const chunkLength = chunkView.getUint32(chunkIndex, true);\n chunkIndex += 4;\n\n encryptArray(new Uint8Array(buffer, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength + 4), salt);\n\n chunkIndex += 4;\n chunkIndex += chunkLength;\n }\n\n return buffer;\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { MathUtils, Quaternion, Vector3 } from \"three\";\n\nconst { clamp } = MathUtils;\nconst { min, max, exp } = Math;\n\nconst kNegligibleResidual = 0.01;\nconst kLogNegligibleResidual = Math.log(kNegligibleResidual)// -4.605170186;\n\nexport function exponentialDamp(current: number, target: number, dampTime: number, deltaTime: number) {\n let k = -kLogNegligibleResidual / dampTime;\n return current + (target - current) * (1 - exp(-k * deltaTime));\n}\n\n// cuve like exponentialDecay but cost less\nexport function quarticDamp(current: number, target: number, dampTime: number, deltaTime: number) {\n let t = (1 - min(deltaTime, dampTime) / dampTime);\n let tt = t * t;\n return current + (target - current) * (1 - tt * tt);\n}\n\nexport function smoothDamp(\n state: Object & { _velocity?: number },\n current: number,\n target: number,\n smoothTime: number,\n maxSpeed: number,\n deltaTime: number\n) {\n if (state._velocity === undefined) {\n state._velocity = 0;\n }\n smoothTime = max(0.0001, smoothTime);\n let num = 2 / smoothTime;\n let num2 = num * deltaTime;\n let num3 = 1 / (1 + num2 + 0.48 * num2 * num2 + 0.235 * num2 * num2 * num2);\n let num4 = current - target;\n let num5 = target;\n let num6 = maxSpeed * smoothTime;\n num4 = clamp(num4, -num6, num6);\n target = current - num4;\n let num7 = (state._velocity + num * num4) * deltaTime;\n state._velocity = (state._velocity - num * num7) * num3;\n let num8 = target + (num4 + num7) * num3;\n if (num5 - current > 0 == num8 > num5) {\n num8 = num5;\n state._velocity = (num8 - num5) / deltaTime;\n }\n return num8;\n}\n\nexport function Quat_exponentialDamp(current: Quaternion, target: Quaternion, dampTime: number, deltaTime: number, out: Quaternion = current) {\n return out.copy(current).slerp(target, exponentialDamp(0, 1, dampTime, deltaTime));\n}\n\nexport function Quat_quarticDamp(current: Quaternion, target: Quaternion, dampTime: number, deltaTime: number, out: Quaternion = current) {\n return out.copy(current).slerp(target, quarticDamp(0, 1, dampTime, deltaTime));\n}\n\nexport function Quat_smoothDamp(current: Quaternion, target: Quaternion, dampTime: number, deltaTime: number, out: Quaternion = current) {\n return out.copy(current).slerp(target, smoothDamp(out, 0, 1, dampTime, Infinity, deltaTime));\n}\n\nexport function Vec3_smoothDamp(current: Vector3, target: Vector3, dampTime: number, deltaTime: number, out: Vector3 = current) {\n return out.copy(current).lerp(target, smoothDamp(out, 0, 1, dampTime, Infinity, deltaTime));\n}","import { Vector3 } from \"three\";\n\nexport const Vector3_UNIT_X = Object.freeze(new Vector3(1, 0, 0));\nexport const Vector3_UNIT_Y = Object.freeze(new Vector3(0, 1, 0));\nexport const Vector3_UNIT_Z = Object.freeze(new Vector3(0, 0, 1));\nexport const Vector3_RIGHT = Object.freeze(new Vector3(1, 0, 0));\nexport const Vector3_UP = Object.freeze(new Vector3(0, 1, 0));\nexport const Vector3_ZERO = Object.freeze(new Vector3(0, 0, 0));\nexport const Vector3_ONE = Object.freeze(new Vector3(1, 1, 1));\nexport const Vector3_NEG_ONE = Object.freeze(new Vector3(-1, -1, -1));","import { MathUtils, Quaternion, Vector2, Vector3 } from \"three\";\n\nconst { clamp } = MathUtils;\nconst { max, abs, acos } = Math;\n\nconst EPSILON = 1.e-6;\n\nconst __deltaMap = new Map();\n__deltaMap.set(Vector3, new Vector3());\n__deltaMap.set(Vector2, new Vector2());\n\nexport function VInterpTo(current: Vector2, target: Vector2, deltaTime: number, speed: number, out?: Vector2, epsilon?: number): Vector2;\nexport function VInterpTo(current: Vector3, target: Vector3, deltaTime: number, speed: number, out?: Vector3, epsilon?: number): Vector3;\nexport function VInterpTo(\n current: any,\n target: any,\n deltaTime: number,\n speed: number,\n out: any = current,\n epsilon: number = EPSILON\n) {\n if (speed <= 0) {\n return out.copy(target);\n }\n let dist = __deltaMap.get(current.constructor).copy(target).sub(current);\n if (dist.lengthSq() < epsilon) {\n return out.copy(target);\n }\n return out.copy(current).add(dist.multiplyScalar(clamp(deltaTime * speed, 0, 1)));\n}\n\nexport function VInterpConstantTo(\n current: Vector3,\n target: Vector3,\n deltaTime: number,\n speed: number,\n out: Vector3 = current,\n) {\n let delta = __deltaMap.get(current.constructor).copy(target).sub(current);\n let deltaM = delta.length();\n let maxStep = speed * deltaTime;\n if (deltaM > maxStep) {\n if (maxStep > 0) {\n let deltaN = delta.multiplyScalar(1 / deltaM);\n return out.copy(current).add(deltaN);\n }\n else {\n return out.copy(current);\n }\n }\n return out.copy(target);\n}\n\nexport function Quat_Equals(\n a: Quaternion,\n b: Quaternion,\n epsilon: number = EPSILON\n) {\n return abs(a.x - b.x) <= epsilon * max(1., abs(a.x), abs(b.x)) &&\n abs(a.y - b.y) <= epsilon * max(1., abs(a.y), abs(b.y)) &&\n abs(a.z - b.z) <= epsilon * max(1., abs(a.z), abs(b.z)) &&\n abs(a.w - b.w) <= epsilon * max(1., abs(a.w), abs(b.w));\n}\n\nexport function Quat_AngularDistance(\n a: Quaternion,\n b: Quaternion\n) {\n let innerProd = a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;\n return acos(2 * innerProd * innerProd - 1);\n}\n\nexport function QInterpTo(\n current: Quaternion,\n target: Quaternion,\n deltaTime: number,\n speed: number,\n epsilon: number = EPSILON,\n) {\n if (speed <= 0) {\n return target;\n }\n if (Quat_Equals(current, target, epsilon)) {\n return target;\n }\n return current.slerp(target, clamp(speed * deltaTime, 0, 1));\n}\n\nexport function QInterpConstantTo(\n current: Quaternion,\n target: Quaternion,\n deltaTime: number,\n speed: number,\n out: Quaternion = current\n) {\n if (speed <= 0) {\n return out.copy(target);\n }\n if (Quat_Equals(current, target)) {\n return out.copy(target);\n }\n let deltaSpeed = clamp(speed * deltaTime, 0, 1);\n let angularDist = max(Quat_AngularDistance(current, target), EPSILON);\n return out.copy(current).slerp(target, clamp(deltaSpeed / angularDist, 0, 1))\n}\n\n//非线性\nexport function FInterpTo(\n current: number,\n target: number,\n deltaTime: number,\n speed: number,\n epsilon: number = EPSILON,\n) {\n if (speed <= 0) {\n return target;\n }\n let dist = target - current;\n if (abs(dist) < epsilon) {\n return target;\n }\n return current + dist * clamp(speed * deltaTime, 0, 1);\n}\n\n//线性插值\nexport function FInterpConstantTo(\n current: number,\n target: number,\n deltaTime: number,\n speed: number,\n epsilon: number = EPSILON,\n) {\n let dist = target - current;\n if (abs(dist) < epsilon) {\n return target;\n }\n let step = speed * deltaTime;\n return current + clamp(dist, -step, step);\n}","import { LinearInterpolant, MathUtils } from \"three\";\n\nconst { lerp, clamp } = MathUtils;\n\nfunction catmullRom(t: number, p0: number, p1: number, p2: number, p3: number) {\n const v0 = (p2 - p0) * 0.5;\n const v1 = (p3 - p1) * 0.5;\n const t2 = t * t;\n const t3 = t * t2;\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (- 3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n\nclass CurvePoint {\n\n constructor(\n public x: number = 0,\n public y: number = 0,\n public mode: number = 0) { }\n\n set(x: number, y: number) {\n this.x = x;\n this.y = y;\n return this;\n }\n\n lerp(p: CurvePoint, t: number, out: CurvePoint = this) {\n out.x = lerp(this.x, p.x, t);\n out.y = lerp(this.y, p.y, t);\n return out;\n }\n}\n\nexport class AnimationCurve {\n needsUpdate: boolean = true;\n isAnimationCurve: boolean = true;\n\n private _samples: number = 100;\n private _interpolant: LinearInterpolant = new LinearInterpolant(\n new Float32Array(100), new Float32Array(100), 1, new Float32Array(100)\n );\n\n constructor(\n public name: string = \"\",\n public points: CurvePoint[] = [new CurvePoint(0, 0), new CurvePoint(1, 1)]\n ) { }\n\n private _getInterpolant(samples: number) {\n if (this._samples !== samples) {\n this._samples = samples;\n this._interpolant = new LinearInterpolant(\n new Float32Array(samples), new Float32Array(samples), 1, new Float32Array(samples)\n );\n }\n return this._interpolant;\n }\n\n createCurvePoint(x?: number, y?: number, mode?: number) {\n return new CurvePoint(x, y, mode);\n }\n\n resample(samples: number = 100) {\n const step = 1 / (samples - 1);\n const interpolant = this._getInterpolant(samples);\n const times = interpolant.parameterPositions;\n const values = interpolant.sampleValues;\n const point = this.createCurvePoint();\n\n for (let i = 0; i < samples; i++) {\n this.getPoint(i * step, point);\n times[i] = point.x;\n values[i] = point.y;\n }\n }\n\n evaluate(t: number) {\n if (this.needsUpdate) {\n this.needsUpdate = false;\n this.resample();\n }\n return this._interpolant.evaluate(t)[0];\n }\n\n getPoint(t: number, out: CurvePoint) {\n const points = this.points;\n\n if (t <= 0) {\n return out.set(t, points[0].y);\n }\n if (t >= 1) {\n return out.set(t, points[points.length - 1].y);\n }\n\n const p = (points.length - 1) * t;\n\n const intPoint = Math.floor(p);\n const weight = p - intPoint;\n\n const p0 = points[intPoint === 0 ? intPoint : intPoint - 1];\n const p1 = points[intPoint];\n const p2 = points[intPoint > points.length - 2 ? points.length - 1 : intPoint + 1];\n const p3 = points[intPoint > points.length - 3 ? points.length - 1 : intPoint + 2];\n\n if ((p1.mode === 1) || (p0 === p1 && p2.mode === 1)) {\n return p1.lerp(p2, weight, out);\n }\n return out.set(\n clamp(catmullRom(weight, p0.x, p1.x, p2.x, p3.x), 0, 1),\n clamp(catmullRom(weight, p0.y, p1.y, p2.y, p3.y), 0, 1)\n )\n }\n\n}","const { floor } = Math;\n\n// Copyright (C) 2016 Keijiro Takahashi\n// https://mrl.cs.nyu.edu/~perlin/noise/\nexport class Perlin {\n public static Noise(x: number): number;\n public static Noise(x: number, y: number): number;\n public static Noise(x: number, y: number, z: number): number;\n public static Noise(x: number, y?: number, z?: number) {\n let fade = Perlin._Fade;\n let grad = Perlin._Grad;\n let lerp = Perlin._Lerp;\n let p = Perlin._Permutation;\n\n if (y !== undefined && z !== undefined) {\n let xi = floor(x);\n let yi = floor(y);\n let zi = floor(z);\n let X = xi & 0xff; // FIND UNIT CUBE THAT\n let Y = yi & 0xff; // CONTAINS POINT.\n let Z = zi & 0xff;\n x -= xi; // FIND RELATIVE X,Y,Z\n y -= yi; // OF POINT IN CUBE.\n z -= zi;\n let u = fade(x); // COMPUTE FADE CURVES\n let v = fade(y); // FOR EACH OF X,Y,Z.\n let w = fade(z);\n let A = p[X] + Y, AA = p[A] + Z, AB = p[A + 1] + Z; // HASH COORDINATES OF\n let B = p[X + 1] + Y, BA = p[B] + Z, BB = p[B + 1] + Z; // THE 8 CUBE CORNERS,\n\n return lerp(w, lerp(v, lerp(u, grad(p[AA], x, y, z), // AND ADD\n grad(p[BA], x - 1, y, z)), // BLENDED\n lerp(u, grad(p[AB], x, y - 1, z), // RESULTS\n grad(p[BB], x - 1, y - 1, z))), // FROM 8\n lerp(v, lerp(u, grad(p[AA + 1], x, y, z - 1), // CORNERS\n grad(p[BA + 1], x - 1, y, z - 1)), // OF CUBE\n lerp(u, grad(p[AB + 1], x, y - 1, z - 1),\n grad(p[BB + 1], x - 1, y - 1, z - 1))));\n }\n else if (y !== undefined) {\n let xi = floor(x);\n let yi = floor(y);\n let X = xi & 0xff;\n let Y = yi & 0xff;\n x -= xi;\n y -= yi;\n let u = fade(x);\n let v = fade(y);\n let A = (p[X] + Y) & 0xff;\n let B = (p[X + 1] + Y) & 0xff;\n return lerp(v, lerp(u, grad(p[A], x, y),\n grad(p[B], x - 1, y)),\n lerp(u, grad(p[A + 1], x, y - 1),\n grad(p[B + 1], x - 1, y - 1)));\n }\n else {\n let xi = floor(x);\n let X = xi & 0xff;\n x -= xi;\n let u = fade(x);\n return lerp(u, grad(p[X], x),\n grad(p[X + 1], x - 1));\n }\n }\n\n public static Fbm(octave: number, x: number): number;\n public static Fbm(octave: number, x: number, y: number): number;\n public static Fbm(octave: number, x: number, y: number, z: number): number;\n public static Fbm(octave: number, x: number, y?: number, z?: number) {\n let f = 0;\n let w = 0.5;\n let noise = Perlin.Noise;\n if (y !== undefined && z !== undefined) {\n for (let i = 0; i < octave; i++) {\n f += w * noise(x, y, z);\n x *= 2.0;\n y *= 2.0;\n z *= 2.0;\n w *= 0.5;\n }\n }\n else if (y !== undefined) {\n for (let i = 0; i < octave; i++) {\n f += w * noise(x, y);\n x *= 2.0;\n y *= 2.0;\n w *= 0.5;\n }\n }\n else {\n for (let i = 0; i < octave; i++) {\n f += w * noise(x);\n x *= 2.0;\n w *= 0.5;\n }\n }\n return f;\n }\n\n private static _Fade(t: number) {\n return t * t * t * (t * (t * 6 - 15) + 10);\n }\n\n private static _Lerp(t: number, a: number, b: number) {\n return a + t * (b - a);\n }\n\n private static _Grad(hash: number, x: number): number;\n private static _Grad(hash: number, x: number, y: number): number;\n private static _Grad(hash: number, x: number, y: number, z: number): number\n private static _Grad(hash: number, x: number, y?: number, z?: number) {\n if (y !== undefined && z !== undefined) {\n let h = hash & 15; // CONVERT LO 4 BITS OF HASH CODE\n let u = h < 8 ? x : y, // INTO 12 GRADIENT DIRECTIONS.\n v = h < 4 ? y : (h == 12 || h == 14 ? x : z);\n return ((h & 1) == 0 ? u : -u) + ((h & 2) == 0 ? v : -v);\n }\n else if (y !== undefined) {\n return ((hash & 1) == 0 ? x : -x) + ((hash & 2) == 0 ? y : -y);\n }\n else {\n return (hash & 1) == 0 ? x : -x;\n }\n }\n\n private static _Permutation = [\n 151, 160, 137, 91, 90, 15,\n 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23,\n 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33,\n 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166,\n 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244,\n 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196,\n 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123,\n 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42,\n 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9,\n 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228,\n 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107,\n 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254,\n 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180,\n 151\n ]\n}\n","export type EasingFunction = (amount: number) => number\n\nexport type EasingFunctionGroup = {\n\tIn: EasingFunction\n\tOut: EasingFunction\n\tInOut: EasingFunction\n}\n\n/**\n * The Ease class provides a collection of easing functions for use with tween.js.\n */\n\nexport const Easing = Object.freeze({\n\tLinear: Object.freeze<EasingFunctionGroup & { None: EasingFunction }>({\n\t\tNone(amount: number): number {\n\t\t\treturn amount\n\t\t},\n\t\tIn(amount: number): number {\n\t\t\treturn amount\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\treturn amount\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\treturn amount\n\t\t},\n\t}),\n\n\tQuadratic: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\treturn amount * amount\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\treturn amount * (2 - amount)\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\tif ((amount *= 2) < 1) {\n\t\t\t\treturn 0.5 * amount * amount\n\t\t\t}\n\n\t\t\treturn -0.5 * (--amount * (amount - 2) - 1)\n\t\t},\n\t}),\n\n\tCubic: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\treturn amount * amount * amount\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\treturn --amount * amount * amount + 1\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\tif ((amount *= 2) < 1) {\n\t\t\t\treturn 0.5 * amount * amount * amount\n\t\t\t}\n\t\t\treturn 0.5 * ((amount -= 2) * amount * amount + 2)\n\t\t},\n\t}),\n\n\tQuartic: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\treturn amount * amount * amount * amount\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\treturn 1 - --amount * amount * amount * amount\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\tif ((amount *= 2) < 1) {\n\t\t\t\treturn 0.5 * amount * amount * amount * amount\n\t\t\t}\n\n\t\t\treturn -0.5 * ((amount -= 2) * amount * amount * amount - 2)\n\t\t},\n\t}),\n\n\tQuintic: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\treturn amount * amount * amount * amount * amount\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\treturn --amount * amount * amount * amount * amount + 1\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\tif ((amount *= 2) < 1) {\n\t\t\t\treturn 0.5 * amount * amount * amount * amount * amount\n\t\t\t}\n\n\t\t\treturn 0.5 * ((amount -= 2) * amount * amount * amount * amount + 2)\n\t\t},\n\t}),\n\n\tSinusoidal: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\treturn 1 - Math.sin(((1.0 - amount) * Math.PI) / 2)\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\treturn Math.sin((amount * Math.PI) / 2)\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\treturn 0.5 * (1 - Math.sin(Math.PI * (0.5 - amount)))\n\t\t},\n\t}),\n\n\tExponential: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\treturn amount === 0 ? 0 : Math.pow(1024, amount - 1)\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\treturn amount === 1 ? 1 : 1 - Math.pow(2, -10 * amount)\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\tif (amount === 0) {\n\t\t\t\treturn 0\n\t\t\t}\n\n\t\t\tif (amount === 1) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\tif ((amount *= 2) < 1) {\n\t\t\t\treturn 0.5 * Math.pow(1024, amount - 1)\n\t\t\t}\n\n\t\t\treturn 0.5 * (-Math.pow(2, -10 * (amount - 1)) + 2)\n\t\t},\n\t}),\n\n\tCircular: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\treturn 1 - Math.sqrt(1 - amount * amount)\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\treturn Math.sqrt(1 - --amount * amount)\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\tif ((amount *= 2) < 1) {\n\t\t\t\treturn -0.5 * (Math.sqrt(1 - amount * amount) - 1)\n\t\t\t}\n\t\t\treturn 0.5 * (Math.sqrt(1 - (amount -= 2) * amount) + 1)\n\t\t},\n\t}),\n\n\tElastic: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\tif (amount === 0) {\n\t\t\t\treturn 0\n\t\t\t}\n\n\t\t\tif (amount === 1) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\treturn -Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI)\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\tif (amount === 0) {\n\t\t\t\treturn 0\n\t\t\t}\n\n\t\t\tif (amount === 1) {\n\t\t\t\treturn 1\n\t\t\t}\n\t\t\treturn Math.pow(2, -10 * amount) * Math.sin((amount - 0.1) * 5 * Math.PI) + 1\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\tif (amount === 0) {\n\t\t\t\treturn 0\n\t\t\t}\n\n\t\t\tif (amount === 1) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\tamount *= 2\n\n\t\t\tif (amount < 1) {\n\t\t\t\treturn -0.5 * Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI)\n\t\t\t}\n\n\t\t\treturn 0.5 * Math.pow(2, -10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI) + 1\n\t\t},\n\t}),\n\n\tBack: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\tconst s = 1.70158\n\t\t\treturn amount === 1 ? 1 : amount * amount * ((s + 1) * amount - s)\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\tconst s = 1.70158\n\t\t\treturn amount === 0 ? 0 : --amount * amount * ((s + 1) * amount + s) + 1\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\tconst s = 1.70158 * 1.525\n\t\t\tif ((amount *= 2) < 1) {\n\t\t\t\treturn 0.5 * (amount * amount * ((s + 1) * amount - s))\n\t\t\t}\n\t\t\treturn 0.5 * ((amount -= 2) * amount * ((s + 1) * amount + s) + 2)\n\t\t},\n\t}),\n\n\tBounce: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\treturn 1 - Easing.Bounce.Out(1 - amount)\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\tif (amount < 1 / 2.75) {\n\t\t\t\treturn 7.5625 * amount * amount\n\t\t\t} else if (amount < 2 / 2.75) {\n\t\t\t\treturn 7.5625 * (amount -= 1.5 / 2.75) * amount + 0.75\n\t\t\t} else if (amount < 2.5 / 2.75) {\n\t\t\t\treturn 7.5625 * (amount -= 2.25 / 2.75) * amount + 0.9375\n\t\t\t} else {\n\t\t\t\treturn 7.5625 * (amount -= 2.625 / 2.75) * amount + 0.984375\n\t\t\t}\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\tif (amount < 0.5) {\n\t\t\t\treturn Easing.Bounce.In(amount * 2) * 0.5\n\t\t\t}\n\t\t\treturn Easing.Bounce.Out(amount * 2 - 1) * 0.5 + 0.5\n\t\t},\n\t}),\n\n\tgeneratePow(power = 4): EasingFunctionGroup {\n\t\tpower = power < Number.EPSILON ? Number.EPSILON : power\n\t\tpower = power > 10000 ? 10000 : power\n\t\treturn {\n\t\t\tIn(amount: number): number {\n\t\t\t\treturn amount ** power\n\t\t\t},\n\t\t\tOut(amount: number): number {\n\t\t\t\treturn 1 - (1 - amount) ** power\n\t\t\t},\n\t\t\tInOut(amount: number): number {\n\t\t\t\tif (amount < 0.5) {\n\t\t\t\t\treturn (amount * 2) ** power / 2\n\t\t\t\t}\n\t\t\t\treturn (1 - (2 - amount * 2) ** power) / 2 + 0.5\n\t\t\t},\n\t\t}\n\t},\n})","\nclass ClassProperties {\n private _properties: Object = Object.create(null);\n constructor(public clsName: string) { }\n property(propertyKey: string, options: Object = {}) {\n this._properties[propertyKey] = options;\n return this;\n }\n applyProperties(target: object) {\n Object.assign(target, this._properties);\n return target;\n }\n}\n\nexport class PropertyManager {\n static _classMap = new Map<String, ClassProperties>();\n static _propertyMap = new Map<Object, Object>();\n\n static _hasProperties(constructor: Function) {\n return PropertyManager._propertyMap.has(constructor);\n }\n static _getProperties(constructor: Function, autoAdd: boolean = true) {\n let props = PropertyManager._propertyMap.get(constructor);\n if (props === undefined && autoAdd) {\n props = Object.create(null);\n PropertyManager._propertyMap.set(constructor, props);\n }\n return props;\n }\n static _getMergedProperties(constructor: Function) {\n let merged = null;\n while (constructor !== Object.constructor.prototype) {\n let props = PropertyManager._getProperties(constructor, false);\n if (props) {\n if (merged === null) {\n merged = Object.create(null);\n }\n Object.assign(merged, props);\n }\n constructor = Object.getPrototypeOf(constructor);\n }\n return merged;\n }\n static _getClassProperties(clsName: string, autoAdd: boolean = true) {\n let props = PropertyManager._classMap.get(clsName);\n if (props === undefined && autoAdd) {\n props = new ClassProperties(clsName);\n PropertyManager._classMap.set(clsName, props);\n }\n return props;\n }\n static _applyClassProperties(clsName: string, constructor: Function) {\n let cls = PropertyManager._getClassProperties(clsName, false);\n if (cls) {\n return cls.applyProperties(PropertyManager._getProperties(constructor));\n }\n else {\n return PropertyManager._getProperties(constructor, false);\n }\n }\n}\n\nexport interface IPropertyOptions {\n dir?: string;\n parent?: string;\n max?: number;\n min?: number;\n step?: number;\n value?: any;\n name?: string;\n}\n\ntype PropertyDecorator = (target: Object, propertyKey: string) => void;\nexport function property(options?: IPropertyOptions): PropertyDecorator;\nexport function property(...args: Parameters<PropertyDecorator>): void;\nexport function property(target?: Object, propertyKey?: string) {\n let options: IPropertyOptions | Function | string = null;\n function normalized(target: Object, propertyKey: string) {\n PropertyManager._getProperties(target.constructor)[propertyKey] = options;\n }\n if (target === undefined) { //@property()\n return property({});\n }\n else if (typeof propertyKey === \"undefined\") { // @property(options)\n options = target;\n return normalized;\n }\n else { // @property\n options = {};\n normalized(target, propertyKey);\n }\n}","import { Easing } from \"../math\";\nimport { property } from \"../PropertyManager\";\n\nexport const CinestationBlendStyle = {\n Linear: Easing.Linear.None,\n QuadraticIn: Easing.Quadratic.In,\n QuadraticOut: Easing.Quadratic.Out,\n QuadraticInOut: Easing.Quadratic.InOut,\n}\n\nexport type CinestationBlendStyle = typeof CinestationBlendStyle[keyof typeof CinestationBlendStyle];\n\nexport class CinestationBlendDefinition {\n\n @property({ value: CinestationBlendStyle })\n style: CinestationBlendStyle = CinestationBlendStyle.QuadraticInOut;\n\n @property\n time: number = 4;\n\n}","import { MathUtils } from \"three\";\n\nexport class ObjectInstance {\n static _instanceCount: number = 0;\n \n readonly instanceId: number = ObjectInstance._instanceCount++;\n readonly uuid: string = MathUtils.generateUUID();\n name: string = \"\";\n type: string = \"ObjectInstance\";\n}","import * as THREE from \"three\";\nimport { __C, __P } from \"./types\";\n\nexport function applyProps<T, K extends __C<T>>(\n target: T & { copy?: Function },\n props: __P<T, K>,\n) {\n for (let k in props) {\n let prop = props[k];\n if (prop === undefined) {\n continue;\n }\n if (target[k] !== undefined) {\n let des = Object.getOwnPropertyDescriptor(target, k);\n if (!des || (des.writable || des.set)) {\n target[k] = prop;\n }\n else {\n let value = target[k];\n if (value && value.copy) {\n value.copy(prop);\n }\n }\n }\n }\n return target;\n}\n\nexport function find<T extends THREE.Object3D>(\n node: T,\n path: string\n): T {\n let child = null;\n let parts = path.split(\"/\");\n let children = node.children;\n\n for (let part of parts) {\n child = children.find(v => v.name === part);\n if (child) {\n children = child.children;\n }\n else {\n return null;\n }\n }\n\n return child;\n}\n\nexport function getChildren<T extends THREE.Object3D>(\n node: T,\n filter: (value: T) => any,\n group: boolean = false\n) {\n const queue = [node];\n const objects = [];\n\n while (queue.length !== 0) {\n let object = queue.shift();\n let target = filter(object);\n if (target) {\n objects.push(object);\n if (!group) {\n break;\n }\n }\n object.children.forEach((v: T) => queue.push(v));\n }\n\n if (group) {\n return objects;\n }\n\n return objects[0];\n}\n\nexport function getChildByName<T extends THREE.Object3D>(\n node: T,\n name: string\n): T {\n return getChildren(node, v => v && (v.name === name));\n}\n\nconst __emtpyObject = {};\nexport function queryValues<T extends Object & { name: string }>(object: any): T[];\nexport function queryValues<T extends Object & { name: string }>(object: any, name: string): T;\nexport function queryValues<T extends Object & { name: string }>(\n object: any,\n name?: string,\n group: boolean = false\n) {\n if (name) {\n if (group) {\n return Object.values<T>(object || __emtpyObject).filter(v => v.name === name);\n }\n return Object.values<T>(object || __emtpyObject).find(v => v.name === name);\n }\n return Object.values<T>(object);\n}","import { Object3D } from \"three\";\nimport { Viewer } from \"./Viewer\";\nimport { ComponentManager } from \"./ComponentManager\";\nimport { ObjectInstance } from \"./ObjectInstance\";\nimport { applyProps } from \"./Utils\";\nimport { __C, __P } from \"./types\";\n\nexport class Component<T extends Object3D = Object3D> extends ObjectInstance {\n private _enabled: boolean = true;\n\n node: T;\n viewer: Viewer;\n manager: ComponentManager;\n isComponent: boolean = true;\n type: string = \"Component\";\n\n onLoad?(): void;\n onEnable?(): void;\n onDisable?(): void;\n onDestroy?(): void;\n start?(): void;\n update?(dt: number): void;\n lastUpdate?(dt: number): void;\n render?(dt: number): void;\n resize?(width: number, height: number): void;\n\n flags: {\n Destroyed?: boolean;\n OnLoadCalled?: boolean;\n OnEnableCalled?: boolean;\n StartCalled?: boolean;\n Deactivating?: boolean;\n IsStartCalled?: boolean;\n } = {};\n\n get enabled() {\n return this._enabled;\n }\n set enabled(v: boolean) {\n if (this._enabled !== v) {\n this._enabled = v;\n this.manager.componentScheduler.enableComponent(this, v);\n }\n }\n\n protected _onPreDestroy() {\n this.unscheduleAll();\n this.manager.removeComponent(this.node, this);\n\n if (this._enabled) {\n this.manager.componentScheduler.enableComponent(this, false);\n }\n if (this.onDestroy && this.flags.OnLoadCalled) {\n this.onDestroy();\n }\n }\n\n schedule(callback: Function, interval: number, repeat: number = -1) {\n this.manager.scheduler.schedule(this, callback, interval, repeat);\n }\n\n unshedule(callback: Function) {\n this.manager.scheduler.unshedule(this, callback);\n }\n\n unscheduleAll() {\n this.manager.scheduler.unscheduleAll(this);\n }\n\n destroy() {\n if (this.flags.Destroyed) {\n return false;\n }\n this.destroyImmediate();\n return true;\n }\n\n destroyImmediate() {\n if (this._onPreDestroy) {\n this._onPreDestroy();\n }\n this.flags.Destroyed = true;\n }\n\n apply<K extends __C<this>>(props: __P<this, K>) {\n return applyProps(this, props);\n }\n}","import { MathUtils, PerspectiveCamera } from \"three\";\nimport { CinestationBlendDefinition } from \"./CinestationBlendDefinition\";\nimport { VirtualCamera } from \"./VirtualCamera\";\nimport { Component } from \"../Component\";\nimport { property } from \"../PropertyManager\";\n\nconst { clamp, lerp } = MathUtils;\n\nexport class CinestationBrain extends Component<PerspectiveCamera> {\n private _vcam: VirtualCamera | null = null;\n private _vcamSolo: VirtualCamera | null = null;\n private _vcams: VirtualCamera[] = [];\n private _lerpTime: number = 4;\n\n @property\n brainBlend: CinestationBlendDefinition = new CinestationBlendDefinition();\n\n get vcam() {\n return this._vcam;\n }\n\n get vcams() {\n return this._vcams\n }\n\n lastUpdate(dt: number) {\n let vcam = this.getActiveCamera();\n if (vcam == null) return;\n\n this._vcams.forEach(v => {\n if (!v.locked) {\n v.enabled = v === vcam\n }\n });\n\n if (this._lerpTime < this.brainBlend.time) {\n this._lerpTime += dt;\n let t = clamp(this._lerpTime / this.brainBlend.time, 0, 1);\n this._lerpToMainCamera(vcam, this.brainBlend.style(t));\n }\n else {\n this._lerpToMainCamera(vcam, 1);\n }\n }\n\n activeCamera(vcam: VirtualCamera, time: number = 4) {\n if (this._vcamSolo !== vcam) {\n this._vcamSolo = vcam;\n this._lerpTime = 0;\n this.brainBlend.time = time;\n }\n }\n\n addCamera(vcam: VirtualCamera) {\n let index = this._vcams.indexOf(vcam);\n if (index === -1) {\n this._vcams.push(vcam);\n }\n }\n\n removeCamera(vcam: VirtualCamera) {\n let index = this._vcams.indexOf(vcam);\n if (index !== -1) {\n this._vcams.splice(index, 1);\n }\n }\n\n getActiveCamera() {\n return this._vcamSolo || this._vcams.filter(v => v.enabled || v.locked).sort((a, b) => b.priority - a.priority)[0];\n }\n\n private _lerpToMainCamera(vcam: VirtualCamera, t: number) {\n const from = this.node, to = vcam;\n const { lens, finalPosition, finalRotation } = to;\n\n const isLensChanged = from.fov != lens.fov || from.near != lens.near || from.far != lens.far;\n\n from.position.lerp(finalPosition, t);\n from.quaternion.slerp(finalRotation, t);\n from.fov = lerp(from.fov, lens.fov, t);\n from.near = lens.near;\n from.far = lens.far;\n\n if (isLensChanged) {\n from.updateProjectionMatrix();\n }\n }\n}","import { Object3D, Quaternion, Vector3 } from \"three\";\nimport { Component } from \"../Component\";\nimport { CinestationBrain } from \"./CinestationBrain\";\nimport { property } from \"../PropertyManager\";\n\nclass Lens {\n @property\n fov: number = 45;\n @property\n near: number = 0.1;\n @property\n far: number = 1000;\n}\n\nexport class VirtualCamera extends Component<Object3D & { isCamera?: boolean }> {\n private _finalPosition: Vector3 = new Vector3();\n private _finalRotation: Quaternion = new Quaternion();\n\n locked: boolean = false;\n priority: number = 10;\n\n @property\n lens: Lens = new Lens();\n\n correctPosition: Vector3 = new Vector3();\n correctRotation: Quaternion = new Quaternion();\n brain!: CinestationBrain;\n\n get finalPosition() {\n return this._finalPosition.copy(this.node.position).add(this.correctPosition);\n }\n\n get finalRotation() {\n return this._finalRotation.copy(this.node.quaternion).multiply(this.correctRotation);\n }\n\n onLoad() {\n const camera = this.viewer.camera;\n\n this.node.isCamera = true;\n this.lens.fov = camera.fov;\n this.lens.near = camera.near;\n this.lens.far = camera.far;\n\n this.brain = this.manager.getComponent(camera, CinestationBrain, true);\n this.brain.addCamera(this);\n }\n\n onDestroy() {\n this.brain.removeCamera(this);\n }\n}","import { Camera, Intersection, Object3D, Raycaster, Vector2 } from \"three\";\n\nconst PressState = {\n NONE: 1 << 0,\n SELECTED: 1 << 1,\n IN: 1 << 2,\n}\ntype PressState = typeof PressState[keyof typeof PressState];\n\nexport interface ConnTarget {\n node: Object3D;\n emit(name: string, e: { intersects: Intersection[] }): void;\n has(name: string): boolean;\n}\n\nexport class Pressability {\n private _raycaster: Raycaster = new Raycaster();\n private _connectors: { target: ConnTarget, state: number }[] = [];\n\n public connect(target: ConnTarget) {\n let connector = this._connectors.find(v => v.target === target);\n if (connector === undefined) {\n connector = { target, state: PressState.NONE };\n this._connectors.push(connector);\n }\n }\n\n public disconnect(target: ConnTarget) {\n let index = this._connectors.findIndex(v => v.target === target);\n if (index !== -1) {\n this._connectors.splice(index, 1);\n }\n }\n\n public pointerDown(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"click\") || conn.target.has(\"pointerdown\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n conn.state |= PressState.SELECTED;\n conn.target.emit(\"pointerdown\", { intersects });\n }\n }\n }\n }\n\n public pointerUp(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"click\") || conn.target.has(\"pointerup\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n if (conn.state & PressState.SELECTED) {\n conn.state &= ~PressState.SELECTED;\n conn.target.emit(\"click\", { intersects });\n }\n conn.target.emit(\"pointerup\", { intersects });\n }\n }\n }\n }\n\n public pointerMove(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"pointerover\") || conn.target.has(\"pointerout\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n if (!(conn.state & PressState.IN)) {\n conn.state |= PressState.IN;\n conn.target.emit(\"pointerover\", { intersects });\n }\n }\n else {\n if (conn.state & PressState.IN) {\n conn.state &= ~PressState.IN;\n conn.target.emit(\"pointerout\", { intersects });\n }\n }\n }\n }\n }\n\n}\n","import { Vector2 } from \"three\";\nimport { ConnTarget, Pressability } from \"./Pressability\";\nimport { Viewer } from \"./Viewer\";\n\ninterface InputTarget {\n on?(event: string, cb: (...args: any[]) => void, target: Object, once?: boolean);\n off?(event: string, cb: (...args: any[]) => void, target: Object);\n removeEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n addEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n}\n\nexport class DeviceInput {\n static readonly CLICK = \"click\";\n static readonly MOUSE_WHEEL = \"mousewheel\";\n static readonly TOUCH_START = \"touchstart\";\n static readonly TOUCH_END = \"touchend\";\n static readonly TOUCH_MOVE = \"touchmove\";\n static readonly POINTER_DOWN = \"pointerdown\";\n static readonly POINTER_UP = \"pointerup\";\n static readonly POINTER_MOVE = \"pointermove\";\n static readonly POINTER_OVER = \"pointerover\";\n static readonly POINTER_OUT = \"pointerout\";\n static readonly KEYDOWN = \"keydown\";\n static readonly KEYPRESS = \"keypress\";\n static readonly KEYUP = \"keyup\";\n\n private _listeners: { target: InputTarget, type: string, callback: any }[] = [];\n private _mouseWheel: number = 0;\n private _touches: { id: number, position: Vector2 }[] = [];\n private _touchCount: number = 0;\n private _pointerButton: number = -1;\n private _pointerPosition: Vector2 = new Vector2();\n private _pointer: Vector2 = new Vector2();\n private _keys: { [k: string]: boolean } = {};\n private _pressability: Pressability = new Pressability();\n\n get pointerButton() {\n return this._pointerButton;\n }\n\n get pointer() {\n return this._pointer;\n }\n\n get pointerPosition() {\n return this._pointerPosition;\n }\n\n get mouseWheel() {\n return this._mouseWheel;\n }\n\n get touchCount() {\n return this._touchCount;\n }\n\n get touches() {\n return this._touches;\n }\n\n get keys() {\n return this._keys;\n }\n\n constructor(public viewer: Viewer) { }\n\n addEventListeners() {\n const { canvas } = this.viewer;\n canvas.style.touchAction = 'none';\n\n this._addEventListener(canvas, 'contextmenu', e => e.preventDefault());\n this._addEventListener(canvas, \"pointerdown\", e => this._onPointerDown(e), { passive: false });\n this._addEventListener(canvas, \"pointerup\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(canvas, \"pointercancel\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(canvas, \"pointerout\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(canvas, \"pointermove\", e => this._onPointerMove(e), { passive: true });\n this._addEventListener(canvas, \"wheel\", e => this._onMouseWheel(e), { passive: false });\n this._addEventListener(canvas, \"touchstart\", e => this._onTouchStart(e), { passive: true });\n this._addEventListener(canvas, \"touchend\", e => this._onTouchEnd(e), { passive: true });\n this._addEventListener(canvas, \"touchmove\", e => this._onTouchMove(e), { passive: true });\n \n //监听了pointer事件之后,key事件失效,改成window解决\n this._addEventListener(window, \"keydown\", e => this._onKeyDown(e), { passive: false });\n this._addEventListener(window, \"keypress\", e => this._onKeyPress(e), { passive: false });\n this._addEventListener(window, \"keyup\", e => this._onKeyUp(e), { passive: false });\n this._addEventListener(window, \"resize\", e => this._onResize(e), { passive: false });\n }\n\n removeAllListeners() {\n for (let { target, type, callback } of this._listeners) {\n if (target.removeEventListener) target.removeEventListener(type, callback);\n else if (target.off) target.off(type, callback, target);\n }\n this._listeners = [];\n }\n\n connect(target: ConnTarget, event: string) {\n switch (event) {\n case DeviceInput.CLICK:\n case DeviceInput.POINTER_DOWN:\n case DeviceInput.POINTER_UP:\n case DeviceInput.POINTER_OVER:\n case DeviceInput.POINTER_OUT:\n this._pressability.connect(target);\n break;\n }\n }\n\n disconnect(target: ConnTarget) {\n this._pressability.disconnect(target);\n }\n\n private _addEventListener<K extends keyof HTMLElementEventMap>(\n target: InputTarget,\n type: K | string,\n callback: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ) {\n if (target.addEventListener) target.addEventListener(type, callback, options);\n else if (target.on) target.on(type, callback, target);\n this._listeners.push({ target, type, callback });\n }\n\n private _onResize(e: UIEvent) {\n this.viewer.rotate();\n this.viewer.resize();\n }\n\n private _remapPointer(e: PointerEvent) {\n const width = this.viewer.width;\n return this.viewer.rootRotated ? {\n button: e.button,\n buttons: e.buttons,\n clientX: e.clientY,\n clientY: width - e.clientX,\n offsetX: e.offsetY,\n offsetY: width - e.offsetX,\n pageX: e.pageY,\n pageY: width - e.pageX,\n screenX: e.screenY,\n screenY: width - e.screenX,\n movementX: e.movementY,\n movementY: e.movementX,\n } as any : e;\n }\n\n private _remapTouch(e: TouchEvent) {\n const width = this.viewer.width;\n return this.viewer.rootRotated ? {\n touches: Array.from(e.touches).map(v => {\n return {\n identifier: v.identifier,\n clientX: v.clientY,\n clientY: width - v.clientX,\n pageX: v.pageY,\n pageY: width - v.pageX,\n screenX: v.screenY,\n screenY: width - v.screenX,\n }\n })\n } as any : e;\n }\n\n private _computePointer(e: PointerEvent) {\n this._pointer.x = e.offsetX / this.viewer.width * 2 - 1;\n this._pointer.y = 1 - e.offsetY / this.viewer.height * 2;\n this._pointerPosition.set(e.offsetX, e.offsetY);\n }\n\n private _onPointerDown(e: PointerEvent) {\n e.preventDefault();\n e = this._remapPointer(e);\n this._pointerButton = e.button;\n this._computePointer(e);\n this._pressability.pointerDown(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_DOWN, e);\n }\n\n private _onPointerUp(e: PointerEvent) {\n e.preventDefault();\n e = this._remapPointer(e);\n this._pointerButton = -1;\n this._computePointer(e);\n this._pressability.pointerUp(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_UP, e);\n }\n\n private _onPointerMove(e: PointerEvent) {\n e = this._remapPointer(e);\n this._computePointer(e);\n this._pressability.pointerMove(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_MOVE, e);\n }\n\n private _onMouseWheel(e: WheelEvent & { wheelDelta?: number }) {\n e.preventDefault();\n this._mouseWheel = e.deltaY || e.wheelDelta;\n this.viewer.emit(DeviceInput.MOUSE_WHEEL, e);\n }\n\n private _onTouchStart(e: TouchEvent) {\n e = this._remapTouch(e);\n this.viewer.emit(DeviceInput.TOUCH_START, e);\n }\n\n private _onTouchEnd(e: TouchEvent) {\n e = this._remapTouch(e);\n this.viewer.emit(DeviceInput.TOUCH_END, e);\n }\n\n private _onTouchMove(e: TouchEvent) {\n e = this._remapTouch(e);\n let touches = e.touches;\n let touchesTo = this._touches;\n for (let i = touches.length; i--;) {\n if (touchesTo[i] == undefined) {\n touchesTo[i] = { id: -1, position: new Vector2() };\n }\n const touch = touches[i];\n touchesTo[i].id = touch.identifier;\n touchesTo[i].position.set(touch.pageX, touch.pageY);\n }\n this._touchCount = touches.length;\n this.viewer.emit(DeviceInput.TOUCH_MOVE, e);\n }\n\n private _onKeyDown(e: KeyboardEvent) {\n this._keys[e.key] = true;\n this.viewer.emit(DeviceInput.KEYDOWN, e);\n }\n\n private _onKeyPress(e: KeyboardEvent) {\n this._keys[e.key] = true;\n this.viewer.emit(DeviceInput.KEYPRESS, e);\n }\n\n private _onKeyUp(e: KeyboardEvent) {\n this._keys[e.key] = false;\n this.viewer.emit(DeviceInput.KEYUP, e);\n }\n}","const isSSR = typeof window === 'undefined';\n\nexport interface IDeviceResult {\n version: string;\n}\n\nexport interface IBrowserResult {\n name: string;\n version: string;\n}\n\nexport class DetectUA {\n public userAgent: string;\n\n // Internal variables, prevents multiple lookups\n private isAndroidDevice: boolean;\n private iOSDevice: string;\n\n /**\n * Detect a users browser, browser version and whether it is a mobile-, tablet- or desktop device\n *\n * @param forceUserAgent Force a user agent string (useful for testing)\n */\n constructor(forceUserAgent?: string) {\n this.userAgent = forceUserAgent\n ? forceUserAgent\n : !isSSR && window.navigator\n ? window.navigator.userAgent\n : '';\n\n this.isAndroidDevice = !/like android/i.test(this.userAgent) && /android/i.test(this.userAgent);\n this.iOSDevice = this.match(1, /(iphone|ipod|ipad)/i).toLowerCase();\n\n // Workaround for ipadOS, force detection as tablet\n // SEE: https://github.com/lancedikson/bowser/issues/329\n // SEE: https://stackoverflow.com/questions/58019463/how-to-detect-device-name-in-safari-on-ios-13-while-it-doesnt-show-the-correct\n if (\n !isSSR &&\n navigator.platform === 'MacIntel' &&\n navigator.maxTouchPoints > 2 &&\n !(window as any).MSStream\n ) {\n this.iOSDevice = 'ipad';\n }\n }\n\n /**\n * Match entry based on position found in the user-agent string\n *\n * @param pattern regular expression pattern\n */\n private match(position: number, pattern: RegExp): string {\n const match = this.userAgent.match(pattern);\n\n return (match && match.length > 1 && match[position]) || '';\n }\n\n /**\n * Returns if the device is a mobile device\n */\n get isMobile(): boolean {\n return (\n // Default mobile\n !this.isTablet &&\n (/[^-]mobi/i.test(this.userAgent) ||\n // iPhone / iPod\n this.iOSDevice === 'iphone' ||\n this.iOSDevice === 'ipod' ||\n // Android\n this.isAndroidDevice ||\n // Nexus mobile\n /nexus\\s*[0-6]\\s*/i.test(this.userAgent))\n );\n }\n\n /**\n * Returns if the device is a tablet device\n */\n get isTablet(): boolean {\n return (\n // Default tablet\n (/tablet/i.test(this.userAgent) && !/tablet pc/i.test(this.userAgent)) ||\n // iPad\n this.iOSDevice === 'ipad' ||\n // Android\n (this.isAndroidDevice && !/[^-]mobi/i.test(this.userAgent)) ||\n // Nexus tablet\n (!/nexus\\s*[0-6]\\s*/i.test(this.userAgent) && /nexus\\s*[0-9]+/i.test(this.userAgent))\n );\n }\n\n /**\n * Returns if the device is a desktop device\n */\n get isDesktop(): boolean {\n return !this.isMobile && !this.isTablet;\n }\n\n /**\n * Returns if the device is running MacOS (and if so which version)\n *\n * '5' => Leopard'\n * '6' => Snow Leopard'\n * '7' => Lion'\n * '8' => Mountain Lion'\n * '9' => Mavericks'\n * '10' => Yosemite'\n * '11' => El Capitan'\n * '12' => Sierra'\n * '13' => High Sierra'\n * '14' => Mojave'\n * '15' => Catalina'\n */\n get isMacOS(): IDeviceResult | boolean {\n return (\n /macintosh/i.test(this.userAgent) && {\n version: this.match(1, /mac os x (\\d+(\\.?_?\\d+)+)/i)\n .replace(/[_\\s]/g, '.')\n .split('.')\n .map((versionNumber: string): string => versionNumber)[1],\n }\n );\n }\n\n /**\n * Returns if the device is running Windows (and if so which version)\n *\n * 'NT' => 'NT'\n * 'XP' => 'XP'\n * 'NT 5.0' => '2000'\n * 'NT 5.1' => 'XP'\n * 'NT 5.2' => '2003'\n * 'NT 6.0' => 'Vista'\n * 'NT 6.1' => '7'\n * 'NT 6.2' => '8'\n * 'NT 6.3' => '8.1'\n * 'NT 10.0' => '10'\n */\n get isWindows(): IDeviceResult | boolean {\n return (\n /windows /i.test(this.userAgent) && {\n version: this.match(1, /Windows ((NT|XP)( \\d\\d?.\\d)?)/i),\n }\n );\n }\n\n /**\n * Returns if the device is an iOS device (and if so which version)\n */\n get isiOS(): IDeviceResult | boolean {\n return (\n !!this.iOSDevice && {\n version:\n this.match(1, /os (\\d+([_\\s]\\d+)*) like mac os x/i).replace(/[_\\s]/g, '.') ||\n this.match(1, /version\\/(\\d+(\\.\\d+)?)/i),\n }\n );\n }\n\n /**\n * Returns if the device is an Android device (and if so which version)\n */\n get isAndroid(): IDeviceResult | boolean {\n return (\n this.isAndroidDevice && {\n version: this.match(1, /android[ \\/-](\\d+(\\.\\d+)*)/i),\n }\n );\n }\n\n /**\n * Returns the browser name and version\n */\n get browser(): IBrowserResult | boolean {\n const versionIdentifier = this.match(1, /version\\/(\\d+(\\.\\d+)?)/i);\n\n if (/opera/i.test(this.userAgent)) {\n // Opera\n return {\n name: 'Opera',\n version: versionIdentifier || this.match(1, /(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/opr\\/|opios/i.test(this.userAgent)) {\n // Opera\n return {\n name: 'Opera',\n version: this.match(1, /(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i) || versionIdentifier,\n };\n } else if (/SamsungBrowser/i.test(this.userAgent)) {\n // Samsung Browser\n return {\n name: 'Samsung Internet for Android',\n version: versionIdentifier || this.match(1, /(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/yabrowser/i.test(this.userAgent)) {\n // Yandex Browser\n return {\n name: 'Yandex Browser',\n version: versionIdentifier || this.match(1, /(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/ucbrowser/i.test(this.userAgent)) {\n // UC Browser\n return {\n name: 'UC Browser',\n version: this.match(1, /(?:ucbrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/msie|trident/i.test(this.userAgent)) {\n // Internet Explorer\n return {\n name: 'Internet Explorer',\n version: this.match(1, /(?:msie |rv:)(\\d+(\\.\\d+)?)/i),\n };\n } else if (/(edge|edgios|edga|edg)/i.test(this.userAgent)) {\n // Edge\n return {\n name: 'Microsoft Edge',\n version: this.match(2, /(edge|edgios|edga|edg)\\/(\\d+(\\.\\d+)?)/i),\n };\n } else if (/firefox|iceweasel|fxios/i.test(this.userAgent)) {\n // Firefox\n return {\n name: 'Firefox',\n version: this.match(1, /(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/chromium/i.test(this.userAgent)) {\n // Chromium\n return {\n name: 'Chromium',\n version: this.match(1, /(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i) || versionIdentifier,\n };\n } else if (/chrome|crios|crmo/i.test(this.userAgent)) {\n // Chrome\n return {\n name: 'Chrome',\n version: this.match(1, /(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i),\n };\n } else if (/safari|applewebkit/i.test(this.userAgent)) {\n // Safari\n return {\n name: 'Safari',\n version: versionIdentifier,\n };\n } else {\n // Everything else\n return {\n name: this.match(1, /^(.*)\\/(.*) /),\n version: this.match(2, /^(.*)\\/(.*) /),\n };\n }\n }\n}","import { DetectUA } from \"./DetectUA\";\n\nconst isSSR = typeof window === 'undefined';\n\nconst detectUA = new DetectUA();\nconst userAgent = (navigator.userAgent || navigator.vendor).toLowerCase();\nconst browserName = typeof detectUA.browser === \"boolean\" ? \"\" : detectUA.browser.name\n\nexport class SystemInfo {\n static isTablet = detectUA.isTablet;\n static isMobile = detectUA.isMobile || detectUA.isTablet;\n static isDesktop = detectUA.isDesktop;\n static device = SystemInfo.isMobile ? \"mobile\" : \"desktop\";\n static isAndroid = !!detectUA.isAndroid;\n static isIOS = !!detectUA.isiOS;\n static isMacOS = !!detectUA.isMacOS;\n static isWindows = typeof detectUA.isWindows === \"boolean\" ? detectUA.isWindows : detectUA.isWindows.version !== null;\n static isLinux = userAgent.indexOf(\"linux\") != -1;\n static ua = userAgent;\n static isEdge = browserName === \"Microsoft Edge\";\n static isIE = browserName === \"Internet Explorer\";\n static isFirefox = browserName === \"Firefox\";\n static isChrome = browserName === \"Chrome\";\n static isOpera = browserName === \"Opera\";\n static isSafari = browserName === \"Safari\";\n static isSupportMSAA = !userAgent.match(\"version/15.4 \");\n static cpuCoreCount = navigator.hardwareConcurrency || 1;\n static isRetina =!isSSR && window.devicePixelRatio && window.devicePixelRatio >= 1.5;\n static isIFrame = !isSSR && window.self !== window.top;\n}","import { MathUtils, Quaternion, Spherical, Vector2, Vector3 } from \"three\";\nimport { VirtualCamera } from \"./VirtualCamera\";\nimport { DeviceInput } from \"../DeviceInput\";\nimport { SystemInfo } from \"../SystemInfo\";\nimport { property } from \"../PropertyManager\";\nimport { FInterpTo, VInterpTo } from \"../math\";\n\nconst { clamp, degToRad } = MathUtils;\nconst { abs, tan, PI } = Math;\nconst PI2 = PI * 2;\nconst ESP = 0.001;\n\nexport class FreelookVirtualCamera extends VirtualCamera {\n static __loc0 = new Vector2();\n static __loc1 = new Vector2();\n static __center = new Vector2();\n static __preCenter = new Vector2();\n static __panDelta = new Vector2();\n static __panTarget = new Vector2();\n static __rotateDelta = new Vector2();\n static __posDelta = new Vector3();\n static __lookAtOffset = new Vector3();\n static __xAxis = new Vector3();\n static __yAxis = new Vector3();\n static __quat = new Quaternion();\n\n private _button: number = -1;\n private _touchID: number = -1;\n private _preLoc0: Vector2 = new Vector2();\n private _preLoc1: Vector2 = new Vector2();\n private _spherical: Spherical = new Spherical(4, Math.PI / 2);\n private _lookAt: Vector3 = new Vector3();\n private _offset: Vector2 = new Vector2();\n\n private _tempSmoothing: number = 6;\n private _tempRotateSmoothing: number = 8;\n private _targetTheta: number = 0;\n private _targetPhi: number = 0;\n private _targetSpringLength: number = 4;\n private _targetFov: number = this.fov;\n private _targetLookAt: Vector3 = new Vector3();\n private _targetOffset: Vector2 = new Vector2();\n\n @property({ dir: \"set\" })\n forbidX: boolean = false;\n @property({ dir: \"set\" })\n forbidY: boolean = false;\n @property({ dir: \"set\" })\n forbidZ: boolean = false;\n @property({ dir: \"set\" })\n forbidPanX: boolean = false;\n @property({ dir: \"set\" })\n forbidPanY: boolean = false;\n @property({ dir: \"set\" })\n forbitPanOffsetY: boolean = false;\n\n @property({ dir: \"set\", step: 0.01 })\n panSpeed: number = 1;\n @property({ dir: \"set\", step: 0.01 })\n rotateSpeed: number = 1;\n @property({ dir: \"set\", step: 0.01 })\n smoothing: number = 5;\n @property({ dir: \"set\", step: 0.01 })\n rotateSmoothing: number = 8;\n @property({ dir: \"set\", step: 0.01 })\n phiMin: number = ESP;\n @property({ dir: \"set\", step: 0.01 })\n phiMax: number = Math.PI - ESP;\n @property({ dir: \"set\", step: 0.01 })\n thetaMin: number = -Infinity;\n @property({ dir: \"set\", step: 0.01 })\n thetaMax: number = Infinity;\n @property({ dir: \"set\", step: 0.01 })\n distanceMin: number = ESP;\n @property({ dir: \"set\", step: 0.01 })\n distanceMax: number = Infinity;\n\n @property\n get lookAt() {\n return this._lookAt;\n }\n set lookAt(v: Vector3) {\n this._lookAt.copy(v);\n this._targetLookAt.copy(v);\n }\n\n @property\n get offset() {\n return this._offset;\n }\n set offset(v: Vector2) {\n this._offset.copy(v);\n this._targetOffset.copy(v);\n }\n\n @property({ step: 0.01 })\n get springLength() {\n return this._spherical.radius;\n }\n set springLength(v: number) {\n this._spherical.radius = this._targetSpringLength = clamp(v, this.distanceMin, this.distanceMax);\n }\n\n @property({ step: 0.01 })\n get theta() {\n return this._spherical.theta;\n }\n set theta(v: number) {\n this._spherical.theta = this._targetTheta = clamp(v, this.thetaMin, this.thetaMax);\n }\n\n @property({ step: 0.01 })\n get phi() {\n return this._spherical.phi;\n }\n set phi(v: number) {\n this._spherical.phi = this._targetPhi = clamp(v, this.phiMin, this.phiMax);\n }\n\n @property\n get fov() {\n return this.lens.fov;\n }\n set fov(v: number) {\n this.lens.fov = this._targetFov = v;\n }\n\n onEnable() {\n this.viewer.on(DeviceInput.POINTER_DOWN, this._onPointerDown, this);\n this.viewer.on(DeviceInput.POINTER_UP, this._onPointerUp, this);\n this.viewer.on(DeviceInput.POINTER_MOVE, this._onPointerMove, this);\n this.viewer.on(DeviceInput.MOUSE_WHEEL, this._onMouseWheel, this);\n this.viewer.on(DeviceInput.TOUCH_START, this._onTouchStart, this);\n this.viewer.on(DeviceInput.TOUCH_MOVE, this._onTouchMove, this);\n this.reset();\n }\n\n onDisable() {\n this.viewer.targetOff(this);\n }\n\n reset() {\n this._button = -1;\n this._touchID = -1;\n\n this._targetTheta = this.theta;\n this._targetPhi = this.phi;\n this._targetSpringLength = this.springLength;\n this._targetLookAt.copy(this._lookAt);\n this._targetFov = this.lens.fov;\n }\n\n private _onPointerDown(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n this._button = e.button;\n this._preLoc0.set(e.pageX, e.pageY);\n }\n\n private _onPointerUp(_: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n this._button = -1;\n }\n\n private _onPointerMove(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n const { __loc0, __panDelta, __rotateDelta } = FreelookVirtualCamera;\n __loc0.set(e.pageX, e.pageY);\n\n switch (this._button) {\n case 0:\n this._setTargetRotation(this._calculateRotatelDelta(__rotateDelta, this._preLoc0, __loc0));\n break;\n case 1:\n case 2:\n this._setTargetLookAt(this._calculatePanDelta(__panDelta, this._preLoc0, __loc0));\n break;\n }\n\n this._preLoc0.copy(__loc0);\n }\n\n private _onMouseWheel(e: WheelEvent) {\n if (e.deltaY > 0) {\n this._targetSpringLength *= this._calculateDistanceScale(1 / 0.85);\n }\n else if (e.deltaY < 0) {\n this._targetSpringLength *= this._calculateDistanceScale(0.85);\n }\n this._setTargetSpringLength(this._targetSpringLength);\n }\n\n private _onTouchStart(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n let touches = e.touches;\n if (touches.length > 1) {\n this._preLoc0.set(touches[0].pageX, touches[0].pageY);\n this._preLoc1.set(touches[1].pageX, touches[1].pageY);\n }\n else if (touches.length > 0) {\n this._touchID = touches[0].identifier;\n this._preLoc0.set(touches[0].pageX, touches[0].pageY);\n }\n }\n\n private _onTouchMove(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n const { __loc0, __loc1, __panDelta, __rotateDelta, __preCenter, __center } = FreelookVirtualCamera;\n\n let touches = e.touches;\n if (touches.length > 1) {\n __loc0.set(touches[0].pageX, touches[0].pageY);\n __loc1.set(touches[1].pageX, touches[1].pageY);\n\n if (this.lookAt) {\n this._targetSpringLength *= this._calculateDistanceScale(this._preLoc0.distanceTo(this._preLoc1) / __loc0.distanceTo(__loc1))\n this._setTargetSpringLength(this._targetSpringLength);\n }\n\n __preCenter.copy(this._preLoc0).add(this._preLoc1).multiplyScalar(0.5);\n __center.copy(__loc0).add(__loc1).multiplyScalar(0.5);\n\n this._setTargetLookAt(this._calculatePanDelta(__panDelta, __preCenter, __center));\n\n this._preLoc0.copy(__loc0);\n this._preLoc1.copy(__loc1);\n }\n else if (touches.length > 0) {\n if (this._touchID === touches[0].identifier) {\n __loc0.set(touches[0].pageX, touches[0].pageY);\n this._setTargetRotation(this._calculateRotatelDelta(__rotateDelta, this._preLoc0, __loc0));\n this._preLoc0.copy(__loc0);\n }\n\n }\n }\n\n private _calculateDistanceScale(scale: number) {\n this._tempRotateSmoothing = this.rotateSmoothing;\n\n if (this.forbidZ) {\n scale = 1;\n }\n return scale;\n }\n\n private _calculateRotatelDelta(out: Vector2, loc0: Vector2, loc1: Vector2) {\n this._tempRotateSmoothing = this.rotateSmoothing;\n\n out.copy(loc1).sub(loc0).multiplyScalar(this.rotateSpeed * 2 * Math.PI / this.viewer.height);\n out.y = -out.y;\n\n if (this.forbidX) {\n out.x = 0;\n }\n if (this.forbidY) {\n out.y = 0;\n }\n\n return out;\n }\n\n private _calculatePanDelta(out: Vector2, loc0: Vector2, loc1: Vector2) {\n this._tempRotateSmoothing = this.rotateSmoothing;\n\n out.copy(loc1).sub(loc0).multiplyScalar(this.panSpeed / this.viewer.height);\n if (this.forbidPanX) {\n out.x = 0;\n }\n if (this.forbidPanY) {\n out.y = 0;\n }\n\n return out;\n }\n\n private _calculateLookAtOffset(panDelta: Vector2, out: Vector3 = new Vector3()) {\n const { __xAxis, __yAxis, __posDelta } = FreelookVirtualCamera;\n __xAxis.setFromMatrixColumn(this.node.matrix, 0);\n __yAxis.setFromMatrixColumn(this.node.matrix, 1);\n\n if (this.forbitPanOffsetY) {\n __yAxis.y = 0;\n __yAxis.normalize();\n }\n\n __posDelta.copy(this.node.position).sub(this.lookAt);\n const length = __posDelta.length() * 2 * tan(degToRad(this.fov * 0.5));\n\n return out.set(0, 0, 0)\n .sub(__xAxis.multiplyScalar(panDelta.x * length))\n .add(__yAxis.multiplyScalar(panDelta.y * length));\n }\n\n private _setTargetLookAt(panDelta: Vector2) {\n const { __lookAtOffset } = FreelookVirtualCamera;\n this._targetLookAt.add(this._calculateLookAtOffset(panDelta, __lookAtOffset));\n }\n\n private _setTargetRotation(rotateDelta: Vector2) {\n this._targetTheta -= rotateDelta.x;\n this._targetPhi += rotateDelta.y;\n this._targetTheta = clamp(this._targetTheta, this.thetaMin, this.thetaMax);\n this._targetPhi = clamp(this._targetPhi, this.phiMin, this.phiMax);\n }\n\n private _setTargetSpringLength(radius: number) {\n this._targetSpringLength = clamp(radius, this.distanceMin, this.distanceMax);\n }\n\n goto({\n springLength = this._targetSpringLength,\n theta = this._targetTheta,\n phi = this._targetPhi,\n lookAt = this._lookAt,\n offset = this._targetOffset,\n fov = this.lens.fov,\n smoothing = this.smoothing,\n rotateSmoothing = this.smoothing,\n }: {\n duration?: number;\n springLength?: number;\n theta?: number;\n phi?: number;\n lookAt?: Vector3;\n offset?: Vector2;\n fov?: number;\n smoothing?: number;\n rotateSmoothing?: number;\n }) {\n const t0 = this._spherical.theta = this._spherical.theta % PI2;\n const t1 = theta % PI2;\n const delta = MathUtils.euclideanModulo(t1 - t0 + Math.PI, PI2) - Math.PI;\n this._targetTheta = clamp(t0 + delta, this.thetaMin, this.thetaMax);\n this._targetPhi = clamp(phi, this.phiMin, this.phiMax);\n this._targetSpringLength = clamp(springLength, this.distanceMin, this.distanceMax);\n this._targetLookAt.copy(lookAt);\n this._targetOffset.copy(offset);\n this._targetFov = fov;\n this._tempSmoothing = smoothing;\n this._tempRotateSmoothing = rotateSmoothing;\n }\n\n private _finalLookAt: Vector3 = new Vector3();\n\n update(dt: number) {\n const smoothing = this._tempSmoothing;\n const rotateSmoothing = this._tempRotateSmoothing;\n\n this._spherical.theta = FInterpTo(this._spherical.theta, this._targetTheta, dt, rotateSmoothing);\n this._spherical.phi = FInterpTo(this._spherical.phi, this._targetPhi, dt, rotateSmoothing);\n this._spherical.radius = FInterpTo(this._spherical.radius, this._targetSpringLength, dt, smoothing);\n\n this.lens.fov = FInterpTo(this.lens.fov, this._targetFov, dt, smoothing);\n VInterpTo(this._lookAt, this._targetLookAt, dt, smoothing);\n VInterpTo(this._offset, this._targetOffset, dt, smoothing);\n\n this._calculateLookAtOffset(this._offset, this._finalLookAt).add(this._lookAt);\n this.node.position.setFromSpherical(this._spherical).add(this._finalLookAt);\n this.node.lookAt(this._finalLookAt);\n }\n}","import { BoxGeometry, Material, Mesh } from \"three\";\n\nexport class Box<M extends Material | Material[] = Material | Material[]> extends Mesh<BoxGeometry, M> {\n constructor(...args: ConstructorParameters<typeof BoxGeometry>) {\n super(new BoxGeometry(...args));\n }\n}","import { Material, Mesh, SphereGeometry } from \"three\";\n\nexport class Sphere<M extends Material | Material[] = Material | Material[]> extends Mesh<SphereGeometry, M> {\n constructor(...args: ConstructorParameters<typeof SphereGeometry>) {\n super(new SphereGeometry(...args));\n }\n}","import { Material, Mesh, PlaneGeometry } from \"three\";\n\nexport class Plane<M extends Material | Material[] = Material | Material[]> extends Mesh<PlaneGeometry, M> {\n constructor(...args: ConstructorParameters<typeof PlaneGeometry>) {\n super(new PlaneGeometry(...args));\n }\n}\n","import {\n Matrix4,\n PerspectiveCamera,\n Vector3,\n Vector4,\n Plane,\n WebGLRenderTarget,\n HalfFloatType,\n LinearFilter,\n LinearMipMapLinearFilter\n} from \"three\";\n\nimport { Component } from \"../Component\";\n\nexport class Reflector extends Component {\n\n constructor({\n textureWidth = 512,\n textureHeight = 512,\n clipBias = 0,\n multisample = 4,\n layer = 0,\n normal = new Vector3(0, 1, 0),\n mipmap = false,\n }: {\n textureWidth?: number,\n textureHeight?: number,\n clipBias?: number,\n multisample?: number,\n normal?: Vector3,\n layer?: number,\n mipmap?: boolean\n } = {}) {\n super();\n const reflectorPlane = new Plane();\n const reflectorNormal = new Vector3();\n const reflectorWorldPosition = new Vector3();\n const cameraWorldPosition = new Vector3();\n const rotationMatrix = new Matrix4();\n const lookAtPosition = new Vector3(0, 0, - 1);\n const clipPlane = new Vector4();\n\n const view = new Vector3();\n const target = new Vector3();\n const q = new Vector4();\n\n const textureMatrix = new Matrix4();\n const virtualCamera = new PerspectiveCamera();\n virtualCamera.layers.mask = layer;\n\n const renderTarget = new WebGLRenderTarget(textureWidth, textureHeight, {\n samples: multisample,\n type: HalfFloatType,\n minFilter: mipmap ? LinearMipMapLinearFilter : LinearFilter,\n generateMipmaps: mipmap\n });\n\n this.update = () => {\n const node = this.node;\n const { renderer, camera, scene } = this.viewer;\n\n reflectorWorldPosition.setFromMatrixPosition(node.matrixWorld);\n cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);\n\n rotationMatrix.extractRotation(node.matrixWorld);\n\n reflectorNormal.copy(normal);\n reflectorNormal.applyMatrix4(rotationMatrix);\n\n view.subVectors(reflectorWorldPosition, cameraWorldPosition);\n\n // Avoid rendering when reflector is facing away\n\n if (view.dot(reflectorNormal) > 0) return;\n\n view.reflect(reflectorNormal).negate();\n view.add(reflectorWorldPosition);\n\n rotationMatrix.extractRotation(camera.matrixWorld);\n\n lookAtPosition.set(0, 0, -1);\n lookAtPosition.applyMatrix4(rotationMatrix);\n lookAtPosition.add(cameraWorldPosition);\n\n target.subVectors(reflectorWorldPosition, lookAtPosition);\n target.reflect(reflectorNormal).negate();\n target.add(reflectorWorldPosition);\n\n virtualCamera.position.copy(view);\n virtualCamera.up.set(0, 1, 0);\n virtualCamera.up.applyMatrix4(rotationMatrix);\n virtualCamera.up.reflect(reflectorNormal);\n virtualCamera.lookAt(target);\n\n virtualCamera.far = camera.far; // Used in WebGLBackground\n\n virtualCamera.updateMatrixWorld();\n virtualCamera.projectionMatrix.copy(camera.projectionMatrix);\n\n // Update the texture matrix\n textureMatrix.set(\n 0.5, 0.0, 0.0, 0.5,\n 0.0, 0.5, 0.0, 0.5,\n 0.0, 0.0, 0.5, 0.5,\n 0.0, 0.0, 0.0, 1.0\n );\n textureMatrix.multiply(virtualCamera.projectionMatrix);\n textureMatrix.multiply(virtualCamera.matrixWorldInverse);\n textureMatrix.multiply(node.matrixWorld);\n\n // Now update projection matrix with new clip plane, implementing code from: http://www.terathon.com/code/oblique.html\n // Paper explaining this technique: http://www.terathon.com/lengyel/Lengyel-Oblique.pdf\n reflectorPlane.setFromNormalAndCoplanarPoint(reflectorNormal, reflectorWorldPosition);\n reflectorPlane.applyMatrix4(virtualCamera.matrixWorldInverse);\n\n clipPlane.set(reflectorPlane.normal.x, reflectorPlane.normal.y, reflectorPlane.normal.z, reflectorPlane.constant);\n\n const projectionMatrix = virtualCamera.projectionMatrix;\n\n q.x = (Math.sign(clipPlane.x) + projectionMatrix.elements[8]) / projectionMatrix.elements[0];\n q.y = (Math.sign(clipPlane.y) + projectionMatrix.elements[9]) / projectionMatrix.elements[5];\n q.z = - 1.0;\n q.w = (1.0 + projectionMatrix.elements[10]) / projectionMatrix.elements[14];\n\n // Calculate the scaled plane vector\n clipPlane.multiplyScalar(2.0 / clipPlane.dot(q));\n\n // Replacing the third row of the projection matrix\n projectionMatrix.elements[2] = clipPlane.x;\n projectionMatrix.elements[6] = clipPlane.y;\n projectionMatrix.elements[10] = clipPlane.z + 1.0 - clipBias;\n projectionMatrix.elements[14] = clipPlane.w;\n\n // Render\n node.visible = false;\n\n const currentRenderTarget = renderer.getRenderTarget();\n const currentActiveCubeFace = renderer.getActiveCubeFace();\n const currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n const currentXrEnabled = renderer.xr.enabled;\n const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;\n\n renderer.xr.enabled = false; // Avoid camera modification\n renderer.shadowMap.autoUpdate = false; // Avoid re-computing shadows\n\n renderer.setRenderTarget(renderTarget);\n\n renderer.state.buffers.depth.setMask(true); // make sure the depth buffer is writable so it can be properly cleared, see #18897\n\n if (renderer.autoClear === false) renderer.clear();\n renderer.render(scene, virtualCamera);\n\n renderer.xr.enabled = currentXrEnabled;\n renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;\n\n renderer.setRenderTarget(currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel);\n\n // Restore viewport\n\n const viewport = camera.viewport;\n\n if (viewport !== undefined) {\n renderer.state.viewport(viewport);\n }\n\n node.visible = true;\n }\n\n this.getRenderTarget = function () {\n return renderTarget;\n };\n this.getTextureMatrix = function () {\n return textureMatrix;\n }\n this.onDestroy = function () {\n renderTarget.dispose();\n };\n }\n\n getTextureMatrix: () => Matrix4;\n getRenderTarget: () => WebGLRenderTarget;\n\n}","import { AnimationAction, AnimationActionLoopStyles, AnimationMixer } from \"three\";\nimport { Component } from \"../Component\";\n\nexport class Animation extends Component {\n private _mixer!: AnimationMixer;\n private _action: AnimationAction;\n private _actions!: AnimationAction[];\n private _progress: number = 0;\n\n playing: boolean = false;\n\n get mixer() {\n return this._mixer;\n }\n get action() {\n return this._action;\n }\n get actions() {\n return this._actions;\n }\n get progress() {\n return this._progress;\n }\n set progress(v: number) {\n if (this.playing) return;\n if (this._action) {\n const duration = this._action.getClip().duration;\n this._mixer.setTime(v * duration);\n }\n }\n\n onLoad(): void {\n this._mixer = new AnimationMixer(this.node);\n this._actions = this.node.animations.map(v => this._mixer.clipAction(v));\n }\n\n onDestroy(): void {\n this._mixer.stopAllAction();\n }\n\n update(dt: number): void {\n if (this.playing) {\n this._mixer.update(dt);\n }\n if (this._action) {\n const duration = this._action.getClip().duration;\n this._progress = (this._mixer.time % duration) / duration;\n }\n }\n\n play(animName?: string, state: {\n mode?: AnimationActionLoopStyles;\n repetitions?: number;\n duration?: number;\n clampWhenFinished?: boolean;\n zeroSlopeAtStart?: boolean;\n zeroSlopeAtEnd?: boolean;\n } = {}) {\n let action = animName ? this._actions.find(v => v.getClip().name === animName) : this._actions[0];\n if (action) {\n if (state.clampWhenFinished !== undefined) action.clampWhenFinished = state.clampWhenFinished;\n if (state.zeroSlopeAtStart !== undefined) action.zeroSlopeAtStart = state.zeroSlopeAtStart;\n if (state.zeroSlopeAtEnd !== undefined) action.zeroSlopeAtEnd = state.zeroSlopeAtEnd;\n if (state.mode) action.setLoop(state.mode, state.repetitions);\n if (state.duration) action.setDuration(state.duration)\n\n if (this._action) {\n this._action.stop();\n }\n this._action = action.play();\n \n this.playing = true;\n }\n return this;\n }\n\n stop() {\n if (this._action) {\n this._action.stop();\n this._action = null;\n }\n this.playing = false;\n return this;\n }\n}","import {\n Matrix4,\n Color,\n Euler,\n Group,\n Material,\n Mesh,\n MeshDepthMaterial,\n OrthographicCamera,\n PlaneGeometry,\n ShaderMaterial,\n Texture,\n Vector3,\n WebGLRenderer,\n WebGLRenderTarget\n} from \"three\";\n\nimport { HorizontalBlurShader, VerticalBlurShader } from \"three/examples/jsm/Addons.js\";\nimport { Component } from \"../Component\";\nimport { property } from \"../PropertyManager\";\nimport { applyProps } from \"../Utils\";\n\nexport class ContactShadows extends Component {\n layerMask: number = 1 << 0;\n\n @property\n get visible() {\n return this.node.visible;\n }\n set visible(v: boolean) {\n this.node.visible = v;\n }\n\n @property\n color: Color = new Color();\n\n @property({ min: 0, max: 15 })\n blur: number = 1;\n\n constructor({\n scale = 10,\n frames = Infinity,\n width = 1,\n height = 1,\n intensity = 1,\n blur = 1,\n near = 0,\n far = 10,\n resolution = 512,\n smooth = true,\n color = new Color(0x0),\n renderOrder = 0,\n layerMask = 1 << 0,\n ...props\n }: {\n scale?: number;\n frames?: number;\n width?: number;\n height?: number;\n intensity?: number;\n blur?: number;\n near?: number;\n far?: number;\n resolution?: number;\n smooth?: boolean;\n color?: Color;\n renderOrder?: number;\n position?: Vector3;\n rotation?: Euler;\n layerMask?: number;\n } = {}) {\n super();\n this.blur = blur;\n this.layerMask = layerMask;\n this.color.copy(color);\n\n width = width * scale;\n height = height * scale;\n\n const planeGeometry = new PlaneGeometry(width, height);\n const shadowCamera = new OrthographicCamera(-width / 2, width / 2, height / 2, -height / 2, near, far)\n\n const renderTarget = new WebGLRenderTarget(resolution, resolution);\n const renderTargetBlur = new WebGLRenderTarget(resolution, resolution);\n renderTargetBlur.texture.generateMipmaps = renderTarget.texture.generateMipmaps = false\n\n const depthMaterial = new MeshDepthMaterial()\n depthMaterial.depthTest = depthMaterial.depthWrite = false\n depthMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n color: { value: this.color },\n }\n shader.fragmentShader = shader.fragmentShader.replace(\n `void main() {`, //\n `uniform vec3 color;\n uniform float intensity;\n void main() {\n `\n )\n shader.fragmentShader = shader.fragmentShader.replace(\n 'vec4( vec3( 1.0 - fragCoordZ ), opacity );',\n // Colorize the shadow, multiply by the falloff so that the center can remain darker\n 'vec4( color * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );'\n )\n }\n const horizontalBlurMaterial = new ShaderMaterial(HorizontalBlurShader)\n const verticalBlurMaterial = new ShaderMaterial(VerticalBlurShader)\n verticalBlurMaterial.depthTest = horizontalBlurMaterial.depthTest = false\n\n const blurPlane = new Mesh(planeGeometry);\n this.node = applyProps(new Group(), { rotation: new Euler(Math.PI / 2, 0, 0), ...props });\n this.node.add(shadowCamera);\n this.node.add(blurPlane);\n\n const textureMatrix = new Matrix4();\n\n const blurShadows = (gl: WebGLRenderer, blur: number) => {\n blurPlane.visible = true\n\n blurPlane.material = horizontalBlurMaterial\n horizontalBlurMaterial.uniforms.tDiffuse.value = renderTarget.texture\n horizontalBlurMaterial.uniforms.h.value = (blur * 1) / 256\n\n gl.setRenderTarget(renderTargetBlur)\n gl.render(blurPlane, shadowCamera)\n\n blurPlane.material = verticalBlurMaterial\n verticalBlurMaterial.uniforms.tDiffuse.value = renderTargetBlur.texture\n verticalBlurMaterial.uniforms.v.value = (blur * 1) / 256\n\n gl.setRenderTarget(renderTarget)\n gl.render(blurPlane, shadowCamera)\n\n blurPlane.visible = false\n }\n\n let count = 0\n let initialBackground: Color | Texture | null\n let initialOverrideMaterial: Material | null\n let initialClearAlpha: number;\n\n this.update = () => {\n shadowCamera.layers.mask = blurPlane.layers.mask = this.layerMask;\n\n if ((frames === Infinity || count < frames)) {\n count++\n\n const { scene, renderer: gl } = this.viewer;\n\n initialBackground = scene.background\n initialOverrideMaterial = scene.overrideMaterial\n\n this.node.visible = false\n scene.background = null\n scene.overrideMaterial = depthMaterial\n\n textureMatrix.set(\n 0.5, 0.0, 0.0, 0.5,\n 0.0, 0.5, 0.0, 0.5,\n 0.0, 0.0, 0.5, 0.5,\n 0.0, 0.0, 0.0, 1.0\n );\n textureMatrix.multiply(shadowCamera.projectionMatrix);\n textureMatrix.multiply(shadowCamera.matrixWorldInverse);\n\n initialClearAlpha = gl.getClearAlpha()\n gl.setClearAlpha(0)\n gl.setRenderTarget(renderTarget)\n gl.render(scene, shadowCamera)\n\n blurShadows(gl, this.blur)\n if (smooth) blurShadows(gl, this.blur * 0.4)\n\n gl.setRenderTarget(null)\n gl.setClearAlpha(initialClearAlpha);\n\n this.node.visible = true\n scene.overrideMaterial = initialOverrideMaterial\n scene.background = initialBackground\n }\n }\n this.onDestroy = () => renderTarget.dispose();\n this.getRenderTarget = () => renderTarget;\n this.getTextureMatrix = () => textureMatrix;\n }\n\n getRenderTarget: () => WebGLRenderTarget;\n getTextureMatrix: () => Matrix4;\n\n}","import { REVISION } from 'three'\n\nconst getVersion = () => parseInt(REVISION.replace(/\\D+/g, ''))\n\nexport const version = /* @__PURE__ */ getVersion()\n","import { ShaderMaterial } from \"three\";\n\nexport class DiscardMaterial extends ShaderMaterial {\n vertexShader: string = 'void main() { }'\n fragmentShader: string = 'void main() { gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); discard; }'\n}","import * as THREE from \"three\";\nimport { ConstructorRepresentation } from \"./types\";\n\ntype UniformValue =\n | THREE.Texture\n | THREE.TypedArray\n | THREE.Matrix4\n | THREE.Matrix3\n | THREE.Quaternion\n | THREE.Vector4\n | THREE.Vector3\n | THREE.Vector2\n | THREE.Color\n | number\n | boolean\n | null\n\ntype Uniforms = Record<string, UniformValue | Record<string, UniformValue> | Array<UniformValue>>\n\nexport function shaderMaterial<U extends Uniforms, M extends THREE.ShaderMaterial & U>(\n uniforms: U,\n vertexShader: string,\n fragmentShader: string,\n) {\n return class extends THREE.ShaderMaterial {\n static key = THREE.MathUtils.generateUUID()\n\n constructor(parameters?: THREE.ShaderMaterialParameters) {\n super({ vertexShader, fragmentShader })\n for (const key in uniforms) {\n this.uniforms[key] = new THREE.Uniform(uniforms[key])\n Object.defineProperty(this, key, {\n get() {\n return this.uniforms[key].value\n },\n set(value) {\n this.uniforms[key].value = value\n },\n })\n }\n this.uniforms = THREE.UniformsUtils.clone(this.uniforms);\n this.setValues(parameters);\n }\n } as unknown as ConstructorRepresentation<M> & { key: string }\n}","import * as THREE from \"three\";\nimport { version } from \"../constants\";\nimport { DiscardMaterial } from \"../materials/DiscardMaterial\";\nimport { shaderMaterial } from \"../shaderMaterial\";\nimport { Plane } from \"../primitive\";\nimport { Component } from \"../Component\";\nimport { __E } from \"../types\";\nimport { applyProps } from \"../Utils\";\n\nexport type AccumulativeShadowsProps = {\n /** How many frames it can render, more yields cleaner results but takes more time, 40 */\n frames?: number\n /** If frames === Infinity blend controls the refresh ratio, 100 */\n blend?: number\n /** Can limit the amount of frames rendered if frames === Infinity, usually to get some performance back once a movable scene has settled, Infinity */\n limit?: number\n /** Scale of the plane, */\n scale?: number\n /** Temporal accumulates shadows over time which is more performant but has a visual regression over instant results, false */\n temporal?: boolean\n /** Opacity of the plane, 1 */\n opacity?: number\n /** Discards alpha pixels, 0.65 */\n alphaTest?: number\n /** Shadow color, black */\n color?: string\n /** Colorblend, how much colors turn to black, 0 is black, 2 */\n colorBlend?: number\n /** Buffer resolution, 1024 */\n resolution?: number\n /** Texture tonemapping */\n toneMapped?: boolean\n\n randomLights?: RandomizedLight[]\n}\n\nexport class AccumulativeShadows extends Component {\n temporal: boolean = false;\n frames: number = 1;\n count: number = 0;\n limit: number = Infinity;\n blend: number = 2;\n\n constructor({\n temporal,\n frames = 40,\n limit = Infinity,\n blend = 20,\n scale = 10,\n opacity = 1,\n alphaTest = 0.75,\n color = 'black',\n colorBlend = 2,\n resolution = 1024,\n toneMapped = true,\n randomLights = [],\n ...props\n }: AccumulativeShadowsProps = {}) {\n super();\n\n this.temporal = !!temporal;\n this.frames = Math.max(2, frames);\n this.blend = Math.max(2, frames === Infinity ? blend : frames);\n this.count = 0;\n\n this.node = applyProps(new THREE.Group(), props);\n\n this.onLoad = () => {\n const { viewer } = this;\n const { renderer, scene, camera } = viewer;\n\n const plm = new ProgressiveLightMap(renderer, scene, resolution);\n const gPlane = viewer.add(Plane<SoftShadowMaterialType>, {\n parent: this.node,\n receiveShadow: true,\n scale: new THREE.Vector3(scale, scale, scale),\n rotation: new THREE.Euler(-Math.PI / 2, 0, 0),\n material: new SoftShadowMaterial({\n color,\n toneMapped,\n transparent: true,\n depthWrite: false,\n blend: colorBlend,\n map: plm.progressiveLightMap2.texture\n })\n });\n plm.configure(gPlane);\n\n const gLights = viewer.add(THREE.Group, { parent: this.node });\n gLights.traverse = () => null;\n\n randomLights.forEach(light => gLights.add(light));\n\n const update = (frames = 1) => {\n // Adapt the opacity-blend ratio to the number of frames\n const material = gPlane.material\n if (!this.temporal) {\n material.opacity = opacity\n material.alphaTest = alphaTest\n } else {\n material.opacity = Math.min(opacity, material.opacity + opacity / this.blend)\n material.alphaTest = Math.min(alphaTest, material.alphaTest + alphaTest / this.blend)\n }\n\n // Switch accumulative lights on\n gLights.visible = true\n // Collect scene lights and meshes\n plm.prepare()\n\n // Update the lightmap and the accumulative lights\n for (let i = 0; i < frames; i++) {\n randomLights.forEach((light) => light.update())\n plm.update(camera, this.blend)\n }\n // Switch lights off\n gLights.visible = false\n // Restore lights and meshes\n plm.finish()\n }\n\n const reset = () => {\n // Clear buffers, reset opacities, set frame count to 0\n plm.clear()\n const material = gPlane.material\n material.opacity = 0\n material.alphaTest = 0\n this.count = 0\n }\n\n this.start = () => {\n // Reset internals, buffers, ...\n reset();\n // Update lightmap\n if (!this.temporal && this.frames !== Infinity) update(this.blend)\n }\n\n this.update = () => {\n if ((this.temporal || this.frames === Infinity) && this.count < this.frames && this.count < this.limit) {\n update();\n this.count++;\n }\n }\n }\n }\n\n reset?(): void;\n\n}\n\nexport type RandomizedLightProps = __E & {\n /** How many frames it will jiggle the lights, 1.\n * Frames is context aware, if a provider like AccumulativeShadows exists, frames will be taken from there! */\n frames?: number\n /** Light position, [0, 0, 0] */\n position?: THREE.Vector3\n /** Radius of the jiggle, higher values make softer light, 5 */\n radius?: number\n /** Amount of lights, 8 */\n amount?: number\n /** Light intensity, 1 */\n intensity?: number\n /** Ambient occlusion, lower values mean less AO, hight more, you can mix AO and directional light, 0.5 */\n ambient?: number\n /** If the lights cast shadows, this is true by default */\n castShadow?: boolean\n /** Default shadow bias, 0 */\n bias?: number\n /** Default map size, 512 */\n mapSize?: number\n /** Default size of the shadow camera, 10 */\n size?: number\n /** Default shadow camera near, 0.5 */\n near?: number\n /** Default shadow camera far, 500 */\n far?: number\n}\n\nexport class RandomizedLight extends THREE.Group {\n\n constructor({\n castShadow = true,\n bias = 0.001,\n mapSize = 512,\n size = 5,\n near = 0.5,\n far = 500,\n frames = 1,\n position = new THREE.Vector3(),\n radius = 1,\n amount = 8,\n intensity = version >= 155 ? Math.PI : 1,\n ambient = 0.5,\n ...props\n }: RandomizedLightProps = {}) {\n super();\n applyProps(this, props as any);\n\n const length = position.length();\n for (let i = 0; i < amount; i++) {\n const light = new THREE.DirectionalLight();\n light.shadow.bias = bias;\n light.shadow.mapSize.set(mapSize, mapSize);\n light.shadow.camera = new THREE.OrthographicCamera(-size, size, size, -size, near, far);\n light.castShadow = castShadow;\n light.intensity = intensity / amount;\n this.add(light);\n }\n\n this.update = () => {\n for (let light of this.children) {\n if (Math.random() > ambient) {\n light.position.set(\n position.x + THREE.MathUtils.randFloatSpread(radius),\n position.y + THREE.MathUtils.randFloatSpread(radius),\n position.z + THREE.MathUtils.randFloatSpread(radius)\n )\n }\n else {\n const lambda = Math.acos(2 * Math.random() - 1) - Math.PI / 2.0\n const phi = 2 * Math.PI * Math.random()\n light.position.set(\n Math.cos(lambda) * Math.cos(phi) * length,\n Math.abs(Math.cos(lambda) * Math.sin(phi) * length),\n Math.sin(lambda) * length\n )\n }\n }\n }\n }\n\n update?(): void;\n}\n\nconst SoftShadowMaterial = shaderMaterial(\n {\n color: new THREE.Color(),\n blend: 2.0,\n alphaTest: 0.75,\n opacity: 0,\n map: null,\n },\n `varying vec2 vUv;\n void main() {\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);\n vUv = uv;\n }`,\n `varying vec2 vUv;\n uniform sampler2D map;\n uniform vec3 color;\n uniform float opacity;\n uniform float alphaTest;\n uniform float blend;\n void main() {\n vec4 sampledDiffuseColor = texture2D(map, vUv);\n gl_FragColor = vec4(color * sampledDiffuseColor.r * blend, max(0.0, (1.0 - (sampledDiffuseColor.r + sampledDiffuseColor.g + sampledDiffuseColor.b) / alphaTest)) * opacity);\n #include <${version >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>\n }`\n)\n\ntype SoftShadowMaterialType = InstanceType<typeof SoftShadowMaterial>;\n\nfunction isLight(object: any): object is THREE.Light {\n return object.isLight\n}\n\nfunction isGeometry(object: any): object is THREE.Mesh {\n return !!object.geometry\n}\n\nclass ProgressiveLightMap {\n renderer: THREE.WebGLRenderer\n res: number\n scene: THREE.Scene\n object: THREE.Mesh | null\n buffer1Active: boolean\n progressiveLightMap1: THREE.WebGLRenderTarget\n progressiveLightMap2: THREE.WebGLRenderTarget\n discardMat: THREE.ShaderMaterial\n targetMat: THREE.MeshLambertMaterial\n previousShadowMap: { value: THREE.Texture }\n averagingWindow: { value: number }\n clearColor: THREE.Color\n clearAlpha: number\n lights: { object: THREE.Light; intensity: number }[]\n meshes: { object: THREE.Mesh; material: THREE.Material | THREE.Material[] }[]\n\n constructor(renderer: THREE.WebGLRenderer, scene: THREE.Scene, res: number = 1024) {\n this.renderer = renderer\n this.res = res\n this.scene = scene\n this.buffer1Active = false\n this.lights = []\n this.meshes = []\n this.object = null\n this.clearColor = new THREE.Color()\n this.clearAlpha = 0\n\n // Create the Progressive LightMap Texture\n const textureParams = {\n type: THREE.HalfFloatType,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n }\n this.progressiveLightMap1 = new THREE.WebGLRenderTarget(this.res, this.res, textureParams)\n this.progressiveLightMap2 = new THREE.WebGLRenderTarget(this.res, this.res, textureParams)\n\n // Inject some spicy new logic into a standard phong material\n this.discardMat = new DiscardMaterial()\n this.targetMat = new THREE.MeshLambertMaterial({ fog: false })\n this.previousShadowMap = { value: this.progressiveLightMap1.texture }\n this.averagingWindow = { value: 100 }\n this.targetMat.onBeforeCompile = (shader) => {\n // Vertex Shader: Set Vertex Positions to the Unwrapped UV Positions\n shader.vertexShader =\n 'varying vec2 vUv;\\n' +\n shader.vertexShader.slice(0, -1) +\n 'vUv = uv; gl_Position = vec4((uv - 0.5) * 2.0, 1.0, 1.0); }'\n\n // Fragment Shader: Set Pixels to average in the Previous frame's Shadows\n const bodyStart = shader.fragmentShader.indexOf('void main() {')\n shader.fragmentShader =\n 'varying vec2 vUv;\\n' +\n shader.fragmentShader.slice(0, bodyStart) +\n 'uniform sampler2D previousShadowMap;\\n\tuniform float averagingWindow;\\n' +\n shader.fragmentShader.slice(bodyStart - 1, -1) +\n `\\nvec3 texelOld = texture2D(previousShadowMap, vUv).rgb;\n gl_FragColor.rgb = mix(texelOld, gl_FragColor.rgb, 1.0/ averagingWindow);\n }`\n\n // Set the Previous Frame's Texture Buffer and Averaging Window\n shader.uniforms.previousShadowMap = this.previousShadowMap\n shader.uniforms.averagingWindow = this.averagingWindow\n }\n }\n\n clear() {\n this.renderer.getClearColor(this.clearColor)\n this.clearAlpha = this.renderer.getClearAlpha()\n this.renderer.setClearColor('black', 1)\n this.renderer.setRenderTarget(this.progressiveLightMap1)\n this.renderer.clear()\n this.renderer.setRenderTarget(this.progressiveLightMap2)\n this.renderer.clear()\n this.renderer.setRenderTarget(null)\n this.renderer.setClearColor(this.clearColor, this.clearAlpha)\n\n this.lights = []\n this.meshes = []\n this.scene.traverse((object) => {\n if (isGeometry(object)) {\n this.meshes.push({ object, material: object.material })\n } else if (isLight(object)) {\n this.lights.push({ object, intensity: object.intensity })\n }\n })\n }\n\n prepare() {\n this.lights.forEach((light) => (light.object.intensity = 0))\n this.meshes.forEach((mesh) => (mesh.object.material = this.discardMat))\n }\n\n finish() {\n this.lights.forEach((light) => (light.object.intensity = light.intensity))\n this.meshes.forEach((mesh) => (mesh.object.material = mesh.material))\n }\n\n configure(object) {\n this.object = object\n }\n\n update(camera, blendWindow = 100) {\n if (!this.object) return\n // Set each object's material to the UV Unwrapped Surface Mapping Version\n this.averagingWindow.value = blendWindow\n this.object.material = this.targetMat\n // Ping-pong two surface buffers for reading/writing\n const activeMap = this.buffer1Active ? this.progressiveLightMap1 : this.progressiveLightMap2\n const inactiveMap = this.buffer1Active ? this.progressiveLightMap2 : this.progressiveLightMap1\n // Render the object's surface maps\n const oldBg = this.scene.background\n this.scene.background = null\n this.renderer.setRenderTarget(activeMap)\n this.previousShadowMap.value = inactiveMap.texture\n this.buffer1Active = !this.buffer1Active\n this.renderer.render(this.scene, camera)\n this.renderer.setRenderTarget(null)\n this.scene.background = oldBg\n }\n}","\nimport { Box3, Group, Object3D, Vector3, Sphere } from \"three\";\nimport { Component } from \"../Component\";\nimport { applyProps } from \"../Utils\";\nimport { __E } from \"../types\";\n\nexport type OnCenterCallbackProps = {\n /** The next parent above <Center> */\n parent: Object3D\n /** The outmost container group of the <Center> component */\n container: Object3D\n width: number\n height: number\n depth: number\n boundingBox: Box3\n boundingSphere: Sphere\n center: Vector3\n verticalAlignment: number\n horizontalAlignment: number\n depthAlignment: number\n}\n\nexport type CenterProps = __E & {\n top?: boolean\n right?: boolean\n bottom?: boolean\n left?: boolean\n front?: boolean\n back?: boolean\n /** Disable all axes */\n disable?: boolean\n /** Disable x-axis centering */\n disableX?: boolean\n /** Disable y-axis centering */\n disableY?: boolean\n /** Disable z-axis centering */\n disableZ?: boolean\n /** See https://threejs.org/docs/index.html?q=box3#api/en/math/Box3.setFromObject */\n precise?: boolean\n /** Callback, fires in the useLayoutEffect phase, after measurement */\n onCentered?: (props: OnCenterCallbackProps) => void\n /** Optional cacheKey to keep the component from recalculating on every render */\n cacheKey?: any\n children?: Object3D[]\n}\n\nexport class Center extends Component<Group> {\n\n constructor({\n disable,\n disableX,\n disableY,\n disableZ,\n left,\n right,\n top,\n bottom,\n front,\n back,\n onCentered,\n precise = true,\n cacheKey = 0,\n children = [],\n ...props\n }: CenterProps = {}) {\n super();\n this.node = applyProps(new Group(), props);\n \n this.start = () => {\n const inner = new Group().add(...children);\n const outer = new Group().add(inner);\n this.node.add(outer);\n\n outer.matrixWorld.identity();\n const box3 = new Box3().setFromObject(inner, precise)\n const center = new Vector3()\n const sphere = new Sphere()\n const width = box3.max.x - box3.min.x\n const height = box3.max.y - box3.min.y\n const depth = box3.max.z - box3.min.z\n box3.getCenter(center)\n box3.getBoundingSphere(sphere)\n const vAlign = top ? height / 2 : bottom ? -height / 2 : 0\n const hAlign = left ? -width / 2 : right ? width / 2 : 0\n const dAlign = front ? depth / 2 : back ? -depth / 2 : 0\n\n outer.position.set(\n disable || disableX ? 0 : -center.x + hAlign,\n disable || disableY ? 0 : -center.y + vAlign,\n disable || disableZ ? 0 : -center.z + dAlign\n )\n\n // Only fire onCentered if the bounding box has changed\n if (typeof onCentered !== 'undefined') {\n onCentered({\n parent: this.node.parent!,\n container: this.node,\n width,\n height,\n depth,\n boundingBox: box3,\n boundingSphere: sphere,\n center: center,\n verticalAlignment: vAlign,\n horizontalAlignment: hAlign,\n depthAlignment: dAlign,\n })\n }\n }\n }\n}","export const vert_fullscreen = /*glsl*/`\nvarying vec2 vUv;\nvoid main() {\n\tvUv = position.xy * 0.5 + 0.5;\n\tgl_Position = vec4(position.xy, 1.0, 1.0);\n}\n`","\nexport const frag_BoxfilterBlur = `\n#include <common>\nuniform sampler2D tLast;\nuniform sampler2D tBlur;\nuniform float\t uLod;\nuniform float\t uWeight;\nvarying vec2 vUv;\n\nvoid main() {\n\tvec3 col0 = textureLod(tLast, vUv, 0.).rgb;\n\tvec3 col1 = textureLod(tBlur, vUv, uLod).rgb;\n gl_FragColor = vec4(mix(col0, col1, uWeight), 1.);\n}\n`","export const frag_panoramaToCubeMap = `\n#include <xv_common>\n\nvarying vec2 vUv;\nuniform sampler2D tMain;\nuniform int uFace;\nuniform vec4 uTilingOffset;\n\nvec3 uvToXYZ(int face, vec2 uv) {\n if (face == 0) return vec3(-1.0, uv.y, -uv.x);\n else if (face == 1) return vec3(1.0, uv.y, uv.x);\n else if (face == 2) return vec3(-uv.x, -1.0, uv.y);\n else if (face == 3) return vec3(-uv.x, 1.0, -uv.y);\n else if (face == 4) return vec3(-uv.x, uv.y, 1.0);\n else return vec3(uv.x, uv.y, -1.0);\n}\n\nvec4 panoramaToCubeMap(int face, vec2 uv_i) {\n vec2 uv = uv_i * 2.0 - 1.0;\n vec3 dir = normalize(uvToXYZ(face, uv));\n vec2 uv_o = dirToUv(dir);\n uv_o = vec2(uv_o.x, uv_o.y) * uTilingOffset.xy + uTilingOffset.zw;\n return texture(tMain, uv_o);\n}\n\nvoid main() {\n gl_FragColor = panoramaToCubeMap(uFace, vUv);\n}\n`\n\nexport const frag_cubeMapToPanorama = `\n#include <xv_common>\n\nvarying vec2 vUv;\nuniform samplerCube tMain;\n\nvec4 cubeMapToPanorama(vec2 uv_i) {\n return texture(tMain, uvToDir(uv_i));\n}\n\nvoid main() {\n gl_FragColor = cubeMapToPanorama(vUv);\n}\n`","import {\n Color,\n CubeTexture,\n Matrix3,\n Matrix4,\n Quaternion,\n ShaderMaterial,\n Texture,\n UniformsUtils,\n Vector2,\n Vector3,\n Vector4\n} from \"three\";\n\nexport function getShaderMaterial<T extends {\n [name: string]:\n | CubeTexture\n | Texture\n | Int32Array\n | Float32Array\n | Matrix4\n | Matrix3\n | Quaternion\n | Vector4\n | Vector3\n | Vector2\n | Color\n | number\n | boolean\n | Array<any>\n | null\n}>(\n uniforms: T,\n vertexShader: string,\n fragmentShader: string,\n onInit?: (material?: ShaderMaterial) => void\n) {\n const material = class extends ShaderMaterial {\n constructor(parameters = {}) {\n const entries = Object.entries(uniforms)\n // Create unforms and shaders\n super({\n uniforms: entries.reduce((acc, [name, value]) => {\n const uniform = UniformsUtils.clone({ [name]: { value } })\n return {\n ...acc,\n ...uniform,\n }\n }, {}),\n vertexShader,\n fragmentShader,\n })\n // Create getter/setters\n entries.forEach(([name]) =>\n Object.defineProperty(this, name, {\n get: () => this.uniforms[name].value,\n set: (v) => (this.uniforms[name].value = v),\n })\n )\n\n // Assign parameters, this might include uniforms\n Object.assign(this, parameters)\n // Call onInit\n if (onInit) onInit(this)\n }\n } as unknown as typeof ShaderMaterial & T & ShaderMaterial;\n return material;\n}","import { Color, IUniform, Matrix4, ShaderMaterial, Texture, WebGLProgramParametersWithUniforms } from \"three\";\nimport { property } from \"../PropertyManager\";\nimport { Reflector } from \"../components\";\n\nconst vert_Reflector = /*glsl*/`\nuniform mat4 textureMatrix;\nvarying vec4 vUv4;\nvarying vec2 vUv;\nvarying vec3 vPositionWS;\n\n#ifdef USE_UV1\n varying vec2 vUv1;\n#endif\n\n#ifdef USE_UV2\n varying vec2 vUv2;\n#endif\n\n#ifdef USE_UV3\n varying vec2 vUv3;\n#endif\n\nvarying vec3 vViewPosition;\n\n#include <common>\n#include <normal_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n\nvoid main() {\n #include <beginnormal_vertex>\n #include <defaultnormal_vertex>\n\n vec4 transformed = vec4(position, 1.);\n\n#ifdef USE_INSTANCING\n transformed = instanceMatrix * transformed;\n#endif\n\n vUv = uv;\n\n#ifdef USE_UV1 \n vUv1 = uv1;\n#endif\n\n#ifdef USE_UV2 \n vUv2 = uv2;\n#endif\n\n#ifdef USE_UV3 \n vUv3 = uv2;\n#endif\n\n vec4 positionWS = modelMatrix * transformed;\n vec4 mvPosition = viewMatrix * positionWS;\n\n vUv4 = textureMatrix * positionWS;\n vPositionWS = positionWS.xyz;\n vViewPosition = -mvPosition.xyz;\n vNormal = normalize(transformedNormal);\n\n gl_Position = projectionMatrix * mvPosition;\n\n #include <logdepthbuf_vertex>\n}\n`\n\nconst frag_Reflector = /*glsl*/`\nuniform vec3 color;\nuniform float opacity;\nuniform float roughness;\nuniform float metalness;\nuniform sampler2D map;\nuniform sampler2D normalMap;\nuniform sampler2D roughnessMap;\nuniform sampler2D aoMap;\nuniform float aoMapIntensity;\nuniform sampler2D lightMap;\nuniform float lightMapIntensity;\nuniform sampler2D reflectMap;\nuniform float reflectIntensity;\nvarying vec3 vPositionWS;\n\nvarying vec2 vUv;\n\n#ifdef USE_UV1\n varying vec2 vUv1;\n#endif\n\n#ifdef USE_UV2\n varying vec2 vUv2;\n#endif\n\n#ifdef USE_UV3\n varying vec2 vUv3;\n#endif\n\nvarying vec4 vUv4;\nvarying vec3 vViewPosition;\nvarying vec3 vNormal;\n\n#include <common>\n#include <lights_physical_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n\nvoid main() {\n #include <logdepthbuf_fragment>\n\n vec3 coord = vUv4.xyz / vUv4.w;\n vec2 reflectUv = coord.xy;\n\n#ifdef USE_NORMALMAP\n vec4 texelNormal = texture2D(normalMap, UV_NORMAL);\n vec3 normal = normalize(vec3(texelNormal.r * 2.0 - 1.0, texelNormal.b, texelNormal.g * 2.0 - 1.0));\n reflectUv += coord.z * normal.xz * 0.05;\n#endif\n\n vec3 geometryNormal = normalize(vNormal);\n vec3 geometryViewDir = normalize(vViewPosition);\n\n vec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\n float metalnessFactor = metalness;\n\n vec4 diffuseColor = vec4(color, opacity);\n\n#ifdef USE_MAP\n diffuseColor *= texture2D(map, vUv);\n#endif\n\n diffuseColor.rgb = diffuseColor.rgb * ( 1.0 - metalnessFactor );\n\n vec3 specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n float specularF90 = 1.0;\n\n float roughnessFactor = roughness;\n\n#ifdef USE_ROUGHNESSMAP\n roughnessFactor *= texture2D(roughnessMap, UV_ROUGHNESS).g * roughness;\n#endif\n\n computeMultiscattering( geometryNormal, geometryViewDir, specularColor, specularF90, roughnessFactor, singleScattering, multiScattering );\n\n vec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = diffuseColor.rgb * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\n vec3 irradiance = vec3(0.);\n\n#ifdef USE_LIGHTMAP\n irradiance += texture2D(lightMap, UV_LIGHTMAP).rgb * lightMapIntensity;\n#endif\n\n float lod = roughnessFactor * (1.7 - 0.7 * roughnessFactor) * 6.;\n vec4 reflectColor = textureLod(reflectMap, reflectUv, lod) * reflectIntensity;\n\n vec3 f_specular = vec3(0.);\n vec3 f_diffuse = vec3(0.);\n\n f_specular += reflectColor.rgb * (1.0 - roughnessFactor * roughnessFactor) + multiScattering * irradiance;\n f_diffuse += diffuse * irradiance;\n\n#ifdef USE_AOMAP\n float ambientOcclusion = mix(1., texture2D(aoMap, UV_AO).r, aoMapIntensity);\n\n float dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\n f_specular *= computeSpecularOcclusion(dotNV, ambientOcclusion, roughnessFactor);\n f_diffuse *= ambientOcclusion;\n#endif\n\n gl_FragColor = vec4(f_specular + f_diffuse, diffuseColor.a);\n\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n}\n`\n\nexport class ReflectorMaterial extends ShaderMaterial {\n\n vertexShader: string = vert_Reflector;\n fragmentShader: string = frag_Reflector;\n\n defines: { [key: string]: any; } = {\n UV_AO: \"vUv\",\n UV_LIGHTMAP: \"vUv\",\n UV_ROUGHNESS: \"vUv\",\n UV_NORMAL: \"vUv\",\n }\n\n uniforms: { [uniform: string]: IUniform<any>; } = {\n color: { value: new Color() },\n opacity: { value: 1 },\n map: { value: null },\n reflectMap: { value: null },\n reflectIntensity: { value: 1 },\n textureMatrix: { value: new Matrix4() },\n metalness: { value: 0 },\n roughness: { value: 1 },\n roughnessMap: { value: null },\n normalMap: { value: null },\n aoMap: { value: null },\n aoMapIntensity: { value: 1 },\n lightMap: { value: null },\n lightMapIntensity: { value: 1 },\n }\n\n constructor({\n reflector,\n ...parameters\n }: {\n reflector: Reflector;\n name?: string;\n opacity?: number;\n transparent?: boolean;\n depthWrite?: boolean;\n roughness?: number;\n metalness?: number;\n }) {\n super();\n Object.defineProperty(this, \"opacity\", {\n get: () => this.uniforms.opacity.value,\n set: (v: number) => this.uniforms.opacity.value = v\n })\n this.uniforms.reflectMap.value = reflector.getRenderTarget().texture;\n this.uniforms.textureMatrix.value = reflector.getTextureMatrix();\n this.setValues(parameters as any);\n }\n\n onBeforeCompile(shader: WebGLProgramParametersWithUniforms): void {\n const channels = [];\n if (this.aoMap && this.aoMap.channel) {\n channels.push([\"UV_AO\", this.aoMap.channel]);\n }\n if (this.lightMap && this.lightMap.channel) {\n channels.push([\"UV_LIGHTMAP\", this.lightMap.channel]);\n }\n if (this.roughnessMap && this.roughnessMap.channel) {\n channels.push([\"UV_ROUGHNESS\", this.roughnessMap.channel]);\n }\n if (this.normalMap && this.normalMap.channel) {\n channels.push([\"UV_NORMAL\", this.normalMap.channel]);\n }\n channels.forEach(([key, channel]) => {\n shader.defines[key] = \"vUv\" + channel;\n })\n }\n\n @property\n get color() {\n return this.uniforms.color.value;\n }\n set color(v: Color) {\n this.uniforms.color.value = v;\n }\n\n @property({ min: 0, max: 1, step: 0.01 })\n get metalness() {\n return this.uniforms.metalness.value;\n }\n set metalness(v: number) {\n this.uniforms.metalness.value = v;\n }\n\n @property({ min: 0, max: 1, step: 0.01 })\n get roughness() {\n return this.uniforms.roughness.value;\n }\n set roughness(v: number) {\n this.uniforms.roughness.value = v;\n }\n\n @property\n get map() {\n return this.uniforms.map.value;\n }\n set map(v: Texture) {\n this.uniforms.map.value = v;\n }\n\n @property\n get roughnessMap() {\n return this.uniforms.roughnessMap.value;\n }\n set roughnessMap(v: Texture) {\n this.uniforms.roughnessMap.value = v;\n }\n\n @property\n get normalMap() {\n return this.uniforms.normalMap.value;\n }\n set normalMap(v: Texture) {\n this.uniforms.normalMap.value = v;\n }\n\n @property\n get aoMap() {\n return this.uniforms.aoMap.value;\n }\n set aoMap(v: Texture) {\n this.uniforms.aoMap.value = v;\n }\n\n @property\n get lightMap() {\n return this.uniforms.lightMap.value;\n }\n set lightMap(v: Texture) {\n this.uniforms.lightMap.value = v;\n }\n\n @property({ min: 0, max: 1, step: 0.01, parent: \"lightMap\" })\n get lightMapIntensity() {\n return this.uniforms.lightMapIntensity.value;\n }\n set lightMapIntensity(v: number) {\n this.uniforms.lightMapIntensity.value = v;\n }\n\n @property()\n get reflectMap() {\n return this.uniforms.reflectMap.value;\n }\n set reflectMap(v: Texture) {\n this.uniforms.reflectMap.value = v;\n }\n\n @property({ min: 0, max: 1, step: 0.01, parent: \"reflectMap\" })\n get reflectIntensity() {\n return this.uniforms.reflectIntensity.value;\n }\n set reflectIntensity(v: number) {\n this.uniforms.reflectIntensity.value = v;\n }\n\n}","import { Color, IUniform, Matrix4, ShaderMaterial } from \"three\"\nimport { ContactShadows } from \"../components\";\n\nconst vert_Shadow = `\nvarying vec4 v_shadows;\nuniform mat4 shadowsMatrix;\n\nvoid main() {\n vec4 worldPos = modelMatrix * vec4(position, 1.);\n vec4 mvPosition = viewMatrix * worldPos;\n \n gl_Position = projectionMatrix * mvPosition;\n\n v_shadows = shadowsMatrix * worldPos;\n}\n`\n\nconst frag_Shadow = `\nuniform vec3 color;\nuniform float opacity;\n\nvarying vec4 v_shadows;\nuniform sampler2D shadowsMap;\nuniform float shadowsIntensity;\n\nvoid main() {\n vec4 shadows = texture2DProj(shadowsMap, v_shadows);\n gl_FragColor = vec4(color * shadows.rgb, shadows.a * opacity);\n\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n}\n`\n\nexport class ShadowMaterial extends ShaderMaterial {\n\n vertexShader: string = vert_Shadow;\n fragmentShader: string = frag_Shadow;\n\n uniforms: { [uniform: string]: IUniform<any>; } = {\n color: { value: new Color() },\n opacity: { value: 1 },\n shadowsMap: { value: null },\n shadowsMatrix: { value: new Matrix4() }\n }\n\n constructor({\n shadows,\n ...props\n }: {\n shadows: ContactShadows;\n opacity?: number;\n transparent?: boolean;\n depthWrite?: boolean;\n }) {\n super();\n Object.defineProperty(this, \"opacity\", {\n get: () => this.uniforms.opacity.value,\n set: (v: number) => this.uniforms.opacity.value = v\n });\n this.uniforms.shadowsMap.value = shadows.getRenderTarget().texture;\n this.uniforms.shadowsMatrix.value = shadows.getTextureMatrix();\n this.transparent = true;\n this.depthWrite = false;\n this.setValues(props);\n }\n\n get color() {\n return this.uniforms.color.value;\n }\n set color(v: Color) {\n this.uniforms.color.value.copy(v);\n }\n}","import { Object3D } from \"three\";\nimport { Component } from \"./Component\";\n\nexport class Mount<T extends Object3D = Object3D> extends Component<T> {\n isMount: boolean = true;\n}","import { OrthographicCamera, Vector2 } from \"three\";\nimport { FInterpTo } from \"../math\";\nimport { Mount } from \"../Mount\";\nimport { DeviceInput } from \"../DeviceInput\";\nimport { SystemInfo } from \"../SystemInfo\";\n\nexport class UI extends Mount {\n static __loc0 = new Vector2();\n static __loc1 = new Vector2();\n static __panOffset = new Vector2();\n\n private _camera: OrthographicCamera;\n\n private _zoom: number = 1;\n private _targetZoom: number = 0.3;\n private _targetPosition: Vector2 = new Vector2();\n\n private _button: number = -1;\n private _touchID: number = -1;\n private _preLoc0: Vector2 = new Vector2();\n private _preLoc1: Vector2 = new Vector2();\n\n get layerMask() {\n return this._camera.layers.mask;\n }\n set layerMask(v: number) {\n this._camera.layers.mask = v;\n }\n\n onLoad() {\n const { width, height } = this.viewer;\n\n const aspect = width / height;\n this._camera = new OrthographicCamera(-aspect, aspect, 1, -1, -1000, 10000);\n this._camera.layers.mask = 1 << 1;\n\n this.viewer.on(DeviceInput.POINTER_DOWN, this._onPointerDown, this);\n this.viewer.on(DeviceInput.POINTER_UP, this._onPointerUp, this);\n this.viewer.on(DeviceInput.POINTER_MOVE, this._onPointerMove, this);\n this.viewer.on(DeviceInput.MOUSE_WHEEL, this._onMouseWheel, this);\n this.viewer.on(DeviceInput.TOUCH_START, this._onTouchStart, this);\n this.viewer.on(DeviceInput.TOUCH_MOVE, this._onTouchMove, this);\n }\n\n onDestroy(): void {\n this.viewer.targetOff(this);\n }\n\n private _onPointerDown(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n this._button = e.button;\n this._preLoc0.set(e.pageX, e.pageY);\n }\n\n private _onPointerUp(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n this._button = -1;\n }\n\n private _onPointerMove(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n const { __loc0, __panOffset } = UI;\n __loc0.set(e.pageX, e.pageY);\n\n switch (this._button) {\n case 0:\n this._setTargetPosition(this._calculatePanDelta(__panOffset, __loc0, this._preLoc0));\n break;\n }\n\n this._preLoc0.copy(__loc0);\n }\n\n private _onMouseWheel(e: WheelEvent) {\n if (e.deltaY > 0) {\n this._targetZoom *= 0.85;\n }\n else if (e.deltaY < 0) {\n this._targetZoom /= 0.85;\n }\n }\n\n\n private _onTouchStart(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n let touches = e.touches;\n if (touches.length > 1) {\n this._preLoc0.set(touches[0].pageX, touches[0].pageY);\n this._preLoc1.set(touches[1].pageX, touches[1].pageY);\n }\n else if (touches.length > 0) {\n this._touchID = touches[0].identifier;\n this._preLoc0.set(touches[0].pageX, touches[0].pageY);\n }\n }\n\n private _onTouchMove(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n const { __loc0, __loc1, __panOffset } = UI;\n\n let touches = e.touches;\n if (touches.length > 1) {\n __loc0.set(touches[0].pageX, touches[0].pageY);\n __loc1.set(touches[1].pageX, touches[1].pageY);\n\n this._targetZoom /= this._preLoc0.distanceTo(this._preLoc1) / __loc0.distanceTo(__loc1);\n\n this._preLoc0.copy(__loc0);\n this._preLoc1.copy(__loc1);\n }\n else if (touches.length > 0) {\n if (this._touchID === touches[0].identifier) {\n __loc0.set(touches[0].pageX, touches[0].pageY);\n this._setTargetPosition(this._calculatePanDelta(__panOffset, __loc0, this._preLoc0));\n this._preLoc0.copy(__loc0);\n }\n }\n }\n\n private _setTargetPosition(panOffset: Vector2) {\n this._targetPosition.x -= panOffset.x;\n this._targetPosition.y += panOffset.y;\n }\n\n private _calculatePanDelta(out: Vector2, loc0: Vector2, loc1: Vector2) {\n out.copy(loc0).sub(loc1);\n out.x *= (this._camera.right - this._camera.left) / this._camera.zoom / this.viewer.width;\n out.y *= (this._camera.top - this._camera.bottom) / this._camera.zoom / this.viewer.height;\n return out;\n }\n\n update(dt: number): void {\n this._camera.position.x = FInterpTo(this._camera.position.x, this._targetPosition.x, dt, 5, 0.001);\n this._camera.position.y = FInterpTo(this._camera.position.y, this._targetPosition.y, dt, 5, 0.001);\n this._zoom = FInterpTo(this._zoom, this._targetZoom, dt, 5, 0.001);\n\n if (this._zoom !== this._targetZoom) {\n this._camera.zoom = this._zoom;\n this._camera.updateProjectionMatrix();\n }\n }\n\n resize(width: number, height: number): void {\n const aspect = width / height;\n this._camera.left = -aspect;\n this._camera.right = aspect;\n this._camera.top = 1;\n this._camera.bottom = -1;\n this._camera.updateProjectionMatrix();\n }\n\n render(dt: number): void {\n const { renderer, scene } = this.viewer;\n\n const autoClearDepth = renderer.autoClearDepth;\n const autoClearColor = renderer.autoClearColor;\n\n renderer.autoClearDepth = true;\n renderer.autoClearColor = false;\n renderer.render(scene, this._camera);\n\n renderer.autoClearDepth = autoClearDepth;\n renderer.autoClearColor = autoClearColor;\n }\n}","import { AdditiveBlending, NoBlending, OrthographicCamera, ShaderMaterial, Texture, Vector3, WebGLRenderTarget } from \"three\";\nimport { vert_fullscreen } from \"../../materials\";\n\nexport const LOD_MIN = 4;\nexport const _flatCamera = /*@__PURE__*/ new OrthographicCamera();\n// Golden Ratio\nconst PHI = (1 + Math.sqrt(5)) / 2;\nconst INV_PHI = 1 / PHI;\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nexport const _axisDirections = [\n\t/*@__PURE__*/ new Vector3(1, 1, 1),\n\t/*@__PURE__*/ new Vector3(- 1, 1, 1),\n\t/*@__PURE__*/ new Vector3(1, 1, - 1),\n\t/*@__PURE__*/ new Vector3(- 1, 1, - 1),\n\t/*@__PURE__*/ new Vector3(0, PHI, INV_PHI),\n\t/*@__PURE__*/ new Vector3(0, PHI, - INV_PHI),\n\t/*@__PURE__*/ new Vector3(INV_PHI, 0, PHI),\n\t/*@__PURE__*/ new Vector3(- INV_PHI, 0, PHI),\n\t/*@__PURE__*/ new Vector3(PHI, INV_PHI, 0),\n\t/*@__PURE__*/ new Vector3(- PHI, INV_PHI, 0)];\n\nexport const _Quality = { LOW: 0, MEDIUM: 1, HIGH: 2, ULTRA: 3 }\n\nexport function _setViewport(\n target: WebGLRenderTarget,\n x: number,\n y: number,\n width: number,\n height: number\n) {\n target.viewport.set(x, y, width, height);\n target.scissor.set(x, y, width, height);\n}\n\nexport function _getCommonVertexShader() {\n\n return /* glsl */`\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\t\t\t} else if ( face == 1.0 ) {\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\t\t\t} else if ( face == 2.0 ) {\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\t\t\t} else if ( face == 3.0 ) {\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\t\t\t} else if ( face == 4.0 ) {\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\t\t\t} else if ( face == 5.0 ) {\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\t\t}\n\t`;\n}\n\nexport function _getClearMaterial() {\n return new ShaderMaterial({\n name: \"Clear\",\n uniforms: {\n map: { value: null },\n intensity: { value: 1 }\n },\n vertexShader: vert_fullscreen,\n fragmentShader: /* glsl */ `\n uniform sampler2D map;\n uniform float intensity;\n varying vec2 vUv;\n void main() {\n vec4 col = texture2D(map, vUv);\n gl_FragColor = vec4(col.rgb * intensity, col.a);\n }\n `,\n blending: NoBlending,\n depthWrite: false,\n depthTest: false,\n })\n}\n\nexport function _getCubeMapMaterial() {\n return new ShaderMaterial({\n name: \"CubeMapToCubeUV\",\n uniforms: {\n envMap: { value: null },\n lod: { value: 0 },\n exposure: { value: 1 }\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: /* glsl */`\n precision mediump float;\n precision mediump int;\n\n varying vec3 vOutputDirection;\n uniform samplerCube envMap;\n uniform float lod;\n uniform float exposure;\n\n void main() {\n gl_FragColor = textureCubeLodEXT(envMap, vOutputDirection, lod);\n gl_FragColor.rgb *= exposure;\n }\n `,\n blending: AdditiveBlending,\n depthWrite: false,\n depthTest: false,\n });\n}\n\nexport function _getMipCopyMaterial(\n lodMax: number,\n width: number,\n height: number,\n) {\n return new ShaderMaterial({\n name: \"MipBlurToCubeUV\",\n defines: {\n CUBEUV_TEXEL_WIDTH: 1.0 / width,\n CUBEUV_TEXEL_HEIGHT: 1.0 / height,\n CUBEUV_MAX_MIP: `${lodMax}.0`,\n },\n uniforms: {\n cubeUVMap: { value: null },\n lod: { value: 0 },\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: /* glsl */ `\n precision mediump float;\n precision mediump int;\n\n #define ENVMAP_TYPE_CUBE_UV\n #include <cube_uv_reflection_fragment>\n\n varying vec3 vOutputDirection;\n\n uniform sampler2D cubeUVMap;\n uniform float lod;\n\n void main() {\n vec3 col = bilinearCubeUV(cubeUVMap, vOutputDirection, CUBEUV_MAX_MIP - lod);\n gl_FragColor = vec4(col, 1.);\n }\n `,\n blending: AdditiveBlending,\n depthWrite: false,\n depthTest: false,\n })\n}\n\nexport function _getMipBlurMaterial(\n lodMax: number,\n width: number,\n height: number,\n) {\n return new ShaderMaterial({\n name: \"MipBlurToCubeUV\",\n defines: {\n CUBEUV_TEXEL_WIDTH: 1.0 / width,\n CUBEUV_TEXEL_HEIGHT: 1.0 / height,\n CUBEUV_MAX_MIP: `${lodMax}.0`,\n },\n uniforms: {\n envMap: { value: null },\n cubeUVMap: { value: null },\n weight: { value: 1 },\n lod: { value: 0 },\n exposure: { value: 1 },\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: /* glsl */ `\n precision mediump float;\n precision mediump int;\n\n #define ENVMAP_TYPE_CUBE_UV\n #include <cube_uv_reflection_fragment>\n\n varying vec3 vOutputDirection;\n\n uniform sampler2D cubeUVMap;\n uniform samplerCube envMap;\n uniform float weight;\n uniform float lod;\n uniform float exposure;\n\n void main() {\n vec3 col0 = bilinearCubeUV(cubeUVMap, vOutputDirection, CUBEUV_MAX_MIP - (lod + 1.));\n vec3 col1 = textureCubeLodEXT(envMap, vOutputDirection, lod).rgb * exposure;\n gl_FragColor = vec4(mix(col0, col1, weight), 1.);\n }\n `,\n blending: NoBlending,\n depthWrite: false,\n depthTest: false,\n })\n}","export interface ICallTarget {\n uuid: string;\n}\n\nclass Caller {\n private _target: ICallTarget | null = null;\n private _callback: Function | null = null;\n private _interval: number = 0;\n private _repeat: number = 0;\n\n private _elapsed: number = 0;\n private _lastTime: number = 0;\n private _repeatForever: boolean = false;\n private _pause: boolean = false;\n\n get pause() {\n return this._pause;\n }\n\n set pause(v: boolean) {\n this._pause = v;\n }\n\n get target() {\n return this._target;\n }\n\n get callback() {\n return this._callback;\n }\n\n constructor(target: ICallTarget, callback: Function, interval: number, repeat: number) {\n this._target = target;\n this._callback = callback;\n this._interval = interval;\n this._repeat = repeat;\n this._repeatForever = repeat === -1;\n }\n\n get lived() {\n return this._repeat > 0 || this._repeatForever;\n }\n\n update(dt: number) {\n if (this._pause) return;\n if (this._repeat > 0 || this._repeatForever) {\n this._elapsed += dt;\n if (this._elapsed >= this._interval) {\n this.trigger(this._elapsed - this._lastTime);\n this._elapsed -= this._interval;\n this._lastTime = this._elapsed;\n this._repeat--;\n }\n }\n }\n\n trigger(dt: number) {\n if (this._target && this._callback) {\n this._callback.call(this._target, dt, this._elapsed);\n }\n }\n}\n\nclass Callers {\n private _target!: ICallTarget;\n private _callers!: Caller[];\n\n get target() {\n return this._target;\n }\n\n get callers() {\n return this._callers;\n }\n\n constructor(target: ICallTarget, callers: Caller[]) {\n this._target = target;\n this._callers = callers;\n }\n}\n\nexport class Scheduler {\n private _callers: { [k: string]: Caller[] } = {}\n private _callersArray: Callers[] = [];\n\n pause(target: ICallTarget) {\n let callers = this._callers[target.uuid];\n if (callers) callers.forEach(v => v.pause = true);\n }\n\n resume(target: ICallTarget) {\n let callers = this._callers[target.uuid];\n if (callers) callers.forEach(v => v.pause = false);\n }\n\n schedule(target: ICallTarget, callback: Function, interval: number, repeat: number) {\n let callers = this._callers[target.uuid];\n if (callers === undefined) {\n callers = this._callers[target.uuid] = [];\n this._callersArray.push(new Callers(target, callers));\n }\n callers.push(new Caller(target, callback, interval, repeat));\n }\n\n unshedule(target: ICallTarget, callback: Function) {\n let callers = this._callers[target.uuid];\n if (callers) {\n let index = callers.findIndex(v => v.callback === callback);\n if (index !== -1) callers.splice(index, 1);\n }\n }\n\n unscheduleAll(target: ICallTarget) {\n delete this._callers[target.uuid];\n let index = this._callersArray.findIndex(v => v.target === target);\n if (index !== -1) this._callersArray.splice(index, 1);\n }\n\n update(dt: number) {\n let callers: Caller[];\n let callersArray = this._callersArray;\n for (let j = callersArray.length; j--;) {\n callers = callersArray[j].callers;\n for (let i = callers.length; i--;) {\n if (callers[i].lived) callers[i].update(dt);\n else callers.splice(i, 1);\n }\n }\n }\n}","import { Component } from \"./Component\";\n\nclass Invoker<T> {\n protected _targets: T[] = [];\n protected _callback: (target: T, ...args: any[]) => any;\n\n constructor(callback: (target: T, ...args: any[]) => any) {\n this._callback = callback;\n }\n\n add(target: any) {\n this._targets.push(target);\n }\n\n remove(target: any) {\n let index = this._targets.indexOf(target);\n if (index !== -1) {\n this._targets.splice(index, 1);\n }\n }\n\n invoke(...args: any[]) {\n let callback = this._callback;\n for (let v of this._targets) {\n callback(v, ...args);\n }\n }\n}\n\nclass InvokerOneCall<T> extends Invoker<T> {\n invoke(dt: number) {\n if (this._targets.length > 0) {\n let callback = this._callback;\n for (let v of this._targets) {\n callback(v, dt);\n }\n this._targets.length = 0;\n }\n }\n}\n\nexport class ComponentScheduler {\n startInvoker: Invoker<Component> = new InvokerOneCall(comp => comp.start!());\n updateInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.update!(dt));\n lastUpdateInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.lastUpdate!(dt));\n renderInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.render!(dt));\n resizeInvoker: Invoker<Component> = new Invoker((comp, width, height) => comp.resize!(width, height));\n\n start() {\n this.startInvoker.invoke(0);\n }\n\n update(dt: number) {\n this.updateInvoker.invoke(dt);\n }\n\n lastUpdate(dt: number) {\n this.lastUpdateInvoker.invoke(dt);\n }\n\n render(dt: number) {\n this.renderInvoker.invoke(dt);\n }\n\n resize(width: number, height: number) {\n this.resizeInvoker.invoke(width, height);\n }\n\n enableComponent(comp: Component, enable: boolean) {\n if (enable) {\n if (!comp.flags.OnEnableCalled) {\n comp.flags.OnEnableCalled = true;\n if (comp.onEnable) {\n comp.onEnable();\n }\n if (typeof comp.start === \"function\" && !comp.flags.IsStartCalled) {\n comp.flags.IsStartCalled = true;\n this.startInvoker.add(comp);\n }\n if (typeof comp.update === \"function\") {\n this.updateInvoker.add(comp);\n }\n if (typeof comp.lastUpdate === \"function\") {\n this.lastUpdateInvoker.add(comp);\n }\n if (typeof comp.render === \"function\") {\n this.renderInvoker.add(comp);\n }\n if (typeof comp.resize === \"function\") {\n this.resizeInvoker.add(comp);\n }\n }\n }\n else {\n if (comp.flags.OnEnableCalled) {\n comp.flags.OnEnableCalled = false;\n if (comp.onDisable) {\n comp.onDisable();\n }\n if (typeof comp.start === \"function\" && !comp.flags.IsStartCalled) {\n this.startInvoker.remove(comp);\n }\n if (typeof comp.update === \"function\") {\n this.updateInvoker.remove(comp);\n }\n if (typeof comp.lastUpdate === \"function\") {\n this.lastUpdateInvoker.remove(comp);\n }\n if (typeof comp.render === \"function\") {\n this.renderInvoker.remove(comp);\n }\n if (typeof comp.resize === \"function\") {\n this.resizeInvoker.remove(comp);\n }\n }\n }\n }\n}","import { Object3D } from \"three\";\nimport { Scheduler } from \"./Scheduler\";\nimport { Component } from \"./Component\";\nimport { ComponentScheduler } from \"./ComponentScheduler\";\nimport { Viewer } from \"./Viewer\";\nimport { PropertyManager } from \"./PropertyManager\";\n\n\ntype ComponentConstructor = new (...args: any[]) => Component;\n\ninterface DependentInfo {\n mode: DependentMode;\n components: ComponentConstructor[];\n}\n\nexport enum DependentMode {\n /** Check only, throw error if dependent components do not exist. */\n CheckOnly,\n /** Auto add if dependent components do not exist. */\n AutoAdd\n}\n\nexport function dependencies(\n componentOrComponents: ComponentConstructor | ComponentConstructor[],\n mode: DependentMode = DependentMode.CheckOnly\n) {\n return function <T extends ComponentConstructor>(target: T): void {\n const components = Array.isArray(componentOrComponents) ? componentOrComponents : [componentOrComponents];\n ComponentManager._infoMap.set(target, { components, mode });\n }\n}\n\nexport class ComponentManager {\n static _infoMap = new Map<ComponentConstructor, DependentInfo>();\n\n private _viewer: Viewer;\n private _scheduler: Scheduler = new Scheduler();\n private _componentScheduler: ComponentScheduler = new ComponentScheduler();\n private _componentsMap = new Map<Object3D, Component[]>();\n\n get viewer() {\n return this._viewer;\n }\n\n get scheduler() {\n return this._scheduler;\n }\n\n get componentScheduler() {\n return this._componentScheduler;\n }\n\n constructor(viewer: Viewer) {\n this._viewer = viewer;\n }\n\n destroy() {\n this._componentsMap.forEach(components => components.forEach(comp => comp.destroy()));\n this._componentsMap.clear();\n }\n\n update(dt: number) {\n this._scheduler.update(dt);\n this._componentScheduler.start();\n this._componentScheduler.update(dt);\n this._componentScheduler.lastUpdate(dt);\n }\n\n render(dt: number) {\n this._componentScheduler.render(dt);\n }\n\n resize(width: number, height: number) {\n this.componentScheduler.resize(width, height);\n }\n\n destroyComponents(node: Object3D) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.forEach(comp => comp.destroy());\n this._componentsMap.delete(node);\n }\n for (let child of node.children) {\n this.destroyComponents(child);\n }\n }\n\n activeComponents(node: Object3D) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.forEach(comp => this._activeComponent(comp, node.visible));\n }\n for (let child of node.children) {\n this.activeComponents(child);\n }\n }\n\n addComponent<T extends Component>(node: Object3D | Component, instance: T): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: { new(): T }): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: any): T {\n let root = node instanceof Component ? node.node : node;\n let func = typeof constructor === \"function\";\n let component = this._findComponent(root, func ? constructor : constructor.constructor) as any;\n if (component === undefined) {\n component = func ? new constructor() : constructor;\n component.node = root;\n component.manager = this;\n component.viewer = this._viewer;\n\n PropertyManager._applyClassProperties(component.constructor.name, component.constructor);\n\n this._addDendencies(root, component.constructor);\n\n if (!component.flags.OnLoadCalled) {\n component.flags.OnLoadCalled = true;\n if (component.onLoad) {\n component.onLoad();\n }\n }\n\n let components = this._componentsMap.get(root);\n if (components === undefined) {\n this._componentsMap.set(root, [component]);\n }\n else {\n components.push(component);\n }\n\n this._activeComponent(component, component.enabled);\n }\n else {\n throw Error(\"Add multiple components\");\n }\n return component as T;\n }\n\n removeComponent(node: Object3D, component: Component) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.splice(components.indexOf(component), 1);\n }\n return this;\n }\n\n getComponent<T extends Component>(node: Object3D, constructor: { new(...args: any[]): T }, autoAdd: boolean = false): T {\n let comp = this._findComponent(node, constructor) as T;\n if (comp === undefined && autoAdd) {\n comp = this.addComponent(node, constructor);\n }\n return comp;\n }\n\n getComponentsInChidren<T extends Component>(node: Object3D, constructor: { new(): T }, out: T[] = []): T[] {\n let components = this._componentsMap.get(node);\n if (components) {\n for (let i = components.length; i--;) {\n if (components[i] instanceof (constructor as any)) out.push(components[i] as any);\n }\n for (let child of node.children) {\n this.getComponentsInChidren(child, constructor, out);\n }\n }\n return out;\n }\n\n traverseComponents(callback: (comp: Component) => void) {\n this._componentsMap.forEach(v => v.forEach(callback));\n }\n\n private _addDendencies(node: Object3D, constructor: ComponentConstructor) {\n while (constructor && constructor !== Component) {\n let info = ComponentManager._infoMap.get(constructor);\n if (info) {\n const { components, mode } = info;\n for (const dep of components) {\n if (!this.getComponent(node, dep)) {\n if (mode === DependentMode.AutoAdd) {\n this.addComponent(node, dep);\n } else {\n throw `Should add ${dep.name} before adding ${constructor.name}`;\n }\n }\n }\n }\n constructor = Object.getPrototypeOf(constructor);\n }\n }\n\n private _findComponent(node: Object3D, constructor: any) {\n let components = this._componentsMap.get(node);\n if (components) {\n for (let i = components.length; i--;) {\n let component = components[i];\n if (component instanceof constructor) {\n return component;\n }\n }\n }\n }\n\n protected _activeComponent(comp: Component, active: boolean) {\n this._componentScheduler.enableComponent(comp, active);\n }\n}","import { Task } from \"./Task\";\nimport { EventEmitter } from \"./base\";\n\n\nexport class TaskManager extends EventEmitter {\n private _tasks: Task[] = [];\n private _taskIndex: number = 0;\n private _percent: number = 0;\n\n get percent() {\n return this._percent;\n }\n\n constructor(\n public onComplete?: () => void,\n public onProgress?: (task: Task, loaded: number, total: number) => void,\n public onError?: (task: Task) => void,\n ) {\n super();\n }\n\n destroy() {\n this._tasks.length = 0;\n this._taskIndex = 0;\n this._percent = 0;\n }\n\n add(task: Task) {\n this._tasks.push(task);\n }\n\n update() {\n let task = this._tasks[this._taskIndex];\n if (task) {\n try {\n task.excute();\n }\n catch (e) {\n console.error(e);\n this.onError && this.onError(task);\n }\n this._percent = ++this._taskIndex / this._tasks.length;\n this.onProgress && this.onProgress(task, this._taskIndex, this._tasks.length);\n\n if (this._taskIndex === this._tasks.length) {\n this._percent = 1;\n this.onComplete && this.onComplete();\n }\n }\n }\n}","import { FloatType, HalfFloatType, UnsignedByteType, WebGLRendererParameters } from \"three\";\nimport { SystemInfo } from \"./SystemInfo\";\nimport { Logger } from \"./base\";\n\nexport function parepareWebGL(canvas: HTMLCanvasElement, props: WebGLRendererParameters) {\n let isSupportedBrowser = (SystemInfo.isChrome || SystemInfo.isSafari || SystemInfo.isEdge || SystemInfo.isFirefox || SystemInfo.isOpera) && !SystemInfo.isIE;\n if (!isSupportedBrowser) {\n Logger.error(\"Unsupport platform\");\n return null;\n }\n if (!(canvas instanceof HTMLCanvasElement)) {\n Logger.error(\"Canvas is null\");\n return null;\n }\n\n let webglOpts = Object.assign({\n alpha: false,\n depth: true,\n stencil: true,\n antialias: false,\n premultipliedAlpha: true,\n preserveDrawingBuffer: false,\n powerPreference: \"high-performance\",\n failIfMajorPerformanceCaveat: false\n }, props);\n\n if (window.WebGL2RenderingContext) {\n try {\n const gl = canvas.getContext(\"webgl2\", webglOpts) as WebGL2RenderingContext;\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: HalfFloatType,\n DATA_FLOAT_TYPE: FloatType\n }\n }\n catch (err) {\n Logger.error(err);\n return null;\n }\n }\n else if (window.WebGLRenderingContext) {\n const gl = (canvas.getContext(\"webgl\", webglOpts) || canvas.getContext(\"webgl2\", webglOpts) || canvas.getContext(\"experimental-webgl\", webglOpts)) as WebGLRenderingContext;\n if ((gl.getExtension(\"OES_texture_float\") || gl.getExtension(\"OES_texture_half_float\")) && gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS)) {\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: SystemInfo.isIOS || gl.getExtension(\"OES_texture_half_float\") ? HalfFloatType : FloatType,\n DATA_FLOAT_TYPE: FloatType,\n }\n }\n else if (this._floatPacking) {\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: UnsignedByteType,\n DATA_FLOAT_TYPE: UnsignedByteType\n }\n }\n Logger.debug(\"Unspport float type in current platform\");\n return null;\n }\n return null;\n}","export enum Orientation {\n AUTO,\n LANDSCAPE,\n PORTRAIT,\n}","import { LoadingManager } from \"three\";\nimport { TextureSettings } from \"../TextureSettings\";\nimport { Loader } from \"./Loader\";\n\nexport interface AssetProperties extends TextureSettings {\n url?: string,\n ext?: string,\n buffer?: string | ArrayBuffer,\n path?: string;\n resourcePath?: string;\n dracoPath?: string;\n manager?: LoadingManager;\n onProgress?: (event: ProgressEvent) => void,\n}\n\nexport type LoaderConstructor = new (manager: ResourceManager) => Loader;\n\nexport class ResourceManager {\n\n static extension(path: string) {\n let str = path.split(\".\");\n if (str.length > 1) {\n return str.pop().toLowerCase();\n }\n return \"\";\n }\n\n static dirname(path: string) {\n let index = path.lastIndexOf(\"/\");\n return index !== -1 ? path.substring(0, index) : \"\";\n }\n\n static basename(path: string, ext?: string) {\n let str = path.split(\"/\").pop();\n return ext ? str.replace(\".\" + ext, \"\") : str;\n }\n\n static _texSettingKeys = [\n \"flipY\", \"mapping\", \"wrapS\", \"wrapT\", \"dataType\",\n \"magFilter\", \"minFilter\", \"format\", \"anisotropy\", \"repeat\", \"colorSpace\", \"channel\",\n ]\n static _splitTextureSettings(props: TextureSettings & { [k: string]: any }) {\n let settings = {};\n for (let v of ResourceManager._texSettingKeys) {\n if (props[v] !== undefined) {\n if (v === \"dataType\") {\n settings[\"type\"] = props[v];\n }\n else {\n settings[v] = props[v];\n }\n }\n }\n return settings;\n }\n\n private _loaders: Map<string, Loader> = new Map();\n\n destroy() {\n this._loaders.clear();\n }\n\n getLoader(ext: string) {\n return this._loaders.get(ext);\n }\n\n addLoader(Loader: LoaderConstructor) {\n let loader = new Loader(this);\n for (let ext of loader.extension) {\n this._loaders.set(ext, loader);\n }\n return loader;\n }\n\n loadAsset<T = any>({\n url,\n buffer,\n ext,\n path,\n resourcePath,\n dracoPath,\n manager,\n onProgress,\n ...props\n }: AssetProperties) {\n return new Promise<T>((resolve, reject) => {\n\n const sel = ext || url && ResourceManager.extension(url) || \"\";\n const texSettings = ResourceManager._splitTextureSettings(props);\n\n if (this._loaders.has(sel)) {\n this._loaders.get(sel).load({\n url,\n buffer,\n texSettings,\n path,\n resourcePath,\n dracoPath,\n manager,\n onProgress,\n onLoad: resolve,\n onError: (err) => {\n console.error(`${url} not exist`, err)\n reject(err)\n },\n });\n }\n else {\n reject(\"ResourceManager.loadAsset: missing loader for \" + sel);\n }\n })\n }\n}","import {\n BufferGeometry,\n Camera,\n ClampToEdgeWrapping,\n ColorSpace,\n DataTexture,\n DirectionalLightShadow,\n Euler,\n Float32BufferAttribute,\n FloatType,\n LinearFilter,\n LinearMipMapLinearFilter,\n LinearSRGBColorSpace,\n LinearToneMapping,\n LoadingManager,\n Material,\n MathUtils,\n Mesh,\n NearestFilter,\n Object3D,\n OrthographicCamera,\n PCFSoftShadowMap,\n PerspectiveCamera,\n RGBAFormat,\n Scene,\n ShadowMapType,\n SRGBColorSpace,\n Texture,\n TextureDataType,\n ToneMapping,\n UnsignedByteType,\n UVMapping,\n Vector3,\n WebGLCubeRenderTarget,\n WebGLRenderer,\n WebGLRendererParameters,\n WebGLRenderTarget,\n} from \"three\";\n\nimport { EventEmitter, getClassInstance } from \"./base\";\nimport { ComponentManager } from \"./ComponentManager\";\nimport { TaskManager } from \"./TaskManager\";\nimport { parepareWebGL } from \"./WebGL\";\nimport { DeviceInput } from \"./DeviceInput\";\nimport { Orientation } from \"./enums/Orientation\";\nimport { AssetProperties, LoaderConstructor, ResourceManager } from \"./asset/ResourceManager\";\nimport { __C, __Comp, __P } from \"./types\";\nimport { Component } from \"./Component\";\nimport { applyProps } from \"./Utils\";\nimport { SystemInfo } from \"./SystemInfo\";\nimport { BINLoader, GLTFLoader, HDRLoader, JSONLoader, TextureLoader } from \"./loaders\";\nimport { Task } from \"./Task\";\nimport { Mount } from \"./Mount\";\n\ndeclare module 'three' {\n interface Object3D {\n apply<K extends __C<this>>(props: __P<this, K>): this\n }\n}\n\nObject3D.prototype.apply = function (props) {\n return applyProps(this, props);\n}\n\nexport class Viewer extends EventEmitter {\n static __target: Vector3 = new Vector3();\n static __worldPos: Vector3 = new Vector3();\n\n static _shadowCameraKeys = [\"top\", \"bottom\", \"left\", \"right\", \"near\", \"far\"];\n static _setDirectLightShadow(shadow: DirectionalLightShadow, props: number[]) {\n const shadowCamera = shadow.camera;\n for (let i = 0; i < props.length && i < 6; i++) {\n shadowCamera[Viewer._shadowCameraKeys[i]] = props[i];\n }\n if (props.length > 6) {\n shadow.bias = props[6];\n }\n if (props.length > 8) {\n shadow.mapSize.set(props[7], props[8]);\n }\n return shadow;\n }\n\n static CompileMaterial(\n renderer: WebGLRenderer,\n scene: Scene,\n camera: Camera,\n target: Material | Material[],\n ) {\n Viewer.fullscreenMesh.material = target;\n renderer.compile(Viewer.fullscreenMesh, camera, scene);\n }\n\n static CompileObject3D(\n renderer: WebGLRenderer,\n scene: Scene,\n camera: Camera,\n target: Object3D\n ) {\n renderer.compile(target, camera, scene);\n }\n\n static CompileTexture(\n renderer: WebGLRenderer,\n target: Texture | Texture[]\n ) {\n if (Array.isArray(target)) {\n for (let v of target) {\n renderer.initTexture(v);\n }\n }\n else {\n renderer.initTexture(target);\n }\n }\n\n static Blit(\n renderer: WebGLRenderer,\n renderTarget: WebGLRenderTarget | null,\n material: Material,\n lod?: number,\n face?: number\n ) {\n Viewer.fullscreenMesh.material = material;\n const RT = renderer.getRenderTarget();\n renderer.setRenderTarget(renderTarget, face, lod);\n renderer.render(Viewer.fullscreenMesh, Viewer.fullscreenCamera);\n renderer.setRenderTarget(RT);\n }\n\n static CreateFullscreenTriangle() {\n let geometry = new BufferGeometry();\n geometry.setAttribute('position', new Float32BufferAttribute([- 1, 3, 0, - 1, - 1, 0, 3, - 1, 0], 3));\n geometry.setAttribute('uv', new Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2));\n return geometry;\n }\n\n static fullscreenMesh: Mesh = new Mesh(Viewer.CreateFullscreenTriangle());\n static fullscreenCamera: OrthographicCamera = new OrthographicCamera(- 1, 1, 1, - 1, 0, 1);\n static instanceCount: number = 0;\n\n private _instanceId: number = Viewer.instanceCount++;\n private _root: HTMLElement;\n private _canvas: HTMLCanvasElement;\n private _container: HTMLElement;\n private _gl: WebGLRenderingContext | WebGL2RenderingContext;\n private _RENDER_TARGET_FLOAT_TYPE: TextureDataType;\n private _DATA_FLOAT_TYPE: TextureDataType;\n\n private _scene: Scene;\n private _camera: PerspectiveCamera;\n private _mount: Object3D;\n private _renderer: WebGLRenderer;\n private _input: DeviceInput;\n\n private _dpr: number = 1;\n private _width: number = 1;\n private _height: number = 1;\n private _viewport: { width: number, height: number, factor: number } = { width: 1, height: 1, factor: 1 };\n private _orientation: Orientation = Orientation.AUTO;\n private _defaultProps: { path?: string, resourcePath?: string, dracoPath?: string, manager?: LoadingManager } = {};\n\n private _running: boolean = false;\n private _rootRotated: boolean = false;\n\n private _time: number = 0;\n private _lastTime: number = 0;\n private _lastFrameTime: number = 0;\n private _targetFrameRate: number = -1;\n private _fixedFrameTime: boolean = false;\n private _autoResize: boolean = true;\n\n private _taskManager: TaskManager;\n private _resourceManager: ResourceManager;\n private _componentManager: ComponentManager;\n private _loadingManager: LoadingManager;\n\n get root() {\n return this._root;\n }\n get container() {\n return this._container;\n }\n get time() {\n return this._time;\n }\n get scene() {\n return this._scene;\n }\n get camera() {\n return this._camera;\n }\n get renderer() {\n return this._renderer;\n }\n get canvas() {\n return this._canvas;\n }\n get gl() {\n return this._gl;\n }\n get RENDER_TARGET_FLOAT_TYPE() {\n return this._RENDER_TARGET_FLOAT_TYPE;\n }\n get DATA_FLOAT_TYPE() {\n return this._DATA_FLOAT_TYPE;\n }\n get dpr() {\n return this._dpr;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get viewport() {\n return this._viewport;\n }\n get rootRotated() {\n return this._rootRotated;\n }\n get input() {\n return this._input;\n }\n get targetFrameRate() {\n return this._targetFrameRate;\n }\n set targetFrameRate(v: number) {\n this._targetFrameRate = Math.max(0.001, v);\n }\n\n get instanceId() {\n return this._instanceId;\n }\n get loadingManager() {\n return this._loadingManager;\n }\n get resourceManager() {\n return this._resourceManager;\n }\n get taskManager() {\n return this._taskManager;\n }\n\n constructor({\n root,\n canvas,\n container,\n autoStart = true,\n autoResize = true,\n shadows = false,\n camera = { fov: 45, near: 0.1, far: 1000, position: new Vector3(0, 0, 4) },\n targetFrameRate = -1,\n fixedFrameTime = false,\n colorSpace = SRGBColorSpace,\n toneMapping = LinearToneMapping,\n toneMappingExposure = 1,\n maxDPR = 1.5,\n path = \"\",\n resourcePath = \"\",\n dracoPath = \"https://www.gstatic.com/draco/v1/decoders/\",\n orientation = Orientation.AUTO,\n loader = {},\n tasker = {},\n ...webglOpts\n }: {\n root?: HTMLElement;\n canvas?: HTMLCanvasElement;\n container?: HTMLDivElement;\n targetFrameRate?: number;\n fixedFrameTime?: boolean;\n autoStart?: boolean;\n autoResize?: boolean;\n shadows?: boolean | ShadowMapType;\n colorSpace?: ColorSpace;\n toneMapping?: ToneMapping;\n toneMappingExposure?: number;\n maxDPR?: number;\n path?: string;\n resourcePath?: string;\n dracoPath?: string;\n orientation?: Orientation;\n camera?: {\n fov?: number;\n aspect?: number;\n near?: number;\n far?: number;\n position?: Vector3;\n rotation?: Euler;\n };\n loader?: {\n onLoad?: () => void,\n onProgress?: (url: string, loaded: number, total: number) => void,\n onError?: (url: string) => void,\n };\n tasker?: {\n onComplete?: () => void,\n onProgress?: (target: Object, loaded: number, total: number) => void,\n onError?: (target: Object) => void,\n };\n } & WebGLRendererParameters = {}) {\n super();\n const el = canvas || document.getElementById(\"canvas\") as HTMLCanvasElement;\n const webgl = parepareWebGL(el, webglOpts);\n if (!webgl) {\n throw Error(\"Unsupport WebGL in current platform\");\n }\n\n this._root = root || el;\n this._canvas = el;\n this._container = container || el.parentElement;\n this._gl = webgl.gl;\n this._RENDER_TARGET_FLOAT_TYPE = webgl.RENDER_TARGET_FLOAT_TYPE;\n this._DATA_FLOAT_TYPE = webgl.DATA_FLOAT_TYPE;\n this._dpr = Math.min(maxDPR, window.devicePixelRatio);\n this._orientation = orientation;\n\n this._scene = new Scene();\n this._camera = applyProps(new PerspectiveCamera(), camera);\n this._renderer = new WebGLRenderer({ canvas: el, context: webgl.gl });\n this._renderer.setPixelRatio(this._dpr);\n this._renderer.outputColorSpace = colorSpace;\n this._renderer.toneMapping = toneMapping;\n this._renderer.toneMappingExposure = toneMappingExposure;\n this._renderer.shadowMap.enabled = !!shadows;\n this._renderer.shadowMap.type = typeof shadows === \"boolean\" ? PCFSoftShadowMap : shadows;\n this._renderer.info.autoReset = false;\n\n this._mount = new Object3D();\n this._resourceManager = new ResourceManager();\n this._loadingManager = new LoadingManager(loader.onLoad, loader.onProgress, loader.onError);\n this._taskManager = new TaskManager(tasker.onComplete, tasker.onProgress, tasker.onError);\n this._componentManager = new ComponentManager(this);\n this._defaultProps = { path, resourcePath, dracoPath, manager: this._loadingManager };\n\n this._autoResize = autoResize;\n this._targetFrameRate = targetFrameRate;\n this._input = new DeviceInput(this);\n this._input.addEventListeners();\n\n this._addDefaultLoaders();\n\n if (autoStart) {\n this.start();\n }\n\n this.rotate();\n this.resize();\n }\n\n destroy() {\n this.stop();\n this._renderer.dispose();\n this._taskManager.destroy();\n this._resourceManager.destroy();\n this._componentManager.destroy();\n this._input.removeAllListeners();\n }\n\n private _addDefaultLoaders() {\n this.addLoader(GLTFLoader);\n this.addLoader(HDRLoader);\n this.addLoader(TextureLoader);\n this.addLoader(JSONLoader);\n this.addLoader(BINLoader);\n }\n\n private _frame(time: number) {\n this._time = time;\n\n if (this._targetFrameRate > -1) {\n const interval = 1 / this._targetFrameRate;\n const delta = this._time - this._lastFrameTime;\n\n if (delta >= interval) {\n this.loop(this._fixedFrameTime ? interval : this._time - this._lastTime);\n this._lastTime = this._time;\n this._lastFrameTime = this._time - (delta % interval);\n }\n }\n else {\n this.loop(this._time - this._lastTime);\n this._lastTime = this._time;\n }\n }\n\n loop(dt: number) {\n dt = Math.min(dt, 0.067);\n this.update(dt);\n this.render(dt);\n }\n\n update(dt: number) {\n this._taskManager.update();\n this._componentManager.update(dt);\n }\n\n render(dt: number) {\n this._renderer.info.reset();\n this._rendering(dt);\n this._componentManager.render(dt);\n }\n\n _rendering(dt: number) {\n this._renderer.render(this._scene, this._camera);\n }\n\n _resizing(width: number, height: number) {\n this._renderer.setSize(width, height)\n }\n\n start() {\n if (this._running == false) {\n this._running = true;\n const frameCallback = (time: number) => {\n if (this._running) {\n this._frame(time * 0.001);\n }\n }\n this._renderer.setAnimationLoop(frameCallback);\n }\n return this;\n }\n\n stop() {\n this._running = false;\n this._time = this._lastTime = 0;\n return this;\n }\n\n rotate() {\n let width: number = window.innerWidth;\n let height: number = window.innerHeight;\n\n if (this._orientation === Orientation.LANDSCAPE) {\n this._rootRotated = width < height;\n }\n else if (this._orientation === Orientation.PORTRAIT) {\n this._rootRotated = width > height;\n }\n else { //Auto\n return;\n }\n\n if (this._rootRotated) {\n let tmp = width;\n width = height;\n height = tmp;\n }\n\n const root = this._root;\n if (this._rootRotated) {\n root.style['-webkit-transform'] = 'rotate(90deg)';\n root.style.transform = 'rotate(90deg)';\n root.style['-webkit-transform-origin'] = '0px 0px 0px';\n root.style.transformOrigin = '0px 0px 0px';\n root.style.margin = `0 0 0 ${height}px`;\n root.style.width = `${width}px`;\n root.style.height = `${height}px`;\n }\n else {\n root.style['-webkit-transform'] = 'rotate(0deg)';\n root.style.transform = 'rotate(0deg)';\n root.style.margin = '0px auto';\n root.style.width = `${width}px`;\n root.style.height = `${height}px`;\n }\n }\n\n resize(\n width: number = this._container.offsetWidth,\n height: number = this._container.offsetHeight\n ) {\n if (!this._autoResize) {\n return;\n }\n\n if (this._rootRotated) {\n let tmp = width;\n width = height;\n height = tmp;\n }\n\n this._width = width;\n this._height = height;\n\n let camera = this._camera as any;\n if (camera.isOrthographicCamera) {\n this._viewport = { width: width / camera.zoom, height: height / camera.zoom, factor: 1 };\n }\n else if (camera.isPerspectiveCamera) {\n if (!camera.manual) {\n camera.aspect = width / height;\n camera.updateProjectionMatrix();\n }\n let distance = camera.getWorldPosition(Viewer.__worldPos).distanceTo(Viewer.__target);\n let h = 2 * Math.tan(MathUtils.degToRad(camera.fov * 0.5)) * distance;\n let w = h * width / height;\n this._viewport = { width: w, height: h, factor: width / w };\n }\n\n this._resizing(width, height);\n this._componentManager.resize(width, height);\n }\n\n loadAsset(props: AssetProperties) {\n return this._resourceManager.loadAsset(Object.assign({}, this._defaultProps, props));\n }\n\n getLoader(ext: string) {\n return this._resourceManager.getLoader(ext);\n }\n\n addLoader(Loader: LoaderConstructor) {\n return this._resourceManager.addLoader(Loader);\n }\n\n traverseMaterials(callback: (mat: Material) => void) {\n this._scene.traverse((item: any) => {\n if (item.material) {\n if (Array.isArray(item.material)) item.material.forEach(callback);\n else callback(item.material);\n }\n })\n }\n\n traverseComponents(callback: (comp: Component) => void) {\n return this._componentManager.traverseComponents(callback);\n }\n\n mount<T extends Mount>(constructor: { new(...args: any[]): T }, autoAdd: boolean = false): T {\n return this._componentManager.getComponent(this._mount, constructor, autoAdd);\n }\n\n task(task: Task) {\n this._taskManager.add(task);\n }\n\n add<T extends Object3D | Component, K extends __C<T>>(object: T | K & __C<T>, props?: __P<T, K>): T;\n add(object: any, {\n node,\n args,\n debug,\n scale,\n position,\n rotation,\n shadowArgs,\n makeDefault,\n component,\n layer,\n parent = this._scene,\n ...props\n }: any = {}\n ) {\n let ins = getClassInstance(object, args);\n if (ins.isObject3D) {\n node = ins;\n }\n else if (ins.isMount) {\n node = this._mount;\n this._componentManager.addComponent(node, ins);\n }\n else if (ins.isComponent) {\n node = node || ins.node || new Object3D();\n this._componentManager.addComponent(node, ins);\n }\n else {\n throw Error(\"Unsuport object\");\n }\n\n if (!node.parent) {\n parent.add(node);\n }\n\n if (component) {\n const components = Array.isArray(component) ? component : [component];\n for (const comp of components) {\n this._componentManager.addComponent(node, comp);\n }\n }\n\n if (layer) {\n node.layers.mask = layer;\n }\n\n if (scale || position || rotation) {\n applyProps(node, { scale, position, rotation });\n }\n if (props) {\n applyProps(ins, props);\n }\n\n if (ins.isCamera && makeDefault) {\n ins.manual = ins.aspect !== this._camera.aspect;\n this._camera = ins;\n }\n if (shadowArgs) {\n if (node.isDirectionalLight) Viewer._setDirectLightShadow(node.shadow, shadowArgs);\n }\n\n return ins;\n }\n\n remove<T extends Object3D | Component>(ins: T): T {\n if (ins instanceof Object3D) {\n this._componentManager.destroyComponents(ins);\n ins.removeFromParent();\n }\n else if (ins instanceof Component) {\n this._componentManager.removeComponent(ins.node, ins);\n }\n else {\n throw Error(\"remove invalid\");\n }\n return ins;\n }\n\n createRenderTarget(\n width: number,\n height: number,\n nearest: boolean = false,\n floatType: boolean | TextureDataType = false,\n msaa: number = 0,\n mipmap: boolean = false,\n depth: boolean = false,\n ) {\n return new WebGLRenderTarget(width, height, {\n wrapS: ClampToEdgeWrapping,\n wrapT: ClampToEdgeWrapping,\n magFilter: nearest ? NearestFilter : LinearFilter,\n minFilter: nearest ? NearestFilter : mipmap ? LinearMipMapLinearFilter : LinearFilter,\n type: typeof floatType === \"boolean\" ? floatType ? this.DATA_FLOAT_TYPE : UnsignedByteType : floatType,\n anisotropy: 0,\n colorSpace: LinearSRGBColorSpace,\n depthBuffer: depth,\n stencilBuffer: false,\n samples: SystemInfo.isSupportMSAA ? msaa : 0,\n generateMipmaps: mipmap,\n })\n }\n\n createCubeRenderTarget(\n size: number,\n nearest: boolean = false,\n floatType: boolean | TextureDataType = false,\n msaa: number = 0,\n mipmap: boolean = false,\n depth: boolean = false,\n ) {\n return new WebGLCubeRenderTarget(size, {\n wrapS: ClampToEdgeWrapping,\n wrapT: ClampToEdgeWrapping,\n magFilter: nearest ? NearestFilter : LinearFilter,\n minFilter: nearest ? NearestFilter : mipmap ? LinearMipMapLinearFilter : LinearFilter,\n type: typeof floatType === \"boolean\" ? floatType ? this.DATA_FLOAT_TYPE : UnsignedByteType : floatType,\n anisotropy: 0,\n colorSpace: LinearSRGBColorSpace,\n depthBuffer: depth,\n stencilBuffer: false,\n samples: SystemInfo.isSupportMSAA ? msaa : 0,\n generateMipmaps: mipmap\n })\n }\n\n createDataTexture(\n data: ArrayBufferView,\n width: number,\n height: number,\n floatType: boolean = false,\n nearest: boolean = true,\n ) {\n return new DataTexture(\n data, width, height,\n RGBAFormat,\n floatType ? FloatType : UnsignedByteType,\n UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping,\n nearest ? NearestFilter : LinearFilter,\n nearest ? NearestFilter : LinearFilter,\n 0\n );\n }\n\n /**\n * 传送门,得到一个全新的场景\n * @param callback 禁止使用异步函数,会导致状态错误\n * @returns \n */\n portal<T = any>(\n callback: () => T,\n sceneNew: Scene = new Scene()\n ) {\n const scene = this._scene;\n const camera = this._camera;\n this._scene = sceneNew;\n const result = callback();\n this._scene = scene;\n this._camera = camera;\n return result;\n }\n\n blit(\n renderTarget: WebGLRenderTarget,\n material: Material,\n lod?: number,\n face?: number\n ) {\n Viewer.Blit(this._renderer, renderTarget, material, lod, face);\n }\n\n compile(target?: Object3D | Scene | Material | Texture): void;\n compile(target?: Material[]): void;\n compile(target?: any) {\n if (Array.isArray(target)) {\n if (target.every(v => v.isMaterial)) {\n Viewer.CompileMaterial(this._renderer, this._scene, this._camera, target);\n }\n else {\n throw Error(\"Viewer.compile: unsuport material\");\n }\n }\n else if (typeof target === \"object\") {\n if (target.isMaterial) {\n Viewer.CompileMaterial(this._renderer, this._scene, this._camera, target);\n }\n else if (target.isObject3D) {\n if (target.meshData.materials) {\n Viewer.CompileMaterial(this._renderer, this._scene, this._camera, Object.values(target.meshData.materials));\n }\n if (target.meshData.textures) {\n Viewer.CompileTexture(this._renderer, Object.values(target.meshData.textures));\n }\n if (!target.meshData.meshes) {\n Viewer.CompileObject3D(this._renderer, this._scene, this._camera, target);\n }\n }\n else if (target.isTexture) {\n Viewer.CompileTexture(this._renderer, target);\n }\n }\n else {\n Viewer.CompileObject3D(this._renderer, this._scene, this._camera, this._scene);\n }\n }\n}","import { CubeTexture, Mesh, PMREMGenerator, ShaderMaterial, Texture, WebGLRenderTarget, WebGLRenderer } from \"three\";\nimport { LOD_MIN, _Quality, _axisDirections, _flatCamera, _getClearMaterial, _getCubeMapMaterial, _setViewport } from \"./utils\";\nimport { Viewer } from \"../../Viewer\";\nimport { MergeInfo } from \"./MergeInfo\";\n\nexport class MergeRefectPass {\n private _pmremGenerator: any;\n private _reflectMap: Texture;\n private _envMapTarget: WebGLRenderTarget;\n private _sourceTarget: WebGLRenderTarget;\n\n get envMap() {\n return this._envMapTarget.texture;\n }\n\n constructor({\n envMap,\n reflectMap,\n viewer,\n }: {\n envMap?: Texture;\n reflectMap: CubeTexture;\n viewer: Viewer;\n }) {\n this._reflectMap = reflectMap;\n this._pmremGenerator = this._getPMREMExtension(viewer.renderer);\n this._envMapTarget = this._pmremGenerator._fromTextureExtension(reflectMap, envMap);\n this._sourceTarget = this._envMapTarget.clone();\n this._pmremGenerator._copyTexture(this._sourceTarget, this._envMapTarget.texture);\n }\n\n dispose() {\n this._sourceTarget.dispose();\n this._envMapTarget.dispose();\n this._pmremGenerator.dispose();\n }\n\n mergeReflect(info: MergeInfo) {\n this._pmremGenerator._copyTexture(this._envMapTarget, this._sourceTarget.texture, info.envMapIntensity);\n this._pmremGenerator._mergeReflect(this._envMapTarget, this._reflectMap, info.quality);\n\n info.envMapTarget = this._envMapTarget;\n info.lodMax = this._pmremGenerator._lodMeshes.length - 1;\n }\n\n private _getPMREMExtension(renderer: WebGLRenderer) {\n const pmremGenerator = new PMREMGenerator(renderer) as any;\n pmremGenerator._fromTextureExtension = function (reflectMap: CubeTexture, envMap?: Texture) {\n const target = envMap ? this._fromTexture(envMap) : this._fromCubeTexture(reflectMap);\n this._cubeMapMaterial = _getCubeMapMaterial();\n this._copyTexMaterial = _getClearMaterial();\n this._copyMesh = new Mesh(Viewer.fullscreenMesh.geometry, this._copyTexMaterial);\n this._lodMeshes = this._lodPlanes.map(v => new Mesh(v, this._cubeMapMaterial));\n this._sourceInit = false;\n return target;\n }\n pmremGenerator._fromCubeTexture = function (texture: CubeTexture) {\n this._setSize(texture.image.length === 0 ? 16 : (texture.image[0].width || texture.image[0].image.width));\n return this._allocateTargets();\n }\n pmremGenerator._copyTexture = function (\n targetOut: WebGLRenderTarget,\n texture: Texture,\n intensity: number = 1,\n ) {\n const uniforms = this._copyTexMaterial.uniforms;\n uniforms.map.value = texture;\n uniforms.intensity.value = intensity;\n\n targetOut.scissorTest = false;\n _setViewport(targetOut, 0, 0, targetOut.width, targetOut.height);\n\n const renderer = this._renderer;\n renderer.autoClear = true;\n renderer.setRenderTarget(targetOut);\n renderer.render(this._copyMesh, _flatCamera);\n renderer.setRenderTarget(null);\n }\n pmremGenerator._clearTexture = function (\n targetOut: WebGLRenderTarget,\n intensity?: number,\n ) {\n this._copyTexture(targetOut, this._sourceTarget.texture, intensity);\n }\n pmremGenerator._mergeReflect = function (\n sourceTarget: WebGLRenderTarget,\n reflectMap: CubeTexture,\n quality: number,\n ) {\n const renderer = this._renderer;\n const autoClear = renderer.autoClear;\n const cubeMapMaterial = this._cubeMapMaterial;\n\n const uniforms = this._cubeMapMaterial.uniforms;\n uniforms.envMap.value = reflectMap;\n\n renderer.autoClear = false;\n\n if (quality === _Quality.HIGH) {\n for (let i = 0; i < this._lodMeshes.length - 1; i++) {\n uniforms.lod.value = i < 5 ? 0 : i;\n this._blit(sourceTarget, i, cubeMapMaterial);\n }\n }\n else if (quality === _Quality.MEDIUM) {\n for (let i = 0; i < this._lodMeshes.length; i++) {\n if (i < 4) {\n uniforms.lod.value = 0;\n this._blit(sourceTarget, i, cubeMapMaterial);\n }\n else {\n this._pmremblur(sourceTarget, i - 1, i);\n }\n }\n }\n else if (quality === _Quality.ULTRA) {\n uniforms.lod.value = 0;\n this._blit(sourceTarget, 0, cubeMapMaterial);\n for (let i = 1; i < this._lodMeshes.length; i++) {\n this._pmremblur(sourceTarget, i - 1, i);\n }\n }\n\n sourceTarget.scissorTest = false;\n _setViewport(sourceTarget, 0, 0, sourceTarget.width, sourceTarget.height);\n\n renderer.autoClear = autoClear;\n }\n pmremGenerator._pmremblur = function (\n targetOut: WebGLRenderTarget,\n lodIn: number,\n lodOut: number,\n ) {\n const sigma = Math.sqrt(this._sigmas[lodOut] * this._sigmas[lodOut] - this._sigmas[lodIn] * this._sigmas[lodIn]);\n const poleAxis = _axisDirections[(lodIn) % _axisDirections.length];\n this._blur(targetOut, lodIn, lodOut, sigma, poleAxis);\n }\n pmremGenerator._blit = function (\n targetOut: WebGLRenderTarget,\n lodOut: number,\n material: ShaderMaterial,\n ) {\n const renderer = this._renderer;\n const _lodMax = this._lodMax;\n const outputSize = this._sizeLods[lodOut];\n const x = 3 * outputSize * (lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0);\n const y = 4 * (this._cubeSize - outputSize);\n _setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize);\n const lodMesh = this._lodMeshes[lodOut];\n lodMesh.material = material;\n renderer.autoClear = false;\n renderer.setRenderTarget(targetOut);\n renderer.render(lodMesh, _flatCamera);\n }\n return pmremGenerator;\n }\n}\n","import { MathUtils } from \"three\";\n\nexport function mipGaussianBlendWeight(sigma: number, lod: number) {\n let sigma2 = sigma * sigma;\n let c = 2.0 * Math.PI * sigma2;\n let numerator = Math.pow(16, lod) * 1.386294361; //log(4)\n let denorminator = c * (Math.pow(4, lod) + c);\n return MathUtils.clamp(numerator / denorminator, 0, 1);\n}\n","import { CubeTexture, MathUtils, Mesh, PMREMGenerator, ShaderMaterial, Texture, WebGLRenderTarget, WebGLRenderer } from \"three\";\nimport { mipGaussianBlendWeight } from \"../mipGaussianBlendWeight\";\nimport { LOD_MIN, _flatCamera, _getMipBlurMaterial, _getMipCopyMaterial, _setViewport } from \"./utils\";\nimport { Viewer } from \"../../Viewer\";\nimport { MergeInfo } from \"./MergeInfo\";\n\nconst MAX_LOD = 10;\n\nexport class MergeMipBlurPass {\n private _pmremGenerator: any;\n private _sigma: number = 2;\n private _blurMinLod: number = 0;\n private _blurMaxLod: number = MAX_LOD;\n private _blurIntensity: number = -1;\n private _envMapTarget: WebGLRenderTarget;\n private _reflectMap: CubeTexture;\n\n get envMapTarget() {\n return this._envMapTarget;\n }\n\n get envMap() {\n return this._envMapTarget.texture;\n }\n\n constructor({\n viewer,\n reflectMap,\n }: {\n viewer: Viewer;\n reflectMap: CubeTexture;\n }) {\n this._reflectMap = reflectMap;\n this._pmremGenerator = this._getPMREMExtension(viewer.renderer);\n this._envMapTarget = this._pmremGenerator._fromTextureExtension(reflectMap);\n }\n\n dispose() {\n this._envMapTarget.dispose();\n this._pmremGenerator.dispose();\n }\n\n mergeMipBlur(info: MergeInfo) {\n this._setBlurIntensity(info.blurIntensity);\n const targetIn = this._pmremGenerator._applyMipBlur(\n this._envMapTarget,\n this._reflectMap,\n this._blurMinLod,\n this._blurMaxLod,\n this._sigma,\n info.exposure,\n );\n this._pmremGenerator._mipCopy(info.envMapTarget, targetIn, info.lodMax, this._blurMinLod);\n }\n\n private _setBlurIntensity(blurIntensity: number) {\n if (this._blurIntensity !== blurIntensity) {\n this._blurIntensity = blurIntensity\n this._sigma = MathUtils.lerp(1, 40, this._blurIntensity / 10);\n for (let lod = 0; lod <= MAX_LOD; lod++) {\n let w = mipGaussianBlendWeight(this._sigma, lod);\n if (w < 0.002) {\n this._blurMinLod = lod;\n }\n if (w >= 1) {\n this._blurMaxLod = lod;\n break;\n }\n }\n }\n }\n\n private _getPMREMExtension(renderer: WebGLRenderer) {\n const pmremGenerator = new PMREMGenerator(renderer) as any;\n pmremGenerator._fromTextureExtension = function (texture: Texture) {\n this._setSize(texture.image.length === 0 ? 16 : (texture.image[0].width || texture.image[0].image.width));\n const target = this._allocateTargets();\n this._mipBlurMaterial = _getMipBlurMaterial(this._lodMax, target.width, target.height);\n this._mipCopyMaterial = _getMipCopyMaterial(this._lodMax, target.width, target.height);\n this._lodMeshes = this._lodPlanes.map(v => new Mesh(v, this._mipBlurMaterial));\n return target;\n }\n pmremGenerator._applyMipBlur = function (\n sourceTarget: WebGLRenderTarget,\n texture: CubeTexture,\n blurMinLod: number,\n blurMaxLod: number,\n sigma: number,\n exposure: number = 1\n ) {\n const pingPongRenderTarget = this._pingPongRenderTarget;\n const uniforms = this._mipBlurMaterial.uniforms;\n uniforms.envMap.value = texture;\n uniforms.exposure.value = exposure;\n\n let lod = blurMaxLod;\n let targetOut = sourceTarget;\n let targetIn = pingPongRenderTarget;\n\n this._mipBlur(sourceTarget, pingPongRenderTarget, lod, 1);\n for (let i = 0; lod-- > blurMinLod; i++) {\n targetOut = (i & 1) === 0 ? pingPongRenderTarget : sourceTarget;\n targetIn = (i & 1) === 1 ? pingPongRenderTarget : sourceTarget;\n this._mipBlur(targetOut, targetIn, lod, mipGaussianBlendWeight(sigma, lod));\n }\n\n sourceTarget.scissorTest = false;\n _setViewport(sourceTarget, 0, 0, sourceTarget.width, sourceTarget.height);\n\n return targetOut;\n }\n pmremGenerator._mipBlur = function (\n targetOut: WebGLRenderTarget,\n targetIn: WebGLRenderTarget,\n lodOut: number,\n weight: number,\n ) {\n const uniforms = this._mipBlurMaterial.uniforms;\n uniforms.cubeUVMap.value = targetIn.texture;\n uniforms.weight.value = weight;\n uniforms.lod.value = lodOut;\n\n this._blit(targetOut, lodOut, this._mipBlurMaterial);\n }\n pmremGenerator._mipCopy = function (\n targetOut: WebGLRenderTarget,\n targetIn: WebGLRenderTarget,\n lodOut: number,\n lodIn: number = lodOut,\n ) {\n const uniforms = this._mipCopyMaterial.uniforms;\n uniforms.cubeUVMap.value = targetIn.texture;\n uniforms.lod.value = lodIn;\n\n this._blit(targetOut, lodOut, this._mipCopyMaterial);\n\n targetOut.scissorTest = false;\n _setViewport(targetOut, 0, 0, targetOut.width, targetOut.height);\n }\n pmremGenerator._blit = function (\n targetOut: WebGLRenderTarget,\n lodOut: number,\n material: ShaderMaterial,\n ) {\n const renderer = this._renderer;\n const _lodMax = this._lodMax;\n const outputSize = this._sizeLods[lodOut];\n const x = 3 * outputSize * (lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0);\n const y = 4 * (this._cubeSize - outputSize);\n _setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize);\n const lodMesh = this._lodMeshes[lodOut];\n lodMesh.material = material;\n renderer.autoClear = false;\n renderer.setRenderTarget(targetOut);\n renderer.render(lodMesh, _flatCamera);\n }\n\n return pmremGenerator;\n }\n}","import {\n CubeCamera,\n HalfFloatType,\n Object3D,\n Scene,\n Texture,\n TextureDataType,\n Vector3,\n} from \"three\";\n\nimport { MergeRefectPass } from \"../passes/cubeuv/MergeReflectPass\";\nimport { MergeMipBlurPass } from \"../passes/cubeuv/MergeBlurPass\";\nimport { property } from \"../PropertyManager\";\nimport { MergeInfo } from \"../passes/cubeuv/MergeInfo\";\nimport { _Quality } from \"../passes/cubeuv/utils\";\nimport { Mount } from \"../Mount\";\n\nexport class Environment extends Mount {\n static readonly Quality = _Quality;\n\n private _elapsed: number = 0;\n private _scene: Scene | Object3D;\n private _cubeCamera: CubeCamera;\n private _reflectPass: MergeRefectPass;\n private _mipBlurPass: MergeMipBlurPass;\n private _mergeInfo: MergeInfo = {\n quality: _Quality.HIGH,\n envMapTarget: null,\n envMapIntensity: 1,\n blurIntensity: 1,\n lodMax: 0,\n exposure: 1\n }\n\n @property({ value: _Quality })\n quality: number = _Quality.HIGH;\n @property({ min: 0, max: 1, step: 0.01 })\n envMapIntensity: number = 1;\n @property({ min: 0, max: 10, step: 0.01 })\n reflectExposure: number = 1;\n @property({ min: 0, max: 10, step: 0.1 })\n reflectBlurIntensity: number = 5;\n @property\n interval: number = 0;\n @property\n manual: boolean = false\n\n @property\n get envMap() {\n return this._reflectPass.envMap;\n }\n\n constructor({\n envMap,\n scene,\n near,\n far,\n layer = 1 << 0,\n resolution = 256,\n floatType = HalfFloatType,\n position = new Vector3(0, 1, 0),\n }: {\n envMap?: Texture;\n scene?: Scene | Object3D;\n performance?: number;\n resolution?: number;\n layer?: number;\n near?: number;\n far?: number;\n floatType?: boolean | TextureDataType;\n position?: Vector3;\n } = {}) {\n super();\n this.onLoad = () => {\n const viewer = this.viewer;\n this._scene = scene || viewer.scene;\n const cubeRenderTarget = viewer.createCubeRenderTarget(resolution, false, floatType, 0, true, true);\n this._cubeCamera = new CubeCamera(near || viewer.camera.near, far || viewer.camera.far, cubeRenderTarget);\n this._cubeCamera.position.copy(position);\n this._cubeCamera.layers.mask = layer;\n const reflectMap = cubeRenderTarget.texture;\n this._reflectPass = new MergeRefectPass({ viewer, reflectMap, envMap });\n }\n this.onDestroy = () => {\n this._reflectPass.dispose();\n this._mipBlurPass && this._mipBlurPass.dispose();\n }\n }\n\n update(dt: number) {\n if (!this.manual) {\n if (this._elapsed >= this.interval || this._elapsed === 0) {\n this._elapsed = 0;\n this._renderFrame();\n }\n this._elapsed += dt;\n }\n }\n\n manualFrame() {\n if (this.manual) {\n this._renderFrame();\n }\n }\n\n private _renderFrame() {\n const { renderer } = this.viewer;\n const autoClear = renderer.autoClear;\n const oldTarget = renderer.getRenderTarget();\n const oldActiveCubeFace = renderer.getActiveCubeFace();\n const oldActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n renderer.autoClear = true;\n\n this._mergeInfo.quality = this.quality;\n this._mergeInfo.exposure = this.reflectExposure;\n this._mergeInfo.envMapIntensity = this.envMapIntensity;\n this._mergeInfo.blurIntensity = this.reflectBlurIntensity;\n\n if (this.quality !== _Quality.LOW) {\n this._cubeCamera.update(renderer, this._scene);\n }\n\n this._reflectPass.mergeReflect(this._mergeInfo);\n\n if (this.quality === _Quality.HIGH) {\n if (this._mipBlurPass === undefined) {\n this._mipBlurPass = new MergeMipBlurPass({ viewer: this.viewer, reflectMap: this._cubeCamera.renderTarget.texture });\n }\n this._mipBlurPass.mergeMipBlur(this._mergeInfo);\n }\n\n renderer.autoClear = autoClear;\n renderer.setRenderTarget(oldTarget, oldActiveCubeFace, oldActiveMipmapLevel);\n }\n}","import { ShaderChunk, ShaderLib, Vector3, Vector4, WebGLProgramParametersWithUniforms } from \"three\";\nimport { property } from \"../PropertyManager\";\nimport { Mount } from \"../Mount\";\n\nexport class BoxProjection extends Mount {\n\n private _center: Vector4 = new Vector4(0, 0.5, 0, 1);\n private _boxMin: Vector3 = new Vector3(0, 0, 0);\n private _boxMax: Vector3 = new Vector3(1, 1, 1);\n\n @property\n get center() {\n return this._center;\n }\n set center(v: Vector4) {\n this._center.copy(v);\n }\n\n @property\n get boxMin() {\n return this._boxMin;\n }\n set boxMin(v: Vector3) {\n this._boxMin.copy(v);\n }\n\n @property\n get boxMax() {\n return this._boxMax;\n }\n set boxMax(v: Vector3) {\n this._boxMax.copy(v);\n }\n\n onLoad() {\n ShaderLib.physical.vertexShader = ShaderLib.physical.vertexShader.replace(/#ifdef USE_TRANSMISSION/g, `\n #if defined(USE_TRANSMISSION) || defined(USE_BOX_PROJECTION)\n `);\n ShaderLib.physical.fragmentShader = ShaderLib.physical.fragmentShader.replace(\"varying vec3 vViewPosition;\", `\n varying vec3 vViewPosition;\n #if defined(USE_BOX_PROJECTION)\n varying vec3 vWorldPosition;\n #endif\n `);\n ShaderChunk.worldpos_vertex = ShaderChunk.worldpos_vertex.replace(\"#if defined( USE_ENVMAP )\", \"#if defined( USE_ENVMAP ) || defined( USE_BOX_PROJECTION )\");\n ShaderChunk.envmap_physical_pars_fragment = ShaderChunk.envmap_physical_pars_fragment.replace(\"#ifdef USE_ENVMAP\", `\n #ifdef USE_ENVMAP\n\n #if defined(USE_BOX_PROJECTION)\n uniform vec4 probePos;\n uniform vec3 probeBoxMin;\n uniform vec3 probeBoxMax;\n \n vec3 boxProjection(vec3 nrdir, vec3 worldPos, vec3 probePos, vec3 boxMin, vec3 boxMax) {\n vec3 tbot = boxMin - worldPos;\n vec3 ttop = boxMax - worldPos;\n vec3 tmax = mix(tbot, ttop, step(vec3(0), nrdir));\n tmax /= nrdir;\n float t = min(min(tmax.x, tmax.y), tmax.z);\n return worldPos + nrdir * t - probePos;\n }\n #endif\n\n `).replace(\"reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\", `\n reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n \n #if defined(USE_BOX_PROJECTION)\n if (probePos.w > 0.001) {\n reflectVec = boxProjection(reflectVec, vWorldPosition, probePos.xyz, probeBoxMin.xyz, probeBoxMax.xyz);\n }\n #endif\n\n `).replace(\"vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\", `\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\n #if defined(USE_BOX_PROJECTION)\n if (probePos.w > 0.001) {\n worldNormal = boxProjection(worldNormal, vWorldPosition, probePos.xyz, probeBoxMin.xyz, probeBoxMax.xyz);\n }\n #endif\n\n `);\n }\n\n useBoxProjection(shader: WebGLProgramParametersWithUniforms) {\n shader.defines.USE_BOX_PROJECTION = true;\n shader.uniforms.probePos = { value: this._center };\n shader.uniforms.probeBoxMin = { value: this._boxMin };\n shader.uniforms.probeBoxMax = { value: this._boxMax };\n }\n}","import { Mount } from \"../Mount\"\n\ntype PerformanceMonitorProps = {\n /** How much time in milliseconds to collect an average fps, 250 */\n ms?: number\n /** How many interations of averages to collect, 10 */\n iterations?: number\n /** The percentage of iterations that are matched against the lower and upper bounds, 0.75 */\n threshold?: number\n /** A function that receive the max device refreshrate to determine lower and upper bounds which create a margin where neither incline nor decline should happen, (refreshrate) => (refreshrate > 90 ? [50, 90] : [50, 60]) */\n bounds?: (refreshrate: number) => [lower: number, upper: number]\n /** How many times it can inline or decline before onFallback is called, Infinity */\n flipflops?: number\n /** The factor increases and decreases between 0-1, this prop sets the starting value, 0.5 */\n factor?: number\n /** The step that gets added or subtracted to or from the factor on each incline/decline, 0.1 */\n step?: number\n /** When performance is higher than the upper bound (good!) */\n onIncline?: (monitor: PerformanceMonitor) => void\n /** When performance is lower than the upper bound (bad!) */\n onDecline?: (monitor: PerformanceMonitor) => void\n /** Incline and decline will change the factor, this will trigger when that happened */\n onChange?: (monitor: PerformanceMonitor) => void\n /** Called after when the number of flipflops is reached, it indicates instability, use the function to set a fixed baseline */\n onFallback?: (monitor: PerformanceMonitor) => void\n}\n\n\ntype PerformanceMonitorSubscriber = {\n onIncline?: (monitor: PerformanceMonitor) => void\n /** When performance is lower than the upper bound (bad!) */\n onDecline?: (monitor: PerformanceMonitor) => void\n /** Incline and decline will change the factor, this will trigger when that happened */\n onChange?: (monitor: PerformanceMonitor) => void\n /** Called after when the number of flipflops is reached, it indicates instability, use the function to set a fixed baseline */\n onFallback?: (monitor: PerformanceMonitor) => void\n}\n\nexport class PerformanceMonitor extends Mount {\n fps = 0;\n index = 0;\n factor = 0.5;\n flipped = 0;\n refreshrate = 0;\n fallback = false;\n frames = [];\n averages = [];\n subscriptions = new Map();\n\n subscribe(subscriber: PerformanceMonitorSubscriber) {\n this.subscriptions.set(Symbol(), subscriber);\n }\n\n constructor({\n iterations = 10,\n ms = 250,\n threshold = 0.75,\n step = 0.1,\n factor: _factor = 0.5,\n flipflops = Infinity,\n bounds = (refreshrate) => (refreshrate > 100 ? [60, 100] : [40, 60]),\n onIncline,\n onDecline,\n onChange,\n onFallback,\n }: PerformanceMonitorProps) {\n super();\n\n let lastFactor = 0;\n const decimalPlacesRatio = Math.pow(10, 0);\n\n this.update = (dt: number) => {\n // If the fallback has been reached do not continue running samples\n if (this.fallback) return;\n\n const { frames, averages } = this;\n if (averages.length < iterations) {\n frames.push(performance.now())\n const msPassed = frames[frames.length - 1] - frames[0];\n if (msPassed >= ms) {\n this.fps = Math.round((frames.length / msPassed) * 1000 * decimalPlacesRatio) / decimalPlacesRatio\n this.refreshrate = Math.max(this.refreshrate, this.fps)\n averages[this.index++ % iterations] = this.fps\n if (averages.length === iterations) {\n const [lower, upper] = bounds(this.refreshrate)\n const upperBounds = averages.filter((value) => value >= upper)\n const lowerBounds = averages.filter((value) => value < lower)\n // Trigger incline when more than -threshold- avgs exceed the upper bound\n if (upperBounds.length > iterations * threshold) {\n this.factor = Math.min(1, this.factor + step);\n this.flipped++;\n if (onIncline) onIncline(this);\n this.subscriptions.forEach((value) => value.onIncline && value.onIncline(this))\n }\n // Trigger decline when more than -threshold- avgs are below the lower bound\n if (lowerBounds.length > iterations * threshold) {\n this.factor = Math.max(0, this.factor - step);\n this.flipped++;\n if (onDecline) onDecline(this);\n this.subscriptions.forEach((value) => value.onDecline && value.onDecline(this))\n }\n\n if (lastFactor !== this.factor) {\n lastFactor = this.factor\n if (onChange) onChange(this);\n this.subscriptions.forEach((value) => value.onChange && value.onChange(this))\n }\n\n if (this.flipped > flipflops && !this.fallback) {\n this.fallback = true\n if (onFallback) onFallback(this);\n this.subscriptions.forEach((value) => value.onFallback && value.onFallback(this))\n }\n this.averages = [];\n\n // Resetting the refreshrate creates more problems than it solves atm\n // this.refreshrate = 0\n }\n this.frames = [];\n }\n }\n }\n }\n}","import { ResourceManager } from \"../asset/ResourceManager\";\nimport { Mount } from \"../Mount\";\n\nexport class DropFile extends Mount {\n private _onLoad: Function;\n private _onError: Function;\n private _extensions: string[];\n private _raw: boolean = false;\n\n constructor({\n onLoad,\n onError,\n extension = [\"glb\", \"gltf\", \"fbx\", \"hdr\"],\n raw = false,\n }: {\n onLoad?: Function;\n onError?: Function;\n extension?: string | string[],\n raw?: boolean;\n } = {}) {\n super();\n this._onLoad = onLoad;\n this._onError = onError;\n this._extensions = Array.isArray(extension) ? extension : [extension];\n this._raw = raw;\n }\n\n onEnable(): void {\n document.addEventListener(\"dragover\", this._onDrogOver);\n document.addEventListener(\"drop\", this._onDrop);\n }\n\n onDisable(): void {\n document.removeEventListener(\"dragover\", this._onDrogOver);\n document.removeEventListener(\"drop\", this._onDrop);\n }\n\n private _onDrogOver = (e: DragEvent) => {\n e.preventDefault();\n e.dataTransfer.dropEffect = \"copy\";\n }\n\n private _onDrop = (e: DragEvent) => {\n e.preventDefault();\n if (e.dataTransfer.types[0] === \"text/plain\") return;// Outliner drop\n if (e.dataTransfer.items) {\n this._loadItemList(e.dataTransfer.items);\n }\n else {\n this._loadFiles(e.dataTransfer.files);\n }\n }\n\n private _loadItemList(items: DataTransferItemList) {\n getFilesFromItemList(items, (files, filesMap, dirs) => {\n this._loadFiles(files, filesMap, dirs);\n })\n }\n\n private _loadFiles(\n files: File[] | FileList,\n filesMap?: { [k: string]: File },\n dirs?: string[]\n ) {\n if (files.length > 0) {\n filesMap = filesMap || createFilesMap(files);\n dirs = dirs || [];\n\n this.viewer.loadingManager.setURLModifier(url => {\n url = url.replace(/^(\\.?\\/)/, ''); // remove './'\n const file = filesMap[url];\n if (file) {\n console.log('Loading', url);\n return URL.createObjectURL(file);\n }\n return url;\n });\n\n for (let i = 0; i < files.length; i++) {\n this._loadFile(files[i], dirs[i]);\n }\n }\n }\n\n private _loadFile(file: File, dir: string = \"\") {\n const viewer = this.viewer;\n const filename = file.name;\n const ext = ResourceManager.extension(filename);\n if (this._extensions.some(v => v === ext)) {\n const reader = new FileReader();\n reader.addEventListener(\"progress\", (event) => {\n const size = '(' + Math.floor(event.total / 1000) + ' KB)';\n const progress = Math.floor((event.loaded / event.total) * 100) + '%';\n console.log('Loading', filename, size, progress);\n });\n const loadCallback = (asset) => {\n asset.userData.ext = ext;\n this._onLoad && this._onLoad(asset);\n }\n const errCallback = (err) => {\n this._onError && this._onError(err);\n }\n if ([\"fbx\", \"gltf\", \"glb\"].some(v => v === ext)) {\n reader.addEventListener(\"load\", (event) => {\n if (this._raw) loadCallback({ userData: {}, raw: event.target.result });\n else viewer.loadAsset({ ext, buffer: event.target.result, resourcePath: dir }).then(loadCallback).catch(errCallback);\n }, false);\n reader.readAsArrayBuffer(file);\n }\n else {\n reader.addEventListener(\"load\", (event) => {\n if (this._raw) loadCallback({ userData: {}, raw: event.target.result });\n else viewer.loadAsset({ ext, url: event.target.result as string }).then(loadCallback).catch(errCallback);\n }, false);\n reader.readAsDataURL(file);\n }\n }\n }\n}\n\n\nfunction createFilesMap(files: File[] | FileList) {\n const map = {};\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n map[file.name] = file;\n }\n return map;\n}\n\nfunction getFilesFromItemList(\n items: DataTransferItemList,\n onDone: (files: File[] | FileList, filesMap: { [k: string]: File }, dirs: string[]) => void\n) {\n let itemsCount = 0;\n let itemsTotal = 0;\n\n const dirs = [];\n const files = [];\n const filesMap = {};\n\n function onEntryHandled() {\n itemsCount++;\n if (itemsCount === itemsTotal) {\n onDone(files, filesMap, dirs);\n }\n }\n\n function handleEntry(\n entry: FileSystemEntry | FileSystemDirectoryEntry | FileSystemFileEntry,\n dir: string = \"\"\n ) {\n if (entry.isDirectory) {\n const reader = (entry as FileSystemDirectoryEntry).createReader();\n reader.readEntries((entries) => {\n for (let i = 0; i < entries.length; i++) {\n handleEntry(entries[i], dir + \"/\" + entry.name + \"/\");\n }\n onEntryHandled();\n });\n\n }\n else if (entry.isFile) {\n (entry as FileSystemFileEntry).file((file) => {\n files.push(file);\n filesMap[entry.fullPath.slice(1)] = file;\n dirs.push(dir);\n onEntryHandled();\n });\n\n }\n itemsTotal++;\n }\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (item.kind === 'file') {\n handleEntry(item.webkitGetAsEntry() as any);\n }\n }\n}"],"names":["EventEmitter","_removeEvent","list","index","name","splice","length","_events","clear","has","on","callback","target","once","findIndex","v","console","warn","push","off","a","onof","container","_listeners","undefined","offof","targetOff","i","emit","args","apply","noop","message","optionalParams","debug","log","bind","info","error","Logger","isEnabled","enable","disable","mixin","derivedCtor","baseCtors","forEach","baseCtor","Object","getOwnPropertyNames","prototype","defineProperty","getOwnPropertyDescriptor","create","getClassInstance","constructor","Loader","_setUserData","node","keys","_texKeys","meshes","textures","materials","queue","object","shift","isMesh","mat","material","Array","isArray","uuid","children","values","k","tex","assign","userData","manager","EXRLoader","load","url","path","resourcePath","texSettings","onLoad","onProgress","onError","loader","_loader","EXRLoaderPrimitive","setPath","setResourcePath","extension","FBXLoader","buffer","FBXLoaderPrimitive","loadCallback","parse","GLTFLoader","dracoPath","dracoLoader","_dracoLoader","DRACOLoader","setDecoderPath","GLTFLoaderPrimitive","setDRACOLoader","setMeshoptDecoder","MeshoptDecoder","gltf","scene","animations","HDRLoader","RGBELoader","settings","mapping","EquirectangularReflectionMapping","JSONLoader","FileLoader","file","JSON","TextureLoader","TextureLoaderPrimitive","colorSpace","SRGBColorSpace","BINLoader","CustomLoader","salt","data","glbDecode","BINARY_EXTENSION_HEADER_MAGIC","BINARY_EXTENSION_HEADER_LENGTH","encryptArray","array","n","Uint8Array","headerView","DataView","textDecoder","TextDecoder","header","magic","decode","slice","version","getUint32","Error","chunkContentsLength","chunkView","chunkIndex","chunkLength","clamp","MathUtils","min","max","exp","Math","kNegligibleResidual","kLogNegligibleResidual","exponentialDamp","current","dampTime","deltaTime","quarticDamp","t","tt","smoothDamp","state","smoothTime","maxSpeed","_velocity","num","num2","num3","num4","num5","num6","num7","num8","Quat_exponentialDamp","out","copy","slerp","Quat_quarticDamp","Quat_smoothDamp","Infinity","Vec3_smoothDamp","lerp","Vector3_UNIT_X","freeze","Vector3","Vector3_UNIT_Y","Vector3_UNIT_Z","Vector3_RIGHT","Vector3_UP","Vector3_ZERO","Vector3_ONE","Vector3_NEG_ONE","abs","acos","EPSILON","__deltaMap","Map","set","Vector2","VInterpTo","speed","epsilon","dist","get","sub","lengthSq","add","multiplyScalar","VInterpConstantTo","delta","deltaM","maxStep","deltaN","Quat_Equals","b","x","y","z","w","Quat_AngularDistance","innerProd","QInterpTo","QInterpConstantTo","deltaSpeed","angularDist","FInterpTo","FInterpConstantTo","step","catmullRom","p0","p1","p2","p3","v0","v1","t2","t3","CurvePoint","p","mode","AnimationCurve","_getInterpolant","samples","_samples","_interpolant","LinearInterpolant","Float32Array","createCurvePoint","resample","interpolant","times","parameterPositions","sampleValues","point","getPoint","evaluate","needsUpdate","points","intPoint","floor","weight","isAnimationCurve","Perlin","Noise","fade","_Fade","grad","_Grad","_Lerp","_Permutation","xi","yi","zi","X","Y","Z","u","A","AA","AB","B","BA","BB","Fbm","octave","f","noise","hash","h","Easing","Linear","None","amount","In","Out","InOut","Quadratic","Cubic","Quartic","Quintic","Sinusoidal","sin","PI","Exponential","pow","Circular","sqrt","Elastic","Back","s","Bounce","generatePow","power","Number","ClassProperties","property","propertyKey","options","_properties","applyProperties","clsName","PropertyManager","_hasProperties","_propertyMap","_getProperties","autoAdd","props","_getMergedProperties","merged","getPrototypeOf","_getClassProperties","_classMap","_applyClassProperties","cls","normalized","CinestationBlendStyle","QuadraticIn","QuadraticOut","QuadraticInOut","CinestationBlendDefinition","style","time","value","ObjectInstance","instanceId","_instanceCount","generateUUID","type","applyProps","prop","des","writable","find","child","parts","split","part","getChildren","filter","group","objects","getChildByName","__emtpyObject","queryValues","Component","enabled","_enabled","componentScheduler","enableComponent","_onPreDestroy","unscheduleAll","removeComponent","onDestroy","flags","OnLoadCalled","schedule","interval","repeat","scheduler","unshedule","destroy","Destroyed","destroyImmediate","isComponent","CinestationBrain","vcam","_vcam","vcams","_vcams","lastUpdate","dt","getActiveCamera","locked","_lerpTime","brainBlend","_lerpToMainCamera","activeCamera","_vcamSolo","addCamera","indexOf","removeCamera","sort","priority","from","to","lens","finalPosition","finalRotation","isLensChanged","fov","near","far","position","quaternion","updateProjectionMatrix","Lens","VirtualCamera","_finalPosition","correctPosition","_finalRotation","multiply","correctRotation","camera","viewer","isCamera","brain","getComponent","Quaternion","PressState","NONE","SELECTED","IN","Pressability","connect","connector","_connectors","disconnect","pointerDown","pointer","_raycaster","setFromCamera","conn","intersects","intersectObject","pointerUp","pointerMove","Raycaster","DeviceInput","pointerButton","_pointerButton","_pointer","pointerPosition","_pointerPosition","mouseWheel","_mouseWheel","touchCount","_touchCount","touches","_touches","_keys","addEventListeners","canvas","touchAction","_addEventListener","e","preventDefault","_onPointerDown","passive","_onPointerUp","_onPointerMove","_onMouseWheel","_onTouchStart","_onTouchEnd","_onTouchMove","window","_onKeyDown","_onKeyPress","_onKeyUp","_onResize","removeAllListeners","removeEventListener","event","CLICK","POINTER_DOWN","POINTER_UP","POINTER_OVER","POINTER_OUT","_pressability","addEventListener","rotate","resize","_remapPointer","width","rootRotated","button","buttons","clientX","clientY","offsetX","offsetY","pageX","pageY","screenX","screenY","movementX","movementY","_remapTouch","map","identifier","_computePointer","height","POINTER_MOVE","deltaY","wheelDelta","MOUSE_WHEEL","TOUCH_START","TOUCH_END","touchesTo","id","touch","TOUCH_MOVE","key","KEYDOWN","KEYPRESS","KEYUP","isSSR","DetectUA","match","pattern","userAgent","isMobile","isTablet","test","iOSDevice","isAndroidDevice","isDesktop","isMacOS","replace","versionNumber","isWindows","isiOS","isAndroid","browser","versionIdentifier","forceUserAgent","navigator","toLowerCase","platform","maxTouchPoints","MSStream","detectUA","vendor","browserName","SystemInfo","device","isIOS","isLinux","ua","isEdge","isIE","isFirefox","isChrome","isOpera","isSafari","isSupportMSAA","cpuCoreCount","hardwareConcurrency","isRetina","devicePixelRatio","isIFrame","self","top","degToRad","tan","PI2","ESP","FreelookVirtualCamera","lookAt","_lookAt","_targetLookAt","offset","_offset","_targetOffset","springLength","_spherical","radius","_targetSpringLength","distanceMin","distanceMax","theta","_targetTheta","thetaMin","thetaMax","phi","_targetPhi","phiMin","phiMax","_targetFov","onEnable","reset","onDisable","_button","_touchID","_preLoc0","_","__loc0","__panDelta","__rotateDelta","_setTargetRotation","_calculateRotatelDelta","_setTargetLookAt","_calculatePanDelta","_calculateDistanceScale","_setTargetSpringLength","_preLoc1","__loc1","__preCenter","__center","distanceTo","scale","_tempRotateSmoothing","rotateSmoothing","forbidZ","loc0","loc1","rotateSpeed","forbidX","forbidY","panSpeed","forbidPanX","forbidPanY","_calculateLookAtOffset","panDelta","__xAxis","__yAxis","__posDelta","setFromMatrixColumn","matrix","forbitPanOffsetY","normalize","__lookAtOffset","rotateDelta","goto","smoothing","t0","t1","euclideanModulo","_tempSmoothing","update","_finalLookAt","setFromSpherical","Spherical","__panTarget","__quat","dir","Box","Mesh","BoxGeometry","Sphere","SphereGeometry","Plane","PlaneGeometry","Reflector","textureWidth","textureHeight","clipBias","multisample","layer","normal","mipmap","reflectorPlane","reflectorNormal","reflectorWorldPosition","cameraWorldPosition","rotationMatrix","Matrix4","lookAtPosition","clipPlane","Vector4","view","q","textureMatrix","virtualCamera","PerspectiveCamera","layers","mask","renderTarget","WebGLRenderTarget","HalfFloatType","minFilter","LinearMipMapLinearFilter","LinearFilter","generateMipmaps","renderer","setFromMatrixPosition","matrixWorld","extractRotation","applyMatrix4","subVectors","dot","reflect","negate","up","updateMatrixWorld","projectionMatrix","matrixWorldInverse","setFromNormalAndCoplanarPoint","constant","sign","elements","visible","currentRenderTarget","getRenderTarget","currentActiveCubeFace","getActiveCubeFace","currentActiveMipmapLevel","getActiveMipmapLevel","currentXrEnabled","xr","currentShadowAutoUpdate","shadowMap","autoUpdate","setRenderTarget","buffers","depth","setMask","autoClear","render","viewport","getTextureMatrix","dispose","Animation","mixer","_mixer","action","_action","actions","_actions","progress","_progress","playing","duration","getClip","setTime","AnimationMixer","clipAction","stopAllAction","play","animName","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","setLoop","repetitions","setDuration","stop","ContactShadows","frames","intensity","blur","resolution","smooth","color","Color","renderOrder","layerMask","planeGeometry","shadowCamera","OrthographicCamera","renderTargetBlur","texture","depthMaterial","MeshDepthMaterial","depthTest","depthWrite","onBeforeCompile","shader","uniforms","fragmentShader","horizontalBlurMaterial","ShaderMaterial","HorizontalBlurShader","verticalBlurMaterial","VerticalBlurShader","blurPlane","Group","rotation","Euler","blurShadows","gl","tDiffuse","count","initialBackground","initialOverrideMaterial","initialClearAlpha","background","overrideMaterial","getClearAlpha","setClearAlpha","getVersion","parseInt","REVISION","DiscardMaterial","vertexShader","shaderMaterial","THREE","parameters","Uniform","UniformsUtils","clone","setValues","AccumulativeShadows","temporal","limit","blend","opacity","alphaTest","colorBlend","toneMapped","randomLights","plm","ProgressiveLightMap","gPlane","parent","receiveShadow","SoftShadowMaterial","transparent","progressiveLightMap2","configure","gLights","traverse","light","prepare","finish","start","RandomizedLight","castShadow","bias","mapSize","size","ambient","DirectionalLight","shadow","random","randFloatSpread","lambda","cos","isLight","isGeometry","geometry","getClearColor","clearColor","clearAlpha","setClearColor","progressiveLightMap1","lights","mesh","discardMat","blendWindow","averagingWindow","targetMat","activeMap","buffer1Active","inactiveMap","oldBg","previousShadowMap","res","textureParams","magFilter","NearestFilter","MeshLambertMaterial","fog","bodyStart","Center","disableX","disableY","disableZ","left","right","bottom","front","back","onCentered","precise","cacheKey","inner","outer","identity","box3","Box3","setFromObject","center","sphere","getCenter","getBoundingSphere","vAlign","hAlign","dAlign","boundingBox","boundingSphere","verticalAlignment","horizontalAlignment","depthAlignment","vert_fullscreen","frag_BoxfilterBlur","frag_panoramaToCubeMap","frag_cubeMapToPanorama","getShaderMaterial","onInit","entries","reduce","acc","uniform","vert_Reflector","frag_Reflector","ReflectorMaterial","channels","aoMap","channel","lightMap","roughnessMap","normalMap","defines","metalness","roughness","lightMapIntensity","reflectMap","reflectIntensity","reflector","UV_AO","UV_LIGHTMAP","UV_ROUGHNESS","UV_NORMAL","aoMapIntensity","vert_Shadow","frag_Shadow","ShadowMaterial","shadows","shadowsMap","shadowsMatrix","Mount","isMount","UI","_camera","aspect","__panOffset","_setTargetPosition","_targetZoom","panOffset","_targetPosition","zoom","_zoom","autoClearDepth","autoClearColor","LOD_MIN","_flatCamera","PHI","INV_PHI","_axisDirections","_Quality","LOW","MEDIUM","HIGH","ULTRA","_setViewport","scissor","_getCommonVertexShader","_getClearMaterial","blending","NoBlending","_getCubeMapMaterial","envMap","lod","exposure","AdditiveBlending","_getMipCopyMaterial","lodMax","CUBEUV_TEXEL_WIDTH","CUBEUV_TEXEL_HEIGHT","CUBEUV_MAX_MIP","cubeUVMap","_getMipBlurMaterial","Caller","pause","_pause","_target","_callback","lived","_repeat","_repeatForever","_elapsed","_interval","trigger","_lastTime","call","Callers","callers","_callers","Scheduler","resume","_callersArray","callersArray","j","Invoker","_targets","remove","invoke","InvokerOneCall","ComponentScheduler","startInvoker","updateInvoker","lastUpdateInvoker","renderInvoker","resizeInvoker","comp","OnEnableCalled","IsStartCalled","DependentMode","dependencies","componentOrComponents","components","ComponentManager","_infoMap","_viewer","_scheduler","_componentScheduler","_componentsMap","destroyComponents","delete","activeComponents","_activeComponent","addComponent","root","func","component","_findComponent","_addDendencies","getComponentsInChidren","traverseComponents","dep","active","TaskManager","percent","_percent","_tasks","_taskIndex","task","excute","onComplete","parepareWebGL","isSupportedBrowser","HTMLCanvasElement","webglOpts","alpha","stencil","antialias","premultipliedAlpha","preserveDrawingBuffer","powerPreference","failIfMajorPerformanceCaveat","WebGL2RenderingContext","getContext","RENDER_TARGET_FLOAT_TYPE","DATA_FLOAT_TYPE","FloatType","err","WebGLRenderingContext","getExtension","getParameter","MAX_VERTEX_TEXTURE_IMAGE_UNITS","_floatPacking","UnsignedByteType","Orientation","ResourceManager","str","pop","dirname","lastIndexOf","substring","basename","ext","_splitTextureSettings","_texSettingKeys","_loaders","getLoader","addLoader","loadAsset","Promise","resolve","reject","sel","Object3D","Viewer","_setDirectLightShadow","_shadowCameraKeys","CompileMaterial","fullscreenMesh","compile","CompileObject3D","CompileTexture","initTexture","Blit","face","RT","fullscreenCamera","CreateFullscreenTriangle","BufferGeometry","setAttribute","Float32BufferAttribute","_root","_container","_time","_scene","_renderer","_canvas","_gl","_RENDER_TARGET_FLOAT_TYPE","_DATA_FLOAT_TYPE","dpr","_dpr","_width","_height","_viewport","_rootRotated","input","_input","targetFrameRate","_targetFrameRate","_instanceId","loadingManager","_loadingManager","resourceManager","_resourceManager","taskManager","_taskManager","_componentManager","_addDefaultLoaders","_frame","_lastFrameTime","loop","_fixedFrameTime","_rendering","_resizing","setSize","_running","frameCallback","setAnimationLoop","innerWidth","innerHeight","_orientation","LANDSCAPE","PORTRAIT","tmp","transform","transformOrigin","margin","offsetWidth","offsetHeight","_autoResize","isOrthographicCamera","factor","isPerspectiveCamera","manual","distance","getWorldPosition","__worldPos","__target","_defaultProps","traverseMaterials","item","mount","_mount","shadowArgs","makeDefault","ins","isObject3D","isDirectionalLight","removeFromParent","createRenderTarget","nearest","floatType","msaa","wrapS","ClampToEdgeWrapping","wrapT","anisotropy","LinearSRGBColorSpace","depthBuffer","stencilBuffer","createCubeRenderTarget","WebGLCubeRenderTarget","createDataTexture","DataTexture","RGBAFormat","UVMapping","portal","sceneNew","Scene","result","blit","every","isMaterial","meshData","isTexture","autoStart","autoResize","fixedFrameTime","toneMapping","LinearToneMapping","toneMappingExposure","maxDPR","orientation","AUTO","tasker","instanceCount","el","document","getElementById","webgl","parentElement","WebGLRenderer","context","setPixelRatio","outputColorSpace","PCFSoftShadowMap","autoReset","LoadingManager","MergeRefectPass","_envMapTarget","_sourceTarget","_pmremGenerator","mergeReflect","_copyTexture","envMapIntensity","_mergeReflect","_reflectMap","quality","envMapTarget","_lodMeshes","_getPMREMExtension","pmremGenerator","PMREMGenerator","_fromTextureExtension","_fromTexture","_fromCubeTexture","_cubeMapMaterial","_copyTexMaterial","_copyMesh","_lodPlanes","_sourceInit","_setSize","image","_allocateTargets","targetOut","scissorTest","_clearTexture","sourceTarget","cubeMapMaterial","_blit","_pmremblur","lodIn","lodOut","sigma","_sigmas","poleAxis","_blur","_lodMax","outputSize","_sizeLods","_cubeSize","lodMesh","mipGaussianBlendWeight","sigma2","c","numerator","denorminator","MAX_LOD","MergeMipBlurPass","mergeMipBlur","_setBlurIntensity","blurIntensity","targetIn","_applyMipBlur","_blurMinLod","_blurMaxLod","_sigma","_mipCopy","_blurIntensity","_mipBlurMaterial","_mipCopyMaterial","blurMinLod","blurMaxLod","pingPongRenderTarget","_pingPongRenderTarget","_mipBlur","Environment","_reflectPass","_renderFrame","manualFrame","oldTarget","oldActiveCubeFace","oldActiveMipmapLevel","_mergeInfo","reflectExposure","reflectBlurIntensity","_cubeCamera","_mipBlurPass","cubeRenderTarget","CubeCamera","Quality","BoxProjection","_center","boxMin","_boxMin","boxMax","_boxMax","ShaderLib","physical","ShaderChunk","worldpos_vertex","envmap_physical_pars_fragment","useBoxProjection","USE_BOX_PROJECTION","probePos","probeBoxMin","probeBoxMax","PerformanceMonitor","subscribe","subscriber","subscriptions","Symbol","iterations","ms","threshold","_factor","flipflops","bounds","refreshrate","onIncline","onDecline","onChange","onFallback","fps","flipped","fallback","averages","lastFactor","decimalPlacesRatio","performance","now","msPassed","round","lower","upper","upperBounds","lowerBounds","DropFile","_onDrogOver","_onDrop","_loadItemList","items","getFilesFromItemList","files","filesMap","dirs","_loadFiles","createFilesMap","setURLModifier","URL","createObjectURL","_loadFile","filename","_extensions","some","reader","FileReader","total","loaded","asset","_onLoad","errCallback","_onError","_raw","raw","then","catch","readAsArrayBuffer","readAsDataURL","dataTransfer","dropEffect","types","onDone","itemsCount","itemsTotal","onEntryHandled","handleEntry","entry","isDirectory","createReader","readEntries","isFile","fullPath","kind","webkitGetAsEntry"],"mappings":"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","x_google_ignoreList":[12]}
|
|
1
|
+
{"version":3,"file":"module.js","sources":["../src/base/EventEmitter.ts","../src/base/Logger.ts","../src/base/mixin.ts","../src/base/getClassInstance.ts","../src/asset/Loader.ts","../src/loaders/EXRLoader.ts","../src/loaders/FBXLoader.ts","../src/loaders/GLTFLoader.ts","../src/loaders/HDRLoader.ts","../src/loaders/JSONLoader.ts","../src/loaders/TextureLoader.ts","../src/loaders/BINLoader.ts","../../../node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs","../src/math/Damp.ts","../src/math/Constant.ts","../src/math/Interpolation.ts","../src/math/AnimationCurve.ts","../src/math/Perlin.ts","../src/math/Easing.ts","../src/PropertyManager.ts","../src/cinestation/CinestationBlendDefinition.ts","../src/ObjectInstance.ts","../src/Component.ts","../src/cinestation/CinestationBrain.ts","../src/cinestation/VirtualCamera.ts","../src/Pressability.ts","../src/DeviceInput.ts","../src/DetectUA.ts","../src/SystemInfo.ts","../src/cinestation/FreelookVirtualCamera.ts","../src/primitive/Box.ts","../src/primitive/Sphere.ts","../src/primitive/Plane.ts","../src/components/Reflector.ts","../src/components/Animation.ts","../src/Utils.ts","../src/components/ContactShadows.ts","../src/constants.ts","../src/materials/DiscardMaterial.ts","../src/shaderMaterial.ts","../src/components/AccumulativeShadows.ts","../src/components/Center.ts","../src/materials/glsl/fullscreen.glsl.ts","../src/materials/glsl/boxfilterblur.glsl.ts","../src/materials/glsl/panorama.glsl.ts","../src/materials/getShaderMaterial.ts","../src/materials/ReflectorMaterial.ts","../src/materials/ShadowMaterial.ts","../src/Mount.ts","../src/plugins/UI.ts","../src/passes/cubeuv/utils.ts","../src/Scheduler.ts","../src/ComponentScheduler.ts","../src/ComponentManager.ts","../src/TaskManager.ts","../src/WebGL.ts","../src/enums/Orientation.ts","../src/asset/ResourceManager.ts","../src/Viewer.ts","../src/passes/cubeuv/MergeReflectPass.ts","../src/passes/mipGaussianBlendWeight.ts","../src/passes/cubeuv/MergeBlurPass.ts","../src/plugins/Environment.ts","../src/plugins/BoxProjection.ts","../src/plugins/PerformanceMonitor.ts","../src/plugins/DropFile.ts"],"sourcesContent":["interface EventHandler {\n name: string;\n callback: (...args: any[]) => any;\n target?: Object;\n once?: boolean;\n}\n\ninterface Listener<T> {\n name: T, callback: (...args: any[]) => any;\n}\n\nexport class EventEmitter<T extends string = string> {\n\n protected _events: { [k: string]: EventHandler[] } = {};\n protected _removeEvent(list: EventHandler[], index: number, name: string) {\n if (index > -1) {\n list.splice(index, 1);\n if (list.length === 0) {\n delete this._events[name];\n }\n }\n return this;\n }\n\n clear() {\n this._events = {};\n return this;\n }\n\n has(name: T) {\n return !!this._events[name];\n }\n\n on(name: T, callback: (...args: any[]) => any, target?: Object, once: boolean = false) {\n let list = this._events[name];\n if (list == null) {\n list = this._events[name] = [];\n }\n\n let index = list.findIndex(v => v.callback === callback && (!target || v.target === target));\n if (index > -1) {\n console.warn(`event: ${name} duplicate registered`);\n return;\n }\n\n list.push({ name, callback, target, once });\n return this;\n }\n\n off(name: T, callback: (...args: any[]) => any, target?: Object) {\n let list = this._events[name];\n if (list) {\n let index = list.findIndex(a => (a.callback === callback) && (!target || a.target === target));\n this._removeEvent(list, index, name);\n }\n return this;\n }\n\n onof(name: T, callback: (...args: any[]) => any, container: Object & { _listeners?: Listener<T>[] }) {\n if (container._listeners === undefined) {\n container._listeners = [];\n }\n container._listeners.push({ name, callback });\n this.on(name, callback);\n return this;\n }\n\n offof(container: Object & { _listeners?: Listener<T>[] }) {\n for (let v of container._listeners) {\n this.off(v.name, v.callback);\n }\n return this;\n }\n\n targetOff(target: Object) {\n for (let name in this._events) {\n let list = this._events[name];\n for (let i = list.length; i--;) {\n let v = list[i];\n if (v.target === target) {\n this._removeEvent(list, i, name);\n }\n }\n }\n return this;\n }\n\n emit(name: T, ...args: any[]) {\n let list = this._events[name];\n if (list) {\n for (let i = list.length; i--;) {\n let v = list[i];\n if (v) { //callback可能会删除list元素\n if (v.once) this._removeEvent(list, i, name);\n if (v.target) v.callback.apply(v.target, args);\n else v.callback(...args);\n }\n }\n }\n return this;\n }\n}\n","/**\n * @class\n * @private\n */\n/* tslint:disable */\nconst noop = (message?: any, ...optionalParams: any[]) => {};\nconst debug = console.log.bind(console);\nconst info = console.info.bind(console);\nconst warn = console.warn.bind(console);\nconst error = console.error.bind(console);\n\nexport const Logger = {\n debug: noop,\n info: noop,\n warn: noop,\n error: noop,\n isEnabled: false,\n\n /** Turn on log */\n enable() {\n this.debug = debug;\n this.info = info;\n this.warn = warn;\n this.error = error;\n this.isEnabled = true;\n },\n\n /** Turn off log */\n disable() {\n this.debug = noop;\n this.info = noop;\n this.warn = noop;\n this.error = noop;\n this.isEnabled = false;\n }\n};\n","export function mixin(derivedCtor: any, baseCtors: any[]): void {\n baseCtors.forEach((baseCtor) => {\n Object.getOwnPropertyNames(baseCtor.prototype).forEach((name) => {\n Object.defineProperty(\n derivedCtor.prototype,\n name,\n Object.getOwnPropertyDescriptor(baseCtor.prototype, name) || Object.create(null)\n );\n });\n });\n}","export function getClassInstance(constructor: any, args: any[] = []) {\n return typeof constructor === \"function\" ? new constructor(...args) : constructor;\n}","import { LoadingManager, Object3D } from \"three\";\nimport { ResourceManager } from \"./ResourceManager\";\nimport { TextureSettings } from \"../TextureSettings\";\n\nexport interface LoadProperties {\n url: string,\n buffer?: string | ArrayBuffer,\n texSettings?: TextureSettings,\n path?: string;\n resourcePath?: string;\n dracoPath?: string;\n manager?: LoadingManager;\n onLoad: (asset: any) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (event: ErrorEvent) => void,\n}\n\nexport abstract class Loader {\n static _texKeys = [\n \"map\", \"alphaMap\", \"aoMap\", \"bumpMap\", \"displacementMap\", \"emissiveMap\",\n \"envMap\", \"lightMap\", \"metalnessMap\", \"normalMap\", \"roughnessMap\", \"specularMap\", \"alphaMap\"\n ]\n static _setUserData(node: Object3D) {\n const keys = Loader._texKeys;\n\n const meshes = [];\n const textures = {};\n const materials = {};\n const queue = [node];\n\n while (queue.length !== 0) {\n let object = queue.shift() as any;\n if (object.isMesh) {\n meshes.push(object);\n const mat = object.material;\n if (Array.isArray(mat)) mat.forEach(v => materials[v.uuid] = v)\n else materials[mat.uuid] = mat;\n }\n queue.push(...object.children);\n }\n\n Object.values(materials).forEach(mat => {\n keys.forEach(k => {\n let tex = mat[k];\n if (tex) {\n textures[tex.uuid] = tex;\n }\n });\n })\n\n Object.assign(node.userData, { meshes, materials, textures });\n\n return node;\n }\n\n constructor(public manager: ResourceManager) { };\n abstract extension: string[];\n abstract load(props: LoadProperties): void;\n\n}","import { LoadProperties, Loader } from \"../asset/Loader\";\nimport { EXRLoader as EXRLoaderPrimitive } from \"three/examples/jsm/loaders/EXRLoader.js\";\n\nexport class EXRLoader extends Loader {\n extension: string[] = [\"exr\"];\n\n load({\n url,\n path,\n resourcePath,\n manager,\n texSettings,\n onLoad,\n onProgress,\n onError,\n }: LoadProperties) {\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new EXRLoaderPrimitive();\n }\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n loader.load(url, tex => onLoad(Object.assign(tex, texSettings)), onProgress, onError);\n }\n\n private _loader: EXRLoaderPrimitive;\n}","import { Group } from \"three\";\nimport { LoadProperties, Loader } from \"../asset/Loader\";\nimport { FBXLoader as FBXLoaderPrimitive } from \"three/examples/jsm/loaders/FBXLoader.js\";\n\nexport class FBXLoader extends Loader {\n extension: string[] = [\"fbx\"];\n\n load({\n url,\n buffer,\n path,\n resourcePath,\n manager,\n onLoad,\n onProgress,\n onError\n }: LoadProperties) {\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new FBXLoaderPrimitive();\n }\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n\n const loadCallback = (node: Group) => {\n onLoad(Loader._setUserData(node));\n }\n\n if (buffer) {\n loadCallback(loader.parse(buffer, resourcePath));\n }\n else {\n loader.load(url, loadCallback, onProgress, onError);\n }\n }\n\n private _loader: FBXLoaderPrimitive;\n}","import { LoadProperties, Loader } from \"../asset/Loader\";\n\nimport { GLTF, GLTFLoader as GLTFLoaderPrimitive } from \"three/examples/jsm/loaders/GLTFLoader.js\";\nimport { DRACOLoader } from \"three/examples/jsm/loaders/DRACOLoader.js\";\nimport { MeshoptDecoder } from \"three/examples/jsm/libs/meshopt_decoder.module.js\";\n\nexport class GLTFLoader extends Loader {\n extension: string[] = [\"gltf\", \"glb\"];\n\n load({\n url,\n buffer,\n path,\n resourcePath,\n dracoPath,\n manager,\n onLoad,\n onProgress,\n onError\n }: LoadProperties) {\n\n let dracoLoader = this._dracoLoader;\n if (dracoLoader === undefined) {\n dracoLoader = this._dracoLoader = new DRACOLoader();\n }\n dracoLoader.manager = manager;\n dracoLoader.setDecoderPath(dracoPath);\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new GLTFLoaderPrimitive();\n loader.setDRACOLoader(dracoLoader);\n loader.setMeshoptDecoder(MeshoptDecoder);\n }\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n\n const loadCallback = (gltf: GLTF) => {\n const node = gltf.scene;\n node.animations.push(...gltf.animations);\n onLoad(Loader._setUserData(node));\n }\n\n if (buffer) {\n loader.parse(buffer, resourcePath, loadCallback, onError);\n }\n else {\n loader.load(url, loadCallback, onProgress, onError);\n }\n }\n\n private _loader: GLTFLoaderPrimitive;\n private _dracoLoader: DRACOLoader;\n}","import { EquirectangularReflectionMapping } from \"three\";\nimport { LoadProperties, Loader } from \"../asset/Loader\";\nimport { RGBELoader } from \"three/examples/jsm/loaders/RGBELoader.js\";\n\nexport class HDRLoader extends Loader {\n extension: string[] = [\"hdr\"];\n\n load({\n url,\n path,\n resourcePath,\n manager,\n texSettings,\n onLoad,\n onProgress,\n onError,\n }: LoadProperties): void {\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new RGBELoader();\n }\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n\n const settings = Object.assign({ mapping: EquirectangularReflectionMapping }, texSettings);\n loader.load(url, tex => onLoad(Object.assign(tex, settings)), onProgress, onError);\n }\n\n private _loader: RGBELoader;\n}","import { FileLoader } from \"three\";\nimport { LoadProperties, Loader } from \"../asset/Loader\";\n\nexport class JSONLoader extends Loader {\n extension: string[] = [\"json\"];\n\n load({\n url,\n path,\n resourcePath,\n manager,\n onLoad,\n onProgress,\n onError\n }: LoadProperties) {\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new FileLoader();\n }\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n loader.load(url, (file: string) => onLoad(JSON.parse(file)), onProgress, onError);\n }\n\n private _loader: FileLoader;\n}","import { SRGBColorSpace, Texture, TextureLoader as TextureLoaderPrimitive } from \"three\";\nimport { LoadProperties, Loader } from \"../asset/Loader\";\n\nexport class TextureLoader extends Loader {\n extension: string[] = [\"png\", \"jpg\", \"webp\", \"avif\"];\n\n load({\n url,\n path,\n resourcePath,\n manager,\n texSettings,\n onLoad,\n onProgress,\n onError\n }: LoadProperties): void {\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new TextureLoaderPrimitive();\n }\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n\n const loadCallback = (tex: Texture) => {\n tex.colorSpace = SRGBColorSpace;\n onLoad(Object.assign(tex, texSettings));\n }\n loader.load(url, loadCallback, onProgress, onError);\n }\n\n private _loader: TextureLoaderPrimitive;\n}","\nimport { GLTF, GLTFLoader } from \"three/examples/jsm/loaders/GLTFLoader.js\";\nimport { DRACOLoader } from \"three/examples/jsm/loaders/DRACOLoader.js\";\nimport { MeshoptDecoder } from \"three/examples/jsm/libs/meshopt_decoder.module.js\";\nimport { Loader, LoadProperties } from \"../asset/Loader\";\n\nexport class BINLoader extends Loader {\n extension: string[] = [\"bin\"];\n salt: number = 255;\n\n load({\n url,\n buffer,\n path,\n resourcePath,\n dracoPath,\n manager,\n onLoad,\n onProgress,\n onError\n }: LoadProperties): void {\n let dracoLoader = this._dracoLoader;\n if (dracoLoader === undefined) {\n dracoLoader = this._dracoLoader = new DRACOLoader();\n }\n dracoLoader.manager = manager;\n dracoLoader.setDecoderPath(dracoPath);\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new CustomLoader();\n loader.setDRACOLoader(dracoLoader);\n loader.setMeshoptDecoder(MeshoptDecoder);\n }\n loader.salt = this.salt;\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n\n const loadCallback = (gltf: GLTF) => {\n const node = gltf.scene;\n node.animations.push(...gltf.animations);\n onLoad(Loader._setUserData(node));\n }\n\n if (buffer) {\n loader.parse(buffer as ArrayBuffer, resourcePath, loadCallback, onError);\n }\n else {\n loader.load(url, loadCallback, onProgress, onError);\n }\n }\n\n private _loader: CustomLoader;\n private _dracoLoader: DRACOLoader;\n}\n\nclass CustomLoader extends GLTFLoader {\n salt: number = 255;\n parse(data: ArrayBuffer, path: string, onLoad: (gltf: GLTF) => void, onError?: (event: ErrorEvent) => void): void {\n super.parse(glbDecode(data, this.salt), path, onLoad, onError);\n }\n}\n\nconst BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\nconst BINARY_EXTENSION_HEADER_LENGTH = 12;\n\nfunction encryptArray(array: Uint8Array, salt: number) {\n for (let i = 0, n = array.length; i < n; i++) {\n array[i] ^= salt;\n }\n return array;\n}\n\nfunction glbDecode(buffer: ArrayBuffer, salt: number = 255) {\n encryptArray(new Uint8Array(buffer, 0, 4), salt);\n\n const headerView = new DataView(buffer, 0, BINARY_EXTENSION_HEADER_LENGTH);\n const textDecoder = new TextDecoder();\n const header = {\n magic: textDecoder.decode(new Uint8Array(buffer.slice(0, 4))),\n version: headerView.getUint32(4, true),\n length: headerView.getUint32(8, true)\n };\n\n if (header.magic !== BINARY_EXTENSION_HEADER_MAGIC) {\n throw new Error('Unsupported glTF-Binary header.');\n }\n else if (header.version < 2.0) {\n throw new Error('Legacy binary file detected.');\n }\n\n const chunkContentsLength = header.length - BINARY_EXTENSION_HEADER_LENGTH;\n const chunkView = new DataView(buffer, BINARY_EXTENSION_HEADER_LENGTH);\n let chunkIndex = 0;\n\n while (chunkIndex < chunkContentsLength) {\n\n const chunkLength = chunkView.getUint32(chunkIndex, true);\n chunkIndex += 4;\n\n encryptArray(new Uint8Array(buffer, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength + 4), salt);\n\n chunkIndex += 4;\n chunkIndex += chunkLength;\n }\n\n return buffer;\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import { MathUtils, Quaternion, Vector3 } from \"three\";\n\nconst { clamp } = MathUtils;\nconst { min, max, exp } = Math;\n\nconst kNegligibleResidual = 0.01;\nconst kLogNegligibleResidual = Math.log(kNegligibleResidual)// -4.605170186;\n\nexport function exponentialDamp(current: number, target: number, dampTime: number, deltaTime: number) {\n let k = -kLogNegligibleResidual / dampTime;\n return current + (target - current) * (1 - exp(-k * deltaTime));\n}\n\n// cuve like exponentialDecay but cost less\nexport function quarticDamp(current: number, target: number, dampTime: number, deltaTime: number) {\n let t = (1 - min(deltaTime, dampTime) / dampTime);\n let tt = t * t;\n return current + (target - current) * (1 - tt * tt);\n}\n\nexport function smoothDamp(\n state: Object & { _velocity?: number },\n current: number,\n target: number,\n smoothTime: number,\n maxSpeed: number,\n deltaTime: number\n) {\n if (state._velocity === undefined) {\n state._velocity = 0;\n }\n smoothTime = max(0.0001, smoothTime);\n let num = 2 / smoothTime;\n let num2 = num * deltaTime;\n let num3 = 1 / (1 + num2 + 0.48 * num2 * num2 + 0.235 * num2 * num2 * num2);\n let num4 = current - target;\n let num5 = target;\n let num6 = maxSpeed * smoothTime;\n num4 = clamp(num4, -num6, num6);\n target = current - num4;\n let num7 = (state._velocity + num * num4) * deltaTime;\n state._velocity = (state._velocity - num * num7) * num3;\n let num8 = target + (num4 + num7) * num3;\n if (num5 - current > 0 == num8 > num5) {\n num8 = num5;\n state._velocity = (num8 - num5) / deltaTime;\n }\n return num8;\n}\n\nexport function Quat_exponentialDamp(current: Quaternion, target: Quaternion, dampTime: number, deltaTime: number, out: Quaternion = current) {\n return out.copy(current).slerp(target, exponentialDamp(0, 1, dampTime, deltaTime));\n}\n\nexport function Quat_quarticDamp(current: Quaternion, target: Quaternion, dampTime: number, deltaTime: number, out: Quaternion = current) {\n return out.copy(current).slerp(target, quarticDamp(0, 1, dampTime, deltaTime));\n}\n\nexport function Quat_smoothDamp(current: Quaternion, target: Quaternion, dampTime: number, deltaTime: number, out: Quaternion = current) {\n return out.copy(current).slerp(target, smoothDamp(out, 0, 1, dampTime, Infinity, deltaTime));\n}\n\nexport function Vec3_smoothDamp(current: Vector3, target: Vector3, dampTime: number, deltaTime: number, out: Vector3 = current) {\n return out.copy(current).lerp(target, smoothDamp(out, 0, 1, dampTime, Infinity, deltaTime));\n}","import { Vector3 } from \"three\";\n\nexport const Vector3_UNIT_X = Object.freeze(new Vector3(1, 0, 0));\nexport const Vector3_UNIT_Y = Object.freeze(new Vector3(0, 1, 0));\nexport const Vector3_UNIT_Z = Object.freeze(new Vector3(0, 0, 1));\nexport const Vector3_RIGHT = Object.freeze(new Vector3(1, 0, 0));\nexport const Vector3_UP = Object.freeze(new Vector3(0, 1, 0));\nexport const Vector3_ZERO = Object.freeze(new Vector3(0, 0, 0));\nexport const Vector3_ONE = Object.freeze(new Vector3(1, 1, 1));\nexport const Vector3_NEG_ONE = Object.freeze(new Vector3(-1, -1, -1));","import { MathUtils, Quaternion, Vector2, Vector3 } from \"three\";\n\nconst { clamp } = MathUtils;\nconst { max, abs, acos } = Math;\n\nconst EPSILON = 1.e-6;\n\nconst __deltaMap = new Map();\n__deltaMap.set(Vector3, new Vector3());\n__deltaMap.set(Vector2, new Vector2());\n\nexport function VInterpTo(current: Vector2, target: Vector2, deltaTime: number, speed: number, out?: Vector2, epsilon?: number): Vector2;\nexport function VInterpTo(current: Vector3, target: Vector3, deltaTime: number, speed: number, out?: Vector3, epsilon?: number): Vector3;\nexport function VInterpTo(\n current: any,\n target: any,\n deltaTime: number,\n speed: number,\n out: any = current,\n epsilon: number = EPSILON\n) {\n if (speed <= 0) {\n return out.copy(target);\n }\n let dist = __deltaMap.get(current.constructor).copy(target).sub(current);\n if (dist.lengthSq() < epsilon) {\n return out.copy(target);\n }\n return out.copy(current).add(dist.multiplyScalar(clamp(deltaTime * speed, 0, 1)));\n}\n\nexport function VInterpConstantTo(\n current: Vector3,\n target: Vector3,\n deltaTime: number,\n speed: number,\n out: Vector3 = current,\n) {\n let delta = __deltaMap.get(current.constructor).copy(target).sub(current);\n let deltaM = delta.length();\n let maxStep = speed * deltaTime;\n if (deltaM > maxStep) {\n if (maxStep > 0) {\n let deltaN = delta.multiplyScalar(1 / deltaM);\n return out.copy(current).add(deltaN);\n }\n else {\n return out.copy(current);\n }\n }\n return out.copy(target);\n}\n\nexport function Quat_Equals(\n a: Quaternion,\n b: Quaternion,\n epsilon: number = EPSILON\n) {\n return abs(a.x - b.x) <= epsilon * max(1., abs(a.x), abs(b.x)) &&\n abs(a.y - b.y) <= epsilon * max(1., abs(a.y), abs(b.y)) &&\n abs(a.z - b.z) <= epsilon * max(1., abs(a.z), abs(b.z)) &&\n abs(a.w - b.w) <= epsilon * max(1., abs(a.w), abs(b.w));\n}\n\nexport function Quat_AngularDistance(\n a: Quaternion,\n b: Quaternion\n) {\n let innerProd = a.x * b.x + a.y * b.y + a.z * b.z + a.w * b.w;\n return acos(2 * innerProd * innerProd - 1);\n}\n\nexport function QInterpTo(\n current: Quaternion,\n target: Quaternion,\n deltaTime: number,\n speed: number,\n epsilon: number = EPSILON,\n) {\n if (speed <= 0) {\n return target;\n }\n if (Quat_Equals(current, target, epsilon)) {\n return target;\n }\n return current.slerp(target, clamp(speed * deltaTime, 0, 1));\n}\n\nexport function QInterpConstantTo(\n current: Quaternion,\n target: Quaternion,\n deltaTime: number,\n speed: number,\n out: Quaternion = current\n) {\n if (speed <= 0) {\n return out.copy(target);\n }\n if (Quat_Equals(current, target)) {\n return out.copy(target);\n }\n let deltaSpeed = clamp(speed * deltaTime, 0, 1);\n let angularDist = max(Quat_AngularDistance(current, target), EPSILON);\n return out.copy(current).slerp(target, clamp(deltaSpeed / angularDist, 0, 1))\n}\n\n//非线性\nexport function FInterpTo(\n current: number,\n target: number,\n deltaTime: number,\n speed: number,\n epsilon: number = EPSILON,\n) {\n if (speed <= 0) {\n return target;\n }\n let dist = target - current;\n if (abs(dist) < epsilon) {\n return target;\n }\n return current + dist * clamp(speed * deltaTime, 0, 1);\n}\n\n//线性插值\nexport function FInterpConstantTo(\n current: number,\n target: number,\n deltaTime: number,\n speed: number,\n epsilon: number = EPSILON,\n) {\n let dist = target - current;\n if (abs(dist) < epsilon) {\n return target;\n }\n let step = speed * deltaTime;\n return current + clamp(dist, -step, step);\n}","import { LinearInterpolant, MathUtils } from \"three\";\n\nconst { lerp, clamp } = MathUtils;\n\nfunction catmullRom(t: number, p0: number, p1: number, p2: number, p3: number) {\n const v0 = (p2 - p0) * 0.5;\n const v1 = (p3 - p1) * 0.5;\n const t2 = t * t;\n const t3 = t * t2;\n return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (- 3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;\n}\n\nclass CurvePoint {\n\n constructor(\n public x: number = 0,\n public y: number = 0,\n public mode: number = 0) { }\n\n set(x: number, y: number) {\n this.x = x;\n this.y = y;\n return this;\n }\n\n lerp(p: CurvePoint, t: number, out: CurvePoint = this) {\n out.x = lerp(this.x, p.x, t);\n out.y = lerp(this.y, p.y, t);\n return out;\n }\n}\n\nexport class AnimationCurve {\n needsUpdate: boolean = true;\n isAnimationCurve: boolean = true;\n\n private _samples: number = 100;\n private _interpolant: LinearInterpolant = new LinearInterpolant(\n new Float32Array(100), new Float32Array(100), 1, new Float32Array(100)\n );\n\n constructor(\n public name: string = \"\",\n public points: CurvePoint[] = [new CurvePoint(0, 0), new CurvePoint(1, 1)]\n ) { }\n\n private _getInterpolant(samples: number) {\n if (this._samples !== samples) {\n this._samples = samples;\n this._interpolant = new LinearInterpolant(\n new Float32Array(samples), new Float32Array(samples), 1, new Float32Array(samples)\n );\n }\n return this._interpolant;\n }\n\n createCurvePoint(x?: number, y?: number, mode?: number) {\n return new CurvePoint(x, y, mode);\n }\n\n resample(samples: number = 100) {\n const step = 1 / (samples - 1);\n const interpolant = this._getInterpolant(samples);\n const times = interpolant.parameterPositions;\n const values = interpolant.sampleValues;\n const point = this.createCurvePoint();\n\n for (let i = 0; i < samples; i++) {\n this.getPoint(i * step, point);\n times[i] = point.x;\n values[i] = point.y;\n }\n }\n\n evaluate(t: number) {\n if (this.needsUpdate) {\n this.needsUpdate = false;\n this.resample();\n }\n return this._interpolant.evaluate(t)[0];\n }\n\n getPoint(t: number, out: CurvePoint) {\n const points = this.points;\n\n if (t <= 0) {\n return out.set(t, points[0].y);\n }\n if (t >= 1) {\n return out.set(t, points[points.length - 1].y);\n }\n\n const p = (points.length - 1) * t;\n\n const intPoint = Math.floor(p);\n const weight = p - intPoint;\n\n const p0 = points[intPoint === 0 ? intPoint : intPoint - 1];\n const p1 = points[intPoint];\n const p2 = points[intPoint > points.length - 2 ? points.length - 1 : intPoint + 1];\n const p3 = points[intPoint > points.length - 3 ? points.length - 1 : intPoint + 2];\n\n if ((p1.mode === 1) || (p0 === p1 && p2.mode === 1)) {\n return p1.lerp(p2, weight, out);\n }\n return out.set(\n clamp(catmullRom(weight, p0.x, p1.x, p2.x, p3.x), 0, 1),\n clamp(catmullRom(weight, p0.y, p1.y, p2.y, p3.y), 0, 1)\n )\n }\n\n}","const { floor } = Math;\n\n// Copyright (C) 2016 Keijiro Takahashi\n// https://mrl.cs.nyu.edu/~perlin/noise/\nexport class Perlin {\n public static Noise(x: number): number;\n public static Noise(x: number, y: number): number;\n public static Noise(x: number, y: number, z: number): number;\n public static Noise(x: number, y?: number, z?: number) {\n let fade = Perlin._Fade;\n let grad = Perlin._Grad;\n let lerp = Perlin._Lerp;\n let p = Perlin._Permutation;\n\n if (y !== undefined && z !== undefined) {\n let xi = floor(x);\n let yi = floor(y);\n let zi = floor(z);\n let X = xi & 0xff; // FIND UNIT CUBE THAT\n let Y = yi & 0xff; // CONTAINS POINT.\n let Z = zi & 0xff;\n x -= xi; // FIND RELATIVE X,Y,Z\n y -= yi; // OF POINT IN CUBE.\n z -= zi;\n let u = fade(x); // COMPUTE FADE CURVES\n let v = fade(y); // FOR EACH OF X,Y,Z.\n let w = fade(z);\n let A = p[X] + Y, AA = p[A] + Z, AB = p[A + 1] + Z; // HASH COORDINATES OF\n let B = p[X + 1] + Y, BA = p[B] + Z, BB = p[B + 1] + Z; // THE 8 CUBE CORNERS,\n\n return lerp(w, lerp(v, lerp(u, grad(p[AA], x, y, z), // AND ADD\n grad(p[BA], x - 1, y, z)), // BLENDED\n lerp(u, grad(p[AB], x, y - 1, z), // RESULTS\n grad(p[BB], x - 1, y - 1, z))), // FROM 8\n lerp(v, lerp(u, grad(p[AA + 1], x, y, z - 1), // CORNERS\n grad(p[BA + 1], x - 1, y, z - 1)), // OF CUBE\n lerp(u, grad(p[AB + 1], x, y - 1, z - 1),\n grad(p[BB + 1], x - 1, y - 1, z - 1))));\n }\n else if (y !== undefined) {\n let xi = floor(x);\n let yi = floor(y);\n let X = xi & 0xff;\n let Y = yi & 0xff;\n x -= xi;\n y -= yi;\n let u = fade(x);\n let v = fade(y);\n let A = (p[X] + Y) & 0xff;\n let B = (p[X + 1] + Y) & 0xff;\n return lerp(v, lerp(u, grad(p[A], x, y),\n grad(p[B], x - 1, y)),\n lerp(u, grad(p[A + 1], x, y - 1),\n grad(p[B + 1], x - 1, y - 1)));\n }\n else {\n let xi = floor(x);\n let X = xi & 0xff;\n x -= xi;\n let u = fade(x);\n return lerp(u, grad(p[X], x),\n grad(p[X + 1], x - 1));\n }\n }\n\n public static Fbm(octave: number, x: number): number;\n public static Fbm(octave: number, x: number, y: number): number;\n public static Fbm(octave: number, x: number, y: number, z: number): number;\n public static Fbm(octave: number, x: number, y?: number, z?: number) {\n let f = 0;\n let w = 0.5;\n let noise = Perlin.Noise;\n if (y !== undefined && z !== undefined) {\n for (let i = 0; i < octave; i++) {\n f += w * noise(x, y, z);\n x *= 2.0;\n y *= 2.0;\n z *= 2.0;\n w *= 0.5;\n }\n }\n else if (y !== undefined) {\n for (let i = 0; i < octave; i++) {\n f += w * noise(x, y);\n x *= 2.0;\n y *= 2.0;\n w *= 0.5;\n }\n }\n else {\n for (let i = 0; i < octave; i++) {\n f += w * noise(x);\n x *= 2.0;\n w *= 0.5;\n }\n }\n return f;\n }\n\n private static _Fade(t: number) {\n return t * t * t * (t * (t * 6 - 15) + 10);\n }\n\n private static _Lerp(t: number, a: number, b: number) {\n return a + t * (b - a);\n }\n\n private static _Grad(hash: number, x: number): number;\n private static _Grad(hash: number, x: number, y: number): number;\n private static _Grad(hash: number, x: number, y: number, z: number): number\n private static _Grad(hash: number, x: number, y?: number, z?: number) {\n if (y !== undefined && z !== undefined) {\n let h = hash & 15; // CONVERT LO 4 BITS OF HASH CODE\n let u = h < 8 ? x : y, // INTO 12 GRADIENT DIRECTIONS.\n v = h < 4 ? y : (h == 12 || h == 14 ? x : z);\n return ((h & 1) == 0 ? u : -u) + ((h & 2) == 0 ? v : -v);\n }\n else if (y !== undefined) {\n return ((hash & 1) == 0 ? x : -x) + ((hash & 2) == 0 ? y : -y);\n }\n else {\n return (hash & 1) == 0 ? x : -x;\n }\n }\n\n private static _Permutation = [\n 151, 160, 137, 91, 90, 15,\n 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36, 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23,\n 190, 6, 148, 247, 120, 234, 75, 0, 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33,\n 88, 237, 149, 56, 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166,\n 77, 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46, 245, 40, 244,\n 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187, 208, 89, 18, 169, 200, 196,\n 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173, 186, 3, 64, 52, 217, 226, 250, 124, 123,\n 5, 202, 38, 147, 118, 126, 255, 82, 85, 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42,\n 223, 183, 170, 213, 119, 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9,\n 129, 22, 39, 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228,\n 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249, 14, 239, 107,\n 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121, 50, 45, 127, 4, 150, 254,\n 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141, 128, 195, 78, 66, 215, 61, 156, 180,\n 151\n ]\n}\n","export type EasingFunction = (amount: number) => number\n\nexport type EasingFunctionGroup = {\n\tIn: EasingFunction\n\tOut: EasingFunction\n\tInOut: EasingFunction\n}\n\n/**\n * The Ease class provides a collection of easing functions for use with tween.js.\n */\n\nexport const Easing = Object.freeze({\n\tLinear: Object.freeze<EasingFunctionGroup & { None: EasingFunction }>({\n\t\tNone(amount: number): number {\n\t\t\treturn amount\n\t\t},\n\t\tIn(amount: number): number {\n\t\t\treturn amount\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\treturn amount\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\treturn amount\n\t\t},\n\t}),\n\n\tQuadratic: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\treturn amount * amount\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\treturn amount * (2 - amount)\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\tif ((amount *= 2) < 1) {\n\t\t\t\treturn 0.5 * amount * amount\n\t\t\t}\n\n\t\t\treturn -0.5 * (--amount * (amount - 2) - 1)\n\t\t},\n\t}),\n\n\tCubic: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\treturn amount * amount * amount\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\treturn --amount * amount * amount + 1\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\tif ((amount *= 2) < 1) {\n\t\t\t\treturn 0.5 * amount * amount * amount\n\t\t\t}\n\t\t\treturn 0.5 * ((amount -= 2) * amount * amount + 2)\n\t\t},\n\t}),\n\n\tQuartic: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\treturn amount * amount * amount * amount\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\treturn 1 - --amount * amount * amount * amount\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\tif ((amount *= 2) < 1) {\n\t\t\t\treturn 0.5 * amount * amount * amount * amount\n\t\t\t}\n\n\t\t\treturn -0.5 * ((amount -= 2) * amount * amount * amount - 2)\n\t\t},\n\t}),\n\n\tQuintic: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\treturn amount * amount * amount * amount * amount\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\treturn --amount * amount * amount * amount * amount + 1\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\tif ((amount *= 2) < 1) {\n\t\t\t\treturn 0.5 * amount * amount * amount * amount * amount\n\t\t\t}\n\n\t\t\treturn 0.5 * ((amount -= 2) * amount * amount * amount * amount + 2)\n\t\t},\n\t}),\n\n\tSinusoidal: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\treturn 1 - Math.sin(((1.0 - amount) * Math.PI) / 2)\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\treturn Math.sin((amount * Math.PI) / 2)\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\treturn 0.5 * (1 - Math.sin(Math.PI * (0.5 - amount)))\n\t\t},\n\t}),\n\n\tExponential: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\treturn amount === 0 ? 0 : Math.pow(1024, amount - 1)\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\treturn amount === 1 ? 1 : 1 - Math.pow(2, -10 * amount)\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\tif (amount === 0) {\n\t\t\t\treturn 0\n\t\t\t}\n\n\t\t\tif (amount === 1) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\tif ((amount *= 2) < 1) {\n\t\t\t\treturn 0.5 * Math.pow(1024, amount - 1)\n\t\t\t}\n\n\t\t\treturn 0.5 * (-Math.pow(2, -10 * (amount - 1)) + 2)\n\t\t},\n\t}),\n\n\tCircular: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\treturn 1 - Math.sqrt(1 - amount * amount)\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\treturn Math.sqrt(1 - --amount * amount)\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\tif ((amount *= 2) < 1) {\n\t\t\t\treturn -0.5 * (Math.sqrt(1 - amount * amount) - 1)\n\t\t\t}\n\t\t\treturn 0.5 * (Math.sqrt(1 - (amount -= 2) * amount) + 1)\n\t\t},\n\t}),\n\n\tElastic: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\tif (amount === 0) {\n\t\t\t\treturn 0\n\t\t\t}\n\n\t\t\tif (amount === 1) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\treturn -Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI)\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\tif (amount === 0) {\n\t\t\t\treturn 0\n\t\t\t}\n\n\t\t\tif (amount === 1) {\n\t\t\t\treturn 1\n\t\t\t}\n\t\t\treturn Math.pow(2, -10 * amount) * Math.sin((amount - 0.1) * 5 * Math.PI) + 1\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\tif (amount === 0) {\n\t\t\t\treturn 0\n\t\t\t}\n\n\t\t\tif (amount === 1) {\n\t\t\t\treturn 1\n\t\t\t}\n\n\t\t\tamount *= 2\n\n\t\t\tif (amount < 1) {\n\t\t\t\treturn -0.5 * Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI)\n\t\t\t}\n\n\t\t\treturn 0.5 * Math.pow(2, -10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI) + 1\n\t\t},\n\t}),\n\n\tBack: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\tconst s = 1.70158\n\t\t\treturn amount === 1 ? 1 : amount * amount * ((s + 1) * amount - s)\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\tconst s = 1.70158\n\t\t\treturn amount === 0 ? 0 : --amount * amount * ((s + 1) * amount + s) + 1\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\tconst s = 1.70158 * 1.525\n\t\t\tif ((amount *= 2) < 1) {\n\t\t\t\treturn 0.5 * (amount * amount * ((s + 1) * amount - s))\n\t\t\t}\n\t\t\treturn 0.5 * ((amount -= 2) * amount * ((s + 1) * amount + s) + 2)\n\t\t},\n\t}),\n\n\tBounce: Object.freeze(<EasingFunctionGroup>{\n\t\tIn(amount: number): number {\n\t\t\treturn 1 - Easing.Bounce.Out(1 - amount)\n\t\t},\n\t\tOut(amount: number): number {\n\t\t\tif (amount < 1 / 2.75) {\n\t\t\t\treturn 7.5625 * amount * amount\n\t\t\t} else if (amount < 2 / 2.75) {\n\t\t\t\treturn 7.5625 * (amount -= 1.5 / 2.75) * amount + 0.75\n\t\t\t} else if (amount < 2.5 / 2.75) {\n\t\t\t\treturn 7.5625 * (amount -= 2.25 / 2.75) * amount + 0.9375\n\t\t\t} else {\n\t\t\t\treturn 7.5625 * (amount -= 2.625 / 2.75) * amount + 0.984375\n\t\t\t}\n\t\t},\n\t\tInOut(amount: number): number {\n\t\t\tif (amount < 0.5) {\n\t\t\t\treturn Easing.Bounce.In(amount * 2) * 0.5\n\t\t\t}\n\t\t\treturn Easing.Bounce.Out(amount * 2 - 1) * 0.5 + 0.5\n\t\t},\n\t}),\n\n\tgeneratePow(power = 4): EasingFunctionGroup {\n\t\tpower = power < Number.EPSILON ? Number.EPSILON : power\n\t\tpower = power > 10000 ? 10000 : power\n\t\treturn {\n\t\t\tIn(amount: number): number {\n\t\t\t\treturn amount ** power\n\t\t\t},\n\t\t\tOut(amount: number): number {\n\t\t\t\treturn 1 - (1 - amount) ** power\n\t\t\t},\n\t\t\tInOut(amount: number): number {\n\t\t\t\tif (amount < 0.5) {\n\t\t\t\t\treturn (amount * 2) ** power / 2\n\t\t\t\t}\n\t\t\t\treturn (1 - (2 - amount * 2) ** power) / 2 + 0.5\n\t\t\t},\n\t\t}\n\t},\n})","\nclass ClassProperties {\n private _properties: Object = Object.create(null);\n constructor(public clsName: string) { }\n property(propertyKey: string, options: Object = {}) {\n this._properties[propertyKey] = options;\n return this;\n }\n applyProperties(target: object) {\n Object.assign(target, this._properties);\n return target;\n }\n}\n\nexport class PropertyManager {\n static _classMap = new Map<String, ClassProperties>();\n static _propertyMap = new Map<Object, Object>();\n\n static _hasProperties(constructor: Function) {\n return PropertyManager._propertyMap.has(constructor);\n }\n static _getProperties(constructor: Function, autoAdd: boolean = true) {\n let props = PropertyManager._propertyMap.get(constructor);\n if (props === undefined && autoAdd) {\n props = Object.create(null);\n PropertyManager._propertyMap.set(constructor, props);\n }\n return props;\n }\n static _getMergedProperties(constructor: Function) {\n let merged = null;\n while (constructor !== Object.constructor.prototype) {\n let props = PropertyManager._getProperties(constructor, false);\n if (props) {\n if (merged === null) {\n merged = Object.create(null);\n }\n Object.assign(merged, props);\n }\n constructor = Object.getPrototypeOf(constructor);\n }\n return merged;\n }\n static _getClassProperties(clsName: string, autoAdd: boolean = true) {\n let props = PropertyManager._classMap.get(clsName);\n if (props === undefined && autoAdd) {\n props = new ClassProperties(clsName);\n PropertyManager._classMap.set(clsName, props);\n }\n return props;\n }\n static _applyClassProperties(clsName: string, constructor: Function) {\n let cls = PropertyManager._getClassProperties(clsName, false);\n if (cls) {\n return cls.applyProperties(PropertyManager._getProperties(constructor));\n }\n else {\n return PropertyManager._getProperties(constructor, false);\n }\n }\n}\n\nexport interface IPropertyOptions {\n dir?: string;\n parent?: string;\n max?: number;\n min?: number;\n step?: number;\n value?: any;\n name?: string;\n}\n\ntype PropertyDecorator = (target: Object, propertyKey: string) => void;\nexport function property(options?: IPropertyOptions): PropertyDecorator;\nexport function property(...args: Parameters<PropertyDecorator>): void;\nexport function property(target?: Object, propertyKey?: string) {\n let options: IPropertyOptions | Function | string = null;\n function normalized(target: Object, propertyKey: string) {\n PropertyManager._getProperties(target.constructor)[propertyKey] = options;\n }\n if (target === undefined) { //@property()\n return property({});\n }\n else if (typeof propertyKey === \"undefined\") { // @property(options)\n options = target;\n return normalized;\n }\n else { // @property\n options = {};\n normalized(target, propertyKey);\n }\n}","import { Easing } from \"../math\";\nimport { property } from \"../PropertyManager\";\n\nexport const CinestationBlendStyle = {\n Linear: Easing.Linear.None,\n QuadraticIn: Easing.Quadratic.In,\n QuadraticOut: Easing.Quadratic.Out,\n QuadraticInOut: Easing.Quadratic.InOut,\n}\n\nexport type CinestationBlendStyle = typeof CinestationBlendStyle[keyof typeof CinestationBlendStyle];\n\nexport class CinestationBlendDefinition {\n\n @property({ value: CinestationBlendStyle })\n style: CinestationBlendStyle = CinestationBlendStyle.QuadraticInOut;\n\n @property\n time: number = 4;\n\n}","import { MathUtils } from \"three\";\n\nexport class ObjectInstance {\n static _instanceCount: number = 0;\n \n readonly instanceId: number = ObjectInstance._instanceCount++;\n readonly uuid: string = MathUtils.generateUUID();\n name: string = \"\";\n type: string = \"ObjectInstance\";\n}","import { Object3D } from \"three\";\nimport { Viewer } from \"./Viewer\";\nimport { ComponentManager } from \"./ComponentManager\";\nimport { ObjectInstance } from \"./ObjectInstance\";\n\nexport class Component<T extends Object3D = Object3D> extends ObjectInstance {\n private _enabled: boolean = true;\n\n node: T;\n viewer: Viewer;\n manager: ComponentManager;\n isComponent: boolean = true;\n type: string = \"Component\";\n\n onLoad?(): void;\n onEnable?(): void;\n onDisable?(): void;\n onDestroy?(): void;\n start?(): void;\n update?(dt: number): void;\n lastUpdate?(dt: number): void;\n render?(dt: number): void;\n resize?(width: number, height: number): void;\n\n flags: {\n Destroyed?: boolean;\n OnLoadCalled?: boolean;\n OnEnableCalled?: boolean;\n StartCalled?: boolean;\n Deactivating?: boolean;\n IsStartCalled?: boolean;\n } = {};\n\n get enabled() {\n return this._enabled;\n }\n set enabled(v: boolean) {\n if (this._enabled !== v) {\n this._enabled = v;\n this.manager.componentScheduler.enableComponent(this, v);\n }\n }\n\n protected _onPreDestroy() {\n this.unscheduleAll();\n this.manager.removeComponent(this.node, this);\n\n if (this._enabled) {\n this.manager.componentScheduler.enableComponent(this, false);\n }\n if (this.onDestroy && this.flags.OnLoadCalled) {\n this.onDestroy();\n }\n }\n\n schedule(callback: Function, interval: number, repeat: number = -1) {\n this.manager.scheduler.schedule(this, callback, interval, repeat);\n }\n\n unshedule(callback: Function) {\n this.manager.scheduler.unshedule(this, callback);\n }\n\n unscheduleAll() {\n this.manager.scheduler.unscheduleAll(this);\n }\n\n destroy() {\n if (this.flags.Destroyed) {\n return false;\n }\n this.destroyImmediate();\n return true;\n }\n\n destroyImmediate() {\n if (this._onPreDestroy) {\n this._onPreDestroy();\n }\n this.flags.Destroyed = true;\n }\n\n}","import { MathUtils, PerspectiveCamera } from \"three\";\nimport { CinestationBlendDefinition } from \"./CinestationBlendDefinition\";\nimport { VirtualCamera } from \"./VirtualCamera\";\nimport { Component } from \"../Component\";\nimport { property } from \"../PropertyManager\";\n\nconst { clamp, lerp } = MathUtils;\n\nexport class CinestationBrain extends Component<PerspectiveCamera> {\n private _vcam: VirtualCamera | null = null;\n private _vcamSolo: VirtualCamera | null = null;\n private _vcams: VirtualCamera[] = [];\n private _lerpTime: number = 4;\n\n @property\n brainBlend: CinestationBlendDefinition = new CinestationBlendDefinition();\n\n get vcam() {\n return this._vcam;\n }\n\n get vcams() {\n return this._vcams\n }\n\n lastUpdate(dt: number) {\n let vcam = this.getActiveCamera();\n if (vcam == null) return;\n\n this._vcams.forEach(v => {\n if (!v.locked) {\n v.enabled = v === vcam\n }\n });\n\n if (this._lerpTime < this.brainBlend.time) {\n this._lerpTime += dt;\n let t = clamp(this._lerpTime / this.brainBlend.time, 0, 1);\n this._lerpToMainCamera(vcam, this.brainBlend.style(t));\n }\n else {\n this._lerpToMainCamera(vcam, 1);\n }\n }\n\n activeCamera(vcam: VirtualCamera, time: number = 4) {\n if (this._vcamSolo !== vcam) {\n this._vcamSolo = vcam;\n this._lerpTime = 0;\n this.brainBlend.time = time;\n }\n }\n\n addCamera(vcam: VirtualCamera) {\n let index = this._vcams.indexOf(vcam);\n if (index === -1) {\n this._vcams.push(vcam);\n }\n }\n\n removeCamera(vcam: VirtualCamera) {\n let index = this._vcams.indexOf(vcam);\n if (index !== -1) {\n this._vcams.splice(index, 1);\n }\n }\n\n getActiveCamera() {\n return this._vcamSolo || this._vcams.filter(v => v.enabled || v.locked).sort((a, b) => b.priority - a.priority)[0];\n }\n\n private _lerpToMainCamera(vcam: VirtualCamera, t: number) {\n const from = this.node, to = vcam;\n const { lens, finalPosition, finalRotation } = to;\n\n const isLensChanged = from.fov != lens.fov || from.near != lens.near || from.far != lens.far;\n\n from.position.lerp(finalPosition, t);\n from.quaternion.slerp(finalRotation, t);\n from.fov = lerp(from.fov, lens.fov, t);\n from.near = lens.near;\n from.far = lens.far;\n\n if (isLensChanged) {\n from.updateProjectionMatrix();\n }\n }\n}","import { Object3D, Quaternion, Vector3 } from \"three\";\nimport { Component } from \"../Component\";\nimport { CinestationBrain } from \"./CinestationBrain\";\nimport { property } from \"../PropertyManager\";\n\nclass Lens {\n @property\n fov: number = 45;\n @property\n near: number = 0.1;\n @property\n far: number = 1000;\n}\n\nexport class VirtualCamera extends Component<Object3D & { isCamera?: boolean }> {\n private _finalPosition: Vector3 = new Vector3();\n private _finalRotation: Quaternion = new Quaternion();\n\n locked: boolean = false;\n priority: number = 10;\n\n @property\n lens: Lens = new Lens();\n\n correctPosition: Vector3 = new Vector3();\n correctRotation: Quaternion = new Quaternion();\n brain!: CinestationBrain;\n\n get finalPosition() {\n return this._finalPosition.copy(this.node.position).add(this.correctPosition);\n }\n\n get finalRotation() {\n return this._finalRotation.copy(this.node.quaternion).multiply(this.correctRotation);\n }\n\n onLoad() {\n const camera = this.viewer.camera;\n\n this.node.isCamera = true;\n this.lens.fov = camera.fov;\n this.lens.near = camera.near;\n this.lens.far = camera.far;\n\n this.brain = this.manager.getComponent(camera, CinestationBrain, true);\n this.brain.addCamera(this);\n }\n\n onDestroy() {\n this.brain.removeCamera(this);\n }\n}","import { Camera, Intersection, Object3D, Raycaster, Vector2 } from \"three\";\n\nconst PressState = {\n NONE: 1 << 0,\n SELECTED: 1 << 1,\n IN: 1 << 2,\n}\ntype PressState = typeof PressState[keyof typeof PressState];\n\nexport interface ConnTarget {\n node: Object3D;\n emit(name: string, e: { intersects: Intersection[] }): void;\n has(name: string): boolean;\n}\n\nexport class Pressability {\n private _raycaster: Raycaster = new Raycaster();\n private _connectors: { target: ConnTarget, state: number }[] = [];\n\n public connect(target: ConnTarget) {\n let connector = this._connectors.find(v => v.target === target);\n if (connector === undefined) {\n connector = { target, state: PressState.NONE };\n this._connectors.push(connector);\n }\n }\n\n public disconnect(target: ConnTarget) {\n let index = this._connectors.findIndex(v => v.target === target);\n if (index !== -1) {\n this._connectors.splice(index, 1);\n }\n }\n\n public pointerDown(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"click\") || conn.target.has(\"pointerdown\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n conn.state |= PressState.SELECTED;\n conn.target.emit(\"pointerdown\", { intersects });\n }\n }\n }\n }\n\n public pointerUp(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"click\") || conn.target.has(\"pointerup\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n if (conn.state & PressState.SELECTED) {\n conn.state &= ~PressState.SELECTED;\n conn.target.emit(\"click\", { intersects });\n }\n conn.target.emit(\"pointerup\", { intersects });\n }\n }\n }\n }\n\n public pointerMove(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"pointerover\") || conn.target.has(\"pointerout\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n if (!(conn.state & PressState.IN)) {\n conn.state |= PressState.IN;\n conn.target.emit(\"pointerover\", { intersects });\n }\n }\n else {\n if (conn.state & PressState.IN) {\n conn.state &= ~PressState.IN;\n conn.target.emit(\"pointerout\", { intersects });\n }\n }\n }\n }\n }\n\n}\n","import { Vector2 } from \"three\";\nimport { ConnTarget, Pressability } from \"./Pressability\";\nimport { Viewer } from \"./Viewer\";\n\ninterface InputTarget {\n on?(event: string, cb: (...args: any[]) => void, target: Object, once?: boolean);\n off?(event: string, cb: (...args: any[]) => void, target: Object);\n removeEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n addEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n}\n\nexport class DeviceInput {\n static readonly CLICK = \"click\";\n static readonly MOUSE_WHEEL = \"mousewheel\";\n static readonly TOUCH_START = \"touchstart\";\n static readonly TOUCH_END = \"touchend\";\n static readonly TOUCH_MOVE = \"touchmove\";\n static readonly POINTER_DOWN = \"pointerdown\";\n static readonly POINTER_UP = \"pointerup\";\n static readonly POINTER_MOVE = \"pointermove\";\n static readonly POINTER_OVER = \"pointerover\";\n static readonly POINTER_OUT = \"pointerout\";\n static readonly KEYDOWN = \"keydown\";\n static readonly KEYPRESS = \"keypress\";\n static readonly KEYUP = \"keyup\";\n\n private _listeners: { target: InputTarget, type: string, callback: any }[] = [];\n private _mouseWheel: number = 0;\n private _touches: { id: number, position: Vector2 }[] = [];\n private _touchCount: number = 0;\n private _pointerButton: number = -1;\n private _pointerPosition: Vector2 = new Vector2();\n private _pointer: Vector2 = new Vector2();\n private _keys: { [k: string]: boolean } = {};\n private _pressability: Pressability = new Pressability();\n\n get pointerButton() {\n return this._pointerButton;\n }\n\n get pointer() {\n return this._pointer;\n }\n\n get pointerPosition() {\n return this._pointerPosition;\n }\n\n get mouseWheel() {\n return this._mouseWheel;\n }\n\n get touchCount() {\n return this._touchCount;\n }\n\n get touches() {\n return this._touches;\n }\n\n get keys() {\n return this._keys;\n }\n\n constructor(public viewer: Viewer) { }\n\n addEventListeners() {\n const { canvas } = this.viewer;\n canvas.style.touchAction = 'none';\n\n this._addEventListener(canvas, 'contextmenu', e => e.preventDefault());\n this._addEventListener(canvas, \"pointerdown\", e => this._onPointerDown(e), { passive: false });\n this._addEventListener(canvas, \"pointerup\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(canvas, \"pointercancel\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(canvas, \"pointerout\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(canvas, \"pointermove\", e => this._onPointerMove(e), { passive: true });\n this._addEventListener(canvas, \"wheel\", e => this._onMouseWheel(e), { passive: false });\n this._addEventListener(canvas, \"touchstart\", e => this._onTouchStart(e), { passive: true });\n this._addEventListener(canvas, \"touchend\", e => this._onTouchEnd(e), { passive: true });\n this._addEventListener(canvas, \"touchmove\", e => this._onTouchMove(e), { passive: true });\n \n //监听了pointer事件之后,key事件失效,改成window解决\n this._addEventListener(window, \"keydown\", e => this._onKeyDown(e), { passive: false });\n this._addEventListener(window, \"keypress\", e => this._onKeyPress(e), { passive: false });\n this._addEventListener(window, \"keyup\", e => this._onKeyUp(e), { passive: false });\n this._addEventListener(window, \"resize\", e => this._onResize(e), { passive: false });\n }\n\n removeAllListeners() {\n for (let { target, type, callback } of this._listeners) {\n if (target.removeEventListener) target.removeEventListener(type, callback);\n else if (target.off) target.off(type, callback, target);\n }\n this._listeners = [];\n }\n\n connect(target: ConnTarget, event: string) {\n switch (event) {\n case DeviceInput.CLICK:\n case DeviceInput.POINTER_DOWN:\n case DeviceInput.POINTER_UP:\n case DeviceInput.POINTER_OVER:\n case DeviceInput.POINTER_OUT:\n this._pressability.connect(target);\n break;\n }\n }\n\n disconnect(target: ConnTarget) {\n this._pressability.disconnect(target);\n }\n\n private _addEventListener<K extends keyof HTMLElementEventMap>(\n target: InputTarget,\n type: K | string,\n callback: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ) {\n if (target.addEventListener) target.addEventListener(type, callback, options);\n else if (target.on) target.on(type, callback, target);\n this._listeners.push({ target, type, callback });\n }\n\n private _onResize(e: UIEvent) {\n this.viewer.rotate();\n this.viewer.resize();\n }\n\n private _remapPointer(e: PointerEvent) {\n const width = this.viewer.width;\n return this.viewer.rootRotated ? {\n button: e.button,\n buttons: e.buttons,\n clientX: e.clientY,\n clientY: width - e.clientX,\n offsetX: e.offsetY,\n offsetY: width - e.offsetX,\n pageX: e.pageY,\n pageY: width - e.pageX,\n screenX: e.screenY,\n screenY: width - e.screenX,\n movementX: e.movementY,\n movementY: e.movementX,\n } as any : e;\n }\n\n private _remapTouch(e: TouchEvent) {\n const width = this.viewer.width;\n return this.viewer.rootRotated ? {\n touches: Array.from(e.touches).map(v => {\n return {\n identifier: v.identifier,\n clientX: v.clientY,\n clientY: width - v.clientX,\n pageX: v.pageY,\n pageY: width - v.pageX,\n screenX: v.screenY,\n screenY: width - v.screenX,\n }\n })\n } as any : e;\n }\n\n private _computePointer(e: PointerEvent) {\n this._pointer.x = e.offsetX / this.viewer.width * 2 - 1;\n this._pointer.y = 1 - e.offsetY / this.viewer.height * 2;\n this._pointerPosition.set(e.offsetX, e.offsetY);\n }\n\n private _onPointerDown(e: PointerEvent) {\n e.preventDefault();\n e = this._remapPointer(e);\n this._pointerButton = e.button;\n this._computePointer(e);\n this._pressability.pointerDown(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_DOWN, e);\n }\n\n private _onPointerUp(e: PointerEvent) {\n e.preventDefault();\n e = this._remapPointer(e);\n this._pointerButton = -1;\n this._computePointer(e);\n this._pressability.pointerUp(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_UP, e);\n }\n\n private _onPointerMove(e: PointerEvent) {\n e = this._remapPointer(e);\n this._computePointer(e);\n this._pressability.pointerMove(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_MOVE, e);\n }\n\n private _onMouseWheel(e: WheelEvent & { wheelDelta?: number }) {\n e.preventDefault();\n this._mouseWheel = e.deltaY || e.wheelDelta;\n this.viewer.emit(DeviceInput.MOUSE_WHEEL, e);\n }\n\n private _onTouchStart(e: TouchEvent) {\n e = this._remapTouch(e);\n this.viewer.emit(DeviceInput.TOUCH_START, e);\n }\n\n private _onTouchEnd(e: TouchEvent) {\n e = this._remapTouch(e);\n this.viewer.emit(DeviceInput.TOUCH_END, e);\n }\n\n private _onTouchMove(e: TouchEvent) {\n e = this._remapTouch(e);\n let touches = e.touches;\n let touchesTo = this._touches;\n for (let i = touches.length; i--;) {\n if (touchesTo[i] == undefined) {\n touchesTo[i] = { id: -1, position: new Vector2() };\n }\n const touch = touches[i];\n touchesTo[i].id = touch.identifier;\n touchesTo[i].position.set(touch.pageX, touch.pageY);\n }\n this._touchCount = touches.length;\n this.viewer.emit(DeviceInput.TOUCH_MOVE, e);\n }\n\n private _onKeyDown(e: KeyboardEvent) {\n this._keys[e.key] = true;\n this.viewer.emit(DeviceInput.KEYDOWN, e);\n }\n\n private _onKeyPress(e: KeyboardEvent) {\n this._keys[e.key] = true;\n this.viewer.emit(DeviceInput.KEYPRESS, e);\n }\n\n private _onKeyUp(e: KeyboardEvent) {\n this._keys[e.key] = false;\n this.viewer.emit(DeviceInput.KEYUP, e);\n }\n}","const isSSR = typeof window === 'undefined';\n\nexport interface IDeviceResult {\n version: string;\n}\n\nexport interface IBrowserResult {\n name: string;\n version: string;\n}\n\nexport class DetectUA {\n public userAgent: string;\n\n // Internal variables, prevents multiple lookups\n private isAndroidDevice: boolean;\n private iOSDevice: string;\n\n /**\n * Detect a users browser, browser version and whether it is a mobile-, tablet- or desktop device\n *\n * @param forceUserAgent Force a user agent string (useful for testing)\n */\n constructor(forceUserAgent?: string) {\n this.userAgent = forceUserAgent\n ? forceUserAgent\n : !isSSR && window.navigator\n ? window.navigator.userAgent\n : '';\n\n this.isAndroidDevice = !/like android/i.test(this.userAgent) && /android/i.test(this.userAgent);\n this.iOSDevice = this.match(1, /(iphone|ipod|ipad)/i).toLowerCase();\n\n // Workaround for ipadOS, force detection as tablet\n // SEE: https://github.com/lancedikson/bowser/issues/329\n // SEE: https://stackoverflow.com/questions/58019463/how-to-detect-device-name-in-safari-on-ios-13-while-it-doesnt-show-the-correct\n if (\n !isSSR &&\n navigator.platform === 'MacIntel' &&\n navigator.maxTouchPoints > 2 &&\n !(window as any).MSStream\n ) {\n this.iOSDevice = 'ipad';\n }\n }\n\n /**\n * Match entry based on position found in the user-agent string\n *\n * @param pattern regular expression pattern\n */\n private match(position: number, pattern: RegExp): string {\n const match = this.userAgent.match(pattern);\n\n return (match && match.length > 1 && match[position]) || '';\n }\n\n /**\n * Returns if the device is a mobile device\n */\n get isMobile(): boolean {\n return (\n // Default mobile\n !this.isTablet &&\n (/[^-]mobi/i.test(this.userAgent) ||\n // iPhone / iPod\n this.iOSDevice === 'iphone' ||\n this.iOSDevice === 'ipod' ||\n // Android\n this.isAndroidDevice ||\n // Nexus mobile\n /nexus\\s*[0-6]\\s*/i.test(this.userAgent))\n );\n }\n\n /**\n * Returns if the device is a tablet device\n */\n get isTablet(): boolean {\n return (\n // Default tablet\n (/tablet/i.test(this.userAgent) && !/tablet pc/i.test(this.userAgent)) ||\n // iPad\n this.iOSDevice === 'ipad' ||\n // Android\n (this.isAndroidDevice && !/[^-]mobi/i.test(this.userAgent)) ||\n // Nexus tablet\n (!/nexus\\s*[0-6]\\s*/i.test(this.userAgent) && /nexus\\s*[0-9]+/i.test(this.userAgent))\n );\n }\n\n /**\n * Returns if the device is a desktop device\n */\n get isDesktop(): boolean {\n return !this.isMobile && !this.isTablet;\n }\n\n /**\n * Returns if the device is running MacOS (and if so which version)\n *\n * '5' => Leopard'\n * '6' => Snow Leopard'\n * '7' => Lion'\n * '8' => Mountain Lion'\n * '9' => Mavericks'\n * '10' => Yosemite'\n * '11' => El Capitan'\n * '12' => Sierra'\n * '13' => High Sierra'\n * '14' => Mojave'\n * '15' => Catalina'\n */\n get isMacOS(): IDeviceResult | boolean {\n return (\n /macintosh/i.test(this.userAgent) && {\n version: this.match(1, /mac os x (\\d+(\\.?_?\\d+)+)/i)\n .replace(/[_\\s]/g, '.')\n .split('.')\n .map((versionNumber: string): string => versionNumber)[1],\n }\n );\n }\n\n /**\n * Returns if the device is running Windows (and if so which version)\n *\n * 'NT' => 'NT'\n * 'XP' => 'XP'\n * 'NT 5.0' => '2000'\n * 'NT 5.1' => 'XP'\n * 'NT 5.2' => '2003'\n * 'NT 6.0' => 'Vista'\n * 'NT 6.1' => '7'\n * 'NT 6.2' => '8'\n * 'NT 6.3' => '8.1'\n * 'NT 10.0' => '10'\n */\n get isWindows(): IDeviceResult | boolean {\n return (\n /windows /i.test(this.userAgent) && {\n version: this.match(1, /Windows ((NT|XP)( \\d\\d?.\\d)?)/i),\n }\n );\n }\n\n /**\n * Returns if the device is an iOS device (and if so which version)\n */\n get isiOS(): IDeviceResult | boolean {\n return (\n !!this.iOSDevice && {\n version:\n this.match(1, /os (\\d+([_\\s]\\d+)*) like mac os x/i).replace(/[_\\s]/g, '.') ||\n this.match(1, /version\\/(\\d+(\\.\\d+)?)/i),\n }\n );\n }\n\n /**\n * Returns if the device is an Android device (and if so which version)\n */\n get isAndroid(): IDeviceResult | boolean {\n return (\n this.isAndroidDevice && {\n version: this.match(1, /android[ \\/-](\\d+(\\.\\d+)*)/i),\n }\n );\n }\n\n /**\n * Returns the browser name and version\n */\n get browser(): IBrowserResult | boolean {\n const versionIdentifier = this.match(1, /version\\/(\\d+(\\.\\d+)?)/i);\n\n if (/opera/i.test(this.userAgent)) {\n // Opera\n return {\n name: 'Opera',\n version: versionIdentifier || this.match(1, /(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/opr\\/|opios/i.test(this.userAgent)) {\n // Opera\n return {\n name: 'Opera',\n version: this.match(1, /(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i) || versionIdentifier,\n };\n } else if (/SamsungBrowser/i.test(this.userAgent)) {\n // Samsung Browser\n return {\n name: 'Samsung Internet for Android',\n version: versionIdentifier || this.match(1, /(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/yabrowser/i.test(this.userAgent)) {\n // Yandex Browser\n return {\n name: 'Yandex Browser',\n version: versionIdentifier || this.match(1, /(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/ucbrowser/i.test(this.userAgent)) {\n // UC Browser\n return {\n name: 'UC Browser',\n version: this.match(1, /(?:ucbrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/msie|trident/i.test(this.userAgent)) {\n // Internet Explorer\n return {\n name: 'Internet Explorer',\n version: this.match(1, /(?:msie |rv:)(\\d+(\\.\\d+)?)/i),\n };\n } else if (/(edge|edgios|edga|edg)/i.test(this.userAgent)) {\n // Edge\n return {\n name: 'Microsoft Edge',\n version: this.match(2, /(edge|edgios|edga|edg)\\/(\\d+(\\.\\d+)?)/i),\n };\n } else if (/firefox|iceweasel|fxios/i.test(this.userAgent)) {\n // Firefox\n return {\n name: 'Firefox',\n version: this.match(1, /(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/chromium/i.test(this.userAgent)) {\n // Chromium\n return {\n name: 'Chromium',\n version: this.match(1, /(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i) || versionIdentifier,\n };\n } else if (/chrome|crios|crmo/i.test(this.userAgent)) {\n // Chrome\n return {\n name: 'Chrome',\n version: this.match(1, /(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i),\n };\n } else if (/safari|applewebkit/i.test(this.userAgent)) {\n // Safari\n return {\n name: 'Safari',\n version: versionIdentifier,\n };\n } else {\n // Everything else\n return {\n name: this.match(1, /^(.*)\\/(.*) /),\n version: this.match(2, /^(.*)\\/(.*) /),\n };\n }\n }\n}","import { DetectUA } from \"./DetectUA\";\n\nconst isSSR = typeof window === 'undefined';\n\nconst detectUA = new DetectUA();\nconst userAgent = (navigator.userAgent || navigator.vendor).toLowerCase();\nconst browserName = typeof detectUA.browser === \"boolean\" ? \"\" : detectUA.browser.name\n\nexport class SystemInfo {\n static isTablet = detectUA.isTablet;\n static isMobile = detectUA.isMobile || detectUA.isTablet;\n static isDesktop = detectUA.isDesktop;\n static device = SystemInfo.isMobile ? \"mobile\" : \"desktop\";\n static isAndroid = !!detectUA.isAndroid;\n static isIOS = !!detectUA.isiOS;\n static isMacOS = !!detectUA.isMacOS;\n static isWindows = typeof detectUA.isWindows === \"boolean\" ? detectUA.isWindows : detectUA.isWindows.version !== null;\n static isLinux = userAgent.indexOf(\"linux\") != -1;\n static ua = userAgent;\n static isEdge = browserName === \"Microsoft Edge\";\n static isIE = browserName === \"Internet Explorer\";\n static isFirefox = browserName === \"Firefox\";\n static isChrome = browserName === \"Chrome\";\n static isOpera = browserName === \"Opera\";\n static isSafari = browserName === \"Safari\";\n static isSupportMSAA = !userAgent.match(\"version/15.4 \");\n static cpuCoreCount = navigator.hardwareConcurrency || 1;\n static isRetina =!isSSR && window.devicePixelRatio && window.devicePixelRatio >= 1.5;\n static isIFrame = !isSSR && window.self !== window.top;\n}","import { MathUtils, Quaternion, Spherical, Vector2, Vector3 } from \"three\";\nimport { VirtualCamera } from \"./VirtualCamera\";\nimport { DeviceInput } from \"../DeviceInput\";\nimport { SystemInfo } from \"../SystemInfo\";\nimport { property } from \"../PropertyManager\";\nimport { FInterpTo, VInterpTo } from \"../math\";\n\nconst { clamp, degToRad } = MathUtils;\nconst { abs, tan, PI } = Math;\nconst PI2 = PI * 2;\nconst ESP = 0.001;\n\nexport class FreelookVirtualCamera extends VirtualCamera {\n static __loc0 = new Vector2();\n static __loc1 = new Vector2();\n static __center = new Vector2();\n static __preCenter = new Vector2();\n static __panDelta = new Vector2();\n static __panTarget = new Vector2();\n static __rotateDelta = new Vector2();\n static __posDelta = new Vector3();\n static __lookAtOffset = new Vector3();\n static __xAxis = new Vector3();\n static __yAxis = new Vector3();\n static __quat = new Quaternion();\n\n private _button: number = -1;\n private _touchID: number = -1;\n private _preLoc0: Vector2 = new Vector2();\n private _preLoc1: Vector2 = new Vector2();\n private _spherical: Spherical = new Spherical(4, Math.PI / 2);\n private _lookAt: Vector3 = new Vector3();\n private _offset: Vector2 = new Vector2();\n\n private _tempSmoothing: number = 6;\n private _tempRotateSmoothing: number = 8;\n private _targetTheta: number = 0;\n private _targetPhi: number = 0;\n private _targetSpringLength: number = 4;\n private _targetFov: number = this.fov;\n private _targetLookAt: Vector3 = new Vector3();\n private _targetOffset: Vector2 = new Vector2();\n\n @property({ dir: \"set\" })\n forbidX: boolean = false;\n @property({ dir: \"set\" })\n forbidY: boolean = false;\n @property({ dir: \"set\" })\n forbidZ: boolean = false;\n @property({ dir: \"set\" })\n forbidPanX: boolean = false;\n @property({ dir: \"set\" })\n forbidPanY: boolean = false;\n @property({ dir: \"set\" })\n forbitPanOffsetY: boolean = false;\n\n @property({ dir: \"set\", step: 0.01 })\n panSpeed: number = 1;\n @property({ dir: \"set\", step: 0.01 })\n rotateSpeed: number = 1;\n @property({ dir: \"set\", step: 0.01 })\n smoothing: number = 5;\n @property({ dir: \"set\", step: 0.01 })\n rotateSmoothing: number = 8;\n @property({ dir: \"set\", step: 0.01 })\n phiMin: number = ESP;\n @property({ dir: \"set\", step: 0.01 })\n phiMax: number = Math.PI - ESP;\n @property({ dir: \"set\", step: 0.01 })\n thetaMin: number = -Infinity;\n @property({ dir: \"set\", step: 0.01 })\n thetaMax: number = Infinity;\n @property({ dir: \"set\", step: 0.01 })\n distanceMin: number = ESP;\n @property({ dir: \"set\", step: 0.01 })\n distanceMax: number = Infinity;\n\n @property\n get lookAt() {\n return this._lookAt;\n }\n set lookAt(v: Vector3) {\n this._lookAt.copy(v);\n this._targetLookAt.copy(v);\n }\n\n @property\n get offset() {\n return this._offset;\n }\n set offset(v: Vector2) {\n this._offset.copy(v);\n this._targetOffset.copy(v);\n }\n\n @property({ step: 0.01 })\n get springLength() {\n return this._spherical.radius;\n }\n set springLength(v: number) {\n this._spherical.radius = this._targetSpringLength = clamp(v, this.distanceMin, this.distanceMax);\n }\n\n @property({ step: 0.01 })\n get theta() {\n return this._spherical.theta;\n }\n set theta(v: number) {\n this._spherical.theta = this._targetTheta = clamp(v, this.thetaMin, this.thetaMax);\n }\n\n @property({ step: 0.01 })\n get phi() {\n return this._spherical.phi;\n }\n set phi(v: number) {\n this._spherical.phi = this._targetPhi = clamp(v, this.phiMin, this.phiMax);\n }\n\n @property\n get fov() {\n return this.lens.fov;\n }\n set fov(v: number) {\n this.lens.fov = this._targetFov = v;\n }\n\n onEnable() {\n this.viewer.on(DeviceInput.POINTER_DOWN, this._onPointerDown, this);\n this.viewer.on(DeviceInput.POINTER_UP, this._onPointerUp, this);\n this.viewer.on(DeviceInput.POINTER_MOVE, this._onPointerMove, this);\n this.viewer.on(DeviceInput.MOUSE_WHEEL, this._onMouseWheel, this);\n this.viewer.on(DeviceInput.TOUCH_START, this._onTouchStart, this);\n this.viewer.on(DeviceInput.TOUCH_MOVE, this._onTouchMove, this);\n this.reset();\n }\n\n onDisable() {\n this.viewer.targetOff(this);\n }\n\n reset() {\n this._button = -1;\n this._touchID = -1;\n\n this._targetTheta = this.theta;\n this._targetPhi = this.phi;\n this._targetSpringLength = this.springLength;\n this._targetLookAt.copy(this._lookAt);\n this._targetFov = this.lens.fov;\n }\n\n private _onPointerDown(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n this._button = e.button;\n this._preLoc0.set(e.pageX, e.pageY);\n }\n\n private _onPointerUp(_: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n this._button = -1;\n }\n\n private _onPointerMove(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n const { __loc0, __panDelta, __rotateDelta } = FreelookVirtualCamera;\n __loc0.set(e.pageX, e.pageY);\n\n switch (this._button) {\n case 0:\n this._setTargetRotation(this._calculateRotatelDelta(__rotateDelta, this._preLoc0, __loc0));\n break;\n case 1:\n case 2:\n this._setTargetLookAt(this._calculatePanDelta(__panDelta, this._preLoc0, __loc0));\n break;\n }\n\n this._preLoc0.copy(__loc0);\n }\n\n private _onMouseWheel(e: WheelEvent) {\n if (e.deltaY > 0) {\n this._targetSpringLength *= this._calculateDistanceScale(1 / 0.85);\n }\n else if (e.deltaY < 0) {\n this._targetSpringLength *= this._calculateDistanceScale(0.85);\n }\n this._setTargetSpringLength(this._targetSpringLength);\n }\n\n private _onTouchStart(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n let touches = e.touches;\n if (touches.length > 1) {\n this._preLoc0.set(touches[0].pageX, touches[0].pageY);\n this._preLoc1.set(touches[1].pageX, touches[1].pageY);\n }\n else if (touches.length > 0) {\n this._touchID = touches[0].identifier;\n this._preLoc0.set(touches[0].pageX, touches[0].pageY);\n }\n }\n\n private _onTouchMove(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n const { __loc0, __loc1, __panDelta, __rotateDelta, __preCenter, __center } = FreelookVirtualCamera;\n\n let touches = e.touches;\n if (touches.length > 1) {\n __loc0.set(touches[0].pageX, touches[0].pageY);\n __loc1.set(touches[1].pageX, touches[1].pageY);\n\n if (this.lookAt) {\n this._targetSpringLength *= this._calculateDistanceScale(this._preLoc0.distanceTo(this._preLoc1) / __loc0.distanceTo(__loc1))\n this._setTargetSpringLength(this._targetSpringLength);\n }\n\n __preCenter.copy(this._preLoc0).add(this._preLoc1).multiplyScalar(0.5);\n __center.copy(__loc0).add(__loc1).multiplyScalar(0.5);\n\n this._setTargetLookAt(this._calculatePanDelta(__panDelta, __preCenter, __center));\n\n this._preLoc0.copy(__loc0);\n this._preLoc1.copy(__loc1);\n }\n else if (touches.length > 0) {\n if (this._touchID === touches[0].identifier) {\n __loc0.set(touches[0].pageX, touches[0].pageY);\n this._setTargetRotation(this._calculateRotatelDelta(__rotateDelta, this._preLoc0, __loc0));\n this._preLoc0.copy(__loc0);\n }\n\n }\n }\n\n private _calculateDistanceScale(scale: number) {\n this._tempRotateSmoothing = this.rotateSmoothing;\n\n if (this.forbidZ) {\n scale = 1;\n }\n return scale;\n }\n\n private _calculateRotatelDelta(out: Vector2, loc0: Vector2, loc1: Vector2) {\n this._tempRotateSmoothing = this.rotateSmoothing;\n\n out.copy(loc1).sub(loc0).multiplyScalar(this.rotateSpeed * 2 * Math.PI / this.viewer.height);\n out.y = -out.y;\n\n if (this.forbidX) {\n out.x = 0;\n }\n if (this.forbidY) {\n out.y = 0;\n }\n\n return out;\n }\n\n private _calculatePanDelta(out: Vector2, loc0: Vector2, loc1: Vector2) {\n this._tempRotateSmoothing = this.rotateSmoothing;\n\n out.copy(loc1).sub(loc0).multiplyScalar(this.panSpeed / this.viewer.height);\n if (this.forbidPanX) {\n out.x = 0;\n }\n if (this.forbidPanY) {\n out.y = 0;\n }\n\n return out;\n }\n\n private _calculateLookAtOffset(panDelta: Vector2, out: Vector3 = new Vector3()) {\n const { __xAxis, __yAxis, __posDelta } = FreelookVirtualCamera;\n __xAxis.setFromMatrixColumn(this.node.matrix, 0);\n __yAxis.setFromMatrixColumn(this.node.matrix, 1);\n\n if (this.forbitPanOffsetY) {\n __yAxis.y = 0;\n __yAxis.normalize();\n }\n\n __posDelta.copy(this.node.position).sub(this.lookAt);\n const length = __posDelta.length() * 2 * tan(degToRad(this.fov * 0.5));\n\n return out.set(0, 0, 0)\n .sub(__xAxis.multiplyScalar(panDelta.x * length))\n .add(__yAxis.multiplyScalar(panDelta.y * length));\n }\n\n private _setTargetLookAt(panDelta: Vector2) {\n const { __lookAtOffset } = FreelookVirtualCamera;\n this._targetLookAt.add(this._calculateLookAtOffset(panDelta, __lookAtOffset));\n }\n\n private _setTargetRotation(rotateDelta: Vector2) {\n this._targetTheta -= rotateDelta.x;\n this._targetPhi += rotateDelta.y;\n this._targetTheta = clamp(this._targetTheta, this.thetaMin, this.thetaMax);\n this._targetPhi = clamp(this._targetPhi, this.phiMin, this.phiMax);\n }\n\n private _setTargetSpringLength(radius: number) {\n this._targetSpringLength = clamp(radius, this.distanceMin, this.distanceMax);\n }\n\n goto({\n springLength = this._targetSpringLength,\n theta = this._targetTheta,\n phi = this._targetPhi,\n lookAt = this._lookAt,\n offset = this._targetOffset,\n fov = this.lens.fov,\n smoothing = this.smoothing,\n rotateSmoothing = this.smoothing,\n }: {\n duration?: number;\n springLength?: number;\n theta?: number;\n phi?: number;\n lookAt?: Vector3;\n offset?: Vector2;\n fov?: number;\n smoothing?: number;\n rotateSmoothing?: number;\n }) {\n const t0 = this._spherical.theta = this._spherical.theta % PI2;\n const t1 = theta % PI2;\n const delta = MathUtils.euclideanModulo(t1 - t0 + Math.PI, PI2) - Math.PI;\n this._targetTheta = clamp(t0 + delta, this.thetaMin, this.thetaMax);\n this._targetPhi = clamp(phi, this.phiMin, this.phiMax);\n this._targetSpringLength = clamp(springLength, this.distanceMin, this.distanceMax);\n this._targetLookAt.copy(lookAt);\n this._targetOffset.copy(offset);\n this._targetFov = fov;\n this._tempSmoothing = smoothing;\n this._tempRotateSmoothing = rotateSmoothing;\n }\n\n private _finalLookAt: Vector3 = new Vector3();\n\n update(dt: number) {\n const smoothing = this._tempSmoothing;\n const rotateSmoothing = this._tempRotateSmoothing;\n\n this._spherical.theta = FInterpTo(this._spherical.theta, this._targetTheta, dt, rotateSmoothing);\n this._spherical.phi = FInterpTo(this._spherical.phi, this._targetPhi, dt, rotateSmoothing);\n this._spherical.radius = FInterpTo(this._spherical.radius, this._targetSpringLength, dt, smoothing);\n\n this.lens.fov = FInterpTo(this.lens.fov, this._targetFov, dt, smoothing);\n VInterpTo(this._lookAt, this._targetLookAt, dt, smoothing);\n VInterpTo(this._offset, this._targetOffset, dt, smoothing);\n\n this._calculateLookAtOffset(this._offset, this._finalLookAt).add(this._lookAt);\n this.node.position.setFromSpherical(this._spherical).add(this._finalLookAt);\n this.node.lookAt(this._finalLookAt);\n }\n}","import { BoxGeometry, Material, Mesh } from \"three\";\n\nexport class Box<M extends Material | Material[] = Material | Material[]> extends Mesh<BoxGeometry, M> {\n constructor(...args: ConstructorParameters<typeof BoxGeometry>) {\n super(new BoxGeometry(...args));\n }\n}","import { Material, Mesh, SphereGeometry } from \"three\";\n\nexport class Sphere<M extends Material | Material[] = Material | Material[]> extends Mesh<SphereGeometry, M> {\n constructor(...args: ConstructorParameters<typeof SphereGeometry>) {\n super(new SphereGeometry(...args));\n }\n}","import { Material, Mesh, PlaneGeometry } from \"three\";\n\nexport class Plane<M extends Material | Material[] = Material | Material[]> extends Mesh<PlaneGeometry, M> {\n constructor(...args: ConstructorParameters<typeof PlaneGeometry>) {\n super(new PlaneGeometry(...args));\n }\n}\n","import {\n Matrix4,\n PerspectiveCamera,\n Vector3,\n Vector4,\n Plane,\n WebGLRenderTarget,\n HalfFloatType,\n LinearFilter,\n LinearMipMapLinearFilter\n} from \"three\";\n\nimport { Component } from \"../Component\";\n\nexport class Reflector extends Component {\n\n constructor({\n textureWidth = 512,\n textureHeight = 512,\n clipBias = 0,\n multisample = 4,\n layer = 0,\n normal = new Vector3(0, 1, 0),\n mipmap = false,\n }: {\n textureWidth?: number,\n textureHeight?: number,\n clipBias?: number,\n multisample?: number,\n normal?: Vector3,\n layer?: number,\n mipmap?: boolean\n } = {}) {\n super();\n const reflectorPlane = new Plane();\n const reflectorNormal = new Vector3();\n const reflectorWorldPosition = new Vector3();\n const cameraWorldPosition = new Vector3();\n const rotationMatrix = new Matrix4();\n const lookAtPosition = new Vector3(0, 0, - 1);\n const clipPlane = new Vector4();\n\n const view = new Vector3();\n const target = new Vector3();\n const q = new Vector4();\n\n const textureMatrix = new Matrix4();\n const virtualCamera = new PerspectiveCamera();\n virtualCamera.layers.mask = layer;\n\n const renderTarget = new WebGLRenderTarget(textureWidth, textureHeight, {\n samples: multisample,\n type: HalfFloatType,\n minFilter: mipmap ? LinearMipMapLinearFilter : LinearFilter,\n generateMipmaps: mipmap\n });\n\n this.update = () => {\n const node = this.node;\n const { renderer, camera, scene } = this.viewer;\n\n reflectorWorldPosition.setFromMatrixPosition(node.matrixWorld);\n cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);\n\n rotationMatrix.extractRotation(node.matrixWorld);\n\n reflectorNormal.copy(normal);\n reflectorNormal.applyMatrix4(rotationMatrix);\n\n view.subVectors(reflectorWorldPosition, cameraWorldPosition);\n\n // Avoid rendering when reflector is facing away\n\n if (view.dot(reflectorNormal) > 0) return;\n\n view.reflect(reflectorNormal).negate();\n view.add(reflectorWorldPosition);\n\n rotationMatrix.extractRotation(camera.matrixWorld);\n\n lookAtPosition.set(0, 0, -1);\n lookAtPosition.applyMatrix4(rotationMatrix);\n lookAtPosition.add(cameraWorldPosition);\n\n target.subVectors(reflectorWorldPosition, lookAtPosition);\n target.reflect(reflectorNormal).negate();\n target.add(reflectorWorldPosition);\n\n virtualCamera.position.copy(view);\n virtualCamera.up.set(0, 1, 0);\n virtualCamera.up.applyMatrix4(rotationMatrix);\n virtualCamera.up.reflect(reflectorNormal);\n virtualCamera.lookAt(target);\n\n virtualCamera.far = camera.far; // Used in WebGLBackground\n\n virtualCamera.updateMatrixWorld();\n virtualCamera.projectionMatrix.copy(camera.projectionMatrix);\n\n // Update the texture matrix\n textureMatrix.set(\n 0.5, 0.0, 0.0, 0.5,\n 0.0, 0.5, 0.0, 0.5,\n 0.0, 0.0, 0.5, 0.5,\n 0.0, 0.0, 0.0, 1.0\n );\n textureMatrix.multiply(virtualCamera.projectionMatrix);\n textureMatrix.multiply(virtualCamera.matrixWorldInverse);\n textureMatrix.multiply(node.matrixWorld);\n\n // Now update projection matrix with new clip plane, implementing code from: http://www.terathon.com/code/oblique.html\n // Paper explaining this technique: http://www.terathon.com/lengyel/Lengyel-Oblique.pdf\n reflectorPlane.setFromNormalAndCoplanarPoint(reflectorNormal, reflectorWorldPosition);\n reflectorPlane.applyMatrix4(virtualCamera.matrixWorldInverse);\n\n clipPlane.set(reflectorPlane.normal.x, reflectorPlane.normal.y, reflectorPlane.normal.z, reflectorPlane.constant);\n\n const projectionMatrix = virtualCamera.projectionMatrix;\n\n q.x = (Math.sign(clipPlane.x) + projectionMatrix.elements[8]) / projectionMatrix.elements[0];\n q.y = (Math.sign(clipPlane.y) + projectionMatrix.elements[9]) / projectionMatrix.elements[5];\n q.z = - 1.0;\n q.w = (1.0 + projectionMatrix.elements[10]) / projectionMatrix.elements[14];\n\n // Calculate the scaled plane vector\n clipPlane.multiplyScalar(2.0 / clipPlane.dot(q));\n\n // Replacing the third row of the projection matrix\n projectionMatrix.elements[2] = clipPlane.x;\n projectionMatrix.elements[6] = clipPlane.y;\n projectionMatrix.elements[10] = clipPlane.z + 1.0 - clipBias;\n projectionMatrix.elements[14] = clipPlane.w;\n\n // Render\n node.visible = false;\n\n const currentRenderTarget = renderer.getRenderTarget();\n const currentActiveCubeFace = renderer.getActiveCubeFace();\n const currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n const currentXrEnabled = renderer.xr.enabled;\n const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;\n\n renderer.xr.enabled = false; // Avoid camera modification\n renderer.shadowMap.autoUpdate = false; // Avoid re-computing shadows\n\n renderer.setRenderTarget(renderTarget);\n\n renderer.state.buffers.depth.setMask(true); // make sure the depth buffer is writable so it can be properly cleared, see #18897\n\n if (renderer.autoClear === false) renderer.clear();\n renderer.render(scene, virtualCamera);\n\n renderer.xr.enabled = currentXrEnabled;\n renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;\n\n renderer.setRenderTarget(currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel);\n\n // Restore viewport\n\n const viewport = camera.viewport;\n\n if (viewport !== undefined) {\n renderer.state.viewport(viewport);\n }\n\n node.visible = true;\n }\n\n this.getRenderTarget = function () {\n return renderTarget;\n };\n this.getTextureMatrix = function () {\n return textureMatrix;\n }\n this.onDestroy = function () {\n renderTarget.dispose();\n };\n }\n\n getTextureMatrix: () => Matrix4;\n getRenderTarget: () => WebGLRenderTarget;\n\n}","import { AnimationAction, AnimationActionLoopStyles, AnimationMixer } from \"three\";\nimport { Component } from \"../Component\";\n\nexport class Animation extends Component {\n private _mixer!: AnimationMixer;\n private _action: AnimationAction;\n private _actions!: AnimationAction[];\n private _progress: number = 0;\n\n playing: boolean = false;\n\n get mixer() {\n return this._mixer;\n }\n get action() {\n return this._action;\n }\n get actions() {\n return this._actions;\n }\n get progress() {\n return this._progress;\n }\n set progress(v: number) {\n if (this.playing) return;\n if (this._action) {\n const duration = this._action.getClip().duration;\n this._mixer.setTime(v * duration);\n }\n }\n\n onLoad(): void {\n this._mixer = new AnimationMixer(this.node);\n this._actions = this.node.animations.map(v => this._mixer.clipAction(v));\n }\n\n onDestroy(): void {\n this._mixer.stopAllAction();\n }\n\n update(dt: number): void {\n if (this.playing) {\n this._mixer.update(dt);\n }\n if (this._action) {\n const duration = this._action.getClip().duration;\n this._progress = (this._mixer.time % duration) / duration;\n }\n }\n\n play(animName?: string, state: {\n mode?: AnimationActionLoopStyles;\n repetitions?: number;\n duration?: number;\n clampWhenFinished?: boolean;\n zeroSlopeAtStart?: boolean;\n zeroSlopeAtEnd?: boolean;\n } = {}) {\n let action = animName ? this._actions.find(v => v.getClip().name === animName) : this._actions[0];\n if (action) {\n if (state.clampWhenFinished !== undefined) action.clampWhenFinished = state.clampWhenFinished;\n if (state.zeroSlopeAtStart !== undefined) action.zeroSlopeAtStart = state.zeroSlopeAtStart;\n if (state.zeroSlopeAtEnd !== undefined) action.zeroSlopeAtEnd = state.zeroSlopeAtEnd;\n if (state.mode) action.setLoop(state.mode, state.repetitions);\n if (state.duration) action.setDuration(state.duration)\n\n if (this._action) {\n this._action.stop();\n }\n this._action = action.play();\n \n this.playing = true;\n }\n return this;\n }\n\n stop() {\n if (this._action) {\n this._action.stop();\n this._action = null;\n }\n this.playing = false;\n return this;\n }\n}","import * as THREE from \"three\";\nimport { __C, __P } from \"./types\";\n\nexport function applyProps<T, K extends __C<T>>(\n target: T & { copy?: Function },\n props: __P<T, K>,\n) {\n for (let k in props) {\n let prop = props[k];\n if (prop === undefined) {\n continue;\n }\n if (target[k] !== undefined) {\n let des = Object.getOwnPropertyDescriptor(target, k);\n if (!des || (des.writable || des.set)) {\n target[k] = prop;\n }\n else {\n let value = target[k];\n if (value && value.copy) {\n value.copy(prop);\n }\n }\n }\n }\n return target;\n}\n\nexport function find<T extends THREE.Object3D>(\n node: T,\n path: string\n): T {\n let child = null;\n let parts = path.split(\"/\");\n let children = node.children;\n\n for (let part of parts) {\n child = children.find(v => v.name === part);\n if (child) {\n children = child.children;\n }\n else {\n return null;\n }\n }\n\n return child;\n}\n\nexport function getChildren<T extends THREE.Object3D>(\n node: T,\n filter: (value: T) => any,\n group: boolean = false\n) {\n const queue = [node];\n const objects = [];\n\n while (queue.length !== 0) {\n let object = queue.shift();\n let target = filter(object);\n if (target) {\n objects.push(object);\n if (!group) {\n break;\n }\n }\n object.children.forEach((v: T) => queue.push(v));\n }\n\n if (group) {\n return objects;\n }\n\n return objects[0];\n}\n\nexport function getChildByName<T extends THREE.Object3D>(\n node: T,\n name: string\n): T {\n return getChildren(node, v => v && (v.name === name));\n}\n\nconst __emtpyObject = {};\nexport function queryValues<T extends Object & { name: string }>(object: any): T[];\nexport function queryValues<T extends Object & { name: string }>(object: any, name: string): T;\nexport function queryValues<T extends Object & { name: string }>(\n object: any,\n name?: string,\n group: boolean = false\n) {\n if (name) {\n if (group) {\n return Object.values<T>(object || __emtpyObject).filter(v => v.name === name);\n }\n return Object.values<T>(object || __emtpyObject).find(v => v.name === name);\n }\n return Object.values<T>(object);\n}","import {\n Matrix4,\n Color,\n Euler,\n Group,\n Material,\n Mesh,\n MeshDepthMaterial,\n OrthographicCamera,\n PlaneGeometry,\n ShaderMaterial,\n Texture,\n Vector3,\n WebGLRenderer,\n WebGLRenderTarget\n} from \"three\";\n\nimport { HorizontalBlurShader, VerticalBlurShader } from \"three/examples/jsm/Addons.js\";\nimport { Component } from \"../Component\";\nimport { property } from \"../PropertyManager\";\nimport { applyProps } from \"../Utils\";\n\nexport class ContactShadows extends Component {\n layerMask: number = 1 << 0;\n\n @property\n get visible() {\n return this.node.visible;\n }\n set visible(v: boolean) {\n this.node.visible = v;\n }\n\n @property\n color: Color = new Color();\n\n @property({ min: 0, max: 15 })\n blur: number = 1;\n\n constructor({\n scale = 10,\n frames = Infinity,\n width = 1,\n height = 1,\n intensity = 1,\n blur = 1,\n near = 0,\n far = 10,\n resolution = 512,\n smooth = true,\n color = new Color(0x0),\n renderOrder = 0,\n layerMask = 1 << 0,\n ...props\n }: {\n scale?: number;\n frames?: number;\n width?: number;\n height?: number;\n intensity?: number;\n blur?: number;\n near?: number;\n far?: number;\n resolution?: number;\n smooth?: boolean;\n color?: Color;\n renderOrder?: number;\n position?: Vector3;\n rotation?: Euler;\n layerMask?: number;\n } = {}) {\n super();\n this.blur = blur;\n this.layerMask = layerMask;\n this.color.copy(color);\n\n width = width * scale;\n height = height * scale;\n\n const planeGeometry = new PlaneGeometry(width, height);\n const shadowCamera = new OrthographicCamera(-width / 2, width / 2, height / 2, -height / 2, near, far)\n\n const renderTarget = new WebGLRenderTarget(resolution, resolution);\n const renderTargetBlur = new WebGLRenderTarget(resolution, resolution);\n renderTargetBlur.texture.generateMipmaps = renderTarget.texture.generateMipmaps = false\n\n const depthMaterial = new MeshDepthMaterial()\n depthMaterial.depthTest = depthMaterial.depthWrite = false\n depthMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n color: { value: this.color },\n }\n shader.fragmentShader = shader.fragmentShader.replace(\n `void main() {`, //\n `uniform vec3 color;\n uniform float intensity;\n void main() {\n `\n )\n shader.fragmentShader = shader.fragmentShader.replace(\n 'vec4( vec3( 1.0 - fragCoordZ ), opacity );',\n // Colorize the shadow, multiply by the falloff so that the center can remain darker\n 'vec4( color * fragCoordZ * 2.0, ( 1.0 - fragCoordZ ) * 1.0 );'\n )\n }\n const horizontalBlurMaterial = new ShaderMaterial(HorizontalBlurShader)\n const verticalBlurMaterial = new ShaderMaterial(VerticalBlurShader)\n verticalBlurMaterial.depthTest = horizontalBlurMaterial.depthTest = false\n\n const blurPlane = new Mesh(planeGeometry);\n this.node = applyProps(new Group(), { rotation: new Euler(Math.PI / 2, 0, 0), ...props });\n this.node.add(shadowCamera);\n this.node.add(blurPlane);\n\n const textureMatrix = new Matrix4();\n\n const blurShadows = (gl: WebGLRenderer, blur: number) => {\n blurPlane.visible = true\n\n blurPlane.material = horizontalBlurMaterial\n horizontalBlurMaterial.uniforms.tDiffuse.value = renderTarget.texture\n horizontalBlurMaterial.uniforms.h.value = (blur * 1) / 256\n\n gl.setRenderTarget(renderTargetBlur)\n gl.render(blurPlane, shadowCamera)\n\n blurPlane.material = verticalBlurMaterial\n verticalBlurMaterial.uniforms.tDiffuse.value = renderTargetBlur.texture\n verticalBlurMaterial.uniforms.v.value = (blur * 1) / 256\n\n gl.setRenderTarget(renderTarget)\n gl.render(blurPlane, shadowCamera)\n\n blurPlane.visible = false\n }\n\n let count = 0\n let initialBackground: Color | Texture | null\n let initialOverrideMaterial: Material | null\n let initialClearAlpha: number;\n\n this.update = () => {\n shadowCamera.layers.mask = blurPlane.layers.mask = this.layerMask;\n\n if ((frames === Infinity || count < frames)) {\n count++\n\n const { scene, renderer: gl } = this.viewer;\n\n initialBackground = scene.background\n initialOverrideMaterial = scene.overrideMaterial\n\n this.node.visible = false\n scene.background = null\n scene.overrideMaterial = depthMaterial\n\n textureMatrix.set(\n 0.5, 0.0, 0.0, 0.5,\n 0.0, 0.5, 0.0, 0.5,\n 0.0, 0.0, 0.5, 0.5,\n 0.0, 0.0, 0.0, 1.0\n );\n textureMatrix.multiply(shadowCamera.projectionMatrix);\n textureMatrix.multiply(shadowCamera.matrixWorldInverse);\n\n initialClearAlpha = gl.getClearAlpha()\n gl.setClearAlpha(0)\n gl.setRenderTarget(renderTarget)\n gl.render(scene, shadowCamera)\n\n blurShadows(gl, this.blur)\n if (smooth) blurShadows(gl, this.blur * 0.4)\n\n gl.setRenderTarget(null)\n gl.setClearAlpha(initialClearAlpha);\n\n this.node.visible = true\n scene.overrideMaterial = initialOverrideMaterial\n scene.background = initialBackground\n }\n }\n this.onDestroy = () => renderTarget.dispose();\n this.getRenderTarget = () => renderTarget;\n this.getTextureMatrix = () => textureMatrix;\n }\n\n getRenderTarget: () => WebGLRenderTarget;\n getTextureMatrix: () => Matrix4;\n\n}","import { REVISION } from 'three'\n\nconst getVersion = () => parseInt(REVISION.replace(/\\D+/g, ''))\n\nexport const version = /* @__PURE__ */ getVersion()\n","import { ShaderMaterial } from \"three\";\n\nexport class DiscardMaterial extends ShaderMaterial {\n vertexShader: string = 'void main() { }'\n fragmentShader: string = 'void main() { gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); discard; }'\n}","import * as THREE from \"three\";\nimport { ConstructorRepresentation } from \"./types\";\n\ntype UniformValue =\n | THREE.Texture\n | THREE.TypedArray\n | THREE.Matrix4\n | THREE.Matrix3\n | THREE.Quaternion\n | THREE.Vector4\n | THREE.Vector3\n | THREE.Vector2\n | THREE.Color\n | number\n | boolean\n | null\n\ntype Uniforms = Record<string, UniformValue | Record<string, UniformValue> | Array<UniformValue>>\n\nexport function shaderMaterial<U extends Uniforms, M extends THREE.ShaderMaterial & U>(\n uniforms: U,\n vertexShader: string,\n fragmentShader: string,\n) {\n return class extends THREE.ShaderMaterial {\n static key = THREE.MathUtils.generateUUID()\n\n constructor(parameters?: THREE.ShaderMaterialParameters) {\n super({ vertexShader, fragmentShader })\n for (const key in uniforms) {\n this.uniforms[key] = new THREE.Uniform(uniforms[key])\n Object.defineProperty(this, key, {\n get() {\n return this.uniforms[key].value\n },\n set(value) {\n this.uniforms[key].value = value\n },\n })\n }\n this.uniforms = THREE.UniformsUtils.clone(this.uniforms);\n this.setValues(parameters);\n }\n } as unknown as ConstructorRepresentation<M> & { key: string }\n}","import * as THREE from \"three\";\nimport { version } from \"../constants\";\nimport { DiscardMaterial } from \"../materials/DiscardMaterial\";\nimport { shaderMaterial } from \"../shaderMaterial\";\nimport { Plane } from \"../primitive\";\nimport { Component } from \"../Component\";\nimport { __E } from \"../types\";\nimport { applyProps } from \"../Utils\";\n\nexport type AccumulativeShadowsProps = {\n /** How many frames it can render, more yields cleaner results but takes more time, 40 */\n frames?: number\n /** If frames === Infinity blend controls the refresh ratio, 100 */\n blend?: number\n /** Can limit the amount of frames rendered if frames === Infinity, usually to get some performance back once a movable scene has settled, Infinity */\n limit?: number\n /** Scale of the plane, */\n scale?: number\n /** Temporal accumulates shadows over time which is more performant but has a visual regression over instant results, false */\n temporal?: boolean\n /** Opacity of the plane, 1 */\n opacity?: number\n /** Discards alpha pixels, 0.65 */\n alphaTest?: number\n /** Shadow color, black */\n color?: string\n /** Colorblend, how much colors turn to black, 0 is black, 2 */\n colorBlend?: number\n /** Buffer resolution, 1024 */\n resolution?: number\n /** Texture tonemapping */\n toneMapped?: boolean\n\n randomLights?: RandomizedLight[]\n}\n\nexport class AccumulativeShadows extends Component {\n temporal: boolean = false;\n frames: number = 1;\n count: number = 0;\n limit: number = Infinity;\n blend: number = 2;\n\n constructor({\n temporal,\n frames = 40,\n limit = Infinity,\n blend = 20,\n scale = 10,\n opacity = 1,\n alphaTest = 0.75,\n color = 'black',\n colorBlend = 2,\n resolution = 1024,\n toneMapped = true,\n randomLights = [],\n ...props\n }: AccumulativeShadowsProps = {}) {\n super();\n\n this.temporal = !!temporal;\n this.frames = Math.max(2, frames);\n this.blend = Math.max(2, frames === Infinity ? blend : frames);\n this.count = 0;\n\n this.node = applyProps(new THREE.Group(), props);\n\n this.onLoad = () => {\n const { viewer } = this;\n const { renderer, scene, camera } = viewer;\n\n const plm = new ProgressiveLightMap(renderer, scene, resolution);\n const gPlane = viewer.add(Plane<SoftShadowMaterialType>, {\n parent: this.node,\n receiveShadow: true,\n scale: new THREE.Vector3(scale, scale, scale),\n rotation: new THREE.Euler(-Math.PI / 2, 0, 0),\n material: new SoftShadowMaterial({\n color,\n toneMapped,\n transparent: true,\n depthWrite: false,\n blend: colorBlend,\n map: plm.progressiveLightMap2.texture\n })\n });\n plm.configure(gPlane);\n\n const gLights = viewer.add(THREE.Group, { parent: this.node });\n gLights.traverse = () => null;\n\n randomLights.forEach(light => gLights.add(light));\n\n const update = (frames = 1) => {\n // Adapt the opacity-blend ratio to the number of frames\n const material = gPlane.material\n if (!this.temporal) {\n material.opacity = opacity\n material.alphaTest = alphaTest\n } else {\n material.opacity = Math.min(opacity, material.opacity + opacity / this.blend)\n material.alphaTest = Math.min(alphaTest, material.alphaTest + alphaTest / this.blend)\n }\n\n // Switch accumulative lights on\n gLights.visible = true\n // Collect scene lights and meshes\n plm.prepare()\n\n // Update the lightmap and the accumulative lights\n for (let i = 0; i < frames; i++) {\n randomLights.forEach((light) => light.update())\n plm.update(camera, this.blend)\n }\n // Switch lights off\n gLights.visible = false\n // Restore lights and meshes\n plm.finish()\n }\n\n const reset = () => {\n // Clear buffers, reset opacities, set frame count to 0\n plm.clear()\n const material = gPlane.material\n material.opacity = 0\n material.alphaTest = 0\n this.count = 0\n }\n\n this.start = () => {\n // Reset internals, buffers, ...\n reset();\n // Update lightmap\n if (!this.temporal && this.frames !== Infinity) update(this.blend)\n }\n\n this.update = () => {\n if ((this.temporal || this.frames === Infinity) && this.count < this.frames && this.count < this.limit) {\n update();\n this.count++;\n }\n }\n }\n }\n\n reset?(): void;\n\n}\n\nexport type RandomizedLightProps = __E & {\n /** How many frames it will jiggle the lights, 1.\n * Frames is context aware, if a provider like AccumulativeShadows exists, frames will be taken from there! */\n frames?: number\n /** Light position, [0, 0, 0] */\n position?: THREE.Vector3\n /** Radius of the jiggle, higher values make softer light, 5 */\n radius?: number\n /** Amount of lights, 8 */\n amount?: number\n /** Light intensity, 1 */\n intensity?: number\n /** Ambient occlusion, lower values mean less AO, hight more, you can mix AO and directional light, 0.5 */\n ambient?: number\n /** If the lights cast shadows, this is true by default */\n castShadow?: boolean\n /** Default shadow bias, 0 */\n bias?: number\n /** Default map size, 512 */\n mapSize?: number\n /** Default size of the shadow camera, 10 */\n size?: number\n /** Default shadow camera near, 0.5 */\n near?: number\n /** Default shadow camera far, 500 */\n far?: number\n}\n\nexport class RandomizedLight extends THREE.Group {\n\n constructor({\n castShadow = true,\n bias = 0.001,\n mapSize = 512,\n size = 5,\n near = 0.5,\n far = 500,\n frames = 1,\n position = new THREE.Vector3(),\n radius = 1,\n amount = 8,\n intensity = version >= 155 ? Math.PI : 1,\n ambient = 0.5,\n ...props\n }: RandomizedLightProps = {}) {\n super();\n applyProps(this, props as any);\n\n const length = position.length();\n for (let i = 0; i < amount; i++) {\n const light = new THREE.DirectionalLight();\n light.shadow.bias = bias;\n light.shadow.mapSize.set(mapSize, mapSize);\n light.shadow.camera = new THREE.OrthographicCamera(-size, size, size, -size, near, far);\n light.castShadow = castShadow;\n light.intensity = intensity / amount;\n this.add(light);\n }\n\n this.update = () => {\n for (let light of this.children) {\n if (Math.random() > ambient) {\n light.position.set(\n position.x + THREE.MathUtils.randFloatSpread(radius),\n position.y + THREE.MathUtils.randFloatSpread(radius),\n position.z + THREE.MathUtils.randFloatSpread(radius)\n )\n }\n else {\n const lambda = Math.acos(2 * Math.random() - 1) - Math.PI / 2.0\n const phi = 2 * Math.PI * Math.random()\n light.position.set(\n Math.cos(lambda) * Math.cos(phi) * length,\n Math.abs(Math.cos(lambda) * Math.sin(phi) * length),\n Math.sin(lambda) * length\n )\n }\n }\n }\n }\n\n update?(): void;\n}\n\nconst SoftShadowMaterial = shaderMaterial(\n {\n color: new THREE.Color(),\n blend: 2.0,\n alphaTest: 0.75,\n opacity: 0,\n map: null,\n },\n `varying vec2 vUv;\n void main() {\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.);\n vUv = uv;\n }`,\n `varying vec2 vUv;\n uniform sampler2D map;\n uniform vec3 color;\n uniform float opacity;\n uniform float alphaTest;\n uniform float blend;\n void main() {\n vec4 sampledDiffuseColor = texture2D(map, vUv);\n gl_FragColor = vec4(color * sampledDiffuseColor.r * blend, max(0.0, (1.0 - (sampledDiffuseColor.r + sampledDiffuseColor.g + sampledDiffuseColor.b) / alphaTest)) * opacity);\n #include <${version >= 154 ? 'colorspace_fragment' : 'encodings_fragment'}>\n }`\n)\n\ntype SoftShadowMaterialType = InstanceType<typeof SoftShadowMaterial>;\n\nfunction isLight(object: any): object is THREE.Light {\n return object.isLight\n}\n\nfunction isGeometry(object: any): object is THREE.Mesh {\n return !!object.geometry\n}\n\nclass ProgressiveLightMap {\n renderer: THREE.WebGLRenderer\n res: number\n scene: THREE.Scene\n object: THREE.Mesh | null\n buffer1Active: boolean\n progressiveLightMap1: THREE.WebGLRenderTarget\n progressiveLightMap2: THREE.WebGLRenderTarget\n discardMat: THREE.ShaderMaterial\n targetMat: THREE.MeshLambertMaterial\n previousShadowMap: { value: THREE.Texture }\n averagingWindow: { value: number }\n clearColor: THREE.Color\n clearAlpha: number\n lights: { object: THREE.Light; intensity: number }[]\n meshes: { object: THREE.Mesh; material: THREE.Material | THREE.Material[] }[]\n\n constructor(renderer: THREE.WebGLRenderer, scene: THREE.Scene, res: number = 1024) {\n this.renderer = renderer\n this.res = res\n this.scene = scene\n this.buffer1Active = false\n this.lights = []\n this.meshes = []\n this.object = null\n this.clearColor = new THREE.Color()\n this.clearAlpha = 0\n\n // Create the Progressive LightMap Texture\n const textureParams = {\n type: THREE.HalfFloatType,\n magFilter: THREE.NearestFilter,\n minFilter: THREE.NearestFilter,\n }\n this.progressiveLightMap1 = new THREE.WebGLRenderTarget(this.res, this.res, textureParams)\n this.progressiveLightMap2 = new THREE.WebGLRenderTarget(this.res, this.res, textureParams)\n\n // Inject some spicy new logic into a standard phong material\n this.discardMat = new DiscardMaterial()\n this.targetMat = new THREE.MeshLambertMaterial({ fog: false })\n this.previousShadowMap = { value: this.progressiveLightMap1.texture }\n this.averagingWindow = { value: 100 }\n this.targetMat.onBeforeCompile = (shader) => {\n // Vertex Shader: Set Vertex Positions to the Unwrapped UV Positions\n shader.vertexShader =\n 'varying vec2 vUv;\\n' +\n shader.vertexShader.slice(0, -1) +\n 'vUv = uv; gl_Position = vec4((uv - 0.5) * 2.0, 1.0, 1.0); }'\n\n // Fragment Shader: Set Pixels to average in the Previous frame's Shadows\n const bodyStart = shader.fragmentShader.indexOf('void main() {')\n shader.fragmentShader =\n 'varying vec2 vUv;\\n' +\n shader.fragmentShader.slice(0, bodyStart) +\n 'uniform sampler2D previousShadowMap;\\n\tuniform float averagingWindow;\\n' +\n shader.fragmentShader.slice(bodyStart - 1, -1) +\n `\\nvec3 texelOld = texture2D(previousShadowMap, vUv).rgb;\n gl_FragColor.rgb = mix(texelOld, gl_FragColor.rgb, 1.0/ averagingWindow);\n }`\n\n // Set the Previous Frame's Texture Buffer and Averaging Window\n shader.uniforms.previousShadowMap = this.previousShadowMap\n shader.uniforms.averagingWindow = this.averagingWindow\n }\n }\n\n clear() {\n this.renderer.getClearColor(this.clearColor)\n this.clearAlpha = this.renderer.getClearAlpha()\n this.renderer.setClearColor('black', 1)\n this.renderer.setRenderTarget(this.progressiveLightMap1)\n this.renderer.clear()\n this.renderer.setRenderTarget(this.progressiveLightMap2)\n this.renderer.clear()\n this.renderer.setRenderTarget(null)\n this.renderer.setClearColor(this.clearColor, this.clearAlpha)\n\n this.lights = []\n this.meshes = []\n this.scene.traverse((object) => {\n if (isGeometry(object)) {\n this.meshes.push({ object, material: object.material })\n } else if (isLight(object)) {\n this.lights.push({ object, intensity: object.intensity })\n }\n })\n }\n\n prepare() {\n this.lights.forEach((light) => (light.object.intensity = 0))\n this.meshes.forEach((mesh) => (mesh.object.material = this.discardMat))\n }\n\n finish() {\n this.lights.forEach((light) => (light.object.intensity = light.intensity))\n this.meshes.forEach((mesh) => (mesh.object.material = mesh.material))\n }\n\n configure(object) {\n this.object = object\n }\n\n update(camera, blendWindow = 100) {\n if (!this.object) return\n // Set each object's material to the UV Unwrapped Surface Mapping Version\n this.averagingWindow.value = blendWindow\n this.object.material = this.targetMat\n // Ping-pong two surface buffers for reading/writing\n const activeMap = this.buffer1Active ? this.progressiveLightMap1 : this.progressiveLightMap2\n const inactiveMap = this.buffer1Active ? this.progressiveLightMap2 : this.progressiveLightMap1\n // Render the object's surface maps\n const oldBg = this.scene.background\n this.scene.background = null\n this.renderer.setRenderTarget(activeMap)\n this.previousShadowMap.value = inactiveMap.texture\n this.buffer1Active = !this.buffer1Active\n this.renderer.render(this.scene, camera)\n this.renderer.setRenderTarget(null)\n this.scene.background = oldBg\n }\n}","\nimport { Box3, Group, Object3D, Vector3, Sphere } from \"three\";\nimport { Component } from \"../Component\";\nimport { applyProps } from \"../Utils\";\nimport { __E } from \"../types\";\n\nexport type OnCenterCallbackProps = {\n /** The next parent above <Center> */\n parent: Object3D\n /** The outmost container group of the <Center> component */\n container: Object3D\n width: number\n height: number\n depth: number\n boundingBox: Box3\n boundingSphere: Sphere\n center: Vector3\n verticalAlignment: number\n horizontalAlignment: number\n depthAlignment: number\n}\n\nexport type CenterProps = __E & {\n top?: boolean\n right?: boolean\n bottom?: boolean\n left?: boolean\n front?: boolean\n back?: boolean\n /** Disable all axes */\n disable?: boolean\n /** Disable x-axis centering */\n disableX?: boolean\n /** Disable y-axis centering */\n disableY?: boolean\n /** Disable z-axis centering */\n disableZ?: boolean\n /** See https://threejs.org/docs/index.html?q=box3#api/en/math/Box3.setFromObject */\n precise?: boolean\n /** Callback, fires in the useLayoutEffect phase, after measurement */\n onCentered?: (props: OnCenterCallbackProps) => void\n /** Optional cacheKey to keep the component from recalculating on every render */\n cacheKey?: any\n children?: Object3D[]\n}\n\nexport class Center extends Component<Group> {\n\n constructor({\n disable,\n disableX,\n disableY,\n disableZ,\n left,\n right,\n top,\n bottom,\n front,\n back,\n onCentered,\n precise = true,\n cacheKey = 0,\n children = [],\n ...props\n }: CenterProps = {}) {\n super();\n this.node = applyProps(new Group(), props);\n \n this.start = () => {\n const inner = new Group().add(...children);\n const outer = new Group().add(inner);\n this.node.add(outer);\n\n outer.matrixWorld.identity();\n const box3 = new Box3().setFromObject(inner, precise)\n const center = new Vector3()\n const sphere = new Sphere()\n const width = box3.max.x - box3.min.x\n const height = box3.max.y - box3.min.y\n const depth = box3.max.z - box3.min.z\n box3.getCenter(center)\n box3.getBoundingSphere(sphere)\n const vAlign = top ? height / 2 : bottom ? -height / 2 : 0\n const hAlign = left ? -width / 2 : right ? width / 2 : 0\n const dAlign = front ? depth / 2 : back ? -depth / 2 : 0\n\n outer.position.set(\n disable || disableX ? 0 : -center.x + hAlign,\n disable || disableY ? 0 : -center.y + vAlign,\n disable || disableZ ? 0 : -center.z + dAlign\n )\n\n // Only fire onCentered if the bounding box has changed\n if (typeof onCentered !== 'undefined') {\n onCentered({\n parent: this.node.parent!,\n container: this.node,\n width,\n height,\n depth,\n boundingBox: box3,\n boundingSphere: sphere,\n center: center,\n verticalAlignment: vAlign,\n horizontalAlignment: hAlign,\n depthAlignment: dAlign,\n })\n }\n }\n }\n}","export const vert_fullscreen = /*glsl*/`\nvarying vec2 vUv;\nvoid main() {\n\tvUv = position.xy * 0.5 + 0.5;\n\tgl_Position = vec4(position.xy, 1.0, 1.0);\n}\n`","\nexport const frag_BoxfilterBlur = `\n#include <common>\nuniform sampler2D tLast;\nuniform sampler2D tBlur;\nuniform float\t uLod;\nuniform float\t uWeight;\nvarying vec2 vUv;\n\nvoid main() {\n\tvec3 col0 = textureLod(tLast, vUv, 0.).rgb;\n\tvec3 col1 = textureLod(tBlur, vUv, uLod).rgb;\n gl_FragColor = vec4(mix(col0, col1, uWeight), 1.);\n}\n`","export const frag_panoramaToCubeMap = `\n#include <xv_common>\n\nvarying vec2 vUv;\nuniform sampler2D tMain;\nuniform int uFace;\nuniform vec4 uTilingOffset;\n\nvec3 uvToXYZ(int face, vec2 uv) {\n if (face == 0) return vec3(-1.0, uv.y, -uv.x);\n else if (face == 1) return vec3(1.0, uv.y, uv.x);\n else if (face == 2) return vec3(-uv.x, -1.0, uv.y);\n else if (face == 3) return vec3(-uv.x, 1.0, -uv.y);\n else if (face == 4) return vec3(-uv.x, uv.y, 1.0);\n else return vec3(uv.x, uv.y, -1.0);\n}\n\nvec4 panoramaToCubeMap(int face, vec2 uv_i) {\n vec2 uv = uv_i * 2.0 - 1.0;\n vec3 dir = normalize(uvToXYZ(face, uv));\n vec2 uv_o = dirToUv(dir);\n uv_o = vec2(uv_o.x, uv_o.y) * uTilingOffset.xy + uTilingOffset.zw;\n return texture(tMain, uv_o);\n}\n\nvoid main() {\n gl_FragColor = panoramaToCubeMap(uFace, vUv);\n}\n`\n\nexport const frag_cubeMapToPanorama = `\n#include <xv_common>\n\nvarying vec2 vUv;\nuniform samplerCube tMain;\n\nvec4 cubeMapToPanorama(vec2 uv_i) {\n return texture(tMain, uvToDir(uv_i));\n}\n\nvoid main() {\n gl_FragColor = cubeMapToPanorama(vUv);\n}\n`","import {\n Color,\n CubeTexture,\n Matrix3,\n Matrix4,\n Quaternion,\n ShaderMaterial,\n Texture,\n UniformsUtils,\n Vector2,\n Vector3,\n Vector4\n} from \"three\";\n\nexport function getShaderMaterial<T extends {\n [name: string]:\n | CubeTexture\n | Texture\n | Int32Array\n | Float32Array\n | Matrix4\n | Matrix3\n | Quaternion\n | Vector4\n | Vector3\n | Vector2\n | Color\n | number\n | boolean\n | Array<any>\n | null\n}>(\n uniforms: T,\n vertexShader: string,\n fragmentShader: string,\n onInit?: (material?: ShaderMaterial) => void\n) {\n const material = class extends ShaderMaterial {\n constructor(parameters = {}) {\n const entries = Object.entries(uniforms)\n // Create unforms and shaders\n super({\n uniforms: entries.reduce((acc, [name, value]) => {\n const uniform = UniformsUtils.clone({ [name]: { value } })\n return {\n ...acc,\n ...uniform,\n }\n }, {}),\n vertexShader,\n fragmentShader,\n })\n // Create getter/setters\n entries.forEach(([name]) =>\n Object.defineProperty(this, name, {\n get: () => this.uniforms[name].value,\n set: (v) => (this.uniforms[name].value = v),\n })\n )\n\n // Assign parameters, this might include uniforms\n Object.assign(this, parameters)\n // Call onInit\n if (onInit) onInit(this)\n }\n } as unknown as typeof ShaderMaterial & T & ShaderMaterial;\n return material;\n}","import { Color, IUniform, Matrix4, ShaderMaterial, Texture, WebGLProgramParametersWithUniforms } from \"three\";\nimport { property } from \"../PropertyManager\";\nimport { Reflector } from \"../components\";\n\nconst vert_Reflector = /*glsl*/`\nuniform mat4 textureMatrix;\nvarying vec4 vUv4;\nvarying vec2 vUv;\nvarying vec3 vPositionWS;\n\n#ifdef USE_UV1\n varying vec2 vUv1;\n#endif\n\n#ifdef USE_UV2\n varying vec2 vUv2;\n#endif\n\n#ifdef USE_UV3\n varying vec2 vUv3;\n#endif\n\nvarying vec3 vViewPosition;\n\n#include <common>\n#include <normal_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n\nvoid main() {\n #include <beginnormal_vertex>\n #include <defaultnormal_vertex>\n\n vec4 transformed = vec4(position, 1.);\n\n#ifdef USE_INSTANCING\n transformed = instanceMatrix * transformed;\n#endif\n\n vUv = uv;\n\n#ifdef USE_UV1 \n vUv1 = uv1;\n#endif\n\n#ifdef USE_UV2 \n vUv2 = uv2;\n#endif\n\n#ifdef USE_UV3 \n vUv3 = uv2;\n#endif\n\n vec4 positionWS = modelMatrix * transformed;\n vec4 mvPosition = viewMatrix * positionWS;\n\n vUv4 = textureMatrix * positionWS;\n vPositionWS = positionWS.xyz;\n vViewPosition = -mvPosition.xyz;\n vNormal = normalize(transformedNormal);\n\n gl_Position = projectionMatrix * mvPosition;\n\n #include <logdepthbuf_vertex>\n}\n`\n\nconst frag_Reflector = /*glsl*/`\nuniform vec3 color;\nuniform float opacity;\nuniform float roughness;\nuniform float metalness;\nuniform sampler2D map;\nuniform sampler2D normalMap;\nuniform sampler2D roughnessMap;\nuniform sampler2D aoMap;\nuniform float aoMapIntensity;\nuniform sampler2D lightMap;\nuniform float lightMapIntensity;\nuniform sampler2D reflectMap;\nuniform float reflectIntensity;\nvarying vec3 vPositionWS;\n\nvarying vec2 vUv;\n\n#ifdef USE_UV1\n varying vec2 vUv1;\n#endif\n\n#ifdef USE_UV2\n varying vec2 vUv2;\n#endif\n\n#ifdef USE_UV3\n varying vec2 vUv3;\n#endif\n\nvarying vec4 vUv4;\nvarying vec3 vViewPosition;\nvarying vec3 vNormal;\n\n#include <common>\n#include <lights_physical_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n\nvoid main() {\n #include <logdepthbuf_fragment>\n\n vec3 coord = vUv4.xyz / vUv4.w;\n vec2 reflectUv = coord.xy;\n\n#ifdef USE_NORMALMAP\n vec4 texelNormal = texture2D(normalMap, UV_NORMAL);\n vec3 normal = normalize(vec3(texelNormal.r * 2.0 - 1.0, texelNormal.b, texelNormal.g * 2.0 - 1.0));\n reflectUv += coord.z * normal.xz * 0.05;\n#endif\n\n vec3 geometryNormal = normalize(vNormal);\n vec3 geometryViewDir = normalize(vViewPosition);\n\n vec3 singleScattering = vec3( 0.0 );\n\tvec3 multiScattering = vec3( 0.0 );\n\n float metalnessFactor = metalness;\n\n vec4 diffuseColor = vec4(color, opacity);\n\n#ifdef USE_MAP\n diffuseColor *= texture2D(map, vUv);\n#endif\n\n diffuseColor.rgb = diffuseColor.rgb * ( 1.0 - metalnessFactor );\n\n vec3 specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n float specularF90 = 1.0;\n\n float roughnessFactor = roughness;\n\n#ifdef USE_ROUGHNESSMAP\n roughnessFactor *= texture2D(roughnessMap, UV_ROUGHNESS).g * roughness;\n#endif\n\n computeMultiscattering( geometryNormal, geometryViewDir, specularColor, specularF90, roughnessFactor, singleScattering, multiScattering );\n\n vec3 totalScattering = singleScattering + multiScattering;\n\tvec3 diffuse = diffuseColor.rgb * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n\n vec3 irradiance = vec3(0.);\n\n#ifdef USE_LIGHTMAP\n irradiance += texture2D(lightMap, UV_LIGHTMAP).rgb * lightMapIntensity;\n#endif\n\n float lod = roughnessFactor * (1.7 - 0.7 * roughnessFactor) * 6.;\n vec4 reflectColor = textureLod(reflectMap, reflectUv, lod) * reflectIntensity;\n\n vec3 f_specular = vec3(0.);\n vec3 f_diffuse = vec3(0.);\n\n f_specular += reflectColor.rgb * (1.0 - roughnessFactor * roughnessFactor) + multiScattering * irradiance;\n f_diffuse += diffuse * irradiance;\n\n#ifdef USE_AOMAP\n float ambientOcclusion = mix(1., texture2D(aoMap, UV_AO).r, aoMapIntensity);\n\n float dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\n f_specular *= computeSpecularOcclusion(dotNV, ambientOcclusion, roughnessFactor);\n f_diffuse *= ambientOcclusion;\n#endif\n\n gl_FragColor = vec4(f_specular + f_diffuse, diffuseColor.a);\n\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n}\n`\n\nexport class ReflectorMaterial extends ShaderMaterial {\n\n vertexShader: string = vert_Reflector;\n fragmentShader: string = frag_Reflector;\n\n defines: { [key: string]: any; } = {\n UV_AO: \"vUv\",\n UV_LIGHTMAP: \"vUv\",\n UV_ROUGHNESS: \"vUv\",\n UV_NORMAL: \"vUv\",\n }\n\n uniforms: { [uniform: string]: IUniform<any>; } = {\n color: { value: new Color() },\n opacity: { value: 1 },\n map: { value: null },\n reflectMap: { value: null },\n reflectIntensity: { value: 1 },\n textureMatrix: { value: new Matrix4() },\n metalness: { value: 0 },\n roughness: { value: 1 },\n roughnessMap: { value: null },\n normalMap: { value: null },\n aoMap: { value: null },\n aoMapIntensity: { value: 1 },\n lightMap: { value: null },\n lightMapIntensity: { value: 1 },\n }\n\n constructor({\n reflector,\n ...parameters\n }: {\n reflector: Reflector;\n name?: string;\n opacity?: number;\n transparent?: boolean;\n depthWrite?: boolean;\n roughness?: number;\n metalness?: number;\n }) {\n super();\n Object.defineProperty(this, \"opacity\", {\n get: () => this.uniforms.opacity.value,\n set: (v: number) => this.uniforms.opacity.value = v\n })\n this.uniforms.reflectMap.value = reflector.getRenderTarget().texture;\n this.uniforms.textureMatrix.value = reflector.getTextureMatrix();\n this.setValues(parameters as any);\n }\n\n onBeforeCompile(shader: WebGLProgramParametersWithUniforms): void {\n const channels = [];\n if (this.aoMap && this.aoMap.channel) {\n channels.push([\"UV_AO\", this.aoMap.channel]);\n }\n if (this.lightMap && this.lightMap.channel) {\n channels.push([\"UV_LIGHTMAP\", this.lightMap.channel]);\n }\n if (this.roughnessMap && this.roughnessMap.channel) {\n channels.push([\"UV_ROUGHNESS\", this.roughnessMap.channel]);\n }\n if (this.normalMap && this.normalMap.channel) {\n channels.push([\"UV_NORMAL\", this.normalMap.channel]);\n }\n channels.forEach(([key, channel]) => {\n shader.defines[key] = \"vUv\" + channel;\n })\n }\n\n @property\n get color() {\n return this.uniforms.color.value;\n }\n set color(v: Color) {\n this.uniforms.color.value = v;\n }\n\n @property({ min: 0, max: 1, step: 0.01 })\n get metalness() {\n return this.uniforms.metalness.value;\n }\n set metalness(v: number) {\n this.uniforms.metalness.value = v;\n }\n\n @property({ min: 0, max: 1, step: 0.01 })\n get roughness() {\n return this.uniforms.roughness.value;\n }\n set roughness(v: number) {\n this.uniforms.roughness.value = v;\n }\n\n @property\n get map() {\n return this.uniforms.map.value;\n }\n set map(v: Texture) {\n this.uniforms.map.value = v;\n }\n\n @property\n get roughnessMap() {\n return this.uniforms.roughnessMap.value;\n }\n set roughnessMap(v: Texture) {\n this.uniforms.roughnessMap.value = v;\n }\n\n @property\n get normalMap() {\n return this.uniforms.normalMap.value;\n }\n set normalMap(v: Texture) {\n this.uniforms.normalMap.value = v;\n }\n\n @property\n get aoMap() {\n return this.uniforms.aoMap.value;\n }\n set aoMap(v: Texture) {\n this.uniforms.aoMap.value = v;\n }\n\n @property\n get lightMap() {\n return this.uniforms.lightMap.value;\n }\n set lightMap(v: Texture) {\n this.uniforms.lightMap.value = v;\n }\n\n @property({ min: 0, max: 1, step: 0.01, parent: \"lightMap\" })\n get lightMapIntensity() {\n return this.uniforms.lightMapIntensity.value;\n }\n set lightMapIntensity(v: number) {\n this.uniforms.lightMapIntensity.value = v;\n }\n\n @property()\n get reflectMap() {\n return this.uniforms.reflectMap.value;\n }\n set reflectMap(v: Texture) {\n this.uniforms.reflectMap.value = v;\n }\n\n @property({ min: 0, max: 1, step: 0.01, parent: \"reflectMap\" })\n get reflectIntensity() {\n return this.uniforms.reflectIntensity.value;\n }\n set reflectIntensity(v: number) {\n this.uniforms.reflectIntensity.value = v;\n }\n\n}","import { Color, IUniform, Matrix4, ShaderMaterial } from \"three\"\nimport { ContactShadows } from \"../components\";\n\nconst vert_Shadow = `\nvarying vec4 v_shadows;\nuniform mat4 shadowsMatrix;\n\nvoid main() {\n vec4 worldPos = modelMatrix * vec4(position, 1.);\n vec4 mvPosition = viewMatrix * worldPos;\n \n gl_Position = projectionMatrix * mvPosition;\n\n v_shadows = shadowsMatrix * worldPos;\n}\n`\n\nconst frag_Shadow = `\nuniform vec3 color;\nuniform float opacity;\n\nvarying vec4 v_shadows;\nuniform sampler2D shadowsMap;\nuniform float shadowsIntensity;\n\nvoid main() {\n vec4 shadows = texture2DProj(shadowsMap, v_shadows);\n gl_FragColor = vec4(color * shadows.rgb, shadows.a * opacity);\n\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n}\n`\n\nexport class ShadowMaterial extends ShaderMaterial {\n\n vertexShader: string = vert_Shadow;\n fragmentShader: string = frag_Shadow;\n\n uniforms: { [uniform: string]: IUniform<any>; } = {\n color: { value: new Color() },\n opacity: { value: 1 },\n shadowsMap: { value: null },\n shadowsMatrix: { value: new Matrix4() }\n }\n\n constructor({\n shadows,\n ...props\n }: {\n shadows: ContactShadows;\n opacity?: number;\n transparent?: boolean;\n depthWrite?: boolean;\n }) {\n super();\n Object.defineProperty(this, \"opacity\", {\n get: () => this.uniforms.opacity.value,\n set: (v: number) => this.uniforms.opacity.value = v\n });\n this.uniforms.shadowsMap.value = shadows.getRenderTarget().texture;\n this.uniforms.shadowsMatrix.value = shadows.getTextureMatrix();\n this.transparent = true;\n this.depthWrite = false;\n this.setValues(props);\n }\n\n get color() {\n return this.uniforms.color.value;\n }\n set color(v: Color) {\n this.uniforms.color.value.copy(v);\n }\n}","import { Object3D } from \"three\";\nimport { Component } from \"./Component\";\n\nexport class Mount<T extends Object3D = Object3D> extends Component<T> {\n isMount: boolean = true;\n}","import { OrthographicCamera, Vector2 } from \"three\";\nimport { FInterpTo } from \"../math\";\nimport { Mount } from \"../Mount\";\nimport { DeviceInput } from \"../DeviceInput\";\nimport { SystemInfo } from \"../SystemInfo\";\n\nexport class UI extends Mount {\n static __loc0 = new Vector2();\n static __loc1 = new Vector2();\n static __panOffset = new Vector2();\n\n private _camera: OrthographicCamera;\n\n private _zoom: number = 1;\n private _targetZoom: number = 0.3;\n private _targetPosition: Vector2 = new Vector2();\n\n private _button: number = -1;\n private _touchID: number = -1;\n private _preLoc0: Vector2 = new Vector2();\n private _preLoc1: Vector2 = new Vector2();\n\n get layerMask() {\n return this._camera.layers.mask;\n }\n set layerMask(v: number) {\n this._camera.layers.mask = v;\n }\n\n onLoad() {\n const { width, height } = this.viewer;\n\n const aspect = width / height;\n this._camera = new OrthographicCamera(-aspect, aspect, 1, -1, -1000, 10000);\n this._camera.layers.mask = 1 << 1;\n\n this.viewer.on(DeviceInput.POINTER_DOWN, this._onPointerDown, this);\n this.viewer.on(DeviceInput.POINTER_UP, this._onPointerUp, this);\n this.viewer.on(DeviceInput.POINTER_MOVE, this._onPointerMove, this);\n this.viewer.on(DeviceInput.MOUSE_WHEEL, this._onMouseWheel, this);\n this.viewer.on(DeviceInput.TOUCH_START, this._onTouchStart, this);\n this.viewer.on(DeviceInput.TOUCH_MOVE, this._onTouchMove, this);\n }\n\n onDestroy(): void {\n this.viewer.targetOff(this);\n }\n\n private _onPointerDown(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n this._button = e.button;\n this._preLoc0.set(e.pageX, e.pageY);\n }\n\n private _onPointerUp(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n this._button = -1;\n }\n\n private _onPointerMove(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n const { __loc0, __panOffset } = UI;\n __loc0.set(e.pageX, e.pageY);\n\n switch (this._button) {\n case 0:\n this._setTargetPosition(this._calculatePanDelta(__panOffset, __loc0, this._preLoc0));\n break;\n }\n\n this._preLoc0.copy(__loc0);\n }\n\n private _onMouseWheel(e: WheelEvent) {\n if (e.deltaY > 0) {\n this._targetZoom *= 0.85;\n }\n else if (e.deltaY < 0) {\n this._targetZoom /= 0.85;\n }\n }\n\n\n private _onTouchStart(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n let touches = e.touches;\n if (touches.length > 1) {\n this._preLoc0.set(touches[0].pageX, touches[0].pageY);\n this._preLoc1.set(touches[1].pageX, touches[1].pageY);\n }\n else if (touches.length > 0) {\n this._touchID = touches[0].identifier;\n this._preLoc0.set(touches[0].pageX, touches[0].pageY);\n }\n }\n\n private _onTouchMove(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n const { __loc0, __loc1, __panOffset } = UI;\n\n let touches = e.touches;\n if (touches.length > 1) {\n __loc0.set(touches[0].pageX, touches[0].pageY);\n __loc1.set(touches[1].pageX, touches[1].pageY);\n\n this._targetZoom /= this._preLoc0.distanceTo(this._preLoc1) / __loc0.distanceTo(__loc1);\n\n this._preLoc0.copy(__loc0);\n this._preLoc1.copy(__loc1);\n }\n else if (touches.length > 0) {\n if (this._touchID === touches[0].identifier) {\n __loc0.set(touches[0].pageX, touches[0].pageY);\n this._setTargetPosition(this._calculatePanDelta(__panOffset, __loc0, this._preLoc0));\n this._preLoc0.copy(__loc0);\n }\n }\n }\n\n private _setTargetPosition(panOffset: Vector2) {\n this._targetPosition.x -= panOffset.x;\n this._targetPosition.y += panOffset.y;\n }\n\n private _calculatePanDelta(out: Vector2, loc0: Vector2, loc1: Vector2) {\n out.copy(loc0).sub(loc1);\n out.x *= (this._camera.right - this._camera.left) / this._camera.zoom / this.viewer.width;\n out.y *= (this._camera.top - this._camera.bottom) / this._camera.zoom / this.viewer.height;\n return out;\n }\n\n update(dt: number): void {\n this._camera.position.x = FInterpTo(this._camera.position.x, this._targetPosition.x, dt, 5, 0.001);\n this._camera.position.y = FInterpTo(this._camera.position.y, this._targetPosition.y, dt, 5, 0.001);\n this._zoom = FInterpTo(this._zoom, this._targetZoom, dt, 5, 0.001);\n\n if (this._zoom !== this._targetZoom) {\n this._camera.zoom = this._zoom;\n this._camera.updateProjectionMatrix();\n }\n }\n\n resize(width: number, height: number): void {\n const aspect = width / height;\n this._camera.left = -aspect;\n this._camera.right = aspect;\n this._camera.top = 1;\n this._camera.bottom = -1;\n this._camera.updateProjectionMatrix();\n }\n\n render(dt: number): void {\n const { renderer, scene } = this.viewer;\n\n const autoClearDepth = renderer.autoClearDepth;\n const autoClearColor = renderer.autoClearColor;\n\n renderer.autoClearDepth = true;\n renderer.autoClearColor = false;\n renderer.render(scene, this._camera);\n\n renderer.autoClearDepth = autoClearDepth;\n renderer.autoClearColor = autoClearColor;\n }\n}","import { AdditiveBlending, NoBlending, OrthographicCamera, ShaderMaterial, Texture, Vector3, WebGLRenderTarget } from \"three\";\nimport { vert_fullscreen } from \"../../materials\";\n\nexport const LOD_MIN = 4;\nexport const _flatCamera = /*@__PURE__*/ new OrthographicCamera();\n// Golden Ratio\nconst PHI = (1 + Math.sqrt(5)) / 2;\nconst INV_PHI = 1 / PHI;\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nexport const _axisDirections = [\n\t/*@__PURE__*/ new Vector3(1, 1, 1),\n\t/*@__PURE__*/ new Vector3(- 1, 1, 1),\n\t/*@__PURE__*/ new Vector3(1, 1, - 1),\n\t/*@__PURE__*/ new Vector3(- 1, 1, - 1),\n\t/*@__PURE__*/ new Vector3(0, PHI, INV_PHI),\n\t/*@__PURE__*/ new Vector3(0, PHI, - INV_PHI),\n\t/*@__PURE__*/ new Vector3(INV_PHI, 0, PHI),\n\t/*@__PURE__*/ new Vector3(- INV_PHI, 0, PHI),\n\t/*@__PURE__*/ new Vector3(PHI, INV_PHI, 0),\n\t/*@__PURE__*/ new Vector3(- PHI, INV_PHI, 0)];\n\nexport const _Quality = { LOW: 0, MEDIUM: 1, HIGH: 2, ULTRA: 3 }\n\nexport function _setViewport(\n target: WebGLRenderTarget,\n x: number,\n y: number,\n width: number,\n height: number\n) {\n target.viewport.set(x, y, width, height);\n target.scissor.set(x, y, width, height);\n}\n\nexport function _getCommonVertexShader() {\n\n return /* glsl */`\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\t\t\t} else if ( face == 1.0 ) {\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\t\t\t} else if ( face == 2.0 ) {\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\t\t\t} else if ( face == 3.0 ) {\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\t\t\t} else if ( face == 4.0 ) {\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\t\t\t} else if ( face == 5.0 ) {\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\t\t}\n\t`;\n}\n\nexport function _getClearMaterial() {\n return new ShaderMaterial({\n name: \"Clear\",\n uniforms: {\n map: { value: null },\n intensity: { value: 1 }\n },\n vertexShader: vert_fullscreen,\n fragmentShader: /* glsl */ `\n uniform sampler2D map;\n uniform float intensity;\n varying vec2 vUv;\n void main() {\n vec4 col = texture2D(map, vUv);\n gl_FragColor = vec4(col.rgb * intensity, col.a);\n }\n `,\n blending: NoBlending,\n depthWrite: false,\n depthTest: false,\n })\n}\n\nexport function _getCubeMapMaterial() {\n return new ShaderMaterial({\n name: \"CubeMapToCubeUV\",\n uniforms: {\n envMap: { value: null },\n lod: { value: 0 },\n exposure: { value: 1 }\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: /* glsl */`\n precision mediump float;\n precision mediump int;\n\n varying vec3 vOutputDirection;\n uniform samplerCube envMap;\n uniform float lod;\n uniform float exposure;\n\n void main() {\n gl_FragColor = textureCubeLodEXT(envMap, vOutputDirection, lod);\n gl_FragColor.rgb *= exposure;\n }\n `,\n blending: AdditiveBlending,\n depthWrite: false,\n depthTest: false,\n });\n}\n\nexport function _getMipCopyMaterial(\n lodMax: number,\n width: number,\n height: number,\n) {\n return new ShaderMaterial({\n name: \"MipBlurToCubeUV\",\n defines: {\n CUBEUV_TEXEL_WIDTH: 1.0 / width,\n CUBEUV_TEXEL_HEIGHT: 1.0 / height,\n CUBEUV_MAX_MIP: `${lodMax}.0`,\n },\n uniforms: {\n cubeUVMap: { value: null },\n lod: { value: 0 },\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: /* glsl */ `\n precision mediump float;\n precision mediump int;\n\n #define ENVMAP_TYPE_CUBE_UV\n #include <cube_uv_reflection_fragment>\n\n varying vec3 vOutputDirection;\n\n uniform sampler2D cubeUVMap;\n uniform float lod;\n\n void main() {\n vec3 col = bilinearCubeUV(cubeUVMap, vOutputDirection, CUBEUV_MAX_MIP - lod);\n gl_FragColor = vec4(col, 1.);\n }\n `,\n blending: AdditiveBlending,\n depthWrite: false,\n depthTest: false,\n })\n}\n\nexport function _getMipBlurMaterial(\n lodMax: number,\n width: number,\n height: number,\n) {\n return new ShaderMaterial({\n name: \"MipBlurToCubeUV\",\n defines: {\n CUBEUV_TEXEL_WIDTH: 1.0 / width,\n CUBEUV_TEXEL_HEIGHT: 1.0 / height,\n CUBEUV_MAX_MIP: `${lodMax}.0`,\n },\n uniforms: {\n envMap: { value: null },\n cubeUVMap: { value: null },\n weight: { value: 1 },\n lod: { value: 0 },\n exposure: { value: 1 },\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: /* glsl */ `\n precision mediump float;\n precision mediump int;\n\n #define ENVMAP_TYPE_CUBE_UV\n #include <cube_uv_reflection_fragment>\n\n varying vec3 vOutputDirection;\n\n uniform sampler2D cubeUVMap;\n uniform samplerCube envMap;\n uniform float weight;\n uniform float lod;\n uniform float exposure;\n\n void main() {\n vec3 col0 = bilinearCubeUV(cubeUVMap, vOutputDirection, CUBEUV_MAX_MIP - (lod + 1.));\n vec3 col1 = textureCubeLodEXT(envMap, vOutputDirection, lod).rgb * exposure;\n gl_FragColor = vec4(mix(col0, col1, weight), 1.);\n }\n `,\n blending: NoBlending,\n depthWrite: false,\n depthTest: false,\n })\n}","export interface ICallTarget {\n uuid: string;\n}\n\nclass Caller {\n private _target: ICallTarget | null = null;\n private _callback: Function | null = null;\n private _interval: number = 0;\n private _repeat: number = 0;\n\n private _elapsed: number = 0;\n private _lastTime: number = 0;\n private _repeatForever: boolean = false;\n private _pause: boolean = false;\n\n get pause() {\n return this._pause;\n }\n\n set pause(v: boolean) {\n this._pause = v;\n }\n\n get target() {\n return this._target;\n }\n\n get callback() {\n return this._callback;\n }\n\n constructor(target: ICallTarget, callback: Function, interval: number, repeat: number) {\n this._target = target;\n this._callback = callback;\n this._interval = interval;\n this._repeat = repeat;\n this._repeatForever = repeat === -1;\n }\n\n get lived() {\n return this._repeat > 0 || this._repeatForever;\n }\n\n update(dt: number) {\n if (this._pause) return;\n if (this._repeat > 0 || this._repeatForever) {\n this._elapsed += dt;\n if (this._elapsed >= this._interval) {\n this.trigger(this._elapsed - this._lastTime);\n this._elapsed -= this._interval;\n this._lastTime = this._elapsed;\n this._repeat--;\n }\n }\n }\n\n trigger(dt: number) {\n if (this._target && this._callback) {\n this._callback.call(this._target, dt, this._elapsed);\n }\n }\n}\n\nclass Callers {\n private _target!: ICallTarget;\n private _callers!: Caller[];\n\n get target() {\n return this._target;\n }\n\n get callers() {\n return this._callers;\n }\n\n constructor(target: ICallTarget, callers: Caller[]) {\n this._target = target;\n this._callers = callers;\n }\n}\n\nexport class Scheduler {\n private _callers: { [k: string]: Caller[] } = {}\n private _callersArray: Callers[] = [];\n\n pause(target: ICallTarget) {\n let callers = this._callers[target.uuid];\n if (callers) callers.forEach(v => v.pause = true);\n }\n\n resume(target: ICallTarget) {\n let callers = this._callers[target.uuid];\n if (callers) callers.forEach(v => v.pause = false);\n }\n\n schedule(target: ICallTarget, callback: Function, interval: number, repeat: number) {\n let callers = this._callers[target.uuid];\n if (callers === undefined) {\n callers = this._callers[target.uuid] = [];\n this._callersArray.push(new Callers(target, callers));\n }\n callers.push(new Caller(target, callback, interval, repeat));\n }\n\n unshedule(target: ICallTarget, callback: Function) {\n let callers = this._callers[target.uuid];\n if (callers) {\n let index = callers.findIndex(v => v.callback === callback);\n if (index !== -1) callers.splice(index, 1);\n }\n }\n\n unscheduleAll(target: ICallTarget) {\n delete this._callers[target.uuid];\n let index = this._callersArray.findIndex(v => v.target === target);\n if (index !== -1) this._callersArray.splice(index, 1);\n }\n\n update(dt: number) {\n let callers: Caller[];\n let callersArray = this._callersArray;\n for (let j = callersArray.length; j--;) {\n callers = callersArray[j].callers;\n for (let i = callers.length; i--;) {\n if (callers[i].lived) callers[i].update(dt);\n else callers.splice(i, 1);\n }\n }\n }\n}","import { Component } from \"./Component\";\n\nclass Invoker<T> {\n protected _targets: T[] = [];\n protected _callback: (target: T, ...args: any[]) => any;\n\n constructor(callback: (target: T, ...args: any[]) => any) {\n this._callback = callback;\n }\n\n add(target: any) {\n this._targets.push(target);\n }\n\n remove(target: any) {\n let index = this._targets.indexOf(target);\n if (index !== -1) {\n this._targets.splice(index, 1);\n }\n }\n\n invoke(...args: any[]) {\n let callback = this._callback;\n for (let v of this._targets) {\n callback(v, ...args);\n }\n }\n}\n\nclass InvokerOneCall<T> extends Invoker<T> {\n invoke(dt: number) {\n if (this._targets.length > 0) {\n let callback = this._callback;\n for (let v of this._targets) {\n callback(v, dt);\n }\n this._targets.length = 0;\n }\n }\n}\n\nexport class ComponentScheduler {\n startInvoker: Invoker<Component> = new InvokerOneCall(comp => comp.start!());\n updateInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.update!(dt));\n lastUpdateInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.lastUpdate!(dt));\n renderInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.render!(dt));\n resizeInvoker: Invoker<Component> = new Invoker((comp, width, height) => comp.resize!(width, height));\n\n start() {\n this.startInvoker.invoke(0);\n }\n\n update(dt: number) {\n this.updateInvoker.invoke(dt);\n }\n\n lastUpdate(dt: number) {\n this.lastUpdateInvoker.invoke(dt);\n }\n\n render(dt: number) {\n this.renderInvoker.invoke(dt);\n }\n\n resize(width: number, height: number) {\n this.resizeInvoker.invoke(width, height);\n }\n\n enableComponent(comp: Component, enable: boolean) {\n if (enable) {\n if (!comp.flags.OnEnableCalled) {\n comp.flags.OnEnableCalled = true;\n if (comp.onEnable) {\n comp.onEnable();\n }\n if (typeof comp.start === \"function\" && !comp.flags.IsStartCalled) {\n comp.flags.IsStartCalled = true;\n this.startInvoker.add(comp);\n }\n if (typeof comp.update === \"function\") {\n this.updateInvoker.add(comp);\n }\n if (typeof comp.lastUpdate === \"function\") {\n this.lastUpdateInvoker.add(comp);\n }\n if (typeof comp.render === \"function\") {\n this.renderInvoker.add(comp);\n }\n if (typeof comp.resize === \"function\") {\n this.resizeInvoker.add(comp);\n }\n }\n }\n else {\n if (comp.flags.OnEnableCalled) {\n comp.flags.OnEnableCalled = false;\n if (comp.onDisable) {\n comp.onDisable();\n }\n if (typeof comp.start === \"function\" && !comp.flags.IsStartCalled) {\n this.startInvoker.remove(comp);\n }\n if (typeof comp.update === \"function\") {\n this.updateInvoker.remove(comp);\n }\n if (typeof comp.lastUpdate === \"function\") {\n this.lastUpdateInvoker.remove(comp);\n }\n if (typeof comp.render === \"function\") {\n this.renderInvoker.remove(comp);\n }\n if (typeof comp.resize === \"function\") {\n this.resizeInvoker.remove(comp);\n }\n }\n }\n }\n}","import { Object3D } from \"three\";\nimport { Scheduler } from \"./Scheduler\";\nimport { Component } from \"./Component\";\nimport { ComponentScheduler } from \"./ComponentScheduler\";\nimport { Viewer } from \"./Viewer\";\nimport { PropertyManager } from \"./PropertyManager\";\n\n\ntype ComponentConstructor = new (...args: any[]) => Component;\n\ninterface DependentInfo {\n mode: DependentMode;\n components: ComponentConstructor[];\n}\n\nexport enum DependentMode {\n /** Check only, throw error if dependent components do not exist. */\n CheckOnly,\n /** Auto add if dependent components do not exist. */\n AutoAdd\n}\n\nexport function dependencies(\n componentOrComponents: ComponentConstructor | ComponentConstructor[],\n mode: DependentMode = DependentMode.CheckOnly\n) {\n return function <T extends ComponentConstructor>(target: T): void {\n const components = Array.isArray(componentOrComponents) ? componentOrComponents : [componentOrComponents];\n ComponentManager._infoMap.set(target, { components, mode });\n }\n}\n\nexport class ComponentManager {\n static _infoMap = new Map<ComponentConstructor, DependentInfo>();\n\n private _viewer: Viewer;\n private _scheduler: Scheduler = new Scheduler();\n private _componentScheduler: ComponentScheduler = new ComponentScheduler();\n private _componentsMap = new Map<Object3D, Component[]>();\n\n get viewer() {\n return this._viewer;\n }\n\n get scheduler() {\n return this._scheduler;\n }\n\n get componentScheduler() {\n return this._componentScheduler;\n }\n\n constructor(viewer: Viewer) {\n this._viewer = viewer;\n }\n\n destroy() {\n this._componentsMap.forEach(components => components.forEach(comp => comp.destroy()));\n this._componentsMap.clear();\n }\n\n update(dt: number) {\n this._scheduler.update(dt);\n this._componentScheduler.start();\n this._componentScheduler.update(dt);\n this._componentScheduler.lastUpdate(dt);\n }\n\n render(dt: number) {\n this._componentScheduler.render(dt);\n }\n\n resize(width: number, height: number) {\n this.componentScheduler.resize(width, height);\n }\n\n destroyComponents(node: Object3D) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.forEach(comp => comp.destroy());\n this._componentsMap.delete(node);\n }\n for (let child of node.children) {\n this.destroyComponents(child);\n }\n }\n\n activeComponents(node: Object3D) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.forEach(comp => this._activeComponent(comp, node.visible));\n }\n for (let child of node.children) {\n this.activeComponents(child);\n }\n }\n\n addComponent<T extends Component>(node: Object3D | Component, instance: T): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: { new(): T }): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: any): T {\n let root = node instanceof Component ? node.node : node;\n let func = typeof constructor === \"function\";\n let component = this._findComponent(root, func ? constructor : constructor.constructor) as any;\n if (component === undefined) {\n component = func ? new constructor() : constructor;\n component.node = root;\n component.manager = this;\n component.viewer = this._viewer;\n\n PropertyManager._applyClassProperties(component.constructor.name, component.constructor);\n\n this._addDendencies(root, component.constructor);\n\n if (!component.flags.OnLoadCalled) {\n component.flags.OnLoadCalled = true;\n if (component.onLoad) {\n component.onLoad();\n }\n }\n\n let components = this._componentsMap.get(root);\n if (components === undefined) {\n this._componentsMap.set(root, [component]);\n }\n else {\n components.push(component);\n }\n\n this._activeComponent(component, component.enabled);\n }\n else {\n throw Error(\"Add multiple components\");\n }\n return component as T;\n }\n\n removeComponent(node: Object3D, component: Component) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.splice(components.indexOf(component), 1);\n }\n return this;\n }\n\n getComponent<T extends Component>(node: Object3D, constructor: { new(...args: any[]): T }, autoAdd: boolean = false): T {\n let comp = this._findComponent(node, constructor) as T;\n if (comp === undefined && autoAdd) {\n comp = this.addComponent(node, constructor);\n }\n return comp;\n }\n\n getComponentsInChidren<T extends Component>(node: Object3D, constructor: { new(): T }, out: T[] = []): T[] {\n let components = this._componentsMap.get(node);\n if (components) {\n for (let i = components.length; i--;) {\n if (components[i] instanceof (constructor as any)) out.push(components[i] as any);\n }\n for (let child of node.children) {\n this.getComponentsInChidren(child, constructor, out);\n }\n }\n return out;\n }\n\n traverseComponents(callback: (comp: Component) => void) {\n this._componentsMap.forEach(v => v.forEach(callback));\n }\n\n private _addDendencies(node: Object3D, constructor: ComponentConstructor) {\n while (constructor && constructor !== Component) {\n let info = ComponentManager._infoMap.get(constructor);\n if (info) {\n const { components, mode } = info;\n for (const dep of components) {\n if (!this.getComponent(node, dep)) {\n if (mode === DependentMode.AutoAdd) {\n this.addComponent(node, dep);\n } else {\n throw `Should add ${dep.name} before adding ${constructor.name}`;\n }\n }\n }\n }\n constructor = Object.getPrototypeOf(constructor);\n }\n }\n\n private _findComponent(node: Object3D, constructor: any) {\n let components = this._componentsMap.get(node);\n if (components) {\n for (let i = components.length; i--;) {\n let component = components[i];\n if (component instanceof constructor) {\n return component;\n }\n }\n }\n }\n\n protected _activeComponent(comp: Component, active: boolean) {\n this._componentScheduler.enableComponent(comp, active);\n }\n}","import { Task } from \"./Task\";\nimport { EventEmitter } from \"./base\";\n\n\nexport class TaskManager extends EventEmitter {\n private _tasks: Task[] = [];\n private _taskIndex: number = 0;\n private _percent: number = 0;\n\n get percent() {\n return this._percent;\n }\n\n constructor(\n public onComplete?: () => void,\n public onProgress?: (task: Task, loaded: number, total: number) => void,\n public onError?: (task: Task) => void,\n ) {\n super();\n }\n\n destroy() {\n this._tasks.length = 0;\n this._taskIndex = 0;\n this._percent = 0;\n }\n\n add(task: Task) {\n this._tasks.push(task);\n }\n\n update() {\n let task = this._tasks[this._taskIndex];\n if (task) {\n try {\n task.excute();\n }\n catch (e) {\n console.error(e);\n this.onError && this.onError(task);\n }\n this._percent = ++this._taskIndex / this._tasks.length;\n this.onProgress && this.onProgress(task, this._taskIndex, this._tasks.length);\n\n if (this._taskIndex === this._tasks.length) {\n this._percent = 1;\n this.onComplete && this.onComplete();\n }\n }\n }\n}","import { FloatType, HalfFloatType, UnsignedByteType, WebGLRendererParameters } from \"three\";\nimport { SystemInfo } from \"./SystemInfo\";\nimport { Logger } from \"./base\";\n\nexport function parepareWebGL(canvas: HTMLCanvasElement, props: WebGLRendererParameters) {\n let isSupportedBrowser = (SystemInfo.isChrome || SystemInfo.isSafari || SystemInfo.isEdge || SystemInfo.isFirefox || SystemInfo.isOpera) && !SystemInfo.isIE;\n if (!isSupportedBrowser) {\n Logger.error(\"Unsupport platform\");\n return null;\n }\n if (!(canvas instanceof HTMLCanvasElement)) {\n Logger.error(\"Canvas is null\");\n return null;\n }\n\n let webglOpts = Object.assign({\n alpha: false,\n depth: true,\n stencil: true,\n antialias: false,\n premultipliedAlpha: true,\n preserveDrawingBuffer: false,\n powerPreference: \"high-performance\",\n failIfMajorPerformanceCaveat: false\n }, props);\n\n if (window.WebGL2RenderingContext) {\n try {\n const gl = canvas.getContext(\"webgl2\", webglOpts) as WebGL2RenderingContext;\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: HalfFloatType,\n DATA_FLOAT_TYPE: FloatType\n }\n }\n catch (err) {\n Logger.error(err);\n return null;\n }\n }\n else if (window.WebGLRenderingContext) {\n const gl = (canvas.getContext(\"webgl\", webglOpts) || canvas.getContext(\"webgl2\", webglOpts) || canvas.getContext(\"experimental-webgl\", webglOpts)) as WebGLRenderingContext;\n if ((gl.getExtension(\"OES_texture_float\") || gl.getExtension(\"OES_texture_half_float\")) && gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS)) {\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: SystemInfo.isIOS || gl.getExtension(\"OES_texture_half_float\") ? HalfFloatType : FloatType,\n DATA_FLOAT_TYPE: FloatType,\n }\n }\n else if (this._floatPacking) {\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: UnsignedByteType,\n DATA_FLOAT_TYPE: UnsignedByteType\n }\n }\n Logger.debug(\"Unspport float type in current platform\");\n return null;\n }\n return null;\n}","export enum Orientation {\n AUTO,\n LANDSCAPE,\n PORTRAIT,\n}","import { LoadingManager } from \"three\";\nimport { TextureSettings } from \"../TextureSettings\";\nimport { Loader } from \"./Loader\";\n\nexport interface AssetProperties extends TextureSettings {\n url?: string,\n ext?: string,\n buffer?: string | ArrayBuffer,\n path?: string;\n resourcePath?: string;\n dracoPath?: string;\n manager?: LoadingManager;\n onProgress?: (event: ProgressEvent) => void,\n}\n\nexport type LoaderConstructor = new (manager: ResourceManager) => Loader;\n\nexport class ResourceManager {\n\n static extension(path: string) {\n let str = path.split(\".\");\n if (str.length > 1) {\n return str.pop().toLowerCase();\n }\n return \"\";\n }\n\n static dirname(path: string) {\n let index = path.lastIndexOf(\"/\");\n return index !== -1 ? path.substring(0, index) : \"\";\n }\n\n static basename(path: string, ext?: string) {\n let str = path.split(\"/\").pop();\n return ext ? str.replace(\".\" + ext, \"\") : str;\n }\n\n static _texSettingKeys = [\n \"flipY\", \"mapping\", \"wrapS\", \"wrapT\", \"dataType\",\n \"magFilter\", \"minFilter\", \"format\", \"anisotropy\", \"repeat\", \"colorSpace\", \"channel\",\n ]\n static _splitTextureSettings(props: TextureSettings & { [k: string]: any }) {\n let settings = {};\n for (let v of ResourceManager._texSettingKeys) {\n if (props[v] !== undefined) {\n if (v === \"dataType\") {\n settings[\"type\"] = props[v];\n }\n else {\n settings[v] = props[v];\n }\n }\n }\n return settings;\n }\n\n private _loaders: Map<string, Loader> = new Map();\n\n destroy() {\n this._loaders.clear();\n }\n\n getLoader(ext: string) {\n return this._loaders.get(ext);\n }\n\n addLoader(Loader: LoaderConstructor) {\n let loader = new Loader(this);\n for (let ext of loader.extension) {\n this._loaders.set(ext, loader);\n }\n return loader;\n }\n\n loadAsset<T = any>({\n url,\n buffer,\n ext,\n path,\n resourcePath,\n dracoPath,\n manager,\n onProgress,\n ...props\n }: AssetProperties) {\n return new Promise<T>((resolve, reject) => {\n\n const sel = ext || url && ResourceManager.extension(url) || \"\";\n const texSettings = ResourceManager._splitTextureSettings(props);\n\n if (this._loaders.has(sel)) {\n this._loaders.get(sel).load({\n url,\n buffer,\n texSettings,\n path,\n resourcePath,\n dracoPath,\n manager,\n onProgress,\n onLoad: resolve,\n onError: (err) => {\n console.error(`${url} not exist`, err)\n reject(err)\n },\n });\n }\n else {\n reject(\"ResourceManager.loadAsset: missing loader for \" + sel);\n }\n })\n }\n}","import {\n BufferGeometry,\n Camera,\n ClampToEdgeWrapping,\n ColorSpace,\n DataTexture,\n DirectionalLightShadow,\n Euler,\n Float32BufferAttribute,\n FloatType,\n LinearFilter,\n LinearMipMapLinearFilter,\n LinearSRGBColorSpace,\n LinearToneMapping,\n LoadingManager,\n Material,\n MathUtils,\n Mesh,\n NearestFilter,\n Object3D,\n OrthographicCamera,\n PCFSoftShadowMap,\n PerspectiveCamera,\n RGBAFormat,\n Scene,\n ShadowMapType,\n SRGBColorSpace,\n Texture,\n TextureDataType,\n ToneMapping,\n UnsignedByteType,\n UVMapping,\n Vector3,\n WebGLCubeRenderTarget,\n WebGLRenderer,\n WebGLRendererParameters,\n WebGLRenderTarget,\n} from \"three\";\n\nimport { EventEmitter, getClassInstance } from \"./base\";\nimport { ComponentManager } from \"./ComponentManager\";\nimport { TaskManager } from \"./TaskManager\";\nimport { parepareWebGL } from \"./WebGL\";\nimport { DeviceInput } from \"./DeviceInput\";\nimport { Orientation } from \"./enums/Orientation\";\nimport { AssetProperties, LoaderConstructor, ResourceManager } from \"./asset/ResourceManager\";\nimport { __C, __Comp, __P } from \"./types\";\nimport { Component } from \"./Component\";\nimport { applyProps } from \"./Utils\";\nimport { SystemInfo } from \"./SystemInfo\";\nimport { BINLoader, GLTFLoader, HDRLoader, JSONLoader, TextureLoader } from \"./loaders\";\nimport { Task } from \"./Task\";\nimport { Mount } from \"./Mount\";\n\nexport class Viewer extends EventEmitter {\n static __target: Vector3 = new Vector3();\n static __worldPos: Vector3 = new Vector3();\n\n static _shadowCameraKeys = [\"top\", \"bottom\", \"left\", \"right\", \"near\", \"far\"];\n static _setDirectLightShadow(shadow: DirectionalLightShadow, props: number[]) {\n const shadowCamera = shadow.camera;\n for (let i = 0; i < props.length && i < 6; i++) {\n shadowCamera[Viewer._shadowCameraKeys[i]] = props[i];\n }\n if (props.length > 6) {\n shadow.bias = props[6];\n }\n if (props.length > 8) {\n shadow.mapSize.set(props[7], props[8]);\n }\n return shadow;\n }\n\n static CompileMaterial(\n renderer: WebGLRenderer,\n scene: Scene,\n camera: Camera,\n target: Material | Material[],\n ) {\n Viewer.fullscreenMesh.material = target;\n renderer.compile(Viewer.fullscreenMesh, camera, scene);\n }\n\n static CompileObject3D(\n renderer: WebGLRenderer,\n scene: Scene,\n camera: Camera,\n target: Object3D\n ) {\n renderer.compile(target, camera, scene);\n }\n\n static CompileTexture(\n renderer: WebGLRenderer,\n target: Texture | Texture[]\n ) {\n if (Array.isArray(target)) {\n for (let v of target) {\n renderer.initTexture(v);\n }\n }\n else {\n renderer.initTexture(target);\n }\n }\n\n static Blit(\n renderer: WebGLRenderer,\n renderTarget: WebGLRenderTarget | null,\n material: Material,\n lod?: number,\n face?: number\n ) {\n Viewer.fullscreenMesh.material = material;\n const RT = renderer.getRenderTarget();\n renderer.setRenderTarget(renderTarget, face, lod);\n renderer.render(Viewer.fullscreenMesh, Viewer.fullscreenCamera);\n renderer.setRenderTarget(RT);\n }\n\n static CreateFullscreenTriangle() {\n let geometry = new BufferGeometry();\n geometry.setAttribute('position', new Float32BufferAttribute([- 1, 3, 0, - 1, - 1, 0, 3, - 1, 0], 3));\n geometry.setAttribute('uv', new Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2));\n return geometry;\n }\n\n static fullscreenMesh: Mesh = new Mesh(Viewer.CreateFullscreenTriangle());\n static fullscreenCamera: OrthographicCamera = new OrthographicCamera(- 1, 1, 1, - 1, 0, 1);\n static instanceCount: number = 0;\n\n private _instanceId: number = Viewer.instanceCount++;\n private _root: HTMLElement;\n private _canvas: HTMLCanvasElement;\n private _container: HTMLElement;\n private _gl: WebGLRenderingContext | WebGL2RenderingContext;\n private _RENDER_TARGET_FLOAT_TYPE: TextureDataType;\n private _DATA_FLOAT_TYPE: TextureDataType;\n\n private _scene: Scene;\n private _camera: PerspectiveCamera;\n private _mount: Object3D;\n private _renderer: WebGLRenderer;\n private _input: DeviceInput;\n\n private _dpr: number = 1;\n private _width: number = 1;\n private _height: number = 1;\n private _viewport: { width: number, height: number, factor: number } = { width: 1, height: 1, factor: 1 };\n private _orientation: Orientation = Orientation.AUTO;\n private _defaultProps: { path?: string, resourcePath?: string, dracoPath?: string, manager?: LoadingManager } = {};\n\n private _running: boolean = false;\n private _rootRotated: boolean = false;\n\n private _time: number = 0;\n private _lastTime: number = 0;\n private _lastFrameTime: number = 0;\n private _targetFrameRate: number = -1;\n private _fixedFrameTime: boolean = false;\n private _autoResize: boolean = true;\n\n private _taskManager: TaskManager;\n private _resourceManager: ResourceManager;\n private _componentManager: ComponentManager;\n private _loadingManager: LoadingManager;\n\n get root() {\n return this._root;\n }\n get container() {\n return this._container;\n }\n get time() {\n return this._time;\n }\n get scene() {\n return this._scene;\n }\n get camera() {\n return this._camera;\n }\n get renderer() {\n return this._renderer;\n }\n get canvas() {\n return this._canvas;\n }\n get gl() {\n return this._gl;\n }\n get RENDER_TARGET_FLOAT_TYPE() {\n return this._RENDER_TARGET_FLOAT_TYPE;\n }\n get DATA_FLOAT_TYPE() {\n return this._DATA_FLOAT_TYPE;\n }\n get dpr() {\n return this._dpr;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get viewport() {\n return this._viewport;\n }\n get rootRotated() {\n return this._rootRotated;\n }\n get input() {\n return this._input;\n }\n get targetFrameRate() {\n return this._targetFrameRate;\n }\n set targetFrameRate(v: number) {\n this._targetFrameRate = Math.max(0.001, v);\n }\n\n get instanceId() {\n return this._instanceId;\n }\n get loadingManager() {\n return this._loadingManager;\n }\n get resourceManager() {\n return this._resourceManager;\n }\n get taskManager() {\n return this._taskManager;\n }\n\n constructor({\n root,\n canvas,\n container,\n autoStart = true,\n autoResize = true,\n shadows = false,\n camera = { fov: 45, near: 0.1, far: 1000, position: new Vector3(0, 0, 4) },\n targetFrameRate = -1,\n fixedFrameTime = false,\n colorSpace = SRGBColorSpace,\n toneMapping = LinearToneMapping,\n toneMappingExposure = 1,\n maxDPR = 1.5,\n path = \"\",\n resourcePath = \"\",\n dracoPath = \"https://www.gstatic.com/draco/v1/decoders/\",\n orientation = Orientation.AUTO,\n loader = {},\n tasker = {},\n ...webglOpts\n }: {\n root?: HTMLElement;\n canvas?: HTMLCanvasElement;\n container?: HTMLDivElement;\n targetFrameRate?: number;\n fixedFrameTime?: boolean;\n autoStart?: boolean;\n autoResize?: boolean;\n shadows?: boolean | ShadowMapType;\n colorSpace?: ColorSpace;\n toneMapping?: ToneMapping;\n toneMappingExposure?: number;\n maxDPR?: number;\n path?: string;\n resourcePath?: string;\n dracoPath?: string;\n orientation?: Orientation;\n camera?: {\n fov?: number;\n aspect?: number;\n near?: number;\n far?: number;\n position?: Vector3;\n rotation?: Euler;\n };\n loader?: {\n onLoad?: () => void,\n onProgress?: (url: string, loaded: number, total: number) => void,\n onError?: (url: string) => void,\n };\n tasker?: {\n onComplete?: () => void,\n onProgress?: (target: Object, loaded: number, total: number) => void,\n onError?: (target: Object) => void,\n };\n } & WebGLRendererParameters = {}) {\n super();\n const el = canvas || document.getElementById(\"canvas\") as HTMLCanvasElement;\n const webgl = parepareWebGL(el, webglOpts);\n if (!webgl) {\n throw Error(\"Unsupport WebGL in current platform\");\n }\n\n this._root = root || el;\n this._canvas = el;\n this._container = container || el.parentElement;\n this._gl = webgl.gl;\n this._RENDER_TARGET_FLOAT_TYPE = webgl.RENDER_TARGET_FLOAT_TYPE;\n this._DATA_FLOAT_TYPE = webgl.DATA_FLOAT_TYPE;\n this._dpr = Math.min(maxDPR, window.devicePixelRatio);\n this._orientation = orientation;\n\n this._scene = new Scene();\n this._camera = applyProps(new PerspectiveCamera(), camera);\n this._renderer = new WebGLRenderer({ canvas: el, context: webgl.gl });\n this._renderer.setPixelRatio(this._dpr);\n this._renderer.outputColorSpace = colorSpace;\n this._renderer.toneMapping = toneMapping;\n this._renderer.toneMappingExposure = toneMappingExposure;\n this._renderer.shadowMap.enabled = !!shadows;\n this._renderer.shadowMap.type = typeof shadows === \"boolean\" ? PCFSoftShadowMap : shadows;\n this._renderer.info.autoReset = false;\n\n this._mount = new Object3D();\n this._resourceManager = new ResourceManager();\n this._loadingManager = new LoadingManager(loader.onLoad, loader.onProgress, loader.onError);\n this._taskManager = new TaskManager(tasker.onComplete, tasker.onProgress, tasker.onError);\n this._componentManager = new ComponentManager(this);\n this._defaultProps = { path, resourcePath, dracoPath, manager: this._loadingManager };\n\n this._autoResize = autoResize;\n this._targetFrameRate = targetFrameRate;\n this._input = new DeviceInput(this);\n this._input.addEventListeners();\n\n this._addDefaultLoaders();\n\n if (autoStart) {\n this.start();\n }\n\n this.rotate();\n this.resize();\n }\n\n destroy() {\n this.stop();\n this._renderer.dispose();\n this._taskManager.destroy();\n this._resourceManager.destroy();\n this._componentManager.destroy();\n this._input.removeAllListeners();\n }\n\n private _addDefaultLoaders() {\n this.addLoader(GLTFLoader);\n this.addLoader(HDRLoader);\n this.addLoader(TextureLoader);\n this.addLoader(JSONLoader);\n this.addLoader(BINLoader);\n }\n\n private _frame(time: number) {\n this._time = time;\n\n if (this._targetFrameRate > -1) {\n const interval = 1 / this._targetFrameRate;\n const delta = this._time - this._lastFrameTime;\n\n if (delta >= interval) {\n this.loop(this._fixedFrameTime ? interval : this._time - this._lastTime);\n this._lastTime = this._time;\n this._lastFrameTime = this._time - (delta % interval);\n }\n }\n else {\n this.loop(this._time - this._lastTime);\n this._lastTime = this._time;\n }\n }\n\n loop(dt: number) {\n dt = Math.min(dt, 0.067);\n this.update(dt);\n this.render(dt);\n }\n\n update(dt: number) {\n this._taskManager.update();\n this._componentManager.update(dt);\n }\n\n render(dt: number) {\n this._renderer.info.reset();\n this._rendering(dt);\n this._componentManager.render(dt);\n }\n\n _rendering(dt: number) {\n this._renderer.render(this._scene, this._camera);\n }\n\n _resizing(width: number, height: number) {\n this._renderer.setSize(width, height)\n }\n\n start() {\n if (this._running == false) {\n this._running = true;\n const frameCallback = (time: number) => {\n if (this._running) {\n this._frame(time * 0.001);\n }\n }\n this._renderer.setAnimationLoop(frameCallback);\n }\n return this;\n }\n\n stop() {\n this._running = false;\n this._time = this._lastTime = 0;\n return this;\n }\n\n rotate() {\n let width: number = window.innerWidth;\n let height: number = window.innerHeight;\n\n if (this._orientation === Orientation.LANDSCAPE) {\n this._rootRotated = width < height;\n }\n else if (this._orientation === Orientation.PORTRAIT) {\n this._rootRotated = width > height;\n }\n else { //Auto\n return;\n }\n\n if (this._rootRotated) {\n let tmp = width;\n width = height;\n height = tmp;\n }\n\n const root = this._root;\n if (this._rootRotated) {\n root.style['-webkit-transform'] = 'rotate(90deg)';\n root.style.transform = 'rotate(90deg)';\n root.style['-webkit-transform-origin'] = '0px 0px 0px';\n root.style.transformOrigin = '0px 0px 0px';\n root.style.margin = `0 0 0 ${height}px`;\n root.style.width = `${width}px`;\n root.style.height = `${height}px`;\n }\n else {\n root.style['-webkit-transform'] = 'rotate(0deg)';\n root.style.transform = 'rotate(0deg)';\n root.style.margin = '0px auto';\n root.style.width = `${width}px`;\n root.style.height = `${height}px`;\n }\n }\n\n resize(\n width: number = this._container.offsetWidth,\n height: number = this._container.offsetHeight\n ) {\n if (!this._autoResize) {\n return;\n }\n\n if (this._rootRotated) {\n let tmp = width;\n width = height;\n height = tmp;\n }\n\n this._width = width;\n this._height = height;\n\n let camera = this._camera as any;\n if (camera.isOrthographicCamera) {\n this._viewport = { width: width / camera.zoom, height: height / camera.zoom, factor: 1 };\n }\n else if (camera.isPerspectiveCamera) {\n if (!camera.manual) {\n camera.aspect = width / height;\n camera.updateProjectionMatrix();\n }\n let distance = camera.getWorldPosition(Viewer.__worldPos).distanceTo(Viewer.__target);\n let h = 2 * Math.tan(MathUtils.degToRad(camera.fov * 0.5)) * distance;\n let w = h * width / height;\n this._viewport = { width: w, height: h, factor: width / w };\n }\n\n this._resizing(width, height);\n this._componentManager.resize(width, height);\n }\n\n loadAsset(props: AssetProperties) {\n return this._resourceManager.loadAsset(Object.assign({}, this._defaultProps, props));\n }\n\n getLoader(ext: string) {\n return this._resourceManager.getLoader(ext);\n }\n\n addLoader(Loader: LoaderConstructor) {\n return this._resourceManager.addLoader(Loader);\n }\n\n traverseMaterials(callback: (mat: Material) => void) {\n this._scene.traverse((item: any) => {\n if (item.material) {\n if (Array.isArray(item.material)) item.material.forEach(callback);\n else callback(item.material);\n }\n })\n }\n\n traverseComponents(callback: (comp: Component) => void) {\n return this._componentManager.traverseComponents(callback);\n }\n\n mount<T extends Mount>(constructor: { new(...args: any[]): T }, autoAdd: boolean = false): T {\n return this._componentManager.getComponent(this._mount, constructor, autoAdd);\n }\n\n task(task: Task) {\n this._taskManager.add(task);\n }\n\n add<T extends Object3D | Component, K extends __C<T>>(object: T | K & __C<T>, props?: __P<T, K>): T;\n add(object: any, {\n node,\n args,\n debug,\n scale,\n position,\n rotation,\n shadowArgs,\n makeDefault,\n component,\n layer,\n parent = this._scene,\n ...props\n }: any = {}\n ) {\n let ins = getClassInstance(object, args);\n if (ins.isObject3D) {\n node = ins;\n }\n else if (ins.isMount) {\n node = this._mount;\n this._componentManager.addComponent(node, ins);\n }\n else if (ins.isComponent) {\n node = node || ins.node || new Object3D();\n this._componentManager.addComponent(node, ins);\n }\n else {\n throw Error(\"Unsuport object\");\n }\n\n if (!node.parent) {\n parent.add(node);\n }\n\n if (component) {\n const components = Array.isArray(component) ? component : [component];\n for (const comp of components) {\n this._componentManager.addComponent(node, comp);\n }\n }\n\n if (layer) {\n node.layers.mask = layer;\n }\n\n if (scale || position || rotation) {\n applyProps(node, { scale, position, rotation });\n }\n if (props) {\n applyProps(ins, props);\n }\n\n if (ins.isCamera && makeDefault) {\n ins.manual = ins.aspect !== this._camera.aspect;\n this._camera = ins;\n }\n if (shadowArgs) {\n if (node.isDirectionalLight) Viewer._setDirectLightShadow(node.shadow, shadowArgs);\n }\n\n return ins;\n }\n\n remove<T extends Object3D | Component>(ins: T): T {\n if (ins instanceof Object3D) {\n this._componentManager.destroyComponents(ins);\n ins.removeFromParent();\n }\n else if (ins instanceof Component) {\n this._componentManager.removeComponent(ins.node, ins);\n }\n else {\n throw Error(\"remove invalid\");\n }\n return ins;\n }\n\n createRenderTarget(\n width: number,\n height: number,\n nearest: boolean = false,\n floatType: boolean | TextureDataType = false,\n msaa: number = 0,\n mipmap: boolean = false,\n depth: boolean = false,\n ) {\n return new WebGLRenderTarget(width, height, {\n wrapS: ClampToEdgeWrapping,\n wrapT: ClampToEdgeWrapping,\n magFilter: nearest ? NearestFilter : LinearFilter,\n minFilter: nearest ? NearestFilter : mipmap ? LinearMipMapLinearFilter : LinearFilter,\n type: typeof floatType === \"boolean\" ? floatType ? this.DATA_FLOAT_TYPE : UnsignedByteType : floatType,\n anisotropy: 0,\n colorSpace: LinearSRGBColorSpace,\n depthBuffer: depth,\n stencilBuffer: false,\n samples: SystemInfo.isSupportMSAA ? msaa : 0,\n generateMipmaps: mipmap,\n })\n }\n\n createCubeRenderTarget(\n size: number,\n nearest: boolean = false,\n floatType: boolean | TextureDataType = false,\n msaa: number = 0,\n mipmap: boolean = false,\n depth: boolean = false,\n ) {\n return new WebGLCubeRenderTarget(size, {\n wrapS: ClampToEdgeWrapping,\n wrapT: ClampToEdgeWrapping,\n magFilter: nearest ? NearestFilter : LinearFilter,\n minFilter: nearest ? NearestFilter : mipmap ? LinearMipMapLinearFilter : LinearFilter,\n type: typeof floatType === \"boolean\" ? floatType ? this.DATA_FLOAT_TYPE : UnsignedByteType : floatType,\n anisotropy: 0,\n colorSpace: LinearSRGBColorSpace,\n depthBuffer: depth,\n stencilBuffer: false,\n samples: SystemInfo.isSupportMSAA ? msaa : 0,\n generateMipmaps: mipmap\n })\n }\n\n createDataTexture(\n data: ArrayBufferView,\n width: number,\n height: number,\n floatType: boolean = false,\n nearest: boolean = true,\n ) {\n return new DataTexture(\n data, width, height,\n RGBAFormat,\n floatType ? FloatType : UnsignedByteType,\n UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping,\n nearest ? NearestFilter : LinearFilter,\n nearest ? NearestFilter : LinearFilter,\n 0\n );\n }\n\n /**\n * 传送门,得到一个全新的场景\n * @param callback 禁止使用异步函数,会导致状态错误\n * @returns \n */\n portal<T = any>(\n callback: () => T,\n sceneNew: Scene = new Scene()\n ) {\n const scene = this._scene;\n const camera = this._camera;\n this._scene = sceneNew;\n const result = callback();\n this._scene = scene;\n this._camera = camera;\n return result;\n }\n\n blit(\n renderTarget: WebGLRenderTarget,\n material: Material,\n lod?: number,\n face?: number\n ) {\n Viewer.Blit(this._renderer, renderTarget, material, lod, face);\n }\n\n compile(target?: Object3D | Scene | Material | Texture): void;\n compile(target?: Material[]): void;\n compile(target?: any) {\n if (Array.isArray(target)) {\n if (target.every(v => v.isMaterial)) {\n Viewer.CompileMaterial(this._renderer, this._scene, this._camera, target);\n }\n else {\n throw Error(\"Viewer.compile: unsuport material\");\n }\n }\n else if (typeof target === \"object\") {\n if (target.isMaterial) {\n Viewer.CompileMaterial(this._renderer, this._scene, this._camera, target);\n }\n else if (target.isObject3D) {\n if (target.meshData.materials) {\n Viewer.CompileMaterial(this._renderer, this._scene, this._camera, Object.values(target.meshData.materials));\n }\n if (target.meshData.textures) {\n Viewer.CompileTexture(this._renderer, Object.values(target.meshData.textures));\n }\n if (!target.meshData.meshes) {\n Viewer.CompileObject3D(this._renderer, this._scene, this._camera, target);\n }\n }\n else if (target.isTexture) {\n Viewer.CompileTexture(this._renderer, target);\n }\n }\n else {\n Viewer.CompileObject3D(this._renderer, this._scene, this._camera, this._scene);\n }\n }\n}","import { CubeTexture, Mesh, PMREMGenerator, ShaderMaterial, Texture, WebGLRenderTarget, WebGLRenderer } from \"three\";\nimport { LOD_MIN, _Quality, _axisDirections, _flatCamera, _getClearMaterial, _getCubeMapMaterial, _setViewport } from \"./utils\";\nimport { Viewer } from \"../../Viewer\";\nimport { MergeInfo } from \"./MergeInfo\";\n\nexport class MergeRefectPass {\n private _pmremGenerator: any;\n private _reflectMap: Texture;\n private _envMapTarget: WebGLRenderTarget;\n private _sourceTarget: WebGLRenderTarget;\n\n get envMap() {\n return this._envMapTarget.texture;\n }\n\n constructor({\n envMap,\n reflectMap,\n viewer,\n }: {\n envMap?: Texture;\n reflectMap: CubeTexture;\n viewer: Viewer;\n }) {\n this._reflectMap = reflectMap;\n this._pmremGenerator = this._getPMREMExtension(viewer.renderer);\n this._envMapTarget = this._pmremGenerator._fromTextureExtension(reflectMap, envMap);\n this._sourceTarget = this._envMapTarget.clone();\n this._pmremGenerator._copyTexture(this._sourceTarget, this._envMapTarget.texture);\n }\n\n dispose() {\n this._sourceTarget.dispose();\n this._envMapTarget.dispose();\n this._pmremGenerator.dispose();\n }\n\n mergeReflect(info: MergeInfo) {\n this._pmremGenerator._copyTexture(this._envMapTarget, this._sourceTarget.texture, info.envMapIntensity);\n this._pmremGenerator._mergeReflect(this._envMapTarget, this._reflectMap, info.quality);\n\n info.envMapTarget = this._envMapTarget;\n info.lodMax = this._pmremGenerator._lodMeshes.length - 1;\n }\n\n private _getPMREMExtension(renderer: WebGLRenderer) {\n const pmremGenerator = new PMREMGenerator(renderer) as any;\n pmremGenerator._fromTextureExtension = function (reflectMap: CubeTexture, envMap?: Texture) {\n const target = envMap ? this._fromTexture(envMap) : this._fromCubeTexture(reflectMap);\n this._cubeMapMaterial = _getCubeMapMaterial();\n this._copyTexMaterial = _getClearMaterial();\n this._copyMesh = new Mesh(Viewer.fullscreenMesh.geometry, this._copyTexMaterial);\n this._lodMeshes = this._lodPlanes.map(v => new Mesh(v, this._cubeMapMaterial));\n this._sourceInit = false;\n return target;\n }\n pmremGenerator._fromCubeTexture = function (texture: CubeTexture) {\n this._setSize(texture.image.length === 0 ? 16 : (texture.image[0].width || texture.image[0].image.width));\n return this._allocateTargets();\n }\n pmremGenerator._copyTexture = function (\n targetOut: WebGLRenderTarget,\n texture: Texture,\n intensity: number = 1,\n ) {\n const uniforms = this._copyTexMaterial.uniforms;\n uniforms.map.value = texture;\n uniforms.intensity.value = intensity;\n\n targetOut.scissorTest = false;\n _setViewport(targetOut, 0, 0, targetOut.width, targetOut.height);\n\n const renderer = this._renderer;\n renderer.autoClear = true;\n renderer.setRenderTarget(targetOut);\n renderer.render(this._copyMesh, _flatCamera);\n renderer.setRenderTarget(null);\n }\n pmremGenerator._clearTexture = function (\n targetOut: WebGLRenderTarget,\n intensity?: number,\n ) {\n this._copyTexture(targetOut, this._sourceTarget.texture, intensity);\n }\n pmremGenerator._mergeReflect = function (\n sourceTarget: WebGLRenderTarget,\n reflectMap: CubeTexture,\n quality: number,\n ) {\n const renderer = this._renderer;\n const autoClear = renderer.autoClear;\n const cubeMapMaterial = this._cubeMapMaterial;\n\n const uniforms = this._cubeMapMaterial.uniforms;\n uniforms.envMap.value = reflectMap;\n\n renderer.autoClear = false;\n\n if (quality === _Quality.HIGH) {\n for (let i = 0; i < this._lodMeshes.length - 1; i++) {\n uniforms.lod.value = i < 5 ? 0 : i;\n this._blit(sourceTarget, i, cubeMapMaterial);\n }\n }\n else if (quality === _Quality.MEDIUM) {\n for (let i = 0; i < this._lodMeshes.length; i++) {\n if (i < 4) {\n uniforms.lod.value = 0;\n this._blit(sourceTarget, i, cubeMapMaterial);\n }\n else {\n this._pmremblur(sourceTarget, i - 1, i);\n }\n }\n }\n else if (quality === _Quality.ULTRA) {\n uniforms.lod.value = 0;\n this._blit(sourceTarget, 0, cubeMapMaterial);\n for (let i = 1; i < this._lodMeshes.length; i++) {\n this._pmremblur(sourceTarget, i - 1, i);\n }\n }\n\n sourceTarget.scissorTest = false;\n _setViewport(sourceTarget, 0, 0, sourceTarget.width, sourceTarget.height);\n\n renderer.autoClear = autoClear;\n }\n pmremGenerator._pmremblur = function (\n targetOut: WebGLRenderTarget,\n lodIn: number,\n lodOut: number,\n ) {\n const sigma = Math.sqrt(this._sigmas[lodOut] * this._sigmas[lodOut] - this._sigmas[lodIn] * this._sigmas[lodIn]);\n const poleAxis = _axisDirections[(lodIn) % _axisDirections.length];\n this._blur(targetOut, lodIn, lodOut, sigma, poleAxis);\n }\n pmremGenerator._blit = function (\n targetOut: WebGLRenderTarget,\n lodOut: number,\n material: ShaderMaterial,\n ) {\n const renderer = this._renderer;\n const _lodMax = this._lodMax;\n const outputSize = this._sizeLods[lodOut];\n const x = 3 * outputSize * (lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0);\n const y = 4 * (this._cubeSize - outputSize);\n _setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize);\n const lodMesh = this._lodMeshes[lodOut];\n lodMesh.material = material;\n renderer.autoClear = false;\n renderer.setRenderTarget(targetOut);\n renderer.render(lodMesh, _flatCamera);\n }\n return pmremGenerator;\n }\n}\n","import { MathUtils } from \"three\";\n\nexport function mipGaussianBlendWeight(sigma: number, lod: number) {\n let sigma2 = sigma * sigma;\n let c = 2.0 * Math.PI * sigma2;\n let numerator = Math.pow(16, lod) * 1.386294361; //log(4)\n let denorminator = c * (Math.pow(4, lod) + c);\n return MathUtils.clamp(numerator / denorminator, 0, 1);\n}\n","import { CubeTexture, MathUtils, Mesh, PMREMGenerator, ShaderMaterial, Texture, WebGLRenderTarget, WebGLRenderer } from \"three\";\nimport { mipGaussianBlendWeight } from \"../mipGaussianBlendWeight\";\nimport { LOD_MIN, _flatCamera, _getMipBlurMaterial, _getMipCopyMaterial, _setViewport } from \"./utils\";\nimport { Viewer } from \"../../Viewer\";\nimport { MergeInfo } from \"./MergeInfo\";\n\nconst MAX_LOD = 10;\n\nexport class MergeMipBlurPass {\n private _pmremGenerator: any;\n private _sigma: number = 2;\n private _blurMinLod: number = 0;\n private _blurMaxLod: number = MAX_LOD;\n private _blurIntensity: number = -1;\n private _envMapTarget: WebGLRenderTarget;\n private _reflectMap: CubeTexture;\n\n get envMapTarget() {\n return this._envMapTarget;\n }\n\n get envMap() {\n return this._envMapTarget.texture;\n }\n\n constructor({\n viewer,\n reflectMap,\n }: {\n viewer: Viewer;\n reflectMap: CubeTexture;\n }) {\n this._reflectMap = reflectMap;\n this._pmremGenerator = this._getPMREMExtension(viewer.renderer);\n this._envMapTarget = this._pmremGenerator._fromTextureExtension(reflectMap);\n }\n\n dispose() {\n this._envMapTarget.dispose();\n this._pmremGenerator.dispose();\n }\n\n mergeMipBlur(info: MergeInfo) {\n this._setBlurIntensity(info.blurIntensity);\n const targetIn = this._pmremGenerator._applyMipBlur(\n this._envMapTarget,\n this._reflectMap,\n this._blurMinLod,\n this._blurMaxLod,\n this._sigma,\n info.exposure,\n );\n this._pmremGenerator._mipCopy(info.envMapTarget, targetIn, info.lodMax, this._blurMinLod);\n }\n\n private _setBlurIntensity(blurIntensity: number) {\n if (this._blurIntensity !== blurIntensity) {\n this._blurIntensity = blurIntensity\n this._sigma = MathUtils.lerp(1, 40, this._blurIntensity / 10);\n for (let lod = 0; lod <= MAX_LOD; lod++) {\n let w = mipGaussianBlendWeight(this._sigma, lod);\n if (w < 0.002) {\n this._blurMinLod = lod;\n }\n if (w >= 1) {\n this._blurMaxLod = lod;\n break;\n }\n }\n }\n }\n\n private _getPMREMExtension(renderer: WebGLRenderer) {\n const pmremGenerator = new PMREMGenerator(renderer) as any;\n pmremGenerator._fromTextureExtension = function (texture: Texture) {\n this._setSize(texture.image.length === 0 ? 16 : (texture.image[0].width || texture.image[0].image.width));\n const target = this._allocateTargets();\n this._mipBlurMaterial = _getMipBlurMaterial(this._lodMax, target.width, target.height);\n this._mipCopyMaterial = _getMipCopyMaterial(this._lodMax, target.width, target.height);\n this._lodMeshes = this._lodPlanes.map(v => new Mesh(v, this._mipBlurMaterial));\n return target;\n }\n pmremGenerator._applyMipBlur = function (\n sourceTarget: WebGLRenderTarget,\n texture: CubeTexture,\n blurMinLod: number,\n blurMaxLod: number,\n sigma: number,\n exposure: number = 1\n ) {\n const pingPongRenderTarget = this._pingPongRenderTarget;\n const uniforms = this._mipBlurMaterial.uniforms;\n uniforms.envMap.value = texture;\n uniforms.exposure.value = exposure;\n\n let lod = blurMaxLod;\n let targetOut = sourceTarget;\n let targetIn = pingPongRenderTarget;\n\n this._mipBlur(sourceTarget, pingPongRenderTarget, lod, 1);\n for (let i = 0; lod-- > blurMinLod; i++) {\n targetOut = (i & 1) === 0 ? pingPongRenderTarget : sourceTarget;\n targetIn = (i & 1) === 1 ? pingPongRenderTarget : sourceTarget;\n this._mipBlur(targetOut, targetIn, lod, mipGaussianBlendWeight(sigma, lod));\n }\n\n sourceTarget.scissorTest = false;\n _setViewport(sourceTarget, 0, 0, sourceTarget.width, sourceTarget.height);\n\n return targetOut;\n }\n pmremGenerator._mipBlur = function (\n targetOut: WebGLRenderTarget,\n targetIn: WebGLRenderTarget,\n lodOut: number,\n weight: number,\n ) {\n const uniforms = this._mipBlurMaterial.uniforms;\n uniforms.cubeUVMap.value = targetIn.texture;\n uniforms.weight.value = weight;\n uniforms.lod.value = lodOut;\n\n this._blit(targetOut, lodOut, this._mipBlurMaterial);\n }\n pmremGenerator._mipCopy = function (\n targetOut: WebGLRenderTarget,\n targetIn: WebGLRenderTarget,\n lodOut: number,\n lodIn: number = lodOut,\n ) {\n const uniforms = this._mipCopyMaterial.uniforms;\n uniforms.cubeUVMap.value = targetIn.texture;\n uniforms.lod.value = lodIn;\n\n this._blit(targetOut, lodOut, this._mipCopyMaterial);\n\n targetOut.scissorTest = false;\n _setViewport(targetOut, 0, 0, targetOut.width, targetOut.height);\n }\n pmremGenerator._blit = function (\n targetOut: WebGLRenderTarget,\n lodOut: number,\n material: ShaderMaterial,\n ) {\n const renderer = this._renderer;\n const _lodMax = this._lodMax;\n const outputSize = this._sizeLods[lodOut];\n const x = 3 * outputSize * (lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0);\n const y = 4 * (this._cubeSize - outputSize);\n _setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize);\n const lodMesh = this._lodMeshes[lodOut];\n lodMesh.material = material;\n renderer.autoClear = false;\n renderer.setRenderTarget(targetOut);\n renderer.render(lodMesh, _flatCamera);\n }\n\n return pmremGenerator;\n }\n}","import {\n CubeCamera,\n HalfFloatType,\n Object3D,\n Scene,\n Texture,\n TextureDataType,\n Vector3,\n} from \"three\";\n\nimport { MergeRefectPass } from \"../passes/cubeuv/MergeReflectPass\";\nimport { MergeMipBlurPass } from \"../passes/cubeuv/MergeBlurPass\";\nimport { property } from \"../PropertyManager\";\nimport { MergeInfo } from \"../passes/cubeuv/MergeInfo\";\nimport { _Quality } from \"../passes/cubeuv/utils\";\nimport { Mount } from \"../Mount\";\n\nexport class Environment extends Mount {\n static readonly Quality = _Quality;\n\n private _elapsed: number = 0;\n private _scene: Scene | Object3D;\n private _cubeCamera: CubeCamera;\n private _reflectPass: MergeRefectPass;\n private _mipBlurPass: MergeMipBlurPass;\n private _mergeInfo: MergeInfo = {\n quality: _Quality.HIGH,\n envMapTarget: null,\n envMapIntensity: 1,\n blurIntensity: 1,\n lodMax: 0,\n exposure: 1\n }\n\n @property({ value: _Quality })\n quality: number = _Quality.HIGH;\n @property({ min: 0, max: 1, step: 0.01 })\n envMapIntensity: number = 1;\n @property({ min: 0, max: 10, step: 0.01 })\n reflectExposure: number = 1;\n @property({ min: 0, max: 10, step: 0.1 })\n reflectBlurIntensity: number = 5;\n @property\n interval: number = 0;\n @property\n manual: boolean = false\n\n @property\n get envMap() {\n return this._reflectPass.envMap;\n }\n\n constructor({\n envMap,\n scene,\n near,\n far,\n layer = 1 << 0,\n resolution = 256,\n floatType = HalfFloatType,\n position = new Vector3(0, 1, 0),\n }: {\n envMap?: Texture;\n scene?: Scene | Object3D;\n performance?: number;\n resolution?: number;\n layer?: number;\n near?: number;\n far?: number;\n floatType?: boolean | TextureDataType;\n position?: Vector3;\n } = {}) {\n super();\n this.onLoad = () => {\n const viewer = this.viewer;\n this._scene = scene || viewer.scene;\n const cubeRenderTarget = viewer.createCubeRenderTarget(resolution, false, floatType, 0, true, true);\n this._cubeCamera = new CubeCamera(near || viewer.camera.near, far || viewer.camera.far, cubeRenderTarget);\n this._cubeCamera.position.copy(position);\n this._cubeCamera.layers.mask = layer;\n const reflectMap = cubeRenderTarget.texture;\n this._reflectPass = new MergeRefectPass({ viewer, reflectMap, envMap });\n }\n this.onDestroy = () => {\n this._reflectPass.dispose();\n this._mipBlurPass && this._mipBlurPass.dispose();\n }\n }\n\n update(dt: number) {\n if (!this.manual) {\n if (this._elapsed >= this.interval || this._elapsed === 0) {\n this._elapsed = 0;\n this._renderFrame();\n }\n this._elapsed += dt;\n }\n }\n\n manualFrame() {\n if (this.manual) {\n this._renderFrame();\n }\n }\n\n private _renderFrame() {\n const { renderer } = this.viewer;\n const autoClear = renderer.autoClear;\n const oldTarget = renderer.getRenderTarget();\n const oldActiveCubeFace = renderer.getActiveCubeFace();\n const oldActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n renderer.autoClear = true;\n\n this._mergeInfo.quality = this.quality;\n this._mergeInfo.exposure = this.reflectExposure;\n this._mergeInfo.envMapIntensity = this.envMapIntensity;\n this._mergeInfo.blurIntensity = this.reflectBlurIntensity;\n\n if (this.quality !== _Quality.LOW) {\n this._cubeCamera.update(renderer, this._scene);\n }\n\n this._reflectPass.mergeReflect(this._mergeInfo);\n\n if (this.quality === _Quality.HIGH) {\n if (this._mipBlurPass === undefined) {\n this._mipBlurPass = new MergeMipBlurPass({ viewer: this.viewer, reflectMap: this._cubeCamera.renderTarget.texture });\n }\n this._mipBlurPass.mergeMipBlur(this._mergeInfo);\n }\n\n renderer.autoClear = autoClear;\n renderer.setRenderTarget(oldTarget, oldActiveCubeFace, oldActiveMipmapLevel);\n }\n}","import { ShaderChunk, ShaderLib, Vector3, Vector4, WebGLProgramParametersWithUniforms } from \"three\";\nimport { property } from \"../PropertyManager\";\nimport { Mount } from \"../Mount\";\n\nexport class BoxProjection extends Mount {\n\n private _center: Vector4 = new Vector4(0, 0.5, 0, 1);\n private _boxMin: Vector3 = new Vector3(0, 0, 0);\n private _boxMax: Vector3 = new Vector3(1, 1, 1);\n\n @property\n get center() {\n return this._center;\n }\n set center(v: Vector4) {\n this._center.copy(v);\n }\n\n @property\n get boxMin() {\n return this._boxMin;\n }\n set boxMin(v: Vector3) {\n this._boxMin.copy(v);\n }\n\n @property\n get boxMax() {\n return this._boxMax;\n }\n set boxMax(v: Vector3) {\n this._boxMax.copy(v);\n }\n\n onLoad() {\n ShaderLib.physical.vertexShader = ShaderLib.physical.vertexShader.replace(/#ifdef USE_TRANSMISSION/g, `\n #if defined(USE_TRANSMISSION) || defined(USE_BOX_PROJECTION)\n `);\n ShaderLib.physical.fragmentShader = ShaderLib.physical.fragmentShader.replace(\"varying vec3 vViewPosition;\", `\n varying vec3 vViewPosition;\n #if defined(USE_BOX_PROJECTION)\n varying vec3 vWorldPosition;\n #endif\n `);\n ShaderChunk.worldpos_vertex = ShaderChunk.worldpos_vertex.replace(\"#if defined( USE_ENVMAP )\", \"#if defined( USE_ENVMAP ) || defined( USE_BOX_PROJECTION )\");\n ShaderChunk.envmap_physical_pars_fragment = ShaderChunk.envmap_physical_pars_fragment.replace(\"#ifdef USE_ENVMAP\", `\n #ifdef USE_ENVMAP\n\n #if defined(USE_BOX_PROJECTION)\n uniform vec4 probePos;\n uniform vec3 probeBoxMin;\n uniform vec3 probeBoxMax;\n \n vec3 boxProjection(vec3 nrdir, vec3 worldPos, vec3 probePos, vec3 boxMin, vec3 boxMax) {\n vec3 tbot = boxMin - worldPos;\n vec3 ttop = boxMax - worldPos;\n vec3 tmax = mix(tbot, ttop, step(vec3(0), nrdir));\n tmax /= nrdir;\n float t = min(min(tmax.x, tmax.y), tmax.z);\n return worldPos + nrdir * t - probePos;\n }\n #endif\n\n `).replace(\"reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\", `\n reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n \n #if defined(USE_BOX_PROJECTION)\n if (probePos.w > 0.001) {\n reflectVec = boxProjection(reflectVec, vWorldPosition, probePos.xyz, probeBoxMin.xyz, probeBoxMax.xyz);\n }\n #endif\n\n `).replace(\"vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\", `\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\n #if defined(USE_BOX_PROJECTION)\n if (probePos.w > 0.001) {\n worldNormal = boxProjection(worldNormal, vWorldPosition, probePos.xyz, probeBoxMin.xyz, probeBoxMax.xyz);\n }\n #endif\n\n `);\n }\n\n useBoxProjection(shader: WebGLProgramParametersWithUniforms) {\n shader.defines.USE_BOX_PROJECTION = true;\n shader.uniforms.probePos = { value: this._center };\n shader.uniforms.probeBoxMin = { value: this._boxMin };\n shader.uniforms.probeBoxMax = { value: this._boxMax };\n }\n}","import { Mount } from \"../Mount\"\n\ntype PerformanceMonitorProps = {\n /** How much time in milliseconds to collect an average fps, 250 */\n ms?: number\n /** How many interations of averages to collect, 10 */\n iterations?: number\n /** The percentage of iterations that are matched against the lower and upper bounds, 0.75 */\n threshold?: number\n /** A function that receive the max device refreshrate to determine lower and upper bounds which create a margin where neither incline nor decline should happen, (refreshrate) => (refreshrate > 90 ? [50, 90] : [50, 60]) */\n bounds?: (refreshrate: number) => [lower: number, upper: number]\n /** How many times it can inline or decline before onFallback is called, Infinity */\n flipflops?: number\n /** The factor increases and decreases between 0-1, this prop sets the starting value, 0.5 */\n factor?: number\n /** The step that gets added or subtracted to or from the factor on each incline/decline, 0.1 */\n step?: number\n /** When performance is higher than the upper bound (good!) */\n onIncline?: (monitor: PerformanceMonitor) => void\n /** When performance is lower than the upper bound (bad!) */\n onDecline?: (monitor: PerformanceMonitor) => void\n /** Incline and decline will change the factor, this will trigger when that happened */\n onChange?: (monitor: PerformanceMonitor) => void\n /** Called after when the number of flipflops is reached, it indicates instability, use the function to set a fixed baseline */\n onFallback?: (monitor: PerformanceMonitor) => void\n}\n\n\ntype PerformanceMonitorSubscriber = {\n onIncline?: (monitor: PerformanceMonitor) => void\n /** When performance is lower than the upper bound (bad!) */\n onDecline?: (monitor: PerformanceMonitor) => void\n /** Incline and decline will change the factor, this will trigger when that happened */\n onChange?: (monitor: PerformanceMonitor) => void\n /** Called after when the number of flipflops is reached, it indicates instability, use the function to set a fixed baseline */\n onFallback?: (monitor: PerformanceMonitor) => void\n}\n\nexport class PerformanceMonitor extends Mount {\n fps = 0;\n index = 0;\n factor = 0.5;\n flipped = 0;\n refreshrate = 0;\n fallback = false;\n frames = [];\n averages = [];\n subscriptions = new Map();\n\n subscribe(subscriber: PerformanceMonitorSubscriber) {\n this.subscriptions.set(Symbol(), subscriber);\n }\n\n constructor({\n iterations = 10,\n ms = 250,\n threshold = 0.75,\n step = 0.1,\n factor: _factor = 0.5,\n flipflops = Infinity,\n bounds = (refreshrate) => (refreshrate > 100 ? [60, 100] : [40, 60]),\n onIncline,\n onDecline,\n onChange,\n onFallback,\n }: PerformanceMonitorProps) {\n super();\n\n let lastFactor = 0;\n const decimalPlacesRatio = Math.pow(10, 0);\n\n this.update = (dt: number) => {\n // If the fallback has been reached do not continue running samples\n if (this.fallback) return;\n\n const { frames, averages } = this;\n if (averages.length < iterations) {\n frames.push(performance.now())\n const msPassed = frames[frames.length - 1] - frames[0];\n if (msPassed >= ms) {\n this.fps = Math.round((frames.length / msPassed) * 1000 * decimalPlacesRatio) / decimalPlacesRatio\n this.refreshrate = Math.max(this.refreshrate, this.fps)\n averages[this.index++ % iterations] = this.fps\n if (averages.length === iterations) {\n const [lower, upper] = bounds(this.refreshrate)\n const upperBounds = averages.filter((value) => value >= upper)\n const lowerBounds = averages.filter((value) => value < lower)\n // Trigger incline when more than -threshold- avgs exceed the upper bound\n if (upperBounds.length > iterations * threshold) {\n this.factor = Math.min(1, this.factor + step);\n this.flipped++;\n if (onIncline) onIncline(this);\n this.subscriptions.forEach((value) => value.onIncline && value.onIncline(this))\n }\n // Trigger decline when more than -threshold- avgs are below the lower bound\n if (lowerBounds.length > iterations * threshold) {\n this.factor = Math.max(0, this.factor - step);\n this.flipped++;\n if (onDecline) onDecline(this);\n this.subscriptions.forEach((value) => value.onDecline && value.onDecline(this))\n }\n\n if (lastFactor !== this.factor) {\n lastFactor = this.factor\n if (onChange) onChange(this);\n this.subscriptions.forEach((value) => value.onChange && value.onChange(this))\n }\n\n if (this.flipped > flipflops && !this.fallback) {\n this.fallback = true\n if (onFallback) onFallback(this);\n this.subscriptions.forEach((value) => value.onFallback && value.onFallback(this))\n }\n this.averages = [];\n\n // Resetting the refreshrate creates more problems than it solves atm\n // this.refreshrate = 0\n }\n this.frames = [];\n }\n }\n }\n }\n}","import { ResourceManager } from \"../asset/ResourceManager\";\nimport { Mount } from \"../Mount\";\n\nexport class DropFile extends Mount {\n private _onLoad: Function;\n private _onError: Function;\n private _extensions: string[];\n private _raw: boolean = false;\n\n constructor({\n onLoad,\n onError,\n extension = [\"glb\", \"gltf\", \"fbx\", \"hdr\"],\n raw = false,\n }: {\n onLoad?: Function;\n onError?: Function;\n extension?: string | string[],\n raw?: boolean;\n } = {}) {\n super();\n this._onLoad = onLoad;\n this._onError = onError;\n this._extensions = Array.isArray(extension) ? extension : [extension];\n this._raw = raw;\n }\n\n onEnable(): void {\n document.addEventListener(\"dragover\", this._onDrogOver);\n document.addEventListener(\"drop\", this._onDrop);\n }\n\n onDisable(): void {\n document.removeEventListener(\"dragover\", this._onDrogOver);\n document.removeEventListener(\"drop\", this._onDrop);\n }\n\n private _onDrogOver = (e: DragEvent) => {\n e.preventDefault();\n e.dataTransfer.dropEffect = \"copy\";\n }\n\n private _onDrop = (e: DragEvent) => {\n e.preventDefault();\n if (e.dataTransfer.types[0] === \"text/plain\") return;// Outliner drop\n if (e.dataTransfer.items) {\n this._loadItemList(e.dataTransfer.items);\n }\n else {\n this._loadFiles(e.dataTransfer.files);\n }\n }\n\n private _loadItemList(items: DataTransferItemList) {\n getFilesFromItemList(items, (files, filesMap, dirs) => {\n this._loadFiles(files, filesMap, dirs);\n })\n }\n\n private _loadFiles(\n files: File[] | FileList,\n filesMap?: { [k: string]: File },\n dirs?: string[]\n ) {\n if (files.length > 0) {\n filesMap = filesMap || createFilesMap(files);\n dirs = dirs || [];\n\n this.viewer.loadingManager.setURLModifier(url => {\n url = url.replace(/^(\\.?\\/)/, ''); // remove './'\n const file = filesMap[url];\n if (file) {\n console.log('Loading', url);\n return URL.createObjectURL(file);\n }\n return url;\n });\n\n for (let i = 0; i < files.length; i++) {\n this._loadFile(files[i], dirs[i]);\n }\n }\n }\n\n private _loadFile(file: File, dir: string = \"\") {\n const viewer = this.viewer;\n const filename = file.name;\n const ext = ResourceManager.extension(filename);\n if (this._extensions.some(v => v === ext)) {\n const reader = new FileReader();\n reader.addEventListener(\"progress\", (event) => {\n const size = '(' + Math.floor(event.total / 1000) + ' KB)';\n const progress = Math.floor((event.loaded / event.total) * 100) + '%';\n console.log('Loading', filename, size, progress);\n });\n const loadCallback = (asset) => {\n asset.userData.ext = ext;\n this._onLoad && this._onLoad(asset);\n }\n const errCallback = (err) => {\n this._onError && this._onError(err);\n }\n if ([\"fbx\", \"gltf\", \"glb\"].some(v => v === ext)) {\n reader.addEventListener(\"load\", (event) => {\n if (this._raw) loadCallback({ userData: {}, raw: event.target.result });\n else viewer.loadAsset({ ext, buffer: event.target.result, resourcePath: dir }).then(loadCallback).catch(errCallback);\n }, false);\n reader.readAsArrayBuffer(file);\n }\n else {\n reader.addEventListener(\"load\", (event) => {\n if (this._raw) loadCallback({ userData: {}, raw: event.target.result });\n else viewer.loadAsset({ ext, url: event.target.result as string }).then(loadCallback).catch(errCallback);\n }, false);\n reader.readAsDataURL(file);\n }\n }\n }\n}\n\n\nfunction createFilesMap(files: File[] | FileList) {\n const map = {};\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n map[file.name] = file;\n }\n return map;\n}\n\nfunction getFilesFromItemList(\n items: DataTransferItemList,\n onDone: (files: File[] | FileList, filesMap: { [k: string]: File }, dirs: string[]) => void\n) {\n let itemsCount = 0;\n let itemsTotal = 0;\n\n const dirs = [];\n const files = [];\n const filesMap = {};\n\n function onEntryHandled() {\n itemsCount++;\n if (itemsCount === itemsTotal) {\n onDone(files, filesMap, dirs);\n }\n }\n\n function handleEntry(\n entry: FileSystemEntry | FileSystemDirectoryEntry | FileSystemFileEntry,\n dir: string = \"\"\n ) {\n if (entry.isDirectory) {\n const reader = (entry as FileSystemDirectoryEntry).createReader();\n reader.readEntries((entries) => {\n for (let i = 0; i < entries.length; i++) {\n handleEntry(entries[i], dir + \"/\" + entry.name + \"/\");\n }\n onEntryHandled();\n });\n\n }\n else if (entry.isFile) {\n (entry as FileSystemFileEntry).file((file) => {\n files.push(file);\n filesMap[entry.fullPath.slice(1)] = file;\n dirs.push(dir);\n onEntryHandled();\n });\n\n }\n itemsTotal++;\n }\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (item.kind === 'file') {\n handleEntry(item.webkitGetAsEntry() as any);\n }\n }\n}"],"names":["EventEmitter","_removeEvent","list","index","name","splice","length","_events","clear","has","on","callback","target","once","findIndex","v","console","warn","push","off","a","onof","container","_listeners","undefined","offof","targetOff","i","emit","args","apply","noop","message","optionalParams","debug","log","bind","info","error","Logger","isEnabled","enable","disable","mixin","derivedCtor","baseCtors","forEach","baseCtor","Object","getOwnPropertyNames","prototype","defineProperty","getOwnPropertyDescriptor","create","getClassInstance","constructor","Loader","_setUserData","node","keys","_texKeys","meshes","textures","materials","queue","object","shift","isMesh","mat","material","Array","isArray","uuid","children","values","k","tex","assign","userData","manager","EXRLoader","load","url","path","resourcePath","texSettings","onLoad","onProgress","onError","loader","_loader","EXRLoaderPrimitive","setPath","setResourcePath","extension","FBXLoader","buffer","FBXLoaderPrimitive","loadCallback","parse","GLTFLoader","dracoPath","dracoLoader","_dracoLoader","DRACOLoader","setDecoderPath","GLTFLoaderPrimitive","setDRACOLoader","setMeshoptDecoder","MeshoptDecoder","gltf","scene","animations","HDRLoader","RGBELoader","settings","mapping","EquirectangularReflectionMapping","JSONLoader","FileLoader","file","JSON","TextureLoader","TextureLoaderPrimitive","colorSpace","SRGBColorSpace","BINLoader","CustomLoader","salt","data","glbDecode","BINARY_EXTENSION_HEADER_MAGIC","BINARY_EXTENSION_HEADER_LENGTH","encryptArray","array","n","Uint8Array","headerView","DataView","textDecoder","TextDecoder","header","magic","decode","slice","version","getUint32","Error","chunkContentsLength","chunkView","chunkIndex","chunkLength","clamp","MathUtils","min","max","exp","Math","kNegligibleResidual","kLogNegligibleResidual","exponentialDamp","current","dampTime","deltaTime","quarticDamp","t","tt","smoothDamp","state","smoothTime","maxSpeed","_velocity","num","num2","num3","num4","num5","num6","num7","num8","Quat_exponentialDamp","out","copy","slerp","Quat_quarticDamp","Quat_smoothDamp","Infinity","Vec3_smoothDamp","lerp","Vector3_UNIT_X","freeze","Vector3","Vector3_UNIT_Y","Vector3_UNIT_Z","Vector3_RIGHT","Vector3_UP","Vector3_ZERO","Vector3_ONE","Vector3_NEG_ONE","abs","acos","EPSILON","__deltaMap","Map","set","Vector2","VInterpTo","speed","epsilon","dist","get","sub","lengthSq","add","multiplyScalar","VInterpConstantTo","delta","deltaM","maxStep","deltaN","Quat_Equals","b","x","y","z","w","Quat_AngularDistance","innerProd","QInterpTo","QInterpConstantTo","deltaSpeed","angularDist","FInterpTo","FInterpConstantTo","step","catmullRom","p0","p1","p2","p3","v0","v1","t2","t3","CurvePoint","p","mode","AnimationCurve","_getInterpolant","samples","_samples","_interpolant","LinearInterpolant","Float32Array","createCurvePoint","resample","interpolant","times","parameterPositions","sampleValues","point","getPoint","evaluate","needsUpdate","points","intPoint","floor","weight","isAnimationCurve","Perlin","Noise","fade","_Fade","grad","_Grad","_Lerp","_Permutation","xi","yi","zi","X","Y","Z","u","A","AA","AB","B","BA","BB","Fbm","octave","f","noise","hash","h","Easing","Linear","None","amount","In","Out","InOut","Quadratic","Cubic","Quartic","Quintic","Sinusoidal","sin","PI","Exponential","pow","Circular","sqrt","Elastic","Back","s","Bounce","generatePow","power","Number","ClassProperties","property","propertyKey","options","_properties","applyProperties","clsName","PropertyManager","_hasProperties","_propertyMap","_getProperties","autoAdd","props","_getMergedProperties","merged","getPrototypeOf","_getClassProperties","_classMap","_applyClassProperties","cls","normalized","CinestationBlendStyle","QuadraticIn","QuadraticOut","QuadraticInOut","CinestationBlendDefinition","style","time","value","ObjectInstance","instanceId","_instanceCount","generateUUID","type","Component","enabled","_enabled","componentScheduler","enableComponent","_onPreDestroy","unscheduleAll","removeComponent","onDestroy","flags","OnLoadCalled","schedule","interval","repeat","scheduler","unshedule","destroy","Destroyed","destroyImmediate","isComponent","CinestationBrain","vcam","_vcam","vcams","_vcams","lastUpdate","dt","getActiveCamera","locked","_lerpTime","brainBlend","_lerpToMainCamera","activeCamera","_vcamSolo","addCamera","indexOf","removeCamera","filter","sort","priority","from","to","lens","finalPosition","finalRotation","isLensChanged","fov","near","far","position","quaternion","updateProjectionMatrix","Lens","VirtualCamera","_finalPosition","correctPosition","_finalRotation","multiply","correctRotation","camera","viewer","isCamera","brain","getComponent","Quaternion","PressState","NONE","SELECTED","IN","Pressability","connect","connector","_connectors","find","disconnect","pointerDown","pointer","_raycaster","setFromCamera","conn","intersects","intersectObject","pointerUp","pointerMove","Raycaster","DeviceInput","pointerButton","_pointerButton","_pointer","pointerPosition","_pointerPosition","mouseWheel","_mouseWheel","touchCount","_touchCount","touches","_touches","_keys","addEventListeners","canvas","touchAction","_addEventListener","e","preventDefault","_onPointerDown","passive","_onPointerUp","_onPointerMove","_onMouseWheel","_onTouchStart","_onTouchEnd","_onTouchMove","window","_onKeyDown","_onKeyPress","_onKeyUp","_onResize","removeAllListeners","removeEventListener","event","CLICK","POINTER_DOWN","POINTER_UP","POINTER_OVER","POINTER_OUT","_pressability","addEventListener","rotate","resize","_remapPointer","width","rootRotated","button","buttons","clientX","clientY","offsetX","offsetY","pageX","pageY","screenX","screenY","movementX","movementY","_remapTouch","map","identifier","_computePointer","height","POINTER_MOVE","deltaY","wheelDelta","MOUSE_WHEEL","TOUCH_START","TOUCH_END","touchesTo","id","touch","TOUCH_MOVE","key","KEYDOWN","KEYPRESS","KEYUP","isSSR","DetectUA","match","pattern","userAgent","isMobile","isTablet","test","iOSDevice","isAndroidDevice","isDesktop","isMacOS","replace","split","versionNumber","isWindows","isiOS","isAndroid","browser","versionIdentifier","forceUserAgent","navigator","toLowerCase","platform","maxTouchPoints","MSStream","detectUA","vendor","browserName","SystemInfo","device","isIOS","isLinux","ua","isEdge","isIE","isFirefox","isChrome","isOpera","isSafari","isSupportMSAA","cpuCoreCount","hardwareConcurrency","isRetina","devicePixelRatio","isIFrame","self","top","degToRad","tan","PI2","ESP","FreelookVirtualCamera","lookAt","_lookAt","_targetLookAt","offset","_offset","_targetOffset","springLength","_spherical","radius","_targetSpringLength","distanceMin","distanceMax","theta","_targetTheta","thetaMin","thetaMax","phi","_targetPhi","phiMin","phiMax","_targetFov","onEnable","reset","onDisable","_button","_touchID","_preLoc0","_","__loc0","__panDelta","__rotateDelta","_setTargetRotation","_calculateRotatelDelta","_setTargetLookAt","_calculatePanDelta","_calculateDistanceScale","_setTargetSpringLength","_preLoc1","__loc1","__preCenter","__center","distanceTo","scale","_tempRotateSmoothing","rotateSmoothing","forbidZ","loc0","loc1","rotateSpeed","forbidX","forbidY","panSpeed","forbidPanX","forbidPanY","_calculateLookAtOffset","panDelta","__xAxis","__yAxis","__posDelta","setFromMatrixColumn","matrix","forbitPanOffsetY","normalize","__lookAtOffset","rotateDelta","goto","smoothing","t0","t1","euclideanModulo","_tempSmoothing","update","_finalLookAt","setFromSpherical","Spherical","__panTarget","__quat","dir","Box","Mesh","BoxGeometry","Sphere","SphereGeometry","Plane","PlaneGeometry","Reflector","textureWidth","textureHeight","clipBias","multisample","layer","normal","mipmap","reflectorPlane","reflectorNormal","reflectorWorldPosition","cameraWorldPosition","rotationMatrix","Matrix4","lookAtPosition","clipPlane","Vector4","view","q","textureMatrix","virtualCamera","PerspectiveCamera","layers","mask","renderTarget","WebGLRenderTarget","HalfFloatType","minFilter","LinearMipMapLinearFilter","LinearFilter","generateMipmaps","renderer","setFromMatrixPosition","matrixWorld","extractRotation","applyMatrix4","subVectors","dot","reflect","negate","up","updateMatrixWorld","projectionMatrix","matrixWorldInverse","setFromNormalAndCoplanarPoint","constant","sign","elements","visible","currentRenderTarget","getRenderTarget","currentActiveCubeFace","getActiveCubeFace","currentActiveMipmapLevel","getActiveMipmapLevel","currentXrEnabled","xr","currentShadowAutoUpdate","shadowMap","autoUpdate","setRenderTarget","buffers","depth","setMask","autoClear","render","viewport","getTextureMatrix","dispose","Animation","mixer","_mixer","action","_action","actions","_actions","progress","_progress","playing","duration","getClip","setTime","AnimationMixer","clipAction","stopAllAction","play","animName","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","setLoop","repetitions","setDuration","stop","applyProps","prop","des","writable","child","parts","part","getChildren","group","objects","getChildByName","__emtpyObject","queryValues","ContactShadows","frames","intensity","blur","resolution","smooth","color","Color","renderOrder","layerMask","planeGeometry","shadowCamera","OrthographicCamera","renderTargetBlur","texture","depthMaterial","MeshDepthMaterial","depthTest","depthWrite","onBeforeCompile","shader","uniforms","fragmentShader","horizontalBlurMaterial","ShaderMaterial","HorizontalBlurShader","verticalBlurMaterial","VerticalBlurShader","blurPlane","Group","rotation","Euler","blurShadows","gl","tDiffuse","count","initialBackground","initialOverrideMaterial","initialClearAlpha","background","overrideMaterial","getClearAlpha","setClearAlpha","getVersion","parseInt","REVISION","DiscardMaterial","vertexShader","shaderMaterial","THREE","parameters","Uniform","UniformsUtils","clone","setValues","AccumulativeShadows","temporal","limit","blend","opacity","alphaTest","colorBlend","toneMapped","randomLights","plm","ProgressiveLightMap","gPlane","parent","receiveShadow","SoftShadowMaterial","transparent","progressiveLightMap2","configure","gLights","traverse","light","prepare","finish","start","RandomizedLight","castShadow","bias","mapSize","size","ambient","DirectionalLight","shadow","random","randFloatSpread","lambda","cos","isLight","isGeometry","geometry","getClearColor","clearColor","clearAlpha","setClearColor","progressiveLightMap1","lights","mesh","discardMat","blendWindow","averagingWindow","targetMat","activeMap","buffer1Active","inactiveMap","oldBg","previousShadowMap","res","textureParams","magFilter","NearestFilter","MeshLambertMaterial","fog","bodyStart","Center","disableX","disableY","disableZ","left","right","bottom","front","back","onCentered","precise","cacheKey","inner","outer","identity","box3","Box3","setFromObject","center","sphere","getCenter","getBoundingSphere","vAlign","hAlign","dAlign","boundingBox","boundingSphere","verticalAlignment","horizontalAlignment","depthAlignment","vert_fullscreen","frag_BoxfilterBlur","frag_panoramaToCubeMap","frag_cubeMapToPanorama","getShaderMaterial","onInit","entries","reduce","acc","uniform","vert_Reflector","frag_Reflector","ReflectorMaterial","channels","aoMap","channel","lightMap","roughnessMap","normalMap","defines","metalness","roughness","lightMapIntensity","reflectMap","reflectIntensity","reflector","UV_AO","UV_LIGHTMAP","UV_ROUGHNESS","UV_NORMAL","aoMapIntensity","vert_Shadow","frag_Shadow","ShadowMaterial","shadows","shadowsMap","shadowsMatrix","Mount","isMount","UI","_camera","aspect","__panOffset","_setTargetPosition","_targetZoom","panOffset","_targetPosition","zoom","_zoom","autoClearDepth","autoClearColor","LOD_MIN","_flatCamera","PHI","INV_PHI","_axisDirections","_Quality","LOW","MEDIUM","HIGH","ULTRA","_setViewport","scissor","_getCommonVertexShader","_getClearMaterial","blending","NoBlending","_getCubeMapMaterial","envMap","lod","exposure","AdditiveBlending","_getMipCopyMaterial","lodMax","CUBEUV_TEXEL_WIDTH","CUBEUV_TEXEL_HEIGHT","CUBEUV_MAX_MIP","cubeUVMap","_getMipBlurMaterial","Caller","pause","_pause","_target","_callback","lived","_repeat","_repeatForever","_elapsed","_interval","trigger","_lastTime","call","Callers","callers","_callers","Scheduler","resume","_callersArray","callersArray","j","Invoker","_targets","remove","invoke","InvokerOneCall","ComponentScheduler","startInvoker","updateInvoker","lastUpdateInvoker","renderInvoker","resizeInvoker","comp","OnEnableCalled","IsStartCalled","DependentMode","dependencies","componentOrComponents","components","ComponentManager","_infoMap","_viewer","_scheduler","_componentScheduler","_componentsMap","destroyComponents","delete","activeComponents","_activeComponent","addComponent","root","func","component","_findComponent","_addDendencies","getComponentsInChidren","traverseComponents","dep","active","TaskManager","percent","_percent","_tasks","_taskIndex","task","excute","onComplete","parepareWebGL","isSupportedBrowser","HTMLCanvasElement","webglOpts","alpha","stencil","antialias","premultipliedAlpha","preserveDrawingBuffer","powerPreference","failIfMajorPerformanceCaveat","WebGL2RenderingContext","getContext","RENDER_TARGET_FLOAT_TYPE","DATA_FLOAT_TYPE","FloatType","err","WebGLRenderingContext","getExtension","getParameter","MAX_VERTEX_TEXTURE_IMAGE_UNITS","_floatPacking","UnsignedByteType","Orientation","ResourceManager","str","pop","dirname","lastIndexOf","substring","basename","ext","_splitTextureSettings","_texSettingKeys","_loaders","getLoader","addLoader","loadAsset","Promise","resolve","reject","sel","Viewer","_setDirectLightShadow","_shadowCameraKeys","CompileMaterial","fullscreenMesh","compile","CompileObject3D","CompileTexture","initTexture","Blit","face","RT","fullscreenCamera","CreateFullscreenTriangle","BufferGeometry","setAttribute","Float32BufferAttribute","_root","_container","_time","_scene","_renderer","_canvas","_gl","_RENDER_TARGET_FLOAT_TYPE","_DATA_FLOAT_TYPE","dpr","_dpr","_width","_height","_viewport","_rootRotated","input","_input","targetFrameRate","_targetFrameRate","_instanceId","loadingManager","_loadingManager","resourceManager","_resourceManager","taskManager","_taskManager","_componentManager","_addDefaultLoaders","_frame","_lastFrameTime","loop","_fixedFrameTime","_rendering","_resizing","setSize","_running","frameCallback","setAnimationLoop","innerWidth","innerHeight","_orientation","LANDSCAPE","PORTRAIT","tmp","transform","transformOrigin","margin","offsetWidth","offsetHeight","_autoResize","isOrthographicCamera","factor","isPerspectiveCamera","manual","distance","getWorldPosition","__worldPos","__target","_defaultProps","traverseMaterials","item","mount","_mount","shadowArgs","makeDefault","ins","isObject3D","Object3D","isDirectionalLight","removeFromParent","createRenderTarget","nearest","floatType","msaa","wrapS","ClampToEdgeWrapping","wrapT","anisotropy","LinearSRGBColorSpace","depthBuffer","stencilBuffer","createCubeRenderTarget","WebGLCubeRenderTarget","createDataTexture","DataTexture","RGBAFormat","UVMapping","portal","sceneNew","Scene","result","blit","every","isMaterial","meshData","isTexture","autoStart","autoResize","fixedFrameTime","toneMapping","LinearToneMapping","toneMappingExposure","maxDPR","orientation","AUTO","tasker","instanceCount","el","document","getElementById","webgl","parentElement","WebGLRenderer","context","setPixelRatio","outputColorSpace","PCFSoftShadowMap","autoReset","LoadingManager","MergeRefectPass","_envMapTarget","_sourceTarget","_pmremGenerator","mergeReflect","_copyTexture","envMapIntensity","_mergeReflect","_reflectMap","quality","envMapTarget","_lodMeshes","_getPMREMExtension","pmremGenerator","PMREMGenerator","_fromTextureExtension","_fromTexture","_fromCubeTexture","_cubeMapMaterial","_copyTexMaterial","_copyMesh","_lodPlanes","_sourceInit","_setSize","image","_allocateTargets","targetOut","scissorTest","_clearTexture","sourceTarget","cubeMapMaterial","_blit","_pmremblur","lodIn","lodOut","sigma","_sigmas","poleAxis","_blur","_lodMax","outputSize","_sizeLods","_cubeSize","lodMesh","mipGaussianBlendWeight","sigma2","c","numerator","denorminator","MAX_LOD","MergeMipBlurPass","mergeMipBlur","_setBlurIntensity","blurIntensity","targetIn","_applyMipBlur","_blurMinLod","_blurMaxLod","_sigma","_mipCopy","_blurIntensity","_mipBlurMaterial","_mipCopyMaterial","blurMinLod","blurMaxLod","pingPongRenderTarget","_pingPongRenderTarget","_mipBlur","Environment","_reflectPass","_renderFrame","manualFrame","oldTarget","oldActiveCubeFace","oldActiveMipmapLevel","_mergeInfo","reflectExposure","reflectBlurIntensity","_cubeCamera","_mipBlurPass","cubeRenderTarget","CubeCamera","Quality","BoxProjection","_center","boxMin","_boxMin","boxMax","_boxMax","ShaderLib","physical","ShaderChunk","worldpos_vertex","envmap_physical_pars_fragment","useBoxProjection","USE_BOX_PROJECTION","probePos","probeBoxMin","probeBoxMax","PerformanceMonitor","subscribe","subscriber","subscriptions","Symbol","iterations","ms","threshold","_factor","flipflops","bounds","refreshrate","onIncline","onDecline","onChange","onFallback","fps","flipped","fallback","averages","lastFactor","decimalPlacesRatio","performance","now","msPassed","round","lower","upper","upperBounds","lowerBounds","DropFile","_onDrogOver","_onDrop","_loadItemList","items","getFilesFromItemList","files","filesMap","dirs","_loadFiles","createFilesMap","setURLModifier","URL","createObjectURL","_loadFile","filename","_extensions","some","reader","FileReader","total","loaded","asset","_onLoad","errCallback","_onError","_raw","raw","then","catch","readAsArrayBuffer","readAsDataURL","dataTransfer","dropEffect","types","onDone","itemsCount","itemsTotal","onEntryHandled","handleEntry","entry","isDirectory","createReader","readEntries","isFile","fullPath","kind","webkitGetAsEntry"],"mappings":"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","x_google_ignoreList":[12]}
|