@galacean/effects-plugin-orientation-transformer 2.0.0-alpha.12 → 2.0.0-alpha.13

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.8/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.8/node_modules/@swc/helpers/esm/_inherits.js","../src/composition-transformer-acceler.ts","../src/utils/object-type.ts","../src/utils/angle-limit.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.8/node_modules/@swc/helpers/esm/_extends.js","../src/utils/deep-merge.ts","../src/utils/device.ts","../src/utils/filtering.ts","../src/device-orientation.ts","../src/orientation-adapter-acceler.ts","../src/orientation-plugin-loader.ts","../src/orientation-component.ts","../src/transform-vfx-item.ts","../src/index.ts"],"sourcesContent":["export function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _set_prototype_of } from \"./_set_prototype_of.js\";\n\nexport function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","import type { Composition, spec } from '@galacean/effects';\nimport type { AccelerMotionData } from './orientation-adapter-acceler';\n\nexport class CompositionTransformerAcceler {\n private readonly targets: Record<string, spec.PluginGyroscopeTarget> = {};\n private readonly records: Record<string, { item: any, position: number[], current?: number[], rotation: number[] }> = {};\n private readonly currentPos: Record<string, number[]> = {};\n private readonly currentRot: Record<string, number[]> = {};\n private gammaRange: [x: number, y: number] = [-89, 89];\n private betaRange: [x: number, y: number] = [-89, 89];\n private currentEvent?: AccelerMotionData;\n\n constructor (\n private readonly composition: Composition,\n ) {\n }\n\n update ({ x, y, beta, gamma }: AccelerMotionData) {\n this.currentEvent = { x, y, beta, gamma };\n }\n\n updateOrientation () {\n const event = this.currentEvent;\n\n if (event) {\n Object.getOwnPropertyNames(this.targets).forEach(name => {\n this.moveLayer(name, event);\n });\n }\n }\n\n initComposition () {\n const items = this.composition.items;\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const target = this.targets[item.name];\n\n if (target) {\n const position = item.transform.position.toArray();\n const rotation = item.transform.rotation.toArray();\n\n const currentPosition = this.currentPos[item.name];\n const currentRot = this.currentRot[item.name];\n\n this.records[item.name] = {\n item,\n position,\n rotation,\n };\n if (currentPosition) {\n item.transform.setPosition(currentPosition[0], currentPosition[1], currentPosition[2]);\n }\n if (currentRot) {\n item.transform.setRotation(currentRot[0], currentRot[1], currentRot[2]);\n }\n\n }\n }\n }\n\n addTarget (target: spec.PluginGyroscopeTarget) {\n this.targets[target.name] = target;\n }\n\n removeTarget (name: string) {\n delete this.targets[name];\n delete this.records[name];\n }\n\n private moveLayer (name: string, { x, y, beta: b, gamma: g }: AccelerMotionData) {\n const layer = this.records[name]?.item;\n\n if (layer) {\n const initPosition = this.records[name].position;\n const initRotation = this.records[name].rotation;\n const target = this.targets[name];\n const beta = clamp(x, this.betaRange), gamma = clamp(y, this.gammaRange);\n\n if (target) {\n const position = [\n initPosition[0] + 1.2 * mapRange(normalize(beta, this.gammaRange[0], this.gammaRange[1]), target.xMin, target.xMax),\n initPosition[1] + 1.2 * mapRange(normalize(gamma, this.betaRange[0], this.betaRange[1]), target.yMin, target.yMax),\n initPosition[2],\n ];\n\n const br = normalize(clamp(g * 0.8, this.gammaRange), this.gammaRange[0], this.gammaRange[1]);\n const gr = normalize(clamp(b * 0.8, this.betaRange), this.betaRange[0], this.betaRange[1]);\n\n const rotation = [\n initRotation[0] + mapRange(gr, target.hMin, target.hMax),\n initRotation[1] + mapRange(br, target.vMin, target.vMax),\n initRotation[2],\n ];\n\n // console.log(y, initY, y - initY);\n\n layer.transform.setPosition(...position);\n layer.transform.setRotation(...rotation);\n this.currentPos[name] = position.slice();\n this.currentRot[name] = rotation.slice();\n }\n }\n }\n}\n\nfunction clamp (x: number, range: [x: number, y: number]) {\n if (x < range[0]) {\n return range[0];\n } else if (x > range[1]) {\n return range[1];\n }\n\n return x;\n}\n\nfunction mapRange (t: number, min: number, max: number): number {\n return min + (max - min) * t;\n}\n\nfunction normalize (a: number, min: number, max: number) {\n return (a - min) / (max - min);\n}\n","export function getObjectType (obj: any) {\n return Object.prototype.toString.call(obj);\n}\n","import { getObjectType } from './object-type';\n\nexport type AngleType = {\n alpha: number,\n beta: number,\n gamma: number,\n};\n\ntype RangeType = {\n alpha: number[],\n beta: number[],\n gamma: number[],\n};\n\n/**\n * 角度限制\n * @internal\n * @param angleObj 角度数值对象\n * @param validRange 角度限制值\n */\nexport function angleLimit (angleObj: AngleType, validRange: RangeType) {\n let flagAlpha = true;\n let flagBeta = true;\n let flagGamma = true;\n\n if (getObjectType(validRange.alpha) === '[object Array]' && validRange.alpha.length >= 2) {\n let referAlphaA = angleObj.alpha + validRange.alpha[0];\n let referAlphaB = angleObj.alpha + validRange.alpha[1];\n\n referAlphaA = referAlphaA < 0 ? referAlphaA + 360 : referAlphaA;\n referAlphaB = referAlphaB > 360 ? referAlphaB - 360 : referAlphaB;\n if (referAlphaA < referAlphaB) {\n flagAlpha = angleObj.alpha > referAlphaA && angleObj.alpha < referAlphaB;\n } else {\n flagAlpha = angleObj.alpha > referAlphaA || angleObj.alpha < referAlphaB;\n }\n }\n if (getObjectType(validRange.beta) === '[object Array]' && validRange.beta.length >= 2) {\n flagBeta = angleObj.beta >= validRange.beta[0] && angleObj.beta <= validRange.beta[1];\n }\n if (getObjectType(validRange.gamma) === '[object Array]' && validRange.gamma.length >= 2) {\n flagGamma = angleObj.gamma >= validRange.gamma[0] && angleObj.gamma <= validRange.gamma[1];\n }\n\n return flagAlpha && flagBeta && flagGamma;\n}\n","export function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","/* eslint-disable no-prototype-builtins */\nimport { isArray, isObject } from '@galacean/effects';\n\nexport function deepMerge (target: any, args?: any) {\n if (!isObject(target) && !isArray(target)) {\n return target;\n }\n const result = isArray(target) ? [...target] : { ...target };\n const length = arguments.length;\n\n for (let index = 1; index < length; index++) {\n const source = arguments[index] || {};\n\n if (isObject(source)) {\n let prop;\n\n for (prop in source) {\n if (source.hasOwnProperty(prop)) {\n if (isObject(result[prop]) && isObject(source[prop])) {\n result[prop] = deepMerge(result[prop], source[prop]);\n } else if (isObject(source[prop])) {\n result[prop] = deepMerge(source[prop]);\n } else if (isArray(source[prop])) {\n result[prop] = deepMerge(source[prop]);\n } else {\n result[prop] = source[prop];\n }\n }\n }\n for (prop in result) {\n if (\n isObject(result[prop]) &&\n result.hasOwnProperty(prop) &&\n !source.hasOwnProperty(prop)\n ) {\n result[prop] = deepMerge(result[prop]);\n }\n }\n }\n }\n if (length === 1) {\n for (const prop in result) {\n if (isObject(result[prop]) && result.hasOwnProperty(prop)) {\n result[prop] = deepMerge(result[prop]);\n }\n }\n }\n\n return result;\n}\n","export function isIOS () {\n const str = navigator.userAgent.toLowerCase();\n const ver = str.match(/cpu (iphone )?os (.*?) like mac os/);\n\n return ver ? parseInt(ver[2], 10) : 0;\n}\n","/**\n * 稳定区间\n */\nconst STABLE_RANGE = 3;\n/**\n * 每次增幅的最大值\n */\nconst MAX_CHANGE = 5;\n/**\n * 每次增幅的最小值\n */\nconst MIN_CHANGE = 1;\n/**\n * 数据缓存队列的长度\n */\nconst VALUE_POOL_LENGTH = 5;\n\n/**\n *\n */\ntype FilteringOptions = {\n /**\n * 稳定区间\n */\n stableRange?: number,\n /**\n * 最大变幅\n */\n maxChange?: number,\n};\n\n/**\n * 滤波方法\n */\nexport class Filtering {\n public lastValue = 0;\n private valuePool: number[] = [];\n\n constructor (\n private readonly options: FilteringOptions = {} as FilteringOptions,\n ) { }\n\n /**\n * 0deg 左右保持一定的稳定区间 STABLE_RANGE\n * - 小于 STABLE_RANGE 的算 0\n * - 大于 STABLE_RANGE 的减去 STABLE_RANGE\n * @param value - 输入值\n * @returns\n */\n stableFix (value: number) {\n const stableRange = this.options.stableRange || STABLE_RANGE;\n\n if (Math.abs(value) < stableRange) {\n return 0;\n }\n\n return value > stableRange ? value - stableRange : value + stableRange;\n }\n\n /**\n * 变幅限制\n * - 最大变化 MAX_CHANGE\n * - 最小变化 MIN_CHANGE\n * @param value\n * @returns\n */\n changeLimit (value: number) {\n const lastValue = this.lastValue;\n let result = value;\n\n if (Math.abs(value - lastValue) > MAX_CHANGE) {\n result = lastValue < value ? lastValue + MAX_CHANGE : lastValue - MAX_CHANGE;\n }\n if (Math.abs(value - lastValue) < MIN_CHANGE) {\n result = lastValue;\n }\n this.lastValue = result;\n\n return result;\n }\n\n linearRegressionMedian (value: number) {\n // 在队列中装载数据,达到队列阀值长度时开始计算\n this.valuePool.push(value);\n let result;\n\n if (this.valuePool.length >= VALUE_POOL_LENGTH) {\n result = getLinearRegressionFixedVal(this.valuePool);\n this.valuePool.shift();\n } else {\n result = this.lastValue;\n }\n\n return result;\n }\n}\n\n// 计算出线性回归参数\nfunction linearRegression (x: number[], y: number[]) {\n const result: Record<string, number> = {};\n const n = y.length;\n let sumX = 0;\n let sumY = 0;\n let sumXY = 0;\n let sumXX = 0;\n let sumYY = 0;\n\n for (let i = 0; i < y.length; i++) {\n sumX += x[i];\n sumY += y[i];\n sumXY += (x[i] * y[i]);\n sumXX += (x[i] * x[i]);\n sumYY += (y[i] * y[i]);\n }\n\n const avgX = sumX / n;\n const avgY = sumY / n;\n\n result['a'] = (sumXY - n * avgX * avgY) / (sumXX - n * avgX * avgX);\n result['b'] = avgY - result.a * avgX;\n result['miss'] = Math.pow((n * sumXY - sumX * sumY) / Math.sqrt((n * sumXX - sumX * sumX) * (n * sumYY - sumY * sumY)), 2);\n\n return result;\n}\n\n// 生成线性回归函数 F(x) = ax + b\nfunction createLinearRegressionFx (values: number[]) {\n const x: number[] = [];\n const y: number[] = [];\n\n values.forEach((item, index) => {\n x.push(index); // 数据是连续的,所以直接取数组下标为 x\n y.push(item);\n });\n const key = linearRegression(x, y);\n\n return (x: number) => {\n return key.a * x + key.b;\n };\n}\n\n// 获取线性回归后的中位数\nfunction getLinearRegressionFixedVal (valuePool: number[]) {\n const fx = createLinearRegressionFx(valuePool);\n\n // 这个迭代修正很重要\n valuePool = valuePool.map((item, index) => {\n return fx(index);\n });\n\n return fx(valuePool.length / 2);\n}\n","import { assertExist } from '@galacean/effects';\nimport { angleLimit, type AngleType } from './utils/angle-limit';\nimport { deepMerge } from './utils/deep-merge';\nimport { isIOS } from './utils/device';\nimport { Filtering } from './utils/filtering';\n\ndeclare global {\n interface Window {\n AlipayJSBridge: any,\n WindVane: any,\n }\n}\n\ntype JSBridgeParam = {\n x: number,\n y: number,\n z: number,\n};\n\ntype WindVaneParams = {\n x: number,\n y: number,\n z: number,\n};\n\nconst useJSBridge = isIOS() && typeof window.AlipayJSBridge !== 'undefined';\nconst useWindVane = typeof window.WindVane !== 'undefined';\n\nexport type DeviceOrientationOptions = {\n X?: boolean,\n Y?: boolean,\n /**\n * 监听时间片段(一秒30帧)\n */\n interval?: number,\n /**\n * 使用 requestAnimationFrame 对齐\n */\n useRequestAnimationFrame?: boolean,\n /**\n * bate 角度使用相对初始化的\n */\n relativeBeta?: boolean,\n /**\n * gamma 角度使用相对初始化的\n */\n relativeGamma?: boolean,\n /**\n * 限制 3d 角度范围\n */\n validRange: {\n /**\n * 相对范围\n */\n alpha: number[],\n /**\n * 上下翻转\n */\n beta: number[],\n /**\n * 左右翻转\n */\n gamma: number[],\n },\n /**\n * 稳定区间\n */\n stableRange: number,\n};\n\n// 默认参数\nconst defaultOptions = {\n X: true,\n Y: true,\n interval: Math.floor(1000 / 30),\n useRequestAnimationFrame: true,\n relativeBeta: false,\n relativeGamma: false,\n validRange: {\n alpha: [-60, 60],\n beta: [-60, 180],\n gamma: [-89, 89],\n },\n stableRange: 3,\n};\n\nexport class DeviceOrientation {\n private options: Required<DeviceOrientationOptions>;\n private lastX = 0;\n private lastY = 0;\n private prevAcceler = {\n x: 0,\n y: 0,\n z: 0,\n };\n private stoped = false;\n private readonly filterX: Filtering;\n private readonly filterY: Filtering;\n private watchListener?: (e: DeviceOrientationEvent | Event) => void;\n\n constructor (options = {}) {\n this.options = deepMerge(defaultOptions, options);\n\n const { stableRange } = this.options;\n\n this.filterX = new Filtering({ stableRange });\n this.filterY = new Filtering({ stableRange });\n }\n\n watch (callback: (x: number, y: number, data: AngleType) => void) {\n if (typeof callback !== 'function') {\n return;\n }\n // 目前只能绑定一个方法,此处可以扩展成一个方法队列\n if (this.watchListener) {\n return;\n }\n\n let timefragment = 0; // 时间片计时\n let nowts = 0; // 当前时间\n // 初始化角度,作为单独一个用户的空间旋转的参照\n let referGamma = NaN, referBeta = NaN, referAlpha = NaN;\n let alpha: number;\n let beta: number;\n let gamma: number;\n let isInValidDegRange;\n let x: number; // 最终输出的 x\n let y: number; // 最终输出的 y\n const handleWatch = (e: Pick<DeviceOrientationEvent, 'alpha' | 'beta' | 'gamma'>) => {\n if (this.stoped) {\n return;\n }\n alpha = e.alpha!; // 垂直于屏幕的轴 0 ~ 360\n beta = e.beta!; // 横向 X 轴 -180 ~ 180\n gamma = e.gamma!; // 纵向 Y 轴 -90 ~ 90\n\n isInValidDegRange = angleLimit.call(this, {\n alpha,\n beta,\n gamma,\n }, this.options.validRange);\n\n // 对 alpha beta gamma 初始化位置\n if (isNaN(referAlpha)) {\n referAlpha = alpha || 0;\n }\n if (isNaN(referGamma)) {\n referGamma = gamma;\n this.filterX.lastValue = gamma;\n }\n if (isNaN(referBeta)) {\n referBeta = beta;\n this.filterY.lastValue = beta;\n }\n if (isInValidDegRange) {\n // 最终结果值\n if (this.options.X) {\n x = this.options.relativeGamma ? gamma - referGamma : gamma;\n x = this.filterX.stableFix(x);\n x = this.filterX.changeLimit(x);\n x = this.filterX.linearRegressionMedian(+x);\n } else {\n x = 0;\n }\n if (this.options.Y) {\n y = this.options.relativeBeta ? beta - referBeta : beta;\n y = this.filterY.stableFix(y);\n y = this.filterY.changeLimit(y);\n y = this.filterY.linearRegressionMedian(+y);\n } else {\n y = 0;\n }\n\n if (this.isValid(x, y)) {\n if (this.options.useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n callback(x, y, { alpha, beta: y - referBeta, gamma:x - referGamma });\n });\n } else {\n callback(x, y, { alpha, beta: y - referBeta, gamma:x - referGamma });\n }\n this.lastX = x;\n this.lastY = y;\n }\n }\n };\n\n // 针对不同平台绑定不同事件\n this.stoped = false;\n if (useWindVane) {\n switchWindVane(true, this.options.interval);\n this.watchListener = (e: Event) => {\n if ('param' in e) {\n const { x, y, z } = e.param as WindVaneParams;\n\n // 即使手机没动,也会不停触发,所以这里加个判断,值相等则不调用回调\n if (x === this.prevAcceler.x && y === this.prevAcceler.y && z === this.prevAcceler.z) {\n return;\n }\n this.prevAcceler = { x, y, z };\n const evt = {\n alpha: +z * 180,\n beta: +y * -90,\n gamma: +x * 90,\n };\n\n handleWatch(evt);\n }\n };\n document.addEventListener('motion.gyro', this.watchListener, false);\n } else if (useJSBridge) {\n switchIOSEvent(true, this.options.interval / 1000);\n this.watchListener = (e: Event) => {\n if (e && 'data' in e) {\n /*\n data:\n {\n data: {\n x: 0.0, // gamma -1 ~ 1\n y: 0.0, // beta -1 ~ 1\n z: 0.0, // alpha\n }\n }\n */\n const { x, y, z } = e.data as JSBridgeParam;\n const evt = {\n alpha: z * 180,\n beta: y * -90,\n gamma: x * 90,\n };\n\n handleWatch(evt);\n }\n };\n document.addEventListener('accelerometerChange', this.watchListener, false);\n } else {\n this.watchListener = (e: DeviceOrientationEvent | Event) => {\n nowts = new Date().getTime();\n // 控制时间片\n if (nowts - timefragment >= this.options.interval) {\n timefragment = nowts;\n handleWatch(e as DeviceOrientationEvent);\n }\n };\n window.addEventListener('deviceorientation', this.watchListener, false);\n }\n }\n\n unWatch () {\n assertExist(this.watchListener);\n if (useWindVane) {\n switchWindVane(false);\n document.removeEventListener('motion.gyro', this.watchListener);\n } else if (useJSBridge) {\n switchIOSEvent(false);\n document.removeEventListener('accelerometerChange', this.watchListener);\n } else {\n window.removeEventListener('deviceorientation', this.watchListener);\n }\n this.stoped = true;\n this.watchListener = undefined;\n }\n\n pause () {\n this.stoped = true;\n if (useJSBridge) {\n switchIOSEvent(false);\n }\n }\n\n continue () {\n this.stoped = false;\n if (useJSBridge) {\n switchIOSEvent(true, this.options.interval / 1000);\n }\n }\n\n private isValid (x: number, y: number) {\n // 判断是否和上次的值一样,检测有没有变\n return this.lastX !== x || this.lastY !== y;\n }\n}\n\n// 开启/关闭 iOS 的陀螺仪监听\nfunction switchIOSEvent (open: boolean, interval?: number) {\n window.AlipayJSBridge.call(\n 'watchShake',\n {\n monitorGyroscope: false,\n monitorAccelerometer: !!open,\n interval: !open ? 10 : parseFloat(interval!.toFixed(3)),\n },\n () => { }\n );\n}\n\nfunction switchWindVane (open: boolean, interval?: number) {\n const params = {\n // 是开启还是关闭陀螺仪的监听\n on: open,\n // 陀螺仪事件的时间间隔\n frequency: interval,\n };\n\n window.WindVane.call('WVMotion', 'listenGyro', params, (e: Event) => {\n console.info('call WVMotion success');\n }, (e: Event) => {\n console.error('call WVMotion failed:' + JSON.stringify(e));\n });\n}\n","import type { CompositionTransformerAcceler } from './composition-transformer-acceler';\nimport { DeviceOrientation } from './device-orientation';\n\nexport type AccelerMotionData = {\n x: number,\n y: number,\n beta: number,\n gamma: number,\n};\n\n/**\n *\n */\nexport class OrientationAdapterAcceler {\n private transformers: CompositionTransformerAcceler[] = [];\n private connected = false;\n private accelerMotion: DeviceOrientation | null = null;\n private validRange = { // 限制 3d 角度范围\n alpha: [-60, 60], // 相对范围\n beta: [-80, 80], // 上下翻转\n gamma: [-89, 89], // 左右翻转\n };\n\n connect () {\n if (!this.connected) {\n this.accelerMotion = new DeviceOrientation({\n X: true, // 监听X(beta)轴\n Y: true, // 监听Y(gamma)轴\n interval: Math.floor(1000 / 60), // 监听时间片段(一秒30帧)\n useRequestAnimationFrame: true, // 使用 requestAnimationFrame 对齐\n relativeBeta: false, // bate 角度使用相对初始化的\n relativeGamma: false, // gamma 角度使用相对初始化的\n validRange: this.validRange,\n stableRange: 3, // 稳定区间\n });\n this.accelerMotion.watch((x, y, { beta, gamma }) => {\n const motion: AccelerMotionData = {\n x, y, beta, gamma,\n };\n\n this.dispatchMotion(motion);\n });\n }\n this.connected = true;\n }\n\n disconnect () {\n if (this.accelerMotion) {\n this.accelerMotion.unWatch();\n }\n this.connected = false;\n }\n\n /**\n *\n * @param motion\n */\n dispatchMotion (motion: AccelerMotionData) {\n this.transformers.forEach(t => t.update(motion));\n }\n\n addTransformer (transformer: CompositionTransformerAcceler) {\n if (!this.transformers.includes(transformer)) {\n this.transformers.push(transformer);\n }\n }\n\n removeTransformer (transformer: CompositionTransformerAcceler) {\n const index = this.transformers.indexOf(transformer);\n\n if (index > -1) {\n this.transformers.splice(index, 1);\n }\n\n return this.transformers.length === 0;\n }\n}\n\nlet adapter: OrientationAdapterAcceler;\n\nexport function getAccelerAdapter () {\n if (!adapter) {\n adapter = new OrientationAdapterAcceler();\n }\n\n return adapter;\n}\n","import type { Composition, Disposable } from '@galacean/effects';\nimport { AbstractPlugin } from '@galacean/effects';\nimport { CompositionTransformerAcceler } from './composition-transformer-acceler';\nimport type { OrientationAdapterAcceler } from './orientation-adapter-acceler';\nimport { getAccelerAdapter } from './orientation-adapter-acceler';\n\nexport class OrientationPluginLoader extends AbstractPlugin implements Disposable {\n override order = 90;\n\n private adapter: OrientationAdapterAcceler | null = null;\n\n override onCompositionConstructed () {\n this.adapter = getAdapter();\n this.adapter?.connect();\n this.bindAccelerDocumentEvent();\n }\n\n override onCompositionReset (composition: Composition): void {\n const transformer = composition.loaderData.deviceTransformer = new CompositionTransformerAcceler(composition);\n\n this.adapter?.addTransformer(transformer);\n }\n\n override onCompositionUpdate (composition: Composition) {\n const transformer = composition.loaderData.deviceTransformer as CompositionTransformerAcceler;\n\n if (transformer) {\n transformer.updateOrientation();\n }\n }\n\n override onCompositionDestroyed (composition: Composition): void {\n const empty = this.adapter?.removeTransformer(composition.loaderData.deviceTransformer);\n\n if (empty) {\n this.adapter?.disconnect();\n }\n }\n\n private handleConnect = () => {\n if (!closeManually) {\n this.adapter?.connect();\n }\n };\n\n private handleDisconnect = () => {\n this.adapter?.disconnect();\n };\n\n private bindAccelerDocumentEvent () {\n this.unbindAccelerDocumentEvent(); // 保证全局只监听一份\n document.addEventListener('resume', this.handleConnect, false);\n document.addEventListener('pause', this.handleDisconnect, false);\n document.addEventListener('back', this.handleDisconnect, false);\n }\n\n private unbindAccelerDocumentEvent () {\n document.removeEventListener('resume', this.handleConnect);\n document.removeEventListener('pause', this.handleDisconnect);\n document.removeEventListener('back', this.handleDisconnect);\n }\n\n dispose (): void {\n getAdapter().disconnect();\n this.unbindAccelerDocumentEvent();\n }\n}\n\n// 是否是手动关闭,如果是,那么 resume 时不要恢复\nlet closeManually = false;\n\n/**\n *\n * @returns\n */\nexport function getAdapter () {\n // 运动感应类型(默认使用加速度,Native 环境使用陀螺仪)\n return getAccelerAdapter();\n}\n\nexport function closeDeviceMotion () {\n closeManually = true;\n getAdapter().disconnect();\n}\n\nexport function openDeviceMotion () {\n closeManually = false;\n getAdapter().connect();\n}\n","import type { spec } from '@galacean/effects';\nimport { ItemBehaviour } from '@galacean/effects';\nimport type { CompositionTransformerAcceler } from './composition-transformer-acceler';\n\nexport class OrientationComponent extends ItemBehaviour {\n private targets: spec.PluginGyroscopeTarget[];\n\n override fromData (data: any) {\n super.fromData(data);\n\n const { targets } = data.content.options;\n\n if (targets) {\n this.targets = targets.map((t: any) => ({\n name: t.name,\n xMin: +t.xMin || 0,\n yMin: +t.yMin || 0,\n xMax: +t.xMax || 0,\n yMax: +t.yMax || 0,\n vMin: +t.vMin || 0,\n hMin: +t.hMin || 0,\n vMax: +t.vMax || 0,\n hMax: +t.hMax || 0,\n }));\n }\n\n }\n\n override start () {\n const transformer = this.item.composition?.loaderData.deviceTransformer as CompositionTransformerAcceler;\n\n if (transformer) {\n this.targets?.forEach(target => transformer.addTarget(target));\n transformer.initComposition();\n }\n }\n\n override update (dt: number) {\n const transformer = this.item.composition?.loaderData.deviceTransformer as CompositionTransformerAcceler;\n\n if (transformer) {\n transformer.updateOrientation();\n }\n }\n\n override onDestroy () {\n this.targets?.forEach(target => this.item.composition?.loaderData.deviceTransformer?.removeTarget(target.name));\n }\n}\n","import type { Engine, VFXItemProps } from '@galacean/effects';\nimport { VFXItem } from '@galacean/effects';\nimport { OrientationComponent } from './orientation-component';\n\nexport class TransformVFXItem extends VFXItem<OrientationComponent> {\n constructor (engine: Engine, props: VFXItemProps) {\n super(engine, props);\n\n const component = this.addComponent(OrientationComponent);\n\n component.fromData(props);\n }\n}\n","import { logger, registerPlugin } from '@galacean/effects';\nimport { OrientationPluginLoader } from './orientation-plugin-loader';\nimport { TransformVFXItem } from './transform-vfx-item';\n\ndeclare global {\n interface Window {\n ge: any,\n }\n}\n\nregisterPlugin('orientation-transformer', OrientationPluginLoader, TransformVFXItem);\n\nexport { getAdapter, closeDeviceMotion, openDeviceMotion } from './orientation-plugin-loader';\nexport { OrientationAdapterAcceler } from './orientation-adapter-acceler';\n\nexport const version = __VERSION__;\n\nlogger.info('plugin orientation transformer version: ' + version);\n"],"names":["_set_prototype_of","o","p","Object","setPrototypeOf","__proto__","_inherits","subClass","superClass","TypeError","prototype","create","constructor","value","writable","configurable","CompositionTransformerAcceler","composition","targets","records","currentPos","currentRot","gammaRange","betaRange","update","x","y","beta","gamma","currentEvent","updateOrientation","event","getOwnPropertyNames","forEach","name","moveLayer","initComposition","items","i","length","item","target","position","transform","toArray","rotation","currentPosition","setPosition","setRotation","addTarget","removeTarget","b","g","layer","initPosition","initRotation","clamp","mapRange","normalize","xMin","xMax","yMin","yMax","br","gr","hMin","hMax","vMin","vMax","slice","range","t","min","max","a","getObjectType","obj","toString","call","angleLimit","angleObj","validRange","flagAlpha","flagBeta","flagGamma","alpha","referAlphaA","referAlphaB","_extends","assign","arguments","source","key","hasOwnProperty","apply","deepMerge","args","isObject","isArray","result","index","prop","isIOS","str","navigator","userAgent","toLowerCase","ver","match","parseInt","STABLE_RANGE","MAX_CHANGE","MIN_CHANGE","VALUE_POOL_LENGTH","Filtering","options","lastValue","valuePool","stableFix","stableRange","Math","abs","changeLimit","linearRegressionMedian","push","getLinearRegressionFixedVal","shift","linearRegression","n","sumX","sumY","sumXY","sumXX","sumYY","avgX","avgY","pow","sqrt","createLinearRegressionFx","values","fx","map","useJSBridge","window","AlipayJSBridge","useWindVane","WindVane","defaultOptions","X","Y","interval","floor","useRequestAnimationFrame","relativeBeta","relativeGamma","DeviceOrientation","lastX","lastY","prevAcceler","z","stoped","filterX","filterY","watch","callback","watchListener","timefragment","nowts","referGamma","NaN","referBeta","isInValidDegRange","handleWatch","e","isNaN","isValid","requestAnimationFrame","switchWindVane","param","evt","document","addEventListener","switchIOSEvent","data","Date","getTime","unWatch","assertExist","removeEventListener","undefined","pause","continue","open","monitorGyroscope","monitorAccelerometer","parseFloat","toFixed","params","on","frequency","console","info","error","JSON","stringify","OrientationAdapterAcceler","transformers","connected","accelerMotion","connect","motion","dispatchMotion","disconnect","addTransformer","transformer","includes","removeTransformer","indexOf","splice","adapter","getAccelerAdapter","OrientationPluginLoader","order","handleConnect","closeManually","handleDisconnect","onCompositionConstructed","getAdapter","bindAccelerDocumentEvent","onCompositionReset","loaderData","deviceTransformer","onCompositionUpdate","onCompositionDestroyed","empty","unbindAccelerDocumentEvent","dispose","AbstractPlugin","closeDeviceMotion","openDeviceMotion","OrientationComponent","fromData","content","start","dt","onDestroy","ItemBehaviour","TransformVFXItem","engine","props","component","addComponent","VFXItem","registerPlugin","version","logger"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../node_modules/.pnpm/@swc+helpers@0.5.8/node_modules/@swc/helpers/esm/_set_prototype_of.js","../../../node_modules/.pnpm/@swc+helpers@0.5.8/node_modules/@swc/helpers/esm/_inherits.js","../src/composition-transformer-acceler.ts","../src/utils/object-type.ts","../src/utils/angle-limit.ts","../../../node_modules/.pnpm/@swc+helpers@0.5.8/node_modules/@swc/helpers/esm/_extends.js","../src/utils/deep-merge.ts","../src/utils/device.ts","../src/utils/filtering.ts","../src/device-orientation.ts","../src/orientation-adapter-acceler.ts","../src/orientation-plugin-loader.ts","../../../node_modules/.pnpm/tslib@2.6.2/node_modules/tslib/tslib.es6.mjs","../src/orientation-component.ts","../src/index.ts"],"sourcesContent":["export function _set_prototype_of(o, p) {\n _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {\n o.__proto__ = p;\n\n return o;\n };\n\n return _set_prototype_of(o, p);\n}\nexport { _set_prototype_of as _ };\n","import { _set_prototype_of } from \"./_set_prototype_of.js\";\n\nexport function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } });\n\n if (superClass) _set_prototype_of(subClass, superClass);\n}\nexport { _inherits as _ };\n","import type { Composition, spec } from '@galacean/effects';\nimport type { AccelerMotionData } from './orientation-adapter-acceler';\n\nexport class CompositionTransformerAcceler {\n private readonly targets: Record<string, spec.PluginGyroscopeTarget> = {};\n private readonly records: Record<string, { item: any, position: number[], current?: number[], rotation: number[] }> = {};\n private readonly currentPos: Record<string, number[]> = {};\n private readonly currentRot: Record<string, number[]> = {};\n private gammaRange: [x: number, y: number] = [-89, 89];\n private betaRange: [x: number, y: number] = [-89, 89];\n private currentEvent?: AccelerMotionData;\n\n constructor (\n private readonly composition: Composition,\n ) {\n }\n\n update ({ x, y, beta, gamma }: AccelerMotionData) {\n this.currentEvent = { x, y, beta, gamma };\n }\n\n updateOrientation () {\n const event = this.currentEvent;\n\n if (event) {\n Object.getOwnPropertyNames(this.targets).forEach(name => {\n this.moveLayer(name, event);\n });\n }\n }\n\n initComposition () {\n const items = this.composition.items;\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const target = this.targets[item.name];\n\n if (target) {\n const position = item.transform.position.toArray();\n const rotation = item.transform.rotation.toArray();\n\n const currentPosition = this.currentPos[item.name];\n const currentRot = this.currentRot[item.name];\n\n this.records[item.name] = {\n item,\n position,\n rotation,\n };\n if (currentPosition) {\n item.transform.setPosition(currentPosition[0], currentPosition[1], currentPosition[2]);\n }\n if (currentRot) {\n item.transform.setRotation(currentRot[0], currentRot[1], currentRot[2]);\n }\n\n }\n }\n }\n\n addTarget (target: spec.PluginGyroscopeTarget) {\n this.targets[target.name] = target;\n }\n\n removeTarget (name: string) {\n delete this.targets[name];\n delete this.records[name];\n }\n\n private moveLayer (name: string, { x, y, beta: b, gamma: g }: AccelerMotionData) {\n const layer = this.records[name]?.item;\n\n if (layer) {\n const initPosition = this.records[name].position;\n const initRotation = this.records[name].rotation;\n const target = this.targets[name];\n const beta = clamp(x, this.betaRange), gamma = clamp(y, this.gammaRange);\n\n if (target) {\n const position = [\n initPosition[0] + 1.2 * mapRange(normalize(beta, this.gammaRange[0], this.gammaRange[1]), target.xMin, target.xMax),\n initPosition[1] + 1.2 * mapRange(normalize(gamma, this.betaRange[0], this.betaRange[1]), target.yMin, target.yMax),\n initPosition[2],\n ];\n\n const br = normalize(clamp(g * 0.8, this.gammaRange), this.gammaRange[0], this.gammaRange[1]);\n const gr = normalize(clamp(b * 0.8, this.betaRange), this.betaRange[0], this.betaRange[1]);\n\n const rotation = [\n initRotation[0] + mapRange(gr, target.hMin, target.hMax),\n initRotation[1] + mapRange(br, target.vMin, target.vMax),\n initRotation[2],\n ];\n\n layer.transform.setPosition(...position);\n layer.transform.setRotation(...rotation);\n this.currentPos[name] = position.slice();\n this.currentRot[name] = rotation.slice();\n }\n }\n }\n}\n\nfunction clamp (x: number, range: [x: number, y: number]) {\n if (x < range[0]) {\n return range[0];\n } else if (x > range[1]) {\n return range[1];\n }\n\n return x;\n}\n\nfunction mapRange (t: number, min: number, max: number): number {\n return min + (max - min) * t;\n}\n\nfunction normalize (a: number, min: number, max: number) {\n return (a - min) / (max - min);\n}\n","export function getObjectType (obj: any) {\n return Object.prototype.toString.call(obj);\n}\n","import { getObjectType } from './object-type';\n\nexport type AngleType = {\n alpha: number,\n beta: number,\n gamma: number,\n};\n\ntype RangeType = {\n alpha: number[],\n beta: number[],\n gamma: number[],\n};\n\n/**\n * 角度限制\n * @internal\n * @param angleObj 角度数值对象\n * @param validRange 角度限制值\n */\nexport function angleLimit (angleObj: AngleType, validRange: RangeType) {\n let flagAlpha = true;\n let flagBeta = true;\n let flagGamma = true;\n\n if (getObjectType(validRange.alpha) === '[object Array]' && validRange.alpha.length >= 2) {\n let referAlphaA = angleObj.alpha + validRange.alpha[0];\n let referAlphaB = angleObj.alpha + validRange.alpha[1];\n\n referAlphaA = referAlphaA < 0 ? referAlphaA + 360 : referAlphaA;\n referAlphaB = referAlphaB > 360 ? referAlphaB - 360 : referAlphaB;\n if (referAlphaA < referAlphaB) {\n flagAlpha = angleObj.alpha > referAlphaA && angleObj.alpha < referAlphaB;\n } else {\n flagAlpha = angleObj.alpha > referAlphaA || angleObj.alpha < referAlphaB;\n }\n }\n if (getObjectType(validRange.beta) === '[object Array]' && validRange.beta.length >= 2) {\n flagBeta = angleObj.beta >= validRange.beta[0] && angleObj.beta <= validRange.beta[1];\n }\n if (getObjectType(validRange.gamma) === '[object Array]' && validRange.gamma.length >= 2) {\n flagGamma = angleObj.gamma >= validRange.gamma[0] && angleObj.gamma <= validRange.gamma[1];\n }\n\n return flagAlpha && flagBeta && flagGamma;\n}\n","export function _extends() {\n _extends = Object.assign || function assign(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\nexport { _extends as _ };\n","/* eslint-disable no-prototype-builtins */\nimport { isArray, isObject } from '@galacean/effects';\n\nexport function deepMerge (target: any, args?: any) {\n if (!isObject(target) && !isArray(target)) {\n return target;\n }\n const result = isArray(target) ? [...target] : { ...target };\n const length = arguments.length;\n\n for (let index = 1; index < length; index++) {\n const source = arguments[index] || {};\n\n if (isObject(source)) {\n let prop;\n\n for (prop in source) {\n if (source.hasOwnProperty(prop)) {\n if (isObject(result[prop]) && isObject(source[prop])) {\n result[prop] = deepMerge(result[prop], source[prop]);\n } else if (isObject(source[prop])) {\n result[prop] = deepMerge(source[prop]);\n } else if (isArray(source[prop])) {\n result[prop] = deepMerge(source[prop]);\n } else {\n result[prop] = source[prop];\n }\n }\n }\n for (prop in result) {\n if (\n isObject(result[prop]) &&\n result.hasOwnProperty(prop) &&\n !source.hasOwnProperty(prop)\n ) {\n result[prop] = deepMerge(result[prop]);\n }\n }\n }\n }\n if (length === 1) {\n for (const prop in result) {\n if (isObject(result[prop]) && result.hasOwnProperty(prop)) {\n result[prop] = deepMerge(result[prop]);\n }\n }\n }\n\n return result;\n}\n","export function isIOS () {\n const str = navigator.userAgent.toLowerCase();\n const ver = str.match(/cpu (iphone )?os (.*?) like mac os/);\n\n return ver ? parseInt(ver[2], 10) : 0;\n}\n\nexport function isMiniProgram () {\n return isAlipayMiniApp() || isWechatMiniApp();\n}\n\nexport function isAlipayMiniApp () {\n //@ts-expect-error\n return typeof my !== 'undefined' && my?.renderTarget === 'web';\n}\n\nexport function isWechatMiniApp () {\n //@ts-expect-error\n return window.__wxjs_environment === 'miniprogram';\n}\n","/**\n * 稳定区间\n */\nconst STABLE_RANGE = 3;\n/**\n * 每次增幅的最大值\n */\nconst MAX_CHANGE = 5;\n/**\n * 每次增幅的最小值\n */\nconst MIN_CHANGE = 1;\n/**\n * 数据缓存队列的长度\n */\nconst VALUE_POOL_LENGTH = 5;\n\n/**\n *\n */\ntype FilteringOptions = {\n /**\n * 稳定区间\n */\n stableRange?: number,\n /**\n * 最大变幅\n */\n maxChange?: number,\n};\n\n/**\n * 滤波方法\n */\nexport class Filtering {\n public lastValue = 0;\n private valuePool: number[] = [];\n\n constructor (\n private readonly options: FilteringOptions = {} as FilteringOptions,\n ) { }\n\n /**\n * 0deg 左右保持一定的稳定区间 STABLE_RANGE\n * - 小于 STABLE_RANGE 的算 0\n * - 大于 STABLE_RANGE 的减去 STABLE_RANGE\n * @param value - 输入值\n * @returns\n */\n stableFix (value: number) {\n const stableRange = this.options.stableRange || STABLE_RANGE;\n\n if (Math.abs(value) < stableRange) {\n return 0;\n }\n\n return value > stableRange ? value - stableRange : value + stableRange;\n }\n\n /**\n * 变幅限制\n * - 最大变化 MAX_CHANGE\n * - 最小变化 MIN_CHANGE\n * @param value\n * @returns\n */\n changeLimit (value: number) {\n const lastValue = this.lastValue;\n let result = value;\n\n if (Math.abs(value - lastValue) > MAX_CHANGE) {\n result = lastValue < value ? lastValue + MAX_CHANGE : lastValue - MAX_CHANGE;\n }\n if (Math.abs(value - lastValue) < MIN_CHANGE) {\n result = lastValue;\n }\n this.lastValue = result;\n\n return result;\n }\n\n linearRegressionMedian (value: number) {\n // 在队列中装载数据,达到队列阀值长度时开始计算\n this.valuePool.push(value);\n let result;\n\n if (this.valuePool.length >= VALUE_POOL_LENGTH) {\n result = getLinearRegressionFixedVal(this.valuePool);\n this.valuePool.shift();\n } else {\n result = this.lastValue;\n }\n\n return result;\n }\n}\n\n// 计算出线性回归参数\nfunction linearRegression (x: number[], y: number[]) {\n const result: Record<string, number> = {};\n const n = y.length;\n let sumX = 0;\n let sumY = 0;\n let sumXY = 0;\n let sumXX = 0;\n let sumYY = 0;\n\n for (let i = 0; i < y.length; i++) {\n sumX += x[i];\n sumY += y[i];\n sumXY += (x[i] * y[i]);\n sumXX += (x[i] * x[i]);\n sumYY += (y[i] * y[i]);\n }\n\n const avgX = sumX / n;\n const avgY = sumY / n;\n\n result['a'] = (sumXY - n * avgX * avgY) / (sumXX - n * avgX * avgX);\n result['b'] = avgY - result.a * avgX;\n result['miss'] = Math.pow((n * sumXY - sumX * sumY) / Math.sqrt((n * sumXX - sumX * sumX) * (n * sumYY - sumY * sumY)), 2);\n\n return result;\n}\n\n// 生成线性回归函数 F(x) = ax + b\nfunction createLinearRegressionFx (values: number[]) {\n const x: number[] = [];\n const y: number[] = [];\n\n values.forEach((item, index) => {\n x.push(index); // 数据是连续的,所以直接取数组下标为 x\n y.push(item);\n });\n const key = linearRegression(x, y);\n\n return (x: number) => {\n return key.a * x + key.b;\n };\n}\n\n// 获取线性回归后的中位数\nfunction getLinearRegressionFixedVal (valuePool: number[]) {\n const fx = createLinearRegressionFx(valuePool);\n\n // 这个迭代修正很重要\n valuePool = valuePool.map((item, index) => {\n return fx(index);\n });\n\n return fx(valuePool.length / 2);\n}\n","import { assertExist } from '@galacean/effects';\nimport { angleLimit, type AngleType } from './utils/angle-limit';\nimport { deepMerge } from './utils/deep-merge';\nimport { isIOS, isMiniProgram } from './utils/device';\nimport { Filtering } from './utils/filtering';\n\ndeclare global {\n interface Window {\n AlipayJSBridge: any,\n WindVane: any,\n }\n}\n\ntype JSBridgeParam = {\n x: number,\n y: number,\n z: number,\n};\n\ntype WindVaneParams = {\n x: number,\n y: number,\n z: number,\n};\n\nconst useJSBridge = isIOS() && typeof window.AlipayJSBridge !== 'undefined';\nconst useWindVane = typeof window.WindVane !== 'undefined';\n\nexport type DeviceOrientationOptions = {\n X?: boolean,\n Y?: boolean,\n /**\n * 监听时间片段(一秒30帧)\n */\n interval?: number,\n /**\n * 使用 requestAnimationFrame 对齐\n */\n useRequestAnimationFrame?: boolean,\n /**\n * bate 角度使用相对初始化的\n */\n relativeBeta?: boolean,\n /**\n * gamma 角度使用相对初始化的\n */\n relativeGamma?: boolean,\n /**\n * 限制 3d 角度范围\n */\n validRange: {\n /**\n * 相对范围\n */\n alpha: number[],\n /**\n * 上下翻转\n */\n beta: number[],\n /**\n * 左右翻转\n */\n gamma: number[],\n },\n /**\n * 稳定区间\n */\n stableRange: number,\n};\n\n// 默认参数\nconst defaultOptions = {\n X: true,\n Y: true,\n interval: Math.floor(1000 / 30),\n useRequestAnimationFrame: true,\n relativeBeta: false,\n relativeGamma: false,\n validRange: {\n alpha: [-60, 60],\n beta: [-60, 180],\n gamma: [-89, 89],\n },\n stableRange: 3,\n};\n\nexport class DeviceOrientation {\n private options: Required<DeviceOrientationOptions>;\n private lastX = 0;\n private lastY = 0;\n private prevAcceler = {\n x: 0,\n y: 0,\n z: 0,\n };\n private stoped = false;\n private readonly filterX: Filtering;\n private readonly filterY: Filtering;\n private watchListener?: (e: DeviceOrientationEvent | Event) => void;\n\n constructor (options = {}) {\n this.options = deepMerge(defaultOptions, options);\n\n const { stableRange } = this.options;\n\n this.filterX = new Filtering({ stableRange });\n this.filterY = new Filtering({ stableRange });\n }\n\n watch (callback: (x: number, y: number, data: AngleType) => void) {\n if (typeof callback !== 'function') {\n return;\n }\n // 目前只能绑定一个方法,此处可以扩展成一个方法队列\n if (this.watchListener) {\n return;\n }\n\n let timefragment = 0; // 时间片计时\n let nowts = 0; // 当前时间\n // 初始化角度,作为单独一个用户的空间旋转的参照\n let referGamma = NaN, referBeta = NaN, referAlpha = NaN;\n let alpha: number;\n let beta: number;\n let gamma: number;\n let isInValidDegRange;\n let x: number; // 最终输出的 x\n let y: number; // 最终输出的 y\n const handleWatch = (e: Pick<DeviceOrientationEvent, 'alpha' | 'beta' | 'gamma'>) => {\n if (this.stoped) {\n return;\n }\n alpha = e.alpha!; // 垂直于屏幕的轴 0 ~ 360\n beta = e.beta!; // 横向 X 轴 -180 ~ 180\n gamma = e.gamma!; // 纵向 Y 轴 -90 ~ 90\n\n isInValidDegRange = angleLimit.call(this, {\n alpha,\n beta,\n gamma,\n }, this.options.validRange);\n\n // 对 alpha beta gamma 初始化位置\n if (isNaN(referAlpha)) {\n referAlpha = alpha || 0;\n }\n if (isNaN(referGamma)) {\n referGamma = gamma;\n this.filterX.lastValue = gamma;\n }\n if (isNaN(referBeta)) {\n referBeta = beta;\n this.filterY.lastValue = beta;\n }\n if (isInValidDegRange) {\n // 最终结果值\n if (this.options.X) {\n x = this.options.relativeGamma ? gamma - referGamma : gamma;\n x = this.filterX.stableFix(x);\n x = this.filterX.changeLimit(x);\n x = this.filterX.linearRegressionMedian(+x);\n } else {\n x = 0;\n }\n if (this.options.Y) {\n y = this.options.relativeBeta ? beta - referBeta : beta;\n y = this.filterY.stableFix(y);\n y = this.filterY.changeLimit(y);\n y = this.filterY.linearRegressionMedian(+y);\n } else {\n y = 0;\n }\n\n if (this.isValid(x, y)) {\n if (this.options.useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n callback(x, y, { alpha, beta: y - referBeta, gamma:x - referGamma });\n });\n } else {\n callback(x, y, { alpha, beta: y - referBeta, gamma:x - referGamma });\n }\n this.lastX = x;\n this.lastY = y;\n }\n }\n };\n\n // 针对不同平台绑定不同事件\n this.stoped = false;\n if (useWindVane) {\n switchWindVane(true, this.options.interval);\n this.watchListener = (e: Event) => {\n if ('param' in e) {\n const { x, y, z } = e.param as WindVaneParams;\n\n // 即使手机没动,也会不停触发,所以这里加个判断,值相等则不调用回调\n if (x === this.prevAcceler.x && y === this.prevAcceler.y && z === this.prevAcceler.z) {\n return;\n }\n this.prevAcceler = { x, y, z };\n const evt = {\n alpha: +z * 180,\n beta: +y * -90,\n gamma: +x * 90,\n };\n\n handleWatch(evt);\n }\n };\n document.addEventListener('motion.gyro', this.watchListener, false);\n } else if (useJSBridge && !isMiniProgram()) {\n switchIOSEvent(true, this.options.interval / 1000);\n this.watchListener = (e: Event) => {\n if (e && 'data' in e) {\n /*\n data:\n {\n data: {\n x: 0.0, // gamma -1 ~ 1\n y: 0.0, // beta -1 ~ 1\n z: 0.0, // alpha\n }\n }\n */\n const { x, y, z } = e.data as JSBridgeParam;\n const evt = {\n alpha: z * 180,\n beta: y * -90,\n gamma: x * 90,\n };\n\n handleWatch(evt);\n }\n };\n document.addEventListener('accelerometerChange', this.watchListener, false);\n } else {\n this.watchListener = (e: DeviceOrientationEvent | Event) => {\n nowts = new Date().getTime();\n // 控制时间片\n if (nowts - timefragment >= this.options.interval) {\n timefragment = nowts;\n handleWatch(e as DeviceOrientationEvent);\n }\n };\n window.addEventListener('deviceorientation', this.watchListener, false);\n }\n }\n\n unWatch () {\n assertExist(this.watchListener);\n if (useWindVane) {\n switchWindVane(false);\n document.removeEventListener('motion.gyro', this.watchListener);\n } else if (useJSBridge) {\n switchIOSEvent(false);\n document.removeEventListener('accelerometerChange', this.watchListener);\n } else {\n window.removeEventListener('deviceorientation', this.watchListener);\n }\n this.stoped = true;\n this.watchListener = undefined;\n }\n\n pause () {\n this.stoped = true;\n if (useJSBridge) {\n switchIOSEvent(false);\n }\n }\n\n continue () {\n this.stoped = false;\n if (useJSBridge) {\n switchIOSEvent(true, this.options.interval / 1000);\n }\n }\n\n private isValid (x: number, y: number) {\n // 判断是否和上次的值一样,检测有没有变\n return this.lastX !== x || this.lastY !== y;\n }\n}\n\n// 开启/关闭 iOS 的陀螺仪监听\nfunction switchIOSEvent (open: boolean, interval?: number) {\n window.AlipayJSBridge.call(\n 'watchShake',\n {\n monitorGyroscope: false,\n monitorAccelerometer: !!open,\n interval: !open ? 10 : parseFloat(interval!.toFixed(3)),\n },\n () => { }\n );\n}\n\nfunction switchWindVane (open: boolean, interval?: number) {\n const params = {\n // 是开启还是关闭陀螺仪的监听\n on: open,\n // 陀螺仪事件的时间间隔\n frequency: interval,\n };\n\n window.WindVane.call('WVMotion', 'listenGyro', params, (e: Event) => {\n console.info('call WVMotion success');\n }, (e: Event) => {\n console.error('call WVMotion failed:' + JSON.stringify(e));\n });\n}\n","import type { CompositionTransformerAcceler } from './composition-transformer-acceler';\nimport { DeviceOrientation } from './device-orientation';\n\nexport type AccelerMotionData = {\n x: number,\n y: number,\n beta: number,\n gamma: number,\n};\n\n/**\n *\n */\nexport class OrientationAdapterAcceler {\n private transformers: CompositionTransformerAcceler[] = [];\n private connected = false;\n private accelerMotion: DeviceOrientation | null = null;\n private validRange = { // 限制 3d 角度范围\n alpha: [-60, 60], // 相对范围\n beta: [-80, 80], // 上下翻转\n gamma: [-89, 89], // 左右翻转\n };\n\n connect () {\n if (!this.connected) {\n this.accelerMotion = new DeviceOrientation({\n X: true, // 监听X(beta)轴\n Y: true, // 监听Y(gamma)轴\n interval: Math.floor(1000 / 60), // 监听时间片段(一秒30帧)\n useRequestAnimationFrame: true, // 使用 requestAnimationFrame 对齐\n relativeBeta: false, // bate 角度使用相对初始化的\n relativeGamma: false, // gamma 角度使用相对初始化的\n validRange: this.validRange,\n stableRange: 3, // 稳定区间\n });\n this.accelerMotion.watch((x, y, { beta, gamma }) => {\n const motion: AccelerMotionData = {\n x, y, beta, gamma,\n };\n\n this.dispatchMotion(motion);\n });\n }\n this.connected = true;\n }\n\n disconnect () {\n if (this.accelerMotion) {\n this.accelerMotion.unWatch();\n }\n this.connected = false;\n }\n\n /**\n *\n * @param motion\n */\n dispatchMotion (motion: AccelerMotionData) {\n this.transformers.forEach(t => t.update(motion));\n }\n\n addTransformer (transformer: CompositionTransformerAcceler) {\n if (!this.transformers.includes(transformer)) {\n this.transformers.push(transformer);\n }\n }\n\n removeTransformer (transformer: CompositionTransformerAcceler) {\n const index = this.transformers.indexOf(transformer);\n\n if (index > -1) {\n this.transformers.splice(index, 1);\n }\n\n return this.transformers.length === 0;\n }\n}\n\nlet adapter: OrientationAdapterAcceler;\n\nexport function getAccelerAdapter () {\n if (!adapter) {\n adapter = new OrientationAdapterAcceler();\n }\n\n return adapter;\n}\n","import type { Composition, Disposable } from '@galacean/effects';\nimport { AbstractPlugin } from '@galacean/effects';\nimport { CompositionTransformerAcceler } from './composition-transformer-acceler';\nimport type { OrientationAdapterAcceler } from './orientation-adapter-acceler';\nimport { getAccelerAdapter } from './orientation-adapter-acceler';\n\nexport class OrientationPluginLoader extends AbstractPlugin implements Disposable {\n override order = 90;\n\n private adapter: OrientationAdapterAcceler | null = null;\n\n override onCompositionConstructed () {\n this.adapter = getAdapter();\n this.adapter?.connect();\n this.bindAccelerDocumentEvent();\n }\n\n override onCompositionReset (composition: Composition): void {\n const transformer = composition.loaderData.deviceTransformer = new CompositionTransformerAcceler(composition);\n\n this.adapter?.addTransformer(transformer);\n }\n\n override onCompositionUpdate (composition: Composition) {\n const transformer = composition.loaderData.deviceTransformer as CompositionTransformerAcceler;\n\n if (transformer) {\n transformer.updateOrientation();\n }\n }\n\n override onCompositionDestroyed (composition: Composition): void {\n const empty = this.adapter?.removeTransformer(composition.loaderData.deviceTransformer);\n\n if (empty) {\n this.adapter?.disconnect();\n }\n }\n\n private handleConnect = () => {\n if (!closeManually) {\n this.adapter?.connect();\n }\n };\n\n private handleDisconnect = () => {\n this.adapter?.disconnect();\n };\n\n private bindAccelerDocumentEvent () {\n this.unbindAccelerDocumentEvent(); // 保证全局只监听一份\n document.addEventListener('resume', this.handleConnect, false);\n document.addEventListener('pause', this.handleDisconnect, false);\n document.addEventListener('back', this.handleDisconnect, false);\n }\n\n private unbindAccelerDocumentEvent () {\n document.removeEventListener('resume', this.handleConnect);\n document.removeEventListener('pause', this.handleDisconnect);\n document.removeEventListener('back', this.handleDisconnect);\n }\n\n dispose (): void {\n getAdapter().disconnect();\n this.unbindAccelerDocumentEvent();\n }\n}\n\n// 是否是手动关闭,如果是,那么 resume 时不要恢复\nlet closeManually = false;\n\n/**\n *\n * @returns\n */\nexport function getAdapter () {\n // 运动感应类型(默认使用加速度,Native 环境使用陀螺仪)\n return getAccelerAdapter();\n}\n\nexport function closeDeviceMotion () {\n closeManually = true;\n getAdapter().disconnect();\n}\n\nexport function openDeviceMotion () {\n closeManually = false;\n getAdapter().connect();\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","import type { spec } from '@galacean/effects';\nimport { ItemBehaviour, effectsClass } from '@galacean/effects';\nimport type { CompositionTransformerAcceler } from './composition-transformer-acceler';\n\n@effectsClass('OrientationComponent')\nexport class OrientationComponent extends ItemBehaviour {\n private targets: spec.PluginGyroscopeTarget[];\n\n override fromData (data: any) {\n super.fromData(data);\n\n const { targets } = data.options;\n\n if (targets) {\n this.targets = targets.map((t: any) => ({\n name: t.name,\n xMin: +t.xMin || 0,\n yMin: +t.yMin || 0,\n xMax: +t.xMax || 0,\n yMax: +t.yMax || 0,\n vMin: +t.vMin || 0,\n hMin: +t.hMin || 0,\n vMax: +t.vMax || 0,\n hMax: +t.hMax || 0,\n }));\n }\n\n }\n\n override start () {\n const transformer = this.item.composition?.loaderData.deviceTransformer as CompositionTransformerAcceler;\n\n if (transformer) {\n this.targets?.forEach(target => transformer.addTarget(target));\n transformer.initComposition();\n }\n }\n\n override update (dt: number) {\n const transformer = this.item.composition?.loaderData.deviceTransformer as CompositionTransformerAcceler;\n\n if (transformer) {\n transformer.updateOrientation();\n }\n }\n\n override onDestroy () {\n this.targets?.forEach(target => this.item.composition?.loaderData.deviceTransformer?.removeTarget(target.name));\n }\n}\n","import { VFXItem, logger, registerPlugin, version as playerVersion } from '@galacean/effects';\nimport { OrientationPluginLoader } from './orientation-plugin-loader';\n\ndeclare global {\n interface Window {\n ge: any,\n }\n}\n\nregisterPlugin('orientation-transformer', OrientationPluginLoader, VFXItem);\n\nexport { getAdapter, closeDeviceMotion, openDeviceMotion, OrientationPluginLoader } from './orientation-plugin-loader';\nexport { OrientationAdapterAcceler } from './orientation-adapter-acceler';\nexport * from './orientation-component';\n\nexport const version = __VERSION__;\n\nlogger.info('plugin orientation transformer version: ' + version);\n\nif (version !== playerVersion) {\n console.error(\n '注意:请统一 Orientation Transformer 插件与 Player 版本,不统一的版本混用会有不可预知的后果!',\n '\\nAttention: Please ensure the Orientation Transformer plugin is synchronized with the Player version. Mixing and matching incompatible versions may result in unpredictable consequences!'\n );\n}\n"],"names":["_set_prototype_of","o","p","Object","setPrototypeOf","__proto__","_inherits","subClass","superClass","TypeError","prototype","create","constructor","value","writable","configurable","CompositionTransformerAcceler","composition","targets","records","currentPos","currentRot","gammaRange","betaRange","update","x","y","beta","gamma","currentEvent","updateOrientation","event","getOwnPropertyNames","forEach","name","moveLayer","initComposition","items","i","length","item","target","position","transform","toArray","rotation","currentPosition","setPosition","setRotation","addTarget","removeTarget","b","g","layer","initPosition","initRotation","clamp","mapRange","normalize","xMin","xMax","yMin","yMax","br","gr","hMin","hMax","vMin","vMax","slice","range","t","min","max","a","getObjectType","obj","toString","call","angleLimit","angleObj","validRange","flagAlpha","flagBeta","flagGamma","alpha","referAlphaA","referAlphaB","_extends","assign","arguments","source","key","hasOwnProperty","apply","deepMerge","args","isObject","isArray","result","index","prop","isIOS","str","navigator","userAgent","toLowerCase","ver","match","parseInt","isMiniProgram","isAlipayMiniApp","isWechatMiniApp","my","renderTarget","window","__wxjs_environment","STABLE_RANGE","MAX_CHANGE","MIN_CHANGE","VALUE_POOL_LENGTH","Filtering","options","lastValue","valuePool","stableFix","stableRange","Math","abs","changeLimit","linearRegressionMedian","push","getLinearRegressionFixedVal","shift","linearRegression","n","sumX","sumY","sumXY","sumXX","sumYY","avgX","avgY","pow","sqrt","createLinearRegressionFx","values","fx","map","useJSBridge","AlipayJSBridge","useWindVane","WindVane","defaultOptions","X","Y","interval","floor","useRequestAnimationFrame","relativeBeta","relativeGamma","DeviceOrientation","lastX","lastY","prevAcceler","z","stoped","filterX","filterY","watch","callback","watchListener","timefragment","nowts","referGamma","NaN","referBeta","isInValidDegRange","handleWatch","e","isNaN","isValid","requestAnimationFrame","switchWindVane","param","evt","document","addEventListener","switchIOSEvent","data","Date","getTime","unWatch","assertExist","removeEventListener","undefined","pause","continue","open","monitorGyroscope","monitorAccelerometer","parseFloat","toFixed","params","on","frequency","console","info","error","JSON","stringify","OrientationAdapterAcceler","transformers","connected","accelerMotion","connect","motion","dispatchMotion","disconnect","addTransformer","transformer","includes","removeTransformer","indexOf","splice","adapter","getAccelerAdapter","OrientationPluginLoader","order","handleConnect","closeManually","handleDisconnect","onCompositionConstructed","getAdapter","bindAccelerDocumentEvent","onCompositionReset","loaderData","deviceTransformer","onCompositionUpdate","onCompositionDestroyed","empty","unbindAccelerDocumentEvent","dispose","AbstractPlugin","closeDeviceMotion","openDeviceMotion","__decorate","decorators","desc","c","r","getOwnPropertyDescriptor","d","Reflect","decorate","defineProperty","SuppressedError","suppressed","message","Error","OrientationComponent","fromData","start","dt","onDestroy","ItemBehaviour","effectsClass","registerPlugin","VFXItem","version","logger","playerVersion"],"mappings":"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"}
package/dist/index.min.js CHANGED
@@ -3,6 +3,6 @@
3
3
  * Description: Galacean Effects player orientation transformer plugin
