@xviewer.js/core 1.0.0-alpha.56 → 1.0.0-alpha.57

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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../src/base/EventEmitter.ts","../src/base/Logger.ts","../src/base/mixin.ts","../src/base/getClassInstance.ts","../src/tween/Easing.ts","../src/tween/Interpolation.ts","../src/tween/Now.ts","../src/tween/Group.ts","../src/tween/mainGroup.ts","../src/tween/Sequence.ts","../src/tween/Tween.ts","../src/tween/TweenChain.ts","../src/tween/TweenManager.ts","../src/asset/aLoader.ts","../src/loaders/aEXRLoader.ts","../src/loaders/aFBXLoader.ts","../src/loaders/aGLTFLoader.ts","../src/loaders/aHDRLoader.ts","../src/loaders/aJSONLoader.ts","../src/loaders/aTextureLoader.ts","../../../node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs","../src/PropertyManager.ts","../src/cinestation/CinestationBlendDefinition.ts","../src/ObjectInstance.ts","../src/Component.ts","../src/cinestation/CinestationBrain.ts","../src/cinestation/VirtualCamera.ts","../src/Pressability.ts","../src/DeviceInput.ts","../src/DetectUA.ts","../src/SystemInfo.ts","../src/math/Damp.ts","../src/math/Constant.ts","../src/math/Interpolation.ts","../src/math/AnimationCurve.ts","../src/math/Perlin.ts","../src/cinestation/FreelookVirtualCamera.ts","../src/primitive/Box.ts","../src/primitive/Sphere.ts","../src/primitive/Plane.ts","../src/components/Reflector.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/Plugin.ts","../src/plugins/DebugPlugin.ts","../src/passes/cubeuv/utils.ts","../src/Scheduler.ts","../src/ComponentScheduler.ts","../src/ComponentManager.ts","../src/TaskManager.ts","../src/WebGL.ts","../src/enums/Orientation.ts","../src/asset/ResourceManager.ts","../src/Utils.ts","../src/PluginManager.ts","../src/Viewer.ts","../src/passes/cubeuv/MergeReflectPass.ts","../src/passes/mipGaussianBlendWeight.ts","../src/passes/cubeuv/MergeBlurPass.ts","../src/plugins/EnvironmentPlugin.ts","../src/plugins/BoxProjectionPlugin.ts","../src/plugins/PerformanceMonitorPlugin.ts"],"sourcesContent":["interface EventHandler {\n name: string;\n callback: (...args: any[]) => any;\n target?: Object;\n once?: boolean;\n}\n\ninterface Listener {\n name: string, callback: (...args: any[]) => any;\n}\n\nexport class EventEmitter {\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: string) {\n return !!this._events[name];\n }\n\n on(name: string, 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: string, 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: string, callback: (...args: any[]) => any, container: Object & { _listeners?: Listener[] }) {\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[] }) {\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: string, ...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}","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})","/**\n *\n */\nexport type InterpolationFunction = (v: number[], k: number) => number\n\n/**\n *\n */\nconst Interpolation = {\n\tLinear: function (v: number[], k: number): number {\n\t\tconst m = v.length - 1\n\t\tconst f = m * k\n\t\tconst i = Math.floor(f)\n\t\tconst fn = Interpolation.Utils.Linear\n\n\t\tif (k < 0) {\n\t\t\treturn fn(v[0], v[1], f)\n\t\t}\n\n\t\tif (k > 1) {\n\t\t\treturn fn(v[m], v[m - 1], m - f)\n\t\t}\n\n\t\treturn fn(v[i], v[i + 1 > m ? m : i + 1], f - i)\n\t},\n\n\tBezier: function (v: number[], k: number): number {\n\t\tlet b = 0\n\t\tconst n = v.length - 1\n\t\tconst pw = Math.pow\n\t\tconst bn = Interpolation.Utils.Bernstein\n\n\t\tfor (let i = 0; i <= n; i++) {\n\t\t\tb += pw(1 - k, n - i) * pw(k, i) * v[i] * bn(n, i)\n\t\t}\n\n\t\treturn b\n\t},\n\n\tCatmullRom: function (v: number[], k: number): number {\n\t\tconst m = v.length - 1\n\t\tlet f = m * k\n\t\tlet i = Math.floor(f)\n\t\tconst fn = Interpolation.Utils.CatmullRom\n\n\t\tif (v[0] === v[m]) {\n\t\t\tif (k < 0) {\n\t\t\t\ti = Math.floor((f = m * (1 + k)))\n\t\t\t}\n\n\t\t\treturn fn(v[(i - 1 + m) % m], v[i], v[(i + 1) % m], v[(i + 2) % m], f - i)\n\t\t} else {\n\t\t\tif (k < 0) {\n\t\t\t\treturn v[0] - (fn(v[0], v[0], v[1], v[1], -f) - v[0])\n\t\t\t}\n\n\t\t\tif (k > 1) {\n\t\t\t\treturn v[m] - (fn(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m])\n\t\t\t}\n\n\t\t\treturn fn(v[i ? i - 1 : 0], v[i], v[m < i + 1 ? m : i + 1], v[m < i + 2 ? m : i + 2], f - i)\n\t\t}\n\t},\n\n\tUtils: {\n\t\tLinear: function (p0: number, p1: number, t: number): number {\n\t\t\treturn (p1 - p0) * t + p0\n\t\t},\n\t\tBernstein: function (n: number, i: number): number {\n\t\t\tconst fc = Interpolation.Utils.Factorial\n\n\t\t\treturn fc(n) / fc(i) / fc(n - i)\n\t\t},\n\t\tFactorial: (function () {\n\t\t\tconst a = [1]\n\n\t\t\treturn function (n: number): number {\n\t\t\t\tlet s = 1\n\n\t\t\t\tif (a[n]) {\n\t\t\t\t\treturn a[n]\n\t\t\t\t}\n\n\t\t\t\tfor (let i = n; i > 1; i--) {\n\t\t\t\t\ts *= i\n\t\t\t\t}\n\n\t\t\t\ta[n] = s\n\t\t\t\treturn s\n\t\t\t}\n\t\t})(),\n\n\t\tCatmullRom: function (p0: number, p1: number, p2: number, p3: number, t: number): number {\n\t\t\tconst v0 = (p2 - p0) * 0.5\n\t\t\tconst v1 = (p3 - p1) * 0.5\n\t\t\tconst t2 = t * t\n\t\t\tconst t3 = t * t2\n\n\t\t\treturn (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1\n\t\t},\n\t},\n}\n\nexport { Interpolation }\n","const now = (): number => performance.now() * 0.001\n\nexport { now }\n","import { now } from './Now'\nimport type { Tween, UnknownProps } from './Tween'\n\n/**\n * Controlling groups of tweens\n *\n * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components.\n * In these cases, you may want to create your own smaller groups of tween\n */\nexport class Group {\n\tprivate _tweens: {\n\t\t[key: string]: Tween<UnknownProps>\n\t} = {}\n\n\tprivate _tweensAddedDuringUpdate: {\n\t\t[key: string]: Tween<UnknownProps>\n\t} = {}\n\n\tgetAll(): Array<Tween<UnknownProps>> {\n\t\treturn Object.keys(this._tweens).map(tweenId => {\n\t\t\treturn this._tweens[tweenId]\n\t\t})\n\t}\n\n\tremoveAll(): void {\n\t\tthis._tweens = {}\n\t}\n\n\tadd(tween: Tween<UnknownProps>): void {\n\t\tthis._tweens[tween.getId()] = tween\n\t\tthis._tweensAddedDuringUpdate[tween.getId()] = tween\n\t}\n\n\tremove(tween: Tween<UnknownProps>): void {\n\t\tdelete this._tweens[tween.getId()]\n\t\tdelete this._tweensAddedDuringUpdate[tween.getId()]\n\t}\n\n\tupdate(time: number = now(), preserve = false): boolean {\n\t\tlet tweenIds = Object.keys(this._tweens)\n\n\t\tif (tweenIds.length === 0) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Tweens are updated in \"batches\". If you add a new tween during an\n\t\t// update, then the new tween will be updated in the next batch.\n\t\t// If you remove a tween during an update, it may or may not be updated.\n\t\t// However, if the removed tween was added during the current batch,\n\t\t// then it will not be updated.\n\t\twhile (tweenIds.length > 0) {\n\t\t\tthis._tweensAddedDuringUpdate = {}\n\n\t\t\tfor (let i = 0; i < tweenIds.length; i++) {\n\t\t\t\tconst tween = this._tweens[tweenIds[i]]\n\t\t\t\tconst autoStart = !preserve\n\n\t\t\t\tif (tween && tween.update(time, autoStart) === false && !preserve) {\n\t\t\t\t\tdelete this._tweens[tweenIds[i]]\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttweenIds = Object.keys(this._tweensAddedDuringUpdate)\n\t\t}\n\n\t\treturn true\n\t}\n}\n","import { Group } from './Group'\n\nexport const mainGroup = new Group()\n","/**\n * Utils\n */\nexport class Sequence {\n\tprivate static _nextId = 0\n\n\tstatic nextId(): number {\n\t\treturn Sequence._nextId++\n\t}\n}\n","/**\n * Tween.js - Licensed under the MIT license\n * https://github.com/tweenjs/tween.js\n * ----------------------------------------------\n *\n * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.\n * Thank you all, you're awesome!\n */\n\nimport { Easing } from './Easing'\nimport { Interpolation } from './Interpolation'\nimport { mainGroup } from './mainGroup'\nimport { Sequence } from './Sequence'\nimport { now } from './Now'\n\nimport type { EasingFunction } from './Easing'\nimport type { InterpolationFunction } from './Interpolation'\nimport type { Group } from './Group'\n\nexport class Tween<T extends UnknownProps> {\n\tprivate _isPaused = false\n\tprivate _pauseStart = 0\n\tprivate _valuesStart: UnknownProps = {}\n\tprivate _valuesEnd: Record<string, number | string> = {}\n\tprivate _valuesStartRepeat: UnknownProps = {}\n\tprivate _duration = 0\n\tprivate _isDynamic = false\n\tprivate _initialRepeat = 0\n\tprivate _repeat = 0\n\tprivate _repeatDelayTime?: number\n\tprivate _yoyo = false\n\tprivate _isPlaying = false\n\tprivate _reversed = false\n\tprivate _delayTime = 0\n\tprivate _startTime = 0\n\tprivate _easingFunction: EasingFunction = Easing.Linear.None\n\tprivate _interpolationFunction: InterpolationFunction = Interpolation.Linear\n\t// eslint-disable-next-line\n\tprivate _chainedTweens: Array<Tween<any>> = []\n\tprivate _onStartCallback?: (object: T) => void\n\tprivate _onStartCallbackFired = false\n\tprivate _onEveryStartCallback?: (object: T) => void\n\tprivate _onEveryStartCallbackFired = false\n\tprivate _onUpdateCallback?: (object: T, elapsed: number) => void\n\tprivate _onRepeatCallback?: (object: T) => void\n\tprivate _onCompleteCallback?: (object: T) => void\n\tprivate _onStopCallback?: (object: T) => void\n\tprivate _onFinishCallback?: (object: T) => void;\n\tprivate _id = Sequence.nextId()\n\tprivate _isChainStopped = false\n\tprivate _propertiesAreSetUp = false\n\tprivate _headTween: Tween<T> = null;\n\tprivate _tailTween: Tween<T> = null;\n\tprivate _headTweenStartFired: boolean = false;\n\n\tconstructor(\n\t\tprivate _object: T,\n\t\tprivate _group: Group | false = mainGroup,\n\t) { }\n\n\tgetId(): number {\n\t\treturn this._id\n\t}\n\n\tisPlaying(): boolean {\n\t\treturn this._isPlaying\n\t}\n\n\tisPaused(): boolean {\n\t\treturn this._isPaused\n\t}\n\n\tgetDuration(): number {\n\t\treturn this._duration\n\t}\n\n\tfrom(properties: UnknownProps) {\n\t\tthis._valuesStart = Object.create(properties);\n\t\treturn this;\n\t};\n\n\tto(target: UnknownProps, duration = 1): this {\n\t\tif (this._isPlaying)\n\t\t\tthrow new Error('Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.')\n\n\t\tthis._valuesEnd = target\n\t\tthis._propertiesAreSetUp = false\n\t\tthis._duration = duration < 0 ? 0 : duration\n\n\t\treturn this\n\t}\n\n\tduration(duration = 1): this {\n\t\tthis._duration = duration < 0 ? 0 : duration\n\t\treturn this\n\t}\n\n\tdynamic(dynamic = false): this {\n\t\tthis._isDynamic = dynamic\n\t\treturn this\n\t}\n\n\tstart(time: number = now(), overrideStartingValues = false): this {\n\t\tif (this._isPlaying) {\n\t\t\treturn this\n\t\t}\n\n\t\t// eslint-disable-next-line\n\t\tthis._group && this._group.add(this as any)\n\n\t\tthis._repeat = this._initialRepeat\n\n\t\tif (this._reversed) {\n\t\t\t// If we were reversed (f.e. using the yoyo feature) then we need to\n\t\t\t// flip the tween direction back to forward.\n\n\t\t\tthis._reversed = false\n\n\t\t\tfor (const property in this._valuesStartRepeat) {\n\t\t\t\tthis._swapEndStartRepeatValues(property)\n\t\t\t\tthis._valuesStart[property] = this._valuesStartRepeat[property]\n\t\t\t}\n\t\t}\n\n\t\tthis._isPlaying = true\n\n\t\tthis._isPaused = false\n\n\t\tthis._onStartCallbackFired = false\n\t\tthis._onEveryStartCallbackFired = false\n\n\t\tthis._isChainStopped = false\n\n\t\tthis._startTime = time\n\t\tthis._startTime += this._delayTime\n\n\t\tif (!this._propertiesAreSetUp || overrideStartingValues) {\n\t\t\tthis._propertiesAreSetUp = true\n\n\t\t\t// If dynamic is not enabled, clone the end values instead of using the passed-in end values.\n\t\t\tif (!this._isDynamic) {\n\t\t\t\tconst tmp: Record<PropertyKey, string | number> = {}\n\t\t\t\tfor (const prop in this._valuesEnd) tmp[prop] = this._valuesEnd[prop]\n\t\t\t\tthis._valuesEnd = tmp\n\t\t\t}\n\n\t\t\tthis._setupProperties(\n\t\t\t\tthis._object,\n\t\t\t\tthis._valuesStart,\n\t\t\t\tthis._valuesEnd,\n\t\t\t\tthis._valuesStartRepeat,\n\t\t\t\toverrideStartingValues,\n\t\t\t)\n\t\t}\n\n\t\treturn this\n\t}\n\n\tstartFromCurrentValues(time?: number): this {\n\t\treturn this.start(time, true)\n\t}\n\n\tprivate _setupProperties(\n\t\t_object: UnknownProps,\n\t\t_valuesStart: UnknownProps,\n\t\t_valuesEnd: UnknownProps,\n\t\t_valuesStartRepeat: UnknownProps,\n\t\toverrideStartingValues: boolean,\n\t): void {\n\t\tfor (const property in _valuesEnd) {\n\t\t\tconst startValue = _object[property] as number | Record<string, unknown>\n\t\t\tconst startValueIsArray = Array.isArray(startValue)\n\t\t\tconst propType = startValueIsArray ? 'array' : typeof startValue\n\t\t\tlet isInterpolationList = !startValueIsArray && Array.isArray(_valuesEnd[property])\n\n\t\t\t// If `to()` specifies a property that doesn't exist in the source object,\n\t\t\t// we should not set that property in the object\n\t\t\tif (propType === 'undefined' || propType === 'function') {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Check if an Array was provided as property value\n\t\t\tif (isInterpolationList) {\n\t\t\t\tconst endValues = _valuesEnd[property] as Array<number | string>\n\n\t\t\t\tif (endValues.length === 0) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Handle an array of relative values.\n\t\t\t\t// Creates a local copy of the Array with the start value at the front\n\t\t\t\tconst temp = [startValue as number]\n\t\t\t\tfor (let i = 0, l = endValues.length; i < l; i += 1) {\n\t\t\t\t\tconst value = this._handleRelativeValue(startValue as number, endValues[i])\n\t\t\t\t\tif (isNaN(value)) {\n\t\t\t\t\t\tisInterpolationList = false\n\t\t\t\t\t\tconsole.warn('Found invalid interpolation list. Skipping.')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\ttemp.push(value)\n\t\t\t\t}\n\n\t\t\t\tif (isInterpolationList) {\n\t\t\t\t\t// if (_valuesStart[property] === undefined) { // handle end values only the first time. NOT NEEDED? setupProperties is now guarded by _propertiesAreSetUp.\n\t\t\t\t\t_valuesEnd[property] = temp\n\t\t\t\t\t// }\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// handle the deepness of the values\n\t\t\tif ((propType === 'object' || startValueIsArray) && startValue && !isInterpolationList) {\n\t\t\t\t_valuesStart[property] = startValueIsArray ? [] : {}\n\t\t\t\tconst nestedObject = startValue as Record<string, unknown>\n\n\t\t\t\tfor (const prop in nestedObject) {\n\t\t\t\t\t_valuesStart[property][prop] = nestedObject[prop]\n\t\t\t\t}\n\n\t\t\t\t// TODO? repeat nested values? And yoyo? And array values?\n\t\t\t\t_valuesStartRepeat[property] = startValueIsArray ? [] : {}\n\n\t\t\t\tlet endValues = _valuesEnd[property]\n\n\t\t\t\t// If dynamic is not enabled, clone the end values instead of using the passed-in end values.\n\t\t\t\tif (!this._isDynamic) {\n\t\t\t\t\tconst tmp: Record<PropertyKey, unknown> = {}\n\t\t\t\t\tfor (const prop in endValues) tmp[prop] = endValues[prop]\n\t\t\t\t\t_valuesEnd[property] = endValues = tmp\n\t\t\t\t}\n\n\t\t\t\tthis._setupProperties(\n\t\t\t\t\tnestedObject,\n\t\t\t\t\t_valuesStart[property],\n\t\t\t\t\tendValues,\n\t\t\t\t\t_valuesStartRepeat[property],\n\t\t\t\t\toverrideStartingValues,\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\t// Save the starting value, but only once unless override is requested.\n\t\t\t\tif (typeof _valuesStart[property] === 'undefined' || overrideStartingValues) {\n\t\t\t\t\t_valuesStart[property] = startValue\n\t\t\t\t}\n\n\t\t\t\tif (!startValueIsArray) {\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t// @ts-ignore FIXME?\n\t\t\t\t\t_valuesStart[property] *= 1.0 // Ensures we're using numbers, not strings\n\t\t\t\t}\n\n\t\t\t\tif (isInterpolationList) {\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t// @ts-ignore FIXME?\n\t\t\t\t\t_valuesStartRepeat[property] = _valuesEnd[property].slice().reverse()\n\t\t\t\t} else {\n\t\t\t\t\t_valuesStartRepeat[property] = _valuesStart[property] || 0\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tstop(): this {\n\t\tif (!this._isChainStopped) {\n\t\t\tthis._isChainStopped = true\n\t\t\tthis.stopChainedTweens()\n\t\t}\n\n\t\tif (!this._isPlaying) {\n\t\t\treturn this\n\t\t}\n\n\t\t// eslint-disable-next-line\n\t\tthis._group && this._group.remove(this as any)\n\n\t\tthis._isPlaying = false\n\n\t\tthis._isPaused = false\n\n\t\tif (this._onStopCallback) {\n\t\t\tthis._onStopCallback(this._object)\n\t\t}\n\n\t\treturn this\n\t}\n\n\tend(): this {\n\t\tthis._goToEnd = true\n\t\tthis.update(Infinity)\n\t\treturn this\n\t}\n\n\tpause(time: number = now()): this {\n\t\tif (this._isPaused || !this._isPlaying) {\n\t\t\treturn this\n\t\t}\n\n\t\tthis._isPaused = true\n\n\t\tthis._pauseStart = time\n\n\t\t// eslint-disable-next-line\n\t\tthis._group && this._group.remove(this as any)\n\n\t\treturn this\n\t}\n\n\tresume(time: number = now()): this {\n\t\tif (!this._isPaused || !this._isPlaying) {\n\t\t\treturn this\n\t\t}\n\n\t\tthis._isPaused = false\n\n\t\tthis._startTime += time - this._pauseStart\n\n\t\tthis._pauseStart = 0\n\n\t\t// eslint-disable-next-line\n\t\tthis._group && this._group.add(this as any)\n\n\t\treturn this\n\t}\n\n\tstopChainedTweens(): this {\n\t\tfor (let i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\n\t\t\tthis._chainedTweens[i].stop()\n\t\t}\n\t\treturn this\n\t}\n\n\tgroup(group = mainGroup): this {\n\t\tthis._group = group\n\t\treturn this\n\t}\n\n\tcall(callback: (object: T) => void): this {\n\t\tthis._onFinishCallback = callback;\n\t\treturn this;\n\t}\n\n\tdelay(amount = 0): this {\n\t\tthis._delayTime = amount\n\t\treturn this\n\t}\n\n\tunion(headTween: Tween<T>, tailTween: Tween<T>): this {\n\t\tthis._headTween = headTween;\n\t\tthis._tailTween = tailTween.chain(this);\n\t\treturn this;\n\t}\n\n\trepeat(times = 0): this {\n\t\tthis._initialRepeat = times\n\t\tthis._repeat = times\n\t\treturn this\n\t}\n\n\trepeatDelay(amount?: number): this {\n\t\tthis._repeatDelayTime = amount\n\t\treturn this\n\t}\n\n\tyoyo(yoyo = false): this {\n\t\tthis._yoyo = yoyo\n\t\treturn this\n\t}\n\n\teasing(easingFunction: EasingFunction = Easing.Linear.None): this {\n\t\tthis._easingFunction = easingFunction\n\t\treturn this\n\t}\n\n\tinterpolation(interpolationFunction: InterpolationFunction = Interpolation.Linear): this {\n\t\tthis._interpolationFunction = interpolationFunction\n\t\treturn this\n\t}\n\n\t// eslint-disable-next-line\n\tchain(...tweens: Array<Tween<any>>): this {\n\t\tthis._chainedTweens = tweens\n\t\treturn this\n\t}\n\n\tunchain(...tweens: Array<Tween<any>>): this {\n\t\ttweens.forEach(tween => {\n\t\t\tlet index = this._chainedTweens.findIndex(v => v === tween);\n\t\t\tif (index > -1) this._chainedTweens.splice(index, 1);\n\t\t})\n\t\treturn this;\n\t}\n\n\tonStart(callback?: (object: T) => void): this {\n\t\tthis._onStartCallback = callback\n\t\treturn this\n\t}\n\n\tonEveryStart(callback?: (object: T) => void): this {\n\t\tthis._onEveryStartCallback = callback\n\t\treturn this\n\t}\n\n\tonUpdate(callback?: (object: T, elapsed: number) => void): this {\n\t\tthis._onUpdateCallback = callback\n\t\treturn this\n\t}\n\n\tonRepeat(callback?: (object: T) => void): this {\n\t\tthis._onRepeatCallback = callback\n\t\treturn this\n\t}\n\n\tonComplete(callback?: (object: T) => void): this {\n\t\tthis._onCompleteCallback = callback\n\t\treturn this\n\t}\n\n\tonStop(callback?: (object: T) => void): this {\n\t\tthis._onStopCallback = callback\n\t\treturn this\n\t}\n\n\tprivate _goToEnd = false\n\n\t/**\n\t * @returns true if the tween is still playing after the update, false\n\t * otherwise (calling update on a paused tween still returns true because\n\t * it is still playing, just paused).\n\t */\n\tupdate(time = now(), autoStart = true): boolean {\n\t\tif (this._isPaused) return true\n\n\t\tconst endTime = this._startTime + this._duration\n\n\t\tif (!this._goToEnd && !this._isPlaying) {\n\t\t\tif (time > endTime) return false\n\t\t\tif (autoStart) this.start(time, true)\n\t\t}\n\n\t\tthis._goToEnd = false\n\n\t\tif (time < this._startTime) {\n\t\t\treturn true\n\t\t}\n\n\t\tif (this._onStartCallbackFired === false) {\n\t\t\tif (this._onStartCallback) {\n\t\t\t\tthis._onStartCallback(this._object)\n\t\t\t}\n\n\t\t\tthis._onStartCallbackFired = true\n\t\t}\n\n\t\tif (this._onEveryStartCallbackFired === false) {\n\t\t\tif (this._onEveryStartCallback) {\n\t\t\t\tthis._onEveryStartCallback(this._object)\n\t\t\t}\n\n\t\t\tthis._onEveryStartCallbackFired = true\n\t\t}\n\n\t\tconst elapsedTime = time - this._startTime\n\t\tconst durationAndDelay = this._duration + (this._repeatDelayTime ?? this._delayTime)\n\t\tconst totalTime = this._duration + this._repeat * durationAndDelay\n\n\t\tconst elapsed = this._calculateElapsedPortion(elapsedTime, durationAndDelay, totalTime)\n\t\tconst value = this._easingFunction(elapsed)\n\n\t\tif (elapsed === 1) {\n\t\t\tif (this._onFinishCallback) {\n\t\t\t\tthis._onFinishCallback(this._object);\n\t\t\t}\n\t\t\tif (this._headTween) {\n\t\t\t\tif (this._headTweenStartFired === false) {\n\t\t\t\t\tthis._headTweenStartFired = true;\n\t\t\t\t\tthis._headTween.start(this._startTime + this._duration);\n\t\t\t\t\tthis._isPlaying = false;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst status = this._calculateCompletionStatus(elapsedTime, durationAndDelay)\n\n\t\tif (status === 'repeat') {\n\t\t\t// the current update is happening after the instant the tween repeated\n\t\t\tthis._processRepetition(elapsedTime, durationAndDelay)\n\t\t}\n\n\t\tthis._updateProperties(this._object, this._valuesStart, this._valuesEnd, value)\n\n\t\tif (status === 'about-to-repeat') {\n\t\t\t// the current update is happening at the exact instant the tween is going to repeat\n\t\t\t// the values should match the end of the tween, not the beginning,\n\t\t\t// that's why _processRepetition happens after _updateProperties\n\t\t\tthis._processRepetition(elapsedTime, durationAndDelay)\n\t\t}\n\n\t\tif (this._onUpdateCallback) {\n\t\t\tthis._onUpdateCallback(this._object, elapsed)\n\t\t}\n\n\t\tif (status === 'repeat' || status === 'about-to-repeat') {\n\t\t\tif (this._onRepeatCallback) {\n\t\t\t\tthis._onRepeatCallback(this._object)\n\t\t\t}\n\n\t\t\tif (this._headTween) {\n\t\t\t\tthis._headTweenStartFired = false;\n\t\t\t\tthis._initialRepeat = this._repeat;\n\t\t\t}\n\n\t\t\tthis._onEveryStartCallbackFired = false\n\t\t} else if (status === 'completed') {\n\t\t\tthis._isPlaying = false\n\n\t\t\tif (this._tailTween) {\n\t\t\t\tthis._tailTween.unchain(this);\n\t\t\t}\n\n\t\t\tif (this._onCompleteCallback) {\n\t\t\t\tthis._onCompleteCallback(this._object)\n\t\t\t}\n\n\t\t\tfor (let i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\n\t\t\t\t// Make the chained tweens start exactly at the time they should,\n\t\t\t\t// even if the `update()` method was called way past the duration of the tween\n\t\t\t\tthis._chainedTweens[i].start(this._startTime + this._duration, false)\n\t\t\t}\n\t\t}\n\t\treturn status !== 'completed'\n\t}\n\n\tprivate _calculateElapsedPortion(elapsedTime: number, durationAndDelay: number, totalTime: number) {\n\t\tif (this._duration === 0 || elapsedTime > totalTime) {\n\t\t\treturn 1\n\t\t}\n\n\t\tconst timeIntoCurrentRepeat = elapsedTime % durationAndDelay\n\n\t\tconst portion = Math.min(timeIntoCurrentRepeat / this._duration, 1)\n\t\tif (portion === 0 && elapsedTime !== 0 && elapsedTime % this._duration === 0) {\n\t\t\treturn 1\n\t\t}\n\t\treturn portion\n\t}\n\n\tprivate _calculateCompletionStatus(elapsedTime: number, durationAndDelay: number) {\n\t\tif (this._duration !== 0 && elapsedTime < this._duration) {\n\t\t\treturn 'playing'\n\t\t}\n\n\t\tif (this._repeat <= 0) {\n\t\t\treturn 'completed'\n\t\t}\n\n\t\tif (elapsedTime === this._duration) {\n\t\t\treturn 'about-to-repeat'\n\t\t}\n\n\t\treturn 'repeat'\n\t}\n\n\tprivate _processRepetition(elapsedTime: number, durationAndDelay: number) {\n\t\tconst completeCount = Math.min(\n\t\t\tdurationAndDelay > 0 ? Math.trunc((elapsedTime - this._duration) / durationAndDelay) + 1 : 1,\n\t\t\tthis._repeat\n\t\t)\n\t\tif (isFinite(this._repeat)) {\n\t\t\tthis._repeat -= completeCount\n\t\t}\n\n\t\t// Reassign starting values, restart by making startTime = now\n\t\tfor (const property in this._valuesStartRepeat) {\n\t\t\tconst valueEnd = this._valuesEnd[property]\n\t\t\tif (!this._yoyo && typeof valueEnd === 'string') {\n\t\t\t\tthis._valuesStartRepeat[property] = this._valuesStartRepeat[property] + parseFloat(valueEnd)\n\t\t\t}\n\n\t\t\tif (this._yoyo) {\n\t\t\t\tthis._swapEndStartRepeatValues(property)\n\t\t\t}\n\n\t\t\tthis._valuesStart[property] = this._valuesStartRepeat[property]\n\t\t}\n\n\t\tif (this._yoyo) {\n\t\t\tthis._reversed = !this._reversed\n\t\t}\n\n\t\tthis._startTime += durationAndDelay * completeCount\n\t}\n\n\tprivate _updateProperties(\n\t\t_object: UnknownProps,\n\t\t_valuesStart: UnknownProps,\n\t\t_valuesEnd: UnknownProps,\n\t\tvalue: number,\n\t): void {\n\t\tfor (const property in _valuesEnd) {\n\t\t\t// Don't update properties that do not exist in the source object\n\t\t\tif (_valuesStart[property] === undefined) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tconst start = _valuesStart[property] || 0\n\t\t\tlet end = _valuesEnd[property]\n\t\t\tconst startIsArray = Array.isArray(_object[property])\n\t\t\tconst endIsArray = Array.isArray(end)\n\t\t\tconst isInterpolationList = !startIsArray && endIsArray\n\n\t\t\tif (isInterpolationList) {\n\t\t\t\t_object[property] = this._interpolationFunction(end as Array<number>, value)\n\t\t\t} else if (typeof end === 'object' && end) {\n\t\t\t\t// eslint-disable-next-line\n\t\t\t\t// @ts-ignore FIXME?\n\t\t\t\tthis._updateProperties(_object[property], start, end, value)\n\t\t\t\tlet des = Object.getOwnPropertyDescriptor(_object, property);\n\t\t\t\tif (des && des.set) {\n\t\t\t\t\t_object[property] = _object[property];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Parses relative end values with start as base (e.g.: +10, -3)\n\t\t\t\tend = this._handleRelativeValue(start as number, end as number | string)\n\n\t\t\t\t// Protect against non numeric properties.\n\t\t\t\tif (typeof end === 'number') {\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t// @ts-ignore FIXME?\n\t\t\t\t\t_object[property] = start + (end - start) * value\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _handleRelativeValue(start: number, end: number | string): number {\n\t\tif (typeof end !== 'string') {\n\t\t\treturn end\n\t\t}\n\n\t\tif (end.charAt(0) === '+' || end.charAt(0) === '-') {\n\t\t\treturn start + parseFloat(end)\n\t\t}\n\n\t\treturn parseFloat(end)\n\t}\n\n\tprivate _swapEndStartRepeatValues(property: string): void {\n\t\tconst tmp = this._valuesStartRepeat[property]\n\t\tconst endValue = this._valuesEnd[property]\n\n\t\tif (typeof endValue === 'string') {\n\t\t\tthis._valuesStartRepeat[property] = this._valuesStartRepeat[property] + parseFloat(endValue)\n\t\t} else {\n\t\t\tthis._valuesStartRepeat[property] = this._valuesEnd[property]\n\t\t}\n\n\t\tthis._valuesEnd[property] = tmp\n\t}\n}\n\nexport type UnknownProps = Record<string, any>","import { Tween } from \"./Tween\";\nimport { Group } from \"./Group\";\n\nexport class TweenChain {\n private _object: Object;\n private _group: Group;\n private _tween: Tween<Object>;\n private _chainedTween: Tween<Object>;\n\n constructor(object: Object, group?: Group) {\n this._object = object;\n this._group = group;\n this._tween = new Tween(object, group);\n }\n\n start() {\n this._tween.start();\n return this;\n }\n\n stop() {\n this._tween.stop();\n return this;\n }\n\n repeat(times: number) {\n this._chainedTween.repeat(times);\n return this;\n }\n\n union() {\n this._chainedTween = this._tween = new Tween(this._object, this._group).union(this._tween, this._chainedTween);\n return this;\n }\n\n call(callback: (object: Object) => void) {\n this._chainTween().call(callback);\n return this;\n }\n\n delay(amount: number) {\n this._chainTween().delay(amount);\n return this;\n }\n\n to(properties: Record<string, any>, duration?: number, props?: {\n from?: Record<string, any>,\n easing?: (amount: number) => number,\n onStart?: (object: Object) => void,\n onStop?: (object: Object) => void,\n onComplete?: (object: Object) => void,\n onUpdate?: (object: Object, elapsed: number) => void,\n onRepeat?: (object: Object) => void\n }) {\n let tween = this._chainTween().to(properties, duration);\n if (props) {\n if (props.from) tween.from(props.from);\n if (props.easing) tween.easing(props.easing);\n if (props.onStart) tween.onStart(props.onStart);\n if (props.onStop) tween.onStop(props.onStop);\n if (props.onComplete) tween.onComplete(props.onComplete);\n if (props.onUpdate) tween.onUpdate(props.onUpdate);\n if (props.onRepeat) tween.onRepeat(props.onRepeat);\n }\n return this;\n }\n\n _chainTween() {\n let tween = this._tween;\n if (this._chainedTween) {\n tween = new Tween(this._object, this._group);\n this._chainedTween.chain(tween);\n }\n this._chainedTween = tween;\n return tween;\n }\n}","import { TweenChain } from \"./TweenChain\";\nimport { Group } from \"./Group\";\n\nexport class TweenManager {\n private _group: Group = new Group();\n\n destroy() {\n this._group.removeAll();\n }\n\n update(time: number) {\n this._group.update(time);\n }\n\n timeline(target: Object) {\n return new TweenChain(target, this._group);\n }\n\n killTweensOf(target: Object) {\n this._group.getAll().forEach((tween: any) => tween._object === target && this._group.remove(tween));\n }\n}","import { Object3D } from \"three\";\nimport { ResourceManager } from \"./ResourceManager\";\nimport { TextureSettings } from \"../TextureSettings\";\n\nexport interface LoadProperties {\n url: string,\n buffer?: string | ArrayBuffer,\n texSettings?: TextureSettings,\n onLoad: (asset: any) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (event: ErrorEvent) => void,\n}\n\nexport abstract class aLoader {\n static _texKeys = [\n \"map\", \"alphaMap\", \"aoMap\", \"bumpMap\", \"displacementMap\", \"emissiveMap\",\n \"envMap\", \"lightMap\", \"metalnessMap\", \"normalMap\", \"roughnessMap\", \"specularMap\", \"alphaMap\"\n ]\n static _setUserData(node: Object3D) {\n const keys = aLoader._texKeys;\n\n const meshes = [];\n const textures = {};\n const materials = {};\n const queue = [node];\n\n while (queue.length !== 0) {\n let object = queue.shift() as any;\n if (object.isMesh) {\n meshes.push(object);\n const mat = object.material;\n if (Array.isArray(mat)) mat.forEach(v => materials[v.uuid] = v)\n else materials[mat.uuid] = mat;\n }\n queue.push(...object.children);\n }\n\n Object.values(materials).forEach(mat => {\n keys.forEach(k => {\n let tex = mat[k];\n if (tex) {\n textures[tex.uuid] = tex;\n }\n });\n })\n\n Object.assign(node.userData, { meshes, materials, textures });\n\n return node;\n }\n\n constructor(public manager: ResourceManager) { };\n abstract extension: string[];\n abstract load(props: LoadProperties): void;\n\n}","import { LoadProperties, aLoader } from \"../asset/aLoader\";\nimport { EXRLoader } from \"three/examples/jsm/loaders/EXRLoader.js\";\n\nexport class aEXRLoader extends aLoader {\n extension: string[] = [\"exr\"];\n\n load({ url, onLoad, onProgress, onError, texSettings }: LoadProperties) {\n const loader = new EXRLoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, tex => onLoad(Object.assign(tex, texSettings)), onProgress, onError);\n }\n}","import { Group } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nimport { FBXLoader } from \"three/examples/jsm/loaders/FBXLoader.js\";\n\nexport class aFBXLoader extends aLoader {\n extension: string[] = [\"fbx\"];\n\n load({ url, buffer, onLoad, onProgress, onError }: LoadProperties) {\n const loadCallback = (node: Group) => {\n onLoad(aLoader._setUserData(node));\n }\n const loader = new FBXLoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n\n if (buffer) {\n loadCallback(loader.parse(buffer, this.manager.path));\n }\n else {\n loader.load(url, loadCallback, onProgress, onError);\n }\n }\n}","import { LoadProperties, aLoader } from \"../asset/aLoader\";\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\";\n\nexport class aGLTFLoader extends aLoader {\n extension: string[] = [\"gltf\", \"glb\"];\n\n load({ url, buffer, onLoad, onProgress, onError }: LoadProperties) {\n const loadCallback = (gltf: GLTF) => {\n const node = gltf.scene;\n if (gltf.animations) node.animations = gltf.animations;\n onLoad(aLoader._setUserData(node));\n }\n let gltfLoader = new GLTFLoader(this.manager.loadingManager);\n gltfLoader.setPath(this.manager.path);\n gltfLoader.setResourcePath(this.manager.resourcePath);\n\n let dracoLoader = new DRACOLoader(this.manager.loadingManager);\n dracoLoader.setDecoderPath(this.manager.dracoPath);\n gltfLoader.setDRACOLoader(dracoLoader);\n\n gltfLoader.setMeshoptDecoder(MeshoptDecoder);\n\n if (buffer) {\n gltfLoader.parse(buffer, this.manager.path, loadCallback, onError);\n }\n else {\n gltfLoader.load(url, loadCallback, onProgress, onError);\n }\n }\n}","import { EquirectangularReflectionMapping } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nimport { RGBELoader } from \"three/examples/jsm/loaders/RGBELoader.js\";\n\nexport class aHDRLoader extends aLoader {\n extension: string[] = [\"hdr\"];\n\n load({ url, onLoad, onProgress, onError, texSettings }: LoadProperties): void {\n const settings = Object.assign({ mapping: EquirectangularReflectionMapping }, texSettings);\n const loader = new RGBELoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, tex => onLoad(Object.assign(tex, settings)), onProgress, onError);\n }\n\n}","import { FileLoader } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nexport class aJSONLoader extends aLoader {\n extension: string[] = [\"json\"];\n\n load({ url, onLoad, onProgress, onError }: LoadProperties) {\n const loader = new FileLoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, (file: string) => onLoad(JSON.parse(file)), onProgress, onError);\n }\n}","import { SRGBColorSpace, Texture, TextureLoader } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nexport class aTextureLoader extends aLoader {\n extension: string[] = [\"png\", \"jpg\", \"webp\", \"avif\"];\n\n load({ url, onLoad, onProgress, onError, texSettings }: LoadProperties): void {\n const loadCallback = (tex: Texture) => {\n tex.colorSpace = SRGBColorSpace;\n onLoad(Object.assign(tex, texSettings));\n }\n const loader = new TextureLoader(this.manager.loadingManager);\n loader.setPath(this.manager.path);\n loader.setResourcePath(this.manager.resourcePath);\n loader.load(url, loadCallback, onProgress, onError);\n }\n\n}","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","\nclass ClassProperties {\n private _properties: Object = Object.create(null);\n constructor(public clsName: string) { }\n property(propertyKey: string, options: Object = {}) {\n this._properties[propertyKey] = options;\n return this;\n }\n applyProperties(target: object) {\n Object.assign(target, this._properties);\n return target;\n }\n}\n\nexport class PropertyManager {\n static _classMap = new Map<String, ClassProperties>();\n static _propertyMap = new Map<Object, Object>();\n\n static _hasProperties(constructor: Function) {\n return PropertyManager._propertyMap.has(constructor);\n }\n static _getProperties(constructor: Function, autoAdd: boolean = true) {\n let props = PropertyManager._propertyMap.get(constructor);\n if (props === undefined && autoAdd) {\n props = Object.create(null);\n PropertyManager._propertyMap.set(constructor, props);\n }\n return props;\n }\n static _getMergedProperties(constructor: Function) {\n let props = null;\n while (constructor !== Object.constructor.prototype) {\n let values = PropertyManager._getProperties(constructor, false);\n if (values) {\n if (props === null) {\n props = Object.create(null);\n }\n Object.assign(props, values);\n }\n constructor = Object.getPrototypeOf(constructor);\n }\n return props;\n }\n static _getClassProperties(clsName: string, autoAdd: boolean = true) {\n let props = PropertyManager._classMap.get(clsName);\n if (props === undefined && autoAdd) {\n props = new ClassProperties(clsName);\n PropertyManager._classMap.set(clsName, props);\n }\n return props;\n }\n static _applyClassProperties(clsName: string, constructor: Function) {\n let cls = PropertyManager._getClassProperties(clsName, false);\n if (cls) {\n return cls.applyProperties(PropertyManager._getProperties(constructor));\n }\n else {\n return PropertyManager._getProperties(constructor, false);\n }\n }\n}\n\nexport interface IPropertyOptions {\n dir?: string;\n parent?: string;\n max?: number;\n min?: number;\n step?: number;\n value?: any;\n name?: string;\n}\n\ntype PropertyDecorator = (target: Object, propertyKey: string) => void;\nexport function property(options?: IPropertyOptions): PropertyDecorator;\nexport function property(...args: Parameters<PropertyDecorator>): void;\nexport function property(target?: Object, propertyKey?: string) {\n let options: IPropertyOptions | Function | string = null;\n function normalized(target: Object, propertyKey: string) {\n PropertyManager._getProperties(target.constructor)[propertyKey] = options;\n }\n if (target === undefined) { //@property()\n return property({});\n }\n else if (typeof propertyKey === \"undefined\") { // @property(options)\n options = target;\n return normalized;\n }\n else { // @property\n options = {};\n normalized(target, propertyKey);\n }\n}","import { property } from \"../PropertyManager\";\nimport { Easing } from \"../tween\";\n\nexport const CinestationBlendStyle = {\n Linear: Easing.Linear.None,\n QuadraticIn: Easing.Quadratic.In,\n QuadraticOut: Easing.Quadratic.Out,\n QuadraticInOut: Easing.Quadratic.InOut,\n}\n\nexport type CinestationBlendStyle = typeof CinestationBlendStyle[keyof typeof CinestationBlendStyle];\n\nexport class CinestationBlendDefinition {\n\n @property({ value: CinestationBlendStyle })\n style: CinestationBlendStyle = CinestationBlendStyle.QuadraticInOut;\n\n @property\n time: number = 4;\n\n}","import { MathUtils } from \"three\";\n\nexport class ObjectInstance {\n static _instanceCount: number = 0;\n instanceId: number = ObjectInstance._instanceCount++;\n 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\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 private _enabled: boolean = true;\n\n node: T;\n viewer: Viewer;\n manager: ComponentManager;\n type: string = \"Component\";\n\n onLoad?(): void;\n onEnable?(): void;\n onDisable?(): void;\n onDestroy?(): void;\n start?(): void;\n update?(dt: number): void;\n lastUpdate?(dt: number): void;\n\n flags: {\n Destroyed?: boolean;\n OnLoadCalled?: boolean;\n OnEnableCalled?: boolean;\n StartCalled?: boolean;\n Deactivating?: boolean;\n IsStartCalled?: boolean;\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}","import { MathUtils, PerspectiveCamera } from \"three\";\nimport { CinestationBlendDefinition } from \"./CinestationBlendDefinition\";\nimport { VirtualCamera } from \"./VirtualCamera\";\nimport { Component } from \"../Component\";\nimport { property } from \"../PropertyManager\";\n\nconst { clamp, lerp } = MathUtils;\n\nexport class CinestationBrain extends Component<PerspectiveCamera> {\n private _vcam: VirtualCamera | null = null;\n private _vcamSolo: VirtualCamera | null = null;\n private _vcams: VirtualCamera[] = [];\n private _lerpTime: number = 4;\n\n @property\n brainBlend: CinestationBlendDefinition = new CinestationBlendDefinition();\n\n get vcam() {\n return this._vcam;\n }\n\n get vcams() {\n return this._vcams\n }\n\n lastUpdate(dt: number) {\n let vcam = this.getActiveCamera();\n if (vcam == null) return;\n\n this._vcams.forEach(v => {\n if (!v.locked) {\n v.enabled = v === vcam\n }\n });\n\n if (this._lerpTime < this.brainBlend.time) {\n this._lerpTime += dt;\n let t = clamp(this._lerpTime / this.brainBlend.time, 0, 1);\n this._lerpToMainCamera(vcam, this.brainBlend.style(t));\n }\n else {\n this._lerpToMainCamera(vcam, 1);\n }\n }\n\n activeCamera(vcam: VirtualCamera, time: number = 4) {\n if (this._vcamSolo !== vcam) {\n this._vcamSolo = vcam;\n this._lerpTime = 0;\n this.brainBlend.time = time;\n }\n }\n\n addCamera(vcam: VirtualCamera) {\n let index = this._vcams.indexOf(vcam);\n if (index === -1) {\n this._vcams.push(vcam);\n }\n }\n\n removeCamera(vcam: VirtualCamera) {\n let index = this._vcams.indexOf(vcam);\n if (index !== -1) {\n this._vcams.splice(index, 1);\n }\n }\n\n getActiveCamera() {\n return this._vcamSolo || this._vcams.filter(v => v.enabled || v.locked).sort((a, b) => b.priority - a.priority)[0];\n }\n\n private _lerpToMainCamera(vcam: VirtualCamera, t: number) {\n const from = this.node, to = vcam;\n const { lens, finalPosition, finalRotation } = to;\n\n const isLensChanged = from.fov != lens.fov || from.near != lens.near || from.far != lens.far;\n\n from.position.lerp(finalPosition, t);\n from.quaternion.slerp(finalRotation, t);\n from.fov = lerp(from.fov, lens.fov, t);\n from.near = lens.near;\n from.far = lens.far;\n\n if (isLensChanged) {\n from.updateProjectionMatrix();\n }\n }\n}","import { Object3D, Quaternion, Vector3 } from \"three\";\nimport { Component } from \"../Component\";\nimport { CinestationBrain } from \"./CinestationBrain\";\nimport { property } from \"../PropertyManager\";\n\nclass Lens {\n @property\n fov: number = 45;\n @property\n near: number = 0.1;\n @property\n far: number = 1000;\n}\n\nexport class VirtualCamera extends Component<Object3D & { isCamera?: boolean }> {\n private _finalPosition: Vector3 = new Vector3();\n private _finalRotation: Quaternion = new Quaternion();\n\n locked: boolean = false;\n priority: number = 10;\n\n @property\n lens: Lens = new Lens();\n\n correctPosition: Vector3 = new Vector3();\n correctRotation: Quaternion = new Quaternion();\n brain!: CinestationBrain;\n\n get finalPosition() {\n return this._finalPosition.copy(this.node.position).add(this.correctPosition);\n }\n\n get finalRotation() {\n return this._finalRotation.copy(this.node.quaternion).multiply(this.correctRotation);\n }\n\n onLoad() {\n const camera = this.viewer.camera;\n\n this.node.isCamera = true;\n this.lens.fov = camera.fov;\n this.lens.near = camera.near;\n this.lens.far = camera.far;\n\n this.brain = this.viewer.getComponent(camera, CinestationBrain, true);\n this.brain.addCamera(this);\n }\n\n onDestroy() {\n this.brain.removeCamera(this);\n }\n}","import { Camera, Intersection, Object3D, Raycaster, Vector2 } from \"three\";\n\nconst PressState = {\n NONE: 1 << 0,\n SELECTED: 1 << 1,\n IN: 1 << 2,\n}\ntype PressState = typeof PressState[keyof typeof PressState];\n\nexport interface ConnTarget {\n node: Object3D;\n emit(name: string, e: { intersects: Intersection[] }): void;\n has(name: string): boolean;\n}\n\nexport class Pressability {\n private _raycaster: Raycaster = new Raycaster();\n private _connectors: { target: ConnTarget, state: number }[] = [];\n\n public connect(target: ConnTarget) {\n let connector = this._connectors.find(v => v.target === target);\n if (connector === undefined) {\n connector = { target, state: PressState.NONE };\n this._connectors.push(connector);\n }\n }\n\n public disconnect(target: ConnTarget) {\n let index = this._connectors.findIndex(v => v.target === target);\n if (index !== -1) {\n this._connectors.splice(index, 1);\n }\n }\n\n public pointerDown(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"click\") || conn.target.has(\"pointerdown\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n conn.state |= PressState.SELECTED;\n conn.target.emit(\"pointerdown\", { intersects });\n }\n }\n }\n }\n\n public pointerUp(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"click\") || conn.target.has(\"pointerup\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n if (conn.state & PressState.SELECTED) {\n conn.state &= ~PressState.SELECTED;\n conn.target.emit(\"click\", { intersects });\n }\n conn.target.emit(\"pointerup\", { intersects });\n }\n }\n }\n }\n\n public pointerMove(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"pointerover\") || conn.target.has(\"pointerout\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n if (!(conn.state & PressState.IN)) {\n conn.state |= PressState.IN;\n conn.target.emit(\"pointerover\", { intersects });\n }\n }\n else {\n if (conn.state & PressState.IN) {\n conn.state &= ~PressState.IN;\n conn.target.emit(\"pointerout\", { intersects });\n }\n }\n }\n }\n }\n\n}\n","import { Vector2 } from \"three\";\nimport { ConnTarget, Pressability } from \"./Pressability\";\nimport { Viewer } from \"./Viewer\";\n\ninterface InputTarget {\n on?(event: string, cb: (...args: any[]) => void, target: Object, once?: boolean);\n off?(event: string, cb: (...args: any[]) => void, target: Object);\n removeEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n addEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n}\n\nexport class DeviceInput {\n static readonly CLICK = \"click\";\n static readonly MOUSE_WHEEL = \"mousewheel\";\n static readonly TOUCH_START = \"touchstart\";\n static readonly TOUCH_END = \"touchend\";\n static readonly TOUCH_MOVE = \"touchmove\";\n static readonly POINTER_DOWN = \"pointerdown\";\n static readonly POINTER_UP = \"pointerup\";\n static readonly POINTER_MOVE = \"pointermove\";\n static readonly POINTER_OVER = \"pointerover\";\n static readonly POINTER_OUT = \"pointerout\";\n static readonly KEYDOWN = \"keydown\";\n static readonly KEYPRESS = \"keypress\";\n static readonly KEYUP = \"keyup\";\n static readonly RESIZE = \"resize\";\n\n private _listeners: { target: InputTarget, type: string, callback: any }[] = [];\n private _mouseWheel: number = 0;\n private _touches: { id: number, position: Vector2 }[] = [];\n private _touchCount: number = 0;\n private _pointerButton: number = -1;\n private _pointerPosition: Vector2 = new Vector2();\n private _pointer: Vector2 = new Vector2();\n private _keys: { [k: string]: boolean } = {};\n private _pressability: Pressability = new Pressability();\n\n get pointerButton() {\n return this._pointerButton;\n }\n\n get pointer() {\n return this._pointer;\n }\n\n get pointerPosition() {\n return this._pointerPosition;\n }\n\n get mouseWheel() {\n return this._mouseWheel;\n }\n\n get touchCount() {\n return this._touchCount;\n }\n\n get touches() {\n return this._touches;\n }\n\n get keys() {\n return this._keys;\n }\n\n constructor(public viewer: Viewer) { }\n\n addEventListeners() {\n const domElement = this.viewer.canvas; domElement.style.touchAction = 'none';\n this._addEventListener(domElement, 'contextmenu', e => e.preventDefault());\n this._addEventListener(domElement, \"pointerdown\", e => this._onPointerDown(e), { passive: false });\n this._addEventListener(domElement, \"pointerup\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(domElement, \"pointercancel\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(domElement, \"pointerout\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(domElement, \"pointermove\", e => this._onPointerMove(e), { passive: true });\n this._addEventListener(domElement, \"wheel\", e => this._onMouseWheel(e), { passive: false });\n this._addEventListener(domElement, \"touchstart\", e => this._onTouchStart(e), { passive: true });\n this._addEventListener(domElement, \"touchend\", e => this._onTouchEnd(e), { passive: true });\n this._addEventListener(domElement, \"touchmove\", e => this._onTouchMove(e), { passive: true });\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 }\n\n removeAllListeners() {\n for (let { target, type, callback } of this._listeners) {\n if (target.removeEventListener) target.removeEventListener(type, callback);\n else if (target.off) target.off(type, callback, target);\n }\n this._listeners = [];\n }\n\n connect(target: ConnTarget, event: string) {\n switch (event) {\n case DeviceInput.CLICK:\n case DeviceInput.POINTER_DOWN:\n case DeviceInput.POINTER_UP:\n case DeviceInput.POINTER_OVER:\n case DeviceInput.POINTER_OUT:\n this._pressability.connect(target);\n break;\n }\n }\n\n disconnect(target: ConnTarget) {\n this._pressability.disconnect(target);\n }\n\n private _addEventListener<K extends keyof HTMLElementEventMap>(\n target: InputTarget,\n type: K | string,\n callback: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ) {\n if (target.addEventListener) target.addEventListener(type, callback, options);\n else if (target.on) target.on(type, callback, target);\n this._listeners.push({ target, type, callback });\n }\n\n private _remapPointer(e: PointerEvent) {\n const width = this.viewer.width;\n return this.viewer.rootRotated ? {\n button: e.button,\n buttons: e.buttons,\n clientX: e.clientY,\n clientY: width - e.clientX,\n offsetX: e.offsetY,\n offsetY: width - e.offsetX,\n pageX: e.pageY,\n pageY: width - e.pageX,\n screenX: e.screenY,\n screenY: width - e.screenX,\n movementX: e.movementY,\n movementY: e.movementX,\n } as any : e;\n }\n\n private _remapTouch(e: TouchEvent) {\n const width = this.viewer.width;\n return this.viewer.rootRotated ? {\n touches: Array.from(e.touches).map(v => {\n return {\n identifier: v.identifier,\n clientX: v.clientY,\n clientY: width - v.clientX,\n pageX: v.pageY,\n pageY: width - v.pageX,\n screenX: v.screenY,\n screenY: width - v.screenX,\n }\n })\n } as any : e;\n }\n\n private _computePointer(e: PointerEvent) {\n this._pointer.x = e.offsetX / this.viewer.width * 2 - 1;\n this._pointer.y = 1 - e.offsetY / this.viewer.height * 2;\n this._pointerPosition.set(e.offsetX, e.offsetY);\n }\n\n private _onPointerDown(e: PointerEvent) {\n e.preventDefault();\n e = this._remapPointer(e);\n this._pointerButton = e.button;\n this._computePointer(e);\n this._pressability.pointerDown(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_DOWN, e);\n }\n\n private _onPointerUp(e: PointerEvent) {\n e.preventDefault();\n e = this._remapPointer(e);\n this._pointerButton = -1;\n this._computePointer(e);\n this._pressability.pointerUp(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_UP, e);\n }\n\n private _onPointerMove(e: PointerEvent) {\n e = this._remapPointer(e);\n this._computePointer(e);\n this._pressability.pointerMove(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_MOVE, e);\n }\n\n private _onMouseWheel(e: WheelEvent & { wheelDelta?: number }) {\n e.preventDefault();\n this._mouseWheel = e.deltaY || e.wheelDelta;\n this.viewer.emit(DeviceInput.MOUSE_WHEEL, e);\n }\n\n private _onTouchStart(e: TouchEvent) {\n e = this._remapTouch(e);\n this.viewer.emit(DeviceInput.TOUCH_START, e);\n }\n\n private _onTouchEnd(e: TouchEvent) {\n e = this._remapTouch(e);\n this.viewer.emit(DeviceInput.TOUCH_END, e);\n }\n\n private _onTouchMove(e: TouchEvent) {\n e = this._remapTouch(e);\n let touches = e.touches;\n let touchesTo = this._touches;\n for (let i = touches.length; i--;) {\n if (touchesTo[i] == undefined) {\n touchesTo[i] = { id: -1, position: new Vector2() };\n }\n const touch = touches[i];\n touchesTo[i].id = touch.identifier;\n touchesTo[i].position.set(touch.pageX, touch.pageY);\n }\n this._touchCount = touches.length;\n this.viewer.emit(DeviceInput.TOUCH_MOVE, e);\n }\n\n private _onKeyDown(e: KeyboardEvent) {\n this._keys[e.key] = true;\n this.viewer.emit(DeviceInput.KEYDOWN, e);\n }\n\n private _onKeyPress(e: KeyboardEvent) {\n this._keys[e.key] = true;\n this.viewer.emit(DeviceInput.KEYPRESS, e);\n }\n\n private _onKeyUp(e: KeyboardEvent) {\n this._keys[e.key] = false;\n this.viewer.emit(DeviceInput.KEYUP, e);\n }\n}","const isSSR = typeof window === 'undefined';\n\nexport interface IDeviceResult {\n version: string;\n}\n\nexport interface IBrowserResult {\n name: string;\n version: string;\n}\n\nexport class DetectUA {\n public userAgent: string;\n\n // Internal variables, prevents multiple lookups\n private isAndroidDevice: boolean;\n private iOSDevice: string;\n\n /**\n * Detect a users browser, browser version and whether it is a mobile-, tablet- or desktop device\n *\n * @param forceUserAgent Force a user agent string (useful for testing)\n */\n constructor(forceUserAgent?: string) {\n this.userAgent = forceUserAgent\n ? forceUserAgent\n : !isSSR && window.navigator\n ? window.navigator.userAgent\n : '';\n\n this.isAndroidDevice = !/like android/i.test(this.userAgent) && /android/i.test(this.userAgent);\n this.iOSDevice = this.match(1, /(iphone|ipod|ipad)/i).toLowerCase();\n\n // Workaround for ipadOS, force detection as tablet\n // SEE: https://github.com/lancedikson/bowser/issues/329\n // SEE: https://stackoverflow.com/questions/58019463/how-to-detect-device-name-in-safari-on-ios-13-while-it-doesnt-show-the-correct\n if (\n !isSSR &&\n navigator.platform === 'MacIntel' &&\n navigator.maxTouchPoints > 2 &&\n !(window as any).MSStream\n ) {\n this.iOSDevice = 'ipad';\n }\n }\n\n /**\n * Match entry based on position found in the user-agent string\n *\n * @param pattern regular expression pattern\n */\n private match(position: number, pattern: RegExp): string {\n const match = this.userAgent.match(pattern);\n\n return (match && match.length > 1 && match[position]) || '';\n }\n\n /**\n * Returns if the device is a mobile device\n */\n get isMobile(): boolean {\n return (\n // Default mobile\n !this.isTablet &&\n (/[^-]mobi/i.test(this.userAgent) ||\n // iPhone / iPod\n this.iOSDevice === 'iphone' ||\n this.iOSDevice === 'ipod' ||\n // Android\n this.isAndroidDevice ||\n // Nexus mobile\n /nexus\\s*[0-6]\\s*/i.test(this.userAgent))\n );\n }\n\n /**\n * Returns if the device is a tablet device\n */\n get isTablet(): boolean {\n return (\n // Default tablet\n (/tablet/i.test(this.userAgent) && !/tablet pc/i.test(this.userAgent)) ||\n // iPad\n this.iOSDevice === 'ipad' ||\n // Android\n (this.isAndroidDevice && !/[^-]mobi/i.test(this.userAgent)) ||\n // Nexus tablet\n (!/nexus\\s*[0-6]\\s*/i.test(this.userAgent) && /nexus\\s*[0-9]+/i.test(this.userAgent))\n );\n }\n\n /**\n * Returns if the device is a desktop device\n */\n get isDesktop(): boolean {\n return !this.isMobile && !this.isTablet;\n }\n\n /**\n * Returns if the device is running MacOS (and if so which version)\n *\n * '5' => Leopard'\n * '6' => Snow Leopard'\n * '7' => Lion'\n * '8' => Mountain Lion'\n * '9' => Mavericks'\n * '10' => Yosemite'\n * '11' => El Capitan'\n * '12' => Sierra'\n * '13' => High Sierra'\n * '14' => Mojave'\n * '15' => Catalina'\n */\n get isMacOS(): IDeviceResult | boolean {\n return (\n /macintosh/i.test(this.userAgent) && {\n version: this.match(1, /mac os x (\\d+(\\.?_?\\d+)+)/i)\n .replace(/[_\\s]/g, '.')\n .split('.')\n .map((versionNumber: string): string => versionNumber)[1],\n }\n );\n }\n\n /**\n * Returns if the device is running Windows (and if so which version)\n *\n * 'NT' => 'NT'\n * 'XP' => 'XP'\n * 'NT 5.0' => '2000'\n * 'NT 5.1' => 'XP'\n * 'NT 5.2' => '2003'\n * 'NT 6.0' => 'Vista'\n * 'NT 6.1' => '7'\n * 'NT 6.2' => '8'\n * 'NT 6.3' => '8.1'\n * 'NT 10.0' => '10'\n */\n get isWindows(): IDeviceResult | boolean {\n return (\n /windows /i.test(this.userAgent) && {\n version: this.match(1, /Windows ((NT|XP)( \\d\\d?.\\d)?)/i),\n }\n );\n }\n\n /**\n * Returns if the device is an iOS device (and if so which version)\n */\n get isiOS(): IDeviceResult | boolean {\n return (\n !!this.iOSDevice && {\n version:\n this.match(1, /os (\\d+([_\\s]\\d+)*) like mac os x/i).replace(/[_\\s]/g, '.') ||\n this.match(1, /version\\/(\\d+(\\.\\d+)?)/i),\n }\n );\n }\n\n /**\n * Returns if the device is an Android device (and if so which version)\n */\n get isAndroid(): IDeviceResult | boolean {\n return (\n this.isAndroidDevice && {\n version: this.match(1, /android[ \\/-](\\d+(\\.\\d+)*)/i),\n }\n );\n }\n\n /**\n * Returns the browser name and version\n */\n get browser(): IBrowserResult | boolean {\n const versionIdentifier = this.match(1, /version\\/(\\d+(\\.\\d+)?)/i);\n\n if (/opera/i.test(this.userAgent)) {\n // Opera\n return {\n name: 'Opera',\n version: versionIdentifier || this.match(1, /(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/opr\\/|opios/i.test(this.userAgent)) {\n // Opera\n return {\n name: 'Opera',\n version: this.match(1, /(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i) || versionIdentifier,\n };\n } else if (/SamsungBrowser/i.test(this.userAgent)) {\n // Samsung Browser\n return {\n name: 'Samsung Internet for Android',\n version: versionIdentifier || this.match(1, /(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/yabrowser/i.test(this.userAgent)) {\n // Yandex Browser\n return {\n name: 'Yandex Browser',\n version: versionIdentifier || this.match(1, /(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/ucbrowser/i.test(this.userAgent)) {\n // UC Browser\n return {\n name: 'UC Browser',\n version: this.match(1, /(?:ucbrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/msie|trident/i.test(this.userAgent)) {\n // Internet Explorer\n return {\n name: 'Internet Explorer',\n version: this.match(1, /(?:msie |rv:)(\\d+(\\.\\d+)?)/i),\n };\n } else if (/(edge|edgios|edga|edg)/i.test(this.userAgent)) {\n // Edge\n return {\n name: 'Microsoft Edge',\n version: this.match(2, /(edge|edgios|edga|edg)\\/(\\d+(\\.\\d+)?)/i),\n };\n } else if (/firefox|iceweasel|fxios/i.test(this.userAgent)) {\n // Firefox\n return {\n name: 'Firefox',\n version: this.match(1, /(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/chromium/i.test(this.userAgent)) {\n // Chromium\n return {\n name: 'Chromium',\n version: this.match(1, /(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i) || versionIdentifier,\n };\n } else if (/chrome|crios|crmo/i.test(this.userAgent)) {\n // Chrome\n return {\n name: 'Chrome',\n version: this.match(1, /(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i),\n };\n } else if (/safari|applewebkit/i.test(this.userAgent)) {\n // Safari\n return {\n name: 'Safari',\n version: versionIdentifier,\n };\n } else {\n // Everything else\n return {\n name: this.match(1, /^(.*)\\/(.*) /),\n version: this.match(2, /^(.*)\\/(.*) /),\n };\n }\n }\n}","import { DetectUA } from \"./DetectUA\";\n\nconst detectUA = new DetectUA();\nconst userAgent = (navigator.userAgent || navigator.vendor).toLowerCase();\nconst browserName = typeof detectUA.browser === \"boolean\" ? \"\" : detectUA.browser.name\nconst audioElem = document.createElement(\"audio\");\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 isSupportOgg = !!audioElem.canPlayType(\"audio/ogg\");\n static isRetina = window.devicePixelRatio && window.devicePixelRatio >= 1.5;\n static devicePixelRatio = window.devicePixelRatio || 1;\n static cpuCoreCount = navigator.hardwareConcurrency || 1;\n static baseUrl = document.location.origin;\n static isIFrame = window.self !== window.top;\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, Vector3 } from \"three\";\n\nconst { clamp } = MathUtils;\nconst { max, abs, acos } = Math;\n\nconst EPSILON = 1.e-6;\nconst __delta = new Vector3();\n\nexport function VInterpTo(\n current: Vector3,\n target: Vector3,\n deltaTime: number,\n speed: number,\n out: Vector3 = current\n) {\n if (speed <= 0) {\n return out.copy(target);\n }\n let dist = __delta.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 = __delta.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) {\n if (speed <= 0) {\n return target;\n }\n if (Quat_Equals(current, target)) {\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) {\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) {\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","import { MathUtils, Quaternion, Spherical, Vector2, Vector3 } from \"three\";\nimport { VirtualCamera } from \"./VirtualCamera\";\nimport { DeviceInput } from \"../DeviceInput\";\nimport { SystemInfo } from \"../SystemInfo\";\nimport { property } from \"../PropertyManager\";\nimport { FInterpTo, VInterpTo } from \"../math\";\nimport { Easing, EasingFunction } from \"../tween\";\n\nconst { clamp, degToRad } = MathUtils;\nconst { abs, tan, PI } = Math;\nconst PI2 = PI * 2;\nconst ESP = 0.001;\n\nexport class FreelookVirtualCamera extends VirtualCamera {\n static __loc0 = new Vector2();\n static __loc1 = new Vector2();\n static __center = new Vector2();\n static __preCenter = new Vector2();\n static __panDelta = new Vector2();\n static __panTarget = new Vector2();\n static __rotateDelta = new Vector2();\n static __posDelta = new Vector3();\n static __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(2, Math.PI / 2);\n private _lookAt: Vector3 = new Vector3();\n\n private _tempSmoothing: number = 6;\n private _tempRotateSmoothing: number = 8;\n private _targetTheta: number = 0;\n private _targetPhi: number = 0;\n private _targetSpringLength: number = 1;\n private _targetFov: number = this.fov;\n private _targetLookAt: Vector3 = new Vector3();\n\n\n @property({ dir: \"set\" })\n forbidX: boolean = false;\n @property({ dir: \"set\" })\n forbidY: boolean = false;\n @property({ dir: \"set\" })\n forbidZ: boolean = false;\n @property({ dir: \"set\" })\n forbidPanX: boolean = false;\n @property({ dir: \"set\" })\n forbidPanY: boolean = false;\n @property({ dir: \"set\" })\n forbitPanOffsetY: boolean = false;\n\n @property({ dir: \"set\", step: 0.01 })\n panSpeed: number = 1;\n @property({ dir: \"set\", step: 0.01 })\n rotateSpeed: number = 1;\n @property({ dir: \"set\", step: 0.01 })\n smoothing: number = 5;\n @property({ dir: \"set\", step: 0.01 })\n rotateSmoothing: number = 8;\n @property({ dir: \"set\", step: 0.01 })\n phiMin: number = ESP;\n @property({ dir: \"set\", step: 0.01 })\n phiMax: number = Math.PI - ESP;\n @property({ dir: \"set\", step: 0.01 })\n thetaMin: number = -Infinity;\n @property({ dir: \"set\", step: 0.01 })\n thetaMax: number = Infinity;\n @property({ dir: \"set\", step: 0.01 })\n distanceMin: number = ESP;\n @property({ dir: \"set\", step: 0.01 })\n distanceMax: number = Infinity;\n\n @property({ 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 springLength() {\n return this._spherical.radius;\n }\n set springLength(v: number) {\n this._spherical.radius = this._targetSpringLength = v;\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 = v;\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 = v;\n }\n\n @property\n get fov() {\n return this.lens.fov;\n }\n set fov(v: number) {\n this.lens.fov = this._targetFov = v;\n }\n\n onEnable() {\n this.viewer.on(DeviceInput.POINTER_DOWN, this._onPointerDown, this);\n this.viewer.on(DeviceInput.POINTER_UP, this._onPointerUp, this);\n this.viewer.on(DeviceInput.POINTER_MOVE, this._onPointerMove, this);\n this.viewer.on(DeviceInput.MOUSE_WHEEL, this._onMouseWheel, this);\n this.viewer.on(DeviceInput.TOUCH_START, this._onTouchStart, this);\n this.viewer.on(DeviceInput.TOUCH_MOVE, this._onTouchMove, this);\n this.reset();\n }\n\n onDisable() {\n this.viewer.off(DeviceInput.POINTER_DOWN, this._onPointerDown, this);\n this.viewer.off(DeviceInput.POINTER_UP, this._onPointerUp, this);\n this.viewer.off(DeviceInput.POINTER_MOVE, this._onPointerMove, this);\n this.viewer.off(DeviceInput.MOUSE_WHEEL, this._onMouseWheel, this);\n this.viewer.off(DeviceInput.TOUCH_START, this._onTouchStart, this);\n this.viewer.off(DeviceInput.TOUCH_MOVE, this._onTouchMove, this);\n }\n\n reset() {\n this._button = -1;\n this._touchID = -1;\n\n this._targetTheta = this.theta;\n this._targetPhi = this.phi;\n this._targetSpringLength = this.springLength;\n this._targetLookAt.copy(this._lookAt);\n this._targetFov = this.lens.fov;\n }\n\n private _onPointerDown(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n this._button = e.button;\n this._preLoc0.set(e.pageX, e.pageY);\n }\n\n private _onPointerUp(_: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n this._button = -1;\n }\n\n private _onPointerMove(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n const { __loc0, __panDelta, __rotateDelta } = FreelookVirtualCamera;\n __loc0.set(e.pageX, e.pageY);\n\n switch (this._button) {\n case 0:\n this._calculateRotatelDelta(__rotateDelta, this._preLoc0, __loc0);\n this._calculateTargetSpringArm(__rotateDelta);\n break;\n case 1:\n case 2:\n this._calculatePanDelta(__panDelta, this._preLoc0, __loc0)\n this._calculateTargetLookAt(__panDelta);\n break;\n }\n\n this._preLoc0.copy(__loc0);\n }\n\n private _onMouseWheel(e: WheelEvent) {\n if (e.deltaY > 0) {\n this._targetSpringLength *= this._calculateDistanceScale(1 / 0.85);\n }\n else if (e.deltaY < 0) {\n this._targetSpringLength *= this._calculateDistanceScale(0.85);\n }\n this._calculateTargetSpringArm();\n }\n\n private _onTouchStart(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n let touches = e.touches;\n if (touches.length > 1) {\n this._preLoc0.set(touches[0].pageX, touches[0].pageY);\n this._preLoc1.set(touches[1].pageX, touches[1].pageY);\n }\n else if (touches.length > 0) {\n this._touchID = touches[0].identifier;\n this._preLoc0.set(touches[0].pageX, touches[0].pageY);\n }\n }\n\n private _onTouchMove(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n const { __loc0, __loc1, __panDelta, __rotateDelta, __preCenter, __center } = FreelookVirtualCamera;\n\n let touches = e.touches;\n if (touches.length > 1) {\n __loc0.set(touches[0].pageX, touches[0].pageY);\n __loc1.set(touches[1].pageX, touches[1].pageY);\n\n if (this.lookAt) {\n this._targetSpringLength *= this._calculateDistanceScale(this._preLoc0.distanceTo(this._preLoc1) / __loc0.distanceTo(__loc1))\n }\n\n __preCenter.copy(this._preLoc0).add(this._preLoc1).multiplyScalar(0.5);\n __center.copy(__loc0).add(__loc1).multiplyScalar(0.5);\n\n this._calculatePanDelta(__panDelta, __preCenter, __center);\n this._calculateTargetLookAt(__panDelta);\n this._calculateTargetSpringArm();\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\n this._calculateRotatelDelta(__rotateDelta, this._preLoc0, __loc0);\n this._calculateTargetSpringArm(__rotateDelta);\n\n this._preLoc0.copy(__loc0);\n }\n\n }\n }\n\n private _calculateDistanceScale(scale: number) {\n this._tempRotateSmoothing = this.rotateSmoothing;\n\n if (this.forbidZ) {\n scale = 1;\n }\n return scale;\n }\n\n private _calculateRotatelDelta(out: Vector2, loc0: Vector2, loc1: Vector2) {\n this._tempRotateSmoothing = this.rotateSmoothing;\n const domElement = this.viewer.canvas;\n\n out.copy(loc1).sub(loc0).multiplyScalar(this.rotateSpeed * 2 * Math.PI / domElement.clientHeight);\n out.y = -out.y;\n\n if (this.forbidX) {\n out.x = 0;\n }\n if (this.forbidY) {\n out.y = 0;\n }\n\n return out;\n }\n\n private _calculatePanDelta(out: Vector2, loc0: Vector2, loc1: Vector2) {\n this._tempRotateSmoothing = this.rotateSmoothing;\n const domElement = this.viewer.canvas;\n\n out.copy(loc1).sub(loc0).multiplyScalar(this.panSpeed / domElement.clientHeight);\n if (this.forbidPanX) {\n out.x = 0;\n }\n if (this.forbidPanY) {\n out.y = 0;\n }\n\n return out;\n }\n\n private _calculateTargetLookAt(panDelta: Vector2) {\n const { __xAxis, __yAxis, __posDelta } = FreelookVirtualCamera;\n __xAxis.setFromMatrixColumn(this.node.matrix, 0);\n __yAxis.setFromMatrixColumn(this.node.matrix, 1);\n\n if (this.forbitPanOffsetY) {\n __yAxis.y = 0;\n __yAxis.normalize();\n }\n\n __posDelta.copy(this.node.position).sub(this.lookAt);\n const length = __posDelta.length() * 2 * tan(degToRad(this.fov * 0.5));\n\n this._targetLookAt\n .sub(__xAxis.multiplyScalar(panDelta.x * length))\n .add(__yAxis.multiplyScalar(panDelta.y * length));\n }\n\n private _calculateTargetSpringArm(rotateDelta?: Vector2, radius?: number) {\n if (rotateDelta) {\n this._targetTheta -= rotateDelta.x;\n this._targetPhi += rotateDelta.y;\n }\n if (radius) {\n this._targetSpringLength = radius;\n }\n this._targetTheta = clamp(this._targetTheta, this.thetaMin, this.thetaMax);\n this._targetPhi = clamp(this._targetPhi, this.phiMin, this.phiMax);\n this._targetSpringLength = clamp(this._targetSpringLength, this.distanceMin, this.distanceMax);\n }\n\n gotoPOI({\n duration = -1,\n easing = Easing.Cubic.InOut,\n springLength = this._targetSpringLength,\n theta = this._targetTheta,\n phi = this._targetPhi,\n lookAt = this._lookAt,\n fov = this.lens.fov,\n smoothing = this.smoothing,\n rotateSmoothing = smoothing\n }: {\n duration?: number;\n easing?: EasingFunction;\n springLength?: number;\n theta?: number;\n phi?: number;\n lookAt?: Vector3;\n fov?: number;\n smoothing?: number;\n rotateSmoothing?: number;\n }) {\n this._targetFov = fov;\n this._tempSmoothing = smoothing;\n this._tempRotateSmoothing = rotateSmoothing;\n this._targetLookAt.copy(lookAt);\n\n const t1 = theta % PI2;\n const t0 = this._spherical.theta = this._spherical.theta % PI2;\n\n const thetas = [t1, t1 - PI2, t1 + PI2];\n const diffs = thetas.map(v => abs(t0 - v));\n const min = Math.min(...diffs);\n\n this._targetTheta = thetas[diffs.findIndex(v => v === min)];\n this._targetSpringLength = springLength;\n this._targetPhi = phi;\n this._calculateTargetSpringArm();\n\n if (duration > 0) {\n this.locked = true;\n this.enabled = false;\n this.viewer.killTweensOf(this);\n this.viewer.timeline(this)\n .to({ springLength, theta, phi, lookAt, fov }, duration, {\n easing,\n onUpdate: () => {\n this.node.position.setFromSpherical(this._spherical).add(this._lookAt);\n this.node.lookAt(this._lookAt);\n }\n })\n .call(() => {\n this.locked = false;\n this.enabled = true\n })\n .start();\n }\n }\n\n update(dt: number) {\n const smoothing = this._tempSmoothing;\n const rotateSmoothing = this._tempRotateSmoothing;\n\n this._spherical.theta = FInterpTo(this._spherical.theta, this._targetTheta, dt, rotateSmoothing);\n this._spherical.phi = FInterpTo(this._spherical.phi, this._targetPhi, dt, rotateSmoothing);\n this._spherical.radius = FInterpTo(this._spherical.radius, this._targetSpringLength, dt, smoothing);\n\n this.lens.fov = FInterpTo(this.lens.fov, this._targetFov, dt, smoothing);\n VInterpTo(this._lookAt, this._targetLookAt, dt, smoothing);\n\n this.node.position.setFromSpherical(this._spherical).add(this._lookAt);\n this.node.lookAt(this._lookAt);\n }\n}","import { BoxGeometry, Material, Mesh } from \"three\";\n\nexport class Box<M extends Material | Material[] = Material | Material[]> extends Mesh<BoxGeometry, M> {\n constructor(...args: ConstructorParameters<typeof BoxGeometry>) {\n super(new BoxGeometry(...args));\n }\n}","import { Material, Mesh, SphereGeometry } from \"three\";\n\nexport class Sphere<M extends Material | Material[] = Material | Material[]> extends Mesh<SphereGeometry, M> {\n constructor(...args: ConstructorParameters<typeof SphereGeometry>) {\n super(new SphereGeometry(...args));\n }\n}","import { Material, Mesh, PlaneGeometry } from \"three\";\n\nexport class Plane<M extends Material | Material[] = Material | Material[]> extends Mesh<PlaneGeometry, M> {\n constructor(...args: ConstructorParameters<typeof PlaneGeometry>) {\n super(new PlaneGeometry(...args));\n }\n}\n","import {\n Matrix4,\n PerspectiveCamera,\n Vector3,\n Vector4,\n Plane,\n WebGLRenderTarget,\n HalfFloatType,\n LinearFilter,\n LinearMipMapLinearFilter\n} from \"three\";\n\nimport { Component } from \"../Component\";\n\nexport class Reflector extends Component {\n\n constructor({\n textureWidth = 512,\n textureHeight = 512,\n clipBias = 0,\n multisample = 4,\n layer = 0,\n normal = new Vector3(0, 0, 1),\n mipmap = false,\n }: {\n textureWidth?: number,\n textureHeight?: number,\n clipBias?: number,\n multisample?: number,\n normal?: Vector3,\n layer?: number,\n mipmap?: boolean\n } = {}) {\n super();\n const reflectorPlane = new Plane();\n const reflectorNormal = new Vector3();\n const reflectorWorldPosition = new Vector3();\n const cameraWorldPosition = new Vector3();\n const rotationMatrix = new Matrix4();\n const lookAtPosition = new Vector3(0, 0, - 1);\n const clipPlane = new Vector4();\n\n const view = new Vector3();\n const target = new Vector3();\n const q = new Vector4();\n\n const textureMatrix = new Matrix4();\n const virtualCamera = new PerspectiveCamera();\n virtualCamera.layers.mask = layer;\n\n const renderTarget = new WebGLRenderTarget(textureWidth, textureHeight, {\n samples: multisample,\n type: HalfFloatType,\n minFilter: mipmap ? LinearMipMapLinearFilter : LinearFilter,\n generateMipmaps: mipmap\n });\n\n this.update = () => {\n const node = this.node;\n const { renderer, camera, scene } = this.viewer;\n\n reflectorWorldPosition.setFromMatrixPosition(node.matrixWorld);\n cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);\n\n rotationMatrix.extractRotation(node.matrixWorld);\n\n reflectorNormal.copy(normal);\n reflectorNormal.applyMatrix4(rotationMatrix);\n\n view.subVectors(reflectorWorldPosition, cameraWorldPosition);\n\n // Avoid rendering when reflector is facing away\n\n if (view.dot(reflectorNormal) > 0) return;\n\n view.reflect(reflectorNormal).negate();\n view.add(reflectorWorldPosition);\n\n rotationMatrix.extractRotation(camera.matrixWorld);\n\n lookAtPosition.set(0, 0, -1);\n lookAtPosition.applyMatrix4(rotationMatrix);\n lookAtPosition.add(cameraWorldPosition);\n\n target.subVectors(reflectorWorldPosition, lookAtPosition);\n target.reflect(reflectorNormal).negate();\n target.add(reflectorWorldPosition);\n\n virtualCamera.position.copy(view);\n virtualCamera.up.set(0, 1, 0);\n virtualCamera.up.applyMatrix4(rotationMatrix);\n virtualCamera.up.reflect(reflectorNormal);\n virtualCamera.lookAt(target);\n\n virtualCamera.far = camera.far; // Used in WebGLBackground\n\n virtualCamera.updateMatrixWorld();\n virtualCamera.projectionMatrix.copy(camera.projectionMatrix);\n\n // Update the texture matrix\n textureMatrix.set(\n 0.5, 0.0, 0.0, 0.5,\n 0.0, 0.5, 0.0, 0.5,\n 0.0, 0.0, 0.5, 0.5,\n 0.0, 0.0, 0.0, 1.0\n );\n textureMatrix.multiply(virtualCamera.projectionMatrix);\n textureMatrix.multiply(virtualCamera.matrixWorldInverse);\n textureMatrix.multiply(node.matrixWorld);\n\n // Now update projection matrix with new clip plane, implementing code from: http://www.terathon.com/code/oblique.html\n // Paper explaining this technique: http://www.terathon.com/lengyel/Lengyel-Oblique.pdf\n reflectorPlane.setFromNormalAndCoplanarPoint(reflectorNormal, reflectorWorldPosition);\n reflectorPlane.applyMatrix4(virtualCamera.matrixWorldInverse);\n\n clipPlane.set(reflectorPlane.normal.x, reflectorPlane.normal.y, reflectorPlane.normal.z, reflectorPlane.constant);\n\n const projectionMatrix = virtualCamera.projectionMatrix;\n\n q.x = (Math.sign(clipPlane.x) + projectionMatrix.elements[8]) / projectionMatrix.elements[0];\n q.y = (Math.sign(clipPlane.y) + projectionMatrix.elements[9]) / projectionMatrix.elements[5];\n q.z = - 1.0;\n q.w = (1.0 + projectionMatrix.elements[10]) / projectionMatrix.elements[14];\n\n // Calculate the scaled plane vector\n clipPlane.multiplyScalar(2.0 / clipPlane.dot(q));\n\n // Replacing the third row of the projection matrix\n projectionMatrix.elements[2] = clipPlane.x;\n projectionMatrix.elements[6] = clipPlane.y;\n projectionMatrix.elements[10] = clipPlane.z + 1.0 - clipBias;\n projectionMatrix.elements[14] = clipPlane.w;\n\n // Render\n node.visible = false;\n\n const currentRenderTarget = renderer.getRenderTarget();\n const currentActiveCubeFace = renderer.getActiveCubeFace();\n const currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n const currentXrEnabled = renderer.xr.enabled;\n const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;\n\n renderer.xr.enabled = false; // Avoid camera modification\n renderer.shadowMap.autoUpdate = false; // Avoid re-computing shadows\n\n renderer.setRenderTarget(renderTarget);\n\n renderer.state.buffers.depth.setMask(true); // make sure the depth buffer is writable so it can be properly cleared, see #18897\n\n if (renderer.autoClear === false) renderer.clear();\n renderer.render(scene, virtualCamera);\n\n renderer.xr.enabled = currentXrEnabled;\n renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;\n\n renderer.setRenderTarget(currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel);\n\n // Restore viewport\n\n const viewport = camera.viewport;\n\n if (viewport !== undefined) {\n renderer.state.viewport(viewport);\n }\n\n node.visible = true;\n }\n\n this.getRenderTarget = function () {\n return renderTarget;\n };\n this.getTextureMatrix = function () {\n return textureMatrix;\n }\n this.onDestroy = function () {\n renderTarget.dispose();\n };\n }\n\n getTextureMatrix: () => Matrix4;\n getRenderTarget: () => WebGLRenderTarget;\n\n}","export const vert_fullscreen = /*glsl*/`\nvarying vec2 vUv;\nvoid main() {\n\tvUv = position.xy * 0.5 + 0.5;\n\tgl_Position = vec4(position.xy, 1.0, 1.0);\n}\n`","\nexport const frag_BoxfilterBlur = `\n#include <common>\nuniform sampler2D tLast;\nuniform sampler2D tBlur;\nuniform float\t uLod;\nuniform float\t uWeight;\nvarying vec2 vUv;\n\nvoid main() {\n\tvec3 col0 = textureLod(tLast, vUv, 0.).rgb;\n\tvec3 col1 = textureLod(tBlur, vUv, uLod).rgb;\n gl_FragColor = vec4(mix(col0, col1, uWeight), 1.);\n}\n`","export const frag_panoramaToCubeMap = `\n#include <xv_common>\n\nvarying vec2 vUv;\nuniform sampler2D tMain;\nuniform int uFace;\nuniform vec4 uTilingOffset;\n\nvec3 uvToXYZ(int face, vec2 uv) {\n if (face == 0) return vec3(-1.0, uv.y, -uv.x);\n else if (face == 1) return vec3(1.0, uv.y, uv.x);\n else if (face == 2) return vec3(-uv.x, -1.0, uv.y);\n else if (face == 3) return vec3(-uv.x, 1.0, -uv.y);\n else if (face == 4) return vec3(-uv.x, uv.y, 1.0);\n else return vec3(uv.x, uv.y, -1.0);\n}\n\nvec4 panoramaToCubeMap(int face, vec2 uv_i) {\n vec2 uv = uv_i * 2.0 - 1.0;\n vec3 dir = normalize(uvToXYZ(face, uv));\n vec2 uv_o = dirToUv(dir);\n uv_o = vec2(uv_o.x, uv_o.y) * uTilingOffset.xy + uTilingOffset.zw;\n return texture(tMain, uv_o);\n}\n\nvoid main() {\n gl_FragColor = panoramaToCubeMap(uFace, vUv);\n}\n`\n\nexport const frag_cubeMapToPanorama = `\n#include <xv_common>\n\nvarying vec2 vUv;\nuniform samplerCube tMain;\n\nvec4 cubeMapToPanorama(vec2 uv_i) {\n return texture(tMain, uvToDir(uv_i));\n}\n\nvoid main() {\n gl_FragColor = cubeMapToPanorama(vUv);\n}\n`","import {\n Color,\n CubeTexture,\n Matrix3,\n Matrix4,\n Quaternion,\n ShaderMaterial,\n Texture,\n UniformsUtils,\n Vector2,\n Vector3,\n Vector4\n} from \"three\";\n\nexport function getShaderMaterial<T extends {\n [name: string]:\n | CubeTexture\n | Texture\n | Int32Array\n | Float32Array\n | Matrix4\n | Matrix3\n | Quaternion\n | Vector4\n | Vector3\n | Vector2\n | Color\n | number\n | boolean\n | Array<any>\n | null\n}>(\n uniforms: T,\n vertexShader: string,\n fragmentShader: string,\n onInit?: (material?: ShaderMaterial) => void\n) {\n const material = class extends ShaderMaterial {\n constructor(parameters = {}) {\n const entries = Object.entries(uniforms)\n // Create unforms and shaders\n super({\n uniforms: entries.reduce((acc, [name, value]) => {\n const uniform = UniformsUtils.clone({ [name]: { value } })\n return {\n ...acc,\n ...uniform,\n }\n }, {}),\n vertexShader,\n fragmentShader,\n })\n // Create getter/setters\n entries.forEach(([name]) =>\n Object.defineProperty(this, name, {\n get: () => this.uniforms[name].value,\n set: (v) => (this.uniforms[name].value = v),\n })\n )\n\n // Assign parameters, this might include uniforms\n Object.assign(this, parameters)\n // Call onInit\n if (onInit) onInit(this)\n }\n } as unknown as typeof ShaderMaterial & T & ShaderMaterial;\n return material;\n}","import { Color, IUniform, Matrix4, ShaderMaterial, Texture, WebGLProgramParametersWithUniforms } from \"three\";\nimport { property } from \"../PropertyManager\";\n\nconst vert_Reflector = `\nuniform mat4 textureMatrix;\nvarying vec4 vUv4;\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 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 vec4 positionWS = modelMatrix * transformed;\n vec4 mvPosition = viewMatrix * positionWS;\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 vUv4 = textureMatrix * transformed;\n\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 = `\nuniform vec3 color;\nuniform float alpha;\nuniform float roughness;\nuniform float metalness;\nuniform sampler2D map;\nuniform sampler2D normalMap;\nuniform sampler2D roughnessMap;\nuniform sampler2D aoMap;\nuniform float aoMapIntensity;\nuniform sampler2D lightMap;\nuniform float lightMapIntensity;\nuniform sampler2D tReflect;\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 vec4 texelNormal = texture2D(normalMap, UV_NORMAL);\n vec3 normal = normalize(vec3(texelNormal.r * 2.0 - 1.0, texelNormal.b, texelNormal.g * 2.0 - 1.0));\n vec3 coord = vUv4.xyz / vUv4.w;\n vec2 reflectUv = coord.xy + coord.z * normal.xz * 0.05;\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, alpha);\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 = texture2D(roughnessMap, UV_ROUGHNESS).g * roughness;\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 irradiance += texture2D(lightMap, UV_LIGHTMAP).rgb * lightMapIntensity;\n\n float lod = roughnessFactor * (1.7 - 0.7 * roughnessFactor) * 6.;\n vec4 reflectColor = textureLod(tReflect, reflectUv, lod);\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 float ambientOcclusion = mix(1., texture2D(aoMap, UV_AO).r, aoMapIntensity);\n float dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\n f_specular *= computeSpecularOcclusion(dotNV, ambientOcclusion, roughnessFactor);\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 defines: { [key: string]: any; } = {\n UV_AO: \"vUv\",\n UV_LIGHTMAP: \"vUv\",\n UV_ROUGHNESS: \"vUv\",\n UV_NORMAL: \"vUv\",\n }\n uniforms: { [uniform: string]: IUniform<any>; } = {\n color: { value: new Color(0xffffff) },\n alpha: { value: 1 },\n map: { value: null },\n tReflect: { value: null },\n textureMatrix: { value: new Matrix4() },\n metalness: { value: 0 },\n roughness: { value: 1 },\n roughnessMap: { value: null },\n normalMap: { value: null },\n aoMap: { value: null },\n aoMapIntensity: { value: 1 },\n lightMap: { value: null },\n lightMapIntensity: { value: 1 },\n }\n\n 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({ min: 0, max: 1, step: 0.01 })\n get alpha() {\n return this.uniforms.alpha.value;\n }\n set alpha(v: number) {\n this.uniforms.alpha.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 get map() {\n return this.uniforms.map.value;\n }\n set map(v: Texture) {\n this.uniforms.map.value = v;\n }\n\n get roughnessMap() {\n return this.uniforms.roughnessMap.value;\n }\n set roughnessMap(v: Texture) {\n this.uniforms.roughnessMap.value = v;\n }\n\n get normalMap() {\n return this.uniforms.normalMap.value;\n }\n set normalMap(v: Texture) {\n this.uniforms.normalMap.value = v;\n }\n\n get aoMap() {\n return this.uniforms.aoMap.value;\n }\n set aoMap(v: Texture) {\n this.uniforms.aoMap.value = v;\n }\n\n get lightMap() {\n return this.uniforms.lightMap.value;\n }\n set lightMap(v: Texture) {\n this.uniforms.lightMap.value = v;\n }\n}","import { ObjectInstance } from \"./ObjectInstance\";\nimport { Viewer } from \"./Viewer\";\n\nexport class Plugin extends ObjectInstance {\n viewer: Viewer;\n type: string = \"Plugin\";\n install?(): void;\n uninstall?(): void;\n onUpdate?(dt: number): void;\n onRender?(dt: number): void;\n}","import { Object3D, Scene } from \"three\";\nimport { Plugin } from \"../Plugin\";\nimport { Viewer } from \"../Viewer\";\n\nexport class DebugPlugin extends Plugin {\n\n static Instance(viewer: Viewer) {\n return viewer.getPlugin(DebugPlugin, true);\n }\n\n scene: Scene = new Scene();\n\n add(node: Object3D) {\n this.scene.add(node);\n return node;\n }\n\n remove(node: Object3D) {\n this.scene.remove(node);\n return node;\n }\n\n onRender(dt: number): void {\n const { renderer, camera } = this.viewer;\n const autoClear = renderer.autoClear;\n renderer.autoClear = false;\n renderer.render(this.scene, camera);\n renderer.autoClear = autoClear;\n }\n}","import { AdditiveBlending, NoBlending, OrthographicCamera, ShaderMaterial, Texture, Vector3, WebGLRenderTarget } from \"three\";\nimport { vert_fullscreen } from \"../../materials\";\n\nexport const LOD_MIN = 4;\nexport const _flatCamera = /*@__PURE__*/ new OrthographicCamera();\n// Golden Ratio\nconst PHI = (1 + Math.sqrt(5)) / 2;\nconst INV_PHI = 1 / PHI;\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nexport const _axisDirections = [\n\t/*@__PURE__*/ new Vector3(1, 1, 1),\n\t/*@__PURE__*/ new Vector3(- 1, 1, 1),\n\t/*@__PURE__*/ new Vector3(1, 1, - 1),\n\t/*@__PURE__*/ new Vector3(- 1, 1, - 1),\n\t/*@__PURE__*/ new Vector3(0, PHI, INV_PHI),\n\t/*@__PURE__*/ new Vector3(0, PHI, - INV_PHI),\n\t/*@__PURE__*/ new Vector3(INV_PHI, 0, PHI),\n\t/*@__PURE__*/ new Vector3(- INV_PHI, 0, PHI),\n\t/*@__PURE__*/ new Vector3(PHI, INV_PHI, 0),\n\t/*@__PURE__*/ new Vector3(- PHI, INV_PHI, 0)];\n\nexport const _Quality = { LOW: 0, MEDIUM: 1, HIGH: 2, ULTRA: 3 }\n\nexport function _setViewport(\n target: WebGLRenderTarget,\n x: number,\n y: number,\n width: number,\n height: number\n) {\n target.viewport.set(x, y, width, height);\n target.scissor.set(x, y, width, height);\n}\n\nexport function _getCommonVertexShader() {\n\n return /* glsl */`\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\t\t\t} else if ( face == 1.0 ) {\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\t\t\t} else if ( face == 2.0 ) {\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\t\t\t} else if ( face == 3.0 ) {\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\t\t\t} else if ( face == 4.0 ) {\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\t\t\t} else if ( face == 5.0 ) {\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\t\t}\n\t`;\n}\n\nexport function _getClearMaterial() {\n return new ShaderMaterial({\n name: \"Clear\",\n uniforms: {\n map: { value: null },\n intensity: { value: 1 }\n },\n vertexShader: vert_fullscreen,\n fragmentShader: /* glsl */ `\n uniform sampler2D map;\n uniform float intensity;\n varying vec2 vUv;\n void main() {\n vec4 col = texture2D(map, vUv);\n gl_FragColor = vec4(col.rgb * intensity, col.a);\n }\n `,\n blending: NoBlending,\n depthWrite: false,\n depthTest: false,\n })\n}\n\nexport function _getCubeMapMaterial() {\n return new ShaderMaterial({\n name: \"CubeMapToCubeUV\",\n uniforms: {\n envMap: { value: null },\n lod: { value: 0 },\n exposure: { value: 1 }\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: /* glsl */`\n precision mediump float;\n precision mediump int;\n\n varying vec3 vOutputDirection;\n uniform samplerCube envMap;\n uniform float lod;\n uniform float exposure;\n\n void main() {\n gl_FragColor = textureCubeLodEXT(envMap, vOutputDirection, lod);\n gl_FragColor.rgb *= exposure;\n }\n `,\n blending: AdditiveBlending,\n depthWrite: false,\n depthTest: false,\n });\n}\n\nexport function _getMipCopyMaterial(\n lodMax: number,\n width: number,\n height: number,\n) {\n return new ShaderMaterial({\n name: \"MipBlurToCubeUV\",\n defines: {\n CUBEUV_TEXEL_WIDTH: 1.0 / width,\n CUBEUV_TEXEL_HEIGHT: 1.0 / height,\n CUBEUV_MAX_MIP: `${lodMax}.0`,\n },\n uniforms: {\n cubeUVMap: { value: null },\n lod: { value: 0 },\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: /* glsl */ `\n precision mediump float;\n precision mediump int;\n\n #define ENVMAP_TYPE_CUBE_UV\n #include <cube_uv_reflection_fragment>\n\n varying vec3 vOutputDirection;\n\n uniform sampler2D cubeUVMap;\n uniform float lod;\n\n void main() {\n vec3 col = bilinearCubeUV(cubeUVMap, vOutputDirection, CUBEUV_MAX_MIP - lod);\n gl_FragColor = vec4(col, 1.);\n }\n `,\n blending: AdditiveBlending,\n depthWrite: false,\n depthTest: false,\n })\n}\n\nexport function _getMipBlurMaterial(\n lodMax: number,\n width: number,\n height: number,\n) {\n return new ShaderMaterial({\n name: \"MipBlurToCubeUV\",\n defines: {\n CUBEUV_TEXEL_WIDTH: 1.0 / width,\n CUBEUV_TEXEL_HEIGHT: 1.0 / height,\n CUBEUV_MAX_MIP: `${lodMax}.0`,\n },\n uniforms: {\n envMap: { value: null },\n cubeUVMap: { value: null },\n weight: { value: 1 },\n lod: { value: 0 },\n exposure: { value: 1 },\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: /* glsl */ `\n precision mediump float;\n precision mediump int;\n\n #define ENVMAP_TYPE_CUBE_UV\n #include <cube_uv_reflection_fragment>\n\n varying vec3 vOutputDirection;\n\n uniform sampler2D cubeUVMap;\n uniform samplerCube envMap;\n uniform float weight;\n uniform float lod;\n uniform float exposure;\n\n void main() {\n vec3 col0 = bilinearCubeUV(cubeUVMap, vOutputDirection, CUBEUV_MAX_MIP - (lod + 1.));\n vec3 col1 = textureCubeLodEXT(envMap, vOutputDirection, lod).rgb * exposure;\n gl_FragColor = vec4(mix(col0, col1, weight), 1.);\n }\n `,\n blending: NoBlending,\n depthWrite: false,\n depthTest: false,\n })\n}","export interface ICallTarget {\n uuid: string;\n}\n\nclass Caller {\n private _target: ICallTarget | null = null;\n private _callback: Function | null = null;\n private _interval: number = 0;\n private _repeat: number = 0;\n\n private _elapsed: number = 0;\n private _lastTime: number = 0;\n private _repeatForever: boolean = false;\n private _pause: boolean = false;\n\n get pause() {\n return this._pause;\n }\n\n set pause(v: boolean) {\n this._pause = v;\n }\n\n get target() {\n return this._target;\n }\n\n get callback() {\n return this._callback;\n }\n\n constructor(target: ICallTarget, callback: Function, interval: number, repeat: number) {\n this._target = target;\n this._callback = callback;\n this._interval = interval;\n this._repeat = repeat;\n this._repeatForever = repeat === -1;\n }\n\n get lived() {\n return this._repeat > 0 || this._repeatForever;\n }\n\n update(dt: number) {\n if (this._pause) return;\n if (this._repeat > 0 || this._repeatForever) {\n this._elapsed += dt;\n if (this._elapsed >= this._interval) {\n this.trigger(this._elapsed - this._lastTime);\n this._elapsed -= this._interval;\n this._lastTime = this._elapsed;\n this._repeat--;\n }\n }\n }\n\n trigger(dt: number) {\n if (this._target && this._callback) {\n this._callback.call(this._target, dt, this._elapsed);\n }\n }\n}\n\nclass Callers {\n private _target!: ICallTarget;\n private _callers!: Caller[];\n\n get target() {\n return this._target;\n }\n\n get callers() {\n return this._callers;\n }\n\n constructor(target: ICallTarget, callers: Caller[]) {\n this._target = target;\n this._callers = callers;\n }\n}\n\nexport class Scheduler {\n private _callers: { [k: string]: Caller[] } = {}\n private _callersArray: Callers[] = [];\n\n pause(target: ICallTarget) {\n let callers = this._callers[target.uuid];\n if (callers) callers.forEach(v => v.pause = true);\n }\n\n resume(target: ICallTarget) {\n let callers = this._callers[target.uuid];\n if (callers) callers.forEach(v => v.pause = false);\n }\n\n schedule(target: ICallTarget, callback: Function, interval: number, repeat: number) {\n let callers = this._callers[target.uuid];\n if (callers === undefined) {\n callers = this._callers[target.uuid] = [];\n this._callersArray.push(new Callers(target, callers));\n }\n callers.push(new Caller(target, callback, interval, repeat));\n }\n\n unshedule(target: ICallTarget, callback: Function) {\n let callers = this._callers[target.uuid];\n if (callers) {\n let index = callers.findIndex(v => v.callback === callback);\n if (index !== -1) callers.splice(index, 1);\n }\n }\n\n unscheduleAll(target: ICallTarget) {\n delete this._callers[target.uuid];\n let index = this._callersArray.findIndex(v => v.target === target);\n if (index !== -1) this._callersArray.splice(index, 1);\n }\n\n update(dt: number) {\n let callers: Caller[];\n let callersArray = this._callersArray;\n for (let j = callersArray.length; j--;) {\n callers = callersArray[j].callers;\n for (let i = callers.length; i--;) {\n if (callers[i].lived) callers[i].update(dt);\n else callers.splice(i, 1);\n }\n }\n }\n}","import { Component } from \"./Component\";\n\nclass Invoker<T> {\n protected _targets: T[] = [];\n protected _callback: (target: T, dt: number) => any;\n\n constructor(callback: (target: T, dt: number) => any) {\n this._callback = callback;\n }\n\n add(target: any) {\n this._targets.push(target);\n }\n\n remove(target: any) {\n let index = this._targets.indexOf(target);\n if (index !== -1) {\n this._targets.splice(index, 1);\n }\n }\n\n invoke(dt: number) {\n let callback = this._callback;\n for (let v of this._targets) {\n callback(v, dt);\n }\n }\n}\n\nclass InvokerOneCall<T> extends Invoker<T> {\n invoke(dt: number) {\n if (this._targets.length > 0) {\n let callback = this._callback;\n for (let v of this._targets) {\n callback(v, dt);\n }\n this._targets.length = 0;\n }\n }\n}\n\nexport class ComponentScheduler {\n startInvoker: Invoker<Component> = new InvokerOneCall(comp => comp.start!());\n updateInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.update!(dt));\n lastUpdateInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.lastUpdate!(dt));\n\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 enableComponent(comp: Component, enable: boolean) {\n if (enable) {\n if (!comp.flags.OnEnableCalled) {\n comp.flags.OnEnableCalled = true;\n if (comp.onEnable) {\n comp.onEnable();\n }\n if (typeof comp.start === \"function\" && !comp.flags.IsStartCalled) {\n comp.flags.IsStartCalled = true;\n this.startInvoker.add(comp);\n }\n if (typeof comp.update === \"function\") {\n this.updateInvoker.add(comp);\n }\n if (typeof comp.lastUpdate === \"function\") {\n this.lastUpdateInvoker.add(comp);\n }\n }\n }\n else {\n if (comp.flags.OnEnableCalled) {\n comp.flags.OnEnableCalled = false;\n if (comp.onDisable) {\n comp.onDisable();\n }\n if (typeof comp.start === \"function\" && !comp.flags.IsStartCalled) {\n this.startInvoker.remove(comp);\n }\n if (typeof comp.update === \"function\") {\n this.updateInvoker.remove(comp);\n }\n if (typeof comp.lastUpdate === \"function\") {\n this.lastUpdateInvoker.remove(comp);\n }\n }\n }\n }\n}","import { Object3D } from \"three\";\nimport { Scheduler } from \"./Scheduler\";\nimport { Component } from \"./Component\";\nimport { ComponentScheduler } from \"./ComponentScheduler\";\nimport { Viewer } from \"./Viewer\";\n\n\ntype ComponentConstructor = new () => Component;\n\ninterface DependentInfo {\n mode: DependentMode;\n components: ComponentConstructor[];\n}\n\nexport enum DependentMode {\n /** Check only, throw error if dependent components do not exist. */\n CheckOnly,\n /** Auto add if dependent components do not exist. */\n AutoAdd\n}\n\nexport function dependencies(\n componentOrComponents: ComponentConstructor | ComponentConstructor[],\n mode: DependentMode = DependentMode.CheckOnly\n) {\n return function <T extends ComponentConstructor>(target: T): void {\n const components = Array.isArray(componentOrComponents) ? componentOrComponents : [componentOrComponents];\n ComponentManager._dependenciesMap.set(target, { components, mode });\n }\n}\n\nexport class ComponentManager {\n static _dependenciesMap = new Map<ComponentConstructor, DependentInfo>();\n\n private _viewer: Viewer;\n private _scheduler: Scheduler = new Scheduler();\n private _componentScheduler: ComponentScheduler = new ComponentScheduler();\n private _componentsMap = new Map<Object3D, Component[]>();\n\n get viewer() {\n return this._viewer;\n }\n\n get scheduler() {\n return this._scheduler;\n }\n\n get componentScheduler() {\n return this._componentScheduler;\n }\n\n constructor(viewer: Viewer) {\n this._viewer = viewer;\n }\n\n destroy() {\n this._componentsMap.forEach(components => components.forEach(comp => comp.destroy()));\n this._componentsMap.clear();\n }\n\n update(dt: number) {\n this._scheduler.update(dt);\n this._componentScheduler.start();\n this._componentScheduler.update(dt);\n this._componentScheduler.lastUpdate(dt);\n }\n\n destroyComponents(node: Object3D) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.forEach(comp => comp.destroy());\n this._componentsMap.delete(node);\n }\n for (let child of node.children) {\n this.destroyComponents(child);\n }\n }\n\n activeComponents(node: Object3D) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.forEach(comp => this._activeComponent(comp, node.visible));\n }\n for (let child of node.children) {\n this.activeComponents(child);\n }\n }\n\n addComponent<T extends Component>(node: Object3D | Component, instance: T): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: { new(): T }): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: any): T {\n let root = node instanceof Component ? node.node : node;\n let func = typeof constructor === \"function\";\n let component = this._findComponent(root, func ? constructor : constructor.constructor) as any;\n if (component === undefined) {\n component = func ? new constructor() : constructor;\n component.node = root;\n component.manager = this;\n component.viewer = this._viewer;\n\n this._addDendencies(root, component.constructor);\n\n if (!component.flags.OnLoadCalled) {\n component.flags.OnLoadCalled = true;\n if (component.onLoad) {\n component.onLoad();\n }\n }\n\n let components = this._componentsMap.get(root);\n if (components === undefined) {\n this._componentsMap.set(root, [component]);\n }\n else {\n components.push(component);\n }\n\n this._activeComponent(component, component.enabled);\n }\n return component as T;\n }\n\n removeComponent(node: Object3D, component: Component) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.splice(components.indexOf(component), 1);\n }\n return this;\n }\n\n getComponent<T extends Component>(node: Object3D, constructor: { new(): T }, autoAdd: boolean = false): T {\n let comp = this._findComponent(node, constructor) as T;\n if (comp === undefined && autoAdd) {\n comp = this.addComponent(node, constructor);\n }\n return comp;\n }\n\n getComponentsInChidren<T extends Component>(node: Object3D, constructor: { new(): T }, out: T[] = []): T[] {\n let components = this._componentsMap.get(node);\n if (components) {\n for (let i = components.length; i--;) {\n if (components[i] instanceof (constructor as any)) out.push(components[i] as any);\n }\n for (let child of node.children) {\n this.getComponentsInChidren(child, constructor, out);\n }\n }\n return out;\n }\n\n traverseComponents(callback: (comp: Component) => void) {\n this._componentsMap.forEach(v => v.forEach(callback));\n }\n\n private _addDendencies(node: Object3D, constructor: ComponentConstructor) {\n while (constructor !== Component) {\n let dependentInfo = ComponentManager._dependenciesMap.get(constructor);\n if (dependentInfo) {\n const { components, mode } = dependentInfo;\n for (const dep of components) {\n if (!this.getComponent(node, dep)) {\n if (mode === DependentMode.AutoAdd) {\n this.addComponent(node, dep);\n } else {\n throw `Should add ${dep.name} before adding ${constructor.name}`;\n }\n }\n }\n }\n constructor = Object.getPrototypeOf(constructor);\n }\n }\n\n private _findComponent(node: Object3D, constructor: any) {\n let components = this._componentsMap.get(node);\n if (components) {\n for (let i = components.length; i--;) {\n let component = components[i];\n if (component instanceof constructor) {\n return component;\n }\n }\n }\n }\n\n protected _activeComponent(comp: Component, active: boolean) {\n this._componentScheduler.enableComponent(comp, active);\n }\n}","import { Task } from \"./Task\";\nimport { EventEmitter } from \"./base\";\n\n\nexport class TaskManager extends EventEmitter {\n private _tasks: Task[] = [];\n private _taskIndex: number = 0;\n private _percent: number = 0;\n\n get percent() {\n return this._percent;\n }\n\n constructor(\n public onComplete?: () => void,\n public onProgress?: (task: Task, loaded: number, total: number) => void,\n public onError?: (task: Task) => void,\n ) {\n super();\n }\n\n destroy() {\n this._tasks.length = 0;\n this._taskIndex = 0;\n this._percent = 0;\n }\n\n add(task: Task) {\n this._tasks.push(task);\n }\n\n update() {\n let task = this._tasks[this._taskIndex];\n if (task) {\n try {\n task.excute();\n }\n catch (e) {\n console.error(e);\n this.onError && this.onError(task);\n }\n this._percent = ++this._taskIndex / this._tasks.length;\n this.onProgress && this.onProgress(task, this._taskIndex, this._tasks.length);\n\n if (this._taskIndex === this._tasks.length) {\n this._percent = 1;\n this.onComplete && this.onComplete();\n }\n }\n }\n}","import { FloatType, HalfFloatType, UnsignedByteType, WebGLRendererParameters } from \"three\";\nimport { SystemInfo } from \"./SystemInfo\";\nimport { Logger } from \"./base\";\n\nexport function parepareWebGL(canvas: HTMLCanvasElement, props: WebGLRendererParameters) {\n let isSupportedBrowser = (SystemInfo.isChrome || SystemInfo.isSafari || SystemInfo.isEdge || SystemInfo.isFirefox || SystemInfo.isOpera) && !SystemInfo.isIE;\n if (!isSupportedBrowser) {\n Logger.error(\"Unsupport platform\");\n return null;\n }\n if (!(canvas instanceof HTMLCanvasElement)) {\n Logger.error(\"Canvas is null\");\n return null;\n }\n\n let webglOpts = Object.assign({\n alpha: false,\n depth: true,\n stencil: true,\n antialias: false,\n premultipliedAlpha: true,\n preserveDrawingBuffer: false,\n powerPreference: \"high-performance\",\n failIfMajorPerformanceCaveat: false\n }, props);\n\n if (window.WebGL2RenderingContext) {\n try {\n const gl = canvas.getContext(\"webgl2\", webglOpts) as WebGL2RenderingContext;\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: HalfFloatType,\n DATA_FLOAT_TYPE: FloatType\n }\n }\n catch (err) {\n Logger.error(err);\n return null;\n }\n }\n else if (window.WebGLRenderingContext) {\n const gl = (canvas.getContext(\"webgl\", webglOpts) || canvas.getContext(\"webgl2\", webglOpts) || canvas.getContext(\"experimental-webgl\", webglOpts)) as WebGLRenderingContext;\n if ((gl.getExtension(\"OES_texture_float\") || gl.getExtension(\"OES_texture_half_float\")) && gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS)) {\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: SystemInfo.isIOS || gl.getExtension(\"OES_texture_half_float\") ? HalfFloatType : FloatType,\n DATA_FLOAT_TYPE: FloatType,\n }\n }\n else if (this._floatPacking) {\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: UnsignedByteType,\n DATA_FLOAT_TYPE: UnsignedByteType\n }\n }\n Logger.debug(\"Unspport float type in current platform\");\n return null;\n }\n return null;\n}","export enum Orientation {\n AUTO,\n LANDSCAPE,\n PORTRAIT,\n}","import { LoadingManager } from \"three\";\nimport { TextureSettings } from \"../TextureSettings\";\nimport { aLoader } from \"./aLoader\";\n\nexport interface AssetProperties extends TextureSettings {\n url: string,\n ext?: string,\n buffer?: ArrayBuffer,\n onProgress?: (event: ProgressEvent) => void,\n}\n\nexport type LoaderConstructor = new (manager: ResourceManager) => aLoader;\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 _getTextureKey(url: string, settings: TextureSettings) {\n let keys = [url];\n for (let k in settings) {\n if (settings[k] !== undefined) keys.push(k + \"=\" + settings[k]);\n }\n return keys.join(\",\");\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 path: string = \"\";\n resourcePath: string = \"\";\n dracoPath: string = \"\";\n loadingManager: LoadingManager;\n\n private _caches: Map<string, any> = new Map();\n private _loaders: Map<string, aLoader> = new Map();\n\n constructor(props: {\n path: string;\n resourcePath: string;\n dracoPath: string;\n loadingManager: LoadingManager;\n }) {\n this.path = props.path;\n this.resourcePath = props.resourcePath;\n this.dracoPath = props.dracoPath;\n this.loadingManager = props.loadingManager;\n }\n\n destroy() {\n this._caches.clear();\n this._loaders.clear();\n }\n\n getLoader(ext: string) {\n return this._loaders.get(ext);\n }\n\n addLoader(Loader: LoaderConstructor) {\n let loader = new Loader(this);\n for (let ext of loader.extension) {\n this._loaders.set(ext, loader);\n }\n }\n\n loadAsset<T = any>({ url, buffer, ext, onProgress, ...props }: AssetProperties) {\n return new Promise<T>((resolve, reject) => {\n\n const ext_ = ResourceManager.extension(url);\n const texSettings = ResourceManager._splitTextureSettings(props);\n const key = ResourceManager._getTextureKey(url, texSettings);\n\n let result = this._caches.get(key);\n if (result) {\n resolve(result);\n }\n else {\n const onLoad = (file) => {\n this._caches.set(key, file);\n resolve(file);\n }\n const sel = ext || ext_;\n if (this._loaders.has(sel)) {\n this._loaders.get(sel).load({\n url,\n buffer,\n texSettings,\n onProgress,\n onLoad,\n onError: (e) => {\n console.error(`${url} not exist`, e)\n },\n });\n }\n else {\n reject(\"ResourceManager.loadAsset: missing loader for \" + url);\n }\n }\n })\n }\n}","import { __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}","import { Plugin } from \"./Plugin\";\nimport { PropertyManager } from \"./PropertyManager\";\nimport { Viewer } from \"./Viewer\";\nimport { Logger, getClassInstance } from \"./base\";\nimport { __C, __Comp } from \"./types\";\n\nexport class PluginManager {\n private _viewer: Viewer;\n private _plugins: Plugin[] = [];\n private _pluginsMap: Map<Object, Plugin> = new Map();\n\n get viewer() {\n return this._viewer\n }\n\n constructor(viewer: Viewer) {\n this._viewer = viewer;\n }\n\n destroy() {\n this._plugins.forEach(plugin => plugin.uninstall && plugin.uninstall());\n this._plugins.length = 0;\n this._pluginsMap.clear();\n }\n\n update(dt: number) {\n this._plugins.forEach(plugin => plugin.onUpdate && plugin.onUpdate(dt));\n }\n\n render(dt: number) {\n this._plugins.forEach(plugin => plugin.onRender && plugin.onRender(dt));\n }\n\n traversePlugins(callback: (plugin: Plugin) => void) {\n this._plugins.forEach(callback);\n }\n\n getPlugin<T extends Plugin>(plugin: new (...args: any[]) => T, autoAdd: boolean = false): T {\n let ins = this._pluginsMap.get(plugin);\n if (ins === undefined && autoAdd) {\n ins = this.addPlugin(plugin);\n }\n return ins as T;\n }\n\n addPlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>): T;\n addPlugin(plugin: any) {\n const ins = getClassInstance(plugin);\n if (this._pluginsMap.has(ins.constructor)) {\n Logger.warn(\"Plugin already added\");\n }\n else {\n ins.viewer = this._viewer;\n ins.install && ins.install();\n this._plugins.push(ins);\n this._pluginsMap.set(ins.constructor, ins);\n PropertyManager._applyClassProperties(ins.type, ins.constructor);\n }\n return ins;\n }\n\n removePlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>): void;\n removePlugin(plugin: any) {\n const key = typeof plugin === \"function\" ? plugin : plugin.constructor;\n const ins = this._pluginsMap.get(key);\n if (ins) {\n ins.uninstall && ins.uninstall();\n this._plugins.splice(this._plugins.indexOf(ins), 1);\n this._pluginsMap.delete(key);\n }\n }\n\n}","import {\n BufferGeometry,\n Camera,\n ClampToEdgeWrapping,\n ColorSpace,\n DataTexture,\n DirectionalLightShadow,\n Euler,\n Float32BufferAttribute,\n FloatType,\n LinearFilter,\n LinearMipMapLinearFilter,\n LinearSRGBColorSpace,\n LinearToneMapping,\n LoadingManager,\n Material,\n MathUtils,\n Mesh,\n NearestFilter,\n Object3D,\n OrthographicCamera,\n PCFSoftShadowMap,\n PerspectiveCamera,\n RGBAFormat,\n Scene,\n ShadowMapType,\n SRGBColorSpace,\n Texture,\n TextureDataType,\n ToneMapping,\n UnsignedByteType,\n UVMapping,\n Vector3,\n WebGLCubeRenderTarget,\n WebGLRenderer,\n WebGLRendererParameters,\n WebGLRenderTarget,\n} from \"three\";\n\nimport { EventEmitter, getClassInstance } from \"./base\";\nimport { ComponentManager } from \"./ComponentManager\";\nimport { TaskManager } from \"./TaskManager\";\nimport { parepareWebGL } from \"./WebGL\";\nimport { DeviceInput } from \"./DeviceInput\";\nimport { Orientation } from \"./enums/Orientation\";\nimport { AssetProperties, LoaderConstructor, ResourceManager } from \"./asset/ResourceManager\";\nimport { __C, __Comp, __P } from \"./types\";\nimport { Component } from \"./Component\";\nimport { applyProps } from \"./Utils\";\nimport { SystemInfo } from \"./SystemInfo\";\nimport { PluginManager } from \"./PluginManager\";\nimport { Plugin } from \"./Plugin\";\nimport { TweenManager } from \"./tween\";\nimport { aGLTFLoader, aHDRLoader, aJSONLoader, aTextureLoader } from \"./loaders\";\nimport { Task } from \"./Task\";\n\nexport class Viewer extends EventEmitter {\n static __target: Vector3 = new Vector3();\n static __worldPos: Vector3 = new Vector3();\n\n static _shadowCameraKeys = [\"top\", \"bottom\", \"left\", \"right\", \"near\", \"far\"];\n static _setDirectLightShadow(shadow: DirectionalLightShadow, props: number[]) {\n const shadowCamera = shadow.camera;\n for (let i = 0; i < props.length && i < 6; i++) {\n shadowCamera[Viewer._shadowCameraKeys[i]] = props[i];\n }\n if (props.length > 6) {\n shadow.bias = props[6];\n }\n if (props.length > 8) {\n shadow.mapSize.set(props[7], props[8]);\n }\n return shadow;\n }\n\n static compileMaterial(\n renderer: WebGLRenderer,\n scene: Scene,\n camera: Camera,\n target: Material | Material[],\n ) {\n Viewer.fullscreenMesh.material = target;\n renderer.compile(Viewer.fullscreenMesh, camera, scene);\n }\n\n static compileObject3D(\n renderer: WebGLRenderer,\n scene: Scene,\n camera: Camera,\n target: Object3D\n ) {\n renderer.compile(target, camera, scene);\n }\n\n static compileTexture(\n renderer: WebGLRenderer,\n target: Texture | Texture[]\n ) {\n if (Array.isArray(target)) {\n for (let v of target) {\n renderer.initTexture(v);\n }\n }\n else {\n renderer.initTexture(target);\n }\n }\n\n static Blit(\n renderer: WebGLRenderer,\n renderTarget: WebGLRenderTarget,\n material: Material,\n lod?: number,\n face?: number\n ) {\n Viewer.fullscreenMesh.material = material;\n const RT = renderer.getRenderTarget();\n renderer.setRenderTarget(renderTarget, face, lod);\n renderer.render(Viewer.fullscreenMesh, Viewer.fullscreenCamera);\n renderer.setRenderTarget(RT);\n }\n\n static createFullscreenTriangle() {\n let geometry = new BufferGeometry();\n geometry.setAttribute('position', new Float32BufferAttribute([- 1, 3, 0, - 1, - 1, 0, 3, - 1, 0], 3));\n geometry.setAttribute('uv', new Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2));\n return geometry;\n }\n\n static findChild<T extends Object3D>(node: T, path: string): 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\n static getChildByName<T extends Object3D>(node: T, name: string): T {\n return Viewer.getObject(node, v => (v.name === name) && v);\n }\n\n static getObject<T extends Object3D>(node: T, filter: (value: T) => any, group: boolean = false) {\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 return objects[0];\n }\n\n static __emtpyObject = {};\n static _getObjectValue<T extends Object & { name: string }>(object: any, name?: string, group: boolean = false) {\n if (name) {\n if (group) {\n return Object.values<T>(object || Viewer.__emtpyObject).filter(v => v.name === name);\n }\n return Object.values<T>(object || Viewer.__emtpyObject).find(v => v.name === name);\n }\n return Object.values<T>(object);\n }\n\n static getMaterial<T extends Material>(node: Object3D): T[];\n static getMaterial<T extends Material>(node: Object3D, name: string): T;\n static getMaterial(node: Object3D, name?: string, group: boolean = false) {\n return Viewer._getObjectValue<Material>(node.userData.materials, name, group);\n }\n\n static getTexture<T extends Texture>(node: Object3D): T[];\n static getTexture<T extends Texture>(node: Object3D, name: string): T;\n static getTexture(node: Object3D, name?: string, group: boolean = false) {\n return Viewer._getObjectValue<Texture>(node.userData.textures, name, group);\n }\n\n static getMesh<T extends Mesh>(node: Object3D): T[];\n static getMesh<T extends Mesh>(node: Object3D, name: string): T;\n static getMesh(node: Object3D, name?: string, group: boolean = false) {\n return Viewer._getObjectValue<Mesh>(node.userData.meshes, name, group);\n }\n\n static fullscreenMesh: Mesh = new Mesh(Viewer.createFullscreenTriangle());\n static fullscreenCamera: OrthographicCamera = new OrthographicCamera(- 1, 1, 1, - 1, 0, 1);\n static _instanceCount: number = 0;\n\n private _instanceId: number = Viewer._instanceCount++;\n private _root: HTMLElement;\n private _canvas: HTMLCanvasElement;\n private _gl: WebGLRenderingContext | WebGL2RenderingContext;\n private _RENDER_TARGET_FLOAT_TYPE: TextureDataType;\n private _DATA_FLOAT_TYPE: TextureDataType;\n\n private _scene: Scene;\n private _camera: PerspectiveCamera;\n private _renderer: WebGLRenderer;\n private _input: DeviceInput;\n\n private _dpr: number = 1;\n private _width: number = 1;\n private _height: number = 1;\n private _viewport: { width: number, height: number, factor: number } = { width: 1, height: 1, factor: 1 };\n private _orientation: Orientation = Orientation.AUTO;\n\n private _running: boolean = false;\n private _rootRotated: boolean = false;\n\n private _time: number = 0;\n private _lastTime: number = 0;\n private _lastFrameTime: number = 0;\n private _targetFrameRate: number = -1;\n private _fixedFrameTime: boolean = false;\n private _autoResize: boolean = true;\n\n private _taskManager: TaskManager;\n private _resourceManager: ResourceManager;\n private _componentManager: ComponentManager;\n private _pluginManager: PluginManager;\n private _tweenManager: TweenManager;\n private _loadingManager: LoadingManager;\n\n get instanceId() {\n return this._instanceId;\n }\n get root() {\n return this._root;\n }\n get time() {\n return this._time;\n }\n get scene() {\n return this._scene;\n }\n get camera() {\n return this._camera;\n }\n get renderer() {\n return this._renderer;\n }\n get canvas() {\n return this._canvas;\n }\n get gl() {\n return this._gl;\n }\n get RENDER_TARGET_FLOAT_TYPE() {\n return this._RENDER_TARGET_FLOAT_TYPE;\n }\n get DATA_FLOAT_TYPE() {\n return this._DATA_FLOAT_TYPE;\n }\n get dpr() {\n return this._dpr;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get viewport() {\n return this._viewport;\n }\n get rootRotated() {\n return this._rootRotated;\n }\n get input() {\n return this._input;\n }\n get targetFrameRate() {\n return this._targetFrameRate;\n }\n set targetFrameRate(v: number) {\n this._targetFrameRate = Math.max(0.001, v);\n }\n\n get loadingManager() {\n return this._loadingManager;\n }\n get resourceManager() {\n return this._resourceManager;\n }\n get taskManager() {\n return this._taskManager;\n }\n\n constructor({\n root,\n canvas,\n autoStart = true,\n autoResize = true,\n shadows = false,\n camera = { fov: 45, near: 0.1, far: 1000, position: new Vector3(0, 0, 4) },\n targetFrameRate = -1,\n fixedFrameTime = false,\n colorSpace = SRGBColorSpace,\n toneMapping = LinearToneMapping,\n toneMappingExposure = 1,\n maxDPR = 1.5,\n path = \"\",\n resourcePath = \"\",\n dracoPath = \"https://www.gstatic.com/draco/v1/decoders/\",\n orientation = Orientation.AUTO,\n loader = {},\n tasker = {},\n ...webglOpts\n }: {\n root?: HTMLElement;\n canvas?: HTMLCanvasElement;\n targetFrameRate?: number;\n fixedFrameTime?: boolean;\n autoStart?: boolean;\n autoResize?: boolean;\n shadows?: boolean | ShadowMapType;\n colorSpace?: ColorSpace;\n toneMapping?: ToneMapping;\n toneMappingExposure?: number;\n maxDPR?: number;\n path?: string;\n resourcePath?: string;\n dracoPath?: string;\n orientation?: Orientation;\n camera?: {\n fov?: number;\n aspect?: number;\n near?: number;\n far?: number;\n position?: Vector3;\n rotation?: Euler;\n };\n loader?: {\n onLoad?: () => void,\n onProgress?: (url: string, loaded: number, total: number) => void,\n onError?: (url: string) => void,\n };\n tasker?: {\n onComplete?: () => void,\n onProgress?: (target: Object, loaded: number, total: number) => void,\n onError?: (target: Object) => void,\n };\n } & WebGLRendererParameters = {}) {\n super();\n const el = canvas || document.getElementById(\"canvas\") as HTMLCanvasElement;\n const webgl = parepareWebGL(el, webglOpts);\n if (!webgl) {\n throw Error(\"Unsupport WebGL in current platform\");\n }\n\n this._root = root || el;\n this._canvas = el;\n this._gl = webgl.gl;\n this._RENDER_TARGET_FLOAT_TYPE = webgl.RENDER_TARGET_FLOAT_TYPE;\n this._DATA_FLOAT_TYPE = webgl.DATA_FLOAT_TYPE;\n this._dpr = Math.min(maxDPR, window.devicePixelRatio);\n this._orientation = orientation;\n\n this._scene = new Scene();\n this._camera = applyProps(new PerspectiveCamera(), camera);\n this._renderer = new WebGLRenderer({ canvas: el, context: webgl.gl });\n this._renderer.setPixelRatio(this._dpr);\n this._renderer.outputColorSpace = colorSpace;\n this._renderer.toneMapping = toneMapping;\n this._renderer.toneMappingExposure = toneMappingExposure;\n this._renderer.shadowMap.enabled = !!shadows;\n this._renderer.shadowMap.type = typeof shadows === \"boolean\" ? PCFSoftShadowMap : shadows;\n this._renderer.info.autoReset = false;\n\n const loadingManager = this._loadingManager = new LoadingManager(loader.onLoad, loader.onProgress, loader.onError);\n this._resourceManager = new ResourceManager({ path, resourcePath, dracoPath, loadingManager });\n this._taskManager = new TaskManager(tasker.onComplete, tasker.onProgress, tasker.onError);\n this._componentManager = new ComponentManager(this);\n this._pluginManager = new PluginManager(this);\n this._tweenManager = new TweenManager();\n\n this._autoResize = autoResize;\n this._targetFrameRate = targetFrameRate;\n this._input = new DeviceInput(this);\n this._input.addEventListeners();\n\n this._addDefaultLoaders();\n\n if (autoStart) this.start();\n }\n\n destroy() {\n this.stop();\n\n this._renderer.dispose();\n this._taskManager.destroy();\n this._resourceManager.destroy();\n this._componentManager.destroy();\n this._pluginManager.destroy();\n this._tweenManager.destroy();\n this._input.removeAllListeners();\n }\n\n private _addDefaultLoaders() {\n this.addLoader(aGLTFLoader);\n this.addLoader(aHDRLoader);\n this.addLoader(aTextureLoader);\n this.addLoader(aJSONLoader);\n }\n\n private _frame(time: number) {\n this._time = time;\n\n if (this._targetFrameRate > -1) {\n const interval = 1 / this._targetFrameRate;\n const delta = this._time - this._lastFrameTime;\n\n if (delta >= interval) {\n this.loop(this._fixedFrameTime ? interval : this._time - this._lastTime);\n this._lastTime = this._time;\n this._lastFrameTime = this._time - (delta % interval);\n }\n }\n else {\n this.loop(this._time - this._lastTime);\n this._lastTime = this._time;\n }\n }\n\n loop(dt: number) {\n if (this._autoResize) this.resize();\n\n dt = Math.min(dt, 0.067);\n this.update(dt);\n this.render(dt);\n }\n\n update(dt: number) {\n this._taskManager.update();\n this._tweenManager.update(this._time);\n this._componentManager.update(dt);\n this._pluginManager.update(dt);\n }\n\n render(dt: number) {\n this._renderer.info.reset();\n this._onRender(dt);\n this._pluginManager.render(dt);\n }\n\n _onRender(dt: number) {\n this._renderer.render(this._scene, this._camera);\n }\n\n _onResize(width: number, height: number) {\n this._renderer.setSize(width, height);\n }\n\n start() {\n if (this._running == false) {\n this._running = true;\n const frameCallback = (time: number) => {\n if (this._running) {\n this._frame(time * 0.001);\n requestAnimationFrame(frameCallback);\n }\n }\n requestAnimationFrame(frameCallback);\n }\n return this;\n }\n\n stop() {\n this._running = false;\n this._time = this._lastTime = 0;\n return this;\n }\n\n resize(\n width: number = window.innerWidth,\n height: number = window.innerHeight\n ) {\n this._rootRotated =\n this._orientation === Orientation.LANDSCAPE ? width < height :\n this._orientation === Orientation.PORTRAIT ? width > height : false;\n\n if (this._rootRotated) {\n let tmp = width;\n width = height;\n height = tmp;\n }\n\n if (this._width !== width ||\n this._height !== height\n ) {\n this._width = width;\n this._height = height;\n\n let 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 let camera = this._camera as any;\n if (camera.isOrthographicCamera) {\n this._viewport = { width: width / camera.zoom, height: height / camera.zoom, factor: 1 };\n }\n else if (camera.isPerspectiveCamera) {\n if (!camera.manual) {\n camera.aspect = width / height;\n camera.updateProjectionMatrix();\n }\n let distance = camera.getWorldPosition(Viewer.__worldPos).distanceTo(Viewer.__target);\n let h = 2 * Math.tan(MathUtils.degToRad(camera.fov * 0.5)) * distance;\n let w = h * width / height;\n this._viewport = { width: w, height: h, factor: width / w };\n }\n\n this._onResize(width, height);\n this.emit(DeviceInput.RESIZE, width, height);\n }\n }\n\n loadAsset(props: AssetProperties) {\n return this._resourceManager.loadAsset(props);\n }\n\n getLoader(ext: string) {\n return this._resourceManager.getLoader(ext);\n }\n\n addLoader(Loader: LoaderConstructor) {\n this._resourceManager.addLoader(Loader);\n }\n\n timeline(target: Object) {\n return this._tweenManager.timeline(target);\n }\n\n killTweensOf(target: Object) {\n this._tweenManager.killTweensOf(target);\n }\n\n traverseMaterials(callback: (mat: Material) => void) {\n Viewer.getObject(this._scene, (item: any) => {\n if (item.material) {\n if (Array.isArray(item.material)) item.material.forEach(callback);\n else callback(item.material);\n }\n }, true)\n }\n\n traversePlugins(callback: (plugin: Plugin) => void) {\n return this._pluginManager.traversePlugins(callback);\n }\n\n getPlugin<T extends Plugin>(plugin: new (...args: any[]) => T, autoAdd?: boolean): T {\n return this._pluginManager.getPlugin(plugin, autoAdd);\n }\n\n addPlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>, props?: __P<T, K>): T;\n addPlugin(plugin: any, props: any) {\n const ins = this._pluginManager.addPlugin(plugin);\n applyProps(ins, props);\n return ins;\n }\n\n removePlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>): void;\n removePlugin(plugin: any) {\n this._pluginManager.removePlugin(plugin);\n }\n\n getComponent<T extends Component>(node: Object3D, constructor: { new(): T }, autoAdd?: boolean): T {\n return this._componentManager.getComponent(node, constructor, autoAdd);\n }\n\n traverseComponents(callback: (comp: Component) => void) {\n return this._componentManager.traverseComponents(callback);\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 return this._componentManager.addComponent(node, constructor);\n }\n\n removeComponent(node: Object3D, component: Component) {\n return this._componentManager.removeComponent(node, component);\n }\n\n addTask(task: Task) {\n this._taskManager.add(task);\n }\n\n addNode<T, K extends __C<T>>(object: T | K & __C<T>, props?: __P<T, K>): T;\n addNode(object: any, {\n args,\n debug,\n scale,\n position,\n rotation,\n layer,\n shadowArgs,\n makeDefault,\n component,\n parent = this._scene,\n ...props\n }: any = {}\n ) {\n let node = null;\n let ins = getClassInstance(object, args);\n if (ins.isObject3D) {\n node = ins;\n parent.add(ins);\n }\n else if (ins instanceof Component) {\n node = ins.node || new Object3D();\n parent.add(node);\n this._componentManager.addComponent(node, ins);\n }\n else {\n throw Error(\"Viewer.addNode: unsuport object\");\n }\n\n if (component) {\n const components = Array.isArray(component) ? component : [component];\n for (let ins of components) {\n this._componentManager.addComponent(node, ins);\n }\n }\n if (layer) {\n node.layers.mask = layer;\n }\n if (scale || position || rotation) {\n applyProps(node, { scale, position, rotation });\n }\n if (props) {\n applyProps(ins, props);\n }\n\n if (ins.isCamera && makeDefault) {\n ins.manual = ins.aspect !== this._camera.aspect;\n this._camera = ins;\n }\n if (shadowArgs) {\n if (node.isDirectionalLight) Viewer._setDirectLightShadow(node.shadow, shadowArgs);\n }\n\n return ins;\n }\n\n removeNode(node: Object3D) {\n this._componentManager.destroyComponents(node);\n node.removeFromParent();\n }\n\n activeNode(node: Object3D, active: boolean) {\n this._componentManager.activeComponents(node);\n node.visible = active;\n return node;\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: BufferSource,\n width: number,\n height: number,\n floatType: boolean = false,\n nearest: boolean = true,\n ) {\n return new DataTexture(\n data, width, height,\n RGBAFormat,\n floatType ? FloatType : UnsignedByteType,\n UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping,\n nearest ? NearestFilter : LinearFilter,\n nearest ? NearestFilter : LinearFilter,\n 0\n );\n }\n\n /**\n * 传送门,得到一个全新的场景\n * @param callback 禁止使用异步函数,会导致状态错误\n * @returns \n */\n portal<T = any>(callback: () => T) {\n const scene = this._scene;\n const camera = this._camera;\n this._scene = new Scene();\n const result = callback();\n this._scene = scene;\n this._camera = camera;\n return result;\n }\n\n blit(\n renderTarget: WebGLRenderTarget,\n material: Material,\n lod?: number,\n face?: number\n ) {\n Viewer.Blit(this._renderer, renderTarget, material, lod, face);\n }\n\n compile(target?: Object3D | Scene | Material | Texture): void;\n compile(target?: Material[]): void;\n compile(target?: any) {\n if (Array.isArray(target)) {\n if (target.every(v => v.isMaterial)) {\n Viewer.compileMaterial(this._renderer, this._scene, this._camera, target);\n }\n else {\n throw Error(\"Viewer.compile: unsuport material\");\n }\n }\n else if (typeof target === \"object\") {\n if (target.isMaterial) {\n Viewer.compileMaterial(this._renderer, this._scene, this._camera, target);\n }\n else if (target.isObject3D) {\n if (target.meshData.materials) {\n Viewer.compileMaterial(this._renderer, this._scene, this._camera, Object.values(target.meshData.materials));\n }\n if (target.meshData.textures) {\n Viewer.compileTexture(this._renderer, Object.values(target.meshData.textures));\n }\n if (!target.meshData.meshes) {\n Viewer.compileObject3D(this._renderer, this._scene, this._camera, target);\n }\n }\n else if (target.isTexture) {\n Viewer.compileTexture(this._renderer, target);\n }\n }\n else {\n Viewer.compileObject3D(this._renderer, this._scene, this._camera, this._scene);\n }\n }\n}","import { CubeTexture, Mesh, PMREMGenerator, ShaderMaterial, Texture, WebGLRenderTarget, WebGLRenderer } from \"three\";\nimport { LOD_MIN, _Quality, _axisDirections, _flatCamera, _getClearMaterial, _getCubeMapMaterial, _setViewport } from \"./utils\";\nimport { Viewer } from \"../../Viewer\";\nimport { MergeInfo } from \"./MergeInfo\";\n\nexport class MergeRefectPass {\n private _pmremGenerator: any;\n private _reflectMap: Texture;\n private _envMapTarget: WebGLRenderTarget;\n private _sourceTarget: WebGLRenderTarget;\n\n get envMapTarget() {\n return this._envMapTarget;\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 viewer.scene.environment = this._envMapTarget.texture;\n }\n\n dispose() {\n this._sourceTarget.dispose();\n this._envMapTarget.dispose();\n this._pmremGenerator.dispose();\n }\n\n mergeReflect(info: MergeInfo) {\n this._pmremGenerator._copyTexture(this._envMapTarget, this._sourceTarget.texture, info.envMapIntensity);\n this._pmremGenerator._mergeReflect(this._envMapTarget, this._reflectMap, info.quality);\n\n info.envMapTarget = this._envMapTarget;\n info.lodMax = this._pmremGenerator._lodMeshes.length - 1;\n }\n\n private _getPMREMExtension(renderer: WebGLRenderer) {\n const pmremGenerator = new PMREMGenerator(renderer) as any;\n pmremGenerator._fromTextureExtension = function (reflectMap: CubeTexture, envMap?: Texture) {\n const target = envMap ? this._fromTexture(envMap) : this._fromCubeTexture(reflectMap);\n this._cubeMapMaterial = _getCubeMapMaterial();\n this._copyTexMaterial = _getClearMaterial();\n this._copyMesh = new Mesh(Viewer.fullscreenMesh.geometry, this._copyTexMaterial);\n this._lodMeshes = this._lodPlanes.map(v => new Mesh(v, this._cubeMapMaterial));\n this._sourceInit = false;\n return target;\n }\n pmremGenerator._fromCubeTexture = function (texture: CubeTexture) {\n this._setSize(texture.image.length === 0 ? 16 : (texture.image[0].width || texture.image[0].image.width));\n return this._allocateTargets();\n }\n pmremGenerator._copyTexture = function (\n targetOut: WebGLRenderTarget,\n texture: Texture,\n intensity: number = 1,\n ) {\n const uniforms = this._copyTexMaterial.uniforms;\n uniforms.map.value = texture;\n uniforms.intensity.value = intensity;\n\n targetOut.scissorTest = false;\n _setViewport(targetOut, 0, 0, targetOut.width, targetOut.height);\n\n const renderer = this._renderer;\n renderer.autoClear = true;\n renderer.setRenderTarget(targetOut);\n renderer.render(this._copyMesh, _flatCamera);\n renderer.setRenderTarget(null);\n }\n pmremGenerator._clearTexture = function (\n targetOut: WebGLRenderTarget,\n intensity?: number,\n ) {\n this._copyTexture(targetOut, this._sourceTarget.texture, intensity);\n }\n pmremGenerator._mergeReflect = function (\n sourceTarget: WebGLRenderTarget,\n reflectMap: CubeTexture,\n quality: number,\n ) {\n const renderer = this._renderer;\n const autoClear = renderer.autoClear;\n const cubeMapMaterial = this._cubeMapMaterial;\n\n const uniforms = this._cubeMapMaterial.uniforms;\n uniforms.envMap.value = reflectMap;\n\n renderer.autoClear = false;\n\n if (quality === _Quality.HIGH) {\n for (let i = 0; i < this._lodMeshes.length - 1; i++) {\n uniforms.lod.value = i < 5 ? 0 : i;\n this._blit(sourceTarget, i, cubeMapMaterial);\n }\n }\n else if (quality === _Quality.MEDIUM) {\n for (let i = 0; i < this._lodMeshes.length; i++) {\n if (i < 4) {\n uniforms.lod.value = 0;\n this._blit(sourceTarget, i, cubeMapMaterial);\n }\n else {\n this._pmremblur(sourceTarget, i - 1, i);\n }\n }\n }\n else if (quality === _Quality.ULTRA) {\n uniforms.lod.value = 0;\n this._blit(sourceTarget, 0, cubeMapMaterial);\n for (let i = 1; i < this._lodMeshes.length; i++) {\n this._pmremblur(sourceTarget, i - 1, i);\n }\n }\n\n sourceTarget.scissorTest = false;\n _setViewport(sourceTarget, 0, 0, sourceTarget.width, sourceTarget.height);\n\n renderer.autoClear = autoClear;\n }\n pmremGenerator._pmremblur = function (\n targetOut: WebGLRenderTarget,\n lodIn: number,\n lodOut: number,\n ) {\n const sigma = Math.sqrt(this._sigmas[lodOut] * this._sigmas[lodOut] - this._sigmas[lodIn] * this._sigmas[lodIn]);\n const poleAxis = _axisDirections[(lodIn) % _axisDirections.length];\n this._blur(targetOut, lodIn, lodOut, sigma, poleAxis);\n }\n pmremGenerator._blit = function (\n targetOut: WebGLRenderTarget,\n lodOut: number,\n material: ShaderMaterial,\n ) {\n const renderer = this._renderer;\n const _lodMax = this._lodMax;\n const outputSize = this._sizeLods[lodOut];\n const x = 3 * outputSize * (lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0);\n const y = 4 * (this._cubeSize - outputSize);\n _setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize);\n const lodMesh = this._lodMeshes[lodOut];\n lodMesh.material = material;\n renderer.autoClear = false;\n renderer.setRenderTarget(targetOut);\n renderer.render(lodMesh, _flatCamera);\n }\n return pmremGenerator;\n }\n}\n","import { MathUtils } from \"three\";\n\nexport function mipGaussianBlendWeight(sigma: number, lod: number) {\n let sigma2 = sigma * sigma;\n let c = 2.0 * Math.PI * sigma2;\n let numerator = Math.pow(16, lod) * 1.386294361; //log(4)\n let denorminator = c * (Math.pow(4, lod) + c);\n return MathUtils.clamp(numerator / denorminator, 0, 1);\n}\n","import { CubeTexture, MathUtils, Mesh, PMREMGenerator, ShaderMaterial, Texture, WebGLRenderTarget, WebGLRenderer } from \"three\";\nimport { mipGaussianBlendWeight } from \"../mipGaussianBlendWeight\";\nimport { LOD_MIN, _flatCamera, _getMipBlurMaterial, _getMipCopyMaterial, _setViewport } from \"./utils\";\nimport { Viewer } from \"../../Viewer\";\nimport { MergeInfo } from \"./MergeInfo\";\n\nconst MAX_LOD = 10;\n\nexport class MergeMipBlurPass {\n private _pmremGenerator: any;\n private _sigma: number = 2;\n private _blurMinLod: number = 0;\n private _blurMaxLod: number = MAX_LOD;\n private _blurIntensity: number = -1;\n private _envMapTarget: WebGLRenderTarget;\n private _reflectMap: CubeTexture;\n\n get envMapTarget() {\n return this._envMapTarget;\n }\n\n constructor({\n viewer,\n reflectMap,\n }: {\n viewer: Viewer;\n reflectMap: CubeTexture;\n }) {\n this._reflectMap = reflectMap;\n this._pmremGenerator = this._getPMREMExtension(viewer.renderer);\n this._envMapTarget = this._pmremGenerator._fromTextureExtension(reflectMap);\n }\n\n dispose() {\n this._envMapTarget.dispose();\n this._pmremGenerator.dispose();\n }\n\n mergeMipBlur(info: MergeInfo) {\n this._setBlurIntensity(info.blurIntensity);\n const targetIn = this._pmremGenerator._applyMipBlur(\n this._envMapTarget,\n this._reflectMap,\n this._blurMinLod,\n this._blurMaxLod,\n this._sigma,\n info.exposure,\n );\n this._pmremGenerator._mipCopy(info.envMapTarget, targetIn, info.lodMax, this._blurMinLod);\n }\n\n private _setBlurIntensity(blurIntensity: number) {\n if (this._blurIntensity !== blurIntensity) {\n this._blurIntensity = blurIntensity\n this._sigma = MathUtils.lerp(1, 40, this._blurIntensity / 10);\n for (let lod = 0; lod <= MAX_LOD; lod++) {\n let w = mipGaussianBlendWeight(this._sigma, lod);\n if (w < 0.002) {\n this._blurMinLod = lod;\n }\n if (w >= 1) {\n this._blurMaxLod = lod;\n break;\n }\n }\n }\n }\n\n private _getPMREMExtension(renderer: WebGLRenderer) {\n const pmremGenerator = new PMREMGenerator(renderer) as any;\n pmremGenerator._fromTextureExtension = function (texture: Texture) {\n this._setSize(texture.image.length === 0 ? 16 : (texture.image[0].width || texture.image[0].image.width));\n const target = this._allocateTargets();\n this._mipBlurMaterial = _getMipBlurMaterial(this._lodMax, target.width, target.height);\n this._mipCopyMaterial = _getMipCopyMaterial(this._lodMax, target.width, target.height);\n this._lodMeshes = this._lodPlanes.map(v => new Mesh(v, this._mipBlurMaterial));\n return target;\n }\n pmremGenerator._applyMipBlur = function (\n sourceTarget: WebGLRenderTarget,\n texture: CubeTexture,\n blurMinLod: number,\n blurMaxLod: number,\n sigma: number,\n exposure: number = 1\n ) {\n const pingPongRenderTarget = this._pingPongRenderTarget;\n const uniforms = this._mipBlurMaterial.uniforms;\n uniforms.envMap.value = texture;\n uniforms.exposure.value = exposure;\n\n let lod = blurMaxLod;\n let targetOut = sourceTarget;\n let targetIn = pingPongRenderTarget;\n\n this._mipBlur(sourceTarget, pingPongRenderTarget, lod, 1);\n for (let i = 0; lod-- > blurMinLod; i++) {\n targetOut = (i & 1) === 0 ? pingPongRenderTarget : sourceTarget;\n targetIn = (i & 1) === 1 ? pingPongRenderTarget : sourceTarget;\n this._mipBlur(targetOut, targetIn, lod, mipGaussianBlendWeight(sigma, lod));\n }\n\n sourceTarget.scissorTest = false;\n _setViewport(sourceTarget, 0, 0, sourceTarget.width, sourceTarget.height);\n\n return targetOut;\n }\n pmremGenerator._mipBlur = function (\n targetOut: WebGLRenderTarget,\n targetIn: WebGLRenderTarget,\n lodOut: number,\n weight: number,\n ) {\n const uniforms = this._mipBlurMaterial.uniforms;\n uniforms.cubeUVMap.value = targetIn.texture;\n uniforms.weight.value = weight;\n uniforms.lod.value = lodOut;\n\n this._blit(targetOut, lodOut, this._mipBlurMaterial);\n }\n pmremGenerator._mipCopy = function (\n targetOut: WebGLRenderTarget,\n targetIn: WebGLRenderTarget,\n lodOut: number,\n lodIn: number = lodOut,\n ) {\n const uniforms = this._mipCopyMaterial.uniforms;\n uniforms.cubeUVMap.value = targetIn.texture;\n uniforms.lod.value = lodIn;\n\n this._blit(targetOut, lodOut, this._mipCopyMaterial);\n\n targetOut.scissorTest = false;\n _setViewport(targetOut, 0, 0, targetOut.width, targetOut.height);\n }\n pmremGenerator._blit = function (\n targetOut: WebGLRenderTarget,\n lodOut: number,\n material: ShaderMaterial,\n ) {\n const renderer = this._renderer;\n const _lodMax = this._lodMax;\n const outputSize = this._sizeLods[lodOut];\n const x = 3 * outputSize * (lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0);\n const y = 4 * (this._cubeSize - outputSize);\n _setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize);\n const lodMesh = this._lodMeshes[lodOut];\n lodMesh.material = material;\n renderer.autoClear = false;\n renderer.setRenderTarget(targetOut);\n renderer.render(lodMesh, _flatCamera);\n }\n\n return pmremGenerator;\n }\n}","import {\n CubeCamera,\n HalfFloatType,\n MeshBasicMaterial,\n Object3D,\n Scene,\n Texture,\n TextureDataType,\n Vector3,\n} from \"three\";\n\nimport { Plugin } from \"../Plugin\";\nimport { MergeRefectPass } from \"../passes/cubeuv/MergeReflectPass\";\nimport { MergeMipBlurPass } from \"../passes/cubeuv/MergeBlurPass\";\nimport { property } from \"../PropertyManager\";\nimport { MergeInfo } from \"../passes/cubeuv/MergeInfo\";\nimport { Plane } from \"../primitive\";\nimport { DebugPlugin } from \"./DebugPlugin\";\nimport { _Quality } from \"../passes/cubeuv/utils\";\n\nexport class EnvironmentPlugin extends Plugin {\n static readonly Quality = _Quality;\n\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 private _debug: boolean = false;\n private _debugNode: Object3D = null;\n private _elapsed: number = 0;\n\n @property\n get debug() {\n return this._debug;\n }\n set debug(v: boolean) {\n if (this._debug !== v) {\n this._debug = v;\n if (v) {\n if (this._debugNode === null) {\n const viewer = this.viewer;\n const debugScene = DebugPlugin.Instance(viewer).scene;\n this._debugNode = viewer.addNode(Object3D, { parent: debugScene });\n viewer.addNode(Plane, {\n parent: this._debugNode,\n material: new MeshBasicMaterial({ map: this._reflectPass.envMapTarget.texture }),\n position: new Vector3(1.1, 3, 0)\n })\n if (this._mipBlurPass) {\n viewer.addNode(Plane, {\n parent: this._debugNode,\n material: new MeshBasicMaterial({ map: this._mipBlurPass.envMapTarget.texture }),\n position: new Vector3(0, 3, 0)\n })\n }\n }\n }\n if (this._debugNode) {\n this._debugNode.visible = v;\n }\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 constructor({\n envMap,\n scene,\n near,\n far,\n layer = 0,\n resolution = 256,\n floatType = HalfFloatType,\n position = new Vector3(0, 1, 0),\n }: {\n envMap?: Texture;\n scene?: Scene | Object3D;\n performance?: number;\n resolution?: number;\n layer?: number;\n near?: number;\n far?: number;\n floatType?: boolean | TextureDataType;\n position?: Vector3;\n } = {}) {\n super();\n this.install = () => {\n const viewer = this.viewer;\n this._scene = scene || viewer.scene;\n const cubeRenderTarget = viewer.createCubeRenderTarget(resolution, false, floatType, 0, true, true);\n this._cubeCamera = new CubeCamera(near || viewer.camera.near, far || viewer.camera.far, cubeRenderTarget);\n this._cubeCamera.position.copy(position);\n this._cubeCamera.layers.mask = layer;\n const reflectMap = cubeRenderTarget.texture;\n this._reflectPass = new MergeRefectPass({ viewer, reflectMap, envMap });\n }\n this.uninstall = () => {\n this._reflectPass.dispose();\n if (this._mipBlurPass) {\n this._mipBlurPass.dispose();\n }\n }\n }\n\n onRender(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 { Box3, Box3Helper, ShaderChunk, ShaderLib, Vector3, Vector4, WebGLProgramParametersWithUniforms } from \"three\";\nimport { Plugin } from \"../Plugin\";\nimport { property } from \"../PropertyManager\";\nimport { DebugPlugin } from \"./DebugPlugin\";\n\nexport class BoxProjectionPlugin extends Plugin {\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 private _helper: Box3Helper = null;\n private _debug: boolean = false;\n\n @property\n get debug() {\n return this._debug;\n }\n set debug(v: boolean) {\n if (this._debug !== v) {\n this._debug = v;\n if (v) {\n if (this._helper === null) {\n this._helper = new Box3Helper(new Box3(this._boxMin, this._boxMax));\n DebugPlugin.Instance(this.viewer).add(this._helper);\n }\n }\n if (this._helper) {\n this._helper.visible = v;\n }\n }\n }\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 constructor() {\n super();\n this.install = () => {\n ShaderLib.physical.vertexShader = ShaderLib.physical.vertexShader.replace(/#ifdef USE_TRANSMISSION/g, `\n #if defined(USE_TRANSMISSION) || defined(USE_BOX_PROJECTION)\n `);\n ShaderLib.physical.fragmentShader = ShaderLib.physical.fragmentShader.replace(\"varying vec3 vViewPosition;\", `\n varying vec3 vViewPosition;\n #if defined(USE_BOX_PROJECTION)\n varying vec3 vWorldPosition;\n #endif\n `);\n ShaderChunk.worldpos_vertex = ShaderChunk.worldpos_vertex.replace(\"#if defined( USE_ENVMAP )\", \"#if defined( USE_ENVMAP ) || defined( USE_BOX_PROJECTION )\");\n ShaderChunk.envmap_physical_pars_fragment = ShaderChunk.envmap_physical_pars_fragment.replace(\"#ifdef USE_ENVMAP\", `\n #ifdef USE_ENVMAP\n\n #if defined(USE_BOX_PROJECTION)\n uniform vec4 probePos;\n uniform vec3 probeBoxMin;\n uniform vec3 probeBoxMax;\n \n vec3 boxProjection(vec3 nrdir, vec3 worldPos, vec3 probePos, vec3 boxMin, vec3 boxMax) {\n vec3 tbot = boxMin - worldPos;\n vec3 ttop = boxMax - worldPos;\n vec3 tmax = mix(tbot, ttop, step(vec3(0), nrdir));\n tmax /= nrdir;\n float t = min(min(tmax.x, tmax.y), tmax.z);\n return worldPos + nrdir * t - probePos;\n }\n #endif\n\n `).replace(\"reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\", `\n reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n \n #if defined(USE_BOX_PROJECTION)\n if (probePos.w > 0.001) {\n reflectVec = boxProjection(reflectVec, vWorldPosition, probePos.xyz, probeBoxMin.xyz, probeBoxMax.xyz);\n }\n #endif\n\n `).replace(\"vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\", `\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\n #if defined(USE_BOX_PROJECTION)\n if (probePos.w > 0.001) {\n worldNormal = boxProjection(worldNormal, vWorldPosition, probePos.xyz, probeBoxMin.xyz, probeBoxMax.xyz);\n }\n #endif\n\n `);\n }\n this.uninstall = () => {\n DebugPlugin.Instance(this.viewer).remove(this._helper);\n }\n }\n\n onUpdate(dt: number): void {\n if (this._debug) {\n this._helper.updateMatrixWorld();\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 { Plugin } from \"../Plugin\"\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: PerformanceMonitorPlugin) => void\n /** When performance is lower than the upper bound (bad!) */\n onDecline?: (monitor: PerformanceMonitorPlugin) => void\n /** Incline and decline will change the factor, this will trigger when that happened */\n onChange?: (monitor: PerformanceMonitorPlugin) => 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: PerformanceMonitorPlugin) => void\n}\n\n\ntype PerformanceMonitorSubscriber = {\n onIncline?: (monitor: PerformanceMonitorPlugin) => void\n /** When performance is lower than the upper bound (bad!) */\n onDecline?: (monitor: PerformanceMonitorPlugin) => void\n /** Incline and decline will change the factor, this will trigger when that happened */\n onChange?: (monitor: PerformanceMonitorPlugin) => 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: PerformanceMonitorPlugin) => void\n}\n\nexport class PerformanceMonitorPlugin extends Plugin {\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.onUpdate = (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}"],"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","Easing","freeze","Linear","None","amount","In","Out","InOut","Quadratic","Cubic","Quartic","Quintic","Sinusoidal","Math","sin","PI","Exponential","pow","Circular","sqrt","Elastic","Back","s","Bounce","generatePow","power","Number","EPSILON","Interpolation","k","m","f","floor","fn","Utils","Bezier","b","n","pw","bn","Bernstein","CatmullRom","p0","p1","t","fc","Factorial","p2","p3","v0","v1","t2","t3","now","performance","Group","getAll","keys","_tweens","map","tweenId","removeAll","add","tween","getId","_tweensAddedDuringUpdate","remove","update","time","preserve","tweenIds","autoStart","mainGroup","Sequence","nextId","_nextId","Tween","_id","isPlaying","_isPlaying","isPaused","_isPaused","getDuration","_duration","from","properties","_valuesStart","to","duration","Error","_valuesEnd","_propertiesAreSetUp","dynamic","_isDynamic","start","overrideStartingValues","_group","_repeat","_initialRepeat","_reversed","property","_valuesStartRepeat","_swapEndStartRepeatValues","_onStartCallbackFired","_onEveryStartCallbackFired","_isChainStopped","_startTime","_delayTime","tmp","prop","_setupProperties","_object","startFromCurrentValues","startValue","startValueIsArray","Array","isArray","propType","isInterpolationList","endValues","temp","l","value","_handleRelativeValue","isNaN","nestedObject","slice","reverse","stop","stopChainedTweens","_onStopCallback","end","_goToEnd","Infinity","pause","_pauseStart","resume","numChainedTweens","_chainedTweens","group","call","_onFinishCallback","delay","union","headTween","tailTween","_headTween","_tailTween","chain","repeat","times","repeatDelay","_repeatDelayTime","yoyo","_yoyo","easing","easingFunction","_easingFunction","interpolation","interpolationFunction","_interpolationFunction","tweens","unchain","onStart","_onStartCallback","onEveryStart","_onEveryStartCallback","onUpdate","_onUpdateCallback","onRepeat","_onRepeatCallback","onComplete","_onCompleteCallback","onStop","endTime","elapsedTime","durationAndDelay","totalTime","elapsed","_calculateElapsedPortion","_headTweenStartFired","status","_calculateCompletionStatus","_processRepetition","_updateProperties","timeIntoCurrentRepeat","portion","min","completeCount","trunc","isFinite","valueEnd","parseFloat","startIsArray","endIsArray","des","set","charAt","endValue","TweenChain","_tween","_chainedTween","_chainTween","props","object","TweenManager","destroy","timeline","killTweensOf","aLoader","_setUserData","node","_texKeys","meshes","textures","materials","queue","shift","isMesh","mat","material","uuid","children","values","tex","assign","userData","manager","aEXRLoader","load","url","onLoad","onProgress","onError","texSettings","loader","EXRLoader","loadingManager","setPath","path","setResourcePath","resourcePath","extension","aFBXLoader","buffer","loadCallback","FBXLoader","parse","aGLTFLoader","gltf","scene","animations","gltfLoader","GLTFLoader","dracoLoader","DRACOLoader","setDecoderPath","dracoPath","setDRACOLoader","setMeshoptDecoder","MeshoptDecoder","aHDRLoader","settings","mapping","EquirectangularReflectionMapping","RGBELoader","aJSONLoader","FileLoader","file","JSON","aTextureLoader","colorSpace","SRGBColorSpace","TextureLoader","ClassProperties","propertyKey","options","_properties","applyProperties","clsName","PropertyManager","_hasProperties","_propertyMap","_getProperties","autoAdd","get","_getMergedProperties","getPrototypeOf","_getClassProperties","_classMap","_applyClassProperties","cls","Map","normalized","CinestationBlendStyle","QuadraticIn","QuadraticOut","QuadraticInOut","CinestationBlendDefinition","style","ObjectInstance","instanceId","_instanceCount","MathUtils","generateUUID","type","Component","enabled","_enabled","componentScheduler","enableComponent","_onPreDestroy","unscheduleAll","removeComponent","onDestroy","flags","OnLoadCalled","schedule","interval","scheduler","unshedule","Destroyed","destroyImmediate","clamp","lerp","CinestationBrain","vcam","_vcam","vcams","_vcams","lastUpdate","dt","getActiveCamera","locked","_lerpTime","brainBlend","_lerpToMainCamera","activeCamera","_vcamSolo","addCamera","indexOf","removeCamera","filter","sort","priority","lens","finalPosition","finalRotation","isLensChanged","fov","near","far","position","quaternion","slerp","updateProjectionMatrix","Lens","VirtualCamera","_finalPosition","copy","correctPosition","_finalRotation","multiply","correctRotation","camera","viewer","isCamera","brain","getComponent","Vector3","Quaternion","PressState","NONE","SELECTED","IN","Pressability","connect","connector","_connectors","find","state","disconnect","pointerDown","pointer","_raycaster","setFromCamera","conn","intersects","intersectObject","pointerUp","pointerMove","Raycaster","DeviceInput","pointerButton","_pointerButton","_pointer","pointerPosition","_pointerPosition","mouseWheel","_mouseWheel","touchCount","_touchCount","touches","_touches","_keys","addEventListeners","domElement","canvas","touchAction","_addEventListener","e","preventDefault","_onPointerDown","passive","_onPointerUp","_onPointerMove","_onMouseWheel","_onTouchStart","_onTouchEnd","_onTouchMove","window","_onKeyDown","_onKeyPress","_onKeyUp","removeAllListeners","removeEventListener","event","CLICK","POINTER_DOWN","POINTER_UP","POINTER_OVER","POINTER_OUT","_pressability","addEventListener","_remapPointer","width","rootRotated","button","buttons","clientX","clientY","offsetX","offsetY","pageX","pageY","screenX","screenY","movementX","movementY","_remapTouch","identifier","_computePointer","x","y","height","POINTER_MOVE","deltaY","wheelDelta","MOUSE_WHEEL","TOUCH_START","TOUCH_END","touchesTo","id","Vector2","touch","TOUCH_MOVE","key","KEYDOWN","KEYPRESS","KEYUP","RESIZE","isSSR","DetectUA","match","pattern","userAgent","isMobile","isTablet","test","iOSDevice","isAndroidDevice","isDesktop","isMacOS","version","replace","split","versionNumber","isWindows","isiOS","isAndroid","browser","versionIdentifier","forceUserAgent","navigator","toLowerCase","platform","maxTouchPoints","MSStream","detectUA","vendor","browserName","audioElem","document","createElement","SystemInfo","device","isIOS","isLinux","ua","isEdge","isIE","isFirefox","isChrome","isOpera","isSafari","isSupportMSAA","isSupportOgg","canPlayType","isRetina","devicePixelRatio","cpuCoreCount","hardwareConcurrency","baseUrl","location","origin","isIFrame","self","top","max","exp","kNegligibleResidual","kLogNegligibleResidual","exponentialDamp","current","dampTime","deltaTime","quarticDamp","tt","smoothDamp","smoothTime","maxSpeed","_velocity","num","num2","num3","num4","num5","num6","num7","num8","Quat_exponentialDamp","out","Quat_quarticDamp","Quat_smoothDamp","Vec3_smoothDamp","Vector3_UNIT_X","Vector3_UNIT_Y","Vector3_UNIT_Z","Vector3_RIGHT","Vector3_UP","Vector3_ZERO","Vector3_ONE","Vector3_NEG_ONE","abs","acos","__delta","VInterpTo","speed","dist","sub","lengthSq","multiplyScalar","VInterpConstantTo","delta","deltaM","maxStep","deltaN","Quat_Equals","epsilon","z","w","Quat_AngularDistance","innerProd","QInterpTo","QInterpConstantTo","deltaSpeed","angularDist","FInterpTo","FInterpConstantTo","step","catmullRom","CurvePoint","p","mode","AnimationCurve","_getInterpolant","samples","_samples","_interpolant","LinearInterpolant","Float32Array","createCurvePoint","resample","interpolant","parameterPositions","sampleValues","point","getPoint","evaluate","needsUpdate","points","intPoint","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","noise","hash","h","degToRad","tan","PI2","ESP","FreelookVirtualCamera","lookAt","_lookAt","_targetLookAt","springLength","_spherical","radius","_targetSpringLength","theta","_targetTheta","phi","_targetPhi","_targetFov","onEnable","reset","onDisable","_button","_touchID","_preLoc0","_","__loc0","__panDelta","__rotateDelta","_calculateRotatelDelta","_calculateTargetSpringArm","_calculatePanDelta","_calculateTargetLookAt","_calculateDistanceScale","_preLoc1","__loc1","__preCenter","__center","distanceTo","scale","_tempRotateSmoothing","rotateSmoothing","forbidZ","loc0","loc1","rotateSpeed","clientHeight","forbidX","forbidY","panSpeed","forbidPanX","forbidPanY","panDelta","__xAxis","__yAxis","__posDelta","setFromMatrixColumn","matrix","forbitPanOffsetY","normalize","rotateDelta","thetaMin","thetaMax","phiMin","phiMax","distanceMin","distanceMax","gotoPOI","smoothing","_tempSmoothing","t1","t0","thetas","diffs","setFromSpherical","Spherical","__panTarget","__quat","dir","Box","Mesh","BoxGeometry","Sphere","SphereGeometry","Plane","PlaneGeometry","Reflector","textureWidth","textureHeight","clipBias","multisample","layer","normal","mipmap","reflectorPlane","reflectorNormal","reflectorWorldPosition","cameraWorldPosition","rotationMatrix","Matrix4","lookAtPosition","clipPlane","Vector4","view","q","textureMatrix","virtualCamera","PerspectiveCamera","layers","mask","renderTarget","WebGLRenderTarget","HalfFloatType","minFilter","LinearMipMapLinearFilter","LinearFilter","generateMipmaps","renderer","setFromMatrixPosition","matrixWorld","extractRotation","applyMatrix4","subVectors","dot","reflect","negate","up","updateMatrixWorld","projectionMatrix","matrixWorldInverse","setFromNormalAndCoplanarPoint","constant","sign","elements","visible","currentRenderTarget","getRenderTarget","currentActiveCubeFace","getActiveCubeFace","currentActiveMipmapLevel","getActiveMipmapLevel","currentXrEnabled","xr","currentShadowAutoUpdate","shadowMap","autoUpdate","setRenderTarget","buffers","depth","setMask","autoClear","render","viewport","getTextureMatrix","dispose","vert_fullscreen","frag_BoxfilterBlur","frag_panoramaToCubeMap","frag_cubeMapToPanorama","getShaderMaterial","uniforms","vertexShader","fragmentShader","onInit","ShaderMaterial","parameters","entries","reduce","acc","uniform","UniformsUtils","clone","vert_Reflector","frag_Reflector","ReflectorMaterial","onBeforeCompile","shader","channels","aoMap","channel","lightMap","roughnessMap","normalMap","defines","alpha","metalness","roughness","UV_AO","UV_LIGHTMAP","UV_ROUGHNESS","UV_NORMAL","color","Color","tReflect","aoMapIntensity","lightMapIntensity","Plugin","DebugPlugin","Instance","getPlugin","onRender","Scene","LOD_MIN","_flatCamera","OrthographicCamera","PHI","INV_PHI","_axisDirections","_Quality","LOW","MEDIUM","HIGH","ULTRA","_setViewport","scissor","_getCommonVertexShader","_getClearMaterial","intensity","blending","NoBlending","depthWrite","depthTest","_getCubeMapMaterial","envMap","lod","exposure","AdditiveBlending","_getMipCopyMaterial","lodMax","CUBEUV_TEXEL_WIDTH","CUBEUV_TEXEL_HEIGHT","CUBEUV_MAX_MIP","cubeUVMap","_getMipBlurMaterial","Caller","_pause","_target","_callback","lived","_repeatForever","_elapsed","_interval","trigger","_lastTime","Callers","callers","_callers","Scheduler","_callersArray","callersArray","j","Invoker","_targets","invoke","InvokerOneCall","ComponentScheduler","startInvoker","updateInvoker","lastUpdateInvoker","comp","OnEnableCalled","IsStartCalled","DependentMode","ComponentManager","_viewer","_scheduler","_componentScheduler","_componentsMap","components","destroyComponents","delete","child","activeComponents","_activeComponent","addComponent","root","func","component","_findComponent","_addDendencies","getComponentsInChidren","traverseComponents","dependentInfo","_dependenciesMap","dep","active","TaskManager","percent","_percent","_tasks","_taskIndex","task","excute","parepareWebGL","isSupportedBrowser","HTMLCanvasElement","webglOpts","stencil","antialias","premultipliedAlpha","preserveDrawingBuffer","powerPreference","failIfMajorPerformanceCaveat","WebGL2RenderingContext","gl","getContext","RENDER_TARGET_FLOAT_TYPE","DATA_FLOAT_TYPE","FloatType","err","WebGLRenderingContext","getExtension","getParameter","MAX_VERTEX_TEXTURE_IMAGE_UNITS","_floatPacking","UnsignedByteType","Orientation","ResourceManager","str","pop","dirname","lastIndexOf","substring","basename","ext","_getTextureKey","join","_splitTextureSettings","_texSettingKeys","_caches","_loaders","getLoader","addLoader","Loader","loadAsset","Promise","resolve","reject","ext_","result","sel","applyProps","writable","PluginManager","_plugins","plugin","uninstall","_pluginsMap","traversePlugins","ins","addPlugin","install","removePlugin","Viewer","_setDirectLightShadow","shadow","shadowCamera","_shadowCameraKeys","bias","mapSize","compileMaterial","fullscreenMesh","compile","compileObject3D","compileTexture","initTexture","Blit","face","RT","fullscreenCamera","createFullscreenTriangle","geometry","BufferGeometry","setAttribute","Float32BufferAttribute","findChild","parts","part","getChildByName","getObject","objects","_getObjectValue","__emtpyObject","getMaterial","getTexture","getMesh","_instanceId","_root","_time","_scene","_camera","_renderer","_canvas","_gl","_RENDER_TARGET_FLOAT_TYPE","_DATA_FLOAT_TYPE","dpr","_dpr","_width","_height","_viewport","_rootRotated","input","_input","targetFrameRate","_targetFrameRate","_loadingManager","resourceManager","_resourceManager","taskManager","_taskManager","_componentManager","_pluginManager","_tweenManager","_addDefaultLoaders","_frame","_lastFrameTime","loop","_fixedFrameTime","_autoResize","resize","_onRender","_onResize","setSize","_running","frameCallback","requestAnimationFrame","innerWidth","innerHeight","_orientation","LANDSCAPE","PORTRAIT","transform","transformOrigin","margin","isOrthographicCamera","zoom","factor","isPerspectiveCamera","manual","aspect","distance","getWorldPosition","__worldPos","__target","traverseMaterials","item","addTask","addNode","rotation","shadowArgs","makeDefault","parent","isObject3D","Object3D","isDirectionalLight","removeNode","removeFromParent","activeNode","createRenderTarget","nearest","floatType","msaa","wrapS","ClampToEdgeWrapping","wrapT","magFilter","NearestFilter","anisotropy","LinearSRGBColorSpace","depthBuffer","stencilBuffer","createCubeRenderTarget","size","WebGLCubeRenderTarget","createDataTexture","data","DataTexture","RGBAFormat","UVMapping","portal","blit","every","isMaterial","meshData","isTexture","autoResize","shadows","fixedFrameTime","toneMapping","LinearToneMapping","toneMappingExposure","maxDPR","orientation","AUTO","tasker","el","getElementById","webgl","WebGLRenderer","context","setPixelRatio","outputColorSpace","PCFSoftShadowMap","autoReset","LoadingManager","MergeRefectPass","envMapTarget","_envMapTarget","_sourceTarget","_pmremGenerator","mergeReflect","_copyTexture","texture","envMapIntensity","_mergeReflect","_reflectMap","quality","_lodMeshes","_getPMREMExtension","pmremGenerator","PMREMGenerator","_fromTextureExtension","reflectMap","_fromTexture","_fromCubeTexture","_cubeMapMaterial","_copyTexMaterial","_copyMesh","_lodPlanes","_sourceInit","_setSize","image","_allocateTargets","targetOut","scissorTest","_clearTexture","sourceTarget","cubeMapMaterial","_blit","_pmremblur","lodIn","lodOut","sigma","_sigmas","poleAxis","_blur","_lodMax","outputSize","_sizeLods","_cubeSize","lodMesh","environment","mipGaussianBlendWeight","sigma2","c","numerator","denorminator","MAX_LOD","MergeMipBlurPass","mergeMipBlur","_setBlurIntensity","blurIntensity","targetIn","_applyMipBlur","_blurMinLod","_blurMaxLod","_sigma","_mipCopy","_blurIntensity","_mipBlurMaterial","_mipCopyMaterial","blurMinLod","blurMaxLod","pingPongRenderTarget","_pingPongRenderTarget","_mipBlur","EnvironmentPlugin","_debug","_debugNode","debugScene","MeshBasicMaterial","_reflectPass","_mipBlurPass","_renderFrame","manualFrame","oldTarget","oldActiveCubeFace","oldActiveMipmapLevel","_mergeInfo","reflectExposure","reflectBlurIntensity","_cubeCamera","resolution","cubeRenderTarget","CubeCamera","Quality","BoxProjectionPlugin","_helper","Box3Helper","Box3","_boxMin","_boxMax","center","_center","boxMin","boxMax","useBoxProjection","USE_BOX_PROJECTION","probePos","probeBoxMin","probeBoxMax","ShaderLib","physical","ShaderChunk","worldpos_vertex","envmap_physical_pars_fragment","PerformanceMonitorPlugin","subscribe","subscriber","subscriptions","Symbol","iterations","ms","threshold","_factor","flipflops","bounds","refreshrate","onIncline","onDecline","onChange","onFallback","fps","flipped","fallback","frames","averages","lastFactor","decimalPlacesRatio","msPassed","round","lower","upper","upperBounds","lowerBounds"],"mappings":"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","x_google_ignoreList":[20]}
1
+ {"version":3,"file":"main.js","sources":["../src/base/EventEmitter.ts","../src/base/Logger.ts","../src/base/mixin.ts","../src/base/getClassInstance.ts","../src/tween/Easing.ts","../src/tween/Interpolation.ts","../src/tween/Now.ts","../src/tween/Group.ts","../src/tween/mainGroup.ts","../src/tween/Sequence.ts","../src/tween/Tween.ts","../src/tween/TweenChain.ts","../src/tween/TweenManager.ts","../src/asset/aLoader.ts","../src/loaders/aEXRLoader.ts","../src/loaders/aFBXLoader.ts","../src/loaders/aGLTFLoader.ts","../src/loaders/aHDRLoader.ts","../src/loaders/aJSONLoader.ts","../src/loaders/aTextureLoader.ts","../../../node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs","../src/PropertyManager.ts","../src/cinestation/CinestationBlendDefinition.ts","../src/ObjectInstance.ts","../src/Component.ts","../src/cinestation/CinestationBrain.ts","../src/cinestation/VirtualCamera.ts","../src/Pressability.ts","../src/DeviceInput.ts","../src/DetectUA.ts","../src/SystemInfo.ts","../src/math/Damp.ts","../src/math/Constant.ts","../src/math/Interpolation.ts","../src/math/AnimationCurve.ts","../src/math/Perlin.ts","../src/cinestation/FreelookVirtualCamera.ts","../src/primitive/Box.ts","../src/primitive/Sphere.ts","../src/primitive/Plane.ts","../src/components/Reflector.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/Plugin.ts","../src/plugins/DebugPlugin.ts","../src/passes/cubeuv/utils.ts","../src/Scheduler.ts","../src/ComponentScheduler.ts","../src/ComponentManager.ts","../src/TaskManager.ts","../src/WebGL.ts","../src/enums/Orientation.ts","../src/asset/ResourceManager.ts","../src/Utils.ts","../src/PluginManager.ts","../src/Viewer.ts","../src/passes/cubeuv/MergeReflectPass.ts","../src/passes/mipGaussianBlendWeight.ts","../src/passes/cubeuv/MergeBlurPass.ts","../src/plugins/EnvironmentPlugin.ts","../src/plugins/BoxProjectionPlugin.ts","../src/plugins/PerformanceMonitorPlugin.ts","../src/plugins/DropFilePlugin.ts"],"sourcesContent":["interface EventHandler {\n name: string;\n callback: (...args: any[]) => any;\n target?: Object;\n once?: boolean;\n}\n\ninterface Listener {\n name: string, callback: (...args: any[]) => any;\n}\n\nexport class EventEmitter {\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: string) {\n return !!this._events[name];\n }\n\n on(name: string, 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: string, 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: string, callback: (...args: any[]) => any, container: Object & { _listeners?: Listener[] }) {\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[] }) {\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: string, ...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}","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})","/**\n *\n */\nexport type InterpolationFunction = (v: number[], k: number) => number\n\n/**\n *\n */\nconst Interpolation = {\n\tLinear: function (v: number[], k: number): number {\n\t\tconst m = v.length - 1\n\t\tconst f = m * k\n\t\tconst i = Math.floor(f)\n\t\tconst fn = Interpolation.Utils.Linear\n\n\t\tif (k < 0) {\n\t\t\treturn fn(v[0], v[1], f)\n\t\t}\n\n\t\tif (k > 1) {\n\t\t\treturn fn(v[m], v[m - 1], m - f)\n\t\t}\n\n\t\treturn fn(v[i], v[i + 1 > m ? m : i + 1], f - i)\n\t},\n\n\tBezier: function (v: number[], k: number): number {\n\t\tlet b = 0\n\t\tconst n = v.length - 1\n\t\tconst pw = Math.pow\n\t\tconst bn = Interpolation.Utils.Bernstein\n\n\t\tfor (let i = 0; i <= n; i++) {\n\t\t\tb += pw(1 - k, n - i) * pw(k, i) * v[i] * bn(n, i)\n\t\t}\n\n\t\treturn b\n\t},\n\n\tCatmullRom: function (v: number[], k: number): number {\n\t\tconst m = v.length - 1\n\t\tlet f = m * k\n\t\tlet i = Math.floor(f)\n\t\tconst fn = Interpolation.Utils.CatmullRom\n\n\t\tif (v[0] === v[m]) {\n\t\t\tif (k < 0) {\n\t\t\t\ti = Math.floor((f = m * (1 + k)))\n\t\t\t}\n\n\t\t\treturn fn(v[(i - 1 + m) % m], v[i], v[(i + 1) % m], v[(i + 2) % m], f - i)\n\t\t} else {\n\t\t\tif (k < 0) {\n\t\t\t\treturn v[0] - (fn(v[0], v[0], v[1], v[1], -f) - v[0])\n\t\t\t}\n\n\t\t\tif (k > 1) {\n\t\t\t\treturn v[m] - (fn(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m])\n\t\t\t}\n\n\t\t\treturn fn(v[i ? i - 1 : 0], v[i], v[m < i + 1 ? m : i + 1], v[m < i + 2 ? m : i + 2], f - i)\n\t\t}\n\t},\n\n\tUtils: {\n\t\tLinear: function (p0: number, p1: number, t: number): number {\n\t\t\treturn (p1 - p0) * t + p0\n\t\t},\n\t\tBernstein: function (n: number, i: number): number {\n\t\t\tconst fc = Interpolation.Utils.Factorial\n\n\t\t\treturn fc(n) / fc(i) / fc(n - i)\n\t\t},\n\t\tFactorial: (function () {\n\t\t\tconst a = [1]\n\n\t\t\treturn function (n: number): number {\n\t\t\t\tlet s = 1\n\n\t\t\t\tif (a[n]) {\n\t\t\t\t\treturn a[n]\n\t\t\t\t}\n\n\t\t\t\tfor (let i = n; i > 1; i--) {\n\t\t\t\t\ts *= i\n\t\t\t\t}\n\n\t\t\t\ta[n] = s\n\t\t\t\treturn s\n\t\t\t}\n\t\t})(),\n\n\t\tCatmullRom: function (p0: number, p1: number, p2: number, p3: number, t: number): number {\n\t\t\tconst v0 = (p2 - p0) * 0.5\n\t\t\tconst v1 = (p3 - p1) * 0.5\n\t\t\tconst t2 = t * t\n\t\t\tconst t3 = t * t2\n\n\t\t\treturn (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1\n\t\t},\n\t},\n}\n\nexport { Interpolation }\n","const now = (): number => performance.now() * 0.001\n\nexport { now }\n","import { now } from './Now'\nimport type { Tween, UnknownProps } from './Tween'\n\n/**\n * Controlling groups of tweens\n *\n * Using the TWEEN singleton to manage your tweens can cause issues in large apps with many components.\n * In these cases, you may want to create your own smaller groups of tween\n */\nexport class Group {\n\tprivate _tweens: {\n\t\t[key: string]: Tween<UnknownProps>\n\t} = {}\n\n\tprivate _tweensAddedDuringUpdate: {\n\t\t[key: string]: Tween<UnknownProps>\n\t} = {}\n\n\tgetAll(): Array<Tween<UnknownProps>> {\n\t\treturn Object.keys(this._tweens).map(tweenId => {\n\t\t\treturn this._tweens[tweenId]\n\t\t})\n\t}\n\n\tremoveAll(): void {\n\t\tthis._tweens = {}\n\t}\n\n\tadd(tween: Tween<UnknownProps>): void {\n\t\tthis._tweens[tween.getId()] = tween\n\t\tthis._tweensAddedDuringUpdate[tween.getId()] = tween\n\t}\n\n\tremove(tween: Tween<UnknownProps>): void {\n\t\tdelete this._tweens[tween.getId()]\n\t\tdelete this._tweensAddedDuringUpdate[tween.getId()]\n\t}\n\n\tupdate(time: number = now(), preserve = false): boolean {\n\t\tlet tweenIds = Object.keys(this._tweens)\n\n\t\tif (tweenIds.length === 0) {\n\t\t\treturn false\n\t\t}\n\n\t\t// Tweens are updated in \"batches\". If you add a new tween during an\n\t\t// update, then the new tween will be updated in the next batch.\n\t\t// If you remove a tween during an update, it may or may not be updated.\n\t\t// However, if the removed tween was added during the current batch,\n\t\t// then it will not be updated.\n\t\twhile (tweenIds.length > 0) {\n\t\t\tthis._tweensAddedDuringUpdate = {}\n\n\t\t\tfor (let i = 0; i < tweenIds.length; i++) {\n\t\t\t\tconst tween = this._tweens[tweenIds[i]]\n\t\t\t\tconst autoStart = !preserve\n\n\t\t\t\tif (tween && tween.update(time, autoStart) === false && !preserve) {\n\t\t\t\t\tdelete this._tweens[tweenIds[i]]\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttweenIds = Object.keys(this._tweensAddedDuringUpdate)\n\t\t}\n\n\t\treturn true\n\t}\n}\n","import { Group } from './Group'\n\nexport const mainGroup = new Group()\n","/**\n * Utils\n */\nexport class Sequence {\n\tprivate static _nextId = 0\n\n\tstatic nextId(): number {\n\t\treturn Sequence._nextId++\n\t}\n}\n","/**\n * Tween.js - Licensed under the MIT license\n * https://github.com/tweenjs/tween.js\n * ----------------------------------------------\n *\n * See https://github.com/tweenjs/tween.js/graphs/contributors for the full list of contributors.\n * Thank you all, you're awesome!\n */\n\nimport { Easing } from './Easing'\nimport { Interpolation } from './Interpolation'\nimport { mainGroup } from './mainGroup'\nimport { Sequence } from './Sequence'\nimport { now } from './Now'\n\nimport type { EasingFunction } from './Easing'\nimport type { InterpolationFunction } from './Interpolation'\nimport type { Group } from './Group'\n\nexport class Tween<T extends UnknownProps> {\n\tprivate _isPaused = false\n\tprivate _pauseStart = 0\n\tprivate _valuesStart: UnknownProps = {}\n\tprivate _valuesEnd: Record<string, number | string> = {}\n\tprivate _valuesStartRepeat: UnknownProps = {}\n\tprivate _duration = 0\n\tprivate _isDynamic = false\n\tprivate _initialRepeat = 0\n\tprivate _repeat = 0\n\tprivate _repeatDelayTime?: number\n\tprivate _yoyo = false\n\tprivate _isPlaying = false\n\tprivate _reversed = false\n\tprivate _delayTime = 0\n\tprivate _startTime = 0\n\tprivate _easingFunction: EasingFunction = Easing.Linear.None\n\tprivate _interpolationFunction: InterpolationFunction = Interpolation.Linear\n\t// eslint-disable-next-line\n\tprivate _chainedTweens: Array<Tween<any>> = []\n\tprivate _onStartCallback?: (object: T) => void\n\tprivate _onStartCallbackFired = false\n\tprivate _onEveryStartCallback?: (object: T) => void\n\tprivate _onEveryStartCallbackFired = false\n\tprivate _onUpdateCallback?: (object: T, elapsed: number) => void\n\tprivate _onRepeatCallback?: (object: T) => void\n\tprivate _onCompleteCallback?: (object: T) => void\n\tprivate _onStopCallback?: (object: T) => void\n\tprivate _onFinishCallback?: (object: T) => void;\n\tprivate _id = Sequence.nextId()\n\tprivate _isChainStopped = false\n\tprivate _propertiesAreSetUp = false\n\tprivate _headTween: Tween<T> = null;\n\tprivate _tailTween: Tween<T> = null;\n\tprivate _headTweenStartFired: boolean = false;\n\n\tconstructor(\n\t\tprivate _object: T,\n\t\tprivate _group: Group | false = mainGroup,\n\t) { }\n\n\tgetId(): number {\n\t\treturn this._id\n\t}\n\n\tisPlaying(): boolean {\n\t\treturn this._isPlaying\n\t}\n\n\tisPaused(): boolean {\n\t\treturn this._isPaused\n\t}\n\n\tgetDuration(): number {\n\t\treturn this._duration\n\t}\n\n\tfrom(properties: UnknownProps) {\n\t\tthis._valuesStart = Object.create(properties);\n\t\treturn this;\n\t};\n\n\tto(target: UnknownProps, duration = 1): this {\n\t\tif (this._isPlaying)\n\t\t\tthrow new Error('Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.')\n\n\t\tthis._valuesEnd = target\n\t\tthis._propertiesAreSetUp = false\n\t\tthis._duration = duration < 0 ? 0 : duration\n\n\t\treturn this\n\t}\n\n\tduration(duration = 1): this {\n\t\tthis._duration = duration < 0 ? 0 : duration\n\t\treturn this\n\t}\n\n\tdynamic(dynamic = false): this {\n\t\tthis._isDynamic = dynamic\n\t\treturn this\n\t}\n\n\tstart(time: number = now(), overrideStartingValues = false): this {\n\t\tif (this._isPlaying) {\n\t\t\treturn this\n\t\t}\n\n\t\t// eslint-disable-next-line\n\t\tthis._group && this._group.add(this as any)\n\n\t\tthis._repeat = this._initialRepeat\n\n\t\tif (this._reversed) {\n\t\t\t// If we were reversed (f.e. using the yoyo feature) then we need to\n\t\t\t// flip the tween direction back to forward.\n\n\t\t\tthis._reversed = false\n\n\t\t\tfor (const property in this._valuesStartRepeat) {\n\t\t\t\tthis._swapEndStartRepeatValues(property)\n\t\t\t\tthis._valuesStart[property] = this._valuesStartRepeat[property]\n\t\t\t}\n\t\t}\n\n\t\tthis._isPlaying = true\n\n\t\tthis._isPaused = false\n\n\t\tthis._onStartCallbackFired = false\n\t\tthis._onEveryStartCallbackFired = false\n\n\t\tthis._isChainStopped = false\n\n\t\tthis._startTime = time\n\t\tthis._startTime += this._delayTime\n\n\t\tif (!this._propertiesAreSetUp || overrideStartingValues) {\n\t\t\tthis._propertiesAreSetUp = true\n\n\t\t\t// If dynamic is not enabled, clone the end values instead of using the passed-in end values.\n\t\t\tif (!this._isDynamic) {\n\t\t\t\tconst tmp: Record<PropertyKey, string | number> = {}\n\t\t\t\tfor (const prop in this._valuesEnd) tmp[prop] = this._valuesEnd[prop]\n\t\t\t\tthis._valuesEnd = tmp\n\t\t\t}\n\n\t\t\tthis._setupProperties(\n\t\t\t\tthis._object,\n\t\t\t\tthis._valuesStart,\n\t\t\t\tthis._valuesEnd,\n\t\t\t\tthis._valuesStartRepeat,\n\t\t\t\toverrideStartingValues,\n\t\t\t)\n\t\t}\n\n\t\treturn this\n\t}\n\n\tstartFromCurrentValues(time?: number): this {\n\t\treturn this.start(time, true)\n\t}\n\n\tprivate _setupProperties(\n\t\t_object: UnknownProps,\n\t\t_valuesStart: UnknownProps,\n\t\t_valuesEnd: UnknownProps,\n\t\t_valuesStartRepeat: UnknownProps,\n\t\toverrideStartingValues: boolean,\n\t): void {\n\t\tfor (const property in _valuesEnd) {\n\t\t\tconst startValue = _object[property] as number | Record<string, unknown>\n\t\t\tconst startValueIsArray = Array.isArray(startValue)\n\t\t\tconst propType = startValueIsArray ? 'array' : typeof startValue\n\t\t\tlet isInterpolationList = !startValueIsArray && Array.isArray(_valuesEnd[property])\n\n\t\t\t// If `to()` specifies a property that doesn't exist in the source object,\n\t\t\t// we should not set that property in the object\n\t\t\tif (propType === 'undefined' || propType === 'function') {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\t// Check if an Array was provided as property value\n\t\t\tif (isInterpolationList) {\n\t\t\t\tconst endValues = _valuesEnd[property] as Array<number | string>\n\n\t\t\t\tif (endValues.length === 0) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Handle an array of relative values.\n\t\t\t\t// Creates a local copy of the Array with the start value at the front\n\t\t\t\tconst temp = [startValue as number]\n\t\t\t\tfor (let i = 0, l = endValues.length; i < l; i += 1) {\n\t\t\t\t\tconst value = this._handleRelativeValue(startValue as number, endValues[i])\n\t\t\t\t\tif (isNaN(value)) {\n\t\t\t\t\t\tisInterpolationList = false\n\t\t\t\t\t\tconsole.warn('Found invalid interpolation list. Skipping.')\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\ttemp.push(value)\n\t\t\t\t}\n\n\t\t\t\tif (isInterpolationList) {\n\t\t\t\t\t// if (_valuesStart[property] === undefined) { // handle end values only the first time. NOT NEEDED? setupProperties is now guarded by _propertiesAreSetUp.\n\t\t\t\t\t_valuesEnd[property] = temp\n\t\t\t\t\t// }\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// handle the deepness of the values\n\t\t\tif ((propType === 'object' || startValueIsArray) && startValue && !isInterpolationList) {\n\t\t\t\t_valuesStart[property] = startValueIsArray ? [] : {}\n\t\t\t\tconst nestedObject = startValue as Record<string, unknown>\n\n\t\t\t\tfor (const prop in nestedObject) {\n\t\t\t\t\t_valuesStart[property][prop] = nestedObject[prop]\n\t\t\t\t}\n\n\t\t\t\t// TODO? repeat nested values? And yoyo? And array values?\n\t\t\t\t_valuesStartRepeat[property] = startValueIsArray ? [] : {}\n\n\t\t\t\tlet endValues = _valuesEnd[property]\n\n\t\t\t\t// If dynamic is not enabled, clone the end values instead of using the passed-in end values.\n\t\t\t\tif (!this._isDynamic) {\n\t\t\t\t\tconst tmp: Record<PropertyKey, unknown> = {}\n\t\t\t\t\tfor (const prop in endValues) tmp[prop] = endValues[prop]\n\t\t\t\t\t_valuesEnd[property] = endValues = tmp\n\t\t\t\t}\n\n\t\t\t\tthis._setupProperties(\n\t\t\t\t\tnestedObject,\n\t\t\t\t\t_valuesStart[property],\n\t\t\t\t\tendValues,\n\t\t\t\t\t_valuesStartRepeat[property],\n\t\t\t\t\toverrideStartingValues,\n\t\t\t\t)\n\t\t\t} else {\n\t\t\t\t// Save the starting value, but only once unless override is requested.\n\t\t\t\tif (typeof _valuesStart[property] === 'undefined' || overrideStartingValues) {\n\t\t\t\t\t_valuesStart[property] = startValue\n\t\t\t\t}\n\n\t\t\t\tif (!startValueIsArray) {\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t// @ts-ignore FIXME?\n\t\t\t\t\t_valuesStart[property] *= 1.0 // Ensures we're using numbers, not strings\n\t\t\t\t}\n\n\t\t\t\tif (isInterpolationList) {\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t// @ts-ignore FIXME?\n\t\t\t\t\t_valuesStartRepeat[property] = _valuesEnd[property].slice().reverse()\n\t\t\t\t} else {\n\t\t\t\t\t_valuesStartRepeat[property] = _valuesStart[property] || 0\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tstop(): this {\n\t\tif (!this._isChainStopped) {\n\t\t\tthis._isChainStopped = true\n\t\t\tthis.stopChainedTweens()\n\t\t}\n\n\t\tif (!this._isPlaying) {\n\t\t\treturn this\n\t\t}\n\n\t\t// eslint-disable-next-line\n\t\tthis._group && this._group.remove(this as any)\n\n\t\tthis._isPlaying = false\n\n\t\tthis._isPaused = false\n\n\t\tif (this._onStopCallback) {\n\t\t\tthis._onStopCallback(this._object)\n\t\t}\n\n\t\treturn this\n\t}\n\n\tend(): this {\n\t\tthis._goToEnd = true\n\t\tthis.update(Infinity)\n\t\treturn this\n\t}\n\n\tpause(time: number = now()): this {\n\t\tif (this._isPaused || !this._isPlaying) {\n\t\t\treturn this\n\t\t}\n\n\t\tthis._isPaused = true\n\n\t\tthis._pauseStart = time\n\n\t\t// eslint-disable-next-line\n\t\tthis._group && this._group.remove(this as any)\n\n\t\treturn this\n\t}\n\n\tresume(time: number = now()): this {\n\t\tif (!this._isPaused || !this._isPlaying) {\n\t\t\treturn this\n\t\t}\n\n\t\tthis._isPaused = false\n\n\t\tthis._startTime += time - this._pauseStart\n\n\t\tthis._pauseStart = 0\n\n\t\t// eslint-disable-next-line\n\t\tthis._group && this._group.add(this as any)\n\n\t\treturn this\n\t}\n\n\tstopChainedTweens(): this {\n\t\tfor (let i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\n\t\t\tthis._chainedTweens[i].stop()\n\t\t}\n\t\treturn this\n\t}\n\n\tgroup(group = mainGroup): this {\n\t\tthis._group = group\n\t\treturn this\n\t}\n\n\tcall(callback: (object: T) => void): this {\n\t\tthis._onFinishCallback = callback;\n\t\treturn this;\n\t}\n\n\tdelay(amount = 0): this {\n\t\tthis._delayTime = amount\n\t\treturn this\n\t}\n\n\tunion(headTween: Tween<T>, tailTween: Tween<T>): this {\n\t\tthis._headTween = headTween;\n\t\tthis._tailTween = tailTween.chain(this);\n\t\treturn this;\n\t}\n\n\trepeat(times = 0): this {\n\t\tthis._initialRepeat = times\n\t\tthis._repeat = times\n\t\treturn this\n\t}\n\n\trepeatDelay(amount?: number): this {\n\t\tthis._repeatDelayTime = amount\n\t\treturn this\n\t}\n\n\tyoyo(yoyo = false): this {\n\t\tthis._yoyo = yoyo\n\t\treturn this\n\t}\n\n\teasing(easingFunction: EasingFunction = Easing.Linear.None): this {\n\t\tthis._easingFunction = easingFunction\n\t\treturn this\n\t}\n\n\tinterpolation(interpolationFunction: InterpolationFunction = Interpolation.Linear): this {\n\t\tthis._interpolationFunction = interpolationFunction\n\t\treturn this\n\t}\n\n\t// eslint-disable-next-line\n\tchain(...tweens: Array<Tween<any>>): this {\n\t\tthis._chainedTweens = tweens\n\t\treturn this\n\t}\n\n\tunchain(...tweens: Array<Tween<any>>): this {\n\t\ttweens.forEach(tween => {\n\t\t\tlet index = this._chainedTweens.findIndex(v => v === tween);\n\t\t\tif (index > -1) this._chainedTweens.splice(index, 1);\n\t\t})\n\t\treturn this;\n\t}\n\n\tonStart(callback?: (object: T) => void): this {\n\t\tthis._onStartCallback = callback\n\t\treturn this\n\t}\n\n\tonEveryStart(callback?: (object: T) => void): this {\n\t\tthis._onEveryStartCallback = callback\n\t\treturn this\n\t}\n\n\tonUpdate(callback?: (object: T, elapsed: number) => void): this {\n\t\tthis._onUpdateCallback = callback\n\t\treturn this\n\t}\n\n\tonRepeat(callback?: (object: T) => void): this {\n\t\tthis._onRepeatCallback = callback\n\t\treturn this\n\t}\n\n\tonComplete(callback?: (object: T) => void): this {\n\t\tthis._onCompleteCallback = callback\n\t\treturn this\n\t}\n\n\tonStop(callback?: (object: T) => void): this {\n\t\tthis._onStopCallback = callback\n\t\treturn this\n\t}\n\n\tprivate _goToEnd = false\n\n\t/**\n\t * @returns true if the tween is still playing after the update, false\n\t * otherwise (calling update on a paused tween still returns true because\n\t * it is still playing, just paused).\n\t */\n\tupdate(time = now(), autoStart = true): boolean {\n\t\tif (this._isPaused) return true\n\n\t\tconst endTime = this._startTime + this._duration\n\n\t\tif (!this._goToEnd && !this._isPlaying) {\n\t\t\tif (time > endTime) return false\n\t\t\tif (autoStart) this.start(time, true)\n\t\t}\n\n\t\tthis._goToEnd = false\n\n\t\tif (time < this._startTime) {\n\t\t\treturn true\n\t\t}\n\n\t\tif (this._onStartCallbackFired === false) {\n\t\t\tif (this._onStartCallback) {\n\t\t\t\tthis._onStartCallback(this._object)\n\t\t\t}\n\n\t\t\tthis._onStartCallbackFired = true\n\t\t}\n\n\t\tif (this._onEveryStartCallbackFired === false) {\n\t\t\tif (this._onEveryStartCallback) {\n\t\t\t\tthis._onEveryStartCallback(this._object)\n\t\t\t}\n\n\t\t\tthis._onEveryStartCallbackFired = true\n\t\t}\n\n\t\tconst elapsedTime = time - this._startTime\n\t\tconst durationAndDelay = this._duration + (this._repeatDelayTime ?? this._delayTime)\n\t\tconst totalTime = this._duration + this._repeat * durationAndDelay\n\n\t\tconst elapsed = this._calculateElapsedPortion(elapsedTime, durationAndDelay, totalTime)\n\t\tconst value = this._easingFunction(elapsed)\n\n\t\tif (elapsed === 1) {\n\t\t\tif (this._onFinishCallback) {\n\t\t\t\tthis._onFinishCallback(this._object);\n\t\t\t}\n\t\t\tif (this._headTween) {\n\t\t\t\tif (this._headTweenStartFired === false) {\n\t\t\t\t\tthis._headTweenStartFired = true;\n\t\t\t\t\tthis._headTween.start(this._startTime + this._duration);\n\t\t\t\t\tthis._isPlaying = false;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst status = this._calculateCompletionStatus(elapsedTime, durationAndDelay)\n\n\t\tif (status === 'repeat') {\n\t\t\t// the current update is happening after the instant the tween repeated\n\t\t\tthis._processRepetition(elapsedTime, durationAndDelay)\n\t\t}\n\n\t\tthis._updateProperties(this._object, this._valuesStart, this._valuesEnd, value)\n\n\t\tif (status === 'about-to-repeat') {\n\t\t\t// the current update is happening at the exact instant the tween is going to repeat\n\t\t\t// the values should match the end of the tween, not the beginning,\n\t\t\t// that's why _processRepetition happens after _updateProperties\n\t\t\tthis._processRepetition(elapsedTime, durationAndDelay)\n\t\t}\n\n\t\tif (this._onUpdateCallback) {\n\t\t\tthis._onUpdateCallback(this._object, elapsed)\n\t\t}\n\n\t\tif (status === 'repeat' || status === 'about-to-repeat') {\n\t\t\tif (this._onRepeatCallback) {\n\t\t\t\tthis._onRepeatCallback(this._object)\n\t\t\t}\n\n\t\t\tif (this._headTween) {\n\t\t\t\tthis._headTweenStartFired = false;\n\t\t\t\tthis._initialRepeat = this._repeat;\n\t\t\t}\n\n\t\t\tthis._onEveryStartCallbackFired = false\n\t\t} else if (status === 'completed') {\n\t\t\tthis._isPlaying = false\n\n\t\t\tif (this._tailTween) {\n\t\t\t\tthis._tailTween.unchain(this);\n\t\t\t}\n\n\t\t\tif (this._onCompleteCallback) {\n\t\t\t\tthis._onCompleteCallback(this._object)\n\t\t\t}\n\n\t\t\tfor (let i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {\n\t\t\t\t// Make the chained tweens start exactly at the time they should,\n\t\t\t\t// even if the `update()` method was called way past the duration of the tween\n\t\t\t\tthis._chainedTweens[i].start(this._startTime + this._duration, false)\n\t\t\t}\n\t\t}\n\t\treturn status !== 'completed'\n\t}\n\n\tprivate _calculateElapsedPortion(elapsedTime: number, durationAndDelay: number, totalTime: number) {\n\t\tif (this._duration === 0 || elapsedTime > totalTime) {\n\t\t\treturn 1\n\t\t}\n\n\t\tconst timeIntoCurrentRepeat = elapsedTime % durationAndDelay\n\n\t\tconst portion = Math.min(timeIntoCurrentRepeat / this._duration, 1)\n\t\tif (portion === 0 && elapsedTime !== 0 && elapsedTime % this._duration === 0) {\n\t\t\treturn 1\n\t\t}\n\t\treturn portion\n\t}\n\n\tprivate _calculateCompletionStatus(elapsedTime: number, durationAndDelay: number) {\n\t\tif (this._duration !== 0 && elapsedTime < this._duration) {\n\t\t\treturn 'playing'\n\t\t}\n\n\t\tif (this._repeat <= 0) {\n\t\t\treturn 'completed'\n\t\t}\n\n\t\tif (elapsedTime === this._duration) {\n\t\t\treturn 'about-to-repeat'\n\t\t}\n\n\t\treturn 'repeat'\n\t}\n\n\tprivate _processRepetition(elapsedTime: number, durationAndDelay: number) {\n\t\tconst completeCount = Math.min(\n\t\t\tdurationAndDelay > 0 ? Math.trunc((elapsedTime - this._duration) / durationAndDelay) + 1 : 1,\n\t\t\tthis._repeat\n\t\t)\n\t\tif (isFinite(this._repeat)) {\n\t\t\tthis._repeat -= completeCount\n\t\t}\n\n\t\t// Reassign starting values, restart by making startTime = now\n\t\tfor (const property in this._valuesStartRepeat) {\n\t\t\tconst valueEnd = this._valuesEnd[property]\n\t\t\tif (!this._yoyo && typeof valueEnd === 'string') {\n\t\t\t\tthis._valuesStartRepeat[property] = this._valuesStartRepeat[property] + parseFloat(valueEnd)\n\t\t\t}\n\n\t\t\tif (this._yoyo) {\n\t\t\t\tthis._swapEndStartRepeatValues(property)\n\t\t\t}\n\n\t\t\tthis._valuesStart[property] = this._valuesStartRepeat[property]\n\t\t}\n\n\t\tif (this._yoyo) {\n\t\t\tthis._reversed = !this._reversed\n\t\t}\n\n\t\tthis._startTime += durationAndDelay * completeCount\n\t}\n\n\tprivate _updateProperties(\n\t\t_object: UnknownProps,\n\t\t_valuesStart: UnknownProps,\n\t\t_valuesEnd: UnknownProps,\n\t\tvalue: number,\n\t): void {\n\t\tfor (const property in _valuesEnd) {\n\t\t\t// Don't update properties that do not exist in the source object\n\t\t\tif (_valuesStart[property] === undefined) {\n\t\t\t\tcontinue\n\t\t\t}\n\n\t\t\tconst start = _valuesStart[property] || 0\n\t\t\tlet end = _valuesEnd[property]\n\t\t\tconst startIsArray = Array.isArray(_object[property])\n\t\t\tconst endIsArray = Array.isArray(end)\n\t\t\tconst isInterpolationList = !startIsArray && endIsArray\n\n\t\t\tif (isInterpolationList) {\n\t\t\t\t_object[property] = this._interpolationFunction(end as Array<number>, value)\n\t\t\t} else if (typeof end === 'object' && end) {\n\t\t\t\t// eslint-disable-next-line\n\t\t\t\t// @ts-ignore FIXME?\n\t\t\t\tthis._updateProperties(_object[property], start, end, value)\n\t\t\t\tlet des = Object.getOwnPropertyDescriptor(_object, property);\n\t\t\t\tif (des && des.set) {\n\t\t\t\t\t_object[property] = _object[property];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Parses relative end values with start as base (e.g.: +10, -3)\n\t\t\t\tend = this._handleRelativeValue(start as number, end as number | string)\n\n\t\t\t\t// Protect against non numeric properties.\n\t\t\t\tif (typeof end === 'number') {\n\t\t\t\t\t// eslint-disable-next-line\n\t\t\t\t\t// @ts-ignore FIXME?\n\t\t\t\t\t_object[property] = start + (end - start) * value\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate _handleRelativeValue(start: number, end: number | string): number {\n\t\tif (typeof end !== 'string') {\n\t\t\treturn end\n\t\t}\n\n\t\tif (end.charAt(0) === '+' || end.charAt(0) === '-') {\n\t\t\treturn start + parseFloat(end)\n\t\t}\n\n\t\treturn parseFloat(end)\n\t}\n\n\tprivate _swapEndStartRepeatValues(property: string): void {\n\t\tconst tmp = this._valuesStartRepeat[property]\n\t\tconst endValue = this._valuesEnd[property]\n\n\t\tif (typeof endValue === 'string') {\n\t\t\tthis._valuesStartRepeat[property] = this._valuesStartRepeat[property] + parseFloat(endValue)\n\t\t} else {\n\t\t\tthis._valuesStartRepeat[property] = this._valuesEnd[property]\n\t\t}\n\n\t\tthis._valuesEnd[property] = tmp\n\t}\n}\n\nexport type UnknownProps = Record<string, any>","import { Tween } from \"./Tween\";\nimport { Group } from \"./Group\";\n\nexport class TweenChain {\n private _object: Object;\n private _group: Group;\n private _tween: Tween<Object>;\n private _chainedTween: Tween<Object>;\n\n constructor(object: Object, group?: Group) {\n this._object = object;\n this._group = group;\n this._tween = new Tween(object, group);\n }\n\n start() {\n this._tween.start();\n return this;\n }\n\n stop() {\n this._tween.stop();\n return this;\n }\n\n repeat(times: number) {\n this._chainedTween.repeat(times);\n return this;\n }\n\n union() {\n this._chainedTween = this._tween = new Tween(this._object, this._group).union(this._tween, this._chainedTween);\n return this;\n }\n\n call(callback: (object: Object) => void) {\n this._chainTween().call(callback);\n return this;\n }\n\n delay(amount: number) {\n this._chainTween().delay(amount);\n return this;\n }\n\n to(properties: Record<string, any>, duration?: number, props?: {\n from?: Record<string, any>,\n easing?: (amount: number) => number,\n onStart?: (object: Object) => void,\n onStop?: (object: Object) => void,\n onComplete?: (object: Object) => void,\n onUpdate?: (object: Object, elapsed: number) => void,\n onRepeat?: (object: Object) => void\n }) {\n let tween = this._chainTween().to(properties, duration);\n if (props) {\n if (props.from) tween.from(props.from);\n if (props.easing) tween.easing(props.easing);\n if (props.onStart) tween.onStart(props.onStart);\n if (props.onStop) tween.onStop(props.onStop);\n if (props.onComplete) tween.onComplete(props.onComplete);\n if (props.onUpdate) tween.onUpdate(props.onUpdate);\n if (props.onRepeat) tween.onRepeat(props.onRepeat);\n }\n return this;\n }\n\n _chainTween() {\n let tween = this._tween;\n if (this._chainedTween) {\n tween = new Tween(this._object, this._group);\n this._chainedTween.chain(tween);\n }\n this._chainedTween = tween;\n return tween;\n }\n}","import { TweenChain } from \"./TweenChain\";\nimport { Group } from \"./Group\";\n\nexport class TweenManager {\n private _group: Group = new Group();\n\n destroy() {\n this._group.removeAll();\n }\n\n update(time: number) {\n this._group.update(time);\n }\n\n timeline(target: Object) {\n return new TweenChain(target, this._group);\n }\n\n killTweensOf(target: Object) {\n this._group.getAll().forEach((tween: any) => tween._object === target && this._group.remove(tween));\n }\n}","import { LoadingManager, Object3D } from \"three\";\nimport { ResourceManager } from \"./ResourceManager\";\nimport { TextureSettings } from \"../TextureSettings\";\n\nexport interface LoadProperties {\n url: string,\n buffer?: string | ArrayBuffer,\n texSettings?: TextureSettings,\n path?: string;\n resourcePath?: string;\n dracoPath?: string;\n manager?: LoadingManager;\n onLoad: (asset: any) => void,\n onProgress?: (event: ProgressEvent) => void,\n onError?: (event: ErrorEvent) => void,\n}\n\nexport abstract class aLoader {\n static _texKeys = [\n \"map\", \"alphaMap\", \"aoMap\", \"bumpMap\", \"displacementMap\", \"emissiveMap\",\n \"envMap\", \"lightMap\", \"metalnessMap\", \"normalMap\", \"roughnessMap\", \"specularMap\", \"alphaMap\"\n ]\n static _setUserData(node: Object3D) {\n const keys = aLoader._texKeys;\n\n const meshes = [];\n const textures = {};\n const materials = {};\n const queue = [node];\n\n while (queue.length !== 0) {\n let object = queue.shift() as any;\n if (object.isMesh) {\n meshes.push(object);\n const mat = object.material;\n if (Array.isArray(mat)) mat.forEach(v => materials[v.uuid] = v)\n else materials[mat.uuid] = mat;\n }\n queue.push(...object.children);\n }\n\n Object.values(materials).forEach(mat => {\n keys.forEach(k => {\n let tex = mat[k];\n if (tex) {\n textures[tex.uuid] = tex;\n }\n });\n })\n\n Object.assign(node.userData, { meshes, materials, textures });\n\n return node;\n }\n\n constructor(public manager: ResourceManager) { };\n abstract extension: string[];\n abstract load(props: LoadProperties): void;\n\n}","import { LoadProperties, aLoader } from \"../asset/aLoader\";\nimport { EXRLoader } from \"three/examples/jsm/loaders/EXRLoader.js\";\n\nexport class aEXRLoader extends aLoader {\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 EXRLoader();\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: EXRLoader;\n}","import { Group } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\nimport { FBXLoader } from \"three/examples/jsm/loaders/FBXLoader.js\";\n\nexport class aFBXLoader extends aLoader {\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 FBXLoader();\n }\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n\n const loadCallback = (node: Group) => {\n onLoad(aLoader._setUserData(node));\n }\n\n if (buffer) {\n loadCallback(loader.parse(buffer, path));\n }\n else {\n loader.load(url, loadCallback, onProgress, onError);\n }\n }\n\n private _loader: FBXLoader;\n}","import { LoadProperties, aLoader } from \"../asset/aLoader\";\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\";\n\nexport class aGLTFLoader extends aLoader {\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 GLTFLoader();\n loader.setDRACOLoader(dracoLoader);\n loader.setMeshoptDecoder(MeshoptDecoder);\n }\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n\n const loadCallback = (gltf: GLTF) => {\n const node = gltf.scene;\n node.animations.push(...gltf.animations);\n onLoad(aLoader._setUserData(node));\n }\n\n if (buffer) {\n loader.parse(buffer, resourcePath, loadCallback, onError);\n }\n else {\n loader.load(url, loadCallback, onProgress, onError);\n }\n }\n\n private _loader: GLTFLoader;\n private _dracoLoader: DRACOLoader;\n}","import { EquirectangularReflectionMapping } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\nimport { RGBELoader } from \"three/examples/jsm/loaders/RGBELoader.js\";\n\nexport class aHDRLoader extends aLoader {\n extension: string[] = [\"hdr\"];\n\n load({\n url,\n path,\n resourcePath,\n manager,\n texSettings,\n onLoad,\n onProgress,\n onError,\n }: LoadProperties): void {\n\n let loader = this._loader;\n if (loader === undefined) {\n loader = this._loader = new RGBELoader();\n }\n loader.manager = manager;\n loader.setPath(path);\n loader.setResourcePath(resourcePath);\n\n const settings = Object.assign({ mapping: EquirectangularReflectionMapping }, texSettings);\n loader.load(url, tex => onLoad(Object.assign(tex, settings)), onProgress, onError);\n }\n\n private _loader: RGBELoader;\n}","import { FileLoader } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nexport class aJSONLoader extends aLoader {\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 } from \"three\";\nimport { LoadProperties, aLoader } from \"../asset/aLoader\";\n\nexport class aTextureLoader extends aLoader {\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 TextureLoader();\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: TextureLoader;\n}","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","\nclass ClassProperties {\n private _properties: Object = Object.create(null);\n constructor(public clsName: string) { }\n property(propertyKey: string, options: Object = {}) {\n this._properties[propertyKey] = options;\n return this;\n }\n applyProperties(target: object) {\n Object.assign(target, this._properties);\n return target;\n }\n}\n\nexport class PropertyManager {\n static _classMap = new Map<String, ClassProperties>();\n static _propertyMap = new Map<Object, Object>();\n\n static _hasProperties(constructor: Function) {\n return PropertyManager._propertyMap.has(constructor);\n }\n static _getProperties(constructor: Function, autoAdd: boolean = true) {\n let props = PropertyManager._propertyMap.get(constructor);\n if (props === undefined && autoAdd) {\n props = Object.create(null);\n PropertyManager._propertyMap.set(constructor, props);\n }\n return props;\n }\n static _getMergedProperties(constructor: Function) {\n let props = null;\n while (constructor !== Object.constructor.prototype) {\n let values = PropertyManager._getProperties(constructor, false);\n if (values) {\n if (props === null) {\n props = Object.create(null);\n }\n Object.assign(props, values);\n }\n constructor = Object.getPrototypeOf(constructor);\n }\n return props;\n }\n static _getClassProperties(clsName: string, autoAdd: boolean = true) {\n let props = PropertyManager._classMap.get(clsName);\n if (props === undefined && autoAdd) {\n props = new ClassProperties(clsName);\n PropertyManager._classMap.set(clsName, props);\n }\n return props;\n }\n static _applyClassProperties(clsName: string, constructor: Function) {\n let cls = PropertyManager._getClassProperties(clsName, false);\n if (cls) {\n return cls.applyProperties(PropertyManager._getProperties(constructor));\n }\n else {\n return PropertyManager._getProperties(constructor, false);\n }\n }\n}\n\nexport interface IPropertyOptions {\n dir?: string;\n parent?: string;\n max?: number;\n min?: number;\n step?: number;\n value?: any;\n name?: string;\n}\n\ntype PropertyDecorator = (target: Object, propertyKey: string) => void;\nexport function property(options?: IPropertyOptions): PropertyDecorator;\nexport function property(...args: Parameters<PropertyDecorator>): void;\nexport function property(target?: Object, propertyKey?: string) {\n let options: IPropertyOptions | Function | string = null;\n function normalized(target: Object, propertyKey: string) {\n PropertyManager._getProperties(target.constructor)[propertyKey] = options;\n }\n if (target === undefined) { //@property()\n return property({});\n }\n else if (typeof propertyKey === \"undefined\") { // @property(options)\n options = target;\n return normalized;\n }\n else { // @property\n options = {};\n normalized(target, propertyKey);\n }\n}","import { property } from \"../PropertyManager\";\nimport { Easing } from \"../tween\";\n\nexport const CinestationBlendStyle = {\n Linear: Easing.Linear.None,\n QuadraticIn: Easing.Quadratic.In,\n QuadraticOut: Easing.Quadratic.Out,\n QuadraticInOut: Easing.Quadratic.InOut,\n}\n\nexport type CinestationBlendStyle = typeof CinestationBlendStyle[keyof typeof CinestationBlendStyle];\n\nexport class CinestationBlendDefinition {\n\n @property({ value: CinestationBlendStyle })\n style: CinestationBlendStyle = CinestationBlendStyle.QuadraticInOut;\n\n @property\n time: number = 4;\n\n}","import { MathUtils } from \"three\";\n\nexport class ObjectInstance {\n static _instanceCount: number = 0;\n \n readonly instanceId: number = ObjectInstance._instanceCount++;\n readonly uuid: string = MathUtils.generateUUID();\n name: string = \"\";\n type: string = \"ObjectInstance\";\n}","import { Object3D } from \"three\";\nimport { Viewer } from \"./Viewer\";\nimport { ComponentManager } from \"./ComponentManager\";\nimport { ObjectInstance } from \"./ObjectInstance\";\n\nexport class Component<T extends Object3D = Object3D> extends ObjectInstance{\n\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 private _enabled: boolean = true;\n\n node: T;\n viewer: Viewer;\n manager: ComponentManager;\n type: string = \"Component\";\n\n onLoad?(): void;\n onEnable?(): void;\n onDisable?(): void;\n onDestroy?(): void;\n start?(): void;\n update?(dt: number): void;\n lastUpdate?(dt: number): void;\n\n flags: {\n Destroyed?: boolean;\n OnLoadCalled?: boolean;\n OnEnableCalled?: boolean;\n StartCalled?: boolean;\n Deactivating?: boolean;\n IsStartCalled?: boolean;\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}","import { MathUtils, PerspectiveCamera } from \"three\";\nimport { CinestationBlendDefinition } from \"./CinestationBlendDefinition\";\nimport { VirtualCamera } from \"./VirtualCamera\";\nimport { Component } from \"../Component\";\nimport { property } from \"../PropertyManager\";\n\nconst { clamp, lerp } = MathUtils;\n\nexport class CinestationBrain extends Component<PerspectiveCamera> {\n private _vcam: VirtualCamera | null = null;\n private _vcamSolo: VirtualCamera | null = null;\n private _vcams: VirtualCamera[] = [];\n private _lerpTime: number = 4;\n\n @property\n brainBlend: CinestationBlendDefinition = new CinestationBlendDefinition();\n\n get vcam() {\n return this._vcam;\n }\n\n get vcams() {\n return this._vcams\n }\n\n lastUpdate(dt: number) {\n let vcam = this.getActiveCamera();\n if (vcam == null) return;\n\n this._vcams.forEach(v => {\n if (!v.locked) {\n v.enabled = v === vcam\n }\n });\n\n if (this._lerpTime < this.brainBlend.time) {\n this._lerpTime += dt;\n let t = clamp(this._lerpTime / this.brainBlend.time, 0, 1);\n this._lerpToMainCamera(vcam, this.brainBlend.style(t));\n }\n else {\n this._lerpToMainCamera(vcam, 1);\n }\n }\n\n activeCamera(vcam: VirtualCamera, time: number = 4) {\n if (this._vcamSolo !== vcam) {\n this._vcamSolo = vcam;\n this._lerpTime = 0;\n this.brainBlend.time = time;\n }\n }\n\n addCamera(vcam: VirtualCamera) {\n let index = this._vcams.indexOf(vcam);\n if (index === -1) {\n this._vcams.push(vcam);\n }\n }\n\n removeCamera(vcam: VirtualCamera) {\n let index = this._vcams.indexOf(vcam);\n if (index !== -1) {\n this._vcams.splice(index, 1);\n }\n }\n\n getActiveCamera() {\n return this._vcamSolo || this._vcams.filter(v => v.enabled || v.locked).sort((a, b) => b.priority - a.priority)[0];\n }\n\n private _lerpToMainCamera(vcam: VirtualCamera, t: number) {\n const from = this.node, to = vcam;\n const { lens, finalPosition, finalRotation } = to;\n\n const isLensChanged = from.fov != lens.fov || from.near != lens.near || from.far != lens.far;\n\n from.position.lerp(finalPosition, t);\n from.quaternion.slerp(finalRotation, t);\n from.fov = lerp(from.fov, lens.fov, t);\n from.near = lens.near;\n from.far = lens.far;\n\n if (isLensChanged) {\n from.updateProjectionMatrix();\n }\n }\n}","import { Object3D, Quaternion, Vector3 } from \"three\";\nimport { Component } from \"../Component\";\nimport { CinestationBrain } from \"./CinestationBrain\";\nimport { property } from \"../PropertyManager\";\n\nclass Lens {\n @property\n fov: number = 45;\n @property\n near: number = 0.1;\n @property\n far: number = 1000;\n}\n\nexport class VirtualCamera extends Component<Object3D & { isCamera?: boolean }> {\n private _finalPosition: Vector3 = new Vector3();\n private _finalRotation: Quaternion = new Quaternion();\n\n locked: boolean = false;\n priority: number = 10;\n\n @property\n lens: Lens = new Lens();\n\n correctPosition: Vector3 = new Vector3();\n correctRotation: Quaternion = new Quaternion();\n brain!: CinestationBrain;\n\n get finalPosition() {\n return this._finalPosition.copy(this.node.position).add(this.correctPosition);\n }\n\n get finalRotation() {\n return this._finalRotation.copy(this.node.quaternion).multiply(this.correctRotation);\n }\n\n onLoad() {\n const camera = this.viewer.camera;\n\n this.node.isCamera = true;\n this.lens.fov = camera.fov;\n this.lens.near = camera.near;\n this.lens.far = camera.far;\n\n this.brain = this.viewer.getComponent(camera, CinestationBrain, true);\n this.brain.addCamera(this);\n }\n\n onDestroy() {\n this.brain.removeCamera(this);\n }\n}","import { Camera, Intersection, Object3D, Raycaster, Vector2 } from \"three\";\n\nconst PressState = {\n NONE: 1 << 0,\n SELECTED: 1 << 1,\n IN: 1 << 2,\n}\ntype PressState = typeof PressState[keyof typeof PressState];\n\nexport interface ConnTarget {\n node: Object3D;\n emit(name: string, e: { intersects: Intersection[] }): void;\n has(name: string): boolean;\n}\n\nexport class Pressability {\n private _raycaster: Raycaster = new Raycaster();\n private _connectors: { target: ConnTarget, state: number }[] = [];\n\n public connect(target: ConnTarget) {\n let connector = this._connectors.find(v => v.target === target);\n if (connector === undefined) {\n connector = { target, state: PressState.NONE };\n this._connectors.push(connector);\n }\n }\n\n public disconnect(target: ConnTarget) {\n let index = this._connectors.findIndex(v => v.target === target);\n if (index !== -1) {\n this._connectors.splice(index, 1);\n }\n }\n\n public pointerDown(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"click\") || conn.target.has(\"pointerdown\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n conn.state |= PressState.SELECTED;\n conn.target.emit(\"pointerdown\", { intersects });\n }\n }\n }\n }\n\n public pointerUp(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"click\") || conn.target.has(\"pointerup\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n if (conn.state & PressState.SELECTED) {\n conn.state &= ~PressState.SELECTED;\n conn.target.emit(\"click\", { intersects });\n }\n conn.target.emit(\"pointerup\", { intersects });\n }\n }\n }\n }\n\n public pointerMove(pointer: Vector2, camera: Camera) {\n if (this._connectors.length === 0) return;\n\n this._raycaster.setFromCamera(pointer, camera);\n for (let conn of this._connectors) {\n if (conn.target.has(\"pointerover\") || conn.target.has(\"pointerout\")) {\n let intersects = this._raycaster.intersectObject(conn.target.node, true);\n if (intersects.length) {\n if (!(conn.state & PressState.IN)) {\n conn.state |= PressState.IN;\n conn.target.emit(\"pointerover\", { intersects });\n }\n }\n else {\n if (conn.state & PressState.IN) {\n conn.state &= ~PressState.IN;\n conn.target.emit(\"pointerout\", { intersects });\n }\n }\n }\n }\n }\n\n}\n","import { Vector2 } from \"three\";\nimport { ConnTarget, Pressability } from \"./Pressability\";\nimport { Viewer } from \"./Viewer\";\n\ninterface InputTarget {\n on?(event: string, cb: (...args: any[]) => void, target: Object, once?: boolean);\n off?(event: string, cb: (...args: any[]) => void, target: Object);\n removeEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;\n addEventListener?(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;\n}\n\nexport class DeviceInput {\n static readonly CLICK = \"click\";\n static readonly MOUSE_WHEEL = \"mousewheel\";\n static readonly TOUCH_START = \"touchstart\";\n static readonly TOUCH_END = \"touchend\";\n static readonly TOUCH_MOVE = \"touchmove\";\n static readonly POINTER_DOWN = \"pointerdown\";\n static readonly POINTER_UP = \"pointerup\";\n static readonly POINTER_MOVE = \"pointermove\";\n static readonly POINTER_OVER = \"pointerover\";\n static readonly POINTER_OUT = \"pointerout\";\n static readonly KEYDOWN = \"keydown\";\n static readonly KEYPRESS = \"keypress\";\n static readonly KEYUP = \"keyup\";\n static readonly RESIZE = \"resize\";\n\n private _listeners: { target: InputTarget, type: string, callback: any }[] = [];\n private _mouseWheel: number = 0;\n private _touches: { id: number, position: Vector2 }[] = [];\n private _touchCount: number = 0;\n private _pointerButton: number = -1;\n private _pointerPosition: Vector2 = new Vector2();\n private _pointer: Vector2 = new Vector2();\n private _keys: { [k: string]: boolean } = {};\n private _pressability: Pressability = new Pressability();\n\n get pointerButton() {\n return this._pointerButton;\n }\n\n get pointer() {\n return this._pointer;\n }\n\n get pointerPosition() {\n return this._pointerPosition;\n }\n\n get mouseWheel() {\n return this._mouseWheel;\n }\n\n get touchCount() {\n return this._touchCount;\n }\n\n get touches() {\n return this._touches;\n }\n\n get keys() {\n return this._keys;\n }\n\n constructor(public viewer: Viewer) { }\n\n addEventListeners() {\n const domElement = this.viewer.canvas; domElement.style.touchAction = 'none';\n this._addEventListener(domElement, 'contextmenu', e => e.preventDefault());\n this._addEventListener(domElement, \"pointerdown\", e => this._onPointerDown(e), { passive: false });\n this._addEventListener(domElement, \"pointerup\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(domElement, \"pointercancel\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(domElement, \"pointerout\", e => this._onPointerUp(e), { passive: false });\n this._addEventListener(domElement, \"pointermove\", e => this._onPointerMove(e), { passive: true });\n this._addEventListener(domElement, \"wheel\", e => this._onMouseWheel(e), { passive: false });\n this._addEventListener(domElement, \"touchstart\", e => this._onTouchStart(e), { passive: true });\n this._addEventListener(domElement, \"touchend\", e => this._onTouchEnd(e), { passive: true });\n this._addEventListener(domElement, \"touchmove\", e => this._onTouchMove(e), { passive: true });\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 }\n\n removeAllListeners() {\n for (let { target, type, callback } of this._listeners) {\n if (target.removeEventListener) target.removeEventListener(type, callback);\n else if (target.off) target.off(type, callback, target);\n }\n this._listeners = [];\n }\n\n connect(target: ConnTarget, event: string) {\n switch (event) {\n case DeviceInput.CLICK:\n case DeviceInput.POINTER_DOWN:\n case DeviceInput.POINTER_UP:\n case DeviceInput.POINTER_OVER:\n case DeviceInput.POINTER_OUT:\n this._pressability.connect(target);\n break;\n }\n }\n\n disconnect(target: ConnTarget) {\n this._pressability.disconnect(target);\n }\n\n private _addEventListener<K extends keyof HTMLElementEventMap>(\n target: InputTarget,\n type: K | string,\n callback: (this: HTMLCanvasElement, ev: HTMLElementEventMap[K]) => any,\n options?: boolean | AddEventListenerOptions\n ) {\n if (target.addEventListener) target.addEventListener(type, callback, options);\n else if (target.on) target.on(type, callback, target);\n this._listeners.push({ target, type, callback });\n }\n\n private _remapPointer(e: PointerEvent) {\n const width = this.viewer.width;\n return this.viewer.rootRotated ? {\n button: e.button,\n buttons: e.buttons,\n clientX: e.clientY,\n clientY: width - e.clientX,\n offsetX: e.offsetY,\n offsetY: width - e.offsetX,\n pageX: e.pageY,\n pageY: width - e.pageX,\n screenX: e.screenY,\n screenY: width - e.screenX,\n movementX: e.movementY,\n movementY: e.movementX,\n } as any : e;\n }\n\n private _remapTouch(e: TouchEvent) {\n const width = this.viewer.width;\n return this.viewer.rootRotated ? {\n touches: Array.from(e.touches).map(v => {\n return {\n identifier: v.identifier,\n clientX: v.clientY,\n clientY: width - v.clientX,\n pageX: v.pageY,\n pageY: width - v.pageX,\n screenX: v.screenY,\n screenY: width - v.screenX,\n }\n })\n } as any : e;\n }\n\n private _computePointer(e: PointerEvent) {\n this._pointer.x = e.offsetX / this.viewer.width * 2 - 1;\n this._pointer.y = 1 - e.offsetY / this.viewer.height * 2;\n this._pointerPosition.set(e.offsetX, e.offsetY);\n }\n\n private _onPointerDown(e: PointerEvent) {\n e.preventDefault();\n e = this._remapPointer(e);\n this._pointerButton = e.button;\n this._computePointer(e);\n this._pressability.pointerDown(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_DOWN, e);\n }\n\n private _onPointerUp(e: PointerEvent) {\n e.preventDefault();\n e = this._remapPointer(e);\n this._pointerButton = -1;\n this._computePointer(e);\n this._pressability.pointerUp(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_UP, e);\n }\n\n private _onPointerMove(e: PointerEvent) {\n e = this._remapPointer(e);\n this._computePointer(e);\n this._pressability.pointerMove(this._pointer, this.viewer.camera);\n this.viewer.emit(DeviceInput.POINTER_MOVE, e);\n }\n\n private _onMouseWheel(e: WheelEvent & { wheelDelta?: number }) {\n e.preventDefault();\n this._mouseWheel = e.deltaY || e.wheelDelta;\n this.viewer.emit(DeviceInput.MOUSE_WHEEL, e);\n }\n\n private _onTouchStart(e: TouchEvent) {\n e = this._remapTouch(e);\n this.viewer.emit(DeviceInput.TOUCH_START, e);\n }\n\n private _onTouchEnd(e: TouchEvent) {\n e = this._remapTouch(e);\n this.viewer.emit(DeviceInput.TOUCH_END, e);\n }\n\n private _onTouchMove(e: TouchEvent) {\n e = this._remapTouch(e);\n let touches = e.touches;\n let touchesTo = this._touches;\n for (let i = touches.length; i--;) {\n if (touchesTo[i] == undefined) {\n touchesTo[i] = { id: -1, position: new Vector2() };\n }\n const touch = touches[i];\n touchesTo[i].id = touch.identifier;\n touchesTo[i].position.set(touch.pageX, touch.pageY);\n }\n this._touchCount = touches.length;\n this.viewer.emit(DeviceInput.TOUCH_MOVE, e);\n }\n\n private _onKeyDown(e: KeyboardEvent) {\n this._keys[e.key] = true;\n this.viewer.emit(DeviceInput.KEYDOWN, e);\n }\n\n private _onKeyPress(e: KeyboardEvent) {\n this._keys[e.key] = true;\n this.viewer.emit(DeviceInput.KEYPRESS, e);\n }\n\n private _onKeyUp(e: KeyboardEvent) {\n this._keys[e.key] = false;\n this.viewer.emit(DeviceInput.KEYUP, e);\n }\n}","const isSSR = typeof window === 'undefined';\n\nexport interface IDeviceResult {\n version: string;\n}\n\nexport interface IBrowserResult {\n name: string;\n version: string;\n}\n\nexport class DetectUA {\n public userAgent: string;\n\n // Internal variables, prevents multiple lookups\n private isAndroidDevice: boolean;\n private iOSDevice: string;\n\n /**\n * Detect a users browser, browser version and whether it is a mobile-, tablet- or desktop device\n *\n * @param forceUserAgent Force a user agent string (useful for testing)\n */\n constructor(forceUserAgent?: string) {\n this.userAgent = forceUserAgent\n ? forceUserAgent\n : !isSSR && window.navigator\n ? window.navigator.userAgent\n : '';\n\n this.isAndroidDevice = !/like android/i.test(this.userAgent) && /android/i.test(this.userAgent);\n this.iOSDevice = this.match(1, /(iphone|ipod|ipad)/i).toLowerCase();\n\n // Workaround for ipadOS, force detection as tablet\n // SEE: https://github.com/lancedikson/bowser/issues/329\n // SEE: https://stackoverflow.com/questions/58019463/how-to-detect-device-name-in-safari-on-ios-13-while-it-doesnt-show-the-correct\n if (\n !isSSR &&\n navigator.platform === 'MacIntel' &&\n navigator.maxTouchPoints > 2 &&\n !(window as any).MSStream\n ) {\n this.iOSDevice = 'ipad';\n }\n }\n\n /**\n * Match entry based on position found in the user-agent string\n *\n * @param pattern regular expression pattern\n */\n private match(position: number, pattern: RegExp): string {\n const match = this.userAgent.match(pattern);\n\n return (match && match.length > 1 && match[position]) || '';\n }\n\n /**\n * Returns if the device is a mobile device\n */\n get isMobile(): boolean {\n return (\n // Default mobile\n !this.isTablet &&\n (/[^-]mobi/i.test(this.userAgent) ||\n // iPhone / iPod\n this.iOSDevice === 'iphone' ||\n this.iOSDevice === 'ipod' ||\n // Android\n this.isAndroidDevice ||\n // Nexus mobile\n /nexus\\s*[0-6]\\s*/i.test(this.userAgent))\n );\n }\n\n /**\n * Returns if the device is a tablet device\n */\n get isTablet(): boolean {\n return (\n // Default tablet\n (/tablet/i.test(this.userAgent) && !/tablet pc/i.test(this.userAgent)) ||\n // iPad\n this.iOSDevice === 'ipad' ||\n // Android\n (this.isAndroidDevice && !/[^-]mobi/i.test(this.userAgent)) ||\n // Nexus tablet\n (!/nexus\\s*[0-6]\\s*/i.test(this.userAgent) && /nexus\\s*[0-9]+/i.test(this.userAgent))\n );\n }\n\n /**\n * Returns if the device is a desktop device\n */\n get isDesktop(): boolean {\n return !this.isMobile && !this.isTablet;\n }\n\n /**\n * Returns if the device is running MacOS (and if so which version)\n *\n * '5' => Leopard'\n * '6' => Snow Leopard'\n * '7' => Lion'\n * '8' => Mountain Lion'\n * '9' => Mavericks'\n * '10' => Yosemite'\n * '11' => El Capitan'\n * '12' => Sierra'\n * '13' => High Sierra'\n * '14' => Mojave'\n * '15' => Catalina'\n */\n get isMacOS(): IDeviceResult | boolean {\n return (\n /macintosh/i.test(this.userAgent) && {\n version: this.match(1, /mac os x (\\d+(\\.?_?\\d+)+)/i)\n .replace(/[_\\s]/g, '.')\n .split('.')\n .map((versionNumber: string): string => versionNumber)[1],\n }\n );\n }\n\n /**\n * Returns if the device is running Windows (and if so which version)\n *\n * 'NT' => 'NT'\n * 'XP' => 'XP'\n * 'NT 5.0' => '2000'\n * 'NT 5.1' => 'XP'\n * 'NT 5.2' => '2003'\n * 'NT 6.0' => 'Vista'\n * 'NT 6.1' => '7'\n * 'NT 6.2' => '8'\n * 'NT 6.3' => '8.1'\n * 'NT 10.0' => '10'\n */\n get isWindows(): IDeviceResult | boolean {\n return (\n /windows /i.test(this.userAgent) && {\n version: this.match(1, /Windows ((NT|XP)( \\d\\d?.\\d)?)/i),\n }\n );\n }\n\n /**\n * Returns if the device is an iOS device (and if so which version)\n */\n get isiOS(): IDeviceResult | boolean {\n return (\n !!this.iOSDevice && {\n version:\n this.match(1, /os (\\d+([_\\s]\\d+)*) like mac os x/i).replace(/[_\\s]/g, '.') ||\n this.match(1, /version\\/(\\d+(\\.\\d+)?)/i),\n }\n );\n }\n\n /**\n * Returns if the device is an Android device (and if so which version)\n */\n get isAndroid(): IDeviceResult | boolean {\n return (\n this.isAndroidDevice && {\n version: this.match(1, /android[ \\/-](\\d+(\\.\\d+)*)/i),\n }\n );\n }\n\n /**\n * Returns the browser name and version\n */\n get browser(): IBrowserResult | boolean {\n const versionIdentifier = this.match(1, /version\\/(\\d+(\\.\\d+)?)/i);\n\n if (/opera/i.test(this.userAgent)) {\n // Opera\n return {\n name: 'Opera',\n version: versionIdentifier || this.match(1, /(?:opera|opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/opr\\/|opios/i.test(this.userAgent)) {\n // Opera\n return {\n name: 'Opera',\n version: this.match(1, /(?:opr|opios)[\\s\\/](\\d+(\\.\\d+)?)/i) || versionIdentifier,\n };\n } else if (/SamsungBrowser/i.test(this.userAgent)) {\n // Samsung Browser\n return {\n name: 'Samsung Internet for Android',\n version: versionIdentifier || this.match(1, /(?:SamsungBrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/yabrowser/i.test(this.userAgent)) {\n // Yandex Browser\n return {\n name: 'Yandex Browser',\n version: versionIdentifier || this.match(1, /(?:yabrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/ucbrowser/i.test(this.userAgent)) {\n // UC Browser\n return {\n name: 'UC Browser',\n version: this.match(1, /(?:ucbrowser)[\\s\\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/msie|trident/i.test(this.userAgent)) {\n // Internet Explorer\n return {\n name: 'Internet Explorer',\n version: this.match(1, /(?:msie |rv:)(\\d+(\\.\\d+)?)/i),\n };\n } else if (/(edge|edgios|edga|edg)/i.test(this.userAgent)) {\n // Edge\n return {\n name: 'Microsoft Edge',\n version: this.match(2, /(edge|edgios|edga|edg)\\/(\\d+(\\.\\d+)?)/i),\n };\n } else if (/firefox|iceweasel|fxios/i.test(this.userAgent)) {\n // Firefox\n return {\n name: 'Firefox',\n version: this.match(1, /(?:firefox|iceweasel|fxios)[ \\/](\\d+(\\.\\d+)?)/i),\n };\n } else if (/chromium/i.test(this.userAgent)) {\n // Chromium\n return {\n name: 'Chromium',\n version: this.match(1, /(?:chromium)[\\s\\/](\\d+(?:\\.\\d+)?)/i) || versionIdentifier,\n };\n } else if (/chrome|crios|crmo/i.test(this.userAgent)) {\n // Chrome\n return {\n name: 'Chrome',\n version: this.match(1, /(?:chrome|crios|crmo)\\/(\\d+(\\.\\d+)?)/i),\n };\n } else if (/safari|applewebkit/i.test(this.userAgent)) {\n // Safari\n return {\n name: 'Safari',\n version: versionIdentifier,\n };\n } else {\n // Everything else\n return {\n name: this.match(1, /^(.*)\\/(.*) /),\n version: this.match(2, /^(.*)\\/(.*) /),\n };\n }\n }\n}","import { DetectUA } from \"./DetectUA\";\n\nconst detectUA = new DetectUA();\nconst userAgent = (navigator.userAgent || navigator.vendor).toLowerCase();\nconst browserName = typeof detectUA.browser === \"boolean\" ? \"\" : detectUA.browser.name\nconst audioElem = document.createElement(\"audio\");\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 isSupportOgg = !!audioElem.canPlayType(\"audio/ogg\");\n static isRetina = window.devicePixelRatio && window.devicePixelRatio >= 1.5;\n static devicePixelRatio = window.devicePixelRatio || 1;\n static cpuCoreCount = navigator.hardwareConcurrency || 1;\n static baseUrl = document.location.origin;\n static isIFrame = window.self !== window.top;\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, Vector3 } from \"three\";\n\nconst { clamp } = MathUtils;\nconst { max, abs, acos } = Math;\n\nconst EPSILON = 1.e-6;\nconst __delta = new Vector3();\n\nexport function VInterpTo(\n current: Vector3,\n target: Vector3,\n deltaTime: number,\n speed: number,\n out: Vector3 = current\n) {\n if (speed <= 0) {\n return out.copy(target);\n }\n let dist = __delta.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 = __delta.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) {\n if (speed <= 0) {\n return target;\n }\n if (Quat_Equals(current, target)) {\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) {\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) {\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","import { MathUtils, Quaternion, Spherical, Vector2, Vector3 } from \"three\";\nimport { VirtualCamera } from \"./VirtualCamera\";\nimport { DeviceInput } from \"../DeviceInput\";\nimport { SystemInfo } from \"../SystemInfo\";\nimport { property } from \"../PropertyManager\";\nimport { FInterpTo, VInterpTo } from \"../math\";\nimport { Easing, EasingFunction } from \"../tween\";\n\nconst { clamp, degToRad } = MathUtils;\nconst { abs, tan, PI } = Math;\nconst PI2 = PI * 2;\nconst ESP = 0.001;\n\nexport class FreelookVirtualCamera extends VirtualCamera {\n static __loc0 = new Vector2();\n static __loc1 = new Vector2();\n static __center = new Vector2();\n static __preCenter = new Vector2();\n static __panDelta = new Vector2();\n static __panTarget = new Vector2();\n static __rotateDelta = new Vector2();\n static __posDelta = new Vector3();\n static __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\n private _tempSmoothing: number = 6;\n private _tempRotateSmoothing: number = 8;\n private _targetTheta: number = 0;\n private _targetPhi: number = 0;\n private _targetSpringLength: number = 4;\n private _targetFov: number = this.fov;\n private _targetLookAt: Vector3 = new Vector3();\n\n\n @property({ dir: \"set\" })\n forbidX: boolean = false;\n @property({ dir: \"set\" })\n forbidY: boolean = false;\n @property({ dir: \"set\" })\n forbidZ: boolean = false;\n @property({ dir: \"set\" })\n forbidPanX: boolean = false;\n @property({ dir: \"set\" })\n forbidPanY: boolean = false;\n @property({ dir: \"set\" })\n forbitPanOffsetY: boolean = false;\n\n @property({ dir: \"set\", step: 0.01 })\n panSpeed: number = 1;\n @property({ dir: \"set\", step: 0.01 })\n rotateSpeed: number = 1;\n @property({ dir: \"set\", step: 0.01 })\n smoothing: number = 5;\n @property({ dir: \"set\", step: 0.01 })\n rotateSmoothing: number = 8;\n @property({ dir: \"set\", step: 0.01 })\n phiMin: number = ESP;\n @property({ dir: \"set\", step: 0.01 })\n phiMax: number = Math.PI - ESP;\n @property({ dir: \"set\", step: 0.01 })\n thetaMin: number = -Infinity;\n @property({ dir: \"set\", step: 0.01 })\n thetaMax: number = Infinity;\n @property({ dir: \"set\", step: 0.01 })\n distanceMin: number = ESP;\n @property({ dir: \"set\", step: 0.01 })\n distanceMax: number = Infinity;\n\n @property({ 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 springLength() {\n return this._spherical.radius;\n }\n set springLength(v: number) {\n this._spherical.radius = this._targetSpringLength = v;\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 = v;\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 = v;\n }\n\n @property\n get fov() {\n return this.lens.fov;\n }\n set fov(v: number) {\n this.lens.fov = this._targetFov = v;\n }\n\n onEnable() {\n this.viewer.on(DeviceInput.POINTER_DOWN, this._onPointerDown, this);\n this.viewer.on(DeviceInput.POINTER_UP, this._onPointerUp, this);\n this.viewer.on(DeviceInput.POINTER_MOVE, this._onPointerMove, this);\n this.viewer.on(DeviceInput.MOUSE_WHEEL, this._onMouseWheel, this);\n this.viewer.on(DeviceInput.TOUCH_START, this._onTouchStart, this);\n this.viewer.on(DeviceInput.TOUCH_MOVE, this._onTouchMove, this);\n this.reset();\n }\n\n onDisable() {\n this.viewer.off(DeviceInput.POINTER_DOWN, this._onPointerDown, this);\n this.viewer.off(DeviceInput.POINTER_UP, this._onPointerUp, this);\n this.viewer.off(DeviceInput.POINTER_MOVE, this._onPointerMove, this);\n this.viewer.off(DeviceInput.MOUSE_WHEEL, this._onMouseWheel, this);\n this.viewer.off(DeviceInput.TOUCH_START, this._onTouchStart, this);\n this.viewer.off(DeviceInput.TOUCH_MOVE, this._onTouchMove, this);\n }\n\n reset() {\n this._button = -1;\n this._touchID = -1;\n\n this._targetTheta = this.theta;\n this._targetPhi = this.phi;\n this._targetSpringLength = this.springLength;\n this._targetLookAt.copy(this._lookAt);\n this._targetFov = this.lens.fov;\n }\n\n private _onPointerDown(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n this._button = e.button;\n this._preLoc0.set(e.pageX, e.pageY);\n }\n\n private _onPointerUp(_: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n this._button = -1;\n }\n\n private _onPointerMove(e: PointerEvent) {\n if (SystemInfo.isMobile) return;\n\n const { __loc0, __panDelta, __rotateDelta } = FreelookVirtualCamera;\n __loc0.set(e.pageX, e.pageY);\n\n switch (this._button) {\n case 0:\n this._calculateRotatelDelta(__rotateDelta, this._preLoc0, __loc0);\n this._calculateTargetSpringArm(__rotateDelta);\n break;\n case 1:\n case 2:\n this._calculatePanDelta(__panDelta, this._preLoc0, __loc0)\n this._calculateTargetLookAt(__panDelta);\n break;\n }\n\n this._preLoc0.copy(__loc0);\n }\n\n private _onMouseWheel(e: WheelEvent) {\n if (e.deltaY > 0) {\n this._targetSpringLength *= this._calculateDistanceScale(1 / 0.85);\n }\n else if (e.deltaY < 0) {\n this._targetSpringLength *= this._calculateDistanceScale(0.85);\n }\n this._calculateTargetSpringArm();\n }\n\n private _onTouchStart(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n let touches = e.touches;\n if (touches.length > 1) {\n this._preLoc0.set(touches[0].pageX, touches[0].pageY);\n this._preLoc1.set(touches[1].pageX, touches[1].pageY);\n }\n else if (touches.length > 0) {\n this._touchID = touches[0].identifier;\n this._preLoc0.set(touches[0].pageX, touches[0].pageY);\n }\n }\n\n private _onTouchMove(e: TouchEvent) {\n if (!SystemInfo.isMobile) return;\n\n const { __loc0, __loc1, __panDelta, __rotateDelta, __preCenter, __center } = FreelookVirtualCamera;\n\n let touches = e.touches;\n if (touches.length > 1) {\n __loc0.set(touches[0].pageX, touches[0].pageY);\n __loc1.set(touches[1].pageX, touches[1].pageY);\n\n if (this.lookAt) {\n this._targetSpringLength *= this._calculateDistanceScale(this._preLoc0.distanceTo(this._preLoc1) / __loc0.distanceTo(__loc1))\n }\n\n __preCenter.copy(this._preLoc0).add(this._preLoc1).multiplyScalar(0.5);\n __center.copy(__loc0).add(__loc1).multiplyScalar(0.5);\n\n this._calculatePanDelta(__panDelta, __preCenter, __center);\n this._calculateTargetLookAt(__panDelta);\n this._calculateTargetSpringArm();\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\n this._calculateRotatelDelta(__rotateDelta, this._preLoc0, __loc0);\n this._calculateTargetSpringArm(__rotateDelta);\n\n this._preLoc0.copy(__loc0);\n }\n\n }\n }\n\n private _calculateDistanceScale(scale: number) {\n this._tempRotateSmoothing = this.rotateSmoothing;\n\n if (this.forbidZ) {\n scale = 1;\n }\n return scale;\n }\n\n private _calculateRotatelDelta(out: Vector2, loc0: Vector2, loc1: Vector2) {\n this._tempRotateSmoothing = this.rotateSmoothing;\n const domElement = this.viewer.canvas;\n\n out.copy(loc1).sub(loc0).multiplyScalar(this.rotateSpeed * 2 * Math.PI / domElement.clientHeight);\n out.y = -out.y;\n\n if (this.forbidX) {\n out.x = 0;\n }\n if (this.forbidY) {\n out.y = 0;\n }\n\n return out;\n }\n\n private _calculatePanDelta(out: Vector2, loc0: Vector2, loc1: Vector2) {\n this._tempRotateSmoothing = this.rotateSmoothing;\n const domElement = this.viewer.canvas;\n\n out.copy(loc1).sub(loc0).multiplyScalar(this.panSpeed / domElement.clientHeight);\n if (this.forbidPanX) {\n out.x = 0;\n }\n if (this.forbidPanY) {\n out.y = 0;\n }\n\n return out;\n }\n\n private _calculateTargetLookAt(panDelta: Vector2) {\n const { __xAxis, __yAxis, __posDelta } = FreelookVirtualCamera;\n __xAxis.setFromMatrixColumn(this.node.matrix, 0);\n __yAxis.setFromMatrixColumn(this.node.matrix, 1);\n\n if (this.forbitPanOffsetY) {\n __yAxis.y = 0;\n __yAxis.normalize();\n }\n\n __posDelta.copy(this.node.position).sub(this.lookAt);\n const length = __posDelta.length() * 2 * tan(degToRad(this.fov * 0.5));\n\n this._targetLookAt\n .sub(__xAxis.multiplyScalar(panDelta.x * length))\n .add(__yAxis.multiplyScalar(panDelta.y * length));\n }\n\n private _calculateTargetSpringArm(rotateDelta?: Vector2, radius?: number) {\n if (rotateDelta) {\n this._targetTheta -= rotateDelta.x;\n this._targetPhi += rotateDelta.y;\n }\n if (radius) {\n this._targetSpringLength = radius;\n }\n this._targetTheta = clamp(this._targetTheta, this.thetaMin, this.thetaMax);\n this._targetPhi = clamp(this._targetPhi, this.phiMin, this.phiMax);\n this._targetSpringLength = clamp(this._targetSpringLength, this.distanceMin, this.distanceMax);\n }\n\n gotoPOI({\n duration = -1,\n easing = Easing.Cubic.InOut,\n springLength = this._targetSpringLength,\n theta = this._targetTheta,\n phi = this._targetPhi,\n lookAt = this._lookAt,\n fov = this.lens.fov,\n smoothing = this.smoothing,\n rotateSmoothing = smoothing\n }: {\n duration?: number;\n easing?: EasingFunction;\n springLength?: number;\n theta?: number;\n phi?: number;\n lookAt?: Vector3;\n fov?: number;\n smoothing?: number;\n rotateSmoothing?: number;\n }) {\n this._targetFov = fov;\n this._tempSmoothing = smoothing;\n this._tempRotateSmoothing = rotateSmoothing;\n this._targetLookAt.copy(lookAt);\n\n const t1 = theta % PI2;\n const t0 = this._spherical.theta = this._spherical.theta % PI2;\n\n const thetas = [t1, t1 - PI2, t1 + PI2];\n const diffs = thetas.map(v => abs(t0 - v));\n const min = Math.min(...diffs);\n\n this._targetTheta = thetas[diffs.findIndex(v => v === min)];\n this._targetSpringLength = springLength;\n this._targetPhi = phi;\n this._calculateTargetSpringArm();\n\n if (duration > 0) {\n this.locked = true;\n this.enabled = false;\n this.viewer.killTweensOf(this);\n this.viewer.timeline(this)\n .to({ springLength, theta, phi, lookAt, fov }, duration, {\n easing,\n onUpdate: () => {\n this.node.position.setFromSpherical(this._spherical).add(this._lookAt);\n this.node.lookAt(this._lookAt);\n }\n })\n .call(() => {\n this.locked = false;\n this.enabled = true\n })\n .start();\n }\n }\n\n update(dt: number) {\n const smoothing = this._tempSmoothing;\n const rotateSmoothing = this._tempRotateSmoothing;\n\n this._spherical.theta = FInterpTo(this._spherical.theta, this._targetTheta, dt, rotateSmoothing);\n this._spherical.phi = FInterpTo(this._spherical.phi, this._targetPhi, dt, rotateSmoothing);\n this._spherical.radius = FInterpTo(this._spherical.radius, this._targetSpringLength, dt, smoothing);\n\n this.lens.fov = FInterpTo(this.lens.fov, this._targetFov, dt, smoothing);\n VInterpTo(this._lookAt, this._targetLookAt, dt, smoothing);\n\n this.node.position.setFromSpherical(this._spherical).add(this._lookAt);\n this.node.lookAt(this._lookAt);\n }\n}","import { BoxGeometry, Material, Mesh } from \"three\";\n\nexport class Box<M extends Material | Material[] = Material | Material[]> extends Mesh<BoxGeometry, M> {\n constructor(...args: ConstructorParameters<typeof BoxGeometry>) {\n super(new BoxGeometry(...args));\n }\n}","import { Material, Mesh, SphereGeometry } from \"three\";\n\nexport class Sphere<M extends Material | Material[] = Material | Material[]> extends Mesh<SphereGeometry, M> {\n constructor(...args: ConstructorParameters<typeof SphereGeometry>) {\n super(new SphereGeometry(...args));\n }\n}","import { Material, Mesh, PlaneGeometry } from \"three\";\n\nexport class Plane<M extends Material | Material[] = Material | Material[]> extends Mesh<PlaneGeometry, M> {\n constructor(...args: ConstructorParameters<typeof PlaneGeometry>) {\n super(new PlaneGeometry(...args));\n }\n}\n","import {\n Matrix4,\n PerspectiveCamera,\n Vector3,\n Vector4,\n Plane,\n WebGLRenderTarget,\n HalfFloatType,\n LinearFilter,\n LinearMipMapLinearFilter\n} from \"three\";\n\nimport { Component } from \"../Component\";\n\nexport class Reflector extends Component {\n\n constructor({\n textureWidth = 512,\n textureHeight = 512,\n clipBias = 0,\n multisample = 4,\n layer = 0,\n normal = new Vector3(0, 0, 1),\n mipmap = false,\n }: {\n textureWidth?: number,\n textureHeight?: number,\n clipBias?: number,\n multisample?: number,\n normal?: Vector3,\n layer?: number,\n mipmap?: boolean\n } = {}) {\n super();\n const reflectorPlane = new Plane();\n const reflectorNormal = new Vector3();\n const reflectorWorldPosition = new Vector3();\n const cameraWorldPosition = new Vector3();\n const rotationMatrix = new Matrix4();\n const lookAtPosition = new Vector3(0, 0, - 1);\n const clipPlane = new Vector4();\n\n const view = new Vector3();\n const target = new Vector3();\n const q = new Vector4();\n\n const textureMatrix = new Matrix4();\n const virtualCamera = new PerspectiveCamera();\n virtualCamera.layers.mask = layer;\n\n const renderTarget = new WebGLRenderTarget(textureWidth, textureHeight, {\n samples: multisample,\n type: HalfFloatType,\n minFilter: mipmap ? LinearMipMapLinearFilter : LinearFilter,\n generateMipmaps: mipmap\n });\n\n this.update = () => {\n const node = this.node;\n const { renderer, camera, scene } = this.viewer;\n\n reflectorWorldPosition.setFromMatrixPosition(node.matrixWorld);\n cameraWorldPosition.setFromMatrixPosition(camera.matrixWorld);\n\n rotationMatrix.extractRotation(node.matrixWorld);\n\n reflectorNormal.copy(normal);\n reflectorNormal.applyMatrix4(rotationMatrix);\n\n view.subVectors(reflectorWorldPosition, cameraWorldPosition);\n\n // Avoid rendering when reflector is facing away\n\n if (view.dot(reflectorNormal) > 0) return;\n\n view.reflect(reflectorNormal).negate();\n view.add(reflectorWorldPosition);\n\n rotationMatrix.extractRotation(camera.matrixWorld);\n\n lookAtPosition.set(0, 0, -1);\n lookAtPosition.applyMatrix4(rotationMatrix);\n lookAtPosition.add(cameraWorldPosition);\n\n target.subVectors(reflectorWorldPosition, lookAtPosition);\n target.reflect(reflectorNormal).negate();\n target.add(reflectorWorldPosition);\n\n virtualCamera.position.copy(view);\n virtualCamera.up.set(0, 1, 0);\n virtualCamera.up.applyMatrix4(rotationMatrix);\n virtualCamera.up.reflect(reflectorNormal);\n virtualCamera.lookAt(target);\n\n virtualCamera.far = camera.far; // Used in WebGLBackground\n\n virtualCamera.updateMatrixWorld();\n virtualCamera.projectionMatrix.copy(camera.projectionMatrix);\n\n // Update the texture matrix\n textureMatrix.set(\n 0.5, 0.0, 0.0, 0.5,\n 0.0, 0.5, 0.0, 0.5,\n 0.0, 0.0, 0.5, 0.5,\n 0.0, 0.0, 0.0, 1.0\n );\n textureMatrix.multiply(virtualCamera.projectionMatrix);\n textureMatrix.multiply(virtualCamera.matrixWorldInverse);\n textureMatrix.multiply(node.matrixWorld);\n\n // Now update projection matrix with new clip plane, implementing code from: http://www.terathon.com/code/oblique.html\n // Paper explaining this technique: http://www.terathon.com/lengyel/Lengyel-Oblique.pdf\n reflectorPlane.setFromNormalAndCoplanarPoint(reflectorNormal, reflectorWorldPosition);\n reflectorPlane.applyMatrix4(virtualCamera.matrixWorldInverse);\n\n clipPlane.set(reflectorPlane.normal.x, reflectorPlane.normal.y, reflectorPlane.normal.z, reflectorPlane.constant);\n\n const projectionMatrix = virtualCamera.projectionMatrix;\n\n q.x = (Math.sign(clipPlane.x) + projectionMatrix.elements[8]) / projectionMatrix.elements[0];\n q.y = (Math.sign(clipPlane.y) + projectionMatrix.elements[9]) / projectionMatrix.elements[5];\n q.z = - 1.0;\n q.w = (1.0 + projectionMatrix.elements[10]) / projectionMatrix.elements[14];\n\n // Calculate the scaled plane vector\n clipPlane.multiplyScalar(2.0 / clipPlane.dot(q));\n\n // Replacing the third row of the projection matrix\n projectionMatrix.elements[2] = clipPlane.x;\n projectionMatrix.elements[6] = clipPlane.y;\n projectionMatrix.elements[10] = clipPlane.z + 1.0 - clipBias;\n projectionMatrix.elements[14] = clipPlane.w;\n\n // Render\n node.visible = false;\n\n const currentRenderTarget = renderer.getRenderTarget();\n const currentActiveCubeFace = renderer.getActiveCubeFace();\n const currentActiveMipmapLevel = renderer.getActiveMipmapLevel();\n\n const currentXrEnabled = renderer.xr.enabled;\n const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;\n\n renderer.xr.enabled = false; // Avoid camera modification\n renderer.shadowMap.autoUpdate = false; // Avoid re-computing shadows\n\n renderer.setRenderTarget(renderTarget);\n\n renderer.state.buffers.depth.setMask(true); // make sure the depth buffer is writable so it can be properly cleared, see #18897\n\n if (renderer.autoClear === false) renderer.clear();\n renderer.render(scene, virtualCamera);\n\n renderer.xr.enabled = currentXrEnabled;\n renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;\n\n renderer.setRenderTarget(currentRenderTarget, currentActiveCubeFace, currentActiveMipmapLevel);\n\n // Restore viewport\n\n const viewport = camera.viewport;\n\n if (viewport !== undefined) {\n renderer.state.viewport(viewport);\n }\n\n node.visible = true;\n }\n\n this.getRenderTarget = function () {\n return renderTarget;\n };\n this.getTextureMatrix = function () {\n return textureMatrix;\n }\n this.onDestroy = function () {\n renderTarget.dispose();\n };\n }\n\n getTextureMatrix: () => Matrix4;\n getRenderTarget: () => WebGLRenderTarget;\n\n}","export const vert_fullscreen = /*glsl*/`\nvarying vec2 vUv;\nvoid main() {\n\tvUv = position.xy * 0.5 + 0.5;\n\tgl_Position = vec4(position.xy, 1.0, 1.0);\n}\n`","\nexport const frag_BoxfilterBlur = `\n#include <common>\nuniform sampler2D tLast;\nuniform sampler2D tBlur;\nuniform float\t uLod;\nuniform float\t uWeight;\nvarying vec2 vUv;\n\nvoid main() {\n\tvec3 col0 = textureLod(tLast, vUv, 0.).rgb;\n\tvec3 col1 = textureLod(tBlur, vUv, uLod).rgb;\n gl_FragColor = vec4(mix(col0, col1, uWeight), 1.);\n}\n`","export const frag_panoramaToCubeMap = `\n#include <xv_common>\n\nvarying vec2 vUv;\nuniform sampler2D tMain;\nuniform int uFace;\nuniform vec4 uTilingOffset;\n\nvec3 uvToXYZ(int face, vec2 uv) {\n if (face == 0) return vec3(-1.0, uv.y, -uv.x);\n else if (face == 1) return vec3(1.0, uv.y, uv.x);\n else if (face == 2) return vec3(-uv.x, -1.0, uv.y);\n else if (face == 3) return vec3(-uv.x, 1.0, -uv.y);\n else if (face == 4) return vec3(-uv.x, uv.y, 1.0);\n else return vec3(uv.x, uv.y, -1.0);\n}\n\nvec4 panoramaToCubeMap(int face, vec2 uv_i) {\n vec2 uv = uv_i * 2.0 - 1.0;\n vec3 dir = normalize(uvToXYZ(face, uv));\n vec2 uv_o = dirToUv(dir);\n uv_o = vec2(uv_o.x, uv_o.y) * uTilingOffset.xy + uTilingOffset.zw;\n return texture(tMain, uv_o);\n}\n\nvoid main() {\n gl_FragColor = panoramaToCubeMap(uFace, vUv);\n}\n`\n\nexport const frag_cubeMapToPanorama = `\n#include <xv_common>\n\nvarying vec2 vUv;\nuniform samplerCube tMain;\n\nvec4 cubeMapToPanorama(vec2 uv_i) {\n return texture(tMain, uvToDir(uv_i));\n}\n\nvoid main() {\n gl_FragColor = cubeMapToPanorama(vUv);\n}\n`","import {\n Color,\n CubeTexture,\n Matrix3,\n Matrix4,\n Quaternion,\n ShaderMaterial,\n Texture,\n UniformsUtils,\n Vector2,\n Vector3,\n Vector4\n} from \"three\";\n\nexport function getShaderMaterial<T extends {\n [name: string]:\n | CubeTexture\n | Texture\n | Int32Array\n | Float32Array\n | Matrix4\n | Matrix3\n | Quaternion\n | Vector4\n | Vector3\n | Vector2\n | Color\n | number\n | boolean\n | Array<any>\n | null\n}>(\n uniforms: T,\n vertexShader: string,\n fragmentShader: string,\n onInit?: (material?: ShaderMaterial) => void\n) {\n const material = class extends ShaderMaterial {\n constructor(parameters = {}) {\n const entries = Object.entries(uniforms)\n // Create unforms and shaders\n super({\n uniforms: entries.reduce((acc, [name, value]) => {\n const uniform = UniformsUtils.clone({ [name]: { value } })\n return {\n ...acc,\n ...uniform,\n }\n }, {}),\n vertexShader,\n fragmentShader,\n })\n // Create getter/setters\n entries.forEach(([name]) =>\n Object.defineProperty(this, name, {\n get: () => this.uniforms[name].value,\n set: (v) => (this.uniforms[name].value = v),\n })\n )\n\n // Assign parameters, this might include uniforms\n Object.assign(this, parameters)\n // Call onInit\n if (onInit) onInit(this)\n }\n } as unknown as typeof ShaderMaterial & T & ShaderMaterial;\n return material;\n}","import { Color, IUniform, Matrix4, ShaderMaterial, Texture, WebGLProgramParametersWithUniforms } from \"three\";\nimport { property } from \"../PropertyManager\";\n\nconst vert_Reflector = `\nuniform mat4 textureMatrix;\nvarying vec4 vUv4;\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 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 vec4 positionWS = modelMatrix * transformed;\n vec4 mvPosition = viewMatrix * positionWS;\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 vUv4 = textureMatrix * transformed;\n\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 = `\nuniform vec3 color;\nuniform float alpha;\nuniform float roughness;\nuniform float metalness;\nuniform sampler2D map;\nuniform sampler2D normalMap;\nuniform sampler2D roughnessMap;\nuniform sampler2D aoMap;\nuniform float aoMapIntensity;\nuniform sampler2D lightMap;\nuniform float lightMapIntensity;\nuniform sampler2D tReflect;\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 vec4 texelNormal = texture2D(normalMap, UV_NORMAL);\n vec3 normal = normalize(vec3(texelNormal.r * 2.0 - 1.0, texelNormal.b, texelNormal.g * 2.0 - 1.0));\n vec3 coord = vUv4.xyz / vUv4.w;\n vec2 reflectUv = coord.xy + coord.z * normal.xz * 0.05;\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, alpha);\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 = texture2D(roughnessMap, UV_ROUGHNESS).g * roughness;\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 irradiance += texture2D(lightMap, UV_LIGHTMAP).rgb * lightMapIntensity;\n\n float lod = roughnessFactor * (1.7 - 0.7 * roughnessFactor) * 6.;\n vec4 reflectColor = textureLod(tReflect, reflectUv, lod);\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 float ambientOcclusion = mix(1., texture2D(aoMap, UV_AO).r, aoMapIntensity);\n float dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\n f_specular *= computeSpecularOcclusion(dotNV, ambientOcclusion, roughnessFactor);\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 defines: { [key: string]: any; } = {\n UV_AO: \"vUv\",\n UV_LIGHTMAP: \"vUv\",\n UV_ROUGHNESS: \"vUv\",\n UV_NORMAL: \"vUv\",\n }\n uniforms: { [uniform: string]: IUniform<any>; } = {\n color: { value: new Color(0xffffff) },\n alpha: { value: 1 },\n map: { value: null },\n tReflect: { value: null },\n textureMatrix: { value: new Matrix4() },\n metalness: { value: 0 },\n roughness: { value: 1 },\n roughnessMap: { value: null },\n normalMap: { value: null },\n aoMap: { value: null },\n aoMapIntensity: { value: 1 },\n lightMap: { value: null },\n lightMapIntensity: { value: 1 },\n }\n\n 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({ min: 0, max: 1, step: 0.01 })\n get alpha() {\n return this.uniforms.alpha.value;\n }\n set alpha(v: number) {\n this.uniforms.alpha.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 get map() {\n return this.uniforms.map.value;\n }\n set map(v: Texture) {\n this.uniforms.map.value = v;\n }\n\n get roughnessMap() {\n return this.uniforms.roughnessMap.value;\n }\n set roughnessMap(v: Texture) {\n this.uniforms.roughnessMap.value = v;\n }\n\n get normalMap() {\n return this.uniforms.normalMap.value;\n }\n set normalMap(v: Texture) {\n this.uniforms.normalMap.value = v;\n }\n\n get aoMap() {\n return this.uniforms.aoMap.value;\n }\n set aoMap(v: Texture) {\n this.uniforms.aoMap.value = v;\n }\n\n get lightMap() {\n return this.uniforms.lightMap.value;\n }\n set lightMap(v: Texture) {\n this.uniforms.lightMap.value = v;\n }\n}","import { ObjectInstance } from \"./ObjectInstance\";\nimport { Viewer } from \"./Viewer\";\n\nexport class Plugin extends ObjectInstance {\n viewer: Viewer;\n type: string = \"Plugin\";\n install?(): void;\n uninstall?(): void;\n onUpdate?(dt: number): void;\n onRender?(dt: number): void;\n}","import { Object3D, Scene } from \"three\";\nimport { Plugin } from \"../Plugin\";\nimport { Viewer } from \"../Viewer\";\n\nexport class DebugPlugin extends Plugin {\n\n static Instance(viewer: Viewer) {\n return viewer.getPlugin(DebugPlugin, true);\n }\n\n scene: Scene = new Scene();\n\n add(node: Object3D) {\n this.scene.add(node);\n return node;\n }\n\n remove(node: Object3D) {\n this.scene.remove(node);\n return node;\n }\n\n onRender(dt: number): void {\n const { renderer, camera } = this.viewer;\n const autoClear = renderer.autoClear;\n renderer.autoClear = false;\n renderer.render(this.scene, camera);\n renderer.autoClear = autoClear;\n }\n}","import { AdditiveBlending, NoBlending, OrthographicCamera, ShaderMaterial, Texture, Vector3, WebGLRenderTarget } from \"three\";\nimport { vert_fullscreen } from \"../../materials\";\n\nexport const LOD_MIN = 4;\nexport const _flatCamera = /*@__PURE__*/ new OrthographicCamera();\n// Golden Ratio\nconst PHI = (1 + Math.sqrt(5)) / 2;\nconst INV_PHI = 1 / PHI;\n// Vertices of a dodecahedron (except the opposites, which represent the\n// same axis), used as axis directions evenly spread on a sphere.\nexport const _axisDirections = [\n\t/*@__PURE__*/ new Vector3(1, 1, 1),\n\t/*@__PURE__*/ new Vector3(- 1, 1, 1),\n\t/*@__PURE__*/ new Vector3(1, 1, - 1),\n\t/*@__PURE__*/ new Vector3(- 1, 1, - 1),\n\t/*@__PURE__*/ new Vector3(0, PHI, INV_PHI),\n\t/*@__PURE__*/ new Vector3(0, PHI, - INV_PHI),\n\t/*@__PURE__*/ new Vector3(INV_PHI, 0, PHI),\n\t/*@__PURE__*/ new Vector3(- INV_PHI, 0, PHI),\n\t/*@__PURE__*/ new Vector3(PHI, INV_PHI, 0),\n\t/*@__PURE__*/ new Vector3(- PHI, INV_PHI, 0)];\n\nexport const _Quality = { LOW: 0, MEDIUM: 1, HIGH: 2, ULTRA: 3 }\n\nexport function _setViewport(\n target: WebGLRenderTarget,\n x: number,\n y: number,\n width: number,\n height: number\n) {\n target.viewport.set(x, y, width, height);\n target.scissor.set(x, y, width, height);\n}\n\nexport function _getCommonVertexShader() {\n\n return /* glsl */`\n\t\tprecision mediump float;\n\t\tprecision mediump int;\n\n\t\tattribute float faceIndex;\n\n\t\tvarying vec3 vOutputDirection;\n\n\t\t// RH coordinate system; PMREM face-indexing convention\n\t\tvec3 getDirection( vec2 uv, float face ) {\n\n\t\t\tuv = 2.0 * uv - 1.0;\n\t\t\tvec3 direction = vec3( uv, 1.0 );\n\n\t\t\tif ( face == 0.0 ) {\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\n\t\t\t} else if ( face == 1.0 ) {\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\n\t\t\t} else if ( face == 2.0 ) {\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\n\t\t\t} else if ( face == 3.0 ) {\n\t\t\t\tdirection = direction.zyx;\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\n\t\t\t} else if ( face == 4.0 ) {\n\t\t\t\tdirection = direction.xzy;\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\n\t\t\t} else if ( face == 5.0 ) {\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\n\t\t\t}\n\n\t\t\treturn direction;\n\n\t\t}\n\n\t\tvoid main() {\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\n\t\t\tgl_Position = vec4( position, 1.0 );\n\t\t}\n\t`;\n}\n\nexport function _getClearMaterial() {\n return new ShaderMaterial({\n name: \"Clear\",\n uniforms: {\n map: { value: null },\n intensity: { value: 1 }\n },\n vertexShader: vert_fullscreen,\n fragmentShader: /* glsl */ `\n uniform sampler2D map;\n uniform float intensity;\n varying vec2 vUv;\n void main() {\n vec4 col = texture2D(map, vUv);\n gl_FragColor = vec4(col.rgb * intensity, col.a);\n }\n `,\n blending: NoBlending,\n depthWrite: false,\n depthTest: false,\n })\n}\n\nexport function _getCubeMapMaterial() {\n return new ShaderMaterial({\n name: \"CubeMapToCubeUV\",\n uniforms: {\n envMap: { value: null },\n lod: { value: 0 },\n exposure: { value: 1 }\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: /* glsl */`\n precision mediump float;\n precision mediump int;\n\n varying vec3 vOutputDirection;\n uniform samplerCube envMap;\n uniform float lod;\n uniform float exposure;\n\n void main() {\n gl_FragColor = textureCubeLodEXT(envMap, vOutputDirection, lod);\n gl_FragColor.rgb *= exposure;\n }\n `,\n blending: AdditiveBlending,\n depthWrite: false,\n depthTest: false,\n });\n}\n\nexport function _getMipCopyMaterial(\n lodMax: number,\n width: number,\n height: number,\n) {\n return new ShaderMaterial({\n name: \"MipBlurToCubeUV\",\n defines: {\n CUBEUV_TEXEL_WIDTH: 1.0 / width,\n CUBEUV_TEXEL_HEIGHT: 1.0 / height,\n CUBEUV_MAX_MIP: `${lodMax}.0`,\n },\n uniforms: {\n cubeUVMap: { value: null },\n lod: { value: 0 },\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: /* glsl */ `\n precision mediump float;\n precision mediump int;\n\n #define ENVMAP_TYPE_CUBE_UV\n #include <cube_uv_reflection_fragment>\n\n varying vec3 vOutputDirection;\n\n uniform sampler2D cubeUVMap;\n uniform float lod;\n\n void main() {\n vec3 col = bilinearCubeUV(cubeUVMap, vOutputDirection, CUBEUV_MAX_MIP - lod);\n gl_FragColor = vec4(col, 1.);\n }\n `,\n blending: AdditiveBlending,\n depthWrite: false,\n depthTest: false,\n })\n}\n\nexport function _getMipBlurMaterial(\n lodMax: number,\n width: number,\n height: number,\n) {\n return new ShaderMaterial({\n name: \"MipBlurToCubeUV\",\n defines: {\n CUBEUV_TEXEL_WIDTH: 1.0 / width,\n CUBEUV_TEXEL_HEIGHT: 1.0 / height,\n CUBEUV_MAX_MIP: `${lodMax}.0`,\n },\n uniforms: {\n envMap: { value: null },\n cubeUVMap: { value: null },\n weight: { value: 1 },\n lod: { value: 0 },\n exposure: { value: 1 },\n },\n vertexShader: _getCommonVertexShader(),\n fragmentShader: /* glsl */ `\n precision mediump float;\n precision mediump int;\n\n #define ENVMAP_TYPE_CUBE_UV\n #include <cube_uv_reflection_fragment>\n\n varying vec3 vOutputDirection;\n\n uniform sampler2D cubeUVMap;\n uniform samplerCube envMap;\n uniform float weight;\n uniform float lod;\n uniform float exposure;\n\n void main() {\n vec3 col0 = bilinearCubeUV(cubeUVMap, vOutputDirection, CUBEUV_MAX_MIP - (lod + 1.));\n vec3 col1 = textureCubeLodEXT(envMap, vOutputDirection, lod).rgb * exposure;\n gl_FragColor = vec4(mix(col0, col1, weight), 1.);\n }\n `,\n blending: NoBlending,\n depthWrite: false,\n depthTest: false,\n })\n}","export interface ICallTarget {\n uuid: string;\n}\n\nclass Caller {\n private _target: ICallTarget | null = null;\n private _callback: Function | null = null;\n private _interval: number = 0;\n private _repeat: number = 0;\n\n private _elapsed: number = 0;\n private _lastTime: number = 0;\n private _repeatForever: boolean = false;\n private _pause: boolean = false;\n\n get pause() {\n return this._pause;\n }\n\n set pause(v: boolean) {\n this._pause = v;\n }\n\n get target() {\n return this._target;\n }\n\n get callback() {\n return this._callback;\n }\n\n constructor(target: ICallTarget, callback: Function, interval: number, repeat: number) {\n this._target = target;\n this._callback = callback;\n this._interval = interval;\n this._repeat = repeat;\n this._repeatForever = repeat === -1;\n }\n\n get lived() {\n return this._repeat > 0 || this._repeatForever;\n }\n\n update(dt: number) {\n if (this._pause) return;\n if (this._repeat > 0 || this._repeatForever) {\n this._elapsed += dt;\n if (this._elapsed >= this._interval) {\n this.trigger(this._elapsed - this._lastTime);\n this._elapsed -= this._interval;\n this._lastTime = this._elapsed;\n this._repeat--;\n }\n }\n }\n\n trigger(dt: number) {\n if (this._target && this._callback) {\n this._callback.call(this._target, dt, this._elapsed);\n }\n }\n}\n\nclass Callers {\n private _target!: ICallTarget;\n private _callers!: Caller[];\n\n get target() {\n return this._target;\n }\n\n get callers() {\n return this._callers;\n }\n\n constructor(target: ICallTarget, callers: Caller[]) {\n this._target = target;\n this._callers = callers;\n }\n}\n\nexport class Scheduler {\n private _callers: { [k: string]: Caller[] } = {}\n private _callersArray: Callers[] = [];\n\n pause(target: ICallTarget) {\n let callers = this._callers[target.uuid];\n if (callers) callers.forEach(v => v.pause = true);\n }\n\n resume(target: ICallTarget) {\n let callers = this._callers[target.uuid];\n if (callers) callers.forEach(v => v.pause = false);\n }\n\n schedule(target: ICallTarget, callback: Function, interval: number, repeat: number) {\n let callers = this._callers[target.uuid];\n if (callers === undefined) {\n callers = this._callers[target.uuid] = [];\n this._callersArray.push(new Callers(target, callers));\n }\n callers.push(new Caller(target, callback, interval, repeat));\n }\n\n unshedule(target: ICallTarget, callback: Function) {\n let callers = this._callers[target.uuid];\n if (callers) {\n let index = callers.findIndex(v => v.callback === callback);\n if (index !== -1) callers.splice(index, 1);\n }\n }\n\n unscheduleAll(target: ICallTarget) {\n delete this._callers[target.uuid];\n let index = this._callersArray.findIndex(v => v.target === target);\n if (index !== -1) this._callersArray.splice(index, 1);\n }\n\n update(dt: number) {\n let callers: Caller[];\n let callersArray = this._callersArray;\n for (let j = callersArray.length; j--;) {\n callers = callersArray[j].callers;\n for (let i = callers.length; i--;) {\n if (callers[i].lived) callers[i].update(dt);\n else callers.splice(i, 1);\n }\n }\n }\n}","import { Component } from \"./Component\";\n\nclass Invoker<T> {\n protected _targets: T[] = [];\n protected _callback: (target: T, dt: number) => any;\n\n constructor(callback: (target: T, dt: number) => any) {\n this._callback = callback;\n }\n\n add(target: any) {\n this._targets.push(target);\n }\n\n remove(target: any) {\n let index = this._targets.indexOf(target);\n if (index !== -1) {\n this._targets.splice(index, 1);\n }\n }\n\n invoke(dt: number) {\n let callback = this._callback;\n for (let v of this._targets) {\n callback(v, dt);\n }\n }\n}\n\nclass InvokerOneCall<T> extends Invoker<T> {\n invoke(dt: number) {\n if (this._targets.length > 0) {\n let callback = this._callback;\n for (let v of this._targets) {\n callback(v, dt);\n }\n this._targets.length = 0;\n }\n }\n}\n\nexport class ComponentScheduler {\n startInvoker: Invoker<Component> = new InvokerOneCall(comp => comp.start!());\n updateInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.update!(dt));\n lastUpdateInvoker: Invoker<Component> = new Invoker((comp, dt) => comp.lastUpdate!(dt));\n\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 enableComponent(comp: Component, enable: boolean) {\n if (enable) {\n if (!comp.flags.OnEnableCalled) {\n comp.flags.OnEnableCalled = true;\n if (comp.onEnable) {\n comp.onEnable();\n }\n if (typeof comp.start === \"function\" && !comp.flags.IsStartCalled) {\n comp.flags.IsStartCalled = true;\n this.startInvoker.add(comp);\n }\n if (typeof comp.update === \"function\") {\n this.updateInvoker.add(comp);\n }\n if (typeof comp.lastUpdate === \"function\") {\n this.lastUpdateInvoker.add(comp);\n }\n }\n }\n else {\n if (comp.flags.OnEnableCalled) {\n comp.flags.OnEnableCalled = false;\n if (comp.onDisable) {\n comp.onDisable();\n }\n if (typeof comp.start === \"function\" && !comp.flags.IsStartCalled) {\n this.startInvoker.remove(comp);\n }\n if (typeof comp.update === \"function\") {\n this.updateInvoker.remove(comp);\n }\n if (typeof comp.lastUpdate === \"function\") {\n this.lastUpdateInvoker.remove(comp);\n }\n }\n }\n }\n}","import { Object3D } from \"three\";\nimport { Scheduler } from \"./Scheduler\";\nimport { Component } from \"./Component\";\nimport { ComponentScheduler } from \"./ComponentScheduler\";\nimport { Viewer } from \"./Viewer\";\n\n\ntype ComponentConstructor = new () => Component;\n\ninterface DependentInfo {\n mode: DependentMode;\n components: ComponentConstructor[];\n}\n\nexport enum DependentMode {\n /** Check only, throw error if dependent components do not exist. */\n CheckOnly,\n /** Auto add if dependent components do not exist. */\n AutoAdd\n}\n\nexport function dependencies(\n componentOrComponents: ComponentConstructor | ComponentConstructor[],\n mode: DependentMode = DependentMode.CheckOnly\n) {\n return function <T extends ComponentConstructor>(target: T): void {\n const components = Array.isArray(componentOrComponents) ? componentOrComponents : [componentOrComponents];\n ComponentManager._dependenciesMap.set(target, { components, mode });\n }\n}\n\nexport class ComponentManager {\n static _dependenciesMap = new Map<ComponentConstructor, DependentInfo>();\n\n private _viewer: Viewer;\n private _scheduler: Scheduler = new Scheduler();\n private _componentScheduler: ComponentScheduler = new ComponentScheduler();\n private _componentsMap = new Map<Object3D, Component[]>();\n\n get viewer() {\n return this._viewer;\n }\n\n get scheduler() {\n return this._scheduler;\n }\n\n get componentScheduler() {\n return this._componentScheduler;\n }\n\n constructor(viewer: Viewer) {\n this._viewer = viewer;\n }\n\n destroy() {\n this._componentsMap.forEach(components => components.forEach(comp => comp.destroy()));\n this._componentsMap.clear();\n }\n\n update(dt: number) {\n this._scheduler.update(dt);\n this._componentScheduler.start();\n this._componentScheduler.update(dt);\n this._componentScheduler.lastUpdate(dt);\n }\n\n destroyComponents(node: Object3D) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.forEach(comp => comp.destroy());\n this._componentsMap.delete(node);\n }\n for (let child of node.children) {\n this.destroyComponents(child);\n }\n }\n\n activeComponents(node: Object3D) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.forEach(comp => this._activeComponent(comp, node.visible));\n }\n for (let child of node.children) {\n this.activeComponents(child);\n }\n }\n\n addComponent<T extends Component>(node: Object3D | Component, instance: T): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: { new(): T }): T;\n addComponent<T extends Component>(node: Object3D | Component, constructor: any): T {\n let root = node instanceof Component ? node.node : node;\n let func = typeof constructor === \"function\";\n let component = this._findComponent(root, func ? constructor : constructor.constructor) as any;\n if (component === undefined) {\n component = func ? new constructor() : constructor;\n component.node = root;\n component.manager = this;\n component.viewer = this._viewer;\n\n this._addDendencies(root, component.constructor);\n\n if (!component.flags.OnLoadCalled) {\n component.flags.OnLoadCalled = true;\n if (component.onLoad) {\n component.onLoad();\n }\n }\n\n let components = this._componentsMap.get(root);\n if (components === undefined) {\n this._componentsMap.set(root, [component]);\n }\n else {\n components.push(component);\n }\n\n this._activeComponent(component, component.enabled);\n }\n return component as T;\n }\n\n removeComponent(node: Object3D, component: Component) {\n let components = this._componentsMap.get(node);\n if (components) {\n components.splice(components.indexOf(component), 1);\n }\n return this;\n }\n\n getComponent<T extends Component>(node: Object3D, constructor: { new(): T }, autoAdd: boolean = false): T {\n let comp = this._findComponent(node, constructor) as T;\n if (comp === undefined && autoAdd) {\n comp = this.addComponent(node, constructor);\n }\n return comp;\n }\n\n getComponentsInChidren<T extends Component>(node: Object3D, constructor: { new(): T }, out: T[] = []): T[] {\n let components = this._componentsMap.get(node);\n if (components) {\n for (let i = components.length; i--;) {\n if (components[i] instanceof (constructor as any)) out.push(components[i] as any);\n }\n for (let child of node.children) {\n this.getComponentsInChidren(child, constructor, out);\n }\n }\n return out;\n }\n\n traverseComponents(callback: (comp: Component) => void) {\n this._componentsMap.forEach(v => v.forEach(callback));\n }\n\n private _addDendencies(node: Object3D, constructor: ComponentConstructor) {\n while (constructor !== Component) {\n let dependentInfo = ComponentManager._dependenciesMap.get(constructor);\n if (dependentInfo) {\n const { components, mode } = dependentInfo;\n for (const dep of components) {\n if (!this.getComponent(node, dep)) {\n if (mode === DependentMode.AutoAdd) {\n this.addComponent(node, dep);\n } else {\n throw `Should add ${dep.name} before adding ${constructor.name}`;\n }\n }\n }\n }\n constructor = Object.getPrototypeOf(constructor);\n }\n }\n\n private _findComponent(node: Object3D, constructor: any) {\n let components = this._componentsMap.get(node);\n if (components) {\n for (let i = components.length; i--;) {\n let component = components[i];\n if (component instanceof constructor) {\n return component;\n }\n }\n }\n }\n\n protected _activeComponent(comp: Component, active: boolean) {\n this._componentScheduler.enableComponent(comp, active);\n }\n}","import { Task } from \"./Task\";\nimport { EventEmitter } from \"./base\";\n\n\nexport class TaskManager extends EventEmitter {\n private _tasks: Task[] = [];\n private _taskIndex: number = 0;\n private _percent: number = 0;\n\n get percent() {\n return this._percent;\n }\n\n constructor(\n public onComplete?: () => void,\n public onProgress?: (task: Task, loaded: number, total: number) => void,\n public onError?: (task: Task) => void,\n ) {\n super();\n }\n\n destroy() {\n this._tasks.length = 0;\n this._taskIndex = 0;\n this._percent = 0;\n }\n\n add(task: Task) {\n this._tasks.push(task);\n }\n\n update() {\n let task = this._tasks[this._taskIndex];\n if (task) {\n try {\n task.excute();\n }\n catch (e) {\n console.error(e);\n this.onError && this.onError(task);\n }\n this._percent = ++this._taskIndex / this._tasks.length;\n this.onProgress && this.onProgress(task, this._taskIndex, this._tasks.length);\n\n if (this._taskIndex === this._tasks.length) {\n this._percent = 1;\n this.onComplete && this.onComplete();\n }\n }\n }\n}","import { FloatType, HalfFloatType, UnsignedByteType, WebGLRendererParameters } from \"three\";\nimport { SystemInfo } from \"./SystemInfo\";\nimport { Logger } from \"./base\";\n\nexport function parepareWebGL(canvas: HTMLCanvasElement, props: WebGLRendererParameters) {\n let isSupportedBrowser = (SystemInfo.isChrome || SystemInfo.isSafari || SystemInfo.isEdge || SystemInfo.isFirefox || SystemInfo.isOpera) && !SystemInfo.isIE;\n if (!isSupportedBrowser) {\n Logger.error(\"Unsupport platform\");\n return null;\n }\n if (!(canvas instanceof HTMLCanvasElement)) {\n Logger.error(\"Canvas is null\");\n return null;\n }\n\n let webglOpts = Object.assign({\n alpha: false,\n depth: true,\n stencil: true,\n antialias: false,\n premultipliedAlpha: true,\n preserveDrawingBuffer: false,\n powerPreference: \"high-performance\",\n failIfMajorPerformanceCaveat: false\n }, props);\n\n if (window.WebGL2RenderingContext) {\n try {\n const gl = canvas.getContext(\"webgl2\", webglOpts) as WebGL2RenderingContext;\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: HalfFloatType,\n DATA_FLOAT_TYPE: FloatType\n }\n }\n catch (err) {\n Logger.error(err);\n return null;\n }\n }\n else if (window.WebGLRenderingContext) {\n const gl = (canvas.getContext(\"webgl\", webglOpts) || canvas.getContext(\"webgl2\", webglOpts) || canvas.getContext(\"experimental-webgl\", webglOpts)) as WebGLRenderingContext;\n if ((gl.getExtension(\"OES_texture_float\") || gl.getExtension(\"OES_texture_half_float\")) && gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS)) {\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: SystemInfo.isIOS || gl.getExtension(\"OES_texture_half_float\") ? HalfFloatType : FloatType,\n DATA_FLOAT_TYPE: FloatType,\n }\n }\n else if (this._floatPacking) {\n return {\n gl,\n RENDER_TARGET_FLOAT_TYPE: UnsignedByteType,\n DATA_FLOAT_TYPE: UnsignedByteType\n }\n }\n Logger.debug(\"Unspport float type in current platform\");\n return null;\n }\n return null;\n}","export enum Orientation {\n AUTO,\n LANDSCAPE,\n PORTRAIT,\n}","import { LoadingManager } from \"three\";\nimport { TextureSettings } from \"../TextureSettings\";\nimport { aLoader } from \"./aLoader\";\n\nexport interface AssetProperties extends TextureSettings {\n url?: string,\n ext?: string,\n buffer?: string | ArrayBuffer,\n path?: string;\n resourcePath?: string;\n dracoPath?: string;\n manager?: LoadingManager;\n onProgress?: (event: ProgressEvent) => void,\n}\n\nexport type LoaderConstructor = new (manager: ResourceManager) => aLoader;\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, aLoader> = new Map();\n\n destroy() {\n this._loaders.clear();\n }\n\n getLoader(ext: string) {\n return this._loaders.get(ext);\n }\n\n addLoader(Loader: LoaderConstructor) {\n let loader = new Loader(this);\n for (let ext of loader.extension) {\n this._loaders.set(ext, loader);\n }\n }\n\n loadAsset<T = any>({\n url,\n buffer,\n ext,\n path,\n resourcePath,\n dracoPath,\n manager,\n onProgress,\n ...props\n }: AssetProperties) {\n return new Promise<T>((resolve, reject) => {\n \n const sel = ext || url && ResourceManager.extension(url) || \"\";\n const texSettings = ResourceManager._splitTextureSettings(props);\n\n if (this._loaders.has(sel)) {\n this._loaders.get(sel).load({\n url,\n buffer,\n texSettings,\n path,\n resourcePath,\n dracoPath,\n manager,\n onProgress,\n onLoad: resolve,\n onError: (e) => {\n console.error(`${url} not exist`, e)\n },\n });\n }\n else {\n reject(\"ResourceManager.loadAsset: missing loader for \" + url);\n }\n })\n }\n}","import { __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}","import { Plugin } from \"./Plugin\";\nimport { PropertyManager } from \"./PropertyManager\";\nimport { Viewer } from \"./Viewer\";\nimport { Logger, getClassInstance } from \"./base\";\nimport { __C, __Comp } from \"./types\";\n\nexport class PluginManager {\n private _viewer: Viewer;\n private _plugins: Plugin[] = [];\n private _pluginsMap: Map<Object, Plugin> = new Map();\n\n get viewer() {\n return this._viewer\n }\n\n constructor(viewer: Viewer) {\n this._viewer = viewer;\n }\n\n destroy() {\n this._plugins.forEach(plugin => plugin.uninstall && plugin.uninstall());\n this._plugins.length = 0;\n this._pluginsMap.clear();\n }\n\n update(dt: number) {\n this._plugins.forEach(plugin => plugin.onUpdate && plugin.onUpdate(dt));\n }\n\n render(dt: number) {\n this._plugins.forEach(plugin => plugin.onRender && plugin.onRender(dt));\n }\n\n traversePlugins(callback: (plugin: Plugin) => void) {\n this._plugins.forEach(callback);\n }\n\n getPlugin<T extends Plugin>(plugin: new (...args: any[]) => T, autoAdd: boolean = false): T {\n let ins = this._pluginsMap.get(plugin);\n if (ins === undefined && autoAdd) {\n ins = this.addPlugin(plugin);\n }\n return ins as T;\n }\n\n addPlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>): T;\n addPlugin(plugin: any) {\n const ins = getClassInstance(plugin);\n if (this._pluginsMap.has(ins.constructor)) {\n Logger.warn(\"Plugin already added\");\n }\n else {\n ins.viewer = this._viewer;\n ins.install && ins.install();\n this._plugins.push(ins);\n this._pluginsMap.set(ins.constructor, ins);\n PropertyManager._applyClassProperties(ins.type, ins.constructor);\n }\n return ins;\n }\n\n removePlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>): void;\n removePlugin(plugin: any) {\n const key = typeof plugin === \"function\" ? plugin : plugin.constructor;\n const ins = this._pluginsMap.get(key);\n if (ins) {\n ins.uninstall && ins.uninstall();\n this._plugins.splice(this._plugins.indexOf(ins), 1);\n this._pluginsMap.delete(key);\n }\n }\n\n}","import {\n BufferGeometry,\n Camera,\n ClampToEdgeWrapping,\n ColorSpace,\n DataTexture,\n DirectionalLightShadow,\n Euler,\n Float32BufferAttribute,\n FloatType,\n LinearFilter,\n LinearMipMapLinearFilter,\n LinearSRGBColorSpace,\n LinearToneMapping,\n LoadingManager,\n Material,\n MathUtils,\n Mesh,\n NearestFilter,\n Object3D,\n OrthographicCamera,\n PCFSoftShadowMap,\n PerspectiveCamera,\n RGBAFormat,\n Scene,\n ShadowMapType,\n SRGBColorSpace,\n Texture,\n TextureDataType,\n ToneMapping,\n UnsignedByteType,\n UVMapping,\n Vector3,\n WebGLCubeRenderTarget,\n WebGLRenderer,\n WebGLRendererParameters,\n WebGLRenderTarget,\n} from \"three\";\n\nimport { EventEmitter, getClassInstance } from \"./base\";\nimport { ComponentManager } from \"./ComponentManager\";\nimport { TaskManager } from \"./TaskManager\";\nimport { parepareWebGL } from \"./WebGL\";\nimport { DeviceInput } from \"./DeviceInput\";\nimport { Orientation } from \"./enums/Orientation\";\nimport { AssetProperties, LoaderConstructor, ResourceManager } from \"./asset/ResourceManager\";\nimport { __C, __Comp, __P } from \"./types\";\nimport { Component } from \"./Component\";\nimport { applyProps } from \"./Utils\";\nimport { SystemInfo } from \"./SystemInfo\";\nimport { PluginManager } from \"./PluginManager\";\nimport { Plugin } from \"./Plugin\";\nimport { TweenManager } from \"./tween\";\nimport { aGLTFLoader, aHDRLoader, aJSONLoader, aTextureLoader } from \"./loaders\";\nimport { Task } from \"./Task\";\n\nexport class Viewer extends EventEmitter {\n static __target: Vector3 = new Vector3();\n static __worldPos: Vector3 = new Vector3();\n\n static _shadowCameraKeys = [\"top\", \"bottom\", \"left\", \"right\", \"near\", \"far\"];\n static _setDirectLightShadow(shadow: DirectionalLightShadow, props: number[]) {\n const shadowCamera = shadow.camera;\n for (let i = 0; i < props.length && i < 6; i++) {\n shadowCamera[Viewer._shadowCameraKeys[i]] = props[i];\n }\n if (props.length > 6) {\n shadow.bias = props[6];\n }\n if (props.length > 8) {\n shadow.mapSize.set(props[7], props[8]);\n }\n return shadow;\n }\n\n static compileMaterial(\n renderer: WebGLRenderer,\n scene: Scene,\n camera: Camera,\n target: Material | Material[],\n ) {\n Viewer.fullscreenMesh.material = target;\n renderer.compile(Viewer.fullscreenMesh, camera, scene);\n }\n\n static compileObject3D(\n renderer: WebGLRenderer,\n scene: Scene,\n camera: Camera,\n target: Object3D\n ) {\n renderer.compile(target, camera, scene);\n }\n\n static compileTexture(\n renderer: WebGLRenderer,\n target: Texture | Texture[]\n ) {\n if (Array.isArray(target)) {\n for (let v of target) {\n renderer.initTexture(v);\n }\n }\n else {\n renderer.initTexture(target);\n }\n }\n\n static Blit(\n renderer: WebGLRenderer,\n renderTarget: WebGLRenderTarget,\n material: Material,\n lod?: number,\n face?: number\n ) {\n Viewer.fullscreenMesh.material = material;\n const RT = renderer.getRenderTarget();\n renderer.setRenderTarget(renderTarget, face, lod);\n renderer.render(Viewer.fullscreenMesh, Viewer.fullscreenCamera);\n renderer.setRenderTarget(RT);\n }\n\n static createFullscreenTriangle() {\n let geometry = new BufferGeometry();\n geometry.setAttribute('position', new Float32BufferAttribute([- 1, 3, 0, - 1, - 1, 0, 3, - 1, 0], 3));\n geometry.setAttribute('uv', new Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2));\n return geometry;\n }\n\n static findChild<T extends Object3D>(node: T, path: string): 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\n static getChildByName<T extends Object3D>(node: T, name: string): T {\n return Viewer.getObject(node, v => (v.name === name) && v);\n }\n\n static getObject<T extends Object3D>(node: T, filter: (value: T) => any, group: boolean = false) {\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 return objects[0];\n }\n\n static __emtpyObject = {};\n static _getObjectValue<T extends Object & { name: string }>(object: any, name?: string, group: boolean = false) {\n if (name) {\n if (group) {\n return Object.values<T>(object || Viewer.__emtpyObject).filter(v => v.name === name);\n }\n return Object.values<T>(object || Viewer.__emtpyObject).find(v => v.name === name);\n }\n return Object.values<T>(object);\n }\n\n static getMaterial<T extends Material>(node: Object3D): T[];\n static getMaterial<T extends Material>(node: Object3D, name: string): T;\n static getMaterial(node: Object3D, name?: string, group: boolean = false) {\n return Viewer._getObjectValue<Material>(node.userData.materials, name, group);\n }\n\n static getTexture<T extends Texture>(node: Object3D): T[];\n static getTexture<T extends Texture>(node: Object3D, name: string): T;\n static getTexture(node: Object3D, name?: string, group: boolean = false) {\n return Viewer._getObjectValue<Texture>(node.userData.textures, name, group);\n }\n\n static getMesh<T extends Mesh>(node: Object3D): T[];\n static getMesh<T extends Mesh>(node: Object3D, name: string): T;\n static getMesh(node: Object3D, name?: string, group: boolean = false) {\n return Viewer._getObjectValue<Mesh>(node.userData.meshes, name, group);\n }\n\n static fullscreenMesh: Mesh = new Mesh(Viewer.createFullscreenTriangle());\n static fullscreenCamera: OrthographicCamera = new OrthographicCamera(- 1, 1, 1, - 1, 0, 1);\n static _instanceCount: number = 0;\n\n private _instanceId: number = Viewer._instanceCount++;\n private _root: HTMLElement;\n private _canvas: HTMLCanvasElement;\n private _gl: WebGLRenderingContext | WebGL2RenderingContext;\n private _RENDER_TARGET_FLOAT_TYPE: TextureDataType;\n private _DATA_FLOAT_TYPE: TextureDataType;\n\n private _scene: Scene;\n private _camera: PerspectiveCamera;\n private _renderer: WebGLRenderer;\n private _input: DeviceInput;\n\n private _dpr: number = 1;\n private _width: number = 1;\n private _height: number = 1;\n private _viewport: { width: number, height: number, factor: number } = { width: 1, height: 1, factor: 1 };\n private _orientation: Orientation = Orientation.AUTO;\n private _defaultProps: { path?: string, resourcePath?: string, dracoPath?: string, manager?: LoadingManager } = {};\n\n private _running: boolean = false;\n private _rootRotated: boolean = false;\n\n private _time: number = 0;\n private _lastTime: number = 0;\n private _lastFrameTime: number = 0;\n private _targetFrameRate: number = -1;\n private _fixedFrameTime: boolean = false;\n private _autoResize: boolean = true;\n\n private _taskManager: TaskManager;\n private _resourceManager: ResourceManager;\n private _componentManager: ComponentManager;\n private _pluginManager: PluginManager;\n private _tweenManager: TweenManager;\n private _loadingManager: LoadingManager;\n\n get root() {\n return this._root;\n }\n get time() {\n return this._time;\n }\n get scene() {\n return this._scene;\n }\n get camera() {\n return this._camera;\n }\n get renderer() {\n return this._renderer;\n }\n get canvas() {\n return this._canvas;\n }\n get gl() {\n return this._gl;\n }\n get RENDER_TARGET_FLOAT_TYPE() {\n return this._RENDER_TARGET_FLOAT_TYPE;\n }\n get DATA_FLOAT_TYPE() {\n return this._DATA_FLOAT_TYPE;\n }\n get dpr() {\n return this._dpr;\n }\n get width() {\n return this._width;\n }\n get height() {\n return this._height;\n }\n get viewport() {\n return this._viewport;\n }\n get rootRotated() {\n return this._rootRotated;\n }\n get input() {\n return this._input;\n }\n get targetFrameRate() {\n return this._targetFrameRate;\n }\n set targetFrameRate(v: number) {\n this._targetFrameRate = Math.max(0.001, v);\n }\n\n get instanceId() {\n return this._instanceId;\n }\n get loadingManager() {\n return this._loadingManager;\n }\n get resourceManager() {\n return this._resourceManager;\n }\n get taskManager() {\n return this._taskManager;\n }\n\n constructor({\n root,\n canvas,\n autoStart = true,\n autoResize = true,\n shadows = false,\n camera = { fov: 45, near: 0.1, far: 1000, position: new Vector3(0, 0, 4) },\n targetFrameRate = -1,\n fixedFrameTime = false,\n colorSpace = SRGBColorSpace,\n toneMapping = LinearToneMapping,\n toneMappingExposure = 1,\n maxDPR = 1.5,\n path = \"\",\n resourcePath = \"\",\n dracoPath = \"https://www.gstatic.com/draco/v1/decoders/\",\n orientation = Orientation.AUTO,\n loader = {},\n tasker = {},\n ...webglOpts\n }: {\n root?: HTMLElement;\n canvas?: HTMLCanvasElement;\n targetFrameRate?: number;\n fixedFrameTime?: boolean;\n autoStart?: boolean;\n autoResize?: boolean;\n shadows?: boolean | ShadowMapType;\n colorSpace?: ColorSpace;\n toneMapping?: ToneMapping;\n toneMappingExposure?: number;\n maxDPR?: number;\n path?: string;\n resourcePath?: string;\n dracoPath?: string;\n orientation?: Orientation;\n camera?: {\n fov?: number;\n aspect?: number;\n near?: number;\n far?: number;\n position?: Vector3;\n rotation?: Euler;\n };\n loader?: {\n onLoad?: () => void,\n onProgress?: (url: string, loaded: number, total: number) => void,\n onError?: (url: string) => void,\n };\n tasker?: {\n onComplete?: () => void,\n onProgress?: (target: Object, loaded: number, total: number) => void,\n onError?: (target: Object) => void,\n };\n } & WebGLRendererParameters = {}) {\n super();\n const el = canvas || document.getElementById(\"canvas\") as HTMLCanvasElement;\n const webgl = parepareWebGL(el, webglOpts);\n if (!webgl) {\n throw Error(\"Unsupport WebGL in current platform\");\n }\n\n this._root = root || el;\n this._canvas = el;\n this._gl = webgl.gl;\n this._RENDER_TARGET_FLOAT_TYPE = webgl.RENDER_TARGET_FLOAT_TYPE;\n this._DATA_FLOAT_TYPE = webgl.DATA_FLOAT_TYPE;\n this._dpr = Math.min(maxDPR, window.devicePixelRatio);\n this._orientation = orientation;\n\n this._scene = new Scene();\n this._camera = applyProps(new PerspectiveCamera(), camera);\n this._renderer = new WebGLRenderer({ canvas: el, context: webgl.gl });\n this._renderer.setPixelRatio(this._dpr);\n this._renderer.outputColorSpace = colorSpace;\n this._renderer.toneMapping = toneMapping;\n this._renderer.toneMappingExposure = toneMappingExposure;\n this._renderer.shadowMap.enabled = !!shadows;\n this._renderer.shadowMap.type = typeof shadows === \"boolean\" ? PCFSoftShadowMap : shadows;\n this._renderer.info.autoReset = false;\n\n this._resourceManager = new ResourceManager();\n this._loadingManager = new LoadingManager(loader.onLoad, loader.onProgress, loader.onError);\n this._taskManager = new TaskManager(tasker.onComplete, tasker.onProgress, tasker.onError);\n this._componentManager = new ComponentManager(this);\n this._pluginManager = new PluginManager(this);\n this._tweenManager = new TweenManager();\n this._defaultProps = { path, resourcePath, dracoPath, manager: this._loadingManager };\n\n this._autoResize = autoResize;\n this._targetFrameRate = targetFrameRate;\n this._input = new DeviceInput(this);\n this._input.addEventListeners();\n\n this._addDefaultLoaders();\n\n if (autoStart) this.start();\n }\n\n destroy() {\n this.stop();\n\n this._renderer.dispose();\n this._taskManager.destroy();\n this._resourceManager.destroy();\n this._componentManager.destroy();\n this._pluginManager.destroy();\n this._tweenManager.destroy();\n this._input.removeAllListeners();\n }\n\n private _addDefaultLoaders() {\n this.addLoader(aGLTFLoader);\n this.addLoader(aHDRLoader);\n this.addLoader(aTextureLoader);\n this.addLoader(aJSONLoader);\n }\n\n private _frame(time: number) {\n this._time = time;\n\n if (this._targetFrameRate > -1) {\n const interval = 1 / this._targetFrameRate;\n const delta = this._time - this._lastFrameTime;\n\n if (delta >= interval) {\n this.loop(this._fixedFrameTime ? interval : this._time - this._lastTime);\n this._lastTime = this._time;\n this._lastFrameTime = this._time - (delta % interval);\n }\n }\n else {\n this.loop(this._time - this._lastTime);\n this._lastTime = this._time;\n }\n }\n\n loop(dt: number) {\n if (this._autoResize) this.resize();\n\n dt = Math.min(dt, 0.067);\n this.update(dt);\n this.render(dt);\n }\n\n update(dt: number) {\n this._taskManager.update();\n this._tweenManager.update(this._time);\n this._componentManager.update(dt);\n this._pluginManager.update(dt);\n }\n\n render(dt: number) {\n this._renderer.info.reset();\n this._onRender(dt);\n this._pluginManager.render(dt);\n }\n\n _onRender(dt: number) {\n this._renderer.render(this._scene, this._camera);\n }\n\n _onResize(width: number, height: number) {\n this._renderer.setSize(width, height);\n }\n\n start() {\n if (this._running == false) {\n this._running = true;\n const frameCallback = (time: number) => {\n if (this._running) {\n this._frame(time * 0.001);\n requestAnimationFrame(frameCallback);\n }\n }\n requestAnimationFrame(frameCallback);\n }\n return this;\n }\n\n stop() {\n this._running = false;\n this._time = this._lastTime = 0;\n return this;\n }\n\n resize(\n width: number = window.innerWidth,\n height: number = window.innerHeight\n ) {\n this._rootRotated =\n this._orientation === Orientation.LANDSCAPE ? width < height :\n this._orientation === Orientation.PORTRAIT ? width > height : false;\n\n if (this._rootRotated) {\n let tmp = width;\n width = height;\n height = tmp;\n }\n\n if (this._width !== width ||\n this._height !== height\n ) {\n this._width = width;\n this._height = height;\n\n let 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 let camera = this._camera as any;\n if (camera.isOrthographicCamera) {\n this._viewport = { width: width / camera.zoom, height: height / camera.zoom, factor: 1 };\n }\n else if (camera.isPerspectiveCamera) {\n if (!camera.manual) {\n camera.aspect = width / height;\n camera.updateProjectionMatrix();\n }\n let distance = camera.getWorldPosition(Viewer.__worldPos).distanceTo(Viewer.__target);\n let h = 2 * Math.tan(MathUtils.degToRad(camera.fov * 0.5)) * distance;\n let w = h * width / height;\n this._viewport = { width: w, height: h, factor: width / w };\n }\n\n this._onResize(width, height);\n this.emit(DeviceInput.RESIZE, width, height);\n }\n }\n\n loadAsset(props: AssetProperties) {\n return this._resourceManager.loadAsset(Object.assign(Object.assign({}, this._defaultProps), props));\n }\n\n getLoader(ext: string) {\n return this._resourceManager.getLoader(ext);\n }\n\n addLoader(Loader: LoaderConstructor) {\n this._resourceManager.addLoader(Loader);\n }\n\n timeline(target: Object) {\n return this._tweenManager.timeline(target);\n }\n\n killTweensOf(target: Object) {\n this._tweenManager.killTweensOf(target);\n }\n\n traverseMaterials(callback: (mat: Material) => void) {\n Viewer.getObject(this._scene, (item: any) => {\n if (item.material) {\n if (Array.isArray(item.material)) item.material.forEach(callback);\n else callback(item.material);\n }\n }, true)\n }\n\n traversePlugins(callback: (plugin: Plugin) => void) {\n return this._pluginManager.traversePlugins(callback);\n }\n\n getPlugin<T extends Plugin>(plugin: new (...args: any[]) => T, autoAdd?: boolean): T {\n return this._pluginManager.getPlugin(plugin, autoAdd);\n }\n\n addPlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>, props?: __P<T, K>): T;\n addPlugin(plugin: any, props: any) {\n const ins = this._pluginManager.addPlugin(plugin);\n applyProps(ins, props);\n return ins;\n }\n\n removePlugin<T extends Plugin, K extends __C<T>>(plugin: T | K & __C<T>): void;\n removePlugin(plugin: any) {\n this._pluginManager.removePlugin(plugin);\n }\n\n getComponent<T extends Component>(node: Object3D, constructor: { new(): T }, autoAdd?: boolean): T {\n return this._componentManager.getComponent(node, constructor, autoAdd);\n }\n\n traverseComponents(callback: (comp: Component) => void) {\n return this._componentManager.traverseComponents(callback);\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 return this._componentManager.addComponent(node, constructor);\n }\n\n removeComponent(node: Object3D, component: Component) {\n return this._componentManager.removeComponent(node, component);\n }\n\n addTask(task: Task) {\n this._taskManager.add(task);\n }\n\n addNode<T extends Object3D | Component, K extends __C<T>>(object: T | K & __C<T>, props?: __P<T, K>): T;\n addNode(object: any, {\n args,\n debug,\n scale,\n position,\n rotation,\n layer,\n shadowArgs,\n makeDefault,\n component,\n parent = this._scene,\n ...props\n }: any = {}\n ) {\n let node = null;\n let ins = getClassInstance(object, args);\n if (ins.isObject3D) {\n node = ins;\n parent.add(ins);\n }\n else if (ins instanceof Component) {\n node = ins.node || new Object3D();\n parent.add(node);\n this._componentManager.addComponent(node, ins);\n }\n else {\n throw Error(\"Viewer.addNode: unsuport object\");\n }\n\n if (component) {\n const components = Array.isArray(component) ? component : [component];\n for (let ins of components) {\n this._componentManager.addComponent(node, ins);\n }\n }\n if (layer) {\n node.layers.mask = layer;\n }\n if (scale || position || rotation) {\n applyProps(node, { scale, position, rotation });\n }\n if (props) {\n applyProps(ins, props);\n }\n\n if (ins.isCamera && makeDefault) {\n ins.manual = ins.aspect !== this._camera.aspect;\n this._camera = ins;\n }\n if (shadowArgs) {\n if (node.isDirectionalLight) Viewer._setDirectLightShadow(node.shadow, shadowArgs);\n }\n\n return ins;\n }\n\n removeNode(node: Object3D) {\n this._componentManager.destroyComponents(node);\n node.removeFromParent();\n }\n\n activeNode(node: Object3D, active: boolean) {\n this._componentManager.activeComponents(node);\n node.visible = active;\n return node;\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: BufferSource,\n width: number,\n height: number,\n floatType: boolean = false,\n nearest: boolean = true,\n ) {\n return new DataTexture(\n data, width, height,\n RGBAFormat,\n floatType ? FloatType : UnsignedByteType,\n UVMapping, ClampToEdgeWrapping, ClampToEdgeWrapping,\n nearest ? NearestFilter : LinearFilter,\n nearest ? NearestFilter : LinearFilter,\n 0\n );\n }\n\n /**\n * 传送门,得到一个全新的场景\n * @param callback 禁止使用异步函数,会导致状态错误\n * @returns \n */\n portal<T = any>(callback: () => T) {\n const scene = this._scene;\n const camera = this._camera;\n this._scene = new Scene();\n const result = callback();\n this._scene = scene;\n this._camera = camera;\n return result;\n }\n\n blit(\n renderTarget: WebGLRenderTarget,\n material: Material,\n lod?: number,\n face?: number\n ) {\n Viewer.Blit(this._renderer, renderTarget, material, lod, face);\n }\n\n compile(target?: Object3D | Scene | Material | Texture): void;\n compile(target?: Material[]): void;\n compile(target?: any) {\n if (Array.isArray(target)) {\n if (target.every(v => v.isMaterial)) {\n Viewer.compileMaterial(this._renderer, this._scene, this._camera, target);\n }\n else {\n throw Error(\"Viewer.compile: unsuport material\");\n }\n }\n else if (typeof target === \"object\") {\n if (target.isMaterial) {\n Viewer.compileMaterial(this._renderer, this._scene, this._camera, target);\n }\n else if (target.isObject3D) {\n if (target.meshData.materials) {\n Viewer.compileMaterial(this._renderer, this._scene, this._camera, Object.values(target.meshData.materials));\n }\n if (target.meshData.textures) {\n Viewer.compileTexture(this._renderer, Object.values(target.meshData.textures));\n }\n if (!target.meshData.meshes) {\n Viewer.compileObject3D(this._renderer, this._scene, this._camera, target);\n }\n }\n else if (target.isTexture) {\n Viewer.compileTexture(this._renderer, target);\n }\n }\n else {\n Viewer.compileObject3D(this._renderer, this._scene, this._camera, this._scene);\n }\n }\n}","import { CubeTexture, Mesh, PMREMGenerator, ShaderMaterial, Texture, WebGLRenderTarget, WebGLRenderer } from \"three\";\nimport { LOD_MIN, _Quality, _axisDirections, _flatCamera, _getClearMaterial, _getCubeMapMaterial, _setViewport } from \"./utils\";\nimport { Viewer } from \"../../Viewer\";\nimport { MergeInfo } from \"./MergeInfo\";\n\nexport class MergeRefectPass {\n private _pmremGenerator: any;\n private _reflectMap: Texture;\n private _envMapTarget: WebGLRenderTarget;\n private _sourceTarget: WebGLRenderTarget;\n\n get envMapTarget() {\n return this._envMapTarget;\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 viewer.scene.environment = this._envMapTarget.texture;\n }\n\n dispose() {\n this._sourceTarget.dispose();\n this._envMapTarget.dispose();\n this._pmremGenerator.dispose();\n }\n\n mergeReflect(info: MergeInfo) {\n this._pmremGenerator._copyTexture(this._envMapTarget, this._sourceTarget.texture, info.envMapIntensity);\n this._pmremGenerator._mergeReflect(this._envMapTarget, this._reflectMap, info.quality);\n\n info.envMapTarget = this._envMapTarget;\n info.lodMax = this._pmremGenerator._lodMeshes.length - 1;\n }\n\n private _getPMREMExtension(renderer: WebGLRenderer) {\n const pmremGenerator = new PMREMGenerator(renderer) as any;\n pmremGenerator._fromTextureExtension = function (reflectMap: CubeTexture, envMap?: Texture) {\n const target = envMap ? this._fromTexture(envMap) : this._fromCubeTexture(reflectMap);\n this._cubeMapMaterial = _getCubeMapMaterial();\n this._copyTexMaterial = _getClearMaterial();\n this._copyMesh = new Mesh(Viewer.fullscreenMesh.geometry, this._copyTexMaterial);\n this._lodMeshes = this._lodPlanes.map(v => new Mesh(v, this._cubeMapMaterial));\n this._sourceInit = false;\n return target;\n }\n pmremGenerator._fromCubeTexture = function (texture: CubeTexture) {\n this._setSize(texture.image.length === 0 ? 16 : (texture.image[0].width || texture.image[0].image.width));\n return this._allocateTargets();\n }\n pmremGenerator._copyTexture = function (\n targetOut: WebGLRenderTarget,\n texture: Texture,\n intensity: number = 1,\n ) {\n const uniforms = this._copyTexMaterial.uniforms;\n uniforms.map.value = texture;\n uniforms.intensity.value = intensity;\n\n targetOut.scissorTest = false;\n _setViewport(targetOut, 0, 0, targetOut.width, targetOut.height);\n\n const renderer = this._renderer;\n renderer.autoClear = true;\n renderer.setRenderTarget(targetOut);\n renderer.render(this._copyMesh, _flatCamera);\n renderer.setRenderTarget(null);\n }\n pmremGenerator._clearTexture = function (\n targetOut: WebGLRenderTarget,\n intensity?: number,\n ) {\n this._copyTexture(targetOut, this._sourceTarget.texture, intensity);\n }\n pmremGenerator._mergeReflect = function (\n sourceTarget: WebGLRenderTarget,\n reflectMap: CubeTexture,\n quality: number,\n ) {\n const renderer = this._renderer;\n const autoClear = renderer.autoClear;\n const cubeMapMaterial = this._cubeMapMaterial;\n\n const uniforms = this._cubeMapMaterial.uniforms;\n uniforms.envMap.value = reflectMap;\n\n renderer.autoClear = false;\n\n if (quality === _Quality.HIGH) {\n for (let i = 0; i < this._lodMeshes.length - 1; i++) {\n uniforms.lod.value = i < 5 ? 0 : i;\n this._blit(sourceTarget, i, cubeMapMaterial);\n }\n }\n else if (quality === _Quality.MEDIUM) {\n for (let i = 0; i < this._lodMeshes.length; i++) {\n if (i < 4) {\n uniforms.lod.value = 0;\n this._blit(sourceTarget, i, cubeMapMaterial);\n }\n else {\n this._pmremblur(sourceTarget, i - 1, i);\n }\n }\n }\n else if (quality === _Quality.ULTRA) {\n uniforms.lod.value = 0;\n this._blit(sourceTarget, 0, cubeMapMaterial);\n for (let i = 1; i < this._lodMeshes.length; i++) {\n this._pmremblur(sourceTarget, i - 1, i);\n }\n }\n\n sourceTarget.scissorTest = false;\n _setViewport(sourceTarget, 0, 0, sourceTarget.width, sourceTarget.height);\n\n renderer.autoClear = autoClear;\n }\n pmremGenerator._pmremblur = function (\n targetOut: WebGLRenderTarget,\n lodIn: number,\n lodOut: number,\n ) {\n const sigma = Math.sqrt(this._sigmas[lodOut] * this._sigmas[lodOut] - this._sigmas[lodIn] * this._sigmas[lodIn]);\n const poleAxis = _axisDirections[(lodIn) % _axisDirections.length];\n this._blur(targetOut, lodIn, lodOut, sigma, poleAxis);\n }\n pmremGenerator._blit = function (\n targetOut: WebGLRenderTarget,\n lodOut: number,\n material: ShaderMaterial,\n ) {\n const renderer = this._renderer;\n const _lodMax = this._lodMax;\n const outputSize = this._sizeLods[lodOut];\n const x = 3 * outputSize * (lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0);\n const y = 4 * (this._cubeSize - outputSize);\n _setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize);\n const lodMesh = this._lodMeshes[lodOut];\n lodMesh.material = material;\n renderer.autoClear = false;\n renderer.setRenderTarget(targetOut);\n renderer.render(lodMesh, _flatCamera);\n }\n return pmremGenerator;\n }\n}\n","import { MathUtils } from \"three\";\n\nexport function mipGaussianBlendWeight(sigma: number, lod: number) {\n let sigma2 = sigma * sigma;\n let c = 2.0 * Math.PI * sigma2;\n let numerator = Math.pow(16, lod) * 1.386294361; //log(4)\n let denorminator = c * (Math.pow(4, lod) + c);\n return MathUtils.clamp(numerator / denorminator, 0, 1);\n}\n","import { CubeTexture, MathUtils, Mesh, PMREMGenerator, ShaderMaterial, Texture, WebGLRenderTarget, WebGLRenderer } from \"three\";\nimport { mipGaussianBlendWeight } from \"../mipGaussianBlendWeight\";\nimport { LOD_MIN, _flatCamera, _getMipBlurMaterial, _getMipCopyMaterial, _setViewport } from \"./utils\";\nimport { Viewer } from \"../../Viewer\";\nimport { MergeInfo } from \"./MergeInfo\";\n\nconst MAX_LOD = 10;\n\nexport class MergeMipBlurPass {\n private _pmremGenerator: any;\n private _sigma: number = 2;\n private _blurMinLod: number = 0;\n private _blurMaxLod: number = MAX_LOD;\n private _blurIntensity: number = -1;\n private _envMapTarget: WebGLRenderTarget;\n private _reflectMap: CubeTexture;\n\n get envMapTarget() {\n return this._envMapTarget;\n }\n\n constructor({\n viewer,\n reflectMap,\n }: {\n viewer: Viewer;\n reflectMap: CubeTexture;\n }) {\n this._reflectMap = reflectMap;\n this._pmremGenerator = this._getPMREMExtension(viewer.renderer);\n this._envMapTarget = this._pmremGenerator._fromTextureExtension(reflectMap);\n }\n\n dispose() {\n this._envMapTarget.dispose();\n this._pmremGenerator.dispose();\n }\n\n mergeMipBlur(info: MergeInfo) {\n this._setBlurIntensity(info.blurIntensity);\n const targetIn = this._pmremGenerator._applyMipBlur(\n this._envMapTarget,\n this._reflectMap,\n this._blurMinLod,\n this._blurMaxLod,\n this._sigma,\n info.exposure,\n );\n this._pmremGenerator._mipCopy(info.envMapTarget, targetIn, info.lodMax, this._blurMinLod);\n }\n\n private _setBlurIntensity(blurIntensity: number) {\n if (this._blurIntensity !== blurIntensity) {\n this._blurIntensity = blurIntensity\n this._sigma = MathUtils.lerp(1, 40, this._blurIntensity / 10);\n for (let lod = 0; lod <= MAX_LOD; lod++) {\n let w = mipGaussianBlendWeight(this._sigma, lod);\n if (w < 0.002) {\n this._blurMinLod = lod;\n }\n if (w >= 1) {\n this._blurMaxLod = lod;\n break;\n }\n }\n }\n }\n\n private _getPMREMExtension(renderer: WebGLRenderer) {\n const pmremGenerator = new PMREMGenerator(renderer) as any;\n pmremGenerator._fromTextureExtension = function (texture: Texture) {\n this._setSize(texture.image.length === 0 ? 16 : (texture.image[0].width || texture.image[0].image.width));\n const target = this._allocateTargets();\n this._mipBlurMaterial = _getMipBlurMaterial(this._lodMax, target.width, target.height);\n this._mipCopyMaterial = _getMipCopyMaterial(this._lodMax, target.width, target.height);\n this._lodMeshes = this._lodPlanes.map(v => new Mesh(v, this._mipBlurMaterial));\n return target;\n }\n pmremGenerator._applyMipBlur = function (\n sourceTarget: WebGLRenderTarget,\n texture: CubeTexture,\n blurMinLod: number,\n blurMaxLod: number,\n sigma: number,\n exposure: number = 1\n ) {\n const pingPongRenderTarget = this._pingPongRenderTarget;\n const uniforms = this._mipBlurMaterial.uniforms;\n uniforms.envMap.value = texture;\n uniforms.exposure.value = exposure;\n\n let lod = blurMaxLod;\n let targetOut = sourceTarget;\n let targetIn = pingPongRenderTarget;\n\n this._mipBlur(sourceTarget, pingPongRenderTarget, lod, 1);\n for (let i = 0; lod-- > blurMinLod; i++) {\n targetOut = (i & 1) === 0 ? pingPongRenderTarget : sourceTarget;\n targetIn = (i & 1) === 1 ? pingPongRenderTarget : sourceTarget;\n this._mipBlur(targetOut, targetIn, lod, mipGaussianBlendWeight(sigma, lod));\n }\n\n sourceTarget.scissorTest = false;\n _setViewport(sourceTarget, 0, 0, sourceTarget.width, sourceTarget.height);\n\n return targetOut;\n }\n pmremGenerator._mipBlur = function (\n targetOut: WebGLRenderTarget,\n targetIn: WebGLRenderTarget,\n lodOut: number,\n weight: number,\n ) {\n const uniforms = this._mipBlurMaterial.uniforms;\n uniforms.cubeUVMap.value = targetIn.texture;\n uniforms.weight.value = weight;\n uniforms.lod.value = lodOut;\n\n this._blit(targetOut, lodOut, this._mipBlurMaterial);\n }\n pmremGenerator._mipCopy = function (\n targetOut: WebGLRenderTarget,\n targetIn: WebGLRenderTarget,\n lodOut: number,\n lodIn: number = lodOut,\n ) {\n const uniforms = this._mipCopyMaterial.uniforms;\n uniforms.cubeUVMap.value = targetIn.texture;\n uniforms.lod.value = lodIn;\n\n this._blit(targetOut, lodOut, this._mipCopyMaterial);\n\n targetOut.scissorTest = false;\n _setViewport(targetOut, 0, 0, targetOut.width, targetOut.height);\n }\n pmremGenerator._blit = function (\n targetOut: WebGLRenderTarget,\n lodOut: number,\n material: ShaderMaterial,\n ) {\n const renderer = this._renderer;\n const _lodMax = this._lodMax;\n const outputSize = this._sizeLods[lodOut];\n const x = 3 * outputSize * (lodOut > _lodMax - LOD_MIN ? lodOut - _lodMax + LOD_MIN : 0);\n const y = 4 * (this._cubeSize - outputSize);\n _setViewport(targetOut, x, y, 3 * outputSize, 2 * outputSize);\n const lodMesh = this._lodMeshes[lodOut];\n lodMesh.material = material;\n renderer.autoClear = false;\n renderer.setRenderTarget(targetOut);\n renderer.render(lodMesh, _flatCamera);\n }\n\n return pmremGenerator;\n }\n}","import {\n CubeCamera,\n HalfFloatType,\n MeshBasicMaterial,\n Object3D,\n Scene,\n Texture,\n TextureDataType,\n Vector3,\n} from \"three\";\n\nimport { Plugin } from \"../Plugin\";\nimport { MergeRefectPass } from \"../passes/cubeuv/MergeReflectPass\";\nimport { MergeMipBlurPass } from \"../passes/cubeuv/MergeBlurPass\";\nimport { property } from \"../PropertyManager\";\nimport { MergeInfo } from \"../passes/cubeuv/MergeInfo\";\nimport { Plane } from \"../primitive\";\nimport { DebugPlugin } from \"./DebugPlugin\";\nimport { _Quality } from \"../passes/cubeuv/utils\";\n\nexport class EnvironmentPlugin extends Plugin {\n static readonly Quality = _Quality;\n\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 private _debug: boolean = false;\n private _debugNode: Object3D = null;\n private _elapsed: number = 0;\n\n @property\n get debug() {\n return this._debug;\n }\n set debug(v: boolean) {\n if (this._debug !== v) {\n this._debug = v;\n if (v) {\n if (this._debugNode === null) {\n const viewer = this.viewer;\n const debugScene = DebugPlugin.Instance(viewer).scene;\n this._debugNode = viewer.addNode(Object3D, { parent: debugScene });\n viewer.addNode(Plane, {\n parent: this._debugNode,\n material: new MeshBasicMaterial({ map: this._reflectPass.envMapTarget.texture }),\n position: new Vector3(1.1, 3, 0)\n })\n if (this._mipBlurPass) {\n viewer.addNode(Plane, {\n parent: this._debugNode,\n material: new MeshBasicMaterial({ map: this._mipBlurPass.envMapTarget.texture }),\n position: new Vector3(0, 3, 0)\n })\n }\n }\n }\n if (this._debugNode) {\n this._debugNode.visible = v;\n }\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 constructor({\n envMap,\n scene,\n near,\n far,\n layer = 0,\n resolution = 256,\n floatType = HalfFloatType,\n position = new Vector3(0, 1, 0),\n }: {\n envMap?: Texture;\n scene?: Scene | Object3D;\n performance?: number;\n resolution?: number;\n layer?: number;\n near?: number;\n far?: number;\n floatType?: boolean | TextureDataType;\n position?: Vector3;\n } = {}) {\n super();\n this.install = () => {\n const viewer = this.viewer;\n this._scene = scene || viewer.scene;\n const cubeRenderTarget = viewer.createCubeRenderTarget(resolution, false, floatType, 0, true, true);\n this._cubeCamera = new CubeCamera(near || viewer.camera.near, far || viewer.camera.far, cubeRenderTarget);\n this._cubeCamera.position.copy(position);\n this._cubeCamera.layers.mask = layer;\n const reflectMap = cubeRenderTarget.texture;\n this._reflectPass = new MergeRefectPass({ viewer, reflectMap, envMap });\n }\n this.uninstall = () => {\n this._reflectPass.dispose();\n if (this._mipBlurPass) {\n this._mipBlurPass.dispose();\n }\n }\n }\n\n onRender(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 { Box3, Box3Helper, ShaderChunk, ShaderLib, Vector3, Vector4, WebGLProgramParametersWithUniforms } from \"three\";\nimport { Plugin } from \"../Plugin\";\nimport { property } from \"../PropertyManager\";\nimport { DebugPlugin } from \"./DebugPlugin\";\n\nexport class BoxProjectionPlugin extends Plugin {\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 private _helper: Box3Helper = null;\n private _debug: boolean = false;\n\n @property\n get debug() {\n return this._debug;\n }\n set debug(v: boolean) {\n if (this._debug !== v) {\n this._debug = v;\n if (v) {\n if (this._helper === null) {\n this._helper = new Box3Helper(new Box3(this._boxMin, this._boxMax));\n DebugPlugin.Instance(this.viewer).add(this._helper);\n }\n }\n if (this._helper) {\n this._helper.visible = v;\n }\n }\n }\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 constructor() {\n super();\n this.install = () => {\n ShaderLib.physical.vertexShader = ShaderLib.physical.vertexShader.replace(/#ifdef USE_TRANSMISSION/g, `\n #if defined(USE_TRANSMISSION) || defined(USE_BOX_PROJECTION)\n `);\n ShaderLib.physical.fragmentShader = ShaderLib.physical.fragmentShader.replace(\"varying vec3 vViewPosition;\", `\n varying vec3 vViewPosition;\n #if defined(USE_BOX_PROJECTION)\n varying vec3 vWorldPosition;\n #endif\n `);\n ShaderChunk.worldpos_vertex = ShaderChunk.worldpos_vertex.replace(\"#if defined( USE_ENVMAP )\", \"#if defined( USE_ENVMAP ) || defined( USE_BOX_PROJECTION )\");\n ShaderChunk.envmap_physical_pars_fragment = ShaderChunk.envmap_physical_pars_fragment.replace(\"#ifdef USE_ENVMAP\", `\n #ifdef USE_ENVMAP\n\n #if defined(USE_BOX_PROJECTION)\n uniform vec4 probePos;\n uniform vec3 probeBoxMin;\n uniform vec3 probeBoxMax;\n \n vec3 boxProjection(vec3 nrdir, vec3 worldPos, vec3 probePos, vec3 boxMin, vec3 boxMax) {\n vec3 tbot = boxMin - worldPos;\n vec3 ttop = boxMax - worldPos;\n vec3 tmax = mix(tbot, ttop, step(vec3(0), nrdir));\n tmax /= nrdir;\n float t = min(min(tmax.x, tmax.y), tmax.z);\n return worldPos + nrdir * t - probePos;\n }\n #endif\n\n `).replace(\"reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\", `\n reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n \n #if defined(USE_BOX_PROJECTION)\n if (probePos.w > 0.001) {\n reflectVec = boxProjection(reflectVec, vWorldPosition, probePos.xyz, probeBoxMin.xyz, probeBoxMax.xyz);\n }\n #endif\n\n `).replace(\"vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\", `\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\n #if defined(USE_BOX_PROJECTION)\n if (probePos.w > 0.001) {\n worldNormal = boxProjection(worldNormal, vWorldPosition, probePos.xyz, probeBoxMin.xyz, probeBoxMax.xyz);\n }\n #endif\n\n `);\n }\n this.uninstall = () => {\n DebugPlugin.Instance(this.viewer).remove(this._helper);\n }\n }\n\n onUpdate(dt: number): void {\n if (this._debug) {\n this._helper.updateMatrixWorld();\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 { Plugin } from \"../Plugin\"\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: PerformanceMonitorPlugin) => void\n /** When performance is lower than the upper bound (bad!) */\n onDecline?: (monitor: PerformanceMonitorPlugin) => void\n /** Incline and decline will change the factor, this will trigger when that happened */\n onChange?: (monitor: PerformanceMonitorPlugin) => 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: PerformanceMonitorPlugin) => void\n}\n\n\ntype PerformanceMonitorSubscriber = {\n onIncline?: (monitor: PerformanceMonitorPlugin) => void\n /** When performance is lower than the upper bound (bad!) */\n onDecline?: (monitor: PerformanceMonitorPlugin) => void\n /** Incline and decline will change the factor, this will trigger when that happened */\n onChange?: (monitor: PerformanceMonitorPlugin) => 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: PerformanceMonitorPlugin) => void\n}\n\nexport class PerformanceMonitorPlugin extends Plugin {\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.onUpdate = (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 { Plugin } from \"../Plugin\";\nimport { ResourceManager } from \"../asset/ResourceManager\";\n\nexport class DropFilePlugin extends Plugin {\n private _onLoad: Function;\n private _extensions: string[];\n\n constructor({\n onLoad,\n extension = [\"glb\", \"gltf\", \"fbx\", \"hdr\"],\n }: {\n onLoad?: Function;\n extension?: string | string[]\n } = {}) {\n super();\n this._onLoad = onLoad;\n this._extensions = Array.isArray(extension) ? extension : [extension];\n }\n\n install(): void {\n document.addEventListener(\"dragover\", this._onDrogOver);\n document.addEventListener(\"drop\", this._onDrop);\n }\n\n uninstall(): void {\n document.removeEventListener(\"dragover\", this._onDrogOver);\n document.removeEventListener(\"drop\", this._onDrop);\n }\n\n private _onDrogOver = (e: DragEvent) => {\n e.preventDefault();\n e.dataTransfer.dropEffect = \"copy\";\n }\n\n private _onDrop = (e: DragEvent) => {\n e.preventDefault();\n if (e.dataTransfer.types[0] === \"text/plain\") return;// Outliner drop\n if (e.dataTransfer.items) {\n this._loadItemList(e.dataTransfer.items);\n }\n else {\n this._loadFiles(e.dataTransfer.files);\n }\n }\n\n private _loadItemList(items: DataTransferItemList) {\n getFilesFromItemList(items, (files, filesMap, dirs) => {\n this._loadFiles(files, filesMap, dirs);\n })\n }\n\n private _loadFiles(\n files: File[] | FileList,\n filesMap?: { [k: string]: File },\n dirs?: string[]\n ) {\n if (files.length > 0) {\n filesMap = filesMap || createFilesMap(files);\n dirs = dirs || [];\n\n this.viewer.loadingManager.setURLModifier(url => {\n url = url.replace(/^(\\.?\\/)/, ''); // remove './'\n const file = filesMap[url];\n if (file) {\n console.log('Loading', url);\n return URL.createObjectURL(file);\n }\n return url;\n });\n\n for (let i = 0; i < files.length; i++) {\n this._loadFile(files[i], dirs[i]);\n }\n }\n }\n\n private _loadFile(file: File, dir: string = \"\") {\n const filename = file.name;\n const ext = ResourceManager.extension(filename);\n if (this._extensions.some(v => v === ext)) {\n const reader = new FileReader();\n reader.addEventListener(\"progress\", (event) => {\n const size = '(' + Math.floor(event.total / 1000) + ' KB)';\n const progress = Math.floor((event.loaded / event.total) * 100) + '%';\n console.log('Loading', filename, size, progress);\n });\n const loadCallback = (asset) => {\n asset.userData.ext = ext;\n this._onLoad && this._onLoad(asset);\n }\n if ([\"fbx\", \"gltf\", \"glb\"].some(v => v === ext)) {\n reader.addEventListener(\"load\", (event) => {\n this.viewer.loadAsset({ ext, buffer: event.target.result, resourcePath: dir }).then(loadCallback);\n }, false);\n reader.readAsArrayBuffer(file);\n }\n else {\n reader.addEventListener(\"load\", (event) => {\n this.viewer.loadAsset({ ext, url: event.target.result as string }).then(loadCallback);\n }, false);\n reader.readAsDataURL(file);\n }\n }\n }\n}\n\n\nfunction createFilesMap(files: File[] | FileList) {\n const map = {};\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n map[file.name] = file;\n }\n return map;\n}\n\nfunction getFilesFromItemList(\n items: DataTransferItemList,\n onDone: (files: File[] | FileList, filesMap: { [k: string]: File }, dirs: string[]) => void\n) {\n let itemsCount = 0;\n let itemsTotal = 0;\n\n const dirs = [];\n const files = [];\n const filesMap = {};\n\n function onEntryHandled() {\n itemsCount++;\n if (itemsCount === itemsTotal) {\n onDone(files, filesMap, dirs);\n }\n }\n\n function handleEntry(\n entry: FileSystemEntry | FileSystemDirectoryEntry | FileSystemFileEntry,\n dir: string = \"\"\n ) {\n if (entry.isDirectory) {\n const reader = (entry as FileSystemDirectoryEntry).createReader();\n reader.readEntries((entries) => {\n for (let i = 0; i < entries.length; i++) {\n handleEntry(entries[i], dir + \"/\" + entry.name + \"/\");\n }\n onEntryHandled();\n });\n\n }\n else if (entry.isFile) {\n (entry as FileSystemFileEntry).file((file) => {\n files.push(file);\n filesMap[entry.fullPath.slice(1)] = file;\n dirs.push(dir);\n onEntryHandled();\n });\n\n }\n itemsTotal++;\n }\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n if (item.kind === 'file') {\n handleEntry(item.webkitGetAsEntry() as any);\n }\n }\n}"],"names":["EventEmitter","_removeEvent","list","index","name","splice","length","_events","clear","has","on","callback","target","once","findIndex","v","console","warn","push","off","a","onof","container","_listeners","undefined","offof","targetOff","i","emit","args","apply","noop","message","optionalParams","debug","log","bind","info","error","Logger","isEnabled","enable","disable","mixin","derivedCtor","baseCtors","forEach","baseCtor","Object","getOwnPropertyNames","prototype","defineProperty","getOwnPropertyDescriptor","create","getClassInstance","constructor","Easing","freeze","Linear","None","amount","In","Out","InOut","Quadratic","Cubic","Quartic","Quintic","Sinusoidal","Math","sin","PI","Exponential","pow","Circular","sqrt","Elastic","Back","s","Bounce","generatePow","power","Number","EPSILON","Interpolation","k","m","f","floor","fn","Utils","Bezier","b","n","pw","bn","Bernstein","CatmullRom","p0","p1","t","fc","Factorial","p2","p3","v0","v1","t2","t3","now","performance","Group","getAll","keys","_tweens","map","tweenId","removeAll","add","tween","getId","_tweensAddedDuringUpdate","remove","update","time","preserve","tweenIds","autoStart","mainGroup","Sequence","nextId","_nextId","Tween","_id","isPlaying","_isPlaying","isPaused","_isPaused","getDuration","_duration","from","properties","_valuesStart","to","duration","Error","_valuesEnd","_propertiesAreSetUp","dynamic","_isDynamic","start","overrideStartingValues","_group","_repeat","_initialRepeat","_reversed","property","_valuesStartRepeat","_swapEndStartRepeatValues","_onStartCallbackFired","_onEveryStartCallbackFired","_isChainStopped","_startTime","_delayTime","tmp","prop","_setupProperties","_object","startFromCurrentValues","startValue","startValueIsArray","Array","isArray","propType","isInterpolationList","endValues","temp","l","value","_handleRelativeValue","isNaN","nestedObject","slice","reverse","stop","stopChainedTweens","_onStopCallback","end","_goToEnd","Infinity","pause","_pauseStart","resume","numChainedTweens","_chainedTweens","group","call","_onFinishCallback","delay","union","headTween","tailTween","_headTween","_tailTween","chain","repeat","times","repeatDelay","_repeatDelayTime","yoyo","_yoyo","easing","easingFunction","_easingFunction","interpolation","interpolationFunction","_interpolationFunction","tweens","unchain","onStart","_onStartCallback","onEveryStart","_onEveryStartCallback","onUpdate","_onUpdateCallback","onRepeat","_onRepeatCallback","onComplete","_onCompleteCallback","onStop","endTime","elapsedTime","durationAndDelay","totalTime","elapsed","_calculateElapsedPortion","_headTweenStartFired","status","_calculateCompletionStatus","_processRepetition","_updateProperties","timeIntoCurrentRepeat","portion","min","completeCount","trunc","isFinite","valueEnd","parseFloat","startIsArray","endIsArray","des","set","charAt","endValue","TweenChain","_tween","_chainedTween","_chainTween","props","object","TweenManager","destroy","timeline","killTweensOf","aLoader","_setUserData","node","_texKeys","meshes","textures","materials","queue","shift","isMesh","mat","material","uuid","children","values","tex","assign","userData","manager","aEXRLoader","load","url","path","resourcePath","texSettings","onLoad","onProgress","onError","loader","_loader","EXRLoader","setPath","setResourcePath","extension","aFBXLoader","buffer","FBXLoader","loadCallback","parse","aGLTFLoader","dracoPath","dracoLoader","_dracoLoader","DRACOLoader","setDecoderPath","GLTFLoader","setDRACOLoader","setMeshoptDecoder","MeshoptDecoder","gltf","scene","animations","aHDRLoader","RGBELoader","settings","mapping","EquirectangularReflectionMapping","aJSONLoader","FileLoader","file","JSON","aTextureLoader","TextureLoader","colorSpace","SRGBColorSpace","ClassProperties","propertyKey","options","_properties","applyProperties","clsName","PropertyManager","_hasProperties","_propertyMap","_getProperties","autoAdd","get","_getMergedProperties","getPrototypeOf","_getClassProperties","_classMap","_applyClassProperties","cls","Map","normalized","CinestationBlendStyle","QuadraticIn","QuadraticOut","QuadraticInOut","CinestationBlendDefinition","style","ObjectInstance","instanceId","_instanceCount","MathUtils","generateUUID","type","Component","enabled","_enabled","componentScheduler","enableComponent","_onPreDestroy","unscheduleAll","removeComponent","onDestroy","flags","OnLoadCalled","schedule","interval","scheduler","unshedule","Destroyed","destroyImmediate","clamp","lerp","CinestationBrain","vcam","_vcam","vcams","_vcams","lastUpdate","dt","getActiveCamera","locked","_lerpTime","brainBlend","_lerpToMainCamera","activeCamera","_vcamSolo","addCamera","indexOf","removeCamera","filter","sort","priority","lens","finalPosition","finalRotation","isLensChanged","fov","near","far","position","quaternion","slerp","updateProjectionMatrix","Lens","VirtualCamera","_finalPosition","copy","correctPosition","_finalRotation","multiply","correctRotation","camera","viewer","isCamera","brain","getComponent","Vector3","Quaternion","PressState","NONE","SELECTED","IN","Pressability","connect","connector","_connectors","find","state","disconnect","pointerDown","pointer","_raycaster","setFromCamera","conn","intersects","intersectObject","pointerUp","pointerMove","Raycaster","DeviceInput","pointerButton","_pointerButton","_pointer","pointerPosition","_pointerPosition","mouseWheel","_mouseWheel","touchCount","_touchCount","touches","_touches","_keys","addEventListeners","domElement","canvas","touchAction","_addEventListener","e","preventDefault","_onPointerDown","passive","_onPointerUp","_onPointerMove","_onMouseWheel","_onTouchStart","_onTouchEnd","_onTouchMove","window","_onKeyDown","_onKeyPress","_onKeyUp","removeAllListeners","removeEventListener","event","CLICK","POINTER_DOWN","POINTER_UP","POINTER_OVER","POINTER_OUT","_pressability","addEventListener","_remapPointer","width","rootRotated","button","buttons","clientX","clientY","offsetX","offsetY","pageX","pageY","screenX","screenY","movementX","movementY","_remapTouch","identifier","_computePointer","x","y","height","POINTER_MOVE","deltaY","wheelDelta","MOUSE_WHEEL","TOUCH_START","TOUCH_END","touchesTo","id","Vector2","touch","TOUCH_MOVE","key","KEYDOWN","KEYPRESS","KEYUP","RESIZE","isSSR","DetectUA","match","pattern","userAgent","isMobile","isTablet","test","iOSDevice","isAndroidDevice","isDesktop","isMacOS","version","replace","split","versionNumber","isWindows","isiOS","isAndroid","browser","versionIdentifier","forceUserAgent","navigator","toLowerCase","platform","maxTouchPoints","MSStream","detectUA","vendor","browserName","audioElem","document","createElement","SystemInfo","device","isIOS","isLinux","ua","isEdge","isIE","isFirefox","isChrome","isOpera","isSafari","isSupportMSAA","isSupportOgg","canPlayType","isRetina","devicePixelRatio","cpuCoreCount","hardwareConcurrency","baseUrl","location","origin","isIFrame","self","top","max","exp","kNegligibleResidual","kLogNegligibleResidual","exponentialDamp","current","dampTime","deltaTime","quarticDamp","tt","smoothDamp","smoothTime","maxSpeed","_velocity","num","num2","num3","num4","num5","num6","num7","num8","Quat_exponentialDamp","out","Quat_quarticDamp","Quat_smoothDamp","Vec3_smoothDamp","Vector3_UNIT_X","Vector3_UNIT_Y","Vector3_UNIT_Z","Vector3_RIGHT","Vector3_UP","Vector3_ZERO","Vector3_ONE","Vector3_NEG_ONE","abs","acos","__delta","VInterpTo","speed","dist","sub","lengthSq","multiplyScalar","VInterpConstantTo","delta","deltaM","maxStep","deltaN","Quat_Equals","epsilon","z","w","Quat_AngularDistance","innerProd","QInterpTo","QInterpConstantTo","deltaSpeed","angularDist","FInterpTo","FInterpConstantTo","step","catmullRom","CurvePoint","p","mode","AnimationCurve","_getInterpolant","samples","_samples","_interpolant","LinearInterpolant","Float32Array","createCurvePoint","resample","interpolant","parameterPositions","sampleValues","point","getPoint","evaluate","needsUpdate","points","intPoint","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","noise","hash","h","degToRad","tan","PI2","ESP","FreelookVirtualCamera","lookAt","_lookAt","_targetLookAt","springLength","_spherical","radius","_targetSpringLength","theta","_targetTheta","phi","_targetPhi","_targetFov","onEnable","reset","onDisable","_button","_touchID","_preLoc0","_","__loc0","__panDelta","__rotateDelta","_calculateRotatelDelta","_calculateTargetSpringArm","_calculatePanDelta","_calculateTargetLookAt","_calculateDistanceScale","_preLoc1","__loc1","__preCenter","__center","distanceTo","scale","_tempRotateSmoothing","rotateSmoothing","forbidZ","loc0","loc1","rotateSpeed","clientHeight","forbidX","forbidY","panSpeed","forbidPanX","forbidPanY","panDelta","__xAxis","__yAxis","__posDelta","setFromMatrixColumn","matrix","forbitPanOffsetY","normalize","rotateDelta","thetaMin","thetaMax","phiMin","phiMax","distanceMin","distanceMax","gotoPOI","smoothing","_tempSmoothing","t1","t0","thetas","diffs","setFromSpherical","Spherical","__panTarget","__quat","dir","Box","Mesh","BoxGeometry","Sphere","SphereGeometry","Plane","PlaneGeometry","Reflector","textureWidth","textureHeight","clipBias","multisample","layer","normal","mipmap","reflectorPlane","reflectorNormal","reflectorWorldPosition","cameraWorldPosition","rotationMatrix","Matrix4","lookAtPosition","clipPlane","Vector4","view","q","textureMatrix","virtualCamera","PerspectiveCamera","layers","mask","renderTarget","WebGLRenderTarget","HalfFloatType","minFilter","LinearMipMapLinearFilter","LinearFilter","generateMipmaps","renderer","setFromMatrixPosition","matrixWorld","extractRotation","applyMatrix4","subVectors","dot","reflect","negate","up","updateMatrixWorld","projectionMatrix","matrixWorldInverse","setFromNormalAndCoplanarPoint","constant","sign","elements","visible","currentRenderTarget","getRenderTarget","currentActiveCubeFace","getActiveCubeFace","currentActiveMipmapLevel","getActiveMipmapLevel","currentXrEnabled","xr","currentShadowAutoUpdate","shadowMap","autoUpdate","setRenderTarget","buffers","depth","setMask","autoClear","render","viewport","getTextureMatrix","dispose","vert_fullscreen","frag_BoxfilterBlur","frag_panoramaToCubeMap","frag_cubeMapToPanorama","getShaderMaterial","uniforms","vertexShader","fragmentShader","onInit","ShaderMaterial","parameters","entries","reduce","acc","uniform","UniformsUtils","clone","vert_Reflector","frag_Reflector","ReflectorMaterial","onBeforeCompile","shader","channels","aoMap","channel","lightMap","roughnessMap","normalMap","defines","alpha","metalness","roughness","UV_AO","UV_LIGHTMAP","UV_ROUGHNESS","UV_NORMAL","color","Color","tReflect","aoMapIntensity","lightMapIntensity","Plugin","DebugPlugin","Instance","getPlugin","onRender","Scene","LOD_MIN","_flatCamera","OrthographicCamera","PHI","INV_PHI","_axisDirections","_Quality","LOW","MEDIUM","HIGH","ULTRA","_setViewport","scissor","_getCommonVertexShader","_getClearMaterial","intensity","blending","NoBlending","depthWrite","depthTest","_getCubeMapMaterial","envMap","lod","exposure","AdditiveBlending","_getMipCopyMaterial","lodMax","CUBEUV_TEXEL_WIDTH","CUBEUV_TEXEL_HEIGHT","CUBEUV_MAX_MIP","cubeUVMap","_getMipBlurMaterial","Caller","_pause","_target","_callback","lived","_repeatForever","_elapsed","_interval","trigger","_lastTime","Callers","callers","_callers","Scheduler","_callersArray","callersArray","j","Invoker","_targets","invoke","InvokerOneCall","ComponentScheduler","startInvoker","updateInvoker","lastUpdateInvoker","comp","OnEnableCalled","IsStartCalled","DependentMode","ComponentManager","_viewer","_scheduler","_componentScheduler","_componentsMap","components","destroyComponents","delete","child","activeComponents","_activeComponent","addComponent","root","func","component","_findComponent","_addDendencies","getComponentsInChidren","traverseComponents","dependentInfo","_dependenciesMap","dep","active","TaskManager","percent","_percent","_tasks","_taskIndex","task","excute","parepareWebGL","isSupportedBrowser","HTMLCanvasElement","webglOpts","stencil","antialias","premultipliedAlpha","preserveDrawingBuffer","powerPreference","failIfMajorPerformanceCaveat","WebGL2RenderingContext","gl","getContext","RENDER_TARGET_FLOAT_TYPE","DATA_FLOAT_TYPE","FloatType","err","WebGLRenderingContext","getExtension","getParameter","MAX_VERTEX_TEXTURE_IMAGE_UNITS","_floatPacking","UnsignedByteType","Orientation","ResourceManager","str","pop","dirname","lastIndexOf","substring","basename","ext","_splitTextureSettings","_texSettingKeys","_loaders","getLoader","addLoader","Loader","loadAsset","Promise","resolve","reject","sel","applyProps","writable","PluginManager","_plugins","plugin","uninstall","_pluginsMap","traversePlugins","ins","addPlugin","install","removePlugin","Viewer","_setDirectLightShadow","shadow","shadowCamera","_shadowCameraKeys","bias","mapSize","compileMaterial","fullscreenMesh","compile","compileObject3D","compileTexture","initTexture","Blit","face","RT","fullscreenCamera","createFullscreenTriangle","geometry","BufferGeometry","setAttribute","Float32BufferAttribute","findChild","parts","part","getChildByName","getObject","objects","_getObjectValue","__emtpyObject","getMaterial","getTexture","getMesh","_root","_time","_scene","_camera","_renderer","_canvas","_gl","_RENDER_TARGET_FLOAT_TYPE","_DATA_FLOAT_TYPE","dpr","_dpr","_width","_height","_viewport","_rootRotated","input","_input","targetFrameRate","_targetFrameRate","_instanceId","loadingManager","_loadingManager","resourceManager","_resourceManager","taskManager","_taskManager","_componentManager","_pluginManager","_tweenManager","_addDefaultLoaders","_frame","_lastFrameTime","loop","_fixedFrameTime","_autoResize","resize","_onRender","_onResize","setSize","_running","frameCallback","requestAnimationFrame","innerWidth","innerHeight","_orientation","LANDSCAPE","PORTRAIT","transform","transformOrigin","margin","isOrthographicCamera","zoom","factor","isPerspectiveCamera","manual","aspect","distance","getWorldPosition","__worldPos","__target","_defaultProps","traverseMaterials","item","addTask","addNode","rotation","shadowArgs","makeDefault","parent","isObject3D","Object3D","isDirectionalLight","removeNode","removeFromParent","activeNode","createRenderTarget","nearest","floatType","msaa","wrapS","ClampToEdgeWrapping","wrapT","magFilter","NearestFilter","anisotropy","LinearSRGBColorSpace","depthBuffer","stencilBuffer","createCubeRenderTarget","size","WebGLCubeRenderTarget","createDataTexture","data","DataTexture","RGBAFormat","UVMapping","portal","result","blit","every","isMaterial","meshData","isTexture","autoResize","shadows","fixedFrameTime","toneMapping","LinearToneMapping","toneMappingExposure","maxDPR","orientation","AUTO","tasker","el","getElementById","webgl","WebGLRenderer","context","setPixelRatio","outputColorSpace","PCFSoftShadowMap","autoReset","LoadingManager","MergeRefectPass","envMapTarget","_envMapTarget","_sourceTarget","_pmremGenerator","mergeReflect","_copyTexture","texture","envMapIntensity","_mergeReflect","_reflectMap","quality","_lodMeshes","_getPMREMExtension","pmremGenerator","PMREMGenerator","_fromTextureExtension","reflectMap","_fromTexture","_fromCubeTexture","_cubeMapMaterial","_copyTexMaterial","_copyMesh","_lodPlanes","_sourceInit","_setSize","image","_allocateTargets","targetOut","scissorTest","_clearTexture","sourceTarget","cubeMapMaterial","_blit","_pmremblur","lodIn","lodOut","sigma","_sigmas","poleAxis","_blur","_lodMax","outputSize","_sizeLods","_cubeSize","lodMesh","environment","mipGaussianBlendWeight","sigma2","c","numerator","denorminator","MAX_LOD","MergeMipBlurPass","mergeMipBlur","_setBlurIntensity","blurIntensity","targetIn","_applyMipBlur","_blurMinLod","_blurMaxLod","_sigma","_mipCopy","_blurIntensity","_mipBlurMaterial","_mipCopyMaterial","blurMinLod","blurMaxLod","pingPongRenderTarget","_pingPongRenderTarget","_mipBlur","EnvironmentPlugin","_debug","_debugNode","debugScene","MeshBasicMaterial","_reflectPass","_mipBlurPass","_renderFrame","manualFrame","oldTarget","oldActiveCubeFace","oldActiveMipmapLevel","_mergeInfo","reflectExposure","reflectBlurIntensity","_cubeCamera","resolution","cubeRenderTarget","CubeCamera","Quality","BoxProjectionPlugin","_helper","Box3Helper","Box3","_boxMin","_boxMax","center","_center","boxMin","boxMax","useBoxProjection","USE_BOX_PROJECTION","probePos","probeBoxMin","probeBoxMax","ShaderLib","physical","ShaderChunk","worldpos_vertex","envmap_physical_pars_fragment","PerformanceMonitorPlugin","subscribe","subscriber","subscriptions","Symbol","iterations","ms","threshold","_factor","flipflops","bounds","refreshrate","onIncline","onDecline","onChange","onFallback","fps","flipped","fallback","frames","averages","lastFactor","decimalPlacesRatio","msPassed","round","lower","upper","upperBounds","lowerBounds","DropFilePlugin","_onDrogOver","_onDrop","_loadItemList","items","getFilesFromItemList","files","filesMap","dirs","_loadFiles","createFilesMap","setURLModifier","URL","createObjectURL","_loadFile","filename","_extensions","some","reader","FileReader","total","progress","loaded","asset","_onLoad","then","readAsArrayBuffer","readAsDataURL","dataTransfer","dropEffect","types","onDone","itemsCount","itemsTotal","onEntryHandled","handleEntry","entry","isDirectory","createReader","readEntries","isFile","fullPath","kind","webkitGetAsEntry"],"mappings":"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","x_google_ignoreList":[20]}