@galacean/effects-plugin-orientation-transformer 1.3.0-alpha.0 → 1.3.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/composition-transformer-acceler.d.ts +4 -10
- package/dist/index.js +76 -51
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +2 -2
- package/dist/index.mjs +77 -52
- package/dist/index.mjs.map +1 -1
- package/dist/transform-vfx-item.d.ts +5 -0
- package/package.json +2 -2
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
import type { Composition } from '@galacean/effects';
|
|
2
|
-
export interface CompositionTransformerTarget {
|
|
3
|
-
name: string;
|
|
4
|
-
xMin: number;
|
|
5
|
-
xMax: number;
|
|
6
|
-
yMin: number;
|
|
7
|
-
yMax: number;
|
|
8
|
-
}
|
|
1
|
+
import type { Composition, spec } from '@galacean/effects';
|
|
9
2
|
type EventType = {
|
|
10
3
|
x: number;
|
|
11
4
|
y: number;
|
|
@@ -14,7 +7,8 @@ export declare class CompositionTransformerAcceler {
|
|
|
14
7
|
private readonly composition;
|
|
15
8
|
private readonly targets;
|
|
16
9
|
private readonly records;
|
|
17
|
-
private readonly
|
|
10
|
+
private readonly currentPos;
|
|
11
|
+
private readonly currentRot;
|
|
18
12
|
private gammaRange;
|
|
19
13
|
private betaRange;
|
|
20
14
|
private currentEvent?;
|
|
@@ -22,7 +16,7 @@ export declare class CompositionTransformerAcceler {
|
|
|
22
16
|
update({ x, y }: EventType): void;
|
|
23
17
|
updateOrientation(): void;
|
|
24
18
|
initComposition(): void;
|
|
25
|
-
addTarget(target:
|
|
19
|
+
addTarget(target: spec.PluginGyroscopeTarget): void;
|
|
26
20
|
removeTarget(name: string): void;
|
|
27
21
|
private moveLayer;
|
|
28
22
|
}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Description: Galacean Effects player orientation transformer plugin
|
|
4
4
|
* Author: Ant Group CO., Ltd.
|
|
5
5
|
* Contributors: 燃然,意绮
|
|
6
|
-
* Version: v1.3.0
|
|
6
|
+
* Version: v1.3.0
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
'use strict';
|
|
@@ -86,14 +86,64 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
|
|
|
86
86
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
87
87
|
};
|
|
88
88
|
|
|
89
|
+
/**
|
|
90
|
+
* 水平旋转变化起始角(手机处于改角度时无变化)
|
|
91
|
+
* 待调试
|
|
92
|
+
*/
|
|
93
|
+
var VERTICAL_INIT_DEGREE = 45;
|
|
94
|
+
var TransformVFXItem = /** @class */ (function (_super) {
|
|
95
|
+
__extends(TransformVFXItem, _super);
|
|
96
|
+
function TransformVFXItem() {
|
|
97
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
98
|
+
}
|
|
99
|
+
Object.defineProperty(TransformVFXItem.prototype, "type", {
|
|
100
|
+
get: function () {
|
|
101
|
+
return 'orientation-transformer';
|
|
102
|
+
},
|
|
103
|
+
enumerable: false,
|
|
104
|
+
configurable: true
|
|
105
|
+
});
|
|
106
|
+
TransformVFXItem.prototype.onConstructed = function (options) {
|
|
107
|
+
var targets = options.content.options.targets;
|
|
108
|
+
if (targets) {
|
|
109
|
+
this.targets = targets.map(function (t) { return ({
|
|
110
|
+
name: t.name,
|
|
111
|
+
xMin: +t.xMin || 0,
|
|
112
|
+
yMin: +t.yMin || 0,
|
|
113
|
+
xMax: +t.xMax || 0,
|
|
114
|
+
yMax: +t.yMax || 0,
|
|
115
|
+
vMin: +t.vMin || 0,
|
|
116
|
+
hMin: +t.hMin || 0,
|
|
117
|
+
vMax: +t.vMax || 0,
|
|
118
|
+
hMax: +t.hMax || 0,
|
|
119
|
+
}); });
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
TransformVFXItem.prototype.onItemRemoved = function (composition) {
|
|
123
|
+
var _a;
|
|
124
|
+
(_a = this.targets) === null || _a === void 0 ? void 0 : _a.forEach(function (target) { var _a; return (_a = composition.loaderData.deviceTransformer) === null || _a === void 0 ? void 0 : _a.removeTarget(target.name); });
|
|
125
|
+
};
|
|
126
|
+
TransformVFXItem.prototype.doCreateContent = function (composition) {
|
|
127
|
+
var _a;
|
|
128
|
+
var transformer = composition.loaderData.deviceTransformer;
|
|
129
|
+
if (transformer) {
|
|
130
|
+
(_a = this.targets) === null || _a === void 0 ? void 0 : _a.forEach(function (target) { return transformer.addTarget(target); });
|
|
131
|
+
transformer.initComposition();
|
|
132
|
+
}
|
|
133
|
+
return {};
|
|
134
|
+
};
|
|
135
|
+
return TransformVFXItem;
|
|
136
|
+
}(effects.VFXItem));
|
|
137
|
+
|
|
89
138
|
var CompositionTransformerAcceler = /** @class */ (function () {
|
|
90
139
|
function CompositionTransformerAcceler(composition) {
|
|
91
140
|
this.composition = composition;
|
|
92
141
|
this.targets = {};
|
|
93
142
|
this.records = {};
|
|
94
|
-
this.
|
|
143
|
+
this.currentPos = {};
|
|
144
|
+
this.currentRot = {};
|
|
95
145
|
this.gammaRange = [-89, 89];
|
|
96
|
-
this.betaRange = [-
|
|
146
|
+
this.betaRange = [-89, 89];
|
|
97
147
|
}
|
|
98
148
|
CompositionTransformerAcceler.prototype.update = function (_a) {
|
|
99
149
|
var x = _a.x, y = _a.y;
|
|
@@ -115,14 +165,19 @@ var CompositionTransformerAcceler = /** @class */ (function () {
|
|
|
115
165
|
var target = this.targets[item.name];
|
|
116
166
|
if (target) {
|
|
117
167
|
var position = item.transform.position.toArray();
|
|
118
|
-
var
|
|
168
|
+
var rotation = item.transform.rotation.toArray();
|
|
169
|
+
var currentPosition = this.currentPos[item.name];
|
|
170
|
+
var currentRot = this.currentRot[item.name];
|
|
119
171
|
this.records[item.name] = {
|
|
120
172
|
item: item,
|
|
121
173
|
position: position,
|
|
174
|
+
rotation: rotation,
|
|
122
175
|
};
|
|
123
176
|
if (currentPosition) {
|
|
124
|
-
|
|
125
|
-
|
|
177
|
+
item.transform.setPosition(currentPosition[0], currentPosition[1], currentPosition[2]);
|
|
178
|
+
}
|
|
179
|
+
if (currentRot) {
|
|
180
|
+
item.transform.setRotation(currentRot[0], currentRot[1], currentRot[2]);
|
|
126
181
|
}
|
|
127
182
|
}
|
|
128
183
|
}
|
|
@@ -135,12 +190,13 @@ var CompositionTransformerAcceler = /** @class */ (function () {
|
|
|
135
190
|
delete this.records[name];
|
|
136
191
|
};
|
|
137
192
|
CompositionTransformerAcceler.prototype.moveLayer = function (name, _a) {
|
|
138
|
-
var _b;
|
|
139
|
-
var
|
|
193
|
+
var _b, _c;
|
|
194
|
+
var _d;
|
|
140
195
|
var x = _a.x, y = _a.y;
|
|
141
|
-
var layer = (
|
|
196
|
+
var layer = (_d = this.records[name]) === null || _d === void 0 ? void 0 : _d.item;
|
|
142
197
|
if (layer) {
|
|
143
198
|
var initPosition = this.records[name].position;
|
|
199
|
+
var initRotation = this.records[name].rotation;
|
|
144
200
|
var target = this.targets[name];
|
|
145
201
|
var beta = clamp(x, this.betaRange), gamma = clamp(y, this.gammaRange);
|
|
146
202
|
if (target) {
|
|
@@ -149,8 +205,17 @@ var CompositionTransformerAcceler = /** @class */ (function () {
|
|
|
149
205
|
initPosition[1] + 1.2 * mapRange((gamma - this.betaRange[0]) / (this.betaRange[1] - this.betaRange[0]), target.yMin, target.yMax),
|
|
150
206
|
initPosition[2],
|
|
151
207
|
];
|
|
208
|
+
var br = (clamp(x * 2, this.betaRange) - this.betaRange[0]) / (this.betaRange[1] - this.betaRange[0]);
|
|
209
|
+
var gr = (clamp(y * 2 - VERTICAL_INIT_DEGREE, this.gammaRange) - this.gammaRange[0]) / (this.gammaRange[1] - this.gammaRange[0]);
|
|
210
|
+
var rotation = [
|
|
211
|
+
initRotation[0] + mapRange(gr, target.hMin, target.hMax),
|
|
212
|
+
initRotation[1] + mapRange(br, target.vMin, target.vMax),
|
|
213
|
+
initRotation[2],
|
|
214
|
+
];
|
|
152
215
|
(_b = layer.transform).setPosition.apply(_b, __spreadArray([], __read(position), false));
|
|
153
|
-
|
|
216
|
+
(_c = layer.transform).setRotation.apply(_c, __spreadArray([], __read(rotation), false));
|
|
217
|
+
this.currentPos[name] = position.slice();
|
|
218
|
+
this.currentRot[name] = rotation.slice();
|
|
154
219
|
}
|
|
155
220
|
}
|
|
156
221
|
};
|
|
@@ -750,48 +815,8 @@ function openDeviceMotion() {
|
|
|
750
815
|
getAdapter().connect();
|
|
751
816
|
}
|
|
752
817
|
|
|
753
|
-
var TransformVFXItem = /** @class */ (function (_super) {
|
|
754
|
-
__extends(TransformVFXItem, _super);
|
|
755
|
-
function TransformVFXItem() {
|
|
756
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
757
|
-
}
|
|
758
|
-
Object.defineProperty(TransformVFXItem.prototype, "type", {
|
|
759
|
-
get: function () {
|
|
760
|
-
return 'orientation-transformer';
|
|
761
|
-
},
|
|
762
|
-
enumerable: false,
|
|
763
|
-
configurable: true
|
|
764
|
-
});
|
|
765
|
-
TransformVFXItem.prototype.onConstructed = function (options) {
|
|
766
|
-
var targets = options.content.options.targets;
|
|
767
|
-
if (targets) {
|
|
768
|
-
this.targets = targets.map(function (t) { return ({
|
|
769
|
-
name: t.name,
|
|
770
|
-
xMin: +t.xMin || 0,
|
|
771
|
-
yMin: +t.yMin || 0,
|
|
772
|
-
xMax: +t.xMax || 0,
|
|
773
|
-
yMax: +t.yMax || 0,
|
|
774
|
-
}); });
|
|
775
|
-
}
|
|
776
|
-
};
|
|
777
|
-
TransformVFXItem.prototype.onItemRemoved = function (composition) {
|
|
778
|
-
var _a;
|
|
779
|
-
(_a = this.targets) === null || _a === void 0 ? void 0 : _a.forEach(function (target) { var _a; return (_a = composition.loaderData.deviceTransformer) === null || _a === void 0 ? void 0 : _a.removeTarget(target.name); });
|
|
780
|
-
};
|
|
781
|
-
TransformVFXItem.prototype.doCreateContent = function (composition) {
|
|
782
|
-
var _a;
|
|
783
|
-
var transformer = composition.loaderData.deviceTransformer;
|
|
784
|
-
if (transformer) {
|
|
785
|
-
(_a = this.targets) === null || _a === void 0 ? void 0 : _a.forEach(function (target) { return transformer.addTarget(target); });
|
|
786
|
-
transformer.initComposition();
|
|
787
|
-
}
|
|
788
|
-
return {};
|
|
789
|
-
};
|
|
790
|
-
return TransformVFXItem;
|
|
791
|
-
}(effects.VFXItem));
|
|
792
|
-
|
|
793
818
|
effects.registerPlugin('orientation-transformer', OrientationPluginLoader, TransformVFXItem);
|
|
794
|
-
var version = "1.3.0
|
|
819
|
+
var version = "1.3.0";
|
|
795
820
|
effects.logger.info('plugin orientation transformer version: ' + version);
|
|
796
821
|
|
|
797
822
|
exports.OrientationAdapterAcceler = OrientationAdapterAcceler;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.min.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Description: Galacean Effects player orientation transformer plugin
|
|
4
4
|
* Author: Ant Group CO., Ltd.
|
|
5
5
|
* Contributors: 燃然,意绮
|
|
6
|
-
* Version: v1.3.0
|
|
6
|
+
* Version: v1.3.0
|
|
7
7
|
*/
|
|
8
|
-
!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=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},n(t,e)};function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function o(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)}var r=function(){return r=Object.assign||function(t){for(var e,n=1,o=arguments.length;n<o;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t},r.apply(this,arguments)};function i(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var o,r,i=n.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(o=i.next()).done;)a.push(o.value)}catch(t){r={error:t}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return a}function a(t,e,n){if(n||2===arguments.length)for(var o,r=0,i=e.length;r<i;r++)!o&&r in e||(o||(o=Array.prototype.slice.call(e,0,r)),o[r]=e[r]);return t.concat(o||Array.prototype.slice.call(e))}"function"==typeof SuppressedError&&SuppressedError;var s=function(){function t(t){this.composition=t,this.targets={},this.records={},this.current={},this.gammaRange=[-89,89],this.betaRange=[-80,80]}return t.prototype.update=function(t){var e=t.x,n=t.y;this.currentEvent={x:e,y:n}},t.prototype.updateOrientation=function(){var t=this,e=this.currentEvent;e&&Object.getOwnPropertyNames(this.targets).forEach((function(n){t.moveLayer(n,e)}))},t.prototype.initComposition=function(){for(var t=this.composition.items,e=0;e<t.length;e++){var n=t[e];if(this.targets[n.name]){var o=n.transform.position.toArray(),r=this.current[n.name];if(this.records[n.name]={item:n,position:o},r){var a=i(r,3),s=a[0],c=a[1],l=a[2];n.transform.setPosition(s,c,l)}}}},t.prototype.addTarget=function(t){this.targets[t.name]=t},t.prototype.removeTarget=function(t){delete this.targets[t],delete this.records[t]},t.prototype.moveLayer=function(t,e){var n,o,r=e.x,s=e.y,u=null===(o=this.records[t])||void 0===o?void 0:o.item;if(u){var p=this.records[t].position,h=this.targets[t],f=c(r,this.betaRange),d=c(s,this.gammaRange);if(h){var v=[p[0]+1.2*l((f-this.gammaRange[0])/(this.gammaRange[1]-this.gammaRange[0]),h.xMin,h.xMax),p[1]+1.2*l((d-this.betaRange[0])/(this.betaRange[1]-this.betaRange[0]),h.yMin,h.yMax),p[2]];(n=u.transform).setPosition.apply(n,a([],i(v),!1)),this.current[t]=v.slice()}}},t}();function c(t,e){return t<e[0]?e[0]:t>e[1]?e[1]:t}function l(t,e,n){return e+(n-e)*t}function u(t){return Object.prototype.toString.call(t)}function p(t,e){var n=!0,o=!0,r=!0;if("[object Array]"===u(e.alpha)&&e.alpha.length>=2){var i=t.alpha+e.alpha[0],a=t.alpha+e.alpha[1];n=(i=i<0?i+360:i)<(a=a>360?a-360:a)?t.alpha>i&&t.alpha<a:t.alpha>i||t.alpha<a}return"[object Array]"===u(e.beta)&&e.beta.length>=2&&(o=t.beta>=e.beta[0]&&t.beta<=e.beta[1]),"[object Array]"===u(e.gamma)&&e.gamma.length>=2&&(r=t.gamma>=e.gamma[0]&&t.gamma<=e.gamma[1]),n&&o&&r}function h(t,n){if(!e.isObject(t)&&!e.isArray(t))return t;for(var o=e.isArray(t)?a([],i(t),!1):r({},t),s=arguments.length,c=1;c<s;c++){var l=arguments[c]||{};if(e.isObject(l)){var u=void 0;for(u in l)l.hasOwnProperty(u)&&(e.isObject(o[u])&&e.isObject(l[u])?o[u]=h(o[u],l[u]):e.isObject(l[u])||e.isArray(l[u])?o[u]=h(l[u]):o[u]=l[u]);for(u in o)e.isObject(o[u])&&o.hasOwnProperty(u)&&!l.hasOwnProperty(u)&&(o[u]=h(o[u]))}}if(1===s)for(var u in o)e.isObject(o[u])&&o.hasOwnProperty(u)&&(o[u]=h(o[u]));return o}var f=function(){function t(t){void 0===t&&(t={}),this.options=t,this.lastValue=0,this.valuePool=[]}return t.prototype.stableFix=function(t){var e=this.options.stableRange||3;return Math.abs(t)<e?0:t>e?t-e:t+e},t.prototype.changeLimit=function(t){var e=this.lastValue,n=t;return Math.abs(t-e)>5&&(n=e<t?e+5:e-5),Math.abs(t-e)<1&&(n=e),this.lastValue=n,n},t.prototype.linearRegressionMedian=function(t){var e,n,o;return this.valuePool.push(t),this.valuePool.length>=5?(n=this.valuePool,o=function(t){var e=[],n=[];t.forEach((function(t,o){e.push(o),n.push(t)}));var o=function(t,e){for(var n={},o=e.length,r=0,i=0,a=0,s=0,c=0,l=0;l<e.length;l++)r+=t[l],i+=e[l],a+=t[l]*e[l],s+=t[l]*t[l],c+=e[l]*e[l];var u=r/o,p=i/o;return n.a=(a-o*u*p)/(s-o*u*u),n.b=p-n.a*u,n.miss=Math.pow((o*a-r*i)/Math.sqrt((o*s-r*r)*(o*c-i*i)),2),n}(e,n);return function(t){return o.a*t+o.b}}(n),n=n.map((function(t,e){return o(e)})),e=o(n.length/2),this.valuePool.shift()):e=this.lastValue,e},t}();var d,v=((d=navigator.userAgent.toLowerCase().match(/cpu (iphone )?os (.*?) like mac os/))?parseInt(d[2],10):0)&&void 0!==window.AlipayJSBridge,m=void 0!==window.WindVane,g={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},y=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=h(g,t);var e=this.options.stableRange;this.filterX=new f({stableRange:e}),this.filterY=new f({stableRange:e})}return t.prototype.watch=function(t){var e=this;if("function"==typeof t&&!this.watchListener){var n,o,r,i,a,s,c,l=0,u=0,h=0,f=0,d=function(l){e.stoped||(n=l.alpha,o=l.beta,r=l.gamma,f||(f=o||0),h||(h=r||0),p.call(e,{alpha:n,beta:o,gamma:r},e.options.validRange)&&(e.options.X?(i=r-h,s=e.options.relativeGamma?i:r,s=e.filterX.stableFix(s),s=e.filterX.changeLimit(s),s=e.filterX.linearRegressionMedian(+s)):s=0,e.options.Y?(a=o-f,c=e.options.relativeBeta?a:o,c=e.filterY.stableFix(c),c=e.filterY.changeLimit(c),c=e.filterY.linearRegressionMedian(+c)):c=0,e.isValid(s,c)&&(e.options.useRequestAnimationFrame?window.requestAnimationFrame((function(){t(s,c,{alpha:n,beta:o,gamma:r})})):t(s,c,{alpha:n,beta:o,gamma:r}),e.lastX=s,e.lastY=c)))};this.stoped=!1,m?(w(!0,this.options.interval),this.watchListener=function(t){if("param"in t){var n=t.param,o=n.x,r=n.y,i=n.z;if(o===e.prevAcceler.x&&r===e.prevAcceler.y&&i===e.prevAcceler.z)return;e.prevAcceler={x:o,y:r,z:i},d({alpha:180*+i,beta:-90*+r,gamma:90*+o})}},document.addEventListener("motion.gyro",this.watchListener,!1)):v?(b(!0,this.options.interval/1e3),this.watchListener=function(t){if(t&&"data"in t){var e=t.data,n=e.x,o=e.y,r=e.z;d({alpha:180*r,beta:-90*o,gamma:90*n})}},document.addEventListener("accelerometerChange",this.watchListener,!1)):(this.watchListener=function(t){(u=(new Date).getTime())-l>=e.options.interval&&(l=u,d(t))},window.addEventListener("deviceorientation",this.watchListener,!1))}},t.prototype.unWatch=function(){e.assertExist(this.watchListener),m?(w(!1),document.removeEventListener("motion.gyro",this.watchListener)):v?(b(!1),document.removeEventListener("accelerometerChange",this.watchListener)):window.removeEventListener("deviceorientation",this.watchListener),this.stoped=!0,this.watchListener=void 0},t.prototype.pause=function(){this.stoped=!0,v&&b(!1)},t.prototype.continue=function(){this.stoped=!1,v&&b(!0,this.options.interval/1e3)},t.prototype.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 w(t,e){var n={on:t,frequency:e};window.WindVane.call("WVMotion","listenGyro",n,(function(t){console.info("call WVMotion success")}),(function(t){console.error("call WVMotion failed:"+JSON.stringify(t))}))}var M,x=function(){function t(){this.transformers=[],this.connected=!1,this.accelerMotion=null,this.validRange={alpha:[-60,60],beta:[-80,80],gamma:[-89,89]}}return t.prototype.connect=function(){var t=this;this.connected||(this.accelerMotion=new y({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){var o={x:e,y:n};t.dispatchMotion(o)}))),this.connected=!0},t.prototype.disconnect=function(){this.accelerMotion&&this.accelerMotion.unWatch(),this.connected=!1},t.prototype.dispatchMotion=function(t){this.transformers.forEach((function(e){return e.update(t)}))},t.prototype.addTransformer=function(t){this.transformers.includes(t)||this.transformers.push(t)},t.prototype.removeTransformer=function(t){var e=this.transformers.indexOf(t);return e>-1&&this.transformers.splice(e,1),0===this.transformers.length},t}();var A=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.order=90,e.adapter=null,e.handleConnect=function(){var t;L||null===(t=e.adapter)||void 0===t||t.connect()},e.handleDisconnect=function(){var t;null===(t=e.adapter)||void 0===t||t.disconnect()},e}return o(e,t),e.prototype.onCompositionConstructed=function(){var t;this.adapter=O(),null===(t=this.adapter)||void 0===t||t.connect(),this.bindAccelerDocumentEvent()},e.prototype.onCompositionReset=function(t){var e,n=t.loaderData.deviceTransformer=new s(t);null===(e=this.adapter)||void 0===e||e.addTransformer(n)},e.prototype.onCompositionUpdate=function(t){var e=t.loaderData.deviceTransformer;e&&e.updateOrientation()},e.prototype.onCompositionDestroyed=function(t){var e,n;(null===(e=this.adapter)||void 0===e?void 0:e.removeTransformer(t.loaderData.deviceTransformer))&&(null===(n=this.adapter)||void 0===n||n.disconnect())},e.prototype.bindAccelerDocumentEvent=function(){this.unbindAccelerDocumentEvent(),document.addEventListener("resume",this.handleConnect,!1),document.addEventListener("pause",this.handleDisconnect,!1),document.addEventListener("back",this.handleDisconnect,!1)},e.prototype.unbindAccelerDocumentEvent=function(){document.removeEventListener("resume",this.handleConnect),document.removeEventListener("pause",this.handleDisconnect),document.removeEventListener("back",this.handleDisconnect)},e.prototype.dispose=function(){O().disconnect(),this.unbindAccelerDocumentEvent()},e}(e.AbstractPlugin),L=!1;function O(){return M||(M=new x),M}var R=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),Object.defineProperty(e.prototype,"type",{get:function(){return"orientation-transformer"},enumerable:!1,configurable:!0}),e.prototype.onConstructed=function(t){var e=t.content.options.targets;e&&(this.targets=e.map((function(t){return{name:t.name,xMin:+t.xMin||0,yMin:+t.yMin||0,xMax:+t.xMax||0,yMax:+t.yMax||0}})))},e.prototype.onItemRemoved=function(t){var e;null===(e=this.targets)||void 0===e||e.forEach((function(e){var n;return null===(n=t.loaderData.deviceTransformer)||void 0===n?void 0:n.removeTarget(e.name)}))},e.prototype.doCreateContent=function(t){var e,n=t.loaderData.deviceTransformer;return n&&(null===(e=this.targets)||void 0===e||e.forEach((function(t){return n.addTarget(t)})),n.initComposition()),{}},e}(e.VFXItem);e.registerPlugin("orientation-transformer",A,R);var E="1.3.0-alpha.0";e.logger.info("plugin orientation transformer version: "+E),t.OrientationAdapterAcceler=x,t.closeDeviceMotion=function(){L=!0,O().disconnect()},t.getAdapter=O,t.openDeviceMotion=function(){L=!1,O().connect()},t.version=E,Object.defineProperty(t,"__esModule",{value:!0})}));
|
|
8
|
+
!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=function(t,e){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])},n(t,e)};function o(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function o(){this.constructor=t}n(t,e),t.prototype=null===e?Object.create(e):(o.prototype=e.prototype,new o)}var r=function(){return r=Object.assign||function(t){for(var e,n=1,o=arguments.length;n<o;n++)for(var r in e=arguments[n])Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t},r.apply(this,arguments)};function i(t,e){var n="function"==typeof Symbol&&t[Symbol.iterator];if(!n)return t;var o,r,i=n.call(t),a=[];try{for(;(void 0===e||e-- >0)&&!(o=i.next()).done;)a.push(o.value)}catch(t){r={error:t}}finally{try{o&&!o.done&&(n=i.return)&&n.call(i)}finally{if(r)throw r.error}}return a}function a(t,e,n){if(n||2===arguments.length)for(var o,r=0,i=e.length;r<i;r++)!o&&r in e||(o||(o=Array.prototype.slice.call(e,0,r)),o[r]=e[r]);return t.concat(o||Array.prototype.slice.call(e))}"function"==typeof SuppressedError&&SuppressedError;var s=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),Object.defineProperty(e.prototype,"type",{get:function(){return"orientation-transformer"},enumerable:!1,configurable:!0}),e.prototype.onConstructed=function(t){var e=t.content.options.targets;e&&(this.targets=e.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}})))},e.prototype.onItemRemoved=function(t){var e;null===(e=this.targets)||void 0===e||e.forEach((function(e){var n;return null===(n=t.loaderData.deviceTransformer)||void 0===n?void 0:n.removeTarget(e.name)}))},e.prototype.doCreateContent=function(t){var e,n=t.loaderData.deviceTransformer;return n&&(null===(e=this.targets)||void 0===e||e.forEach((function(t){return n.addTarget(t)})),n.initComposition()),{}},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]}return t.prototype.update=function(t){var e=t.x,n=t.y;this.currentEvent={x:e,y:n}},t.prototype.updateOrientation=function(){var t=this,e=this.currentEvent;e&&Object.getOwnPropertyNames(this.targets).forEach((function(n){t.moveLayer(n,e)}))},t.prototype.initComposition=function(){for(var t=this.composition.items,e=0;e<t.length;e++){var n=t[e];if(this.targets[n.name]){var o=n.transform.position.toArray(),r=n.transform.rotation.toArray(),i=this.currentPos[n.name],a=this.currentRot[n.name];this.records[n.name]={item:n,position:o,rotation:r},i&&n.transform.setPosition(i[0],i[1],i[2]),a&&n.transform.setRotation(a[0],a[1],a[2])}}},t.prototype.addTarget=function(t){this.targets[t.name]=t},t.prototype.removeTarget=function(t){delete this.targets[t],delete this.records[t]},t.prototype.moveLayer=function(t,e){var n,o,r,s=e.x,c=e.y,h=null===(r=this.records[t])||void 0===r?void 0:r.item;if(h){var p=this.records[t].position,f=this.records[t].rotation,d=this.targets[t],m=l(s,this.betaRange),v=l(c,this.gammaRange);if(d){var g=[p[0]+1.2*u((m-this.gammaRange[0])/(this.gammaRange[1]-this.gammaRange[0]),d.xMin,d.xMax),p[1]+1.2*u((v-this.betaRange[0])/(this.betaRange[1]-this.betaRange[0]),d.yMin,d.yMax),p[2]],y=(l(2*s,this.betaRange)-this.betaRange[0])/(this.betaRange[1]-this.betaRange[0]),b=(l(2*c-45,this.gammaRange)-this.gammaRange[0])/(this.gammaRange[1]-this.gammaRange[0]),w=[f[0]+u(b,d.hMin,d.hMax),f[1]+u(y,d.vMin,d.vMax),f[2]];(n=h.transform).setPosition.apply(n,a([],i(g),!1)),(o=h.transform).setRotation.apply(o,a([],i(w),!1)),this.currentPos[t]=g.slice(),this.currentRot[t]=w.slice()}}},t}();function l(t,e){return t<e[0]?e[0]:t>e[1]?e[1]:t}function u(t,e,n){return e+(n-e)*t}function h(t){return Object.prototype.toString.call(t)}function p(t,e){var n=!0,o=!0,r=!0;if("[object Array]"===h(e.alpha)&&e.alpha.length>=2){var i=t.alpha+e.alpha[0],a=t.alpha+e.alpha[1];n=(i=i<0?i+360:i)<(a=a>360?a-360:a)?t.alpha>i&&t.alpha<a:t.alpha>i||t.alpha<a}return"[object Array]"===h(e.beta)&&e.beta.length>=2&&(o=t.beta>=e.beta[0]&&t.beta<=e.beta[1]),"[object Array]"===h(e.gamma)&&e.gamma.length>=2&&(r=t.gamma>=e.gamma[0]&&t.gamma<=e.gamma[1]),n&&o&&r}function f(t,n){if(!e.isObject(t)&&!e.isArray(t))return t;for(var o=e.isArray(t)?a([],i(t),!1):r({},t),s=arguments.length,c=1;c<s;c++){var l=arguments[c]||{};if(e.isObject(l)){var u=void 0;for(u in l)l.hasOwnProperty(u)&&(e.isObject(o[u])&&e.isObject(l[u])?o[u]=f(o[u],l[u]):e.isObject(l[u])||e.isArray(l[u])?o[u]=f(l[u]):o[u]=l[u]);for(u in o)e.isObject(o[u])&&o.hasOwnProperty(u)&&!l.hasOwnProperty(u)&&(o[u]=f(o[u]))}}if(1===s)for(var u in o)e.isObject(o[u])&&o.hasOwnProperty(u)&&(o[u]=f(o[u]));return o}var d=function(){function t(t){void 0===t&&(t={}),this.options=t,this.lastValue=0,this.valuePool=[]}return t.prototype.stableFix=function(t){var e=this.options.stableRange||3;return Math.abs(t)<e?0:t>e?t-e:t+e},t.prototype.changeLimit=function(t){var e=this.lastValue,n=t;return Math.abs(t-e)>5&&(n=e<t?e+5:e-5),Math.abs(t-e)<1&&(n=e),this.lastValue=n,n},t.prototype.linearRegressionMedian=function(t){var e,n,o;return this.valuePool.push(t),this.valuePool.length>=5?(n=this.valuePool,o=function(t){var e=[],n=[];t.forEach((function(t,o){e.push(o),n.push(t)}));var o=function(t,e){for(var n={},o=e.length,r=0,i=0,a=0,s=0,c=0,l=0;l<e.length;l++)r+=t[l],i+=e[l],a+=t[l]*e[l],s+=t[l]*t[l],c+=e[l]*e[l];var u=r/o,h=i/o;return n.a=(a-o*u*h)/(s-o*u*u),n.b=h-n.a*u,n.miss=Math.pow((o*a-r*i)/Math.sqrt((o*s-r*r)*(o*c-i*i)),2),n}(e,n);return function(t){return o.a*t+o.b}}(n),n=n.map((function(t,e){return o(e)})),e=o(n.length/2),this.valuePool.shift()):e=this.lastValue,e},t}();var m,v=((m=navigator.userAgent.toLowerCase().match(/cpu (iphone )?os (.*?) like mac os/))?parseInt(m[2],10):0)&&void 0!==window.AlipayJSBridge,g=void 0!==window.WindVane,y={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},b=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=f(y,t);var e=this.options.stableRange;this.filterX=new d({stableRange:e}),this.filterY=new d({stableRange:e})}return t.prototype.watch=function(t){var e=this;if("function"==typeof t&&!this.watchListener){var n,o,r,i,a,s,c,l=0,u=0,h=0,f=0,d=function(l){e.stoped||(n=l.alpha,o=l.beta,r=l.gamma,f||(f=o||0),h||(h=r||0),p.call(e,{alpha:n,beta:o,gamma:r},e.options.validRange)&&(e.options.X?(i=r-h,s=e.options.relativeGamma?i:r,s=e.filterX.stableFix(s),s=e.filterX.changeLimit(s),s=e.filterX.linearRegressionMedian(+s)):s=0,e.options.Y?(a=o-f,c=e.options.relativeBeta?a:o,c=e.filterY.stableFix(c),c=e.filterY.changeLimit(c),c=e.filterY.linearRegressionMedian(+c)):c=0,e.isValid(s,c)&&(e.options.useRequestAnimationFrame?window.requestAnimationFrame((function(){t(s,c,{alpha:n,beta:o,gamma:r})})):t(s,c,{alpha:n,beta:o,gamma:r}),e.lastX=s,e.lastY=c)))};this.stoped=!1,g?(M(!0,this.options.interval),this.watchListener=function(t){if("param"in t){var n=t.param,o=n.x,r=n.y,i=n.z;if(o===e.prevAcceler.x&&r===e.prevAcceler.y&&i===e.prevAcceler.z)return;e.prevAcceler={x:o,y:r,z:i},d({alpha:180*+i,beta:-90*+r,gamma:90*+o})}},document.addEventListener("motion.gyro",this.watchListener,!1)):v?(w(!0,this.options.interval/1e3),this.watchListener=function(t){if(t&&"data"in t){var e=t.data,n=e.x,o=e.y,r=e.z;d({alpha:180*r,beta:-90*o,gamma:90*n})}},document.addEventListener("accelerometerChange",this.watchListener,!1)):(this.watchListener=function(t){(u=(new Date).getTime())-l>=e.options.interval&&(l=u,d(t))},window.addEventListener("deviceorientation",this.watchListener,!1))}},t.prototype.unWatch=function(){e.assertExist(this.watchListener),g?(M(!1),document.removeEventListener("motion.gyro",this.watchListener)):v?(w(!1),document.removeEventListener("accelerometerChange",this.watchListener)):window.removeEventListener("deviceorientation",this.watchListener),this.stoped=!0,this.watchListener=void 0},t.prototype.pause=function(){this.stoped=!0,v&&w(!1)},t.prototype.continue=function(){this.stoped=!1,v&&w(!0,this.options.interval/1e3)},t.prototype.isValid=function(t,e){return this.lastX!==t||this.lastY!==e},t}();function w(t,e){window.AlipayJSBridge.call("watchShake",{monitorGyroscope:!1,monitorAccelerometer:!!t,interval:t?parseFloat(e.toFixed(3)):10},(function(){}))}function M(t,e){var n={on:t,frequency:e};window.WindVane.call("WVMotion","listenGyro",n,(function(t){console.info("call WVMotion success")}),(function(t){console.error("call WVMotion failed:"+JSON.stringify(t))}))}var R,x=function(){function t(){this.transformers=[],this.connected=!1,this.accelerMotion=null,this.validRange={alpha:[-60,60],beta:[-80,80],gamma:[-89,89]}}return t.prototype.connect=function(){var t=this;this.connected||(this.accelerMotion=new b({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){var o={x:e,y:n};t.dispatchMotion(o)}))),this.connected=!0},t.prototype.disconnect=function(){this.accelerMotion&&this.accelerMotion.unWatch(),this.connected=!1},t.prototype.dispatchMotion=function(t){this.transformers.forEach((function(e){return e.update(t)}))},t.prototype.addTransformer=function(t){this.transformers.includes(t)||this.transformers.push(t)},t.prototype.removeTransformer=function(t){var e=this.transformers.indexOf(t);return e>-1&&this.transformers.splice(e,1),0===this.transformers.length},t}();var A=function(t){function e(){var e=null!==t&&t.apply(this,arguments)||this;return e.order=90,e.adapter=null,e.handleConnect=function(){var t;L||null===(t=e.adapter)||void 0===t||t.connect()},e.handleDisconnect=function(){var t;null===(t=e.adapter)||void 0===t||t.disconnect()},e}return o(e,t),e.prototype.onCompositionConstructed=function(){var t;this.adapter=O(),null===(t=this.adapter)||void 0===t||t.connect(),this.bindAccelerDocumentEvent()},e.prototype.onCompositionReset=function(t){var e,n=t.loaderData.deviceTransformer=new c(t);null===(e=this.adapter)||void 0===e||e.addTransformer(n)},e.prototype.onCompositionUpdate=function(t){var e=t.loaderData.deviceTransformer;e&&e.updateOrientation()},e.prototype.onCompositionDestroyed=function(t){var e,n;(null===(e=this.adapter)||void 0===e?void 0:e.removeTransformer(t.loaderData.deviceTransformer))&&(null===(n=this.adapter)||void 0===n||n.disconnect())},e.prototype.bindAccelerDocumentEvent=function(){this.unbindAccelerDocumentEvent(),document.addEventListener("resume",this.handleConnect,!1),document.addEventListener("pause",this.handleDisconnect,!1),document.addEventListener("back",this.handleDisconnect,!1)},e.prototype.unbindAccelerDocumentEvent=function(){document.removeEventListener("resume",this.handleConnect),document.removeEventListener("pause",this.handleDisconnect),document.removeEventListener("back",this.handleDisconnect)},e.prototype.dispose=function(){O().disconnect(),this.unbindAccelerDocumentEvent()},e}(e.AbstractPlugin),L=!1;function O(){return R||(R=new x),R}e.registerPlugin("orientation-transformer",A,s);var E="1.3.0";e.logger.info("plugin orientation transformer version: "+E),t.OrientationAdapterAcceler=x,t.closeDeviceMotion=function(){L=!0,O().disconnect()},t.getAdapter=O,t.openDeviceMotion=function(){L=!1,O().connect()},t.version=E,Object.defineProperty(t,"__esModule",{value:!0})}));
|
|
9
9
|
//# sourceMappingURL=index.min.js.map
|
package/dist/index.mjs
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* Description: Galacean Effects player orientation transformer plugin
|
|
4
4
|
* Author: Ant Group CO., Ltd.
|
|
5
5
|
* Contributors: 燃然,意绮
|
|
6
|
-
* Version: v1.3.0
|
|
6
|
+
* Version: v1.3.0
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import { isObject, isArray, assertExist, AbstractPlugin,
|
|
9
|
+
import { VFXItem, isObject, isArray, assertExist, AbstractPlugin, registerPlugin, logger } from '@galacean/effects';
|
|
10
10
|
|
|
11
11
|
/******************************************************************************
|
|
12
12
|
Copyright (c) Microsoft Corporation.
|
|
@@ -82,14 +82,64 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
|
|
|
82
82
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
83
83
|
};
|
|
84
84
|
|
|
85
|
+
/**
|
|
86
|
+
* 水平旋转变化起始角(手机处于改角度时无变化)
|
|
87
|
+
* 待调试
|
|
88
|
+
*/
|
|
89
|
+
var VERTICAL_INIT_DEGREE = 45;
|
|
90
|
+
var TransformVFXItem = /** @class */ (function (_super) {
|
|
91
|
+
__extends(TransformVFXItem, _super);
|
|
92
|
+
function TransformVFXItem() {
|
|
93
|
+
return _super !== null && _super.apply(this, arguments) || this;
|
|
94
|
+
}
|
|
95
|
+
Object.defineProperty(TransformVFXItem.prototype, "type", {
|
|
96
|
+
get: function () {
|
|
97
|
+
return 'orientation-transformer';
|
|
98
|
+
},
|
|
99
|
+
enumerable: false,
|
|
100
|
+
configurable: true
|
|
101
|
+
});
|
|
102
|
+
TransformVFXItem.prototype.onConstructed = function (options) {
|
|
103
|
+
var targets = options.content.options.targets;
|
|
104
|
+
if (targets) {
|
|
105
|
+
this.targets = targets.map(function (t) { return ({
|
|
106
|
+
name: t.name,
|
|
107
|
+
xMin: +t.xMin || 0,
|
|
108
|
+
yMin: +t.yMin || 0,
|
|
109
|
+
xMax: +t.xMax || 0,
|
|
110
|
+
yMax: +t.yMax || 0,
|
|
111
|
+
vMin: +t.vMin || 0,
|
|
112
|
+
hMin: +t.hMin || 0,
|
|
113
|
+
vMax: +t.vMax || 0,
|
|
114
|
+
hMax: +t.hMax || 0,
|
|
115
|
+
}); });
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
TransformVFXItem.prototype.onItemRemoved = function (composition) {
|
|
119
|
+
var _a;
|
|
120
|
+
(_a = this.targets) === null || _a === void 0 ? void 0 : _a.forEach(function (target) { var _a; return (_a = composition.loaderData.deviceTransformer) === null || _a === void 0 ? void 0 : _a.removeTarget(target.name); });
|
|
121
|
+
};
|
|
122
|
+
TransformVFXItem.prototype.doCreateContent = function (composition) {
|
|
123
|
+
var _a;
|
|
124
|
+
var transformer = composition.loaderData.deviceTransformer;
|
|
125
|
+
if (transformer) {
|
|
126
|
+
(_a = this.targets) === null || _a === void 0 ? void 0 : _a.forEach(function (target) { return transformer.addTarget(target); });
|
|
127
|
+
transformer.initComposition();
|
|
128
|
+
}
|
|
129
|
+
return {};
|
|
130
|
+
};
|
|
131
|
+
return TransformVFXItem;
|
|
132
|
+
}(VFXItem));
|
|
133
|
+
|
|
85
134
|
var CompositionTransformerAcceler = /** @class */ (function () {
|
|
86
135
|
function CompositionTransformerAcceler(composition) {
|
|
87
136
|
this.composition = composition;
|
|
88
137
|
this.targets = {};
|
|
89
138
|
this.records = {};
|
|
90
|
-
this.
|
|
139
|
+
this.currentPos = {};
|
|
140
|
+
this.currentRot = {};
|
|
91
141
|
this.gammaRange = [-89, 89];
|
|
92
|
-
this.betaRange = [-
|
|
142
|
+
this.betaRange = [-89, 89];
|
|
93
143
|
}
|
|
94
144
|
CompositionTransformerAcceler.prototype.update = function (_a) {
|
|
95
145
|
var x = _a.x, y = _a.y;
|
|
@@ -111,14 +161,19 @@ var CompositionTransformerAcceler = /** @class */ (function () {
|
|
|
111
161
|
var target = this.targets[item.name];
|
|
112
162
|
if (target) {
|
|
113
163
|
var position = item.transform.position.toArray();
|
|
114
|
-
var
|
|
164
|
+
var rotation = item.transform.rotation.toArray();
|
|
165
|
+
var currentPosition = this.currentPos[item.name];
|
|
166
|
+
var currentRot = this.currentRot[item.name];
|
|
115
167
|
this.records[item.name] = {
|
|
116
168
|
item: item,
|
|
117
169
|
position: position,
|
|
170
|
+
rotation: rotation,
|
|
118
171
|
};
|
|
119
172
|
if (currentPosition) {
|
|
120
|
-
|
|
121
|
-
|
|
173
|
+
item.transform.setPosition(currentPosition[0], currentPosition[1], currentPosition[2]);
|
|
174
|
+
}
|
|
175
|
+
if (currentRot) {
|
|
176
|
+
item.transform.setRotation(currentRot[0], currentRot[1], currentRot[2]);
|
|
122
177
|
}
|
|
123
178
|
}
|
|
124
179
|
}
|
|
@@ -131,12 +186,13 @@ var CompositionTransformerAcceler = /** @class */ (function () {
|
|
|
131
186
|
delete this.records[name];
|
|
132
187
|
};
|
|
133
188
|
CompositionTransformerAcceler.prototype.moveLayer = function (name, _a) {
|
|
134
|
-
var _b;
|
|
135
|
-
var
|
|
189
|
+
var _b, _c;
|
|
190
|
+
var _d;
|
|
136
191
|
var x = _a.x, y = _a.y;
|
|
137
|
-
var layer = (
|
|
192
|
+
var layer = (_d = this.records[name]) === null || _d === void 0 ? void 0 : _d.item;
|
|
138
193
|
if (layer) {
|
|
139
194
|
var initPosition = this.records[name].position;
|
|
195
|
+
var initRotation = this.records[name].rotation;
|
|
140
196
|
var target = this.targets[name];
|
|
141
197
|
var beta = clamp(x, this.betaRange), gamma = clamp(y, this.gammaRange);
|
|
142
198
|
if (target) {
|
|
@@ -145,8 +201,17 @@ var CompositionTransformerAcceler = /** @class */ (function () {
|
|
|
145
201
|
initPosition[1] + 1.2 * mapRange((gamma - this.betaRange[0]) / (this.betaRange[1] - this.betaRange[0]), target.yMin, target.yMax),
|
|
146
202
|
initPosition[2],
|
|
147
203
|
];
|
|
204
|
+
var br = (clamp(x * 2, this.betaRange) - this.betaRange[0]) / (this.betaRange[1] - this.betaRange[0]);
|
|
205
|
+
var gr = (clamp(y * 2 - VERTICAL_INIT_DEGREE, this.gammaRange) - this.gammaRange[0]) / (this.gammaRange[1] - this.gammaRange[0]);
|
|
206
|
+
var rotation = [
|
|
207
|
+
initRotation[0] + mapRange(gr, target.hMin, target.hMax),
|
|
208
|
+
initRotation[1] + mapRange(br, target.vMin, target.vMax),
|
|
209
|
+
initRotation[2],
|
|
210
|
+
];
|
|
148
211
|
(_b = layer.transform).setPosition.apply(_b, __spreadArray([], __read(position), false));
|
|
149
|
-
|
|
212
|
+
(_c = layer.transform).setRotation.apply(_c, __spreadArray([], __read(rotation), false));
|
|
213
|
+
this.currentPos[name] = position.slice();
|
|
214
|
+
this.currentRot[name] = rotation.slice();
|
|
150
215
|
}
|
|
151
216
|
}
|
|
152
217
|
};
|
|
@@ -746,48 +811,8 @@ function openDeviceMotion() {
|
|
|
746
811
|
getAdapter().connect();
|
|
747
812
|
}
|
|
748
813
|
|
|
749
|
-
var TransformVFXItem = /** @class */ (function (_super) {
|
|
750
|
-
__extends(TransformVFXItem, _super);
|
|
751
|
-
function TransformVFXItem() {
|
|
752
|
-
return _super !== null && _super.apply(this, arguments) || this;
|
|
753
|
-
}
|
|
754
|
-
Object.defineProperty(TransformVFXItem.prototype, "type", {
|
|
755
|
-
get: function () {
|
|
756
|
-
return 'orientation-transformer';
|
|
757
|
-
},
|
|
758
|
-
enumerable: false,
|
|
759
|
-
configurable: true
|
|
760
|
-
});
|
|
761
|
-
TransformVFXItem.prototype.onConstructed = function (options) {
|
|
762
|
-
var targets = options.content.options.targets;
|
|
763
|
-
if (targets) {
|
|
764
|
-
this.targets = targets.map(function (t) { return ({
|
|
765
|
-
name: t.name,
|
|
766
|
-
xMin: +t.xMin || 0,
|
|
767
|
-
yMin: +t.yMin || 0,
|
|
768
|
-
xMax: +t.xMax || 0,
|
|
769
|
-
yMax: +t.yMax || 0,
|
|
770
|
-
}); });
|
|
771
|
-
}
|
|
772
|
-
};
|
|
773
|
-
TransformVFXItem.prototype.onItemRemoved = function (composition) {
|
|
774
|
-
var _a;
|
|
775
|
-
(_a = this.targets) === null || _a === void 0 ? void 0 : _a.forEach(function (target) { var _a; return (_a = composition.loaderData.deviceTransformer) === null || _a === void 0 ? void 0 : _a.removeTarget(target.name); });
|
|
776
|
-
};
|
|
777
|
-
TransformVFXItem.prototype.doCreateContent = function (composition) {
|
|
778
|
-
var _a;
|
|
779
|
-
var transformer = composition.loaderData.deviceTransformer;
|
|
780
|
-
if (transformer) {
|
|
781
|
-
(_a = this.targets) === null || _a === void 0 ? void 0 : _a.forEach(function (target) { return transformer.addTarget(target); });
|
|
782
|
-
transformer.initComposition();
|
|
783
|
-
}
|
|
784
|
-
return {};
|
|
785
|
-
};
|
|
786
|
-
return TransformVFXItem;
|
|
787
|
-
}(VFXItem));
|
|
788
|
-
|
|
789
814
|
registerPlugin('orientation-transformer', OrientationPluginLoader, TransformVFXItem);
|
|
790
|
-
var version = "1.3.0
|
|
815
|
+
var version = "1.3.0";
|
|
791
816
|
logger.info('plugin orientation transformer version: ' + version);
|
|
792
817
|
|
|
793
818
|
export { OrientationAdapterAcceler, closeDeviceMotion, getAdapter, openDeviceMotion, version };
|
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":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import type { spec, Composition } from '@galacean/effects';
|
|
2
2
|
import { VFXItem } from '@galacean/effects';
|
|
3
3
|
import type { TransformItem } from './transform-item';
|
|
4
|
+
/**
|
|
5
|
+
* 水平旋转变化起始角(手机处于改角度时无变化)
|
|
6
|
+
* 待调试
|
|
7
|
+
*/
|
|
8
|
+
export declare const VERTICAL_INIT_DEGREE = 45;
|
|
4
9
|
export declare class TransformVFXItem extends VFXItem<TransformItem> {
|
|
5
10
|
private targets?;
|
|
6
11
|
get type(): spec.ItemType;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@galacean/effects-plugin-orientation-transformer",
|
|
3
|
-
"version": "1.3.0
|
|
3
|
+
"version": "1.3.0",
|
|
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": "1.3.0
|
|
34
|
+
"@galacean/effects": "1.3.0"
|
|
35
35
|
},
|
|
36
36
|
"scripts": {
|
|
37
37
|
"dev": "vite",
|