@xviewer.js/core 1.0.5-alhpa.9 → 1.0.5

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.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.cjs","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","../src/loaders/SVGLoader.ts","../src/loaders/KTX2Loader.ts","../src/primitive/Box.ts","../src/primitive/Sphere.ts","../src/primitive/Plane.ts","../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/ObjectInstance.ts","../src/Component.ts","../src/components/Reflector.ts","../src/components/Animation.ts","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/PropertyManager.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/Scheduler.ts","../src/ComponentScheduler.ts","../src/ComponentManager.ts","../src/components/Renderer.ts","../src/components/RenderTexture.ts","../src/Pressability.ts","../src/DeviceInput.ts","../src/DetectUA.ts","../src/SystemInfo.ts","../src/components/FreelookVirtualCamera.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/passes/cubeuv/utils.ts","../src/TaskManager.ts","../src/WebGL.ts","../src/enums/index.ts","../src/asset/ResourceManager.ts","../src/Task.ts","../src/Viewer.ts","../src/passes/cubeuv/MergeReflectPass.ts","../src/passes/mipGaussianBlendWeight.ts","../src/passes/cubeuv/MergeBlurPass.ts","../src/components/Environment.ts","../src/components/BoxProjection.ts","../src/components/PerformanceMonitor.ts","../src/components/DropFile.ts","../src/bmfont/wordwrap.ts","../src/bmfont/BMFontTextLayout.ts","../src/bmfont/utils.ts","../src/bmfont/BMFontTextGeometry.ts","../src/components/Label.ts","../src/bmfont/BMFontAtlas.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 { TextureSettings } from \"../TextureSettings\";\nimport type { Viewer } from \"../Viewer\";\n\nexport interface LoadProperties {\n url: string,\n buffer?: string | ArrayBuffer,\n texSettings?: TextureSettings,\n path?: string;\n resourcePath?: string;\n dracoPath?: string;\n transcoderPath?: 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\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 Loader._texKeys.forEach(k => {\n let tex = mat[k];\n if (tex) {\n textures[tex.uuid] = tex;\n }\n });\n })\n\n Object.assign(node.userData, {\n meshes,\n textures: Object.values(textures),\n materials: Object.values(materials),\n });\n\n return node;\n }\n\n constructor(public viewer: Viewer) { }\n\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 if (buffer) {\n onLoad(loader.parse(buffer, resourcePath));\n }\n else {\n loader.load(url, onLoad, 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\";\nimport { BufferGeometry, Material, Mesh, Object3D } from \"three\";\n\nexport interface GLTFAsset<V = Mesh<BufferGeometry, Material>, M = Material> extends GLTF {\n mesh: V;\n material: M;\n meshes: Map<string, V>;\n materials: Map<string, M>;\n}\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 cb = (gltf: GLTFAsset) => {\n const meshes: Map<string, Mesh<BufferGeometry, Material>> = new Map();\n const materials: Map<string, Material> = new Map();\n\n gltf.scene.traverse((mesh: Mesh<BufferGeometry, Material>) => {\n if (mesh.isMesh) {\n gltf.mesh = mesh;\n gltf.material = mesh.material;\n meshes.set(mesh.name, mesh);\n const arr = Array.isArray(mesh.material) ? mesh.material : [mesh.material];\n arr.forEach(m => materials.set(m.name, m));\n }\n });\n\n gltf.meshes = meshes;\n gltf.materials = materials;\n\n onLoad(gltf);\n }\n\n if (buffer) {\n loader.parse(buffer, resourcePath, cb, onError);\n }\n else {\n loader.load(url, cb, onProgress, onError);\n }\n }\n\n private _loader: GLTFLoaderPrimitive;\n private _dracoLoader: DRACOLoader;\n}","import { EquirectangularReflectionMapping, Texture } from \"three\";\nimport { LoadProperties, Loader } from \"../asset/Loader\";\nimport { HDRLoader as HDRLoaderPrimitive } from \"three/examples/jsm/loaders/HDRLoader.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 HDRLoaderPrimitive();\n }\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n\n const loadCallback = (tex: Texture) => {\n tex.mapping = EquirectangularReflectionMapping;\n onLoad(Object.assign(tex, texSettings));\n }\n loader.load(url, loadCallback, onProgress, onError);\n }\n\n private _loader: HDRLoaderPrimitive;\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 if (buffer) {\n loader.parse(buffer as ArrayBuffer, resourcePath, onLoad, onError);\n }\n else {\n loader.load(url, onLoad, 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","import { Loader, LoadProperties } from \"../asset/Loader\";\nimport { SVGLoader as SVGLoaderPrimitive } from \"three/examples/jsm/loaders/SVGLoader.js\";\n\nexport class SVGLoader extends Loader {\n extension: string[] = [\"svg\"];\n\n load({\n url,\n path,\n resourcePath,\n manager,\n onLoad,\n onProgress,\n onError,\n }: LoadProperties): void {\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new SVGLoaderPrimitive();\n }\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n loader.load(url, onLoad, onProgress, onError);\n }\n \n private _loader: SVGLoaderPrimitive;\n static Primitive = SVGLoaderPrimitive;\n}\n","import { CubeUVReflectionMapping, Texture } from \"three\";\nimport { Loader, LoadProperties } from \"../asset/Loader\";\nimport { KTX2Loader as KTX2LoaderPrimitive } from \"three/examples/jsm/loaders/KTX2Loader.js\";\n\n\nexport class KTX2Loader extends Loader {\n extension: string[] = [\"ktx2\"];\n\n load({\n url,\n path,\n resourcePath,\n transcoderPath,\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 KTX2LoaderPrimitive();\n loader.setTranscoderPath(transcoderPath);\n loader.detectSupport(this.viewer.renderer);\n }\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n\n const loadCallback = (tex: Texture) => {\n tex.mapping = CubeUVReflectionMapping;\n onLoad(Object.assign(tex, texSettings));\n }\n loader.load(url, loadCallback, onProgress, onError);\n }\n\n private _loader: KTX2LoaderPrimitive;\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 { 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})","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 name: string = \"\";\n type: string = \"Component\";\n isComponent: boolean = true;\n order: number = 0;\n\n node: T;\n viewer: Viewer;\n manager: ComponentManager;\n\n onLoad?(): void;\n onEnable?(): void;\n onDisable?(): void;\n onDestroy?(): void;\n start?(): void;\n tick?(dt: number): 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 } = {};\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 {\n Matrix4,\n PerspectiveCamera,\n Vector3,\n Vector4,\n Plane,\n WebGLRenderTarget,\n HalfFloatType,\n LinearFilter,\n LinearMipMapLinearFilter,\n Object3D\n} from \"three\";\nimport { Component } from \"../Component\";\n\nexport class Reflector extends Component {\n node: Object3D = new Object3D();\n layerMask: number = 1 << 0;\n\n private _renderTarget: WebGLRenderTarget = null;\n private _textureMatrix: Matrix4 = new Matrix4();\n\n get texture() {\n return this._renderTarget.texture;\n }\n get textureMatrix() {\n return this._textureMatrix;\n }\n\n constructor({\n resolution = 512,\n clipBias = 0,\n multisample = 4,\n layerMask = 1 << 0,\n normal = new Vector3(0, 1, 0),\n mipmap = false,\n }: {\n resolution?: number,\n clipBias?: number,\n multisample?: number,\n normal?: Vector3,\n layerMask?: number,\n mipmap?: boolean,\n } = {}) {\n super();\n this.layerMask = layerMask;\n\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 const virtualCamera = new PerspectiveCamera();\n\n this._renderTarget = new WebGLRenderTarget(resolution, resolution, {\n samples: multisample,\n type: HalfFloatType,\n minFilter: mipmap ? LinearMipMapLinearFilter : LinearFilter,\n generateMipmaps: mipmap\n });\n\n this.lastUpdate = () => {\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 rotationMatrix.extractRotation(node.matrix);\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.layers.mask = this.layerMask;\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 this.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 this.textureMatrix.multiply(virtualCamera.projectionMatrix);\n this.textureMatrix.multiply(virtualCamera.matrixWorldInverse);\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 const clearAlpha = renderer.getClearAlpha();\n renderer.setClearAlpha(0);\n renderer.setRenderTarget(this._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.setClearAlpha(clearAlpha);\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 }\n\n onDestroy(): void {\n this._renderTarget.dispose();\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}","/******************************************************************************\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, Iterator */\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 = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"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 = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\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\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\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, inner;\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 if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\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 var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\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 __rewriteRelativeImportExtension,\n};\n","\nexport class PropertyManager {\n static _classMap = new Map<String, Object>();\n static _propertyMap = new Map<Object, Object>();\n\n static _hasProperties(constructor: Function) {\n return PropertyManager._propertyMap.has(constructor) || PropertyManager._classMap.has(constructor.name);\n }\n static _getProperties(constructor: Function, initProps?: Object) {\n let props = PropertyManager._propertyMap.get(constructor);\n if (props === undefined && initProps) {\n PropertyManager._propertyMap.set(constructor, props = initProps);\n }\n return props;\n }\n static _getMergedProperties(constructor: Function) {\n let merged = null;\n const mergeProps = (props) => {\n if (props) {\n if (merged === null) {\n merged = Object.create(null);\n }\n Object.assign(merged, props);\n }\n }\n while (constructor !== Object.constructor.prototype) {\n mergeProps(PropertyManager._getProperties(constructor, false));\n mergeProps(PropertyManager._getClassProperties(constructor.name, false));\n constructor = Object.getPrototypeOf(constructor);\n }\n return merged;\n }\n static _getClassProperties(clsName: string, initProps?: Object) {\n let props = PropertyManager._classMap.get(clsName);\n if (props === undefined && initProps) {\n PropertyManager._classMap.set(clsName, props = initProps);\n }\n return props;\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 * 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 private _renderTarget: WebGLRenderTarget = null;\n private _textureMatrix: Matrix4 = new Matrix4();\n\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 get texture() {\n return this._renderTarget.texture;\n }\n\n get textureMatrix() {\n return this._textureMatrix;\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 = this._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 = this._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 }\n\n onDestroy(): void {\n this._renderTarget.dispose();\n }\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 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 extends Component> {\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: T) {\n this._targets.push(target);\n target.order !== 0 && this._targets.sort((a, b) => a.order - b.order)\n }\n\n remove(target: T) {\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 Component> 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 tickInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.tick!(dt));\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 tick(dt: number) {\n this.tickInvoker.invoke(dt);\n }\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.tick === \"function\") {\n this.tickInvoker.add(comp);\n }\n if (typeof comp.start === \"function\") {\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.tick === \"function\") {\n this.tickInvoker.remove(comp);\n }\n if (typeof comp.start === \"function\") {\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\";\n\ntype ComponentConstructor = new (...args: any[]) => Component;\n\ninterface ComponentInfo {\n mode?: DependentMode;\n components?: ComponentConstructor[];\n single?: boolean;\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 function single() {\n return function <T extends ComponentConstructor>(target: T): void {\n let info = ComponentManager._infoMap.get(target);\n if (info === undefined) {\n ComponentManager._infoMap.set(target, { single: true });\n }\n else {\n info.single = true;\n }\n }\n}\n\nexport class ComponentManager {\n static _infoMap = new Map<ComponentConstructor, ComponentInfo>();\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 tick(dt: number) {\n this._componentScheduler.tick(dt);\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\n const proto = func ? constructor : constructor.constructor;\n const info = ComponentManager._infoMap.get(proto) || {};\n\n if (!info.single || !this._findComponent(root, proto)) {\n const component = func ? new constructor() : constructor;\n component.node = root;\n component.node.name = component.name || component.constructor.name;\n component.manager = this;\n component.viewer = this.viewer;\n\n this._addDendencies(root, proto);\n\n if (!component.flags.onLoadCalled) {\n component.flags.onLoadCalled = true;\n component.onLoad && component.onLoad();\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 return component as T;\n }\n else {\n throw Error(\"Add multiple components\");\n }\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 }): T {\n return this._findComponent(node, constructor) as T;\n }\n\n getComponentInChildren<T extends Component>(node: Object3D, constructor: { new(): T }) {\n let comp = this._findComponent(node, constructor);\n if (comp) return comp;\n\n for (let child of node.children) {\n if (comp = this.getComponentInChildren(child, constructor)) {\n return comp;\n }\n }\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 }\n for (let child of node.children) {\n this.getComponentsInChidren(child, constructor, out);\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 { Component } from \"../Component\";\nimport { single } from \"../ComponentManager\";\n\n@single()\nexport class Renderer extends Component {\n order: number = -1;\n\n render(dt: number): void {\n const { renderer, scene, camera } = this.viewer;\n renderer.setRenderTarget(null);\n renderer.render(scene, camera);\n }\n\n resize(width: number, height: number): void {\n const { renderer } = this.viewer;\n renderer.setSize(width, height);\n }\n}","import { Camera, RenderTargetOptions, Scene, WebGLRenderTarget } from \"three\";\nimport { Component } from \"../Component\";\n\nexport class RenderTexture extends Component {\n private _scene: Scene;\n private _camera: Camera;\n private _fbo: WebGLRenderTarget;\n\n get texture() {\n return this._fbo.texture;\n }\n\n constructor(width?: number, height?: number, options?: RenderTargetOptions) {\n super();\n this.onLoad = () => {\n this._fbo = new WebGLRenderTarget(width, height, options);\n ({ scene: this._scene, camera: this._camera } = this.viewer);\n }\n this.update = () => {\n const { renderer } = this.viewer;\n\n const RT = renderer.getRenderTarget();\n const autoClear = renderer.autoClear;\n\n renderer.autoClear = true;\n renderer.setRenderTarget(this._fbo);\n renderer.render(this._scene, this._camera);\n\n renderer.autoClear = autoClear;\n renderer.setRenderTarget(RT);\n }\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 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 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 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 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 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 { Component } from \"./Component\";\n\nconst PIXEL_STEP = 10;\nconst LINE_HEIGHT = 40;\nconst PAGE_HEIGHT = 800;\n\nfunction normalizeWheel(/*object*/ event) /*object*/ {\n let sX = 0, sY = 0, // spinX, spinY\n pX = 0, pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in event) { sY = event.detail; }\n if ('wheelDelta' in event) { sY = -event.wheelDelta / 120; }\n if ('wheelDeltaY' in event) { sY = -event.wheelDeltaY / 120; }\n if ('wheelDeltaX' in event) { sX = -event.wheelDeltaX / 120; }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in event && event.axis === event.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in event) { pY = event.deltaY; }\n if ('deltaX' in event) { pX = event.deltaX; }\n\n if ((pX || pY) && event.deltaMode) {\n if (event.deltaMode == 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) { sX = (pX < 1) ? -1 : 1; }\n if (pY && !sY) { sY = (pY < 1) ? -1 : 1; }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n}\n\nexport interface PointerEventLike {\n button: number;\n buttons: number;\n clientX: number;\n clientY: number;\n offsetX: number;\n offsetY: number;\n pageX: number;\n pageY: number;\n screenX: number;\n screenY: number;\n movementX: number;\n movementY: number;\n}\n\nexport interface TouchEventLike {\n touches: {\n identifier: number;\n clientX: number;\n clientY: number;\n pageX: number;\n pageY: number;\n screenX: number;\n screenY: number;\n }[];\n}\n\n\nexport interface 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 interface InputOption {\n source: HTMLElement | Document;\n normalizeWheel?: (e: WheelEvent) => { spinX: number, spinY: number; pixelX: number; pixelY: number; };\n}\n\nexport class DeviceInput extends Component {\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 _target: HTMLElement | Document;\n private _normalizeWheel: (e: WheelEvent) => { spinX: number, spinY: number; pixelX: number; pixelY: number; };\n private _listeners: { target: InputTarget, type: string, callback: any }[] = [];\n\n private _touches: { id: number, position: Vector2 }[] = [];\n private _touchCount: number = 0;\n private _touchStart: boolean = false;\n private _touchMoving: boolean = false;\n\n private _pointer: Vector2 = new Vector2();\n private _pointerPixel: Vector2 = new Vector2();\n private _pointerButton: number = -1;\n private _pointerDown: boolean = false;\n private _pointerMoving: boolean = false;\n\n private _prePointer: Vector2 = new Vector2();\n private _prePointerPixel: Vector2 = new Vector2();\n private _preTouches: { id: number, position: Vector2 }[] = [];\n\n private _mouseWheel: number = 0;\n private _keys: { [k: string]: boolean } = {};\n private _pressability: Pressability = new Pressability();\n\n get pointer() {\n return this._pointer;\n }\n\n get pointerPixel() {\n return this._pointerPixel;\n }\n\n get pointerDown() {\n return this._pointerDown;\n }\n\n get pointerButton() {\n return this._pointerButton;\n }\n\n get pointerMoving() {\n return this._pointerMoving;\n }\n\n get prePointer() {\n return this._prePointer;\n }\n\n get prePointerPixel() {\n return this._prePointerPixel;\n }\n\n get preTouches() {\n return this._preTouches;\n }\n\n get mouseWheel() {\n return this._mouseWheel;\n }\n\n get touchStart() {\n return this._touchStart;\n }\n\n get touchMoving() {\n return this._touchMoving;\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 get pressability() {\n return this._pressability;\n }\n\n constructor(option: InputOption) {\n super();\n this._target = option.source;\n this._normalizeWheel = option.normalizeWheel || normalizeWheel;\n }\n\n onEnable() {\n const dom = this._target;\n this._addEventListener(dom, 'contextmenu', e => e.preventDefault());\n this._addEventListener(dom, \"pointerdown\", e => this._onPointerDown(e), { passive: false });\n this._addEventListener(dom, \"pointerup\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(dom, \"pointercancel\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(dom, \"pointerout\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(dom, \"pointermove\", e => this._onPointerMove(e), { passive: true });\n this._addEventListener(dom, \"wheel\", e => this._onMouseWheel(e), { passive: false });\n this._addEventListener(dom, \"touchstart\", e => this._onTouchStart(e), { passive: true });\n this._addEventListener(dom, \"touchend\", e => this._onTouchEnd(e), { passive: true });\n this._addEventListener(dom, \"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 onDisable() {\n for (const { 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 lastUpdate(dt: number): void {\n this._pointerDown = false;\n this._pointerMoving = false;\n this._prePointer.copy(this._pointer);\n this._prePointerPixel.copy(this._pointerPixel);\n\n for (let i = this._touchCount; i--;) {\n this._preTouches[i].id = this._touches[i].id;\n this._preTouches[i].position.copy(this._touches[i].position);\n }\n\n this._mouseWheel = 0;\n this._touchStart = false;\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 remapPointer(e: PointerEvent): PointerEventLike {\n const target = this._target;\n const isDocument = target instanceof Document;\n const width = isDocument ? window.innerWidth : target.offsetWidth;\n\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 } : e;\n }\n\n remapTouch(e: TouchEvent): TouchEventLike {\n const target = this._target;\n const isDocument = target instanceof Document;\n const width = isDocument ? window.innerWidth : target.offsetWidth;\n\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 } : e as any;\n }\n\n private _computePointer(e: PointerEventLike) {\n const target = this._target;\n const isDocument = target instanceof Document;\n const width = isDocument ? window.innerWidth : target.offsetWidth;\n const height = isDocument ? window.innerHeight : target.offsetHeight;\n\n this._pointer.x = e.pageX / width * 2 - 1;\n this._pointer.y = 1 - e.pageY / height * 2;\n this._pointerPixel.set(e.pageX, e.pageY);\n }\n\n private _onPointerDown(e: PointerEvent) {\n const ex = this.remapPointer(e);\n this._pointerDown = true;\n this._pointerButton = ex.button;\n this._computePointer(ex);\n this._prePointer.copy(this._pointer);\n this._prePointerPixel.copy(this._pointerPixel);\n this._pressability.pointerDown(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_DOWN, ex);\n }\n\n private _onPointerUp(e: PointerEvent) {\n const ex = this.remapPointer(e);\n this._pointerButton = -1;\n this._computePointer(ex);\n this._pressability.pointerUp(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_UP, ex);\n }\n\n private _onPointerMove(e: PointerEvent) {\n const ex = this.remapPointer(e);\n this._computePointer(ex);\n this._pointerMoving = true;\n this._pressability.pointerMove(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_MOVE, ex);\n }\n\n private _onMouseWheel(e: WheelEvent) {\n this._mouseWheel = this._normalizeWheel(e).pixelY;\n this.viewer.emit(DeviceInput.MOUSE_WHEEL, e);\n }\n\n private _onTouchStart(e: TouchEvent) {\n this._touchStart = true;\n const ex = this.remapTouch(e);\n\n const curr = ex.touches;\n const touches = this._touches;\n const preTouches = this._preTouches;\n\n for (let i = curr.length; i--;) {\n if (touches[i] === undefined) {\n touches[i] = { id: -1, position: new Vector2() };\n }\n\n const touch = curr[i];\n touches[i].id = touch.identifier;\n touches[i].position.set(touch.pageX, touch.pageY);\n\n if (preTouches[i] === undefined) {\n preTouches[i] = { id: touches[i].id, position: touches[i].position.clone() };\n }\n else {\n preTouches[i].id = touches[i].id;\n preTouches[i].position.copy(touches[i].position);\n }\n }\n this._touchCount = curr.length;\n\n this.viewer.emit(DeviceInput.TOUCH_START, ex);\n }\n\n private _onTouchEnd(e: TouchEvent) {\n this._touchMoving = false;\n const ex = this.remapTouch(e);\n this.viewer.emit(DeviceInput.TOUCH_END, ex);\n }\n\n private _onTouchMove(e: TouchEvent) {\n this._touchMoving = true;\n const ex = this.remapTouch(e);\n\n const curr = ex.touches;\n const touches = this._touches;\n\n for (let i = curr.length; i--;) {\n const touch = curr[i];\n touches[i].id = touch.identifier;\n touches[i].position.set(touch.pageX, touch.pageY);\n }\n this._touchCount = curr.length;\n\n this.viewer.emit(DeviceInput.TOUCH_MOVE, ex);\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 {\n MathUtils,\n Object3D,\n OrthographicCamera,\n PerspectiveCamera,\n Quaternion,\n Spherical,\n Vector2,\n Vector3\n} from \"three\";\n\nimport { DeviceInput } from \"../DeviceInput\";\nimport { SystemInfo } from \"../SystemInfo\";\nimport { property } from \"../PropertyManager\";\nimport { FInterpTo, VInterpTo } from \"../math\";\nimport { Component } from \"../Component\";\nimport { single } from \"../ComponentManager\";\n\nconst { clamp, degToRad } = MathUtils;\nconst { tan, PI } = Math;\nconst PI2 = PI * 2;\nconst ESP = 0.001;\n\n@single()\nexport class FreelookVirtualCamera extends Component<Object3D & { isCamera?: boolean }> {\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 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 _up: Vector3 = new Vector3(0, 1, 0);\n private _offset: Vector2 = new Vector2();\n private _fov: number = 45;\n private _near: number = 0.1;\n private _far: number = 1000;\n\n private _tempSmoothing: number = 6;\n private _tempRotateSmoothing: number = 8;\n private _targetPosition: Vector3 = new Vector3();\n private _targetTheta: number = 0;\n private _targetPhi: number = 0;\n private _targetRadius: number = 4;\n private _targetFov: number = this._fov;\n private _targetNear: number = this._near;\n private _targetFar: number = this._far;\n private _targetLookAt: Vector3 = new Vector3();\n private _targetOffset: Vector2 = new Vector2();\n private _targetUp: Vector3 = new Vector3(0, 1, 0);\n private _finalLookAt: Vector3 = new Vector3();\n\n name: string = \"FreelookVirtualCamera\";\n\n @property\n sync: boolean = true;\n @property({ dir: \"set\" })\n forbitAll: boolean = false;\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 radiusMin: number = ESP;\n @property({ dir: \"set\", step: 0.01 })\n radiusMax: number = Infinity;\n\n @property({ step: 0.01 })\n get up() {\n return this._up;\n }\n set up(v: Vector3) {\n this._up.copy(v);\n this._targetUp.copy(v);\n }\n\n @property({ step: 0.01 })\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({ step: 0.01 })\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 radius() {\n return this._spherical.radius;\n }\n set radius(v: number) {\n this._spherical.radius = this._targetRadius = clamp(v, this.radiusMin, this.radiusMax);\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._fov;\n }\n set fov(v: number) {\n this._fov = this._targetFov = v;\n }\n\n @property\n get near() {\n return this._near;\n }\n set near(v: number) {\n this._near = this._targetNear = v;\n }\n\n @property\n get far() {\n return this._far;\n }\n set far(v: number) {\n this._far = this._targetFar = v;\n }\n\n private _onMultiTouch: (loc0: Vector2, loc1: Vector2, preLoc0: Vector2, preLoc1: Vector2) => void;\n private _onSingleTouch: (loc0: Vector2, preLoc0: Vector2) => void;\n private _onCalculatePan: (out: Vector2, loc0: Vector2, loc1: Vector2) => Vector2;\n private _onDragging: (button: number, loc0: Vector2, preLoc0: Vector2) => void;\n private _onDistanceScale: (scale: number) => number;\n private _lerpCamera: (dt: number) => void;\n private _syncCamera: () => void;\n\n constructor() {\n super();\n this.node = new Object3D();\n this.node.isCamera = true;\n\n this.onLoad = () => {\n let camera = this.viewer.camera;\n if (camera instanceof PerspectiveCamera) {\n this.fov = camera.fov;\n this.near = camera.near;\n this.far = camera.far;\n\n this._onDistanceScale = (scale) => {\n return scale;\n }\n\n this._onMultiTouch = (loc0, loc1, preLoc0, preLoc1) => {\n this._setTargetSpringLength(this._calculateDistanceScale(preLoc0.distanceTo(preLoc1) / loc0.distanceTo(loc1)));\n\n const { preCenter, center, panDelta } = FreelookVirtualCamera;\n preCenter.copy(preLoc0).add(preLoc1).multiplyScalar(0.5);\n center.copy(loc0).add(loc1).multiplyScalar(0.5);\n this._setTargetLookAt(this._calculatePanDelta(panDelta, preCenter, center));\n }\n\n this._onSingleTouch = (loc0, preLoc0) => {\n const { rotateDelta } = FreelookVirtualCamera;\n this._setTargetRotation(this._calculateRotate(rotateDelta, preLoc0, loc0));\n }\n\n this._onCalculatePan = (out, loc0, loc1) => {\n return out.copy(loc1).sub(loc0).multiplyScalar(this.panSpeed / this.viewer.height);\n }\n\n this._onDragging = (button, loc0, preLoc0) => {\n const { rotateDelta, panDelta } = FreelookVirtualCamera;\n switch (button) {\n case 0:\n this._setTargetRotation(this._calculateRotate(rotateDelta, preLoc0, loc0));\n break;\n case 1:\n case 2:\n this._setTargetLookAt(this._calculatePanDelta(panDelta, preLoc0, loc0));\n break;\n }\n }\n\n this._lerpCamera = (dt) => {\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._targetRadius, dt, smoothing);\n\n VInterpTo(this._lookAt, this._targetLookAt, dt, smoothing);\n VInterpTo(this._offset, this._targetOffset, dt, smoothing);\n VInterpTo(this._up, this._targetUp, dt, smoothing);\n\n this._calculateLookAtOffset(this._offset, this._finalLookAt).add(this._lookAt);\n\n this.node.up.copy(this._up);\n this.node.position.setFromSpherical(this._spherical).add(this._finalLookAt);\n this.node.lookAt(this._finalLookAt);\n\n this._fov = FInterpTo(this._fov, this._targetFov, dt, smoothing);\n this._near = FInterpTo(this._near, this._targetNear, dt, smoothing);\n this._far = FInterpTo(this._far, this._targetFar, dt, smoothing);\n }\n\n this._syncCamera = () => {\n const { fov, near, far } = camera;\n\n camera.position.copy(this.node.position);\n camera.quaternion.copy(this.node.quaternion);\n camera.updateMatrixWorld();\n\n camera.fov = this.fov;\n camera.near = this.near;\n camera.far = this.far;\n\n if (fov !== camera.fov ||\n near != camera.near ||\n far !== camera.far\n ) {\n camera.updateProjectionMatrix();\n }\n }\n }\n else if (camera instanceof OrthographicCamera) {\n this.radius = camera.zoom;\n\n this._onDistanceScale = (scale) => {\n return 1 / scale;\n }\n\n this._onMultiTouch = (loc0, loc1, preLoc0, preLoc1) => {\n this._setTargetSpringLength(this._calculateDistanceScale(preLoc0.distanceTo(preLoc1) / loc0.distanceTo(loc1)));\n }\n\n this._onSingleTouch = (loc0: Vector2, preLoc0: Vector2) => {\n const { panDelta } = FreelookVirtualCamera;\n this._setTargetPosition(this._calculatePanDelta(panDelta, loc0, preLoc0));\n }\n\n this._onCalculatePan = (out, loc0, loc1) => {\n out.copy(loc0).sub(loc1);\n out.x *= (camera.right - camera.left) / camera.zoom / this.viewer.width;\n out.y *= (camera.top - camera.bottom) / camera.zoom / this.viewer.height;\n return out;\n }\n\n this._onDragging = (button, loc0, preLoc) => {\n const { panDelta } = FreelookVirtualCamera;\n switch (button) {\n case 0:\n case 2:\n this._setTargetPosition(this._calculatePanDelta(panDelta, loc0, preLoc));\n break;\n }\n }\n\n this._lerpCamera = (dt) => {\n const smoothing = this._tempSmoothing;\n this.node.position.x = FInterpTo(this.node.position.x, this._targetPosition.x, dt, smoothing);\n this.node.position.y = FInterpTo(this.node.position.y, this._targetPosition.y, dt, smoothing);\n this._spherical.radius = FInterpTo(this._spherical.radius, this._targetRadius, dt, smoothing);\n }\n\n this._syncCamera = () => {\n const { zoom } = camera;\n\n camera.position.copy(this.node.position);\n camera.quaternion.copy(this.node.quaternion);\n camera.zoom = this._spherical.radius;\n\n if (zoom !== camera.zoom) {\n camera.updateProjectionMatrix();\n }\n }\n }\n }\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._targetFov = this.fov;\n this._targetNear = this.near;\n this._targetFar = this.far;\n this._targetTheta = this.theta;\n this._targetPhi = this.phi;\n this._targetRadius = this.radius;\n this._targetLookAt.copy(this._lookAt);\n this._targetUp.copy(this._up);\n }\n\n goto({\n phi = this._targetPhi,\n theta = this._targetTheta,\n radius = this._targetRadius,\n offset = this._targetOffset,\n lookAt = this._lookAt,\n up = this._up,\n fov = this._fov,\n near = this._near,\n far = this._far,\n smoothing = this.smoothing,\n rotateSmoothing = this.smoothing,\n }: {\n phi?: number;\n theta?: number;\n radius?: number;\n lookAt?: Vector3;\n up?: Vector3;\n offset?: Vector2;\n fov?: number;\n near?: number;\n far?: 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._targetRadius = clamp(radius, this.radiusMin, this.radiusMax);\n this._targetLookAt.copy(lookAt);\n this._targetOffset.copy(offset);\n this._targetUp.copy(up);\n this._targetFov = fov;\n this._targetNear = near;\n this._targetFar = far;\n this._tempSmoothing = smoothing;\n this._tempRotateSmoothing = rotateSmoothing;\n }\n\n update(dt: number) {\n this._lerpCamera(dt);\n\n if (this.sync) {\n this._syncCamera();\n }\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(_: 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 } = FreelookVirtualCamera;\n loc0.set(e.pageX, e.pageY);\n this._onDragging(this._button, loc0, this._preLoc0);\n this._preLoc0.copy(loc0);\n }\n\n private _onMouseWheel(e: WheelEvent) {\n this._setTargetSpringLength(this._calculateDistanceScale(e.deltaY > 0 ? 1 / 0.85 : e.deltaY < 0 ? 0.85 : 1));\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 } = 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 this._onMultiTouch(loc0, loc1, this._preLoc0, this._preLoc1);\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._onSingleTouch(loc0, this._preLoc0);\n this._preLoc0.copy(loc0);\n }\n }\n }\n\n private _calculateDistanceScale(scale: number) {\n this._tempRotateSmoothing = this.rotateSmoothing;\n if (this.forbitAll || this.forbidZ) {\n scale = 1;\n }\n return this._onDistanceScale(scale);\n }\n\n private _calculateRotate(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.forbitAll || this.forbidX) {\n out.x = 0;\n }\n if (this.forbitAll || 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 this._onCalculatePan(out, loc0, loc1);\n\n if (this.forbitAll || this.forbidPanX) {\n out.x = 0;\n }\n if (this.forbitAll || 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.forbitAll || 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 _setTargetPosition(panOffset: Vector2) {\n this._targetPosition.x -= panOffset.x;\n this._targetPosition.y += panOffset.y;\n }\n\n private _setTargetSpringLength(scale: number) {\n this._targetRadius *= scale;\n this._targetRadius = clamp(this._targetRadius, this.radiusMin, this.radiusMax);\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, Vector4, 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 vec4 normalScaleBias; \nuniform sampler2D roughnessMap;\nuniform vec4 roughnessScaleBias; \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 * normalScaleBias.xy + normalScaleBias.zw);\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 * roughnessScaleBias.xy + roughnessScaleBias.zw).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#else\n irradiance += vec3(1.);\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: 0 },\n roughnessMap: { value: null },\n roughnessScaleBias: { value: new Vector4(1, 1, 0, 0) },\n normalMap: { value: null },\n normalScaleBias: { value: new Vector4(1, 1, 0, 0) },\n aoMap: { value: null },\n aoMapIntensity: { value: 1 },\n lightMap: { value: null },\n lightMapIntensity: { value: 1 },\n dfgLUT: { value: null }\n }\n\n constructor({\n reflector,\n ...parameters\n }: {\n name?: string;\n color?: Color;\n opacity?: number;\n reflector: Reflector;\n reflectIntensity?: number;\n transparent?: boolean;\n depthWrite?: boolean;\n metalness?: number;\n map?: Texture;\n roughness?: number;\n roughnessMap?: Texture;\n normalMap?: Texture;\n normalScaleBias?: Vector4;\n roughnessScaleBias?: Vector4;\n aoMap?: Texture;\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.texture;\n this.uniforms.textureMatrix.value = reflector.textureMatrix\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 roughnessScaleBias() {\n return this.uniforms.roughnessScaleBias.value;\n }\n set roughnessScaleBias(v: Vector4) {\n this.uniforms.roughnessScaleBias.value.copy(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 normalScaleBias() {\n return this.uniforms.normalScaleBias.value;\n }\n set normalScaleBias(v: Vector4) {\n this.uniforms.normalScaleBias.value.copy(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({ min: 0, max: 1 })\n get aoMapIntensity() {\n return this.uniforms.aoMapIntensity.value;\n }\n set aoMapIntensity(v: Texture) {\n this.uniforms.aoMapIntensity.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.texture;\n this.uniforms.shadowsMatrix.value = shadows.textureMatrix;\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 { 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}","import { Task } from \"./Task\";\n\n\nexport class TaskManager {\n private _tasks: Task[] = [];\n private _taskIndex: number = 0;\n private _onStartCalled: boolean = false;\n\n get isComplete() {\n return this._taskIndex >= this._tasks.length;\n }\n\n onStart?: () => void;\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\n destroy() {\n this._tasks = [];\n this._taskIndex = 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\n if (this._onStartCalled === false) {\n this._onStartCalled = true;\n this.onStart && this.onStart();\n }\n\n ++this._taskIndex;\n\n this.onProgress && this.onProgress(task, this._taskIndex, this._tasks.length);\n\n if (this._taskIndex === this._tasks.length) {\n this._onStartCalled = false;\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 checkWebGL(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}\n\nexport enum ResizeMode {\n AUTO,\n MUNUAL\n}","import { LoadingManager } from \"three\";\nimport { TextureSettings } from \"../TextureSettings\";\nimport { Loader } from \"./Loader\";\nimport type { Viewer } from \"../Viewer\";\n\nexport type LoaderConstructor = new (viewer: Viewer) => Loader\n\nexport interface AssetProperties<URL extends string = string> extends TextureSettings {\n url?: URL,\n ext?: string,\n buffer?: string | ArrayBuffer,\n path?: string;\n resourcePath?: string;\n dracoPath?: string;\n transcoderPath?: string;\n manager?: LoadingManager;\n onProgress?: (event: ProgressEvent) => void,\n}\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 _viewer: Viewer;\n private _loaders: Map<string, Loader> = new Map();\n private _resources: Map<string, unknown> = new Map();\n private _loaded: number = 0;\n private _totalCount: number = 0;\n\n constructor(viewer: Viewer) {\n this._viewer = viewer;\n }\n\n get isComplete() {\n return this._loaded >= this._totalCount;\n }\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._viewer);\n for (let ext of loader.extension) {\n this._loaders.set(ext, loader);\n }\n return loader;\n }\n\n loadAsset<Asset = unknown>({\n url, ext, onProgress, ...props\n }: AssetProperties) {\n return new Promise<Asset>((resolve, reject) => {\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, texSettings, ...props,\n onProgress,\n onLoad: (asset) => {\n this._loaded++;\n this._resources.set(url, asset);\n resolve(asset);\n },\n onError: (err) => {\n console.error(`${url} not exist`, err)\n reject(err)\n },\n });\n this._totalCount++;\n }\n else {\n reject(\"ResourceManager.loadAsset: missing loader for \" + sel);\n }\n })\n }\n\n getAsset<Asset = unknown>(url: string) {\n return this._resources.get(url) as Asset;\n }\n}","\nexport class Task {\n static _instanceCount: number = 0;\n\n instanceId: number = Task._instanceCount++;\n name: string = \"task\" + this.instanceId\n excute: () => void\n\n constructor(excute: () => void, name?: string) {\n this.excute = excute;\n this.name = name || this.name;\n }\n}","import {\n BufferGeometry,\n Camera,\n ClampToEdgeWrapping,\n Color,\n ColorRepresentation,\n ColorSpace,\n DataTexture,\n Float32BufferAttribute,\n FloatType,\n LinearFilter,\n LinearMipMapLinearFilter,\n LinearSRGBColorSpace,\n LinearToneMapping,\n LoadingManager,\n Material,\n MathUtils,\n Mesh,\n NearestFilter,\n NoBlending,\n Object3D,\n OrthographicCamera,\n PCFSoftShadowMap,\n PerspectiveCamera,\n RGBAFormat,\n Scene,\n ShaderMaterial,\n ShadowMapType,\n SRGBColorSpace,\n Texture,\n TextureDataType,\n ToneMapping,\n TypedArray,\n UnsignedByteType,\n UVMapping,\n Vector2,\n Vector3,\n Vector4,\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 { checkWebGL } from \"./WebGL\";\nimport { DeviceInput, InputOption } from \"./DeviceInput\";\nimport { Orientation, ResizeMode } from \"./enums\";\nimport { AssetProperties, ResourceManager, LoaderConstructor } from \"./asset/ResourceManager\";\nimport { __C, __Comp, __P, __Properties } from \"./types\";\nimport { Component } from \"./Component\";\nimport { applyProps } from \"./Utils\";\nimport { SystemInfo } from \"./SystemInfo\";\nimport { BINLoader, GLTFLoader, HDRLoader, JSONLoader, SVGLoader, TextureLoader, KTX2Loader } from \"./loaders\";\nimport { Task } from \"./Task\";\nimport { Renderer } from \"./components/Renderer\";\n\nconst vert_Fullscreen = `\nvarying vec2 v_uv;\n\nvoid main () {\n v_uv = position.xy * 0.5 + 0.5;\n gl_Position = vec4(position, 1.);\n}\n`\n\nconst frag_Copy = `\nuniform sampler2D map;\nvarying vec2 v_uv;\n\nvoid main() {\n gl_FragColor = texture2D(map, v_uv);\n}\n`\n\nconst frag_Clear = `\nuniform vec4 u_color;\n\nvoid main() {\n gl_FragColor = u_color;\n}\n`\nconst vert_Blur9Varying = `\nuniform vec2 u_delta;\nvarying vec2 v_uv[9];\n\nvoid main() {\n vec2 uv = position.xy * 0.5 + 0.5;\n v_uv[0] = uv;\n\n vec2 delta = u_delta;\n v_uv[1] = uv - delta;\n v_uv[2] = uv + delta;\n\n delta += u_delta;\n v_uv[3] = uv - delta;\n v_uv[4] = uv + delta;\n\n delta += u_delta;\n v_uv[5] = uv - delta;\n v_uv[6] = uv + delta;\n\n delta += u_delta;\n v_uv[7] = uv - delta;\n v_uv[8] = uv + delta;\n\n gl_Position = vec4(position, 1.0);\n}`;\n\nconst frag_Blur9Varying = `\nuniform sampler2D u_texture;\nvarying vec2 v_uv[9];\n\nvoid main() {\n vec4 color = texture2D(u_texture, v_uv[0]) * 0.1633;\n color += texture2D(u_texture, v_uv[1]) * 0.1531;\n color += texture2D(u_texture, v_uv[2]) * 0.1531;\n color += texture2D(u_texture, v_uv[3]) * 0.12245;\n color += texture2D(u_texture, v_uv[4]) * 0.12245;\n color += texture2D(u_texture, v_uv[5]) * 0.0918;\n color += texture2D(u_texture, v_uv[6]) * 0.0918;\n color += texture2D(u_texture, v_uv[7]) * 0.051;\n color += texture2D(u_texture, v_uv[8]) * 0.051;\n gl_FragColor = color;\n}`;\n\nconst frag_Blur9 = `\nuniform sampler2D u_texture;\nuniform vec2 u_delta;\nvarying vec2 v_uv;\n\nvoid main() {\n vec4 color = texture2D(u_texture, v_uv) * 0.1633;\n\n vec2 delta = u_delta;\n color += texture2D(u_texture, v_uv - delta) * 0.1531;\n color += texture2D(u_texture, v_uv + delta) * 0.1531;\n\n delta += u_delta;\n color += texture2D(u_texture, v_uv - delta) * 0.12245;\n color += texture2D(u_texture, v_uv + delta) * 0.12245;\n\n delta += u_delta;\n color += texture2D(u_texture, v_uv - delta) * 0.0918;\n color += texture2D(u_texture, v_uv + delta) * 0.0918;\n\n delta += u_delta;\n color += texture2D(u_texture, v_uv - delta) * 0.051;\n color += texture2D(u_texture, v_uv + delta) * 0.051;\n\n gl_FragColor = color;\n}`;\n\ntype SizeFunction = () => number[];\n\nconst EMPTY = {}\n\nexport class Viewer extends EventEmitter {\n static instanceCount: number = 0;\n static target: Vector3 = new Vector3();\n static worldPos: Vector3 = new Vector3();\n static clearColor: Color = new Color();\n\n private _instanceId: number = Viewer.instanceCount++;\n private _root: HTMLElement;\n private _canvas: HTMLCanvasElement;\n private _gl: WebGLRenderingContext | WebGL2RenderingContext;\n private _RENDER_TARGET_FLOAT_TYPE: TextureDataType;\n private _DATA_FLOAT_TYPE: TextureDataType;\n\n private _mount: Object3D;\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 _resourceOptions: { path?: string, resourcePath?: string, dracoPath?: string, transcoderPath?: string, manager?: LoadingManager };\n\n private _scene: Scene;\n private _camera: Camera;\n private _renderer: WebGLRenderer;\n private _context: { scene: Scene, camera: Camera };\n\n private _active: 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 _windowSize: SizeFunction = () => [window.innerWidth, window.innerHeight];\n private _orientation: Orientation = Orientation.AUTO;\n private _freeze: boolean = false;\n\n private _taskManager: TaskManager;\n private _resourceManager: ResourceManager;\n private _componentManager: ComponentManager;\n private _loadingManager: LoadingManager;\n private _decodeURL: (url: string) => string;\n\n get root() {\n return this._root;\n }\n get time() {\n return this._time;\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 get instanceId() {\n return this._instanceId;\n }\n get componentManager() {\n return this._componentManager;\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 freeze() {\n return this._freeze;\n }\n set freeze(v: boolean) {\n this._freeze = v;\n }\n\n constructor({\n root,\n canvas,\n input,\n shadows = false,\n sortObjects = true,\n resize = ResizeMode.AUTO,\n orthographic = false,\n camera = orthographic ? { near: -100, far: 100 } : { 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 transcoderPath = \"three/examples/js/libs/basis/\",\n orientation = Orientation.AUTO,\n decodeURL = (url) => url,\n loader = {},\n tasker = {},\n ...webglOpts\n }: {\n /** 根节点,用于屏幕旋转 */\n root?: HTMLElement;\n /** 渲染用的 canvas 元素,如果不提供,默认获取 id 为 \"canvas\" 的元素 */\n canvas?: HTMLCanvasElement;\n /** 设备输入容器,默认使用canvas */\n input?: InputOption,\n /** 是否开启阴影或阴影类型,true/false 表示默认 PCFSoftShadowMap */\n shadows?: boolean | ShadowMapType;\n /** 渲染是否开启排序,默认 True */\n sortObjects?: boolean;\n /** 渲染目标帧率 (FPS),-1 表示无限制帧率 */\n targetFrameRate?: number;\n /** 是否固定帧时间,true 使用固定 delta 时间 */\n fixedFrameTime?: boolean;\n /** 调整大小模式,AUTO: 自动 resize,MUNUAL: 手动控制 */\n resize?: ResizeMode | SizeFunction;\n /** 渲染器输出的色彩空间,默认 SRGBColorSpace */\n colorSpace?: ColorSpace;\n /** 渲染器的色调映射类型,默认 LinearToneMapping */\n toneMapping?: ToneMapping;\n /** 色调映射曝光值,默认 1 */\n toneMappingExposure?: number;\n /** 最大设备像素比,用于控制高分屏渲染精度 */\n maxDPR?: number;\n /** 模型路径,通常用于加载主模型文件(如 glTF、FBX 等)的基础路径 */\n path?: string;\n /** 资源路径,模型引用的其他资源(如贴图、材质等)的路径 */\n resourcePath?: string;\n /** Draco 压缩解码器路径,默认 Google CDN 地址 */\n dracoPath?: string;\n /** The WASM transcoder and JS wrapper are available from the examples/jsm/libs/basis directory. */\n transcoderPath?: string;\n /** 页面方向,AUTO: 自动,LANDSCAPE: 横屏,PORTRAIT: 竖屏 */\n orientation?: Orientation;\n /** Creates an orthographic camera */\n orthographic?: boolean;\n /** A `THREE.Camera` instance or props that go into the default camera */\n camera?: (Camera | __Properties<PerspectiveCamera & OrthographicCamera>)\n decodeURL?: (url: string) => string;\n /** 加载管理器 */\n loader?: {\n onComplete?: () => void,\n onProgress?: (url: string, loaded: number, total: number) => void,\n onError?: (url: string) => void,\n };\n /** 任务管理器 */\n tasker?: {\n onComplete?: () => void,\n onProgress?: (task: Task, loaded: number, total: number) => void,\n onError?: (task: Task) => void,\n };\n } & WebGLRendererParameters = EMPTY) {\n super();\n const el = canvas || document.getElementById(\"canvas\") as HTMLCanvasElement;\n const webgl = checkWebGL(el, webglOpts);\n\n if (!webgl) {\n throw Error(\"Unsupport WebGL in current platform\");\n }\n\n this._canvas = el;\n this._root = root || el;\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(orthographic ? new OrthographicCamera() : new PerspectiveCamera(), camera);\n this._renderer = new WebGLRenderer({ canvas: el, context: webgl.gl });\n this._renderer.setPixelRatio(this._dpr);\n this._renderer.info.autoReset = false;\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.sortObjects = sortObjects;\n\n this._context = { scene: this._scene, camera: this._camera };\n this._targetFrameRate = targetFrameRate;\n this._windowSize = typeof resize === \"function\" ? resize : resize === ResizeMode.AUTO ? this._windowSize : null;\n\n this._taskManager = new TaskManager(tasker.onComplete, tasker.onProgress, tasker.onError);\n this._loadingManager = new LoadingManager(loader.onComplete, loader.onProgress, loader.onError);\n\n this._resourceManager = new ResourceManager(this);\n this._componentManager = new ComponentManager(this);\n\n this._resourceOptions = { path, resourcePath, dracoPath, transcoderPath, manager: this._loadingManager };\n\n this._mount = applyProps(new Object3D(), { name: \"Mount\" })\n this._input = this.add(new DeviceInput(input || { source: this._canvas }));\n this._decodeURL = decodeURL;\n\n this.add(Renderer);\n this.addLoader(GLTFLoader);\n this.addLoader(HDRLoader);\n this.addLoader(TextureLoader);\n this.addLoader(JSONLoader);\n this.addLoader(SVGLoader);\n this.addLoader(KTX2Loader);\n\n this.rotate();\n this.resize();\n this.animate();\n }\n\n destroy() {\n this.stop();\n this._renderer.dispose();\n this._taskManager.destroy();\n this._resourceManager.destroy();\n this._componentManager.destroy();\n }\n\n animate() {\n const loop = (dt: number) => {\n if (!this._active) return;\n\n this._componentManager.tick(dt);\n\n if (this._resourceManager.isComplete) {\n this._taskManager.update();\n }\n\n if (this._taskManager.isComplete) {\n dt = Math.min(dt, 0.067);\n\n this._componentManager.update(dt);\n this._renderer.info.reset();\n\n if (!this._freeze) {\n this._componentManager.render(dt);\n }\n }\n }\n const frame = (time: number) => {\n this._time = time * 0.001;\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 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 loop(this._time - this._lastTime);\n this._lastTime = this._time;\n }\n }\n this._renderer.setAnimationLoop(frame);\n }\n\n start() {\n if (this._active === false) {\n this._active = true;\n this.rotate();\n this.resize();\n }\n return this;\n }\n\n stop() {\n this._active = 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(width?: number, height?: number) {\n if (this._windowSize) {\n [width, height] = this._windowSize();\n }\n if (!(width && height)) return;\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;\n if (camera instanceof OrthographicCamera) {\n if (!camera.userData.manual) {\n const aspect = width / height;\n camera.left = -aspect;\n camera.right = aspect;\n camera.top = 1;\n camera.bottom = -1;\n camera.updateProjectionMatrix();\n }\n this._viewport = { width: width / camera.zoom, height: height / camera.zoom, factor: 1 };\n }\n else if (camera instanceof PerspectiveCamera) {\n if (!camera.userData.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._componentManager.resize(width, height);\n }\n\n setURLModifier(callback?: (url: string) => string) {\n return this._loadingManager.setURLModifier(callback);\n }\n\n loadAsset<URL extends string, Asset = any>({ url, ...props }: AssetProperties<URL>) {\n return this._resourceManager.loadAsset<Asset>(Object.assign({ url: this._decodeURL(url) }, this._resourceOptions, props));\n }\n\n getAsset<URL extends string, Asset = any>(url: URL) {\n return this._resourceManager.getAsset<Asset>(this._decodeURL(url));\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 getComponent<T extends Component>(constructor: { new(...args: any[]): T }, node?: Object3D,) {\n if (node) {\n return this._componentManager.getComponent(node, constructor);\n }\n for (let child of this._mount.children) {\n let comp = this._componentManager.getComponent(child, constructor);\n if (comp) return comp;\n }\n }\n\n task<T extends Object3D | Scene | Material | Texture | Function>(target?: T): T;\n task<T extends Material[]>(target?: Material[]): T;\n task(target: any) {\n const excute = typeof target === \"function\" ? target : () => this.compile(target);\n this._taskManager.add(new Task(excute));\n return target;\n }\n\n use<T extends Scene | Camera | null, K extends __C<T>>(object: T | K & __C<T>, props?: __P<T, K>): T;\n use(object?: any, props?: any) {\n let ins = getClassInstance(object);\n if (ins) {\n if (ins.isScene) {\n this._scene = ins;\n }\n if (ins.isCamera) {\n this._camera = ins;\n }\n if (props) {\n if (ins.isCamera) {\n ins.userData.manual = props.manual ?? false;\n }\n applyProps(ins, props);\n }\n return ins;\n }\n else {\n this._scene = this._context.scene;\n this._camera = this._context.camera;\n }\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 scale,\n parent,\n position,\n rotation,\n manual,\n component,\n layerMask,\n children,\n ...props\n }: any = EMPTY\n ) {\n let mount = false;\n let ins = getClassInstance(object, args);\n if (ins.isObject3D) {\n node = ins;\n }\n else if (ins.isComponent) {\n node = node || ins.node;\n if (!node) {\n node = new Object3D();\n mount = true;\n }\n this._componentManager.addComponent(node, ins);\n }\n else {\n throw Error(\"Unsuport object\");\n }\n\n if (parent === undefined) {\n parent = mount ? this._mount : this._scene;\n }\n if (parent !== node) {\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 if (children) {\n const children_ = Array.isArray(children) ? children : [children];\n node.add(...children_);\n }\n\n if (layerMask) {\n node.layers.mask = layerMask;\n }\n\n if (scale || position || rotation) {\n applyProps(node, { scale, position, rotation });\n }\n if (props) {\n applyProps(ins, props);\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: TypedArray,\n width: number,\n height: number,\n floatType: boolean = false,\n nearest: boolean = true,\n ) {\n const texture = 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 texture.needsUpdate = true;\n return texture;\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 copy(\n src: WebGLRenderTarget | Texture,\n dest: WebGLRenderTarget,\n ) {\n Viewer.Copy(this._renderer, src, dest);\n }\n\n clearColor(\n renderTarget: WebGLRenderTarget,\n color: ColorRepresentation,\n alpha?: number,\n ) {\n Viewer.ClearColor(this._renderer, renderTarget, color, alpha);\n }\n\n stash(\n renderTarget: WebGLRenderTarget | null,\n callback: (renderer: WebGLRenderer) => void,\n clearColor?: ColorRepresentation,\n clearAlpha?: number,\n ) {\n Viewer.Stash(this._renderer, renderTarget, callback, clearColor, clearAlpha);\n }\n\n blur(\n blurLevel: number,\n shadingScale: number,\n inputBuffer: WebGLRenderTarget,\n tempBuffer: WebGLRenderTarget,\n outputBuffer?: WebGLRenderTarget,\n fixedOutput?: boolean\n ) {\n Viewer.Blur(this._renderer, blurLevel, shadingScale, inputBuffer, tempBuffer, outputBuffer, fixedOutput);\n }\n\n render(\n renderTarget: WebGLRenderTarget | null,\n node: Object3D,\n camera: Camera,\n clearColor?: ColorRepresentation,\n clearAlpha?: number,\n ) {\n Viewer.Render(this._renderer, renderTarget, node, camera, clearColor, clearAlpha);\n }\n\n compile(target?: Object3D | Scene | Material | Texture): void;\n compile(target?: Material[]): void;\n compile(target?: any) {\n const { renderer, scene, camera } = this;\n\n const compile = (v: any) => {\n if (v.isMaterial) {\n Viewer.CompileMaterial(renderer, scene, camera, v);\n }\n else if (v.isObject3D) {\n Viewer.CompileObject3D(renderer, scene, camera, v);\n }\n else if (v.isTexture) {\n Viewer.CompileTexture(renderer, v);\n }\n }\n\n if (Array.isArray(target)) {\n target.forEach(v => compile(v));\n }\n else if (typeof target === \"object\") {\n compile(target);\n }\n else {\n Viewer.CompileObject3D(renderer, scene, camera, scene);\n }\n }\n\n static fullscreenMesh: Mesh = new Mesh(Viewer.CreateFullscreenTriangle());\n static fullscreenCamera: OrthographicCamera = new OrthographicCamera(- 1, 1, 1, - 1, 0, 1);\n\n static copyMaterial: ShaderMaterial = new ShaderMaterial({\n uniforms: {\n map: { value: null }\n },\n vertexShader: vert_Fullscreen,\n fragmentShader: frag_Copy,\n blending: NoBlending,\n depthTest: false,\n depthWrite: false,\n });\n\n static clearMaterial: ShaderMaterial = new ShaderMaterial({\n uniforms: {\n u_color: { value: new Vector4(1, 1, 1, 1) }\n },\n vertexShader: vert_Fullscreen,\n fragmentShader: frag_Clear,\n blending: NoBlending,\n depthTest: false,\n depthWrite: false,\n })\n\n static blur9Material: ShaderMaterial = new ShaderMaterial({\n uniforms: {\n u_texture: { value: null },\n u_delta: { value: new Vector2() }\n },\n vertexShader: vert_Fullscreen,\n fragmentShader: frag_Blur9,\n })\n\n\n static blur9VaryingMaterial: ShaderMaterial = new ShaderMaterial({\n uniforms: {\n u_texture: { value: null },\n u_delta: { value: new Vector2() }\n },\n vertexShader: vert_Blur9Varying,\n fragmentShader: frag_Blur9Varying,\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 Blur(\n renderer: WebGLRenderer,\n blurLevel: number,\n shadingScale: number,\n inputBuffer: WebGLRenderTarget,\n tempBuffer: WebGLRenderTarget,\n outputBuffer?: WebGLRenderTarget,\n fixedOutput: boolean = false\n ) {\n const width = Math.ceil(inputBuffer.width * shadingScale);\n const height = Math.ceil(inputBuffer.height * shadingScale);\n\n if (!tempBuffer) {\n console.warn(\"You must provide an intermediate render target (tempBuffer) for blur.\");\n return;\n }\n\n if (width !== tempBuffer.width || height !== tempBuffer.height) {\n tempBuffer.setSize(width, height);\n }\n\n if (outputBuffer) {\n if (!fixedOutput) {\n outputBuffer.setSize(inputBuffer.width, inputBuffer.height);\n }\n } else {\n outputBuffer = inputBuffer;\n }\n\n const c = 0.25;\n\n // 横向模糊\n const material = renderer.capabilities.maxVaryings > 8 ? Viewer.blur9VaryingMaterial : Viewer.blur9Material;\n material.uniforms.u_texture.value = inputBuffer.texture;\n material.uniforms.u_delta.value.set(blurLevel / width * c, 0);\n Viewer.Blit(renderer, tempBuffer, material);\n\n // 纵向模糊\n material.uniforms.u_texture.value = tempBuffer.texture;\n material.uniforms.u_delta.value.set(0, blurLevel / height * c);\n Viewer.Blit(renderer, outputBuffer, material);\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 Copy(\n renderer: WebGLRenderer,\n src: WebGLRenderTarget | Texture,\n dest: WebGLRenderTarget,\n ) {\n Viewer.copyMaterial.uniforms.map.value = src instanceof WebGLRenderTarget ? src.texture : src;\n Viewer.Blit(renderer, dest, Viewer.copyMaterial);\n }\n\n static ClearColor(\n renderer: WebGLRenderer,\n renderTarget: WebGLRenderTarget | null,\n clearColor: ColorRepresentation,\n clearAlpha?: number\n ) {\n Viewer.Stash(renderer, renderTarget, () => renderer.clear(), clearColor, clearAlpha);\n }\n\n static Render(\n renderer: WebGLRenderer,\n renderTarget: WebGLRenderTarget | null,\n node: Object3D,\n camera: Camera,\n clearColor?: ColorRepresentation,\n clearAlpha?: number,\n ) {\n Viewer.Stash(renderer, renderTarget, () => renderer.render(node, camera), clearColor, clearAlpha);\n }\n\n static Stash(\n renderer: WebGLRenderer,\n renderTarget: WebGLRenderTarget | null,\n callback: (renderer: WebGLRenderer) => void,\n clearColor?: ColorRepresentation,\n clearAlpha?: number,\n ) {\n const autoClear = renderer.autoClear;\n const RT = renderer.getRenderTarget();\n const alpha = renderer.getClearAlpha();\n const color = renderer.getClearColor(Viewer.clearColor);\n\n renderer.autoClear = true;\n renderer.setRenderTarget(renderTarget);\n clearColor !== undefined && renderer.setClearColor(clearColor, clearAlpha);\n\n callback && callback(renderer);\n\n renderer.autoClear = autoClear;\n renderer.setRenderTarget(RT);\n clearColor !== undefined && renderer.setClearColor(color, alpha);\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}","import { CubeTexture, CubeUVReflectionMapping, 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 return target;\n }\n pmremGenerator._fromCubeTexture = function (texture: any) {\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: any) {\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 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 { Component } from \"../Component\";\nimport { single } from \"../ComponentManager\";\n\n@single()\nexport class Environment extends Component {\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 = 0.1,\n far = 100,\n layerMask = 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 layerMask?: 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, far, cubeRenderTarget);\n this._cubeCamera.position.copy(position);\n this._cubeCamera.layers.mask = layerMask;\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 { Component } from \"../Component\";\nimport { single } from \"../ComponentManager\";\n\n@single()\nexport class BoxProjection extends Component {\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_TRANSMISSION) || 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 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 { Component } from \"../Component\"\nimport { single } from \"../ComponentManager\"\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\n@single()\nexport class PerformanceMonitor extends Component {\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 { AssetProperties, ResourceManager } from \"../asset/ResourceManager\";\nimport { Component } from \"../Component\";\nimport { single } from \"../ComponentManager\";\n\nenum Mode {\n BUFFER,\n BUFFER_RAW,\n URL,\n URL_RAW,\n}\n\nconst defaultExtension = {\n \"fbx\": Mode.BUFFER,\n \"gltf\": Mode.BUFFER,\n \"glb\": Mode.BUFFER,\n \"buf\": Mode.BUFFER,\n \"hdr\": Mode.URL,\n \"png\": Mode.URL,\n \"jpg\": Mode.URL,\n \"webp\": Mode.URL,\n}\n\n@single()\nexport class DropFile extends Component {\n static readonly Mode = Mode;\n\n private _onLoad: Function;\n private _onError: Function;\n private _extension: { [k: string]: number };\n\n constructor({\n onLoad,\n onError,\n extension = defaultExtension\n }: {\n onLoad?: Function;\n onError?: Function;\n extension?: { [k: string]: Mode }\n buffers?: string[],\n } = {}) {\n super();\n this._onLoad = onLoad;\n this._onError = onError;\n this._extension = extension;\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.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 filename = file.name;\n const ext = ResourceManager.extension(filename);\n\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\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\n const viewer = this.viewer;\n const loadAsset = (props: AssetProperties) => {\n return viewer.loadAsset(props).then(loadCallback).catch(errCallback);\n }\n\n switch (this._extension[ext]) {\n case Mode.URL:\n reader.addEventListener(\"load\", event => loadAsset({ ext, url: event.target.result as string }), false);\n reader.readAsDataURL(file);\n break;\n case Mode.URL_RAW:\n reader.addEventListener(\"load\", event => loadCallback({ userData: {}, raw: event.target.result }));\n reader.readAsDataURL(file);\n break;\n case Mode.BUFFER:\n reader.addEventListener(\"load\", event => loadAsset({ ext, buffer: event.target.result, resourcePath: dir }), false);\n reader.readAsArrayBuffer(file);\n break;\n case Mode.BUFFER_RAW:\n default:\n reader.addEventListener(\"load\", event => loadCallback({ userData: {}, raw: event.target.result }));\n reader.readAsArrayBuffer(file);\n break;\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} ","\nconst newline = /\\n/\nconst newlineChar = '\\n'\nconst whitespace = /\\s/\n\nexport function wordwrap(\n text: string,\n opt?: {\n width?: number;\n mode?: \"nowrap\" | \"pre\" | \"greedy\";\n start?: number;\n end?: number;\n measure?: Function;\n letterSpacing?: number\n }\n) {\n opt = opt || {}\n\n //zero width results in nothing visible\n if (opt.width === 0 && opt.mode !== 'nowrap')\n return []\n\n text = text || ''\n const width = typeof opt.width === 'number' ? opt.width : Number.MAX_VALUE\n const start = Math.max(0, opt.start || 0)\n const end = typeof opt.end === 'number' ? opt.end : text.length\n const mode = opt.mode\n const letterSpacing = opt.letterSpacing || 0;\n const measure = opt.measure || monospace\n if (mode === 'pre')\n return pre(measure, text, start, end, width, letterSpacing)\n else\n return greedy(measure, text, start, end, width, mode, letterSpacing)\n}\n\nfunction idxOf(text: string, chr: string, start: number, end: number) {\n var idx = text.indexOf(chr, start)\n if (idx === -1 || idx > end)\n return end\n return idx\n}\n\nfunction isWhitespace(chr: string) {\n return whitespace.test(chr)\n}\n\nfunction pre(measure: Function, text: string, start: number, end: number, width: number, letterSpacing: number) {\n var lines = []\n var lineStart = start\n for (var i = start; i < end && i < text.length; i++) {\n var chr = text.charAt(i)\n var isNewline = newline.test(chr)\n\n //If we've reached a newline, then step down a line\n //Or if we've reached the EOF\n if (isNewline || i === end - 1) {\n var lineEnd = isNewline ? i : i + 1\n var measured = measure(text, lineStart, lineEnd, width, letterSpacing)\n lines.push(measured)\n\n lineStart = i + 1\n }\n }\n return lines\n}\n\nfunction greedy(measure: Function, text: string, start: number, end: number, width: number, mode: string, letterSpacing: number) {\n //A greedy word wrapper based on LibGDX algorithm\n //https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g2d/BitmapFontCache.java\n var lines = []\n\n var testWidth = width\n //if 'nowrap' is specified, we only wrap on newline chars\n if (mode === 'nowrap')\n testWidth = Number.MAX_VALUE\n\n while (start < end && start < text.length) {\n //get next newline position\n var newLine = idxOf(text, newlineChar, start, end)\n\n //eat whitespace at start of line\n while (start < newLine) {\n if (!isWhitespace(text.charAt(start)))\n break\n start++\n }\n\n //determine visible # of glyphs for the available width\n var measured = measure(text, start, newLine, testWidth, letterSpacing)\n\n var lineEnd = start + (measured.end - measured.start)\n var nextStart = lineEnd + newlineChar.length\n\n //if we had to cut the line before the next newline...\n if (lineEnd < newLine) {\n //find char to break on\n while (lineEnd > start) {\n if (isWhitespace(text.charAt(lineEnd)))\n break\n lineEnd--\n }\n if (lineEnd === start) {\n if (nextStart > start + newlineChar.length) nextStart--\n lineEnd = nextStart // If no characters to break, show all.\n } else {\n nextStart = lineEnd\n //eat whitespace at end of line\n while (lineEnd > start) {\n if (!isWhitespace(text.charAt(lineEnd - newlineChar.length)))\n break\n lineEnd--\n }\n }\n }\n if (lineEnd >= start) {\n var result = measure(text, start, lineEnd, testWidth)\n lines.push(result)\n }\n start = nextStart\n }\n return lines\n}\n\n//determines the visible number of glyphs within a given width\nfunction monospace(text: string, start: number, end: number, width: number) {\n var glyphs = Math.min(width, end - start)\n return {\n start: start,\n end: start + glyphs\n }\n}\n","import { wordwrap } from \"./wordwrap\"\n\nconst X_HEIGHTS = ['x', 'e', 'a', 'o', 'n', 's', 'r', 'c', 'u', 'm', 'v', 'w', 'z']\nconst M_WIDTHS = ['m', 'w']\nconst CAP_HEIGHTS = ['H', 'I', 'N', 'E', 'F', 'K', 'L', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']\n\nconst TAB_ID = '\\t'.charCodeAt(0)\nconst SPACE_ID = ' '.charCodeAt(0)\nconst ALIGN_LEFT = 0, ALIGN_CENTER = 1, ALIGN_RIGHT = 2;\n\nexport interface Glyph {\n id: number;\n char: string,\n x: number;\n y: number;\n width: number;\n height: number,\n xoffset: number,\n yoffset: number,\n xadvance: number,\n page: number,\n chnl: number,\n}\n\nexport interface BMFontInfo {\n pages: string[];\n chars: Glyph[];\n info: {\n face: string;\n size: number;\n bold: number;\n italic: number;\n charset: string[];\n unicode: number;\n stretchH: number;\n smooth: number;\n aa: number;\n padding: number[];\n spacing: number[];\n outline: number;\n }\n common: {\n lineHeight: number;\n base: number;\n scaleW: number;\n scaleH: number;\n pages: number;\n packed: number;\n }\n distanceField: {\n fieldType: string;\n distanceRange: number;\n }\n kernings: {\n first: number;\n second: number;\n amount: number;\n }[]\n}\n\nfunction findChar(array: Glyph[], value: number, start?: number) {\n start = start || 0\n for (let i = start; i < array.length; i++) {\n if (array[i].id === value) {\n return i\n }\n }\n return -1\n}\n\nfunction getGlyphById(font: BMFontInfo, id: number) {\n if (!font.chars || font.chars.length === 0)\n return null\n\n let glyphIdx = findChar(font.chars, id)\n if (glyphIdx >= 0)\n return font.chars[glyphIdx]\n return null\n}\n\nfunction getXHeight(font: BMFontInfo) {\n for (let i = 0; i < X_HEIGHTS.length; i++) {\n let id = X_HEIGHTS[i].charCodeAt(0)\n let idx = findChar(font.chars, id)\n if (idx >= 0)\n return font.chars[idx].height\n }\n return 0\n}\n\nfunction getMGlyph(font: BMFontInfo) {\n for (let i = 0; i < M_WIDTHS.length; i++) {\n let id = M_WIDTHS[i].charCodeAt(0)\n let idx = findChar(font.chars, id)\n if (idx >= 0)\n return font.chars[idx]\n }\n return 0\n}\n\nfunction getCapHeight(font: BMFontInfo) {\n for (let i = 0; i < CAP_HEIGHTS.length; i++) {\n let id = CAP_HEIGHTS[i].charCodeAt(0)\n let idx = findChar(font.chars, id)\n if (idx >= 0)\n return font.chars[idx].height\n }\n return 0\n}\n\nfunction getKerning(font: BMFontInfo, left: number, right: number) {\n if (!font.kernings || font.kernings.length === 0)\n return 0\n\n let table = font.kernings\n for (let i = 0; i < table.length; i++) {\n let kern = table[i]\n if (kern.first === left && kern.second === right)\n return kern.amount\n }\n return 0\n}\n\nfunction getAlignType(align: string) {\n if (align === 'center')\n return ALIGN_CENTER\n else if (align === 'right')\n return ALIGN_RIGHT\n return ALIGN_LEFT\n}\n\nexport interface LayoutSetting {\n tabSize?: number;\n width?: number;\n anchor?: number[];\n letterSpacing?: number;\n lineHeight?: number;\n mode?: \"nowrap\" | \"pre\" | \"greedy\";\n align?: \"center\" | \"right\" | \"left\";\n flipY?: boolean;\n}\n\nexport interface LayoutGlyph {\n position: number[];\n data: Glyph;\n index: number;\n line: number;\n}\n\nexport class BMFontTextLayout {\n\n private _width: number = 0;\n private _height: number = 0;\n private _descender: number = 0;\n private _ascender: number = 0;\n private _xHeight: number = 0;\n private _baseline: number = 0;\n private _capHeight: number = 0;\n private _lineHeight: number = 0;\n private _linesTotal: number = 0;\n private _glyphs: LayoutGlyph[] = [];\n private _fallbackSpaceGlyph: Glyph = null;\n private _fallbackTabGlyph: Glyph = null;\n private _font: BMFontInfo = null;\n\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get descender() {\n return this._descender;\n }\n get ascender() {\n return this._ascender;\n }\n get xHeight() {\n return this._xHeight;\n }\n get baseline() {\n return this._baseline;\n }\n get capHeight() {\n return this._capHeight;\n }\n get lineHeight() {\n return this._lineHeight;\n }\n get glyphs() {\n return this._glyphs;\n }\n get linesTotal() {\n return this._linesTotal;\n }\n\n update(font: BMFontInfo, text: string, setting: LayoutSetting) {\n setting = Object.assign({\n tabSize: 4,\n width: 0,\n letterSpacing: 0,\n mode: \"nowrap\",\n align: \"left\",\n }, setting);\n\n this._font = font;\n const measure = this._computeMetrics.bind(this);\n const lines = wordwrap(text, { measure, ...setting });\n const minWidth = setting.width || 0;\n const glyphs = this._glyphs;\n\n const maxLineWidth = lines.reduce((prev, line) => Math.max(prev, line.width, minWidth), 0);\n\n //the pen position\n const lineHeight = setting.lineHeight ?? font.common.lineHeight;\n const baseline = font.common.base;\n const descender = lineHeight - baseline;\n const letterSpacing = setting.letterSpacing || 0;\n const height = lineHeight * lines.length - descender;\n const align = getAlignType(setting.align);\n const anchor = setting.anchor ?? [0.5, 0.5];\n\n this._setupSpaceGlyphs(font, setting);\n\n //the metrics for this text layout\n this._width = maxLineWidth\n this._height = height\n this._descender = descender;\n this._baseline = baseline\n this._xHeight = getXHeight(font)\n this._capHeight = getCapHeight(font)\n this._lineHeight = lineHeight\n this._ascender = baseline - this._xHeight; //lineHeight - descender - this._xHeight\n\n const anchorOffset = [-maxLineWidth * anchor[0], 2 * lineHeight * anchor[1] - baseline]\n\n let x = 0, y = 0;\n\n //draw text along baseline\n y -= height;\n\n glyphs.length = 0;\n\n for (let k = 0; k < lines.length; k++) {\n const line = lines[k];\n let start = line.start\n let end = line.end\n let lineWidth = line.width\n let lastGlyph\n\n //for each glyph in that line...\n for (let i = start; i < end; i++) {\n let id = text.charCodeAt(i)\n let glyph = this._getGlyph(font, id)\n if (glyph) {\n if (lastGlyph)\n x += getKerning(font, lastGlyph.id, glyph.id)\n\n let tx = x\n if (align === ALIGN_CENTER)\n tx += (maxLineWidth - lineWidth) / 2\n else if (align === ALIGN_RIGHT)\n tx += (maxLineWidth - lineWidth)\n\n glyphs.push({\n position: [tx + anchorOffset[0], y + anchorOffset[1]],\n data: glyph,\n index: i,\n line: k,\n })\n\n //move pen forward\n x += glyph.xadvance + letterSpacing\n lastGlyph = glyph\n }\n }\n\n //next line down\n y += lineHeight\n x = 0\n }\n\n this._linesTotal = lines.length;\n }\n\n private _setupSpaceGlyphs(font: BMFontInfo, setting: LayoutSetting) {\n //These are fallbacks, when the font doesn't include\n //' ' or '\\t' glyphs\n if (!font.chars || font.chars.length === 0)\n return\n\n //try to get space glyph\n //then fall back to the 'm' or 'w' glyphs\n //then fall back to the first glyph available\n const space = Object.assign({}, getGlyphById(font, SPACE_ID)\n || getMGlyph(font)\n || font.chars[0]);\n\n //and create a fallback for tab\n const tabWidth = setting.tabSize * space.xadvance\n this._fallbackSpaceGlyph = space\n this._fallbackTabGlyph = Object.assign(space, {\n x: 0, y: 0, xadvance: tabWidth, id: TAB_ID,\n xoffset: 0, yoffset: 0, width: 0, height: 0\n })\n }\n\n private _getGlyph(font: BMFontInfo, id: number) {\n let glyph = getGlyphById(font, id)\n if (glyph)\n return glyph\n else if (id === TAB_ID)\n return this._fallbackTabGlyph\n else if (id === SPACE_ID)\n return this._fallbackSpaceGlyph\n return null\n }\n\n private _computeMetrics(\n text: string,\n start: number,\n end: number,\n width: number,\n letterSpacing: number = 0\n ) {\n let font = this._font\n let curPen = 0\n let curWidth = 0\n let count = 0\n let lastGlyph\n\n if (!font.chars || font.chars.length === 0) {\n return {\n start: start,\n end: start,\n width: 0\n }\n }\n\n end = Math.min(text.length, end)\n for (let i = start; i < end; i++) {\n let id = text.charCodeAt(i)\n let glyph = this._getGlyph(font, id)\n\n if (glyph) {\n //move pen forward\n let xoff = glyph.xoffset\n let kern = lastGlyph ? getKerning(font, lastGlyph.id, glyph.id) : 0\n curPen += kern\n\n let nextPen = curPen + glyph.xadvance + letterSpacing\n let nextWidth = curPen + glyph.width\n\n //we've hit our limit; we can't move onto the next glyph\n if (nextWidth >= width || nextPen >= width)\n break\n\n //otherwise continue along our line\n curPen = nextPen\n curWidth = nextWidth\n lastGlyph = glyph\n }\n count++\n }\n\n //make sure rightmost edge lines up with rendered glyphs\n if (lastGlyph)\n curWidth += lastGlyph.xoffset\n\n return {\n start: start,\n end: start + count,\n width: curWidth\n }\n }\n}","const itemSize = 2\nconst box = { min: [0, 0], max: [0, 0] }\n\nfunction bounds(positions) {\n const count = positions.length / itemSize\n box.min[0] = positions[0]\n box.min[1] = positions[1]\n box.max[0] = positions[0]\n box.max[1] = positions[1]\n\n for (let i = 0; i < count; i++) {\n const x = positions[i * itemSize + 0]\n const y = positions[i * itemSize + 1]\n box.min[0] = Math.min(x, box.min[0])\n box.min[1] = Math.min(y, box.min[1])\n box.max[0] = Math.max(x, box.max[0])\n box.max[1] = Math.max(y, box.max[1])\n }\n}\n\nexport function computeBox(positions, output) {\n bounds(positions)\n output.min.set(box.min[0], box.min[1], 0)\n output.max.set(box.max[0], box.max[1], 0)\n}\n\nexport function computeSphere(positions, output) {\n bounds(positions)\n const minX = box.min[0]\n const minY = box.min[1]\n const maxX = box.max[0]\n const maxY = box.max[1]\n const width = maxX - minX\n const height = maxY - minY\n const length = Math.sqrt(width * width + height * height)\n output.center.set(minX + width / 2, minY + height / 2, 0)\n output.radius = length / 2\n}\n","\nimport { Box3, BufferAttribute, BufferGeometry, Sphere } from \"three\";\nimport { BMFontAtlas } from \"./BMFontAtlas\";\nimport { LayoutSetting, BMFontTextLayout } from \"./BMFontTextLayout\";\nimport { computeBox, computeSphere } from \"./utils\";\n\nexport class BMFontTextGeometry extends BufferGeometry {\n layout: BMFontTextLayout = new BMFontTextLayout();\n\n update(fontAtlas: BMFontAtlas, text: string, setting: LayoutSetting) {\n this.layout.update(fontAtlas.info, text, setting);\n const { indice, position, uv } = fontAtlas.build(this.layout, setting);\n this.setIndex(new BufferAttribute(indice, 1));\n this.setAttribute(\"position\", new BufferAttribute(position, 2));\n this.setAttribute(\"uv\", new BufferAttribute(uv, 2));\n }\n\n computeBoundingSphere() {\n if (this.boundingSphere === null) {\n this.boundingSphere = new Sphere()\n }\n\n const positions = this.attributes.position.array;\n const itemSize = this.attributes.position.itemSize\n if (!positions || !itemSize || positions.length < 2) {\n this.boundingSphere.radius = 0\n this.boundingSphere.center.set(0, 0, 0)\n return\n }\n computeSphere(positions, this.boundingSphere)\n if (isNaN(this.boundingSphere.radius)) {\n console.error('THREE.BufferGeometry.computeBoundingSphere(): ' +\n 'Computed radius is NaN. The ' +\n '\"position\" attribute is likely to have NaN values.')\n }\n }\n\n computeBoundingBox() {\n if (this.boundingBox === null) {\n this.boundingBox = new Box3()\n }\n\n const bbox = this.boundingBox\n const positions = this.attributes.position[\"array\"];\n const itemSize = this.attributes.position.itemSize\n if (!positions || !itemSize || positions.length < 2) {\n bbox.makeEmpty()\n return\n }\n computeBox(positions, bbox)\n }\n\n}","import { Material, Mesh } from \"three\";\nimport { BMFontAtlas } from \"../bmfont/BMFontAtlas\";\nimport { BMFontTextGeometry } from \"../bmfont/BMFontTextGeometry\";\nimport { LayoutSetting } from \"../bmfont/BMFontTextLayout\";\nimport { Component } from \"../Component\";\n\nexport interface LabelSetting extends LayoutSetting {\n text?: string;\n material?: Material;\n font: BMFontAtlas;\n}\n\nexport class Label extends Component<Mesh<BMFontTextGeometry>> {\n needsUpdate: boolean = false;\n\n private _text: string = \"\";\n private _font: BMFontAtlas = null;\n private _setting: LayoutSetting = null;\n\n get text() {\n return this._text;\n }\n set text(v: string) {\n if (this._text !== v) {\n this._text = v;\n this.needsUpdate = true;\n }\n }\n\n get font() {\n return this._font;\n }\n set font(v: BMFontAtlas) {\n if (this._font !== v) {\n this._font = v;\n this.needsUpdate = true;\n }\n }\n\n get setting() {\n return this._setting;\n }\n set setting(v: LayoutSetting) {\n if (JSON.stringify(this._setting) !== JSON.stringify(v)) {\n this._setting = v;\n this.needsUpdate = true;\n }\n }\n\n get layout() {\n return this.node.geometry.layout;\n }\n\n constructor({ text = \"\", font, material, ...setting }: LabelSetting) {\n super();\n this.text = text;\n this.font = font;\n this.setting = setting;\n this.node = new Mesh(new BMFontTextGeometry(), material || font.material);\n this.node.geometry.update(this.font, this.text, this.setting);\n }\n\n forceUpdate() {\n this.node.geometry.update(this.font, this.text, this.setting);\n }\n\n update(dt: number): void {\n if (this.needsUpdate) {\n this.needsUpdate = false;\n this.forceUpdate();\n }\n }\n}\n\n","import { Color, NormalBlending, ShaderMaterial, ShaderMaterialParameters, Texture, Vector2 } from \"three\";\nimport { BMFontInfo, BMFontTextLayout, LayoutSetting, } from \"./BMFontTextLayout\";\n\n\nconst vert_MSDF = `\nvarying vec2 v_uv;\n\nvoid main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n v_uv = uv;\n}\n`\n\nconst frag_MSDF = `\nuniform sampler2D u_fontTexture;\nvarying vec2 v_uv;\n\nuniform vec3 u_color;\nuniform float u_opacity;\nuniform vec3 u_strokeColor;\nuniform float u_strokeWidth;\nuniform vec3 u_shadowColor;\nuniform float u_shadowBlur;\nuniform vec2 u_shadowOffset;\nuniform float u_weight;\n\nfloat median(in float r, in float g, in float b) {\n return max(min(r, g), min(max(r, g), b));\n}\n\nfloat signedDistance(in vec2 uv) {\n vec4 texel = texture2D(u_fontTexture, uv);\n return median(texel.r, texel.g, texel.b) - 0.5;\n}\n\nvoid main() {\n vec4 color = vec4(u_color, 1.);\n float d = signedDistance(v_uv) + u_weight;\n float w = fwidth(d);\n\n vec4 stroke = vec4(u_strokeColor, smoothstep(-w, w, d));\n color.a *= smoothstep(-w, w, d - u_strokeWidth);\n color = mix(stroke, color, color.a);\n\n float sd = signedDistance(v_uv + u_shadowOffset) + u_weight;\n vec4 shadow = vec4(u_shadowColor, smoothstep(-w - u_shadowBlur, w + u_shadowBlur, sd));\n color = mix(shadow, color, color.a);\n\n color.a *= u_opacity;\n gl_FragColor = color;\n\n #include <tonemapping_fragment>\n\t#include <colorspace_fragment>\n}\n`\n\nexport class BMFontAtlas {\n info: BMFontInfo;\n material: ShaderMaterial;\n\n uniforms = {\n u_color: { value: new Color(0xffffff) },\n u_opacity: { value: 1 },\n u_weight: { value: 0.2 },\n u_strokeColor: { value: new Color(0xffffff) },\n u_strokeWidth: { value: 0 },\n u_shadowColor: { value: new Color(0xffffff) },\n u_shadowBlur: { value: 0 },\n u_shadowOffset: { value: new Vector2() },\n u_fontTexture: { value: null },\n }\n\n constructor({\n info,\n texture,\n uniforms,\n ...props\n }: {\n info: BMFontInfo;\n texture: Texture;\n } & ShaderMaterialParameters) {\n this.info = info;\n this.uniforms.u_fontTexture.value = texture;\n this.material = new ShaderMaterial(Object.assign({\n vertexShader: vert_MSDF,\n fragmentShader: frag_MSDF,\n transparent: true,\n depthWrite: false,\n blending: NormalBlending,\n uniforms: {\n ...this.uniforms,\n ...uniforms,\n }\n }, props))\n }\n\n build(layout: BMFontTextLayout, setting: LayoutSetting) {\n const info = this.info;\n const texWidth = info.common.scaleW;\n const texHeight = info.common.scaleH;\n const glyphs = layout.glyphs.filter(glyph => glyph.data.width * glyph.data.height > 0);\n\n const flipY = setting.flipY !== false;\n const position = new Float32Array(glyphs.length * 8);\n const uv = new Float32Array(glyphs.length * 8);\n const indice = new Uint16Array(glyphs.length * 6);\n\n for (let k = 0, i0 = 0, i1 = 0, i2 = 0, i = 0; i < glyphs.length; i++, k += 4) {\n const glyph = glyphs[i];\n const bitmap = glyph.data;\n\n // bottom left position\n let x = glyph.position[0] + bitmap.xoffset\n let y = glyph.position[1] + bitmap.yoffset\n\n // quad size\n let w = bitmap.width\n let h = bitmap.height\n\n // BL\n position[i0++] = x\n position[i0++] = y\n // BR\n position[i0++] = x + w\n position[i0++] = y\n // TR\n position[i0++] = x + w\n position[i0++] = y + h\n // TL\n position[i0++] = x\n position[i0++] = y + h\n\n let bw = (bitmap.x + bitmap.width)\n let bh = (bitmap.y + bitmap.height)\n\n // top left position\n let u0 = bitmap.x / texWidth\n let v0 = bitmap.y / texHeight\n let u1 = bw / texWidth\n let v1 = bh / texHeight\n\n if (flipY) {\n v0 = 1 - v0;\n v1 = 1 - v1;\n }\n\n // BL\n uv[i1++] = u0\n uv[i1++] = v0\n // BR\n uv[i1++] = u1\n uv[i1++] = v0\n // TR\n uv[i1++] = u1\n uv[i1++] = v1\n // TL\n uv[i1++] = u0\n uv[i1++] = v1\n\n indice[i2++] = k + 0;\n indice[i2++] = k + 1;\n indice[i2++] = k + 2;\n indice[i2++] = k + 0;\n indice[i2++] = k + 2;\n indice[i2++] = k + 3;\n }\n\n\n return { position, uv, indice };\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","meshes","textures","materials","queue","object","shift","isMesh","mat","material","Array","isArray","uuid","children","values","_texKeys","k","tex","assign","userData","viewer","EXRLoader","load","url","path","resourcePath","manager","texSettings","onLoad","onProgress","onError","loader","_loader","EXRLoaderPrimitive","setPath","setResourcePath","extension","FBXLoader","buffer","FBXLoaderPrimitive","parse","GLTFLoader","dracoPath","dracoLoader","_dracoLoader","DRACOLoader","setDecoderPath","GLTFLoaderPrimitive","setDRACOLoader","setMeshoptDecoder","MeshoptDecoder","cb","gltf","Map","scene","traverse","mesh","set","arr","m","HDRLoader","HDRLoaderPrimitive","loadCallback","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","SVGLoader","SVGLoaderPrimitive","Primitive","KTX2Loader","transcoderPath","KTX2LoaderPrimitive","setTranscoderPath","detectSupport","renderer","CubeUVReflectionMapping","Box","Mesh","BoxGeometry","Sphere","SphereGeometry","Plane","PlaneGeometry","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","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","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","order","Reflector","texture","_renderTarget","textureMatrix","_textureMatrix","dispose","resolution","clipBias","multisample","layerMask","normal","mipmap","Object3D","Matrix4","reflectorPlane","reflectorNormal","reflectorWorldPosition","cameraWorldPosition","rotationMatrix","lookAtPosition","clipPlane","Vector4","view","q","virtualCamera","PerspectiveCamera","WebGLRenderTarget","HalfFloatType","minFilter","LinearMipMapLinearFilter","LinearFilter","generateMipmaps","lastUpdate","camera","setFromMatrixPosition","matrixWorld","extractRotation","matrix","applyMatrix4","subVectors","dot","reflect","negate","layers","mask","position","up","lookAt","far","updateMatrixWorld","projectionMatrix","multiply","matrixWorldInverse","setFromNormalAndCoplanarPoint","constant","sign","elements","visible","currentRenderTarget","getRenderTarget","currentActiveCubeFace","getActiveCubeFace","currentActiveMipmapLevel","getActiveMipmapLevel","currentXrEnabled","xr","currentShadowAutoUpdate","shadowMap","autoUpdate","clearAlpha","getClearAlpha","setClearAlpha","setRenderTarget","buffers","depth","setMask","autoClear","render","viewport","Animation","mixer","_mixer","action","_action","actions","_actions","progress","_progress","playing","duration","getClip","setTime","AnimationMixer","animations","map","clipAction","stopAllAction","update","dt","time","play","animName","find","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","setLoop","repetitions","setDuration","stop","PropertyManager","_hasProperties","_propertyMap","_classMap","_getProperties","initProps","props","_getMergedProperties","merged","mergeProps","_getClassProperties","getPrototypeOf","clsName","property","propertyKey","options","normalized","applyProps","prop","des","writable","value","child","parts","split","part","getChildren","filter","group","objects","getChildByName","__emtpyObject","queryValues","ContactShadows","scale","frames","width","height","intensity","blur","near","smooth","color","Color","renderOrder","planeGeometry","shadowCamera","OrthographicCamera","renderTarget","renderTargetBlur","depthMaterial","MeshDepthMaterial","depthTest","depthWrite","onBeforeCompile","shader","uniforms","fragmentShader","replace","horizontalBlurMaterial","ShaderMaterial","HorizontalBlurShader","verticalBlurMaterial","VerticalBlurShader","blurPlane","Group","rotation","Euler","blurShadows","gl","tDiffuse","count","initialBackground","initialOverrideMaterial","initialClearAlpha","background","overrideMaterial","getVersion","parseInt","REVISION","DiscardMaterial","vertexShader","shaderMaterial","THREE","parameters","key","Uniform","UniformsUtils","clone","setValues","AccumulativeShadows","temporal","limit","blend","opacity","alphaTest","colorBlend","toneMapped","randomLights","plm","ProgressiveLightMap","gPlane","parent","receiveShadow","SoftShadowMaterial","transparent","progressiveLightMap2","configure","gLights","light","prepare","finish","reset","start","RandomizedLight","castShadow","bias","mapSize","size","radius","ambient","DirectionalLight","shadow","random","randFloatSpread","lambda","phi","cos","isLight","isGeometry","geometry","getClearColor","clearColor","setClearColor","progressiveLightMap1","lights","discardMat","blendWindow","averagingWindow","targetMat","activeMap","buffer1Active","inactiveMap","oldBg","previousShadowMap","res","textureParams","magFilter","NearestFilter","MeshLambertMaterial","fog","bodyStart","indexOf","Center","disableX","disableY","disableZ","left","right","top","bottom","front","back","onCentered","precise","cacheKey","inner","outer","identity","box3","Box3","setFromObject","center","sphere","getCenter","getBoundingSphere","vAlign","hAlign","dAlign","boundingBox","boundingSphere","verticalAlignment","horizontalAlignment","depthAlignment","Caller","pause","_pause","_target","_callback","lived","_repeat","_repeatForever","_elapsed","_interval","trigger","_lastTime","call","Callers","callers","_callers","Scheduler","resume","_callersArray","callersArray","j","Invoker","_targets","sort","remove","invoke","InvokerOneCall","ComponentScheduler","tick","tickInvoker","startInvoker","updateInvoker","lastUpdateInvoker","renderInvoker","resize","resizeInvoker","comp","onEnableCalled","onEnable","onDisable","DependentMode","dependencies","componentOrComponents","components","ComponentManager","_infoMap","single","_viewer","_scheduler","_componentScheduler","_componentsMap","destroyComponents","delete","activeComponents","_activeComponent","addComponent","root","func","proto","_findComponent","component","_addDendencies","getComponent","getComponentInChildren","getComponentsInChidren","traverseComponents","dep","active","Renderer","setSize","RenderTexture","_fbo","_scene","_camera","RT","PressState","NONE","SELECTED","IN","Pressability","connect","connector","_connectors","disconnect","pointerDown","pointer","_raycaster","setFromCamera","conn","intersects","intersectObject","pointerUp","pointerMove","Raycaster","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","normalizeWheel","event","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","DeviceInput","_pointer","pointerPixel","_pointerPixel","_pointerDown","pointerButton","_pointerButton","pointerMoving","_pointerMoving","prePointer","_prePointer","prePointerPixel","_prePointerPixel","preTouches","_preTouches","mouseWheel","_mouseWheel","touchStart","_touchStart","touchMoving","_touchMoving","touchCount","_touchCount","touches","_touches","keys","_keys","pressability","_pressability","dom","_addEventListener","e","preventDefault","_onPointerDown","passive","_onPointerUp","_onPointerMove","_onMouseWheel","_onTouchStart","_onTouchEnd","_onTouchMove","window","_onKeyDown","_onKeyPress","_onKeyUp","_onResize","removeEventListener","id","CLICK","POINTER_DOWN","POINTER_UP","POINTER_OVER","POINTER_OUT","addEventListener","rotate","remapPointer","isDocument","Document","innerWidth","offsetWidth","rootRotated","button","buttons","clientX","clientY","offsetX","offsetY","pageX","pageY","screenX","screenY","movementX","movementY","remapTouch","from","identifier","_computePointer","innerHeight","offsetHeight","ex","POINTER_MOVE","_normalizeWheel","MOUSE_WHEEL","curr","touch","TOUCH_START","TOUCH_END","TOUCH_MOVE","KEYDOWN","KEYPRESS","KEYUP","option","source","isSSR","DetectUA","match","pattern","userAgent","isMobile","isTablet","test","iOSDevice","isAndroidDevice","isDesktop","isMacOS","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","degToRad","tan","PI2","ESP","FreelookVirtualCamera","_up","_targetUp","_lookAt","_targetLookAt","offset","_offset","_targetOffset","_spherical","_targetRadius","radiusMin","radiusMax","theta","_targetTheta","thetaMin","thetaMax","_targetPhi","phiMin","phiMax","fov","_fov","_targetFov","_near","_targetNear","_far","_targetFar","_button","_touchID","goto","smoothing","rotateSmoothing","t0","t1","euclideanModulo","_tempSmoothing","_tempRotateSmoothing","_lerpCamera","sync","_syncCamera","_preLoc0","_","loc0","_onDragging","_setTargetSpringLength","_calculateDistanceScale","_preLoc1","loc1","_onMultiTouch","_onSingleTouch","forbitAll","forbidZ","_onDistanceScale","_calculateRotate","rotateSpeed","forbidX","forbidY","_calculatePanDelta","_onCalculatePan","forbidPanX","forbidPanY","_calculateLookAtOffset","panDelta","xAxis","yAxis","posDelta","setFromMatrixColumn","forbitPanOffsetY","normalize","_setTargetLookAt","lookAtOffset","_setTargetRotation","rotateDelta","_setTargetPosition","panOffset","_targetPosition","Spherical","_finalLookAt","panSpeed","isCamera","preLoc0","preLoc1","distanceTo","preCenter","setFromSpherical","quaternion","updateProjectionMatrix","zoom","preLoc","quat","Quaternion","dir","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","roughnessScaleBias","normalScaleBias","aoMapIntensity","lightMapIntensity","reflectMap","reflectIntensity","reflector","UV_AO","UV_LIGHTMAP","UV_ROUGHNESS","UV_NORMAL","dfgLUT","vert_Shadow","frag_Shadow","ShadowMaterial","shadows","shadowsMap","shadowsMatrix","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","TaskManager","isComplete","_taskIndex","_tasks","task","excute","_onStartCalled","onStart","onComplete","checkWebGL","canvas","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","ResizeMode","ResourceManager","str","pop","dirname","lastIndexOf","substring","basename","ext","_splitTextureSettings","settings","_texSettingKeys","_loaded","_totalCount","_loaders","getLoader","addLoader","loadAsset","Promise","resolve","reject","sel","asset","_resources","getAsset","Task","vert_Fullscreen","frag_Copy","frag_Clear","vert_Blur9Varying","frag_Blur9Varying","frag_Blur9","EMPTY","Viewer","_root","_time","_canvas","_gl","_RENDER_TARGET_FLOAT_TYPE","_DATA_FLOAT_TYPE","dpr","_dpr","_width","_height","_viewport","_rootRotated","input","_input","targetFrameRate","_targetFrameRate","_instanceId","componentManager","_componentManager","_renderer","_freeze","_taskManager","_resourceManager","animate","loop","_active","frame","_lastFrameTime","_fixedFrameTime","setAnimationLoop","_orientation","LANDSCAPE","PORTRAIT","tmp","style","transform","transformOrigin","margin","_windowSize","manual","aspect","factor","distance","getWorldPosition","worldPos","setURLModifier","_loadingManager","_decodeURL","_resourceOptions","_mount","compile","use","ins","isScene","_context","mount","isObject3D","children_","removeFromParent","createRenderTarget","nearest","floatType","msaa","wrapS","ClampToEdgeWrapping","wrapT","anisotropy","LinearSRGBColorSpace","depthBuffer","stencilBuffer","createCubeRenderTarget","WebGLCubeRenderTarget","createDataTexture","DataTexture","RGBAFormat","UVMapping","blit","face","Blit","src","dest","Copy","ClearColor","stash","Stash","blurLevel","shadingScale","inputBuffer","tempBuffer","outputBuffer","fixedOutput","Blur","Render","isMaterial","CompileMaterial","CompileObject3D","isTexture","CompileTexture","fullscreenMesh","initTexture","ceil","c","capabilities","maxVaryings","blur9VaryingMaterial","blur9Material","u_texture","u_delta","fullscreenCamera","copyMaterial","CreateFullscreenTriangle","BufferGeometry","setAttribute","Float32BufferAttribute","sortObjects","AUTO","orthographic","fixedFrameTime","toneMapping","LinearToneMapping","toneMappingExposure","maxDPR","orientation","decodeURL","tasker","instanceCount","el","document","getElementById","webgl","Scene","WebGLRenderer","context","setPixelRatio","autoReset","outputColorSpace","PCFSoftShadowMap","LoadingManager","clearMaterial","u_color","MergeRefectPass","_envMapTarget","_sourceTarget","_pmremGenerator","mergeReflect","_copyTexture","envMapIntensity","_mergeReflect","_reflectMap","quality","envMapTarget","_lodMeshes","_getPMREMExtension","pmremGenerator","PMREMGenerator","_fromTextureExtension","_fromTexture","_fromCubeTexture","_cubeMapMaterial","_copyTexMaterial","_copyMesh","_setSize","image","_allocateTargets","targetOut","scissorTest","_clearTexture","sourceTarget","cubeMapMaterial","_blit","_pmremblur","lodIn","lodOut","sigma","_sigmas","poleAxis","_blur","_lodMax","outputSize","_sizeLods","_cubeSize","lodMesh","mipGaussianBlendWeight","sigma2","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","Mode","defaultExtension","DropFile","_onDrogOver","_onDrop","_loadItemList","items","getFilesFromItemList","files","filesMap","dirs","_loadFiles","createFilesMap","URL","createObjectURL","_loadFile","filename","reader","FileReader","total","loaded","_onLoad","errCallback","_onError","then","catch","_extension","result","readAsDataURL","raw","readAsArrayBuffer","dataTransfer","dropEffect","types","onDone","itemsCount","itemsTotal","onEntryHandled","handleEntry","entry","isDirectory","createReader","readEntries","isFile","fullPath","item","kind","webkitGetAsEntry","newline","newlineChar","whitespace","wordwrap","text","opt","MAX_VALUE","end","letterSpacing","measure","monospace","pre","greedy","idxOf","chr","idx","isWhitespace","lines","lineStart","charAt","isNewline","lineEnd","measured","testWidth","newLine","nextStart","glyphs","X_HEIGHTS","M_WIDTHS","CAP_HEIGHTS","TAB_ID","charCodeAt","SPACE_ID","ALIGN_LEFT","ALIGN_CENTER","ALIGN_RIGHT","findChar","getGlyphById","font","chars","glyphIdx","getXHeight","getMGlyph","getCapHeight","getKerning","kernings","table","kern","first","second","getAlignType","align","BMFontTextLayout","descender","_descender","ascender","_ascender","xHeight","_xHeight","baseline","_baseline","capHeight","_capHeight","lineHeight","_lineHeight","_glyphs","linesTotal","_linesTotal","setting","tabSize","_font","_computeMetrics","minWidth","maxLineWidth","prev","line","common","base","anchor","_setupSpaceGlyphs","anchorOffset","lineWidth","lastGlyph","glyph","_getGlyph","tx","xadvance","space","tabWidth","_fallbackSpaceGlyph","_fallbackTabGlyph","xoffset","yoffset","curPen","curWidth","nextPen","nextWidth","itemSize","box","positions","computeBox","output","computeSphere","minX","minY","maxX","maxY","BMFontTextGeometry","fontAtlas","layout","indice","uv","build","setIndex","BufferAttribute","computeBoundingSphere","attributes","isNaN","computeBoundingBox","bbox","makeEmpty","Label","_text","_setting","stringify","forceUpdate","vert_MSDF","frag_MSDF","BMFontAtlas","texWidth","scaleW","texHeight","scaleH","flipY","Uint16Array","i0","i1","i2","bitmap","bw","bh","u0","u1","u_opacity","u_weight","u_strokeColor","u_strokeWidth","u_shadowColor","u_shadowBlur","u_shadowOffset","u_fontTexture","NormalBlending"],"mappings":"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","x_google_ignoreList":[27]}
1
+ {"version":3,"file":"main.cjs","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/SVGLoader.ts","../src/loaders/KTX2Loader.ts","../src/primitive/Box.ts","../src/primitive/Sphere.ts","../src/primitive/Plane.ts","../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/ObjectInstance.ts","../src/Component.ts","../src/components/Reflector.ts","../src/components/Animation.ts","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/PropertyManager.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/Scheduler.ts","../src/ComponentScheduler.ts","../src/ComponentManager.ts","../src/components/Renderer.ts","../src/components/RenderTexture.ts","../src/Pressability.ts","../src/DeviceInput.ts","../src/DetectUA.ts","../src/SystemInfo.ts","../src/components/FreelookVirtualCamera.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/passes/cubeuv/utils.ts","../src/Task.ts","../src/TaskManager.ts","../src/enums/index.ts","../src/asset/ResourceManager.ts","../src/loaders/STLLoader.ts","../src/Viewer.ts","../src/passes/cubeuv/MergeReflectPass.ts","../src/passes/mipGaussianBlendWeight.ts","../src/passes/cubeuv/MergeBlurPass.ts","../src/components/Environment.ts","../src/components/BoxProjection.ts","../src/components/PerformanceMonitor.ts","../src/components/DropFile.ts","../src/bmfont/wordwrap.ts","../src/bmfont/BMFontTextLayout.ts","../src/bmfont/utils.ts","../src/bmfont/BMFontTextGeometry.ts","../src/components/Label.ts","../src/bmfont/BMFontAtlas.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 { Object3D } from \"three\";\nimport { TextureSettings } from \"../TextureSettings\";\nimport { type ResourceManager } from \"./ResourceManager\";\n\nexport interface LoadProperties {\n url: string,\n buffer?: string | ArrayBuffer,\n texSettings?: TextureSettings,\n path?: string;\n resourcePath?: string;\n onLoad: (asset: any) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (event: ErrorEvent) => void,\n}\n\nexport abstract class Loader {\n\n constructor(\n public manager: ResourceManager\n ) { }\n\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 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 loader.manager = this.manager.loadingManager;\n }\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 onLoad,\n onProgress,\n onError\n }: LoadProperties) {\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new FBXLoaderPrimitive();\n loader.manager = this.manager.loadingManager;\n }\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n\n if (buffer) {\n onLoad(loader.parse(buffer, resourcePath));\n }\n else {\n loader.load(url, onLoad, 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 { MeshoptDecoder } from \"three/examples/jsm/libs/meshopt_decoder.module.js\";\nimport { BufferGeometry, Material, Mesh } from \"three\";\n\nexport interface GLTFAsset<\n M extends Material | Material[] = Material,\n V extends Mesh<BufferGeometry, M> = Mesh<BufferGeometry, M>\n> extends GLTF {\n mesh: V;\n material: M;\n meshes: Map<string, V>;\n materials: Map<string, M>;\n}\n\nexport class GLTFLoader extends Loader {\n extension: string[] = [\"gltf\", \"glb\"];\n\n load({\n url,\n buffer,\n path,\n resourcePath,\n onLoad,\n onProgress,\n onError\n }: LoadProperties) {\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new GLTFLoaderPrimitive();\n loader.manager = this.manager.loadingManager;\n loader.setMeshoptDecoder(MeshoptDecoder);\n loader.setDRACOLoader(this.manager.dracoLoader);\n loader.setKTX2Loader(this.manager.ktx2Loader);\n }\n\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n\n const cb = (gltf: GLTFAsset) => {\n const meshes: Map<string, Mesh<BufferGeometry, Material>> = new Map();\n const materials: Map<string, Material> = new Map();\n\n gltf.scene.traverse((mesh: Mesh<BufferGeometry, Material>) => {\n if (mesh.isMesh) {\n gltf.mesh = mesh;\n gltf.material = mesh.material;\n meshes.set(mesh.name, mesh);\n const arr = Array.isArray(mesh.material) ? mesh.material : [mesh.material];\n arr.forEach(m => materials.set(m.name, m));\n }\n });\n\n gltf.meshes = meshes;\n gltf.materials = materials;\n\n onLoad(gltf);\n }\n\n if (buffer) {\n loader.parse(buffer, resourcePath, cb, onError);\n }\n else {\n loader.load(url, cb, onProgress, onError);\n }\n }\n\n private _loader: GLTFLoaderPrimitive;\n}","import { LoadProperties, Loader } from \"../asset/Loader\";\nimport { HDRLoader as HDRLoaderPrimitive } from \"three/examples/jsm/loaders/HDRLoader.js\";\n\nexport class HDRLoader extends Loader {\n extension: string[] = [\"hdr\"];\n\n load({\n url,\n path,\n resourcePath,\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 HDRLoaderPrimitive();\n loader.manager = this.manager.loadingManager;\n }\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: HDRLoaderPrimitive;\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 onLoad,\n onProgress,\n onError\n }: LoadProperties) {\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new FileLoader();\n loader.manager = this.manager.loadingManager;\n }\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 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 loader.manager = this.manager.loadingManager;\n }\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}","import { Loader, LoadProperties } from \"../asset/Loader\";\nimport { SVGLoader as SVGLoaderPrimitive } from \"three/examples/jsm/loaders/SVGLoader.js\";\n\nexport class SVGLoader extends Loader {\n extension: string[] = [\"svg\"];\n\n load({\n url,\n path,\n resourcePath,\n onLoad,\n onProgress,\n onError,\n }: LoadProperties): void {\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new SVGLoaderPrimitive();\n loader.manager = this.manager.loadingManager;\n }\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n loader.load(url, onLoad, onProgress, onError);\n }\n\n private _loader: SVGLoaderPrimitive;\n static Primitive = SVGLoaderPrimitive;\n}\n","import { Loader, LoadProperties } from \"../asset/Loader\";\n\nexport class KTX2Loader extends Loader {\n extension: string[] = [\"ktx2\"];\n\n load({\n url,\n path,\n resourcePath,\n texSettings,\n onLoad,\n onProgress,\n onError\n }: LoadProperties) {\n const loader = this.manager.ktx2Loader;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n loader.manager = this.manager.loadingManager;\n loader.load(url, tex => onLoad(Object.assign(tex, texSettings)), onProgress, onError);\n }\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 { 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-8;\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})","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 name: string = \"\";\n type: string = \"Component\";\n isComponent: boolean = true;\n order: number = 0;\n\n node: T;\n viewer: Viewer;\n manager: ComponentManager;\n\n onLoad?(): void;\n onEnable?(): void;\n onDisable?(): void;\n onDestroy?(): void;\n start?(): void;\n tick?(dt: number): 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 } = {};\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.remove(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}\n","import {\n Matrix4,\n PerspectiveCamera,\n Vector3,\n Vector4,\n Plane,\n WebGLRenderTarget,\n HalfFloatType,\n LinearFilter,\n LinearMipMapLinearFilter,\n Object3D\n} from \"three\";\nimport { Component } from \"../Component\";\n\nexport class Reflector extends Component {\n node: Object3D = new Object3D();\n layerMask: number = 1 << 0;\n\n private _renderTarget: WebGLRenderTarget = null;\n private _textureMatrix: Matrix4 = new Matrix4();\n\n get texture() {\n return this._renderTarget.texture;\n }\n get textureMatrix() {\n return this._textureMatrix;\n }\n\n constructor({\n resolution = 512,\n clipBias = 0,\n multisample = 4,\n layerMask = 1 << 0,\n normal = new Vector3(0, 1, 0),\n mipmap = false,\n }: {\n resolution?: number,\n clipBias?: number,\n multisample?: number,\n normal?: Vector3,\n layerMask?: number,\n mipmap?: boolean,\n } = {}) {\n super();\n this.layerMask = layerMask;\n\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 const virtualCamera = new PerspectiveCamera();\n\n this._renderTarget = new WebGLRenderTarget(resolution, resolution, {\n samples: multisample,\n type: HalfFloatType,\n minFilter: mipmap ? LinearMipMapLinearFilter : LinearFilter,\n generateMipmaps: mipmap\n });\n\n this.lastUpdate = () => {\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 rotationMatrix.extractRotation(node.matrix);\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.layers.mask = this.layerMask;\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 this.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 this.textureMatrix.multiply(virtualCamera.projectionMatrix);\n this.textureMatrix.multiply(virtualCamera.matrixWorldInverse);\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 const clearAlpha = renderer.getClearAlpha();\n renderer.setClearAlpha(0);\n renderer.setRenderTarget(this._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.setClearAlpha(clearAlpha);\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 }\n\n onDestroy(): void {\n this._renderTarget.dispose();\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}","/******************************************************************************\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, Iterator */\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 = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"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 = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\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\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\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, inner;\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 if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\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 var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\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 __rewriteRelativeImportExtension,\n};\n","\nexport class PropertyManager {\n static _classMap = new Map<String, Object>();\n static _propertyMap = new Map<Object, Object>();\n\n static _hasProperties(constructor: Function) {\n return PropertyManager._propertyMap.has(constructor) || PropertyManager._classMap.has(constructor.name);\n }\n static _getProperties(constructor: Function, initProps?: Object) {\n let props = PropertyManager._propertyMap.get(constructor);\n if (props === undefined && initProps) {\n PropertyManager._propertyMap.set(constructor, props = initProps);\n }\n return props;\n }\n static _getMergedProperties(constructor: Function) {\n let merged = null;\n const mergeProps = (props) => {\n if (props) {\n if (merged === null) {\n merged = Object.create(null);\n }\n Object.assign(merged, props);\n }\n }\n while (constructor !== Object.constructor.prototype) {\n mergeProps(PropertyManager._getProperties(constructor, false));\n mergeProps(PropertyManager._getClassProperties(constructor.name, false));\n constructor = Object.getPrototypeOf(constructor);\n }\n return merged;\n }\n static _getClassProperties(clsName: string, initProps?: Object) {\n let props = PropertyManager._classMap.get(clsName);\n if (props === undefined && initProps) {\n PropertyManager._classMap.set(clsName, props = initProps);\n }\n return props;\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 * 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}","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 private _renderTarget: WebGLRenderTarget = null;\n private _textureMatrix: Matrix4 = new Matrix4();\n\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 get texture() {\n return this._renderTarget.texture;\n }\n\n get textureMatrix() {\n return this._textureMatrix;\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 = this._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 = this._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 }\n\n onDestroy(): void {\n this._renderTarget.dispose();\n }\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 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 extends Component> {\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: T) {\n this._targets.push(target);\n target.order !== 0 && this._targets.sort((a, b) => a.order - b.order)\n }\n\n remove(target: T) {\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 Component> 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 tickInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.tick!(dt));\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 tick(dt: number) {\n this.tickInvoker.invoke(dt);\n }\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.tick === \"function\") {\n this.tickInvoker.add(comp);\n }\n if (typeof comp.start === \"function\") {\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.tick === \"function\") {\n this.tickInvoker.remove(comp);\n }\n if (typeof comp.start === \"function\") {\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\";\n\ntype ComponentConstructor = new (...args: any[]) => Component;\n\ninterface ComponentInfo {\n mode?: DependentMode;\n components?: ComponentConstructor[];\n single?: boolean;\n}\n\nexport interface ComponentManagerOptions {\n manual?: boolean;\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 function single() {\n return function <T extends ComponentConstructor>(target: T): void {\n let info = ComponentManager._infoMap.get(target);\n if (info === undefined) {\n ComponentManager._infoMap.set(target, { single: true });\n }\n else {\n info.single = true;\n }\n }\n}\n\nexport class ComponentManager {\n static _infoMap = new Map<ComponentConstructor, ComponentInfo>();\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 private _started: boolean = false;\n private _manual: boolean = false;\n\n get started() {\n return this._started;\n }\n\n get manual() {\n return this._manual;\n }\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 manual = false,\n }: ComponentManagerOptions = {}) {\n this._viewer = viewer;\n this._manual = manual;\n this._started = !manual;\n }\n\n destroy(node?: Object3D) {\n if (node) {\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.destroy(child);\n }\n }\n else {\n this._componentsMap.forEach(components => components.forEach(comp => comp.destroy()));\n this._componentsMap.clear();\n }\n }\n\n tick(dt: number) {\n this._componentScheduler.tick(dt);\n }\n\n update(dt: number) {\n if (!this._started) return;\n\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 if (!this._started) return;\n\n this._componentScheduler.render(dt);\n }\n\n resize(width: number, height: number) {\n this.componentScheduler.resize(width, height);\n }\n\n start() {\n this._started = true;\n return this;\n }\n\n pause() {\n this._started = false;\n return this;\n }\n\n resume() {\n return this.start();\n }\n\n stop() {\n return this.pause();\n }\n\n active(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.active(child);\n }\n }\n\n add<T extends Component>(node: Object3D | Component, instance: T): T;\n add<T extends Component>(node: Object3D | Component, constructor: { new(): T }): T;\n add<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\n const proto = func ? constructor : constructor.constructor;\n const info = ComponentManager._infoMap.get(proto) || {};\n\n if (!info.single || !this._findComponent(root, proto)) {\n const component = func ? new constructor() : constructor;\n component.node = root;\n component.node.name = component.name || component.constructor.name;\n component.manager = this;\n component.viewer = this.viewer;\n\n this._addDendencies(root, proto);\n\n if (!component.flags.onLoadCalled) {\n component.flags.onLoadCalled = true;\n component.onLoad && component.onLoad();\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 return component as T;\n }\n else {\n throw Error(\"Add multiple components\");\n }\n }\n\n remove(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 get<T extends Component>(node: Object3D, constructor: { new(...args: any[]): T }): T {\n return this._findComponent(node, constructor) as T;\n }\n\n getInChildren<T extends Component>(node: Object3D, constructor: { new(): T }): T {\n let comp = this._findComponent(node, constructor) as T;\n if (comp) return comp;\n\n for (let child of node.children) {\n if (comp = this.getInChildren(child, constructor)) {\n return comp;\n }\n }\n }\n\n getAllInChildren<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 }\n for (let child of node.children) {\n this.getAllInChildren(child, constructor, out);\n }\n return out;\n }\n\n traverse(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.get(node, dep)) {\n if (mode === DependentMode.AutoAdd) {\n this.add(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}\n","import { Component } from \"../Component\";\nimport { single } from \"../ComponentManager\";\n\n@single()\nexport class Renderer extends Component {\n order: number = -1;\n\n render(dt: number): void {\n const { renderer, scene, camera } = this.viewer;\n renderer.setRenderTarget(null);\n renderer.render(scene, camera);\n }\n\n resize(width: number, height: number): void {\n const { renderer } = this.viewer;\n renderer.setSize(width, height);\n }\n}","import { Camera, RenderTargetOptions, Scene, WebGLRenderTarget } from \"three\";\nimport { Component } from \"../Component\";\n\nexport class RenderTexture extends Component {\n private _scene: Scene;\n private _camera: Camera;\n private _fbo: WebGLRenderTarget;\n\n get texture() {\n return this._fbo.texture;\n }\n\n constructor(width?: number, height?: number, options?: RenderTargetOptions) {\n super();\n this.onLoad = () => {\n this._fbo = new WebGLRenderTarget(width, height, options);\n ({ scene: this._scene, camera: this._camera } = this.viewer);\n }\n this.update = () => {\n const { renderer } = this.viewer;\n\n const RT = renderer.getRenderTarget();\n const autoClear = renderer.autoClear;\n\n renderer.autoClear = true;\n renderer.setRenderTarget(this._fbo);\n renderer.render(this._scene, this._camera);\n\n renderer.autoClear = autoClear;\n renderer.setRenderTarget(RT);\n }\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 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 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 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 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 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 { Component } from \"./Component\";\n\nconst PIXEL_STEP = 10;\nconst LINE_HEIGHT = 40;\nconst PAGE_HEIGHT = 800;\n\nfunction normalizeWheel(/*object*/ event) /*object*/ {\n let sX = 0, sY = 0, // spinX, spinY\n pX = 0, pY = 0; // pixelX, pixelY\n\n // Legacy\n if ('detail' in event) { sY = event.detail; }\n if ('wheelDelta' in event) { sY = -event.wheelDelta / 120; }\n if ('wheelDeltaY' in event) { sY = -event.wheelDeltaY / 120; }\n if ('wheelDeltaX' in event) { sX = -event.wheelDeltaX / 120; }\n\n // side scrolling on FF with DOMMouseScroll\n if ('axis' in event && event.axis === event.HORIZONTAL_AXIS) {\n sX = sY;\n sY = 0;\n }\n\n pX = sX * PIXEL_STEP;\n pY = sY * PIXEL_STEP;\n\n if ('deltaY' in event) { pY = event.deltaY; }\n if ('deltaX' in event) { pX = event.deltaX; }\n\n if ((pX || pY) && event.deltaMode) {\n if (event.deltaMode == 1) { // delta in LINE units\n pX *= LINE_HEIGHT;\n pY *= LINE_HEIGHT;\n } else { // delta in PAGE units\n pX *= PAGE_HEIGHT;\n pY *= PAGE_HEIGHT;\n }\n }\n\n // Fall-back if spin cannot be determined\n if (pX && !sX) { sX = (pX < 1) ? -1 : 1; }\n if (pY && !sY) { sY = (pY < 1) ? -1 : 1; }\n\n return {\n spinX: sX,\n spinY: sY,\n pixelX: pX,\n pixelY: pY\n };\n}\n\nexport interface PointerEventLike {\n button: number;\n buttons: number;\n clientX: number;\n clientY: number;\n offsetX: number;\n offsetY: number;\n pageX: number;\n pageY: number;\n screenX: number;\n screenY: number;\n movementX: number;\n movementY: number;\n}\n\nexport interface TouchEventLike {\n touches: {\n identifier: number;\n clientX: number;\n clientY: number;\n pageX: number;\n pageY: number;\n screenX: number;\n screenY: number;\n }[];\n}\n\n\nexport interface 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 interface InputOption {\n source: HTMLElement | Document;\n normalizeWheel?: (e: WheelEvent) => { spinX: number, spinY: number; pixelX: number; pixelY: number; };\n}\n\nexport class DeviceInput extends Component {\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 _target: HTMLElement | Document;\n private _normalizeWheel: (e: WheelEvent) => { spinX: number, spinY: number; pixelX: number; pixelY: number; };\n private _listeners: { target: InputTarget, type: string, callback: any }[] = [];\n\n private _touches: { id: number, position: Vector2 }[] = [];\n private _touchCount: number = 0;\n private _touchStart: boolean = false;\n private _touchMoving: boolean = false;\n\n private _pointer: Vector2 = new Vector2();\n private _pointerPixel: Vector2 = new Vector2();\n private _pointerButton: number = -1;\n private _pointerDown: boolean = false;\n private _pointerMoving: boolean = false;\n\n private _prePointer: Vector2 = new Vector2();\n private _prePointerPixel: Vector2 = new Vector2();\n private _preTouches: { id: number, position: Vector2 }[] = [];\n\n private _mouseWheel: number = 0;\n private _keys: { [k: string]: boolean } = {};\n private _pressability: Pressability = new Pressability();\n\n get pointer() {\n return this._pointer;\n }\n\n get pointerPixel() {\n return this._pointerPixel;\n }\n\n get pointerDown() {\n return this._pointerDown;\n }\n\n get pointerButton() {\n return this._pointerButton;\n }\n\n get pointerMoving() {\n return this._pointerMoving;\n }\n\n get prePointer() {\n return this._prePointer;\n }\n\n get prePointerPixel() {\n return this._prePointerPixel;\n }\n\n get preTouches() {\n return this._preTouches;\n }\n\n get mouseWheel() {\n return this._mouseWheel;\n }\n\n get touchStart() {\n return this._touchStart;\n }\n\n get touchMoving() {\n return this._touchMoving;\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 get pressability() {\n return this._pressability;\n }\n\n constructor(option: InputOption) {\n super();\n this._target = option.source;\n this._normalizeWheel = option.normalizeWheel || normalizeWheel;\n }\n\n onEnable() {\n const dom = this._target;\n this._addEventListener(dom, 'contextmenu', e => e.preventDefault());\n this._addEventListener(dom, \"pointerdown\", e => this._onPointerDown(e), { passive: false });\n this._addEventListener(dom, \"pointerup\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(dom, \"pointercancel\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(dom, \"pointerout\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(dom, \"pointermove\", e => this._onPointerMove(e), { passive: true });\n this._addEventListener(dom, \"wheel\", e => this._onMouseWheel(e), { passive: false });\n this._addEventListener(dom, \"touchstart\", e => this._onTouchStart(e), { passive: true });\n this._addEventListener(dom, \"touchend\", e => this._onTouchEnd(e), { passive: true });\n this._addEventListener(dom, \"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 onDisable() {\n for (const { 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 lastUpdate(dt: number): void {\n this._pointerDown = false;\n this._pointerMoving = false;\n this._prePointer.copy(this._pointer);\n this._prePointerPixel.copy(this._pointerPixel);\n\n for (let i = this._touchCount; i--;) {\n this._preTouches[i].id = this._touches[i].id;\n this._preTouches[i].position.copy(this._touches[i].position);\n }\n\n this._mouseWheel = 0;\n this._touchStart = false;\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 remapPointer(e: PointerEvent): PointerEventLike {\n const target = this._target;\n const isDocument = target instanceof Document;\n const width = isDocument ? window.innerWidth : target.offsetWidth;\n\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 } : e;\n }\n\n remapTouch(e: TouchEvent): TouchEventLike {\n const target = this._target;\n const isDocument = target instanceof Document;\n const width = isDocument ? window.innerWidth : target.offsetWidth;\n\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 } : e as any;\n }\n\n private _computePointer(e: PointerEventLike) {\n const target = this._target;\n const isDocument = target instanceof Document;\n const width = isDocument ? window.innerWidth : target.offsetWidth;\n const height = isDocument ? window.innerHeight : target.offsetHeight;\n\n this._pointer.x = e.pageX / width * 2 - 1;\n this._pointer.y = 1 - e.pageY / height * 2;\n this._pointerPixel.set(e.pageX, e.pageY);\n }\n\n private _onPointerDown(e: PointerEvent) {\n const ex = this.remapPointer(e);\n this._pointerDown = true;\n this._pointerButton = ex.button;\n this._computePointer(ex);\n this._prePointer.copy(this._pointer);\n this._prePointerPixel.copy(this._pointerPixel);\n this._pressability.pointerDown(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_DOWN, ex);\n }\n\n private _onPointerUp(e: PointerEvent) {\n const ex = this.remapPointer(e);\n this._pointerButton = -1;\n this._computePointer(ex);\n this._pressability.pointerUp(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_UP, ex);\n }\n\n private _onPointerMove(e: PointerEvent) {\n const ex = this.remapPointer(e);\n this._computePointer(ex);\n this._pointerMoving = true;\n this._pressability.pointerMove(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_MOVE, ex);\n }\n\n private _onMouseWheel(e: WheelEvent) {\n this._mouseWheel = this._normalizeWheel(e).pixelY;\n this.viewer.emit(DeviceInput.MOUSE_WHEEL, e);\n }\n\n private _onTouchStart(e: TouchEvent) {\n this._touchStart = true;\n const ex = this.remapTouch(e);\n\n const curr = ex.touches;\n const touches = this._touches;\n const preTouches = this._preTouches;\n\n for (let i = curr.length; i--;) {\n if (touches[i] === undefined) {\n touches[i] = { id: -1, position: new Vector2() };\n }\n\n const touch = curr[i];\n touches[i].id = touch.identifier;\n touches[i].position.set(touch.pageX, touch.pageY);\n\n if (preTouches[i] === undefined) {\n preTouches[i] = { id: touches[i].id, position: touches[i].position.clone() };\n }\n else {\n preTouches[i].id = touches[i].id;\n preTouches[i].position.copy(touches[i].position);\n }\n }\n this._touchCount = curr.length;\n\n this.viewer.emit(DeviceInput.TOUCH_START, ex);\n }\n\n private _onTouchEnd(e: TouchEvent) {\n this._touchMoving = false;\n const ex = this.remapTouch(e);\n this.viewer.emit(DeviceInput.TOUCH_END, ex);\n }\n\n private _onTouchMove(e: TouchEvent) {\n this._touchMoving = true;\n const ex = this.remapTouch(e);\n\n const curr = ex.touches;\n const touches = this._touches;\n\n for (let i = curr.length; i--;) {\n const touch = curr[i];\n touches[i].id = touch.identifier;\n touches[i].position.set(touch.pageX, touch.pageY);\n }\n this._touchCount = curr.length;\n\n this.viewer.emit(DeviceInput.TOUCH_MOVE, ex);\n }\n\n private _onKeyDown(e: KeyboardEvent) {\n this._keys[e.code] = true;\n this.viewer.emit(DeviceInput.KEYDOWN, e);\n }\n\n private _onKeyPress(e: KeyboardEvent) {\n this._keys[e.code] = true;\n this.viewer.emit(DeviceInput.KEYPRESS, e);\n }\n\n private _onKeyUp(e: KeyboardEvent) {\n this._keys[e.code] = 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 {\n MathUtils,\n Object3D,\n OrthographicCamera,\n PerspectiveCamera,\n Quaternion,\n Spherical,\n Vector2,\n Vector3\n} from \"three\";\n\nimport { DeviceInput } from \"../DeviceInput\";\nimport { SystemInfo } from \"../SystemInfo\";\nimport { property } from \"../PropertyManager\";\nimport { FInterpTo, VInterpTo } from \"../math\";\nimport { Component } from \"../Component\";\nimport { single } from \"../ComponentManager\";\n\nconst { clamp, degToRad } = MathUtils;\nconst { tan, PI } = Math;\nconst PI2 = PI * 2;\nconst ESP = 0.001;\n\n@single()\nexport class FreelookVirtualCamera extends Component<Object3D & { isCamera?: boolean }> {\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 rotateDelta = new Vector2();\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 _up: Vector3 = new Vector3(0, 1, 0);\n private _offset: Vector2 = new Vector2();\n private _fov: number = 45;\n private _near: number = 0.1;\n private _far: number = 1000;\n\n private _tempSmoothing: number = 6;\n private _tempRotateSmoothing: number = 8;\n private _targetPosition: Vector3 = new Vector3();\n private _targetTheta: number = 0;\n private _targetPhi: number = 0;\n private _targetRadius: number = 4;\n private _targetFov: number = this._fov;\n private _targetNear: number = this._near;\n private _targetFar: number = this._far;\n private _targetLookAt: Vector3 = new Vector3();\n private _targetOffset: Vector2 = new Vector2();\n private _targetUp: Vector3 = new Vector3(0, 1, 0);\n private _finalLookAt: Vector3 = new Vector3();\n\n name: string = \"FreelookVirtualCamera\";\n\n @property\n sync: boolean = true;\n @property({ dir: \"set\" })\n forbitAll: boolean = false;\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 radiusMin: number = ESP;\n @property({ dir: \"set\", step: 0.01 })\n radiusMax: number = Infinity;\n\n @property({ step: 0.01 })\n get up() {\n return this._up;\n }\n set up(v: Vector3) {\n this._up.copy(v);\n this._targetUp.copy(v);\n }\n\n @property({ step: 0.01 })\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({ step: 0.01 })\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 radius() {\n return this._spherical.radius;\n }\n set radius(v: number) {\n this._spherical.radius = this._targetRadius = clamp(v, this.radiusMin, this.radiusMax);\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._fov;\n }\n set fov(v: number) {\n this._fov = this._targetFov = v;\n }\n\n @property\n get near() {\n return this._near;\n }\n set near(v: number) {\n this._near = this._targetNear = v;\n }\n\n @property\n get far() {\n return this._far;\n }\n set far(v: number) {\n this._far = this._targetFar = v;\n }\n\n private _onMultiTouch: (loc0: Vector2, loc1: Vector2, preLoc0: Vector2, preLoc1: Vector2) => void;\n private _onSingleTouch: (loc0: Vector2, preLoc0: Vector2) => void;\n private _onCalculatePan: (out: Vector2, loc0: Vector2, loc1: Vector2) => Vector2;\n private _onDragging: (button: number, loc0: Vector2, preLoc0: Vector2) => void;\n private _onDistanceScale: (scale: number) => number;\n private _lerpCamera: (dt: number) => void;\n private _syncCamera: () => void;\n\n constructor() {\n super();\n this.node = new Object3D();\n this.node.isCamera = true;\n\n this.onLoad = () => {\n let camera = this.viewer.camera;\n if (camera instanceof PerspectiveCamera) {\n this.fov = camera.fov;\n this.near = camera.near;\n this.far = camera.far;\n\n this._onDistanceScale = (scale) => {\n return scale;\n }\n\n this._onMultiTouch = (loc0, loc1, preLoc0, preLoc1) => {\n this._setTargetSpringLength(this._calculateDistanceScale(preLoc0.distanceTo(preLoc1) / loc0.distanceTo(loc1)));\n\n const { preCenter, center, panDelta } = FreelookVirtualCamera;\n preCenter.copy(preLoc0).add(preLoc1).multiplyScalar(0.5);\n center.copy(loc0).add(loc1).multiplyScalar(0.5);\n this._setTargetLookAt(this._calculatePanDelta(panDelta, preCenter, center));\n }\n\n this._onSingleTouch = (loc0, preLoc0) => {\n const { rotateDelta } = FreelookVirtualCamera;\n this._setTargetRotation(this._calculateRotate(rotateDelta, preLoc0, loc0));\n }\n\n this._onCalculatePan = (out, loc0, loc1) => {\n return out.copy(loc1).sub(loc0).multiplyScalar(this.panSpeed / this.viewer.height);\n }\n\n this._onDragging = (button, loc0, preLoc0) => {\n const { rotateDelta, panDelta } = FreelookVirtualCamera;\n switch (button) {\n case 0:\n this._setTargetRotation(this._calculateRotate(rotateDelta, preLoc0, loc0));\n break;\n case 1:\n case 2:\n this._setTargetLookAt(this._calculatePanDelta(panDelta, preLoc0, loc0));\n break;\n }\n }\n\n this._lerpCamera = (dt) => {\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._targetRadius, dt, smoothing);\n\n VInterpTo(this._lookAt, this._targetLookAt, dt, smoothing);\n VInterpTo(this._offset, this._targetOffset, dt, smoothing);\n VInterpTo(this._up, this._targetUp, dt, smoothing);\n\n this._calculateLookAtOffset(this._offset, this._finalLookAt).add(this._lookAt);\n\n this.node.up.copy(this._up);\n this.node.position.setFromSpherical(this._spherical).add(this._finalLookAt);\n this.node.lookAt(this._finalLookAt);\n\n this._fov = FInterpTo(this._fov, this._targetFov, dt, smoothing);\n this._near = FInterpTo(this._near, this._targetNear, dt, smoothing);\n this._far = FInterpTo(this._far, this._targetFar, dt, smoothing);\n }\n\n this._syncCamera = () => {\n const { fov, near, far } = camera;\n\n camera.position.copy(this.node.position);\n camera.quaternion.copy(this.node.quaternion);\n camera.updateMatrixWorld();\n\n camera.fov = this.fov;\n camera.near = this.near;\n camera.far = this.far;\n\n if (fov !== camera.fov ||\n near != camera.near ||\n far !== camera.far\n ) {\n camera.updateProjectionMatrix();\n }\n }\n }\n else if (camera instanceof OrthographicCamera) {\n this.radius = camera.zoom;\n\n this._onDistanceScale = (scale) => {\n return 1 / scale;\n }\n\n this._onMultiTouch = (loc0, loc1, preLoc0, preLoc1) => {\n this._setTargetSpringLength(this._calculateDistanceScale(preLoc0.distanceTo(preLoc1) / loc0.distanceTo(loc1)));\n }\n\n this._onSingleTouch = (loc0: Vector2, preLoc0: Vector2) => {\n const { panDelta } = FreelookVirtualCamera;\n this._setTargetPosition(this._calculatePanDelta(panDelta, loc0, preLoc0));\n }\n\n this._onCalculatePan = (out, loc0, loc1) => {\n out.copy(loc0).sub(loc1);\n out.x *= (camera.right - camera.left) / camera.zoom / this.viewer.width;\n out.y *= (camera.top - camera.bottom) / camera.zoom / this.viewer.height;\n return out;\n }\n\n this._onDragging = (button, loc0, preLoc) => {\n const { panDelta } = FreelookVirtualCamera;\n switch (button) {\n case 0:\n case 2:\n this._setTargetPosition(this._calculatePanDelta(panDelta, loc0, preLoc));\n break;\n }\n }\n\n this._lerpCamera = (dt) => {\n const smoothing = this._tempSmoothing;\n this.node.position.x = FInterpTo(this.node.position.x, this._targetPosition.x, dt, smoothing);\n this.node.position.y = FInterpTo(this.node.position.y, this._targetPosition.y, dt, smoothing);\n this._spherical.radius = FInterpTo(this._spherical.radius, this._targetRadius, dt, smoothing);\n }\n\n this._syncCamera = () => {\n const { zoom } = camera;\n\n camera.position.copy(this.node.position);\n camera.quaternion.copy(this.node.quaternion);\n camera.zoom = this._spherical.radius;\n\n if (zoom !== camera.zoom) {\n camera.updateProjectionMatrix();\n }\n }\n }\n }\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._targetFov = this.fov;\n this._targetNear = this.near;\n this._targetFar = this.far;\n this._targetTheta = this.theta;\n this._targetPhi = this.phi;\n this._targetRadius = this.radius;\n this._targetLookAt.copy(this._lookAt);\n this._targetUp.copy(this._up);\n }\n\n goto({\n phi = this._targetPhi,\n theta = this._targetTheta,\n radius = this._targetRadius,\n offset = this._targetOffset,\n lookAt = this._lookAt,\n up = this._up,\n fov = this._fov,\n near = this._near,\n far = this._far,\n smoothing = this.smoothing,\n rotateSmoothing = this.smoothing,\n }: {\n phi?: number;\n theta?: number;\n radius?: number;\n lookAt?: Vector3;\n up?: Vector3;\n offset?: Vector2;\n fov?: number;\n near?: number;\n far?: 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._targetRadius = clamp(radius, this.radiusMin, this.radiusMax);\n this._targetLookAt.copy(lookAt);\n this._targetOffset.copy(offset);\n this._targetUp.copy(up);\n this._targetFov = fov;\n this._targetNear = near;\n this._targetFar = far;\n this._tempSmoothing = smoothing;\n this._tempRotateSmoothing = rotateSmoothing;\n }\n\n update(dt: number) {\n this._lerpCamera(dt);\n\n if (this.sync) {\n this._syncCamera();\n }\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(_: 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 } = FreelookVirtualCamera;\n loc0.set(e.pageX, e.pageY);\n this._onDragging(this._button, loc0, this._preLoc0);\n this._preLoc0.copy(loc0);\n }\n\n private _onMouseWheel(e: WheelEvent) {\n this._setTargetSpringLength(this._calculateDistanceScale(e.deltaY > 0 ? 1 / 0.85 : e.deltaY < 0 ? 0.85 : 1));\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 } = 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 this._onMultiTouch(loc0, loc1, this._preLoc0, this._preLoc1);\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._onSingleTouch(loc0, this._preLoc0);\n this._preLoc0.copy(loc0);\n }\n }\n }\n\n private _calculateDistanceScale(scale: number) {\n this._tempRotateSmoothing = this.rotateSmoothing;\n if (this.forbitAll || this.forbidZ) {\n scale = 1;\n }\n return this._onDistanceScale(scale);\n }\n\n private _calculateRotate(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.forbitAll || this.forbidX) {\n out.x = 0;\n }\n if (this.forbitAll || 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 this._onCalculatePan(out, loc0, loc1);\n\n if (this.forbitAll || this.forbidPanX) {\n out.x = 0;\n }\n if (this.forbitAll || 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 } = FreelookVirtualCamera;\n\n this.node.updateMatrix();\n xAxis.setFromMatrixColumn(this.node.matrix, 0);\n yAxis.setFromMatrixColumn(this.node.matrix, 1);\n\n if (this.forbitAll || this.forbitPanOffsetY) {\n yAxis.y = 0;\n yAxis.normalize();\n }\n\n const length = this._spherical.radius * 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 _setTargetPosition(panOffset: Vector2) {\n this._targetPosition.x -= panOffset.x;\n this._targetPosition.y += panOffset.y;\n }\n\n private _setTargetSpringLength(scale: number) {\n this._targetRadius *= scale;\n this._targetRadius = clamp(this._targetRadius, this.radiusMin, this.radiusMax);\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, Vector4, 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 vec4 normalScaleBias; \nuniform sampler2D roughnessMap;\nuniform vec4 roughnessScaleBias; \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 * normalScaleBias.xy + normalScaleBias.zw);\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 * roughnessScaleBias.xy + roughnessScaleBias.zw).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#else\n irradiance += vec3(1.);\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: 0 },\n roughnessMap: { value: null },\n roughnessScaleBias: { value: new Vector4(1, 1, 0, 0) },\n normalMap: { value: null },\n normalScaleBias: { value: new Vector4(1, 1, 0, 0) },\n aoMap: { value: null },\n aoMapIntensity: { value: 1 },\n lightMap: { value: null },\n lightMapIntensity: { value: 1 },\n dfgLUT: { value: null }\n }\n\n constructor({\n reflector,\n ...parameters\n }: {\n name?: string;\n color?: Color;\n opacity?: number;\n reflector: Reflector;\n reflectIntensity?: number;\n transparent?: boolean;\n depthWrite?: boolean;\n metalness?: number;\n map?: Texture;\n roughness?: number;\n roughnessMap?: Texture;\n normalMap?: Texture;\n normalScaleBias?: Vector4;\n roughnessScaleBias?: Vector4;\n aoMap?: Texture;\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.texture;\n this.uniforms.textureMatrix.value = reflector.textureMatrix\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 roughnessScaleBias() {\n return this.uniforms.roughnessScaleBias.value;\n }\n set roughnessScaleBias(v: Vector4) {\n this.uniforms.roughnessScaleBias.value.copy(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 normalScaleBias() {\n return this.uniforms.normalScaleBias.value;\n }\n set normalScaleBias(v: Vector4) {\n this.uniforms.normalScaleBias.value.copy(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({ min: 0, max: 1 })\n get aoMapIntensity() {\n return this.uniforms.aoMapIntensity.value;\n }\n set aoMapIntensity(v: Texture) {\n this.uniforms.aoMapIntensity.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.texture;\n this.uniforms.shadowsMatrix.value = shadows.textureMatrix;\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 { 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}","\nexport class Task {\n static _instanceCount: number = 0;\n\n instanceId: number = Task._instanceCount++;\n name: string = \"task\" + this.instanceId\n excute: () => void\n\n constructor(excute: () => void, name?: string) {\n this.excute = excute;\n this.name = name || this.name;\n }\n}","import { Task } from \"./Task\";\n\nexport interface TaskManagerOptions {\n manual?: boolean;\n onComplete?: () => void,\n onProgress?: (task: Task, loaded: number, total: number) => void,\n onError?: (task: Task) => void,\n}\n\nexport class TaskManager {\n private _tasks: Task[] = [];\n private _taskIndex: number = 0;\n private _onStartCalled: boolean = false;\n private _started: boolean = false;\n private _manual: boolean = false;\n\n get isComplete() {\n return this._taskIndex >= this._tasks.length;\n }\n\n get started() {\n return this._started;\n }\n\n get manual() {\n return this._manual;\n }\n\n onStart?: () => void;\n\n onComplete?: () => void;\n onProgress?: (task: Task, loaded: number, total: number) => void;\n onError?: (task: Task) => void;\n\n constructor({\n manual = false,\n onComplete,\n onProgress,\n onError,\n }: TaskManagerOptions = {}) {\n this._manual = manual;\n this._started = !manual;\n this.onComplete = onComplete;\n this.onProgress = onProgress;\n this.onError = onError;\n }\n\n destroy() {\n this._tasks = [];\n this._taskIndex = 0;\n }\n\n start() {\n this._started = true;\n return this;\n }\n\n pause() {\n this._started = false;\n return this;\n }\n\n resume() {\n return this.start();\n }\n\n add(task: Task | (() => void), name?: string) {\n if (typeof task === \"function\") {\n task = new Task(task, name);\n }\n this._tasks.push(task);\n return task;\n }\n\n update() {\n if (!this._started) return;\n\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\n if (this._onStartCalled === false) {\n this._onStartCalled = true;\n this.onStart && this.onStart();\n }\n\n ++this._taskIndex;\n\n this.onProgress && this.onProgress(task, this._taskIndex, this._tasks.length);\n\n if (this._taskIndex === this._tasks.length) {\n this._onStartCalled = false;\n this.onComplete && this.onComplete();\n }\n }\n }\n}\n","export enum Orientation {\n AUTO,\n LANDSCAPE,\n PORTRAIT,\n}\n\nexport enum ResizeMode {\n AUTO,\n MUNUAL\n}","import { LoadingManager, WebGLRenderer } from \"three\";\nimport { TextureSettings } from \"../TextureSettings\";\nimport { Loader } from \"./Loader\";\nimport { DRACOLoader } from \"three/examples/jsm/loaders/DRACOLoader.js\";\nimport { KTX2Loader } from \"three/examples/jsm/loaders/KTX2Loader.js\";\n\nexport type LoaderConstructor = new (manager: ResourceManager) => Loader\n\ninterface ReadyWaiter {\n total: number;\n resolve: () => void;\n}\n\ninterface PendingAsset {\n props: AssetProperties;\n resolve: (asset: unknown) => void;\n reject: (reason?: any) => void;\n}\n\nexport interface ResourceManagerOptions {\n manual?: boolean;\n loadingManager?: LoadingManager;\n dracoPath?: string;\n basisPath?: string;\n renderer?: WebGLRenderer;\n path?: string;\n resourcePath?: string;\n URL?: (url: string) => string;\n}\n\nexport interface AssetProperties<URL extends string = string> extends TextureSettings {\n url?: URL,\n ext?: string,\n buffer?: string | ArrayBuffer,\n path?: string;\n resourcePath?: string;\n manager?: LoadingManager;\n onProgress?: (event: ProgressEvent) => void,\n}\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 private _resources: Map<string, unknown> = new Map();\n private _pendingAssets: PendingAsset[] = [];\n private _readyWaiters: ReadyWaiter[] = [];\n\n private _loaded: number = 0;\n private _totalCount: number = 0;\n private _started: boolean = false;\n private _manual: boolean = false;\n private _resourceOptions: { path?: string, resourcePath?: string };\n private _URL: (url: string) => string;\n\n private _ktx2Loader: KTX2Loader;\n private _dracoLoader: DRACOLoader;\n private _loadingManager: LoadingManager;\n\n constructor({\n dracoPath,\n basisPath,\n loadingManager,\n renderer,\n path = \"\",\n resourcePath = \"\",\n URL = (url) => url,\n manual = false,\n }: ResourceManagerOptions) {\n this._manual = manual;\n this._started = !manual;\n this._resourceOptions = { path, resourcePath };\n this._URL = URL;\n this._loadingManager = loadingManager;\n\n this._dracoLoader = new DRACOLoader();\n this._dracoLoader.setDecoderPath(dracoPath);\n this._dracoLoader.manager = loadingManager;\n\n this._ktx2Loader = new KTX2Loader();\n this._ktx2Loader.setTranscoderPath(basisPath);\n this._ktx2Loader.detectSupport(renderer);\n this._ktx2Loader.manager = loadingManager;\n }\n\n get isComplete() {\n return this._loaded >= this._totalCount;\n }\n\n get started() {\n return this._started;\n }\n\n get manual() {\n return this._manual;\n }\n\n get loadingManager() {\n return this._loadingManager;\n }\n\n get ktx2Loader() {\n return this._ktx2Loader;\n }\n\n get dracoLoader() {\n return this._dracoLoader;\n }\n\n destroy() {\n this._loaders.clear();\n this._pendingAssets.length = 0;\n this._readyWaiters.length = 0;\n }\n\n start() {\n if (this._started) return this;\n\n this._started = true;\n this._flushPendingAssets();\n\n return this;\n }\n\n pause() {\n this._started = false;\n return this;\n }\n\n ready() {\n const total = this._totalCount;\n if (this._loaded >= total) {\n return Promise.resolve();\n }\n\n return new Promise<void>(resolve => {\n this._readyWaiters.push({ total, resolve });\n });\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 load<Asset = unknown>({\n url, ext, onProgress, ...props\n }: AssetProperties) {\n return new Promise<Asset>((resolve, reject) => {\n const fullUrl = url ? this._URL(url) : url;\n const assetProps = Object.assign({ url: fullUrl, ext, onProgress }, this._resourceOptions, props);\n\n this._totalCount++;\n\n if (this._started) {\n this._load(assetProps).then(resolve).catch(reject);\n }\n else {\n this._pendingAssets.push({ props: assetProps, resolve: resolve as (asset: unknown) => void, reject });\n }\n })\n }\n\n get<Asset = unknown>(url: string) {\n return this._resources.get(this._URL(url)) as Asset;\n }\n\n private _flushPendingAssets() {\n const assets = this._pendingAssets.splice(0);\n for (const asset of assets) {\n this._load(asset.props).then(asset.resolve).catch(asset.reject);\n }\n }\n\n private _load<Asset = unknown>({\n url, ext, onProgress, ...props\n }: AssetProperties) {\n return new Promise<Asset>((resolve, reject) => {\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, texSettings, ...props,\n onProgress,\n onLoad: (asset) => {\n this._loaded++;\n this._resources.set(url, asset);\n this._checkReadyWaiters();\n resolve(asset);\n },\n onError: (err) => {\n this._loaded++;\n this._checkReadyWaiters();\n console.error(`${url} not exist`, err)\n reject(err)\n },\n });\n }\n else {\n this._loaded++;\n this._checkReadyWaiters();\n reject(\"ResourceManager.load: missing loader for \" + sel);\n }\n })\n }\n\n private _checkReadyWaiters() {\n for (let i = this._readyWaiters.length; i--;) {\n const waiter = this._readyWaiters[i];\n if (this._loaded >= waiter.total) {\n this._readyWaiters.splice(i, 1);\n waiter.resolve();\n }\n }\n }\n}\n","import { LoadProperties, Loader } from \"../asset/Loader\";\nimport { STLLoader as STLLoaderPrimitive } from \"three/examples/jsm/loaders/STLLoader.js\";\n\nexport class STLLoader extends Loader {\n extension: string[] = [\"stl\"];\n\n load({\n url,\n buffer,\n path,\n resourcePath,\n onLoad,\n onProgress,\n onError,\n }: LoadProperties): void {\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new STLLoaderPrimitive();\n loader.manager = this.manager.loadingManager;\n }\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n\n if (buffer) {\n onLoad(loader.parse(buffer));\n }\n else {\n loader.load(url, onLoad, onProgress, onError);\n }\n }\n\n private _loader: STLLoaderPrimitive;\n}","import {\n BufferGeometry,\n Camera,\n ClampToEdgeWrapping,\n Color,\n ColorRepresentation,\n ColorSpace,\n DataTexture,\n Float32BufferAttribute,\n FloatType,\n HalfFloatType,\n LinearFilter,\n LinearMipMapLinearFilter,\n LinearSRGBColorSpace,\n LinearToneMapping,\n LoadingManager,\n Material,\n MathUtils,\n Mesh,\n NearestFilter,\n NoBlending,\n Object3D,\n OrthographicCamera,\n PCFSoftShadowMap,\n PerspectiveCamera,\n RGBAFormat,\n Scene,\n ShaderMaterial,\n ShadowMapType,\n SRGBColorSpace,\n Texture,\n TextureDataType,\n ToneMapping,\n TypedArray,\n UnsignedByteType,\n UVMapping,\n Vector2,\n Vector3,\n Vector4,\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 { DeviceInput, InputOption } from \"./DeviceInput\";\nimport { Orientation, ResizeMode } from \"./enums\";\nimport { LoaderConstructor, ResourceManager } from \"./asset/ResourceManager\";\nimport { __C, __Comp, __P, __Properties } from \"./types\";\nimport { Component } from \"./Component\";\nimport { applyProps } from \"./Utils\";\nimport { SystemInfo } from \"./SystemInfo\";\nimport { GLTFLoader, HDRLoader, JSONLoader, SVGLoader, TextureLoader, KTX2Loader } from \"./loaders\";\nimport { Task } from \"./Task\";\nimport { Renderer } from \"./components/Renderer\";\nimport { STLLoader } from \"./loaders/STLLoader\";\n\nconst vert_Fullscreen = `\nvarying vec2 v_uv;\n\nvoid main () {\n v_uv = position.xy * 0.5 + 0.5;\n gl_Position = vec4(position, 1.);\n}\n`\n\nconst frag_Copy = `\nuniform sampler2D map;\nvarying vec2 v_uv;\n\nvoid main() {\n gl_FragColor = texture2D(map, v_uv);\n}\n`\n\nconst frag_Clear = `\nuniform vec4 u_color;\n\nvoid main() {\n gl_FragColor = u_color;\n}\n`\nconst vert_Blur9Varying = `\nuniform vec2 u_delta;\nvarying vec2 v_uv[9];\n\nvoid main() {\n vec2 uv = position.xy * 0.5 + 0.5;\n v_uv[0] = uv;\n\n vec2 delta = u_delta;\n v_uv[1] = uv - delta;\n v_uv[2] = uv + delta;\n\n delta += u_delta;\n v_uv[3] = uv - delta;\n v_uv[4] = uv + delta;\n\n delta += u_delta;\n v_uv[5] = uv - delta;\n v_uv[6] = uv + delta;\n\n delta += u_delta;\n v_uv[7] = uv - delta;\n v_uv[8] = uv + delta;\n\n gl_Position = vec4(position, 1.0);\n}`;\n\nconst frag_Blur9Varying = `\nuniform sampler2D u_texture;\nvarying vec2 v_uv[9];\n\nvoid main() {\n vec4 color = texture2D(u_texture, v_uv[0]) * 0.1633;\n color += texture2D(u_texture, v_uv[1]) * 0.1531;\n color += texture2D(u_texture, v_uv[2]) * 0.1531;\n color += texture2D(u_texture, v_uv[3]) * 0.12245;\n color += texture2D(u_texture, v_uv[4]) * 0.12245;\n color += texture2D(u_texture, v_uv[5]) * 0.0918;\n color += texture2D(u_texture, v_uv[6]) * 0.0918;\n color += texture2D(u_texture, v_uv[7]) * 0.051;\n color += texture2D(u_texture, v_uv[8]) * 0.051;\n gl_FragColor = color;\n}`;\n\nconst frag_Blur9 = `\nuniform sampler2D u_texture;\nuniform vec2 u_delta;\nvarying vec2 v_uv;\n\nvoid main() {\n vec4 color = texture2D(u_texture, v_uv) * 0.1633;\n\n vec2 delta = u_delta;\n color += texture2D(u_texture, v_uv - delta) * 0.1531;\n color += texture2D(u_texture, v_uv + delta) * 0.1531;\n\n delta += u_delta;\n color += texture2D(u_texture, v_uv - delta) * 0.12245;\n color += texture2D(u_texture, v_uv + delta) * 0.12245;\n\n delta += u_delta;\n color += texture2D(u_texture, v_uv - delta) * 0.0918;\n color += texture2D(u_texture, v_uv + delta) * 0.0918;\n\n delta += u_delta;\n color += texture2D(u_texture, v_uv - delta) * 0.051;\n color += texture2D(u_texture, v_uv + delta) * 0.051;\n\n gl_FragColor = color;\n}`;\n\ntype SizeFunction = () => number[];\n\nconst EMPTY = {}\nconst FRAME_TIME_EPSILON = 0.0005;\n\nexport const DefaultLoaders: LoaderConstructor[] = [\n STLLoader,\n GLTFLoader,\n HDRLoader,\n TextureLoader,\n JSONLoader,\n SVGLoader,\n KTX2Loader,\n];\n\nexport class Viewer extends EventEmitter {\n static instanceCount: number = 0;\n static target: Vector3 = new Vector3();\n static worldPos: Vector3 = new Vector3();\n static clearColor: Color = new Color();\n\n private _instanceId: number = Viewer.instanceCount++;\n private _root: HTMLElement;\n private _canvas: HTMLCanvasElement;\n private _gl: WebGLRenderingContext | WebGL2RenderingContext;\n\n private _mount: Object3D;\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 _scene: Scene;\n private _camera: Camera;\n private _renderer: WebGLRenderer;\n private _context: { scene: Scene, camera: Camera };\n\n private _active: 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 _windowSize: SizeFunction = () => [window.innerWidth, window.innerHeight];\n private _orientation: Orientation = Orientation.AUTO;\n private _freeze: boolean = false;\n\n private _loading: LoadingManager;\n private _resources: ResourceManager;\n private _tasks: TaskManager;\n private _components: ComponentManager;\n\n get root() {\n return this._root;\n }\n get time() {\n return this._time;\n }\n get canvas() {\n return this._canvas;\n }\n get gl() {\n return this._gl;\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 mount() {\n return this._mount;\n }\n get targetFrameRate() {\n return this._targetFrameRate;\n }\n set targetFrameRate(v: number) {\n this._targetFrameRate = v < 0 ? -1 : Math.max(0.001, v);\n this._lastTime = this._time;\n this._lastFrameTime = this._time;\n }\n get instanceId() {\n return this._instanceId;\n }\n get loading() {\n return this._loading;\n }\n get resources() {\n return this._resources;\n }\n get tasks() {\n return this._tasks;\n }\n get components() {\n return this._components;\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 freeze() {\n return this._freeze;\n }\n set freeze(v: boolean) {\n this._freeze = v;\n }\n\n constructor({\n root,\n canvas,\n input,\n shadows = false,\n sortObjects = true,\n resize = ResizeMode.AUTO,\n orthographic = false,\n camera = orthographic ? { near: -100, far: 100 } : { 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 basisPath = \"three/examples/js/libs/basis/\",\n orientation = Orientation.AUTO,\n URL = (url) => url,\n manual = false,\n resources = {},\n tasks = {},\n components = {},\n ...webglOpts\n }: {\n /** 根节点,用于屏幕旋转 */\n root?: HTMLElement;\n /** 渲染用的 canvas 元素,如果不提供,默认获取 id 为 \"canvas\" 的元素 */\n canvas?: HTMLCanvasElement;\n /** 设备输入容器,默认使用canvas */\n input?: InputOption,\n /** 是否开启阴影或阴影类型,true/false 表示默认 PCFSoftShadowMap */\n shadows?: boolean | ShadowMapType;\n /** 渲染是否开启排序,默认 True */\n sortObjects?: boolean;\n /** 渲染目标帧率 (FPS),-1 表示无限制帧率 */\n targetFrameRate?: number;\n /** 是否固定帧时间,true 使用固定 delta 时间 */\n fixedFrameTime?: boolean;\n /** 调整大小模式,AUTO: 自动 resize,MUNUAL: 手动控制 */\n resize?: ResizeMode | SizeFunction;\n /** 渲染器输出的色彩空间,默认 SRGBColorSpace */\n colorSpace?: ColorSpace;\n /** 渲染器的色调映射类型,默认 LinearToneMapping */\n toneMapping?: ToneMapping;\n /** 色调映射曝光值,默认 1 */\n toneMappingExposure?: number;\n /** 最大设备像素比,用于控制高分屏渲染精度 */\n maxDPR?: number;\n /** 模型路径,通常用于加载主模型文件(如 glTF、FBX 等)的基础路径 */\n path?: string;\n /** 资源路径,模型引用的其他资源(如贴图、材质等)的路径 */\n resourcePath?: string;\n /** Draco 压缩解码器路径,默认 Google CDN 地址 */\n dracoPath?: string;\n /** The WASM transcoder and JS wrapper are available from the examples/jsm/libs/basis directory. */\n basisPath?: string;\n /** 页面方向,AUTO: 自动,LANDSCAPE: 横屏,PORTRAIT: 竖屏 */\n orientation?: Orientation;\n /** Creates an orthographic camera */\n orthographic?: boolean;\n /** A `THREE.Camera` instance or props that go into the default camera */\n camera?: (Camera | __Properties<PerspectiveCamera & OrthographicCamera>)\n URL?: (url: string) => string;\n /** 是否手动控制资源、任务和组件的启动 */\n manual?: boolean;\n /** 资源管理器 */\n resources?: {\n manual?: boolean;\n loaders?: LoaderConstructor[];\n onComplete?: () => void,\n onProgress?: (url: string, loaded: number, total: number) => void,\n onError?: (url: string) => void,\n };\n /** 任务管理器 */\n tasks?: {\n manual?: boolean;\n onComplete?: () => void,\n onProgress?: (task: Task, loaded: number, total: number) => void,\n onError?: (task: Task) => void,\n };\n /** 组件管理器 */\n components?: {\n manual?: boolean;\n };\n } & WebGLRendererParameters = EMPTY) {\n super();\n const el = canvas || document.getElementById(\"canvas\") as HTMLCanvasElement;\n this._canvas = el;\n this._root = root || el;\n this._dpr = Math.min(maxDPR, window.devicePixelRatio);\n this._orientation = orientation;\n\n this._scene = new Scene();\n this._camera = applyProps(orthographic ? new OrthographicCamera() : new PerspectiveCamera(), camera);\n this._renderer = new WebGLRenderer({ canvas: el, ...webglOpts });\n this._renderer.setPixelRatio(this._dpr);\n this._renderer.info.autoReset = false;\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.sortObjects = sortObjects;\n this._gl = this._renderer.getContext();\n\n this._context = { scene: this._scene, camera: this._camera };\n this.targetFrameRate = targetFrameRate;\n this._windowSize = typeof resize === \"function\" ? resize : resize === ResizeMode.AUTO ? this._windowSize : null;\n\n const resourcesManual = resources.manual ?? manual;\n const tasksManual = tasks.manual ?? manual;\n const componentsManual = components.manual ?? manual;\n\n this._tasks = new TaskManager({ manual: tasksManual, onComplete: tasks.onComplete, onProgress: tasks.onProgress, onError: tasks.onError });\n this._loading = new LoadingManager(resources.onComplete, resources.onProgress, resources.onError);\n\n this._resources = new ResourceManager({\n manual: resourcesManual,\n dracoPath,\n basisPath,\n renderer: this._renderer,\n loadingManager: this._loading,\n path,\n resourcePath,\n URL,\n });\n for (const Loader of resources.loaders ?? DefaultLoaders) {\n this._resources.addLoader(Loader);\n }\n\n this._components = new ComponentManager(this, { manual: componentsManual });\n\n this._mount = applyProps(new Object3D(), { name: \"Mount\" })\n this._input = this.add(new DeviceInput(input || { source: this._canvas }));\n\n this.add(Renderer);\n\n this.rotate();\n this.resize();\n this.animate();\n }\n\n destroy() {\n this.stop();\n this._renderer.dispose();\n this._tasks.destroy();\n this._resources.destroy();\n this._components.destroy();\n }\n\n animate() {\n const loop = (dt: number) => {\n if (!this._active) return;\n\n this._components.tick(dt);\n this._tasks.update();\n\n if (this._components.started) {\n dt = Math.min(dt, 0.067);\n\n this._components.update(dt);\n this._renderer.info.reset();\n\n if (!this._freeze) {\n this._components.render(dt);\n }\n }\n }\n const frame = (time: number) => {\n this._time = time * 0.001;\n\n if (this._targetFrameRate > -1) {\n const interval = 1 / this._targetFrameRate;\n const delta = this._time - this._lastFrameTime;\n\n if (delta + FRAME_TIME_EPSILON >= interval) {\n loop(this._fixedFrameTime ? interval : this._time - this._lastTime);\n this._lastTime = this._time;\n this._lastFrameTime = delta >= interval ? this._time - (delta % interval) : this._lastFrameTime + interval;\n }\n }\n else {\n loop(this._time - this._lastTime);\n this._lastTime = this._time;\n }\n }\n this._renderer.setAnimationLoop(frame);\n }\n\n start() {\n if (this._active === false) {\n this._active = true;\n this.rotate();\n this.resize();\n }\n return this;\n }\n\n stop() {\n this._active = 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(width?: number, height?: number) {\n if (this._windowSize) {\n [width, height] = this._windowSize();\n }\n if (!(width && height)) return;\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;\n if (camera instanceof OrthographicCamera) {\n if (!camera.userData.manual) {\n const aspect = width / height;\n camera.left = -aspect;\n camera.right = aspect;\n camera.top = 1;\n camera.bottom = -1;\n camera.updateProjectionMatrix();\n }\n this._viewport = { width: width / camera.zoom, height: height / camera.zoom, factor: 1 };\n }\n else if (camera instanceof PerspectiveCamera) {\n if (!camera.userData.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._components.resize(width, height);\n }\n\n use<T extends Scene | Camera | null, K extends __C<T>>(object: T | K & __C<T>, props?: __P<T, K>): T;\n use(object?: any, props?: any) {\n let ins = getClassInstance(object);\n if (ins) {\n if (ins.isScene) {\n this._scene = ins;\n }\n if (ins.isCamera) {\n this._camera = ins;\n }\n if (props) {\n if (ins.isCamera) {\n ins.userData.manual = props.manual ?? false;\n }\n applyProps(ins, props);\n }\n return ins;\n }\n else {\n this._scene = this._context.scene;\n this._camera = this._context.camera;\n }\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 scale,\n parent,\n position,\n rotation,\n manual,\n component,\n layerMask,\n children,\n ...props\n }: any = EMPTY\n ) {\n let mount = false;\n let ins = getClassInstance(object, args);\n if (ins.isObject3D) {\n node = ins;\n }\n else if (ins.isComponent) {\n node = node || ins.node;\n if (!node) {\n node = new Object3D();\n mount = true;\n }\n this._components.add(node, ins);\n }\n else {\n throw Error(\"Unsuport object\");\n }\n\n if (parent === undefined) {\n parent = mount ? this._mount : this._scene;\n }\n if (parent !== node) {\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._components.add(node, comp);\n }\n }\n if (children) {\n const children_ = Array.isArray(children) ? children : [children];\n node.add(...children_);\n }\n\n if (layerMask) {\n node.layers.mask = layerMask;\n }\n\n if (scale || position || rotation) {\n applyProps(node, { scale, position, rotation });\n }\n if (props) {\n applyProps(ins, props);\n }\n\n return ins;\n }\n\n remove<T extends Object3D | Component>(ins: T): T {\n if (ins instanceof Object3D) {\n this._components.destroy(ins);\n ins.removeFromParent();\n }\n else if (ins instanceof Component) {\n this._components.remove(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 ? HalfFloatType : 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 ? HalfFloatType : 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: TypedArray,\n width: number,\n height: number,\n floatType: boolean = false,\n nearest: boolean = true,\n ) {\n const texture = 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 texture.needsUpdate = true;\n return texture;\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 copy(\n src: WebGLRenderTarget | Texture,\n dest: WebGLRenderTarget,\n ) {\n Viewer.Copy(this._renderer, src, dest);\n }\n\n clearColor(\n renderTarget: WebGLRenderTarget,\n color: ColorRepresentation,\n alpha?: number,\n ) {\n Viewer.ClearColor(this._renderer, renderTarget, color, alpha);\n }\n\n stash(\n renderTarget: WebGLRenderTarget | null,\n callback: (renderer: WebGLRenderer) => void,\n clearColor?: ColorRepresentation,\n clearAlpha?: number,\n ) {\n Viewer.Stash(this._renderer, renderTarget, callback, clearColor, clearAlpha);\n }\n\n blur(\n blurLevel: number,\n shadingScale: number,\n inputBuffer: WebGLRenderTarget,\n tempBuffer: WebGLRenderTarget,\n outputBuffer?: WebGLRenderTarget,\n fixedOutput?: boolean\n ) {\n Viewer.Blur(this._renderer, blurLevel, shadingScale, inputBuffer, tempBuffer, outputBuffer, fixedOutput);\n }\n\n render(\n renderTarget: WebGLRenderTarget | null,\n node: Object3D,\n camera: Camera,\n clearColor?: ColorRepresentation,\n clearAlpha?: number,\n ) {\n Viewer.Render(this._renderer, renderTarget, node, camera, clearColor, clearAlpha);\n }\n\n compile(target?: Object3D | Scene | Material | Texture): void;\n compile(target?: Material[]): void;\n compile(target?: any) {\n const { renderer, scene, camera } = this;\n\n const compile = (v: any) => {\n if (v.isMaterial) {\n Viewer.CompileMaterial(renderer, scene, camera, v);\n }\n else if (v.isObject3D) {\n Viewer.CompileObject3D(renderer, scene, camera, v);\n }\n else if (v.isTexture) {\n Viewer.CompileTexture(renderer, v);\n }\n }\n\n if (Array.isArray(target)) {\n target.forEach(v => compile(v));\n }\n else if (typeof target === \"object\") {\n compile(target);\n }\n else {\n Viewer.CompileObject3D(renderer, scene, camera, scene);\n }\n }\n\n static fullscreenMesh: Mesh = new Mesh(Viewer.CreateFullscreenTriangle());\n static fullscreenCamera: OrthographicCamera = new OrthographicCamera(- 1, 1, 1, - 1, 0, 1);\n\n static copyMaterial: ShaderMaterial = new ShaderMaterial({\n uniforms: {\n map: { value: null }\n },\n vertexShader: vert_Fullscreen,\n fragmentShader: frag_Copy,\n blending: NoBlending,\n depthTest: false,\n depthWrite: false,\n });\n\n static clearMaterial: ShaderMaterial = new ShaderMaterial({\n uniforms: {\n u_color: { value: new Vector4(1, 1, 1, 1) }\n },\n vertexShader: vert_Fullscreen,\n fragmentShader: frag_Clear,\n blending: NoBlending,\n depthTest: false,\n depthWrite: false,\n })\n\n static blur9Material: ShaderMaterial = new ShaderMaterial({\n uniforms: {\n u_texture: { value: null },\n u_delta: { value: new Vector2() }\n },\n vertexShader: vert_Fullscreen,\n fragmentShader: frag_Blur9,\n })\n\n\n static blur9VaryingMaterial: ShaderMaterial = new ShaderMaterial({\n uniforms: {\n u_texture: { value: null },\n u_delta: { value: new Vector2() }\n },\n vertexShader: vert_Blur9Varying,\n fragmentShader: frag_Blur9Varying,\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 Blur(\n renderer: WebGLRenderer,\n blurLevel: number,\n shadingScale: number,\n inputBuffer: WebGLRenderTarget,\n tempBuffer: WebGLRenderTarget,\n outputBuffer?: WebGLRenderTarget,\n fixedOutput: boolean = false\n ) {\n const width = Math.ceil(inputBuffer.width * shadingScale);\n const height = Math.ceil(inputBuffer.height * shadingScale);\n\n if (!tempBuffer) {\n console.warn(\"You must provide an intermediate render target (tempBuffer) for blur.\");\n return;\n }\n\n if (width !== tempBuffer.width || height !== tempBuffer.height) {\n tempBuffer.setSize(width, height);\n }\n\n if (outputBuffer) {\n if (!fixedOutput) {\n outputBuffer.setSize(inputBuffer.width, inputBuffer.height);\n }\n } else {\n outputBuffer = inputBuffer;\n }\n\n const c = 0.25;\n\n // 横向模糊\n const material = renderer.capabilities.maxVaryings > 8 ? Viewer.blur9VaryingMaterial : Viewer.blur9Material;\n material.uniforms.u_texture.value = inputBuffer.texture;\n material.uniforms.u_delta.value.set(blurLevel / width * c, 0);\n Viewer.Blit(renderer, tempBuffer, material);\n\n // 纵向模糊\n material.uniforms.u_texture.value = tempBuffer.texture;\n material.uniforms.u_delta.value.set(0, blurLevel / height * c);\n Viewer.Blit(renderer, outputBuffer, material);\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 Copy(\n renderer: WebGLRenderer,\n src: WebGLRenderTarget | Texture,\n dest: WebGLRenderTarget,\n ) {\n Viewer.copyMaterial.uniforms.map.value = src instanceof WebGLRenderTarget ? src.texture : src;\n Viewer.Blit(renderer, dest, Viewer.copyMaterial);\n }\n\n static ClearColor(\n renderer: WebGLRenderer,\n renderTarget: WebGLRenderTarget | null,\n clearColor: ColorRepresentation,\n clearAlpha?: number\n ) {\n Viewer.Stash(renderer, renderTarget, () => renderer.clear(), clearColor, clearAlpha);\n }\n\n static Render(\n renderer: WebGLRenderer,\n renderTarget: WebGLRenderTarget | null,\n node: Object3D,\n camera: Camera,\n clearColor?: ColorRepresentation,\n clearAlpha?: number,\n ) {\n Viewer.Stash(renderer, renderTarget, () => renderer.render(node, camera), clearColor, clearAlpha);\n }\n\n static Stash(\n renderer: WebGLRenderer,\n renderTarget: WebGLRenderTarget | null,\n callback: (renderer: WebGLRenderer) => void,\n clearColor?: ColorRepresentation,\n clearAlpha?: number,\n ) {\n const autoClear = renderer.autoClear;\n const RT = renderer.getRenderTarget();\n const alpha = renderer.getClearAlpha();\n const color = renderer.getClearColor(Viewer.clearColor);\n\n renderer.autoClear = true;\n renderer.setRenderTarget(renderTarget);\n clearColor !== undefined && renderer.setClearColor(clearColor, clearAlpha);\n\n callback && callback(renderer);\n\n renderer.autoClear = autoClear;\n renderer.setRenderTarget(RT);\n clearColor !== undefined && renderer.setClearColor(color, alpha);\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","import { CubeTexture, CubeUVReflectionMapping, 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 return target;\n }\n pmremGenerator._fromCubeTexture = function (texture: any) {\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: any) {\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 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 { Component } from \"../Component\";\nimport { single } from \"../ComponentManager\";\n\n@single()\nexport class Environment extends Component {\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 = 0.1,\n far = 100,\n layerMask = 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 layerMask?: 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, far, cubeRenderTarget);\n this._cubeCamera.position.copy(position);\n this._cubeCamera.layers.mask = layerMask;\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 { Component } from \"../Component\";\nimport { single } from \"../ComponentManager\";\n\n@single()\nexport class BoxProjection extends Component {\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_TRANSMISSION) || 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 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 { Component } from \"../Component\"\nimport { single } from \"../ComponentManager\"\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\n@single()\nexport class PerformanceMonitor extends Component {\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 { AssetProperties, ResourceManager } from \"../asset/ResourceManager\";\nimport { Component } from \"../Component\";\nimport { single } from \"../ComponentManager\";\n\nenum Mode {\n BUFFER,\n BUFFER_RAW,\n URL,\n URL_RAW,\n}\n\nconst defaultExtension = {\n \"fbx\": Mode.BUFFER,\n \"gltf\": Mode.BUFFER,\n \"glb\": Mode.BUFFER,\n \"buf\": Mode.BUFFER,\n \"exr\": Mode.URL,\n \"hdr\": Mode.URL,\n \"png\": Mode.URL,\n \"jpg\": Mode.URL,\n \"webp\": Mode.URL,\n}\n\n@single()\nexport class DropFile extends Component {\n static readonly Mode = Mode;\n static readonly defaultExtension = defaultExtension;\n\n private _onLoad: Function;\n private _onError: Function;\n private _extension: { [k: string]: number };\n\n constructor({\n onLoad,\n onError,\n extension = defaultExtension\n }: {\n onLoad?: Function;\n onError?: Function;\n extension?: { [k: string]: Mode }\n buffers?: string[],\n } = {}) {\n super();\n this._onLoad = onLoad;\n this._onError = onError;\n this._extension = extension;\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.loading.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 filename = file.name;\n const ext = ResourceManager.extension(filename);\n\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\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\n const viewer = this.viewer;\n const load = (props: AssetProperties) => {\n return viewer.resources.load(props).then(loadCallback).catch(errCallback);\n }\n\n switch (this._extension[ext]) {\n case Mode.URL:\n reader.addEventListener(\"load\", event => load({ ext, url: event.target.result as string }), false);\n reader.readAsDataURL(file);\n break;\n case Mode.URL_RAW:\n reader.addEventListener(\"load\", event => loadCallback({ userData: {}, raw: event.target.result }));\n reader.readAsDataURL(file);\n break;\n case Mode.BUFFER:\n reader.addEventListener(\"load\", event => load({ ext, buffer: event.target.result, resourcePath: dir }), false);\n reader.readAsArrayBuffer(file);\n break;\n case Mode.BUFFER_RAW:\n default:\n reader.addEventListener(\"load\", event => loadCallback({ userData: {}, raw: event.target.result }));\n reader.readAsArrayBuffer(file);\n break;\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} \n","\nconst newline = /\\n/\nconst newlineChar = '\\n'\nconst whitespace = /\\s/\n\nexport function wordwrap(\n text: string,\n opt?: {\n width?: number;\n mode?: \"nowrap\" | \"pre\" | \"greedy\";\n start?: number;\n end?: number;\n measure?: Function;\n letterSpacing?: number\n }\n) {\n opt = opt || {}\n\n //zero width results in nothing visible\n if (opt.width === 0 && opt.mode !== 'nowrap')\n return []\n\n text = text || ''\n const width = typeof opt.width === 'number' ? opt.width : Number.MAX_VALUE\n const start = Math.max(0, opt.start || 0)\n const end = typeof opt.end === 'number' ? opt.end : text.length\n const mode = opt.mode\n const letterSpacing = opt.letterSpacing || 0;\n const measure = opt.measure || monospace\n if (mode === 'pre')\n return pre(measure, text, start, end, width, letterSpacing)\n else\n return greedy(measure, text, start, end, width, mode, letterSpacing)\n}\n\nfunction idxOf(text: string, chr: string, start: number, end: number) {\n var idx = text.indexOf(chr, start)\n if (idx === -1 || idx > end)\n return end\n return idx\n}\n\nfunction isWhitespace(chr: string) {\n return whitespace.test(chr)\n}\n\nfunction pre(measure: Function, text: string, start: number, end: number, width: number, letterSpacing: number) {\n var lines = []\n var lineStart = start\n for (var i = start; i < end && i < text.length; i++) {\n var chr = text.charAt(i)\n var isNewline = newline.test(chr)\n\n //If we've reached a newline, then step down a line\n //Or if we've reached the EOF\n if (isNewline || i === end - 1) {\n var lineEnd = isNewline ? i : i + 1\n var measured = measure(text, lineStart, lineEnd, width, letterSpacing)\n lines.push(measured)\n\n lineStart = i + 1\n }\n }\n return lines\n}\n\nfunction greedy(measure: Function, text: string, start: number, end: number, width: number, mode: string, letterSpacing: number) {\n //A greedy word wrapper based on LibGDX algorithm\n //https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g2d/BitmapFontCache.java\n var lines = []\n\n var testWidth = width\n //if 'nowrap' is specified, we only wrap on newline chars\n if (mode === 'nowrap')\n testWidth = Number.MAX_VALUE\n\n while (start < end && start < text.length) {\n //get next newline position\n var newLine = idxOf(text, newlineChar, start, end)\n\n //eat whitespace at start of line\n while (start < newLine) {\n if (!isWhitespace(text.charAt(start)))\n break\n start++\n }\n\n //determine visible # of glyphs for the available width\n var measured = measure(text, start, newLine, testWidth, letterSpacing)\n\n var lineEnd = start + (measured.end - measured.start)\n var nextStart = lineEnd + newlineChar.length\n\n //if we had to cut the line before the next newline...\n if (lineEnd < newLine) {\n //find char to break on\n while (lineEnd > start) {\n if (isWhitespace(text.charAt(lineEnd)))\n break\n lineEnd--\n }\n if (lineEnd === start) {\n if (nextStart > start + newlineChar.length) nextStart--\n lineEnd = nextStart // If no characters to break, show all.\n } else {\n nextStart = lineEnd\n //eat whitespace at end of line\n while (lineEnd > start) {\n if (!isWhitespace(text.charAt(lineEnd - newlineChar.length)))\n break\n lineEnd--\n }\n }\n }\n if (lineEnd >= start) {\n var result = measure(text, start, lineEnd, testWidth)\n lines.push(result)\n }\n start = nextStart\n }\n return lines\n}\n\n//determines the visible number of glyphs within a given width\nfunction monospace(text: string, start: number, end: number, width: number) {\n var glyphs = Math.min(width, end - start)\n return {\n start: start,\n end: start + glyphs\n }\n}\n","import { wordwrap } from \"./wordwrap\"\n\nconst X_HEIGHTS = ['x', 'e', 'a', 'o', 'n', 's', 'r', 'c', 'u', 'm', 'v', 'w', 'z']\nconst M_WIDTHS = ['m', 'w']\nconst CAP_HEIGHTS = ['H', 'I', 'N', 'E', 'F', 'K', 'L', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']\n\nconst TAB_ID = '\\t'.charCodeAt(0)\nconst SPACE_ID = ' '.charCodeAt(0)\nconst ALIGN_LEFT = 0, ALIGN_CENTER = 1, ALIGN_RIGHT = 2;\n\nexport interface Glyph {\n id: number;\n char: string,\n x: number;\n y: number;\n width: number;\n height: number,\n xoffset: number,\n yoffset: number,\n xadvance: number,\n page: number,\n chnl: number,\n}\n\nexport interface BMFontInfo {\n pages: string[];\n chars: Glyph[];\n info: {\n face: string;\n size: number;\n bold: number;\n italic: number;\n charset: string[];\n unicode: number;\n stretchH: number;\n smooth: number;\n aa: number;\n padding: number[];\n spacing: number[];\n outline: number;\n }\n common: {\n lineHeight: number;\n base: number;\n scaleW: number;\n scaleH: number;\n pages: number;\n packed: number;\n }\n distanceField: {\n fieldType: string;\n distanceRange: number;\n }\n kernings: {\n first: number;\n second: number;\n amount: number;\n }[]\n}\n\nfunction findChar(array: Glyph[], value: number, start?: number) {\n start = start || 0\n for (let i = start; i < array.length; i++) {\n if (array[i].id === value) {\n return i\n }\n }\n return -1\n}\n\nfunction getGlyphById(font: BMFontInfo, id: number) {\n if (!font.chars || font.chars.length === 0)\n return null\n\n let glyphIdx = findChar(font.chars, id)\n if (glyphIdx >= 0)\n return font.chars[glyphIdx]\n return null\n}\n\nfunction getXHeight(font: BMFontInfo) {\n for (let i = 0; i < X_HEIGHTS.length; i++) {\n let id = X_HEIGHTS[i].charCodeAt(0)\n let idx = findChar(font.chars, id)\n if (idx >= 0)\n return font.chars[idx].height\n }\n return 0\n}\n\nfunction getMGlyph(font: BMFontInfo) {\n for (let i = 0; i < M_WIDTHS.length; i++) {\n let id = M_WIDTHS[i].charCodeAt(0)\n let idx = findChar(font.chars, id)\n if (idx >= 0)\n return font.chars[idx]\n }\n return 0\n}\n\nfunction getCapHeight(font: BMFontInfo) {\n for (let i = 0; i < CAP_HEIGHTS.length; i++) {\n let id = CAP_HEIGHTS[i].charCodeAt(0)\n let idx = findChar(font.chars, id)\n if (idx >= 0)\n return font.chars[idx].height\n }\n return 0\n}\n\nfunction getKerning(font: BMFontInfo, left: number, right: number) {\n if (!font.kernings || font.kernings.length === 0)\n return 0\n\n let table = font.kernings\n for (let i = 0; i < table.length; i++) {\n let kern = table[i]\n if (kern.first === left && kern.second === right)\n return kern.amount\n }\n return 0\n}\n\nfunction getAlignType(align: string) {\n if (align === 'center')\n return ALIGN_CENTER\n else if (align === 'right')\n return ALIGN_RIGHT\n return ALIGN_LEFT\n}\n\nexport interface LayoutSetting {\n tabSize?: number;\n width?: number;\n anchor?: number[];\n letterSpacing?: number;\n lineHeight?: number;\n mode?: \"nowrap\" | \"pre\" | \"greedy\";\n align?: \"center\" | \"right\" | \"left\";\n flipY?: boolean;\n}\n\nexport interface LayoutGlyph {\n position: number[];\n data: Glyph;\n index: number;\n line: number;\n}\n\nexport class BMFontTextLayout {\n\n private _width: number = 0;\n private _height: number = 0;\n private _descender: number = 0;\n private _ascender: number = 0;\n private _xHeight: number = 0;\n private _baseline: number = 0;\n private _capHeight: number = 0;\n private _lineHeight: number = 0;\n private _linesTotal: number = 0;\n private _glyphs: LayoutGlyph[] = [];\n private _fallbackSpaceGlyph: Glyph = null;\n private _fallbackTabGlyph: Glyph = null;\n private _font: BMFontInfo = null;\n\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get descender() {\n return this._descender;\n }\n get ascender() {\n return this._ascender;\n }\n get xHeight() {\n return this._xHeight;\n }\n get baseline() {\n return this._baseline;\n }\n get capHeight() {\n return this._capHeight;\n }\n get lineHeight() {\n return this._lineHeight;\n }\n get glyphs() {\n return this._glyphs;\n }\n get linesTotal() {\n return this._linesTotal;\n }\n\n update(font: BMFontInfo, text: string, setting: LayoutSetting) {\n setting = Object.assign({\n tabSize: 4,\n width: 0,\n letterSpacing: 0,\n mode: \"nowrap\",\n align: \"left\",\n }, setting);\n\n this._font = font;\n const measure = this._computeMetrics.bind(this);\n const lines = wordwrap(text, { measure, ...setting });\n const minWidth = setting.width || 0;\n const glyphs = this._glyphs;\n\n const maxLineWidth = lines.reduce((prev, line) => Math.max(prev, line.width, minWidth), 0);\n\n //the pen position\n const lineHeight = setting.lineHeight ?? font.common.lineHeight;\n const baseline = font.common.base;\n const descender = lineHeight - baseline;\n const letterSpacing = setting.letterSpacing || 0;\n const height = lineHeight * lines.length - descender;\n const align = getAlignType(setting.align);\n const anchor = setting.anchor ?? [0.5, 0.5];\n\n this._setupSpaceGlyphs(font, setting);\n\n //the metrics for this text layout\n this._width = maxLineWidth\n this._height = height\n this._descender = descender;\n this._baseline = baseline\n this._xHeight = getXHeight(font)\n this._capHeight = getCapHeight(font)\n this._lineHeight = lineHeight\n this._ascender = baseline - this._xHeight; //lineHeight - descender - this._xHeight\n\n const anchorOffset = [-maxLineWidth * anchor[0], 2 * lineHeight * anchor[1] - baseline]\n\n let x = 0, y = 0;\n\n //draw text along baseline\n y -= height;\n\n glyphs.length = 0;\n\n for (let k = 0; k < lines.length; k++) {\n const line = lines[k];\n let start = line.start\n let end = line.end\n let lineWidth = line.width\n let lastGlyph\n\n //for each glyph in that line...\n for (let i = start; i < end; i++) {\n let id = text.charCodeAt(i)\n let glyph = this._getGlyph(font, id)\n if (glyph) {\n if (lastGlyph)\n x += getKerning(font, lastGlyph.id, glyph.id)\n\n let tx = x\n if (align === ALIGN_CENTER)\n tx += (maxLineWidth - lineWidth) / 2\n else if (align === ALIGN_RIGHT)\n tx += (maxLineWidth - lineWidth)\n\n glyphs.push({\n position: [tx + anchorOffset[0], y + anchorOffset[1]],\n data: glyph,\n index: i,\n line: k,\n })\n\n //move pen forward\n x += glyph.xadvance + letterSpacing\n lastGlyph = glyph\n }\n }\n\n //next line down\n y += lineHeight\n x = 0\n }\n\n this._linesTotal = lines.length;\n }\n\n private _setupSpaceGlyphs(font: BMFontInfo, setting: LayoutSetting) {\n //These are fallbacks, when the font doesn't include\n //' ' or '\\t' glyphs\n if (!font.chars || font.chars.length === 0)\n return\n\n //try to get space glyph\n //then fall back to the 'm' or 'w' glyphs\n //then fall back to the first glyph available\n const space = Object.assign({}, getGlyphById(font, SPACE_ID)\n || getMGlyph(font)\n || font.chars[0]);\n\n //and create a fallback for tab\n const tabWidth = setting.tabSize * space.xadvance\n this._fallbackSpaceGlyph = space\n this._fallbackTabGlyph = Object.assign(space, {\n x: 0, y: 0, xadvance: tabWidth, id: TAB_ID,\n xoffset: 0, yoffset: 0, width: 0, height: 0\n })\n }\n\n private _getGlyph(font: BMFontInfo, id: number) {\n let glyph = getGlyphById(font, id)\n if (glyph)\n return glyph\n else if (id === TAB_ID)\n return this._fallbackTabGlyph\n else if (id === SPACE_ID)\n return this._fallbackSpaceGlyph\n return null\n }\n\n private _computeMetrics(\n text: string,\n start: number,\n end: number,\n width: number,\n letterSpacing: number = 0\n ) {\n let font = this._font\n let curPen = 0\n let curWidth = 0\n let count = 0\n let lastGlyph\n\n if (!font.chars || font.chars.length === 0) {\n return {\n start: start,\n end: start,\n width: 0\n }\n }\n\n end = Math.min(text.length, end)\n for (let i = start; i < end; i++) {\n let id = text.charCodeAt(i)\n let glyph = this._getGlyph(font, id)\n\n if (glyph) {\n //move pen forward\n let xoff = glyph.xoffset\n let kern = lastGlyph ? getKerning(font, lastGlyph.id, glyph.id) : 0\n curPen += kern\n\n let nextPen = curPen + glyph.xadvance + letterSpacing\n let nextWidth = curPen + glyph.width\n\n //we've hit our limit; we can't move onto the next glyph\n if (nextWidth >= width || nextPen >= width)\n break\n\n //otherwise continue along our line\n curPen = nextPen\n curWidth = nextWidth\n lastGlyph = glyph\n }\n count++\n }\n\n //make sure rightmost edge lines up with rendered glyphs\n if (lastGlyph)\n curWidth += lastGlyph.xoffset\n\n return {\n start: start,\n end: start + count,\n width: curWidth\n }\n }\n}","const itemSize = 2\nconst box = { min: [0, 0], max: [0, 0] }\n\nfunction bounds(positions) {\n const count = positions.length / itemSize\n box.min[0] = positions[0]\n box.min[1] = positions[1]\n box.max[0] = positions[0]\n box.max[1] = positions[1]\n\n for (let i = 0; i < count; i++) {\n const x = positions[i * itemSize + 0]\n const y = positions[i * itemSize + 1]\n box.min[0] = Math.min(x, box.min[0])\n box.min[1] = Math.min(y, box.min[1])\n box.max[0] = Math.max(x, box.max[0])\n box.max[1] = Math.max(y, box.max[1])\n }\n}\n\nexport function computeBox(positions, output) {\n bounds(positions)\n output.min.set(box.min[0], box.min[1], 0)\n output.max.set(box.max[0], box.max[1], 0)\n}\n\nexport function computeSphere(positions, output) {\n bounds(positions)\n const minX = box.min[0]\n const minY = box.min[1]\n const maxX = box.max[0]\n const maxY = box.max[1]\n const width = maxX - minX\n const height = maxY - minY\n const length = Math.sqrt(width * width + height * height)\n output.center.set(minX + width / 2, minY + height / 2, 0)\n output.radius = length / 2\n}\n","\nimport { Box3, BufferAttribute, BufferGeometry, Sphere } from \"three\";\nimport { BMFontAtlas } from \"./BMFontAtlas\";\nimport { LayoutSetting, BMFontTextLayout } from \"./BMFontTextLayout\";\nimport { computeBox, computeSphere } from \"./utils\";\n\nexport class BMFontTextGeometry extends BufferGeometry {\n layout: BMFontTextLayout = new BMFontTextLayout();\n\n update(fontAtlas: BMFontAtlas, text: string, setting: LayoutSetting) {\n this.layout.update(fontAtlas.info, text, setting);\n const { indice, position, uv } = fontAtlas.build(this.layout, setting);\n this.setIndex(new BufferAttribute(indice, 1));\n this.setAttribute(\"position\", new BufferAttribute(position, 2));\n this.setAttribute(\"uv\", new BufferAttribute(uv, 2));\n }\n\n computeBoundingSphere() {\n if (this.boundingSphere === null) {\n this.boundingSphere = new Sphere()\n }\n\n const positions = this.attributes.position.array;\n const itemSize = this.attributes.position.itemSize\n if (!positions || !itemSize || positions.length < 2) {\n this.boundingSphere.radius = 0\n this.boundingSphere.center.set(0, 0, 0)\n return\n }\n computeSphere(positions, this.boundingSphere)\n if (isNaN(this.boundingSphere.radius)) {\n console.error('THREE.BufferGeometry.computeBoundingSphere(): ' +\n 'Computed radius is NaN. The ' +\n '\"position\" attribute is likely to have NaN values.')\n }\n }\n\n computeBoundingBox() {\n if (this.boundingBox === null) {\n this.boundingBox = new Box3()\n }\n\n const bbox = this.boundingBox\n const positions = this.attributes.position[\"array\"];\n const itemSize = this.attributes.position.itemSize\n if (!positions || !itemSize || positions.length < 2) {\n bbox.makeEmpty()\n return\n }\n computeBox(positions, bbox)\n }\n\n}","import { Material, Mesh } from \"three\";\nimport { BMFontAtlas } from \"../bmfont/BMFontAtlas\";\nimport { BMFontTextGeometry } from \"../bmfont/BMFontTextGeometry\";\nimport { LayoutSetting } from \"../bmfont/BMFontTextLayout\";\nimport { Component } from \"../Component\";\n\nexport interface LabelSetting extends LayoutSetting {\n text?: string;\n material?: Material;\n font: BMFontAtlas;\n}\n\nexport class Label extends Component<Mesh<BMFontTextGeometry>> {\n needsUpdate: boolean = false;\n\n private _text: string = \"\";\n private _font: BMFontAtlas = null;\n private _setting: LayoutSetting = null;\n\n get text() {\n return this._text;\n }\n set text(v: string) {\n if (this._text !== v) {\n this._text = v;\n this.needsUpdate = true;\n }\n }\n\n get font() {\n return this._font;\n }\n set font(v: BMFontAtlas) {\n if (this._font !== v) {\n this._font = v;\n this.needsUpdate = true;\n }\n }\n\n get setting() {\n return this._setting;\n }\n set setting(v: LayoutSetting) {\n if (JSON.stringify(this._setting) !== JSON.stringify(v)) {\n this._setting = v;\n this.needsUpdate = true;\n }\n }\n\n get layout() {\n return this.node.geometry.layout;\n }\n\n constructor({ text = \"\", font, material, ...setting }: LabelSetting) {\n super();\n this.text = text;\n this.font = font;\n this.setting = setting;\n this.node = new Mesh(new BMFontTextGeometry(), material || font.material);\n this.node.geometry.update(this.font, this.text, this.setting);\n }\n\n forceUpdate() {\n this.node.geometry.update(this.font, this.text, this.setting);\n }\n\n update(dt: number): void {\n if (this.needsUpdate) {\n this.needsUpdate = false;\n this.forceUpdate();\n }\n }\n}\n\n","import { Color, NormalBlending, ShaderMaterial, ShaderMaterialParameters, Texture, Vector2 } from \"three\";\nimport { BMFontInfo, BMFontTextLayout, LayoutSetting, } from \"./BMFontTextLayout\";\n\n\nconst vert_MSDF = `\nvarying vec2 v_uv;\n\nvoid main() {\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n v_uv = uv;\n}\n`\n\nconst frag_MSDF = `\nuniform sampler2D u_fontTexture;\nvarying vec2 v_uv;\n\nuniform vec3 u_color;\nuniform float u_opacity;\nuniform vec3 u_strokeColor;\nuniform float u_strokeWidth;\nuniform vec3 u_shadowColor;\nuniform float u_shadowOpacity;\nuniform float u_shadowBlur;\nuniform vec2 u_shadowOffset;\nuniform float u_weight;\n\nfloat median(in float r, in float g, in float b) {\n return max(min(r, g), min(max(r, g), b));\n}\n\nfloat signedDistance(in vec2 uv) {\n vec4 texel = texture2D(u_fontTexture, uv);\n return median(texel.r, texel.g, texel.b) - 0.5;\n}\n\nvoid main() {\n float d = signedDistance(v_uv) + u_weight;\n float w = fwidth(d);\n\n float outer = smoothstep(-w, w, d);\n float inner = smoothstep(-w, w, d - u_strokeWidth);\n\n float stroke = step(0.0001, u_strokeWidth);\n\n vec4 color = vec4(u_color, inner);\n color = mix(color, vec4(u_strokeColor, outer), stroke * (1.0 - inner));\n\n float sd = signedDistance(v_uv + u_shadowOffset) + u_weight;\n float sw = fwidth(sd) + u_shadowBlur;\n\n vec4 shadow = vec4(\n u_shadowColor,\n smoothstep(-sw, sw, sd) * u_shadowOpacity\n );\n\n color = mix(shadow, color, color.a);\n\n color.a *= u_opacity;\n gl_FragColor = color;\n\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n}\n`\n\nexport class BMFontAtlas {\n info: BMFontInfo;\n material: ShaderMaterial;\n\n uniforms = {\n u_color: { value: new Color(0xffffff) },\n u_opacity: { value: 1 },\n u_weight: { value: 0.2 },\n u_strokeColor: { value: new Color(0xffffff) },\n u_strokeWidth: { value: 0 },\n u_shadowColor: { value: new Color(0x606060) },\n u_shadowOpacity: { value: 0 },\n u_shadowBlur: { value: 0 },\n u_shadowOffset: { value: new Vector2(0.01, 0) },\n u_fontTexture: { value: null },\n }\n\n constructor({\n info,\n texture,\n uniforms,\n ...props\n }: {\n info: BMFontInfo;\n texture: Texture;\n } & ShaderMaterialParameters) {\n this.info = info;\n this.uniforms.u_fontTexture.value = texture;\n this.material = new ShaderMaterial(Object.assign({\n vertexShader: vert_MSDF,\n fragmentShader: frag_MSDF,\n transparent: true,\n depthWrite: false,\n blending: NormalBlending,\n uniforms: {\n ...this.uniforms,\n ...uniforms,\n }\n }, props))\n }\n\n build(layout: BMFontTextLayout, setting: LayoutSetting) {\n const info = this.info;\n const texWidth = info.common.scaleW;\n const texHeight = info.common.scaleH;\n const glyphs = layout.glyphs.filter(glyph => glyph.data.width * glyph.data.height > 0);\n\n const flipY = setting.flipY !== false;\n const position = new Float32Array(glyphs.length * 8);\n const uv = new Float32Array(glyphs.length * 8);\n const indice = new Uint16Array(glyphs.length * 6);\n\n for (let k = 0, i0 = 0, i1 = 0, i2 = 0, i = 0; i < glyphs.length; i++, k += 4) {\n const glyph = glyphs[i];\n const bitmap = glyph.data;\n\n // bottom left position\n let x = glyph.position[0] + bitmap.xoffset\n let y = glyph.position[1] + bitmap.yoffset\n\n // quad size\n let w = bitmap.width\n let h = bitmap.height\n\n // BL\n position[i0++] = x\n position[i0++] = y\n // BR\n position[i0++] = x + w\n position[i0++] = y\n // TR\n position[i0++] = x + w\n position[i0++] = y + h\n // TL\n position[i0++] = x\n position[i0++] = y + h\n\n let bw = (bitmap.x + bitmap.width)\n let bh = (bitmap.y + bitmap.height)\n\n // top left position\n let u0 = bitmap.x / texWidth\n let v0 = bitmap.y / texHeight\n let u1 = bw / texWidth\n let v1 = bh / texHeight\n\n if (flipY) {\n v0 = 1 - v0;\n v1 = 1 - v1;\n }\n\n // BL\n uv[i1++] = u0\n uv[i1++] = v0\n // BR\n uv[i1++] = u1\n uv[i1++] = v0\n // TR\n uv[i1++] = u1\n uv[i1++] = v1\n // TL\n uv[i1++] = u0\n uv[i1++] = v1\n\n indice[i2++] = k + 0;\n indice[i2++] = k + 1;\n indice[i2++] = k + 2;\n indice[i2++] = k + 0;\n indice[i2++] = k + 2;\n indice[i2++] = k + 3;\n }\n\n\n return { position, uv, indice };\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","manager","EXRLoader","load","url","path","resourcePath","texSettings","onLoad","onProgress","onError","loader","_loader","EXRLoaderPrimitive","loadingManager","setPath","setResourcePath","tex","assign","extension","FBXLoader","buffer","FBXLoaderPrimitive","parse","GLTFLoader","GLTFLoaderPrimitive","setMeshoptDecoder","MeshoptDecoder","setDRACOLoader","dracoLoader","setKTX2Loader","ktx2Loader","cb","gltf","meshes","Map","materials","scene","traverse","mesh","isMesh","material","set","arr","Array","isArray","m","HDRLoader","HDRLoaderPrimitive","JSONLoader","FileLoader","file","JSON","TextureLoader","TextureLoaderPrimitive","loadCallback","colorSpace","SRGBColorSpace","SVGLoader","SVGLoaderPrimitive","Primitive","KTX2Loader","Box","Mesh","BoxGeometry","Sphere","SphereGeometry","Plane","PlaneGeometry","clamp","MathUtils","min","max","exp","Math","kNegligibleResidual","kLogNegligibleResidual","exponentialDamp","current","dampTime","deltaTime","k","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","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","values","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","ObjectInstance","instanceId","_instanceCount","uuid","generateUUID","type","Component","enabled","_enabled","componentScheduler","enableComponent","_onPreDestroy","unscheduleAll","remove","node","onDestroy","flags","onLoadCalled","schedule","interval","repeat","scheduler","unshedule","destroy","destroyed","destroyImmediate","isComponent","order","Reflector","texture","_renderTarget","textureMatrix","_textureMatrix","dispose","resolution","clipBias","multisample","layerMask","normal","mipmap","Object3D","Matrix4","reflectorPlane","reflectorNormal","reflectorWorldPosition","cameraWorldPosition","rotationMatrix","lookAtPosition","clipPlane","Vector4","view","q","virtualCamera","PerspectiveCamera","WebGLRenderTarget","HalfFloatType","minFilter","LinearMipMapLinearFilter","LinearFilter","generateMipmaps","lastUpdate","renderer","camera","viewer","setFromMatrixPosition","matrixWorld","extractRotation","matrix","applyMatrix4","subVectors","dot","reflect","negate","layers","mask","position","up","lookAt","far","updateMatrixWorld","projectionMatrix","multiply","matrixWorldInverse","setFromNormalAndCoplanarPoint","constant","sign","elements","visible","currentRenderTarget","getRenderTarget","currentActiveCubeFace","getActiveCubeFace","currentActiveMipmapLevel","getActiveMipmapLevel","currentXrEnabled","xr","currentShadowAutoUpdate","shadowMap","autoUpdate","clearAlpha","getClearAlpha","setClearAlpha","setRenderTarget","buffers","depth","setMask","autoClear","render","viewport","Animation","mixer","_mixer","action","_action","actions","_actions","progress","_progress","playing","duration","getClip","setTime","AnimationMixer","animations","map","clipAction","stopAllAction","update","dt","time","play","animName","find","clampWhenFinished","zeroSlopeAtStart","zeroSlopeAtEnd","setLoop","repetitions","setDuration","stop","PropertyManager","_hasProperties","_propertyMap","_classMap","_getProperties","initProps","props","_getMergedProperties","merged","mergeProps","_getClassProperties","getPrototypeOf","clsName","property","propertyKey","options","normalized","applyProps","prop","des","writable","value","child","parts","split","children","part","getChildren","filter","group","queue","objects","object","shift","ContactShadows","scale","frames","width","height","intensity","blur","near","smooth","color","Color","renderOrder","planeGeometry","shadowCamera","OrthographicCamera","renderTarget","renderTargetBlur","depthMaterial","MeshDepthMaterial","depthTest","depthWrite","onBeforeCompile","shader","uniforms","fragmentShader","replace","horizontalBlurMaterial","ShaderMaterial","HorizontalBlurShader","verticalBlurMaterial","VerticalBlurShader","blurPlane","Group","rotation","Euler","blurShadows","gl","tDiffuse","count","initialBackground","initialOverrideMaterial","initialClearAlpha","background","overrideMaterial","getVersion","parseInt","REVISION","version","DiscardMaterial","vertexShader","shaderMaterial","THREE","parameters","key","Uniform","UniformsUtils","clone","setValues","AccumulativeShadows","temporal","limit","blend","opacity","alphaTest","colorBlend","toneMapped","randomLights","plm","ProgressiveLightMap","gPlane","parent","receiveShadow","SoftShadowMaterial","transparent","progressiveLightMap2","configure","gLights","light","prepare","finish","reset","start","RandomizedLight","castShadow","bias","mapSize","size","radius","ambient","DirectionalLight","shadow","random","randFloatSpread","lambda","phi","cos","isLight","isGeometry","geometry","getClearColor","clearColor","setClearColor","progressiveLightMap1","lights","discardMat","blendWindow","averagingWindow","targetMat","activeMap","buffer1Active","inactiveMap","oldBg","previousShadowMap","res","textureParams","magFilter","NearestFilter","MeshLambertMaterial","fog","slice","bodyStart","indexOf","Center","disableX","disableY","disableZ","left","right","top","bottom","front","back","onCentered","precise","cacheKey","inner","outer","identity","box3","Box3","setFromObject","center","sphere","getCenter","getBoundingSphere","vAlign","hAlign","dAlign","boundingBox","boundingSphere","verticalAlignment","horizontalAlignment","depthAlignment","Caller","pause","_pause","_target","_callback","lived","_repeat","_repeatForever","_elapsed","_interval","trigger","_lastTime","call","Callers","callers","_callers","Scheduler","resume","_callersArray","callersArray","j","Invoker","_targets","sort","invoke","InvokerOneCall","ComponentScheduler","tick","tickInvoker","startInvoker","updateInvoker","lastUpdateInvoker","renderInvoker","resize","resizeInvoker","comp","onEnableCalled","onEnable","onDisable","DependentMode","dependencies","componentOrComponents","components","ComponentManager","_infoMap","single","started","_started","manual","_manual","_viewer","_scheduler","_componentScheduler","_componentsMap","delete","active","_activeComponent","root","func","proto","_findComponent","component","_addDendencies","Error","getInChildren","getAllInChildren","dep","Renderer","setSize","RenderTexture","_fbo","_scene","_camera","RT","PressState","NONE","SELECTED","IN","Pressability","connect","connector","_connectors","disconnect","pointerDown","pointer","_raycaster","setFromCamera","conn","intersects","intersectObject","pointerUp","pointerMove","Raycaster","PIXEL_STEP","LINE_HEIGHT","PAGE_HEIGHT","normalizeWheel","event","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","DeviceInput","_pointer","pointerPixel","_pointerPixel","_pointerDown","pointerButton","_pointerButton","pointerMoving","_pointerMoving","prePointer","_prePointer","prePointerPixel","_prePointerPixel","preTouches","_preTouches","mouseWheel","_mouseWheel","touchStart","_touchStart","touchMoving","_touchMoving","touchCount","_touchCount","touches","_touches","keys","_keys","pressability","_pressability","dom","_addEventListener","e","preventDefault","_onPointerDown","passive","_onPointerUp","_onPointerMove","_onMouseWheel","_onTouchStart","_onTouchEnd","_onTouchMove","window","_onKeyDown","_onKeyPress","_onKeyUp","_onResize","removeEventListener","id","CLICK","POINTER_DOWN","POINTER_UP","POINTER_OVER","POINTER_OUT","addEventListener","rotate","remapPointer","isDocument","Document","innerWidth","offsetWidth","rootRotated","button","buttons","clientX","clientY","offsetX","offsetY","pageX","pageY","screenX","screenY","movementX","movementY","remapTouch","from","identifier","_computePointer","innerHeight","offsetHeight","ex","POINTER_MOVE","_normalizeWheel","MOUSE_WHEEL","curr","touch","TOUCH_START","TOUCH_END","TOUCH_MOVE","code","KEYDOWN","KEYPRESS","KEYUP","option","source","isSSR","DetectUA","match","pattern","userAgent","isMobile","isTablet","test","iOSDevice","isAndroidDevice","isDesktop","isMacOS","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","degToRad","tan","PI2","ESP","FreelookVirtualCamera","_up","_targetUp","_lookAt","_targetLookAt","offset","_offset","_targetOffset","_spherical","_targetRadius","radiusMin","radiusMax","theta","_targetTheta","thetaMin","thetaMax","_targetPhi","phiMin","phiMax","fov","_fov","_targetFov","_near","_targetNear","_far","_targetFar","_button","_touchID","goto","smoothing","rotateSmoothing","t0","t1","euclideanModulo","_tempSmoothing","_tempRotateSmoothing","_lerpCamera","sync","_syncCamera","_preLoc0","_","loc0","_onDragging","_setTargetSpringLength","_calculateDistanceScale","_preLoc1","loc1","_onMultiTouch","_onSingleTouch","forbitAll","forbidZ","_onDistanceScale","_calculateRotate","rotateSpeed","forbidX","forbidY","_calculatePanDelta","_onCalculatePan","forbidPanX","forbidPanY","_calculateLookAtOffset","panDelta","xAxis","yAxis","updateMatrix","setFromMatrixColumn","forbitPanOffsetY","normalize","_setTargetLookAt","lookAtOffset","_setTargetRotation","rotateDelta","_setTargetPosition","panOffset","_targetPosition","Spherical","_finalLookAt","panSpeed","isCamera","preLoc0","preLoc1","distanceTo","preCenter","setFromSpherical","quaternion","updateProjectionMatrix","zoom","preLoc","quat","Quaternion","dir","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","roughnessScaleBias","normalScaleBias","aoMapIntensity","lightMapIntensity","reflectMap","reflectIntensity","reflector","UV_AO","UV_LIGHTMAP","UV_ROUGHNESS","UV_NORMAL","dfgLUT","vert_Shadow","frag_Shadow","ShadowMaterial","shadows","shadowsMap","shadowsMatrix","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","Task","excute","TaskManager","isComplete","_taskIndex","_tasks","task","_onStartCalled","onStart","onComplete","Orientation","ResizeMode","ResourceManager","str","pop","dirname","lastIndexOf","substring","basename","ext","_splitTextureSettings","settings","_texSettingKeys","_loaded","_totalCount","_loadingManager","_ktx2Loader","_dracoLoader","_loaders","_pendingAssets","_readyWaiters","_flushPendingAssets","ready","total","Promise","resolve","getLoader","addLoader","reject","fullUrl","_URL","assetProps","_resourceOptions","_load","then","catch","_resources","assets","asset","sel","_checkReadyWaiters","err","waiter","dracoPath","basisPath","URL","DRACOLoader","setDecoderPath","setTranscoderPath","detectSupport","STLLoader","STLLoaderPrimitive","vert_Fullscreen","frag_Copy","frag_Clear","vert_Blur9Varying","frag_Blur9Varying","frag_Blur9","EMPTY","FRAME_TIME_EPSILON","DefaultLoaders","Viewer","_root","_time","canvas","_canvas","_gl","dpr","_dpr","_width","_height","_viewport","_rootRotated","input","_input","mount","_mount","targetFrameRate","_targetFrameRate","_lastFrameTime","_instanceId","loading","_loading","resources","tasks","_components","_renderer","_freeze","animate","loop","_active","frame","_fixedFrameTime","setAnimationLoop","_orientation","LANDSCAPE","PORTRAIT","tmp","style","transform","transformOrigin","margin","_windowSize","userData","aspect","factor","distance","getWorldPosition","worldPos","use","ins","isScene","_context","isObject3D","children_","removeFromParent","createRenderTarget","nearest","floatType","msaa","wrapS","ClampToEdgeWrapping","wrapT","UnsignedByteType","anisotropy","LinearSRGBColorSpace","depthBuffer","stencilBuffer","createCubeRenderTarget","WebGLCubeRenderTarget","createDataTexture","data","DataTexture","RGBAFormat","FloatType","UVMapping","blit","face","Blit","src","dest","Copy","alpha","ClearColor","stash","Stash","blurLevel","shadingScale","inputBuffer","tempBuffer","outputBuffer","fixedOutput","Blur","Render","compile","isMaterial","CompileMaterial","CompileObject3D","isTexture","CompileTexture","fullscreenMesh","initTexture","ceil","c","capabilities","maxVaryings","blur9VaryingMaterial","blur9Material","u_texture","u_delta","fullscreenCamera","copyMaterial","CreateFullscreenTriangle","BufferGeometry","setAttribute","Float32BufferAttribute","sortObjects","AUTO","orthographic","fixedFrameTime","toneMapping","LinearToneMapping","toneMappingExposure","maxDPR","orientation","webglOpts","instanceCount","el","document","getElementById","Scene","WebGLRenderer","setPixelRatio","autoReset","outputColorSpace","PCFSoftShadowMap","getContext","resourcesManual","tasksManual","componentsManual","LoadingManager","loaders","clearMaterial","u_color","MergeRefectPass","_envMapTarget","_sourceTarget","_pmremGenerator","mergeReflect","_copyTexture","envMapIntensity","_mergeReflect","_reflectMap","quality","envMapTarget","_lodMeshes","_getPMREMExtension","pmremGenerator","PMREMGenerator","_fromTextureExtension","_fromTexture","_fromCubeTexture","_cubeMapMaterial","_copyTexMaterial","_copyMesh","_setSize","image","_allocateTargets","targetOut","scissorTest","_clearTexture","sourceTarget","cubeMapMaterial","_blit","_pmremblur","lodIn","lodOut","sigma","_sigmas","poleAxis","_blur","_lodMax","outputSize","_sizeLods","_cubeSize","lodMesh","mipGaussianBlendWeight","sigma2","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","Mode","defaultExtension","DropFile","_onDrogOver","_onDrop","_loadItemList","items","getFilesFromItemList","files","filesMap","dirs","_loadFiles","createFilesMap","setURLModifier","createObjectURL","_loadFile","filename","reader","FileReader","loaded","_onLoad","errCallback","_onError","_extension","result","readAsDataURL","raw","readAsArrayBuffer","dataTransfer","dropEffect","types","onDone","itemsCount","itemsTotal","onEntryHandled","handleEntry","entry","isDirectory","createReader","readEntries","isFile","fullPath","item","kind","webkitGetAsEntry","newline","newlineChar","whitespace","wordwrap","text","opt","MAX_VALUE","end","letterSpacing","measure","monospace","pre","greedy","idxOf","chr","idx","isWhitespace","lines","lineStart","charAt","isNewline","lineEnd","measured","testWidth","newLine","nextStart","glyphs","X_HEIGHTS","M_WIDTHS","CAP_HEIGHTS","TAB_ID","charCodeAt","SPACE_ID","ALIGN_LEFT","ALIGN_CENTER","ALIGN_RIGHT","findChar","array","getGlyphById","font","chars","glyphIdx","getXHeight","getMGlyph","getCapHeight","getKerning","kernings","table","kern","first","second","getAlignType","align","BMFontTextLayout","descender","_descender","ascender","_ascender","xHeight","_xHeight","baseline","_baseline","capHeight","_capHeight","lineHeight","_lineHeight","_glyphs","linesTotal","_linesTotal","setting","tabSize","_font","_computeMetrics","minWidth","maxLineWidth","prev","line","common","base","anchor","_setupSpaceGlyphs","anchorOffset","lineWidth","lastGlyph","glyph","_getGlyph","tx","xadvance","space","tabWidth","_fallbackSpaceGlyph","_fallbackTabGlyph","xoffset","yoffset","curPen","curWidth","nextPen","nextWidth","itemSize","box","positions","computeBox","output","computeSphere","minX","minY","maxX","maxY","BMFontTextGeometry","fontAtlas","layout","indice","uv","build","setIndex","BufferAttribute","computeBoundingSphere","attributes","isNaN","computeBoundingBox","bbox","makeEmpty","Label","_text","_setting","stringify","forceUpdate","vert_MSDF","frag_MSDF","BMFontAtlas","texWidth","scaleW","texHeight","scaleH","flipY","Uint16Array","i0","i1","i2","bitmap","bw","bh","u0","u1","u_opacity","u_weight","u_strokeColor","u_strokeWidth","u_shadowColor","u_shadowOpacity","u_shadowBlur","u_shadowOffset","u_fontTexture","NormalBlending"],"mappings":"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","x_google_ignoreList":[26]}