4
4
  * Author: Ant Group CO., Ltd.
5
5
  * Contributors: 燃然,意绮
6
- * Version: v2.0.0-alpha.12
7
- */function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@galacean/effects")):"function"==typeof define&&define.amd?define(["exports","@galacean/effects"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).ge=t.ge||{},t.ge.orientationTransformerPlugin={}),t.ge)}(this,function(t,e){"use strict";function n(t,e){return(n=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function a(t,e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&n(t,e)}var i,r,o=function(){function t(t){this.composition=t,this.targets={},this.records={},this.currentPos={},this.currentRot={},this.gammaRange=[-89,89],this.betaRange=[-89,89]}var e=t.prototype;return e.update=function(t){var e=t.x,n=t.y,a=t.beta,i=t.gamma;this.currentEvent={x:e,y:n,beta:a,gamma:i}},e.updateOrientation=function(){var t=this,e=this.currentEvent;e&&Object.getOwnPropertyNames(this.targets).forEach(function(n){t.moveLayer(n,e)})},e.initComposition=function(){for(var t=this.composition.items,e=0;e<t.length;e++){var n=t[e];if(this.targets[n.name]){var a=n.transform.position.toArray(),i=n.transform.rotation.toArray(),r=this.currentPos[n.name],o=this.currentRot[n.name];this.records[n.name]={item:n,position:a,rotation:i},r&&n.transform.setPosition(r[0],r[1],r[2]),o&&n.transform.setRotation(o[0],o[1],o[2])}}},e.addTarget=function(t){this.targets[t.name]=t},e.removeTarget=function(t){delete this.targets[t],delete this.records[t]},e.moveLayer=function(t,e){var n=e.x,a=e.y,i=e.beta,r=e.gamma,o=null==(L=this.records[t])?void 0:L.item;if(o){var c=this.records[t].position,l=this.records[t].rotation,h=this.targets[t],u=s(n,this.betaRange),f=s(a,this.gammaRange);if(h){var m,d,p,v,g,b,y,M,w,x,R,A,L,O,E,D=[c[0]+1.2*(d=(u-(m=this.gammaRange[0]))/(this.gammaRange[1]-m),(p=h.xMin)+(h.xMax-p)*d),c[1]+1.2*(g=(f-(v=this.betaRange[0]))/(this.betaRange[1]-v),(b=h.yMin)+(h.yMax-b)*g),c[2]],P=(y=s(.8*r,this.gammaRange),(y-(M=this.gammaRange[0]))/(this.gammaRange[1]-M)),T=(w=s(.8*i,this.betaRange),(w-(x=this.betaRange[0]))/(this.betaRange[1]-x)),j=[l[0]+((R=h.hMin)+(h.hMax-R)*T),l[1]+((A=h.vMin)+(h.vMax-A)*P),l[2]];(O=o.transform).setPosition.apply(O,[].concat(D)),(E=o.transform).setRotation.apply(E,[].concat(j)),this.currentPos[t]=D.slice(),this.currentRot[t]=j.slice()}}},t}();function s(t,e){return t<e[0]?e[0]:t>e[1]?e[1]:t}function c(t){return Object.prototype.toString.call(t)}function l(t,e){var n=!0,a=!0,i=!0;if("[object Array]"===c(e.alpha)&&e.alpha.length>=2){var r=t.alpha+e.alpha[0],o=t.alpha+e.alpha[1];n=(r=r<0?r+360:r)<(o=o>360?o-360:o)?t.alpha>r&&t.alpha<o:t.alpha>r||t.alpha<o}return"[object Array]"===c(e.beta)&&e.beta.length>=2&&(a=t.beta>=e.beta[0]&&t.beta<=e.beta[1]),"[object Array]"===c(e.gamma)&&e.gamma.length>=2&&(i=t.gamma>=e.gamma[0]&&t.gamma<=e.gamma[1]),n&&a&&i}function h(){return(h=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(t[a]=n[a])}return t}).apply(this,arguments)}var u=function(){function t(t){void 0===t&&(t={}),this.options=t,this.lastValue=0,this.valuePool=[]}var e=t.prototype;return e.stableFix=function(t){var e=this.options.stableRange||3;return Math.abs(t)<e?0:t>e?t-e:t+e},e.changeLimit=function(t){var e=this.lastValue,n=t;return Math.abs(t-e)>5&&(n=e<t?e+5:e-5),1>Math.abs(t-e)&&(n=e),this.lastValue=n,n},e.linearRegressionMedian=function(t){var e,n,a;return this.valuePool.push(t),this.valuePool.length>=5?(a=function(t){var e=[],n=[];t.forEach(function(t,a){e.push(a),n.push(t)});var a=function(t,e){for(var n={},a=e.length,i=0,r=0,o=0,s=0,c=0,l=0;l<e.length;l++)i+=t[l],r+=e[l],o+=t[l]*e[l],s+=t[l]*t[l],c+=e[l]*e[l];var h=i/a,u=r/a;return n.a=(o-a*h*u)/(s-a*h*h),n.b=u-n.a*h,n.miss=Math.pow((a*o-i*r)/Math.sqrt((a*s-i*i)*(a*c-r*r)),2),n}(e,n);return function(t){return a.a*t+a.b}}(n=this.valuePool),n=n.map(function(t,e){return a(e)}),e=a(n.length/2),this.valuePool.shift()):e=this.lastValue,e},t}(),f=((i=navigator.userAgent.toLowerCase().match(/cpu (iphone )?os (.*?) like mac os/))?parseInt(i[2],10):0)&&void 0!==window.AlipayJSBridge,m=void 0!==window.WindVane,d={X:!0,Y:!0,interval:Math.floor(1e3/30),useRequestAnimationFrame:!0,relativeBeta:!1,relativeGamma:!1,validRange:{alpha:[-60,60],beta:[-60,180],gamma:[-89,89]},stableRange:3},p=function(){function t(t){void 0===t&&(t={}),this.lastX=0,this.lastY=0,this.prevAcceler={x:0,y:0,z:0},this.stoped=!1,this.options=function t(n,a){if(!e.isObject(n)&&!e.isArray(n))return n;for(var i=e.isArray(n)?[].concat(n):h({},n),r=arguments.length,o=1;o<r;o++){var s=arguments[o]||{};if(e.isObject(s)){var c=void 0;for(c in s)s.hasOwnProperty(c)&&(e.isObject(i[c])&&e.isObject(s[c])?i[c]=t(i[c],s[c]):e.isObject(s[c])?i[c]=t(s[c]):e.isArray(s[c])?i[c]=t(s[c]):i[c]=s[c]);for(c in i)e.isObject(i[c])&&i.hasOwnProperty(c)&&!s.hasOwnProperty(c)&&(i[c]=t(i[c]))}}if(1===r)for(var l in i)e.isObject(i[l])&&i.hasOwnProperty(l)&&(i[l]=t(i[l]));return i}(d,t);var n=this.options.stableRange;this.filterX=new u({stableRange:n}),this.filterY=new u({stableRange:n})}var n=t.prototype;return n.watch=function(t){var e,n,a,i,r,o,s=this;if("function"==typeof t&&!this.watchListener){var c=0,h=0,u=NaN,d=NaN,p=function(c){!s.stoped&&(e=c.alpha,n=c.beta,a=c.gamma,i=l.call(s,{alpha:e,beta:n,gamma:a},s.options.validRange),isNaN(u)&&(u=a,s.filterX.lastValue=a),isNaN(d)&&(d=n,s.filterY.lastValue=n),i&&(s.options.X?(r=s.options.relativeGamma?a-u:a,r=s.filterX.stableFix(r),r=s.filterX.changeLimit(r),r=s.filterX.linearRegressionMedian(+r)):r=0,s.options.Y?(o=s.options.relativeBeta?n-d:n,o=s.filterY.stableFix(o),o=s.filterY.changeLimit(o),o=s.filterY.linearRegressionMedian(+o)):o=0,s.isValid(r,o)&&(s.options.useRequestAnimationFrame?window.requestAnimationFrame(function(){t(r,o,{alpha:e,beta:o-d,gamma:r-u})}):t(r,o,{alpha:e,beta:o-d,gamma:r-u}),s.lastX=r,s.lastY=o)))};this.stoped=!1,m?(g(!0,this.options.interval),this.watchListener=function(t){if("param"in t){var e=t.param,n=e.x,a=e.y,i=e.z;(n!==s.prevAcceler.x||a!==s.prevAcceler.y||i!==s.prevAcceler.z)&&(s.prevAcceler={x:n,y:a,z:i},p({alpha:180*+i,beta:-90*+a,gamma:90*+n}))}},document.addEventListener("motion.gyro",this.watchListener,!1)):f?(v(!0,this.options.interval/1e3),this.watchListener=function(t){if(t&&"data"in t){var e=t.data,n=e.x,a=e.y;p({alpha:180*e.z,beta:-90*a,gamma:90*n})}},document.addEventListener("accelerometerChange",this.watchListener,!1)):(this.watchListener=function(t){(h=new Date().getTime())-c>=s.options.interval&&(c=h,p(t))},window.addEventListener("deviceorientation",this.watchListener,!1))}},n.unWatch=function(){e.assertExist(this.watchListener),m?(g(!1),document.removeEventListener("motion.gyro",this.watchListener)):f?(v(!1),document.removeEventListener("accelerometerChange",this.watchListener)):window.removeEventListener("deviceorientation",this.watchListener),this.stoped=!0,this.watchListener=void 0},n.pause=function(){this.stoped=!0,f&&v(!1)},n.continue=function(){this.stoped=!1,f&&v(!0,this.options.interval/1e3)},n.isValid=function(t,e){return this.lastX!==t||this.lastY!==e},t}();function v(t,e){window.AlipayJSBridge.call("watchShake",{monitorGyroscope:!1,monitorAccelerometer:!!t,interval:t?parseFloat(e.toFixed(3)):10},function(){})}function g(t,e){window.WindVane.call("WVMotion","listenGyro",{on:t,frequency:e},function(t){console.info("call WVMotion success")},function(t){console.error("call WVMotion failed:"+JSON.stringify(t))})}var b=function(){function t(){this.transformers=[],this.connected=!1,this.accelerMotion=null,this.validRange={alpha:[-60,60],beta:[-80,80],gamma:[-89,89]}}var e=t.prototype;return e.connect=function(){var t=this;this.connected||(this.accelerMotion=new p({X:!0,Y:!0,interval:Math.floor(1e3/60),useRequestAnimationFrame:!0,relativeBeta:!1,relativeGamma:!1,validRange:this.validRange,stableRange:3}),this.accelerMotion.watch(function(e,n,a){var i=a.beta,r=a.gamma;t.dispatchMotion({x:e,y:n,beta:i,gamma:r})})),this.connected=!0},e.disconnect=function(){this.accelerMotion&&this.accelerMotion.unWatch(),this.connected=!1},e.dispatchMotion=function(t){this.transformers.forEach(function(e){return e.update(t)})},e.addTransformer=function(t){this.transformers.includes(t)||this.transformers.push(t)},e.removeTransformer=function(t){var e=this.transformers.indexOf(t);return e>-1&&this.transformers.splice(e,1),0===this.transformers.length},t}(),y=function(t){function e(){var e;return e=t.apply(this,arguments)||this,e.order=90,e.adapter=null,e.handleConnect=function(){if(!M){var t;null==(t=e.adapter)||t.connect()}},e.handleDisconnect=function(){var t;null==(t=e.adapter)||t.disconnect()},e}a(e,t);var n=e.prototype;return n.onCompositionConstructed=function(){var t;this.adapter=w(),null==(t=this.adapter)||t.connect(),this.bindAccelerDocumentEvent()},n.onCompositionReset=function(t){var e,n=t.loaderData.deviceTransformer=new o(t);null==(e=this.adapter)||e.addTransformer(n)},n.onCompositionUpdate=function(t){var e=t.loaderData.deviceTransformer;e&&e.updateOrientation()},n.onCompositionDestroyed=function(t){var e,n;(null==(e=this.adapter)?void 0:e.removeTransformer(t.loaderData.deviceTransformer))&&(null==(n=this.adapter)||n.disconnect())},n.bindAccelerDocumentEvent=function(){this.unbindAccelerDocumentEvent(),document.addEventListener("resume",this.handleConnect,!1),document.addEventListener("pause",this.handleDisconnect,!1),document.addEventListener("back",this.handleDisconnect,!1)},n.unbindAccelerDocumentEvent=function(){document.removeEventListener("resume",this.handleConnect),document.removeEventListener("pause",this.handleDisconnect),document.removeEventListener("back",this.handleDisconnect)},n.dispose=function(){w().disconnect(),this.unbindAccelerDocumentEvent()},e}(e.AbstractPlugin),M=!1;function w(){return r||(r=new b),r}var x=function(t){function e(){return t.apply(this,arguments)}a(e,t);var n=e.prototype;return n.fromData=function(e){t.prototype.fromData.call(this,e);var n=e.content.options.targets;n&&(this.targets=n.map(function(t){return{name:t.name,xMin:+t.xMin||0,yMin:+t.yMin||0,xMax:+t.xMax||0,yMax:+t.yMax||0,vMin:+t.vMin||0,hMin:+t.hMin||0,vMax:+t.vMax||0,hMax:+t.hMax||0}}))},n.start=function(){var t,e,n=null==(t=this.item.composition)?void 0:t.loaderData.deviceTransformer;n&&(null==(e=this.targets)||e.forEach(function(t){return n.addTarget(t)}),n.initComposition())},n.update=function(t){var e,n=null==(e=this.item.composition)?void 0:e.loaderData.deviceTransformer;n&&n.updateOrientation()},n.onDestroy=function(){var t,e=this;null==(t=this.targets)||t.forEach(function(t){var n,a;return null==(a=e.item.composition)?void 0:null==(n=a.loaderData.deviceTransformer)?void 0:n.removeTarget(t.name)})},e}(e.ItemBehaviour),R=function(t){function e(e,n){var a;return(a=t.call(this,e,n)||this).addComponent(x).fromData(n),a}return a(e,t),e}(e.VFXItem);e.registerPlugin("orientation-transformer",y,R);var A="2.0.0-alpha.12";e.logger.info("plugin orientation transformer version: "+A),t.OrientationAdapterAcceler=b,t.closeDeviceMotion=function(){M=!0,w().disconnect()},t.getAdapter=w,t.openDeviceMotion=function(){M=!1,w().connect()},t.version=A,Object.defineProperty(t,"__esModule",{value:!0})});
6
+ * Version: v2.0.0-alpha.13
7
+ */function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@galacean/effects")):"function"==typeof define&&define.amd?define(["exports","@galacean/effects"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).ge=t.ge||{},t.ge.orientationTransformerPlugin={}),t.ge)}(this,function(t,e){"use strict";function n(t,e){return(n=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function a(t,e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&n(t,e)}var i,r,o=function(){function t(t){this.composition=t,this.targets={},this.records={},this.currentPos={},this.currentRot={},this.gammaRange=[-89,89],this.betaRange=[-89,89]}var e=t.prototype;return e.update=function(t){var e=t.x,n=t.y,a=t.beta,i=t.gamma;this.currentEvent={x:e,y:n,beta:a,gamma:i}},e.updateOrientation=function(){var t=this,e=this.currentEvent;e&&Object.getOwnPropertyNames(this.targets).forEach(function(n){t.moveLayer(n,e)})},e.initComposition=function(){for(var t=this.composition.items,e=0;e<t.length;e++){var n=t[e];if(this.targets[n.name]){var a=n.transform.position.toArray(),i=n.transform.rotation.toArray(),r=this.currentPos[n.name],o=this.currentRot[n.name];this.records[n.name]={item:n,position:a,rotation:i},r&&n.transform.setPosition(r[0],r[1],r[2]),o&&n.transform.setRotation(o[0],o[1],o[2])}}},e.addTarget=function(t){this.targets[t.name]=t},e.removeTarget=function(t){delete this.targets[t],delete this.records[t]},e.moveLayer=function(t,e){var n=e.x,a=e.y,i=e.beta,r=e.gamma,o=null==(A=this.records[t])?void 0:A.item;if(o){var c=this.records[t].position,l=this.records[t].rotation,u=this.targets[t],h=s(n,this.betaRange),f=s(a,this.gammaRange);if(u){var m,p,d,v,g,y,b,w,M,R,x,O,A,L,E,P=[c[0]+1.2*(p=(h-(m=this.gammaRange[0]))/(this.gammaRange[1]-m),(d=u.xMin)+(u.xMax-d)*p),c[1]+1.2*(g=(f-(v=this.betaRange[0]))/(this.betaRange[1]-v),(y=u.yMin)+(u.yMax-y)*g),c[2]],D=(b=s(.8*r,this.gammaRange),(b-(w=this.gammaRange[0]))/(this.gammaRange[1]-w)),j=(M=s(.8*i,this.betaRange),(M-(R=this.betaRange[0]))/(this.betaRange[1]-R)),T=[l[0]+((x=u.hMin)+(u.hMax-x)*j),l[1]+((O=u.vMin)+(u.vMax-O)*D),l[2]];(L=o.transform).setPosition.apply(L,[].concat(P)),(E=o.transform).setRotation.apply(E,[].concat(T)),this.currentPos[t]=P.slice(),this.currentRot[t]=T.slice()}}},t}();function s(t,e){return t<e[0]?e[0]:t>e[1]?e[1]:t}function c(t){return Object.prototype.toString.call(t)}function l(t,e){var n=!0,a=!0,i=!0;if("[object Array]"===c(e.alpha)&&e.alpha.length>=2){var r=t.alpha+e.alpha[0],o=t.alpha+e.alpha[1];n=(r=r<0?r+360:r)<(o=o>360?o-360:o)?t.alpha>r&&t.alpha<o:t.alpha>r||t.alpha<o}return"[object Array]"===c(e.beta)&&e.beta.length>=2&&(a=t.beta>=e.beta[0]&&t.beta<=e.beta[1]),"[object Array]"===c(e.gamma)&&e.gamma.length>=2&&(i=t.gamma>=e.gamma[0]&&t.gamma<=e.gamma[1]),n&&a&&i}function u(){return(u=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(t[a]=n[a])}return t}).apply(this,arguments)}var h=function(){function t(t){void 0===t&&(t={}),this.options=t,this.lastValue=0,this.valuePool=[]}var e=t.prototype;return e.stableFix=function(t){var e=this.options.stableRange||3;return Math.abs(t)<e?0:t>e?t-e:t+e},e.changeLimit=function(t){var e=this.lastValue,n=t;return Math.abs(t-e)>5&&(n=e<t?e+5:e-5),1>Math.abs(t-e)&&(n=e),this.lastValue=n,n},e.linearRegressionMedian=function(t){var e,n,a;return this.valuePool.push(t),this.valuePool.length>=5?(a=function(t){var e=[],n=[];t.forEach(function(t,a){e.push(a),n.push(t)});var a=function(t,e){for(var n={},a=e.length,i=0,r=0,o=0,s=0,c=0,l=0;l<e.length;l++)i+=t[l],r+=e[l],o+=t[l]*e[l],s+=t[l]*t[l],c+=e[l]*e[l];var u=i/a,h=r/a;return n.a=(o-a*u*h)/(s-a*u*u),n.b=h-n.a*u,n.miss=Math.pow((a*o-i*r)/Math.sqrt((a*s-i*i)*(a*c-r*r)),2),n}(e,n);return function(t){return a.a*t+a.b}}(n=this.valuePool),n=n.map(function(t,e){return a(e)}),e=a(n.length/2),this.valuePool.shift()):e=this.lastValue,e},t}(),f=((i=navigator.userAgent.toLowerCase().match(/cpu (iphone )?os (.*?) like mac os/))?parseInt(i[2],10):0)&&void 0!==window.AlipayJSBridge,m=void 0!==window.WindVane,p={X:!0,Y:!0,interval:Math.floor(1e3/30),useRequestAnimationFrame:!0,relativeBeta:!1,relativeGamma:!1,validRange:{alpha:[-60,60],beta:[-60,180],gamma:[-89,89]},stableRange:3},d=function(){function t(t){void 0===t&&(t={}),this.lastX=0,this.lastY=0,this.prevAcceler={x:0,y:0,z:0},this.stoped=!1,this.options=function t(n,a){if(!e.isObject(n)&&!e.isArray(n))return n;for(var i=e.isArray(n)?[].concat(n):u({},n),r=arguments.length,o=1;o<r;o++){var s=arguments[o]||{};if(e.isObject(s)){var c=void 0;for(c in s)s.hasOwnProperty(c)&&(e.isObject(i[c])&&e.isObject(s[c])?i[c]=t(i[c],s[c]):e.isObject(s[c])?i[c]=t(s[c]):e.isArray(s[c])?i[c]=t(s[c]):i[c]=s[c]);for(c in i)e.isObject(i[c])&&i.hasOwnProperty(c)&&!s.hasOwnProperty(c)&&(i[c]=t(i[c]))}}if(1===r)for(var l in i)e.isObject(i[l])&&i.hasOwnProperty(l)&&(i[l]=t(i[l]));return i}(p,t);var n=this.options.stableRange;this.filterX=new h({stableRange:n}),this.filterY=new h({stableRange:n})}var n=t.prototype;return n.watch=function(t){var e,n,a,i,r,o,s=this;if("function"==typeof t&&!this.watchListener){var c,u=0,h=0,p=NaN,d=NaN,y=function(c){!s.stoped&&(e=c.alpha,n=c.beta,a=c.gamma,i=l.call(s,{alpha:e,beta:n,gamma:a},s.options.validRange),isNaN(p)&&(p=a,s.filterX.lastValue=a),isNaN(d)&&(d=n,s.filterY.lastValue=n),i&&(s.options.X?(r=s.options.relativeGamma?a-p:a,r=s.filterX.stableFix(r),r=s.filterX.changeLimit(r),r=s.filterX.linearRegressionMedian(+r)):r=0,s.options.Y?(o=s.options.relativeBeta?n-d:n,o=s.filterY.stableFix(o),o=s.filterY.changeLimit(o),o=s.filterY.linearRegressionMedian(+o)):o=0,s.isValid(r,o)&&(s.options.useRequestAnimationFrame?window.requestAnimationFrame(function(){t(r,o,{alpha:e,beta:o-d,gamma:r-p})}):t(r,o,{alpha:e,beta:o-d,gamma:r-p}),s.lastX=r,s.lastY=o)))};this.stoped=!1,m?(g(!0,this.options.interval),this.watchListener=function(t){if("param"in t){var e=t.param,n=e.x,a=e.y,i=e.z;(n!==s.prevAcceler.x||a!==s.prevAcceler.y||i!==s.prevAcceler.z)&&(s.prevAcceler={x:n,y:a,z:i},y({alpha:180*+i,beta:-90*+a,gamma:90*+n}))}},document.addEventListener("motion.gyro",this.watchListener,!1)):f&&!("undefined"!=typeof my&&(null==(c=my)?void 0:c.renderTarget)==="web"||"miniprogram"===window.__wxjs_environment)?(v(!0,this.options.interval/1e3),this.watchListener=function(t){if(t&&"data"in t){var e=t.data,n=e.x,a=e.y;y({alpha:180*e.z,beta:-90*a,gamma:90*n})}},document.addEventListener("accelerometerChange",this.watchListener,!1)):(this.watchListener=function(t){(h=new Date().getTime())-u>=s.options.interval&&(u=h,y(t))},window.addEventListener("deviceorientation",this.watchListener,!1))}},n.unWatch=function(){e.assertExist(this.watchListener),m?(g(!1),document.removeEventListener("motion.gyro",this.watchListener)):f?(v(!1),document.removeEventListener("accelerometerChange",this.watchListener)):window.removeEventListener("deviceorientation",this.watchListener),this.stoped=!0,this.watchListener=void 0},n.pause=function(){this.stoped=!0,f&&v(!1)},n.continue=function(){this.stoped=!1,f&&v(!0,this.options.interval/1e3)},n.isValid=function(t,e){return this.lastX!==t||this.lastY!==e},t}();function v(t,e){window.AlipayJSBridge.call("watchShake",{monitorGyroscope:!1,monitorAccelerometer:!!t,interval:t?parseFloat(e.toFixed(3)):10},function(){})}function g(t,e){window.WindVane.call("WVMotion","listenGyro",{on:t,frequency:e},function(t){console.info("call WVMotion success")},function(t){console.error("call WVMotion failed:"+JSON.stringify(t))})}var y=function(){function t(){this.transformers=[],this.connected=!1,this.accelerMotion=null,this.validRange={alpha:[-60,60],beta:[-80,80],gamma:[-89,89]}}var e=t.prototype;return e.connect=function(){var t=this;this.connected||(this.accelerMotion=new d({X:!0,Y:!0,interval:Math.floor(1e3/60),useRequestAnimationFrame:!0,relativeBeta:!1,relativeGamma:!1,validRange:this.validRange,stableRange:3}),this.accelerMotion.watch(function(e,n,a){var i=a.beta,r=a.gamma;t.dispatchMotion({x:e,y:n,beta:i,gamma:r})})),this.connected=!0},e.disconnect=function(){this.accelerMotion&&this.accelerMotion.unWatch(),this.connected=!1},e.dispatchMotion=function(t){this.transformers.forEach(function(e){return e.update(t)})},e.addTransformer=function(t){this.transformers.includes(t)||this.transformers.push(t)},e.removeTransformer=function(t){var e=this.transformers.indexOf(t);return e>-1&&this.transformers.splice(e,1),0===this.transformers.length},t}(),b=function(t){function e(){var e;return e=t.apply(this,arguments)||this,e.order=90,e.adapter=null,e.handleConnect=function(){if(!w){var t;null==(t=e.adapter)||t.connect()}},e.handleDisconnect=function(){var t;null==(t=e.adapter)||t.disconnect()},e}a(e,t);var n=e.prototype;return n.onCompositionConstructed=function(){var t;this.adapter=M(),null==(t=this.adapter)||t.connect(),this.bindAccelerDocumentEvent()},n.onCompositionReset=function(t){var e,n=t.loaderData.deviceTransformer=new o(t);null==(e=this.adapter)||e.addTransformer(n)},n.onCompositionUpdate=function(t){var e=t.loaderData.deviceTransformer;e&&e.updateOrientation()},n.onCompositionDestroyed=function(t){var e,n;(null==(e=this.adapter)?void 0:e.removeTransformer(t.loaderData.deviceTransformer))&&(null==(n=this.adapter)||n.disconnect())},n.bindAccelerDocumentEvent=function(){this.unbindAccelerDocumentEvent(),document.addEventListener("resume",this.handleConnect,!1),document.addEventListener("pause",this.handleDisconnect,!1),document.addEventListener("back",this.handleDisconnect,!1)},n.unbindAccelerDocumentEvent=function(){document.removeEventListener("resume",this.handleConnect),document.removeEventListener("pause",this.handleDisconnect),document.removeEventListener("back",this.handleDisconnect)},n.dispose=function(){M().disconnect(),this.unbindAccelerDocumentEvent()},e}(e.AbstractPlugin),w=!1;function M(){return r||(r=new y),r}"function"==typeof SuppressedError&&SuppressedError,t.OrientationComponent=function(t){function e(){return t.apply(this,arguments)}a(e,t);var n=e.prototype;return n.fromData=function(e){t.prototype.fromData.call(this,e);var n=e.options.targets;n&&(this.targets=n.map(function(t){return{name:t.name,xMin:+t.xMin||0,yMin:+t.yMin||0,xMax:+t.xMax||0,yMax:+t.yMax||0,vMin:+t.vMin||0,hMin:+t.hMin||0,vMax:+t.vMax||0,hMax:+t.hMax||0}}))},n.start=function(){var t,e,n=null==(t=this.item.composition)?void 0:t.loaderData.deviceTransformer;n&&(null==(e=this.targets)||e.forEach(function(t){return n.addTarget(t)}),n.initComposition())},n.update=function(t){var e,n=null==(e=this.item.composition)?void 0:e.loaderData.deviceTransformer;n&&n.updateOrientation()},n.onDestroy=function(){var t,e=this;null==(t=this.targets)||t.forEach(function(t){var n,a;return null==(a=e.item.composition)?void 0:null==(n=a.loaderData.deviceTransformer)?void 0:n.removeTarget(t.name)})},e}(e.ItemBehaviour),t.OrientationComponent=function(t,e,n,a){var i,r=arguments.length,o=r<3?e:null===a?a=Object.getOwnPropertyDescriptor(e,n):a;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(t,e,n,a);else for(var s=t.length-1;s>=0;s--)(i=t[s])&&(o=(r<3?i(o):r>3?i(e,n,o):i(e,n))||o);return r>3&&o&&Object.defineProperty(e,n,o),o}([e.effectsClass("OrientationComponent")],t.OrientationComponent),e.registerPlugin("orientation-transformer",b,e.VFXItem);var R="2.0.0-alpha.13";e.logger.info("plugin orientation transformer version: "+R),R!==e.version&&console.error("注意:请统一 Orientation Transformer 插件与 Player 版本,不统一的版本混用会有不可预知的后果!","\nAttention: Please ensure the Orientation Transformer plugin is synchronized with the Player version. Mixing and matching incompatible versions may result in unpredictable consequences!"),t.OrientationAdapterAcceler=y,t.OrientationPluginLoader=b,t.closeDeviceMotion=function(){w=!0,M().disconnect()},t.getAdapter=M,t.openDeviceMotion=function(){w=!1,M().connect()},t.version=R,Object.defineProperty(t,"__esModule",{value:!0})});
8
8
  //# sourceMappingURL=index.min.js.map