@galacean/effects-plugin-orientation-transformer 2.0.0-alpha.4 → 2.0.0-alpha.6
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/composition-transformer-acceler.d.ts +4 -10
- package/dist/index.js +359 -342
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +3 -4
- package/dist/index.min.js.map +1 -1
- package/dist/index.mjs +360 -343
- package/dist/index.mjs.map +1 -1
- package/dist/transform-vfx-item.d.ts +4 -0
- package/package.json +3 -3
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.mjs","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,6 +1,10 @@
|
|
|
1
1
|
import type { Engine, VFXItemProps } from '@galacean/effects';
|
|
2
2
|
import { VFXItem } from '@galacean/effects';
|
|
3
3
|
import { OrientationComponent } from './orientation-component';
|
|
4
|
+
/**
|
|
5
|
+
* 水平旋转变化起始角(手机处于改角度时无变化)
|
|
6
|
+
*/
|
|
7
|
+
export declare const VERTICAL_INIT_DEGREE = 45;
|
|
4
8
|
export declare class TransformVFXItem extends VFXItem<OrientationComponent> {
|
|
5
9
|
constructor(engine: Engine, props: VFXItemProps);
|
|
6
10
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@galacean/effects-plugin-orientation-transformer",
|
|
3
|
-
"version": "2.0.0-alpha.
|
|
3
|
+
"version": "2.0.0-alpha.6",
|
|
4
4
|
"description": "Galacean Effects player orientation transformer plugin",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"registry": "https://registry.npmjs.org"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@galacean/effects": "2.0.0-alpha.
|
|
34
|
+
"@galacean/effects": "2.0.0-alpha.6"
|
|
35
35
|
},
|
|
36
36
|
"scripts": {
|
|
37
37
|
"dev": "vite",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"prebuild": "pnpm clean",
|
|
40
40
|
"build": "pnpm build:declaration && pnpm build:module",
|
|
41
41
|
"build:module": "rollup -c",
|
|
42
|
-
"build:declaration": "tsc -d --
|
|
42
|
+
"build:declaration": "tsc -d --emitDeclarationOnly",
|
|
43
43
|
"build:demo": "rimraf dist && vite build",
|
|
44
44
|
"clean": "rimraf dist && rimraf '*+(.tsbuildinfo)'"
|
|
45
45
|
}
|