@galacean/effects-plugin-orientation-transformer 2.0.0-alpha.8 → 2.0.0-beta.0
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/alipay.js +805 -0
- package/dist/alipay.js.map +1 -0
- package/dist/alipay.mjs +777 -0
- package/dist/alipay.mjs.map +1 -0
- package/dist/composition-transformer-acceler.d.ts +2 -6
- package/dist/device-orientation.d.ts +2 -8
- package/dist/index.d.ts +2 -1
- package/dist/index.js +156 -175
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +2 -2
- package/dist/index.min.js.map +1 -1
- package/dist/index.mjs +135 -174
- package/dist/index.mjs.map +1 -1
- package/dist/orientation-adapter-acceler.d.ts +2 -0
- package/dist/orientation-component.d.ts +2 -2
- package/dist/utils/filtering.d.ts +1 -1
- package/package.json +16 -4
- package/dist/transform-vfx-item.d.ts +0 -10
- package/dist/utils/deep-merge.d.ts +0 -1
- package/dist/utils/device.d.ts +0 -1
- package/dist/utils/object-type.d.ts +0 -1
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/orientation-component.ts","../src/transform-vfx-item.ts","../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/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 { 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\n/**\n * 水平旋转变化起始角(手机处于改角度时无变化)\n */\nexport const VERTICAL_INIT_DEGREE = 45;\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 type { Composition, spec } from '@galacean/effects';\nimport { VERTICAL_INIT_DEGREE } from './transform-vfx-item';\n\ntype EventType = {\n x: number,\n y: number,\n};\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?: EventType;\n\n constructor (\n private readonly composition: Composition,\n ) {\n }\n\n update ({ x, y }: EventType) {\n this.currentEvent = { x, y };\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 }: EventType) {\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((beta - this.gammaRange[0]) / (this.gammaRange[1] - this.gammaRange[0]), target.xMin, target.xMax),\n initPosition[1] + 1.2 * mapRange((gamma - this.betaRange[0]) / (this.betaRange[1] - this.betaRange[0]), target.yMin, target.yMax),\n initPosition[2],\n ];\n\n const br = (clamp(x * 2, this.betaRange) - this.betaRange[0]) / (this.betaRange[1] - this.betaRange[0]);\n const gr = (clamp(y * 2 - VERTICAL_INIT_DEGREE, this.gammaRange) - this.gammaRange[0]) / (this.gammaRange[1] - this.gammaRange[0]);\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","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 private 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 let referGamma = 0; // 初始化角度,作为单独一个用户的空间旋转的参照\n let referBeta = 0;\n let referAlpha = 0;\n let alpha: number;\n let beta: number;\n let gamma: number;\n let gammaFixed;\n let betaFixed;\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 // 对 alpha beta gamma 初始化位置\n if (!referAlpha) {\n referAlpha = alpha || 0;\n }\n if (!referBeta) {\n referBeta = beta || 0;\n }\n if (!referGamma) {\n referGamma = gamma || 0;\n }\n //\n isInValidDegRange = angleLimit.call(this, {\n alpha,\n beta,\n gamma,\n }, this.options.validRange);\n if (isInValidDegRange) {\n // 最终结果值\n if (this.options.X) {\n gammaFixed = gamma - referGamma;\n x = this.options.relativeGamma ? gammaFixed : 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 // beta 相对 referBeta 的角度\n betaFixed = beta - referBeta;\n y = this.options.relativeBeta ? betaFixed : 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 if (this.isValid(x, y)) {\n if (this.options.useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n callback(x, y, { alpha, beta, gamma });\n });\n } else {\n callback(x, y, { alpha, beta, gamma });\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};\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) => {\n const motion: AccelerMotionData = {\n x, y,\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 { 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","OrientationComponent","fromData","data","content","options","targets","map","t","name","xMin","yMin","xMax","yMax","vMin","hMin","vMax","hMax","start","transformer","item","composition","loaderData","deviceTransformer","forEach","target","addTarget","initComposition","update","dt","updateOrientation","onDestroy","removeTarget","ItemBehaviour","VERTICAL_INIT_DEGREE","TransformVFXItem","engine","props","component","addComponent","VFXItem","CompositionTransformerAcceler","records","currentPos","currentRot","gammaRange","betaRange","x","y","currentEvent","event","getOwnPropertyNames","moveLayer","items","i","length","position","transform","toArray","rotation","currentPosition","setPosition","setRotation","layer","initPosition","initRotation","beta","clamp","gamma","mapRange","br","gr","slice","range","min","max","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","lastValue","valuePool","stableFix","stableRange","Math","abs","changeLimit","linearRegressionMedian","push","getLinearRegressionFixedVal","shift","linearRegression","n","sumX","sumY","sumXY","sumXX","sumYY","avgX","avgY","a","pow","sqrt","createLinearRegressionFx","values","b","fx","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","referBeta","gammaFixed","betaFixed","isInValidDegRange","handleWatch","e","isValid","requestAnimationFrame","switchWindVane","param","evt","document","addEventListener","switchIOSEvent","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","includes","removeTransformer","indexOf","splice","adapter","getAccelerAdapter","OrientationPluginLoader","order","handleConnect","closeManually","handleDisconnect","onCompositionConstructed","getAdapter","bindAccelerDocumentEvent","onCompositionReset","onCompositionUpdate","onCompositionDestroyed","empty","unbindAccelerDocumentEvent","dispose","AbstractPlugin","closeDeviceMotion","openDeviceMotion","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","../../../node_modules/.pnpm/@swc+helpers@0.5.8/node_modules/@swc/helpers/esm/_extends.js","../src/utils/angle-limit.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 _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","import { isArray } from '@galacean/effects';\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 (isArray(validRange.alpha) && 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 (isArray(validRange.beta) && validRange.beta.length >= 2) {\n flagBeta = angleObj.beta >= validRange.beta[0] && angleObj.beta <= validRange.beta[1];\n }\n if (isArray(validRange.gamma) && 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","/**\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, isIOSByUA, isMiniProgram } from '@galacean/effects';\nimport type { AngleType } from './utils/angle-limit';\nimport { angleLimit } from './utils/angle-limit';\nimport { Filtering } from './utils/filtering';\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 = isIOSByUA() && 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: Record<string, any> = {}) {\n // 模拟简单的 deep merge\n const validRange = { ...defaultOptions.validRange, ...options.validRange };\n const mergeOptions = { ...defaultOptions, ...options };\n\n mergeOptions.validRange = validRange;\n this.options = mergeOptions;\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; // 垂直于屏幕的轴 0 ~ 360\n beta = e.beta || 0; // 横向 X 轴 -180 ~ 180\n gamma = e.gamma || 0; // 纵向 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 { Behaviour, effectsClass } from '@galacean/effects';\nimport type { CompositionTransformerAcceler } from './composition-transformer-acceler';\n\n@effectsClass('OrientationComponent')\nexport class OrientationComponent extends Behaviour {\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 * as EFFECTS from '@galacean/effects';\nimport { VFXItem, logger, registerPlugin } 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 !== EFFECTS.version) {\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","_extends","assign","arguments","source","key","hasOwnProperty","call","apply","angleLimit","angleObj","validRange","flagAlpha","flagBeta","flagGamma","isArray","alpha","referAlphaA","referAlphaB","STABLE_RANGE","MAX_CHANGE","MIN_CHANGE","VALUE_POOL_LENGTH","Filtering","options","lastValue","valuePool","stableFix","stableRange","Math","abs","changeLimit","result","linearRegressionMedian","push","getLinearRegressionFixedVal","shift","linearRegression","n","sumX","sumY","sumXY","sumXX","sumYY","avgX","avgY","pow","sqrt","createLinearRegressionFx","values","index","fx","map","useJSBridge","isIOSByUA","window","AlipayJSBridge","useWindVane","WindVane","defaultOptions","X","Y","interval","floor","useRequestAnimationFrame","relativeBeta","relativeGamma","DeviceOrientation","lastX","lastY","prevAcceler","z","stoped","mergeOptions","filterX","filterY","watch","callback","watchListener","timefragment","nowts","referGamma","NaN","referBeta","isInValidDegRange","handleWatch","e","isNaN","isValid","requestAnimationFrame","switchWindVane","param","evt","document","addEventListener","isMiniProgram","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","Behaviour","effectsClass","registerPlugin","VFXItem","version","logger","EFFECTS"],"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-
|
|
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,o,r=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),s=function(t){function e(e,n){var a;return(a=t.call(this,e,n)||this).addComponent(r).fromData(n),a}return a(e,t),e}(e.VFXItem),c=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;this.currentEvent={x:e,y:n}},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(),o=this.currentPos[n.name],r=this.currentRot[n.name];this.records[n.name]={item:n,position:a,rotation:i},o&&n.transform.setPosition(o[0],o[1],o[2]),r&&n.transform.setRotation(r[0],r[1],r[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=null==(g=this.records[t])?void 0:g.item;if(i){var o=this.records[t].position,r=this.records[t].rotation,s=this.targets[t],c=h(n,this.betaRange),l=h(a,this.gammaRange);if(s){var u,f,m,d,p,v,g,b,y,M=[o[0]+1.2*(u=(c-this.gammaRange[0])/(this.gammaRange[1]-this.gammaRange[0]),(f=s.xMin)+(s.xMax-f)*u),o[1]+1.2*(m=(l-this.betaRange[0])/(this.betaRange[1]-this.betaRange[0]),(d=s.yMin)+(s.yMax-d)*m),o[2]],w=(h(2*n,this.betaRange)-this.betaRange[0])/(this.betaRange[1]-this.betaRange[0]),R=(h(2*a-45,this.gammaRange)-this.gammaRange[0])/(this.gammaRange[1]-this.gammaRange[0]),x=[r[0]+((p=s.hMin)+(s.hMax-p)*R),r[1]+((v=s.vMin)+(s.vMax-v)*w),r[2]];(b=i.transform).setPosition.apply(b,[].concat(M)),(y=i.transform).setRotation.apply(y,[].concat(x)),this.currentPos[t]=M.slice(),this.currentRot[t]=x.slice()}}},t}();function h(t,e){return t<e[0]?e[0]:t>e[1]?e[1]:t}function l(t){return Object.prototype.toString.call(t)}function u(t,e){var n=!0,a=!0,i=!0;if("[object Array]"===l(e.alpha)&&e.alpha.length>=2){var o=t.alpha+e.alpha[0],r=t.alpha+e.alpha[1];n=(o=o<0?o+360:o)<(r=r>360?r-360:r)?t.alpha>o&&t.alpha<r:t.alpha>o||t.alpha<r}return"[object Array]"===l(e.beta)&&e.beta.length>=2&&(a=t.beta>=e.beta[0]&&t.beta<=e.beta[1]),"[object Array]"===l(e.gamma)&&e.gamma.length>=2&&(i=t.gamma>=e.gamma[0]&&t.gamma<=e.gamma[1]),n&&a&&i}function f(){return(f=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 m=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,o=0,r=0,s=0,c=0,h=0;h<e.length;h++)i+=t[h],o+=e[h],r+=t[h]*e[h],s+=t[h]*t[h],c+=e[h]*e[h];var l=i/a,u=o/a;return n.a=(r-a*l*u)/(s-a*l*l),n.b=u-n.a*l,n.miss=Math.pow((a*r-i*o)/Math.sqrt((a*s-i*i)*(a*c-o*o)),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}(),d=((i=navigator.userAgent.toLowerCase().match(/cpu (iphone )?os (.*?) like mac os/))?parseInt(i[2],10):0)&&void 0!==window.AlipayJSBridge,p=void 0!==window.WindVane,v={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},g=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):f({},n),o=arguments.length,r=1;r<o;r++){var s=arguments[r]||{};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===o)for(var h in i)e.isObject(i[h])&&i.hasOwnProperty(h)&&(i[h]=t(i[h]));return i}(v,t);var n=this.options.stableRange;this.filterX=new m({stableRange:n}),this.filterY=new m({stableRange:n})}var n=t.prototype;return n.watch=function(t){var e,n,a,i,o,r,s,c=this;if("function"==typeof t&&!this.watchListener){var h=0,l=0,f=0,m=0,v=function(h){!c.stoped&&(e=h.alpha,n=h.beta,a=h.gamma,m||(m=n||0),f||(f=a||0),u.call(c,{alpha:e,beta:n,gamma:a},c.options.validRange)&&(c.options.X?(i=a-f,r=c.options.relativeGamma?i:a,r=c.filterX.stableFix(r),r=c.filterX.changeLimit(r),r=c.filterX.linearRegressionMedian(+r)):r=0,c.options.Y?(o=n-m,s=c.options.relativeBeta?o:n,s=c.filterY.stableFix(s),s=c.filterY.changeLimit(s),s=c.filterY.linearRegressionMedian(+s)):s=0,c.isValid(r,s)&&(c.options.useRequestAnimationFrame?window.requestAnimationFrame(function(){t(r,s,{alpha:e,beta:n,gamma:a})}):t(r,s,{alpha:e,beta:n,gamma:a}),c.lastX=r,c.lastY=s)))};this.stoped=!1,p?(y(!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!==c.prevAcceler.x||a!==c.prevAcceler.y||i!==c.prevAcceler.z)&&(c.prevAcceler={x:n,y:a,z:i},v({alpha:180*+i,beta:-90*+a,gamma:90*+n}))}},document.addEventListener("motion.gyro",this.watchListener,!1)):d?(b(!0,this.options.interval/1e3),this.watchListener=function(t){if(t&&"data"in t){var e=t.data,n=e.x,a=e.y;v({alpha:180*e.z,beta:-90*a,gamma:90*n})}},document.addEventListener("accelerometerChange",this.watchListener,!1)):(this.watchListener=function(t){(l=new Date().getTime())-h>=c.options.interval&&(h=l,v(t))},window.addEventListener("deviceorientation",this.watchListener,!1))}},n.unWatch=function(){e.assertExist(this.watchListener),p?(y(!1),document.removeEventListener("motion.gyro",this.watchListener)):d?(b(!1),document.removeEventListener("accelerometerChange",this.watchListener)):window.removeEventListener("deviceorientation",this.watchListener),this.stoped=!0,this.watchListener=void 0},n.pause=function(){this.stoped=!0,d&&b(!1)},n.continue=function(){this.stoped=!1,d&&b(!0,this.options.interval/1e3)},n.isValid=function(t,e){return this.lastX!==t||this.lastY!==e},t}();function b(t,e){window.AlipayJSBridge.call("watchShake",{monitorGyroscope:!1,monitorAccelerometer:!!t,interval:t?parseFloat(e.toFixed(3)):10},function(){})}function y(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 M=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 g({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){t.dispatchMotion({x:e,y:n})})),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}(),w=function(t){function e(){var e;return e=t.apply(this,arguments)||this,e.order=90,e.adapter=null,e.handleConnect=function(){if(!R){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=x(),null==(t=this.adapter)||t.connect(),this.bindAccelerDocumentEvent()},n.onCompositionReset=function(t){var e,n=t.loaderData.deviceTransformer=new c(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(){x().disconnect(),this.unbindAccelerDocumentEvent()},e}(e.AbstractPlugin),R=!1;function x(){return o||(o=new M),o}e.registerPlugin("orientation-transformer",w,s);var A="2.0.0-alpha.8";e.logger.info("plugin orientation transformer version: "+A),t.OrientationAdapterAcceler=M,t.closeDeviceMotion=function(){R=!0,x().disconnect()},t.getAdapter=x,t.openDeviceMotion=function(){R=!1,x().connect()},t.version=A,Object.defineProperty(t,"__esModule",{value:!0})});
|
|
6
|
+
* Version: v2.0.0-beta.0
|
|
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";var n,a=function(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach(function(n){if("default"!==n){var a=Object.getOwnPropertyDescriptor(t,n);Object.defineProperty(e,n,a.get?a:{enumerable:!0,get:function(){return t[n]}})}}),e.default=t,Object.freeze(e)}(e);function i(t,e){return(i=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function r(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&&i(t,e)}var 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,u=this.targets[t],h=s(n,this.betaRange),f=s(a,this.gammaRange);if(u){var m,d,p,v,g,b,y,M,w,R,x,O,L,E,A,P=[c[0]+1.2*(d=(h-(m=this.gammaRange[0]))/(this.gammaRange[1]-m),(p=u.xMin)+(u.xMax-p)*d),c[1]+1.2*(g=(f-(v=this.betaRange[0]))/(this.betaRange[1]-v),(b=u.yMin)+(u.yMax-b)*g),c[2]],D=(y=s(.8*r,this.gammaRange),(y-(M=this.gammaRange[0]))/(this.gammaRange[1]-M)),T=(w=s(.8*i,this.betaRange),(w-(R=this.betaRange[0]))/(this.betaRange[1]-R)),C=[l[0]+((x=u.hMin)+(u.hMax-x)*T),l[1]+((O=u.vMin)+(u.vMax-O)*D),l[2]];(E=o.transform).setPosition.apply(E,[].concat(P)),(A=o.transform).setRotation.apply(A,[].concat(C)),this.currentPos[t]=P.slice(),this.currentRot[t]=C.slice()}}},t}();function s(t,e){return t<e[0]?e[0]:t>e[1]?e[1]:t}function c(){return(c=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)}function l(t,n){var a=!0,i=!0,r=!0;if(e.isArray(n.alpha)&&n.alpha.length>=2){var o=t.alpha+n.alpha[0],s=t.alpha+n.alpha[1];a=(o=o<0?o+360:o)<(s=s>360?s-360:s)?t.alpha>o&&t.alpha<s:t.alpha>o||t.alpha<s}return e.isArray(n.beta)&&n.beta.length>=2&&(i=t.beta>=n.beta[0]&&t.beta<=n.beta[1]),e.isArray(n.gamma)&&n.gamma.length>=2&&(r=t.gamma>=n.gamma[0]&&t.gamma<=n.gamma[1]),a&&i&&r}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 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}(),h=e.isIOSByUA()&&void 0!==window.AlipayJSBridge,f=void 0!==window.WindVane,m={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;var e=c({},m.validRange,t.validRange),n=c({},m,t);n.validRange=e,this.options=n;var a=this.options.stableRange;this.filterX=new u({stableRange:a}),this.filterY=new u({stableRange:a})}var n=t.prototype;return n.watch=function(t){var n,a,i,r,o,s,c=this;if("function"==typeof t&&!this.watchListener){var u=0,m=0,d=NaN,g=NaN,b=function(e){!c.stoped&&(n=e.alpha||0,a=e.beta||0,i=e.gamma||0,r=l.call(c,{alpha:n,beta:a,gamma:i},c.options.validRange),isNaN(d)&&(d=i,c.filterX.lastValue=i),isNaN(g)&&(g=a,c.filterY.lastValue=a),r&&(c.options.X?(o=c.options.relativeGamma?i-d:i,o=c.filterX.stableFix(o),o=c.filterX.changeLimit(o),o=c.filterX.linearRegressionMedian(+o)):o=0,c.options.Y?(s=c.options.relativeBeta?a-g:a,s=c.filterY.stableFix(s),s=c.filterY.changeLimit(s),s=c.filterY.linearRegressionMedian(+s)):s=0,c.isValid(o,s)&&(c.options.useRequestAnimationFrame?window.requestAnimationFrame(function(){t(o,s,{alpha:n,beta:s-g,gamma:o-d})}):t(o,s,{alpha:n,beta:s-g,gamma:o-d}),c.lastX=o,c.lastY=s)))};this.stoped=!1,f?(v(!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!==c.prevAcceler.x||a!==c.prevAcceler.y||i!==c.prevAcceler.z)&&(c.prevAcceler={x:n,y:a,z:i},b({alpha:180*+i,beta:-90*+a,gamma:90*+n}))}},document.addEventListener("motion.gyro",this.watchListener,!1)):h&&!e.isMiniProgram()?(p(!0,this.options.interval/1e3),this.watchListener=function(t){if(t&&"data"in t){var e=t.data,n=e.x,a=e.y;b({alpha:180*e.z,beta:-90*a,gamma:90*n})}},document.addEventListener("accelerometerChange",this.watchListener,!1)):(this.watchListener=function(t){(m=new Date().getTime())-u>=c.options.interval&&(u=m,b(t))},window.addEventListener("deviceorientation",this.watchListener,!1))}},n.unWatch=function(){e.assertExist(this.watchListener),f?(v(!1),document.removeEventListener("motion.gyro",this.watchListener)):h?(p(!1),document.removeEventListener("accelerometerChange",this.watchListener)):window.removeEventListener("deviceorientation",this.watchListener),this.stoped=!0,this.watchListener=void 0},n.pause=function(){this.stoped=!0,h&&p(!1)},n.continue=function(){this.stoped=!1,h&&p(!0,this.options.interval/1e3)},n.isValid=function(t,e){return this.lastX!==t||this.lastY!==e},t}();function p(t,e){window.AlipayJSBridge.call("watchShake",{monitorGyroscope:!1,monitorAccelerometer:!!t,interval:t?parseFloat(e.toFixed(3)):10},function(){})}function v(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 g=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(!y){var t;null==(t=e.adapter)||t.connect()}},e.handleDisconnect=function(){var t;null==(t=e.adapter)||t.disconnect()},e}r(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),y=!1;function M(){return n||(n=new g),n}"function"==typeof SuppressedError&&SuppressedError,t.OrientationComponent=function(t){function e(){return t.apply(this,arguments)}r(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.Behaviour),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 w="2.0.0-beta.0";e.logger.info("Plugin orientation transformer version: "+w+"."),w!==a.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=g,t.OrientationPluginLoader=b,t.closeDeviceMotion=function(){y=!0,M().disconnect()},t.getAdapter=M,t.openDeviceMotion=function(){y=!1,M().connect()},t.version=w,Object.defineProperty(t,"__esModule",{value:!0})});
|
|
8
8
|
//# sourceMappingURL=index.min.js.map
|