arcanumcube 0.1.2 → 0.1.4
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/README.md +4 -1
- package/dist/cjs/{arcanumcube.cjs → arcanumcube.js} +895 -70
- package/dist/cjs/core.js +733 -0
- package/dist/esm/arcanumcube.module.js +893 -69
- package/dist/esm/arcanumcube.module.min.js +5 -5
- package/dist/esm/core.module.js +686 -0
- package/dist/esm/core.module.min.js +4 -0
- package/dist/index.html +4 -5
- package/dist/types/skins.d.ts +1 -0
- package/dist/types/webgl.d.ts +12 -9
- package/package.json +16 -5
|
@@ -60,7 +60,8 @@ __export(arcanumcube_exports, {
|
|
|
60
60
|
getNextStickerColors: () => getNextStickerColors,
|
|
61
61
|
getRandomTwistList: () => getRandomTwistList,
|
|
62
62
|
getStickerIndex: () => getStickerIndex,
|
|
63
|
-
getStickerPermutationGroup: () => getStickerPermutationGroup
|
|
63
|
+
getStickerPermutationGroup: () => getStickerPermutationGroup,
|
|
64
|
+
loadDefaultLogoTexture: () => loadDefaultLogoTexture
|
|
64
65
|
});
|
|
65
66
|
module.exports = __toCommonJS(arcanumcube_exports);
|
|
66
67
|
|
|
@@ -728,7 +729,9 @@ function getStickerPermutationGroup(position, position2, twists, reverse = false
|
|
|
728
729
|
|
|
729
730
|
// src/skins.ts
|
|
730
731
|
var THREE = __toESM(require("three"), 1);
|
|
731
|
-
|
|
732
|
+
var DefaultLogoTextures;
|
|
733
|
+
function loadDefaultLogoTexture() {
|
|
734
|
+
if (DefaultLogoTextures) return DefaultLogoTextures;
|
|
732
735
|
const image = document.createElementNS("http://www.w3.org/1999/xhtml", "img");
|
|
733
736
|
image.src = DefaultLogo;
|
|
734
737
|
const texture = new THREE.Texture(image);
|
|
@@ -756,7 +759,7 @@ var standardSkin = {
|
|
|
756
759
|
cube: {
|
|
757
760
|
material: () => {
|
|
758
761
|
return new THREE.MeshStandardMaterial({
|
|
759
|
-
color:
|
|
762
|
+
color: 3092271,
|
|
760
763
|
metalness: 0.8,
|
|
761
764
|
roughness: 0.4
|
|
762
765
|
});
|
|
@@ -792,10 +795,6 @@ var standardSkin = {
|
|
|
792
795
|
];
|
|
793
796
|
const col = ColorList[color];
|
|
794
797
|
let texture = void 0;
|
|
795
|
-
if (x === SIDE_MIDDLE && y === SIDE_MAX && z === SIDE_MIDDLE) {
|
|
796
|
-
texture = createDefaultLogoTexture();
|
|
797
|
-
texture.flipY = false;
|
|
798
|
-
}
|
|
799
798
|
const mat = new THREE.MeshStandardMaterial({
|
|
800
799
|
color: col,
|
|
801
800
|
metalness: 0.4,
|
|
@@ -872,10 +871,6 @@ var metalicSkin = {
|
|
|
872
871
|
];
|
|
873
872
|
const col = ColorList[color];
|
|
874
873
|
let texture = void 0;
|
|
875
|
-
if (x === SIDE_MIDDLE && y === SIDE_MAX && z === SIDE_MIDDLE) {
|
|
876
|
-
texture = createDefaultLogoTexture();
|
|
877
|
-
texture.flipY = false;
|
|
878
|
-
}
|
|
879
874
|
const mat = new THREE.MeshStandardMaterial({
|
|
880
875
|
color: col,
|
|
881
876
|
metalness: 0.7,
|
|
@@ -949,10 +944,6 @@ var goldSkin = {
|
|
|
949
944
|
];
|
|
950
945
|
const col = ColorList[color];
|
|
951
946
|
let texture = void 0;
|
|
952
|
-
if (x === SIDE_MIDDLE && y === SIDE_MAX && z === SIDE_MIDDLE) {
|
|
953
|
-
texture = createDefaultLogoTexture();
|
|
954
|
-
texture.flipY = false;
|
|
955
|
-
}
|
|
956
947
|
const mat = new THREE.MeshStandardMaterial({
|
|
957
948
|
color: col,
|
|
958
949
|
metalness: 1,
|
|
@@ -1026,10 +1017,6 @@ var acrylicSkin = {
|
|
|
1026
1017
|
];
|
|
1027
1018
|
const col = ColorList[color];
|
|
1028
1019
|
let texture = void 0;
|
|
1029
|
-
if (x === SIDE_MIDDLE && y === SIDE_MAX && z === SIDE_MIDDLE) {
|
|
1030
|
-
texture = createDefaultLogoTexture();
|
|
1031
|
-
texture.flipY = false;
|
|
1032
|
-
}
|
|
1033
1020
|
const mat = new THREE.MeshStandardMaterial({
|
|
1034
1021
|
color: col,
|
|
1035
1022
|
metalness: 1,
|
|
@@ -1104,10 +1091,6 @@ var crystalSkin = {
|
|
|
1104
1091
|
];
|
|
1105
1092
|
const col = ColorList[color];
|
|
1106
1093
|
let texture = void 0;
|
|
1107
|
-
if (x === SIDE_MIDDLE && y === SIDE_MAX && z === SIDE_MIDDLE) {
|
|
1108
|
-
texture = createDefaultLogoTexture();
|
|
1109
|
-
texture.flipY = false;
|
|
1110
|
-
}
|
|
1111
1094
|
const mat = new THREE.MeshBasicMaterial({
|
|
1112
1095
|
color: col,
|
|
1113
1096
|
refractionRatio: 0.75,
|
|
@@ -1151,7 +1134,838 @@ var DefaultLogo = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAIAAAD
|
|
|
1151
1134
|
var THREE3 = __toESM(require("three"), 1);
|
|
1152
1135
|
var import_GLTFLoader = require("three/examples/jsm/loaders/GLTFLoader.js");
|
|
1153
1136
|
var BufferGeometryUtils = __toESM(require("three/examples/jsm/utils/BufferGeometryUtils.js"), 1);
|
|
1154
|
-
|
|
1137
|
+
|
|
1138
|
+
// node_modules/@tweenjs/tween.js/dist/tween.esm.js
|
|
1139
|
+
var Easing = Object.freeze({
|
|
1140
|
+
Linear: Object.freeze({
|
|
1141
|
+
None: function(amount) {
|
|
1142
|
+
return amount;
|
|
1143
|
+
},
|
|
1144
|
+
In: function(amount) {
|
|
1145
|
+
return amount;
|
|
1146
|
+
},
|
|
1147
|
+
Out: function(amount) {
|
|
1148
|
+
return amount;
|
|
1149
|
+
},
|
|
1150
|
+
InOut: function(amount) {
|
|
1151
|
+
return amount;
|
|
1152
|
+
}
|
|
1153
|
+
}),
|
|
1154
|
+
Quadratic: Object.freeze({
|
|
1155
|
+
In: function(amount) {
|
|
1156
|
+
return amount * amount;
|
|
1157
|
+
},
|
|
1158
|
+
Out: function(amount) {
|
|
1159
|
+
return amount * (2 - amount);
|
|
1160
|
+
},
|
|
1161
|
+
InOut: function(amount) {
|
|
1162
|
+
if ((amount *= 2) < 1) {
|
|
1163
|
+
return 0.5 * amount * amount;
|
|
1164
|
+
}
|
|
1165
|
+
return -0.5 * (--amount * (amount - 2) - 1);
|
|
1166
|
+
}
|
|
1167
|
+
}),
|
|
1168
|
+
Cubic: Object.freeze({
|
|
1169
|
+
In: function(amount) {
|
|
1170
|
+
return amount * amount * amount;
|
|
1171
|
+
},
|
|
1172
|
+
Out: function(amount) {
|
|
1173
|
+
return --amount * amount * amount + 1;
|
|
1174
|
+
},
|
|
1175
|
+
InOut: function(amount) {
|
|
1176
|
+
if ((amount *= 2) < 1) {
|
|
1177
|
+
return 0.5 * amount * amount * amount;
|
|
1178
|
+
}
|
|
1179
|
+
return 0.5 * ((amount -= 2) * amount * amount + 2);
|
|
1180
|
+
}
|
|
1181
|
+
}),
|
|
1182
|
+
Quartic: Object.freeze({
|
|
1183
|
+
In: function(amount) {
|
|
1184
|
+
return amount * amount * amount * amount;
|
|
1185
|
+
},
|
|
1186
|
+
Out: function(amount) {
|
|
1187
|
+
return 1 - --amount * amount * amount * amount;
|
|
1188
|
+
},
|
|
1189
|
+
InOut: function(amount) {
|
|
1190
|
+
if ((amount *= 2) < 1) {
|
|
1191
|
+
return 0.5 * amount * amount * amount * amount;
|
|
1192
|
+
}
|
|
1193
|
+
return -0.5 * ((amount -= 2) * amount * amount * amount - 2);
|
|
1194
|
+
}
|
|
1195
|
+
}),
|
|
1196
|
+
Quintic: Object.freeze({
|
|
1197
|
+
In: function(amount) {
|
|
1198
|
+
return amount * amount * amount * amount * amount;
|
|
1199
|
+
},
|
|
1200
|
+
Out: function(amount) {
|
|
1201
|
+
return --amount * amount * amount * amount * amount + 1;
|
|
1202
|
+
},
|
|
1203
|
+
InOut: function(amount) {
|
|
1204
|
+
if ((amount *= 2) < 1) {
|
|
1205
|
+
return 0.5 * amount * amount * amount * amount * amount;
|
|
1206
|
+
}
|
|
1207
|
+
return 0.5 * ((amount -= 2) * amount * amount * amount * amount + 2);
|
|
1208
|
+
}
|
|
1209
|
+
}),
|
|
1210
|
+
Sinusoidal: Object.freeze({
|
|
1211
|
+
In: function(amount) {
|
|
1212
|
+
return 1 - Math.sin((1 - amount) * Math.PI / 2);
|
|
1213
|
+
},
|
|
1214
|
+
Out: function(amount) {
|
|
1215
|
+
return Math.sin(amount * Math.PI / 2);
|
|
1216
|
+
},
|
|
1217
|
+
InOut: function(amount) {
|
|
1218
|
+
return 0.5 * (1 - Math.sin(Math.PI * (0.5 - amount)));
|
|
1219
|
+
}
|
|
1220
|
+
}),
|
|
1221
|
+
Exponential: Object.freeze({
|
|
1222
|
+
In: function(amount) {
|
|
1223
|
+
return amount === 0 ? 0 : Math.pow(1024, amount - 1);
|
|
1224
|
+
},
|
|
1225
|
+
Out: function(amount) {
|
|
1226
|
+
return amount === 1 ? 1 : 1 - Math.pow(2, -10 * amount);
|
|
1227
|
+
},
|
|
1228
|
+
InOut: function(amount) {
|
|
1229
|
+
if (amount === 0) {
|
|
1230
|
+
return 0;
|
|
1231
|
+
}
|
|
1232
|
+
if (amount === 1) {
|
|
1233
|
+
return 1;
|
|
1234
|
+
}
|
|
1235
|
+
if ((amount *= 2) < 1) {
|
|
1236
|
+
return 0.5 * Math.pow(1024, amount - 1);
|
|
1237
|
+
}
|
|
1238
|
+
return 0.5 * (-Math.pow(2, -10 * (amount - 1)) + 2);
|
|
1239
|
+
}
|
|
1240
|
+
}),
|
|
1241
|
+
Circular: Object.freeze({
|
|
1242
|
+
In: function(amount) {
|
|
1243
|
+
return 1 - Math.sqrt(1 - amount * amount);
|
|
1244
|
+
},
|
|
1245
|
+
Out: function(amount) {
|
|
1246
|
+
return Math.sqrt(1 - --amount * amount);
|
|
1247
|
+
},
|
|
1248
|
+
InOut: function(amount) {
|
|
1249
|
+
if ((amount *= 2) < 1) {
|
|
1250
|
+
return -0.5 * (Math.sqrt(1 - amount * amount) - 1);
|
|
1251
|
+
}
|
|
1252
|
+
return 0.5 * (Math.sqrt(1 - (amount -= 2) * amount) + 1);
|
|
1253
|
+
}
|
|
1254
|
+
}),
|
|
1255
|
+
Elastic: Object.freeze({
|
|
1256
|
+
In: function(amount) {
|
|
1257
|
+
if (amount === 0) {
|
|
1258
|
+
return 0;
|
|
1259
|
+
}
|
|
1260
|
+
if (amount === 1) {
|
|
1261
|
+
return 1;
|
|
1262
|
+
}
|
|
1263
|
+
return -Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI);
|
|
1264
|
+
},
|
|
1265
|
+
Out: function(amount) {
|
|
1266
|
+
if (amount === 0) {
|
|
1267
|
+
return 0;
|
|
1268
|
+
}
|
|
1269
|
+
if (amount === 1) {
|
|
1270
|
+
return 1;
|
|
1271
|
+
}
|
|
1272
|
+
return Math.pow(2, -10 * amount) * Math.sin((amount - 0.1) * 5 * Math.PI) + 1;
|
|
1273
|
+
},
|
|
1274
|
+
InOut: function(amount) {
|
|
1275
|
+
if (amount === 0) {
|
|
1276
|
+
return 0;
|
|
1277
|
+
}
|
|
1278
|
+
if (amount === 1) {
|
|
1279
|
+
return 1;
|
|
1280
|
+
}
|
|
1281
|
+
amount *= 2;
|
|
1282
|
+
if (amount < 1) {
|
|
1283
|
+
return -0.5 * Math.pow(2, 10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI);
|
|
1284
|
+
}
|
|
1285
|
+
return 0.5 * Math.pow(2, -10 * (amount - 1)) * Math.sin((amount - 1.1) * 5 * Math.PI) + 1;
|
|
1286
|
+
}
|
|
1287
|
+
}),
|
|
1288
|
+
Back: Object.freeze({
|
|
1289
|
+
In: function(amount) {
|
|
1290
|
+
var s = 1.70158;
|
|
1291
|
+
return amount === 1 ? 1 : amount * amount * ((s + 1) * amount - s);
|
|
1292
|
+
},
|
|
1293
|
+
Out: function(amount) {
|
|
1294
|
+
var s = 1.70158;
|
|
1295
|
+
return amount === 0 ? 0 : --amount * amount * ((s + 1) * amount + s) + 1;
|
|
1296
|
+
},
|
|
1297
|
+
InOut: function(amount) {
|
|
1298
|
+
var s = 1.70158 * 1.525;
|
|
1299
|
+
if ((amount *= 2) < 1) {
|
|
1300
|
+
return 0.5 * (amount * amount * ((s + 1) * amount - s));
|
|
1301
|
+
}
|
|
1302
|
+
return 0.5 * ((amount -= 2) * amount * ((s + 1) * amount + s) + 2);
|
|
1303
|
+
}
|
|
1304
|
+
}),
|
|
1305
|
+
Bounce: Object.freeze({
|
|
1306
|
+
In: function(amount) {
|
|
1307
|
+
return 1 - Easing.Bounce.Out(1 - amount);
|
|
1308
|
+
},
|
|
1309
|
+
Out: function(amount) {
|
|
1310
|
+
if (amount < 1 / 2.75) {
|
|
1311
|
+
return 7.5625 * amount * amount;
|
|
1312
|
+
} else if (amount < 2 / 2.75) {
|
|
1313
|
+
return 7.5625 * (amount -= 1.5 / 2.75) * amount + 0.75;
|
|
1314
|
+
} else if (amount < 2.5 / 2.75) {
|
|
1315
|
+
return 7.5625 * (amount -= 2.25 / 2.75) * amount + 0.9375;
|
|
1316
|
+
} else {
|
|
1317
|
+
return 7.5625 * (amount -= 2.625 / 2.75) * amount + 0.984375;
|
|
1318
|
+
}
|
|
1319
|
+
},
|
|
1320
|
+
InOut: function(amount) {
|
|
1321
|
+
if (amount < 0.5) {
|
|
1322
|
+
return Easing.Bounce.In(amount * 2) * 0.5;
|
|
1323
|
+
}
|
|
1324
|
+
return Easing.Bounce.Out(amount * 2 - 1) * 0.5 + 0.5;
|
|
1325
|
+
}
|
|
1326
|
+
}),
|
|
1327
|
+
generatePow: function(power) {
|
|
1328
|
+
if (power === void 0) {
|
|
1329
|
+
power = 4;
|
|
1330
|
+
}
|
|
1331
|
+
power = power < Number.EPSILON ? Number.EPSILON : power;
|
|
1332
|
+
power = power > 1e4 ? 1e4 : power;
|
|
1333
|
+
return {
|
|
1334
|
+
In: function(amount) {
|
|
1335
|
+
return Math.pow(amount, power);
|
|
1336
|
+
},
|
|
1337
|
+
Out: function(amount) {
|
|
1338
|
+
return 1 - Math.pow(1 - amount, power);
|
|
1339
|
+
},
|
|
1340
|
+
InOut: function(amount) {
|
|
1341
|
+
if (amount < 0.5) {
|
|
1342
|
+
return Math.pow(amount * 2, power) / 2;
|
|
1343
|
+
}
|
|
1344
|
+
return (1 - Math.pow(2 - amount * 2, power)) / 2 + 0.5;
|
|
1345
|
+
}
|
|
1346
|
+
};
|
|
1347
|
+
}
|
|
1348
|
+
});
|
|
1349
|
+
var now = function() {
|
|
1350
|
+
return performance.now();
|
|
1351
|
+
};
|
|
1352
|
+
var Group = (
|
|
1353
|
+
/** @class */
|
|
1354
|
+
function() {
|
|
1355
|
+
function Group3() {
|
|
1356
|
+
var tweens = [];
|
|
1357
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
1358
|
+
tweens[_i] = arguments[_i];
|
|
1359
|
+
}
|
|
1360
|
+
this._tweens = {};
|
|
1361
|
+
this._tweensAddedDuringUpdate = {};
|
|
1362
|
+
this.add.apply(this, tweens);
|
|
1363
|
+
}
|
|
1364
|
+
Group3.prototype.getAll = function() {
|
|
1365
|
+
var _this = this;
|
|
1366
|
+
return Object.keys(this._tweens).map(function(tweenId) {
|
|
1367
|
+
return _this._tweens[tweenId];
|
|
1368
|
+
});
|
|
1369
|
+
};
|
|
1370
|
+
Group3.prototype.removeAll = function() {
|
|
1371
|
+
this._tweens = {};
|
|
1372
|
+
};
|
|
1373
|
+
Group3.prototype.add = function() {
|
|
1374
|
+
var _a;
|
|
1375
|
+
var tweens = [];
|
|
1376
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
1377
|
+
tweens[_i] = arguments[_i];
|
|
1378
|
+
}
|
|
1379
|
+
for (var _b = 0, tweens_1 = tweens; _b < tweens_1.length; _b++) {
|
|
1380
|
+
var tween = tweens_1[_b];
|
|
1381
|
+
(_a = tween._group) === null || _a === void 0 ? void 0 : _a.remove(tween);
|
|
1382
|
+
tween._group = this;
|
|
1383
|
+
this._tweens[tween.getId()] = tween;
|
|
1384
|
+
this._tweensAddedDuringUpdate[tween.getId()] = tween;
|
|
1385
|
+
}
|
|
1386
|
+
};
|
|
1387
|
+
Group3.prototype.remove = function() {
|
|
1388
|
+
var tweens = [];
|
|
1389
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
1390
|
+
tweens[_i] = arguments[_i];
|
|
1391
|
+
}
|
|
1392
|
+
for (var _a = 0, tweens_2 = tweens; _a < tweens_2.length; _a++) {
|
|
1393
|
+
var tween = tweens_2[_a];
|
|
1394
|
+
tween._group = void 0;
|
|
1395
|
+
delete this._tweens[tween.getId()];
|
|
1396
|
+
delete this._tweensAddedDuringUpdate[tween.getId()];
|
|
1397
|
+
}
|
|
1398
|
+
};
|
|
1399
|
+
Group3.prototype.allStopped = function() {
|
|
1400
|
+
return this.getAll().every(function(tween) {
|
|
1401
|
+
return !tween.isPlaying();
|
|
1402
|
+
});
|
|
1403
|
+
};
|
|
1404
|
+
Group3.prototype.update = function(time, preserve) {
|
|
1405
|
+
if (time === void 0) {
|
|
1406
|
+
time = now();
|
|
1407
|
+
}
|
|
1408
|
+
if (preserve === void 0) {
|
|
1409
|
+
preserve = true;
|
|
1410
|
+
}
|
|
1411
|
+
var tweenIds = Object.keys(this._tweens);
|
|
1412
|
+
if (tweenIds.length === 0)
|
|
1413
|
+
return;
|
|
1414
|
+
while (tweenIds.length > 0) {
|
|
1415
|
+
this._tweensAddedDuringUpdate = {};
|
|
1416
|
+
for (var i = 0; i < tweenIds.length; i++) {
|
|
1417
|
+
var tween = this._tweens[tweenIds[i]];
|
|
1418
|
+
var autoStart = !preserve;
|
|
1419
|
+
if (tween && tween.update(time, autoStart) === false && !preserve)
|
|
1420
|
+
this.remove(tween);
|
|
1421
|
+
}
|
|
1422
|
+
tweenIds = Object.keys(this._tweensAddedDuringUpdate);
|
|
1423
|
+
}
|
|
1424
|
+
};
|
|
1425
|
+
return Group3;
|
|
1426
|
+
}()
|
|
1427
|
+
);
|
|
1428
|
+
var Interpolation = {
|
|
1429
|
+
Linear: function(v, k) {
|
|
1430
|
+
var m = v.length - 1;
|
|
1431
|
+
var f = m * k;
|
|
1432
|
+
var i = Math.floor(f);
|
|
1433
|
+
var fn = Interpolation.Utils.Linear;
|
|
1434
|
+
if (k < 0) {
|
|
1435
|
+
return fn(v[0], v[1], f);
|
|
1436
|
+
}
|
|
1437
|
+
if (k > 1) {
|
|
1438
|
+
return fn(v[m], v[m - 1], m - f);
|
|
1439
|
+
}
|
|
1440
|
+
return fn(v[i], v[i + 1 > m ? m : i + 1], f - i);
|
|
1441
|
+
},
|
|
1442
|
+
Bezier: function(v, k) {
|
|
1443
|
+
var b = 0;
|
|
1444
|
+
var n = v.length - 1;
|
|
1445
|
+
var pw = Math.pow;
|
|
1446
|
+
var bn = Interpolation.Utils.Bernstein;
|
|
1447
|
+
for (var i = 0; i <= n; i++) {
|
|
1448
|
+
b += pw(1 - k, n - i) * pw(k, i) * v[i] * bn(n, i);
|
|
1449
|
+
}
|
|
1450
|
+
return b;
|
|
1451
|
+
},
|
|
1452
|
+
CatmullRom: function(v, k) {
|
|
1453
|
+
var m = v.length - 1;
|
|
1454
|
+
var f = m * k;
|
|
1455
|
+
var i = Math.floor(f);
|
|
1456
|
+
var fn = Interpolation.Utils.CatmullRom;
|
|
1457
|
+
if (v[0] === v[m]) {
|
|
1458
|
+
if (k < 0) {
|
|
1459
|
+
i = Math.floor(f = m * (1 + k));
|
|
1460
|
+
}
|
|
1461
|
+
return fn(v[(i - 1 + m) % m], v[i], v[(i + 1) % m], v[(i + 2) % m], f - i);
|
|
1462
|
+
} else {
|
|
1463
|
+
if (k < 0) {
|
|
1464
|
+
return v[0] - (fn(v[0], v[0], v[1], v[1], -f) - v[0]);
|
|
1465
|
+
}
|
|
1466
|
+
if (k > 1) {
|
|
1467
|
+
return v[m] - (fn(v[m], v[m], v[m - 1], v[m - 1], f - m) - v[m]);
|
|
1468
|
+
}
|
|
1469
|
+
return fn(v[i ? i - 1 : 0], v[i], v[m < i + 1 ? m : i + 1], v[m < i + 2 ? m : i + 2], f - i);
|
|
1470
|
+
}
|
|
1471
|
+
},
|
|
1472
|
+
Utils: {
|
|
1473
|
+
Linear: function(p0, p1, t) {
|
|
1474
|
+
return (p1 - p0) * t + p0;
|
|
1475
|
+
},
|
|
1476
|
+
Bernstein: function(n, i) {
|
|
1477
|
+
var fc = Interpolation.Utils.Factorial;
|
|
1478
|
+
return fc(n) / fc(i) / fc(n - i);
|
|
1479
|
+
},
|
|
1480
|
+
Factorial: /* @__PURE__ */ function() {
|
|
1481
|
+
var a = [1];
|
|
1482
|
+
return function(n) {
|
|
1483
|
+
var s = 1;
|
|
1484
|
+
if (a[n]) {
|
|
1485
|
+
return a[n];
|
|
1486
|
+
}
|
|
1487
|
+
for (var i = n; i > 1; i--) {
|
|
1488
|
+
s *= i;
|
|
1489
|
+
}
|
|
1490
|
+
a[n] = s;
|
|
1491
|
+
return s;
|
|
1492
|
+
};
|
|
1493
|
+
}(),
|
|
1494
|
+
CatmullRom: function(p0, p1, p2, p3, t) {
|
|
1495
|
+
var v0 = (p2 - p0) * 0.5;
|
|
1496
|
+
var v1 = (p3 - p1) * 0.5;
|
|
1497
|
+
var t2 = t * t;
|
|
1498
|
+
var t3 = t * t2;
|
|
1499
|
+
return (2 * p1 - 2 * p2 + v0 + v1) * t3 + (-3 * p1 + 3 * p2 - 2 * v0 - v1) * t2 + v0 * t + p1;
|
|
1500
|
+
}
|
|
1501
|
+
}
|
|
1502
|
+
};
|
|
1503
|
+
var Sequence = (
|
|
1504
|
+
/** @class */
|
|
1505
|
+
function() {
|
|
1506
|
+
function Sequence2() {
|
|
1507
|
+
}
|
|
1508
|
+
Sequence2.nextId = function() {
|
|
1509
|
+
return Sequence2._nextId++;
|
|
1510
|
+
};
|
|
1511
|
+
Sequence2._nextId = 0;
|
|
1512
|
+
return Sequence2;
|
|
1513
|
+
}()
|
|
1514
|
+
);
|
|
1515
|
+
var mainGroup = new Group();
|
|
1516
|
+
var Tween = (
|
|
1517
|
+
/** @class */
|
|
1518
|
+
function() {
|
|
1519
|
+
function Tween2(object, group) {
|
|
1520
|
+
this._isPaused = false;
|
|
1521
|
+
this._pauseStart = 0;
|
|
1522
|
+
this._valuesStart = {};
|
|
1523
|
+
this._valuesEnd = {};
|
|
1524
|
+
this._valuesStartRepeat = {};
|
|
1525
|
+
this._duration = 1e3;
|
|
1526
|
+
this._isDynamic = false;
|
|
1527
|
+
this._initialRepeat = 0;
|
|
1528
|
+
this._repeat = 0;
|
|
1529
|
+
this._yoyo = false;
|
|
1530
|
+
this._isPlaying = false;
|
|
1531
|
+
this._reversed = false;
|
|
1532
|
+
this._delayTime = 0;
|
|
1533
|
+
this._startTime = 0;
|
|
1534
|
+
this._easingFunction = Easing.Linear.None;
|
|
1535
|
+
this._interpolationFunction = Interpolation.Linear;
|
|
1536
|
+
this._chainedTweens = [];
|
|
1537
|
+
this._onStartCallbackFired = false;
|
|
1538
|
+
this._onEveryStartCallbackFired = false;
|
|
1539
|
+
this._id = Sequence.nextId();
|
|
1540
|
+
this._isChainStopped = false;
|
|
1541
|
+
this._propertiesAreSetUp = false;
|
|
1542
|
+
this._goToEnd = false;
|
|
1543
|
+
this._object = object;
|
|
1544
|
+
if (typeof group === "object") {
|
|
1545
|
+
this._group = group;
|
|
1546
|
+
group.add(this);
|
|
1547
|
+
} else if (group === true) {
|
|
1548
|
+
this._group = mainGroup;
|
|
1549
|
+
mainGroup.add(this);
|
|
1550
|
+
}
|
|
1551
|
+
}
|
|
1552
|
+
Tween2.prototype.getId = function() {
|
|
1553
|
+
return this._id;
|
|
1554
|
+
};
|
|
1555
|
+
Tween2.prototype.isPlaying = function() {
|
|
1556
|
+
return this._isPlaying;
|
|
1557
|
+
};
|
|
1558
|
+
Tween2.prototype.isPaused = function() {
|
|
1559
|
+
return this._isPaused;
|
|
1560
|
+
};
|
|
1561
|
+
Tween2.prototype.getDuration = function() {
|
|
1562
|
+
return this._duration;
|
|
1563
|
+
};
|
|
1564
|
+
Tween2.prototype.to = function(target, duration) {
|
|
1565
|
+
if (duration === void 0) {
|
|
1566
|
+
duration = 1e3;
|
|
1567
|
+
}
|
|
1568
|
+
if (this._isPlaying)
|
|
1569
|
+
throw new Error("Can not call Tween.to() while Tween is already started or paused. Stop the Tween first.");
|
|
1570
|
+
this._valuesEnd = target;
|
|
1571
|
+
this._propertiesAreSetUp = false;
|
|
1572
|
+
this._duration = duration < 0 ? 0 : duration;
|
|
1573
|
+
return this;
|
|
1574
|
+
};
|
|
1575
|
+
Tween2.prototype.duration = function(duration) {
|
|
1576
|
+
if (duration === void 0) {
|
|
1577
|
+
duration = 1e3;
|
|
1578
|
+
}
|
|
1579
|
+
this._duration = duration < 0 ? 0 : duration;
|
|
1580
|
+
return this;
|
|
1581
|
+
};
|
|
1582
|
+
Tween2.prototype.dynamic = function(dynamic) {
|
|
1583
|
+
if (dynamic === void 0) {
|
|
1584
|
+
dynamic = false;
|
|
1585
|
+
}
|
|
1586
|
+
this._isDynamic = dynamic;
|
|
1587
|
+
return this;
|
|
1588
|
+
};
|
|
1589
|
+
Tween2.prototype.start = function(time, overrideStartingValues) {
|
|
1590
|
+
if (time === void 0) {
|
|
1591
|
+
time = now();
|
|
1592
|
+
}
|
|
1593
|
+
if (overrideStartingValues === void 0) {
|
|
1594
|
+
overrideStartingValues = false;
|
|
1595
|
+
}
|
|
1596
|
+
if (this._isPlaying) {
|
|
1597
|
+
return this;
|
|
1598
|
+
}
|
|
1599
|
+
this._repeat = this._initialRepeat;
|
|
1600
|
+
if (this._reversed) {
|
|
1601
|
+
this._reversed = false;
|
|
1602
|
+
for (var property in this._valuesStartRepeat) {
|
|
1603
|
+
this._swapEndStartRepeatValues(property);
|
|
1604
|
+
this._valuesStart[property] = this._valuesStartRepeat[property];
|
|
1605
|
+
}
|
|
1606
|
+
}
|
|
1607
|
+
this._isPlaying = true;
|
|
1608
|
+
this._isPaused = false;
|
|
1609
|
+
this._onStartCallbackFired = false;
|
|
1610
|
+
this._onEveryStartCallbackFired = false;
|
|
1611
|
+
this._isChainStopped = false;
|
|
1612
|
+
this._startTime = time;
|
|
1613
|
+
this._startTime += this._delayTime;
|
|
1614
|
+
if (!this._propertiesAreSetUp || overrideStartingValues) {
|
|
1615
|
+
this._propertiesAreSetUp = true;
|
|
1616
|
+
if (!this._isDynamic) {
|
|
1617
|
+
var tmp = {};
|
|
1618
|
+
for (var prop in this._valuesEnd)
|
|
1619
|
+
tmp[prop] = this._valuesEnd[prop];
|
|
1620
|
+
this._valuesEnd = tmp;
|
|
1621
|
+
}
|
|
1622
|
+
this._setupProperties(this._object, this._valuesStart, this._valuesEnd, this._valuesStartRepeat, overrideStartingValues);
|
|
1623
|
+
}
|
|
1624
|
+
return this;
|
|
1625
|
+
};
|
|
1626
|
+
Tween2.prototype.startFromCurrentValues = function(time) {
|
|
1627
|
+
return this.start(time, true);
|
|
1628
|
+
};
|
|
1629
|
+
Tween2.prototype._setupProperties = function(_object, _valuesStart, _valuesEnd, _valuesStartRepeat, overrideStartingValues) {
|
|
1630
|
+
for (var property in _valuesEnd) {
|
|
1631
|
+
var startValue = _object[property];
|
|
1632
|
+
var startValueIsArray = Array.isArray(startValue);
|
|
1633
|
+
var propType = startValueIsArray ? "array" : typeof startValue;
|
|
1634
|
+
var isInterpolationList = !startValueIsArray && Array.isArray(_valuesEnd[property]);
|
|
1635
|
+
if (propType === "undefined" || propType === "function") {
|
|
1636
|
+
continue;
|
|
1637
|
+
}
|
|
1638
|
+
if (isInterpolationList) {
|
|
1639
|
+
var endValues = _valuesEnd[property];
|
|
1640
|
+
if (endValues.length === 0) {
|
|
1641
|
+
continue;
|
|
1642
|
+
}
|
|
1643
|
+
var temp = [startValue];
|
|
1644
|
+
for (var i = 0, l = endValues.length; i < l; i += 1) {
|
|
1645
|
+
var value = this._handleRelativeValue(startValue, endValues[i]);
|
|
1646
|
+
if (isNaN(value)) {
|
|
1647
|
+
isInterpolationList = false;
|
|
1648
|
+
console.warn("Found invalid interpolation list. Skipping.");
|
|
1649
|
+
break;
|
|
1650
|
+
}
|
|
1651
|
+
temp.push(value);
|
|
1652
|
+
}
|
|
1653
|
+
if (isInterpolationList) {
|
|
1654
|
+
_valuesEnd[property] = temp;
|
|
1655
|
+
}
|
|
1656
|
+
}
|
|
1657
|
+
if ((propType === "object" || startValueIsArray) && startValue && !isInterpolationList) {
|
|
1658
|
+
_valuesStart[property] = startValueIsArray ? [] : {};
|
|
1659
|
+
var nestedObject = startValue;
|
|
1660
|
+
for (var prop in nestedObject) {
|
|
1661
|
+
_valuesStart[property][prop] = nestedObject[prop];
|
|
1662
|
+
}
|
|
1663
|
+
_valuesStartRepeat[property] = startValueIsArray ? [] : {};
|
|
1664
|
+
var endValues = _valuesEnd[property];
|
|
1665
|
+
if (!this._isDynamic) {
|
|
1666
|
+
var tmp = {};
|
|
1667
|
+
for (var prop in endValues)
|
|
1668
|
+
tmp[prop] = endValues[prop];
|
|
1669
|
+
_valuesEnd[property] = endValues = tmp;
|
|
1670
|
+
}
|
|
1671
|
+
this._setupProperties(nestedObject, _valuesStart[property], endValues, _valuesStartRepeat[property], overrideStartingValues);
|
|
1672
|
+
} else {
|
|
1673
|
+
if (typeof _valuesStart[property] === "undefined" || overrideStartingValues) {
|
|
1674
|
+
_valuesStart[property] = startValue;
|
|
1675
|
+
}
|
|
1676
|
+
if (!startValueIsArray) {
|
|
1677
|
+
_valuesStart[property] *= 1;
|
|
1678
|
+
}
|
|
1679
|
+
if (isInterpolationList) {
|
|
1680
|
+
_valuesStartRepeat[property] = _valuesEnd[property].slice().reverse();
|
|
1681
|
+
} else {
|
|
1682
|
+
_valuesStartRepeat[property] = _valuesStart[property] || 0;
|
|
1683
|
+
}
|
|
1684
|
+
}
|
|
1685
|
+
}
|
|
1686
|
+
};
|
|
1687
|
+
Tween2.prototype.stop = function() {
|
|
1688
|
+
if (!this._isChainStopped) {
|
|
1689
|
+
this._isChainStopped = true;
|
|
1690
|
+
this.stopChainedTweens();
|
|
1691
|
+
}
|
|
1692
|
+
if (!this._isPlaying) {
|
|
1693
|
+
return this;
|
|
1694
|
+
}
|
|
1695
|
+
this._isPlaying = false;
|
|
1696
|
+
this._isPaused = false;
|
|
1697
|
+
if (this._onStopCallback) {
|
|
1698
|
+
this._onStopCallback(this._object);
|
|
1699
|
+
}
|
|
1700
|
+
return this;
|
|
1701
|
+
};
|
|
1702
|
+
Tween2.prototype.end = function() {
|
|
1703
|
+
this._goToEnd = true;
|
|
1704
|
+
this.update(this._startTime + this._duration);
|
|
1705
|
+
return this;
|
|
1706
|
+
};
|
|
1707
|
+
Tween2.prototype.pause = function(time) {
|
|
1708
|
+
if (time === void 0) {
|
|
1709
|
+
time = now();
|
|
1710
|
+
}
|
|
1711
|
+
if (this._isPaused || !this._isPlaying) {
|
|
1712
|
+
return this;
|
|
1713
|
+
}
|
|
1714
|
+
this._isPaused = true;
|
|
1715
|
+
this._pauseStart = time;
|
|
1716
|
+
return this;
|
|
1717
|
+
};
|
|
1718
|
+
Tween2.prototype.resume = function(time) {
|
|
1719
|
+
if (time === void 0) {
|
|
1720
|
+
time = now();
|
|
1721
|
+
}
|
|
1722
|
+
if (!this._isPaused || !this._isPlaying) {
|
|
1723
|
+
return this;
|
|
1724
|
+
}
|
|
1725
|
+
this._isPaused = false;
|
|
1726
|
+
this._startTime += time - this._pauseStart;
|
|
1727
|
+
this._pauseStart = 0;
|
|
1728
|
+
return this;
|
|
1729
|
+
};
|
|
1730
|
+
Tween2.prototype.stopChainedTweens = function() {
|
|
1731
|
+
for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {
|
|
1732
|
+
this._chainedTweens[i].stop();
|
|
1733
|
+
}
|
|
1734
|
+
return this;
|
|
1735
|
+
};
|
|
1736
|
+
Tween2.prototype.group = function(group) {
|
|
1737
|
+
if (!group) {
|
|
1738
|
+
console.warn("tween.group() without args has been removed, use group.add(tween) instead.");
|
|
1739
|
+
return this;
|
|
1740
|
+
}
|
|
1741
|
+
group.add(this);
|
|
1742
|
+
return this;
|
|
1743
|
+
};
|
|
1744
|
+
Tween2.prototype.remove = function() {
|
|
1745
|
+
var _a;
|
|
1746
|
+
(_a = this._group) === null || _a === void 0 ? void 0 : _a.remove(this);
|
|
1747
|
+
return this;
|
|
1748
|
+
};
|
|
1749
|
+
Tween2.prototype.delay = function(amount) {
|
|
1750
|
+
if (amount === void 0) {
|
|
1751
|
+
amount = 0;
|
|
1752
|
+
}
|
|
1753
|
+
this._delayTime = amount;
|
|
1754
|
+
return this;
|
|
1755
|
+
};
|
|
1756
|
+
Tween2.prototype.repeat = function(times) {
|
|
1757
|
+
if (times === void 0) {
|
|
1758
|
+
times = 0;
|
|
1759
|
+
}
|
|
1760
|
+
this._initialRepeat = times;
|
|
1761
|
+
this._repeat = times;
|
|
1762
|
+
return this;
|
|
1763
|
+
};
|
|
1764
|
+
Tween2.prototype.repeatDelay = function(amount) {
|
|
1765
|
+
this._repeatDelayTime = amount;
|
|
1766
|
+
return this;
|
|
1767
|
+
};
|
|
1768
|
+
Tween2.prototype.yoyo = function(yoyo) {
|
|
1769
|
+
if (yoyo === void 0) {
|
|
1770
|
+
yoyo = false;
|
|
1771
|
+
}
|
|
1772
|
+
this._yoyo = yoyo;
|
|
1773
|
+
return this;
|
|
1774
|
+
};
|
|
1775
|
+
Tween2.prototype.easing = function(easingFunction) {
|
|
1776
|
+
if (easingFunction === void 0) {
|
|
1777
|
+
easingFunction = Easing.Linear.None;
|
|
1778
|
+
}
|
|
1779
|
+
this._easingFunction = easingFunction;
|
|
1780
|
+
return this;
|
|
1781
|
+
};
|
|
1782
|
+
Tween2.prototype.interpolation = function(interpolationFunction) {
|
|
1783
|
+
if (interpolationFunction === void 0) {
|
|
1784
|
+
interpolationFunction = Interpolation.Linear;
|
|
1785
|
+
}
|
|
1786
|
+
this._interpolationFunction = interpolationFunction;
|
|
1787
|
+
return this;
|
|
1788
|
+
};
|
|
1789
|
+
Tween2.prototype.chain = function() {
|
|
1790
|
+
var tweens = [];
|
|
1791
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
1792
|
+
tweens[_i] = arguments[_i];
|
|
1793
|
+
}
|
|
1794
|
+
this._chainedTweens = tweens;
|
|
1795
|
+
return this;
|
|
1796
|
+
};
|
|
1797
|
+
Tween2.prototype.onStart = function(callback) {
|
|
1798
|
+
this._onStartCallback = callback;
|
|
1799
|
+
return this;
|
|
1800
|
+
};
|
|
1801
|
+
Tween2.prototype.onEveryStart = function(callback) {
|
|
1802
|
+
this._onEveryStartCallback = callback;
|
|
1803
|
+
return this;
|
|
1804
|
+
};
|
|
1805
|
+
Tween2.prototype.onUpdate = function(callback) {
|
|
1806
|
+
this._onUpdateCallback = callback;
|
|
1807
|
+
return this;
|
|
1808
|
+
};
|
|
1809
|
+
Tween2.prototype.onRepeat = function(callback) {
|
|
1810
|
+
this._onRepeatCallback = callback;
|
|
1811
|
+
return this;
|
|
1812
|
+
};
|
|
1813
|
+
Tween2.prototype.onComplete = function(callback) {
|
|
1814
|
+
this._onCompleteCallback = callback;
|
|
1815
|
+
return this;
|
|
1816
|
+
};
|
|
1817
|
+
Tween2.prototype.onStop = function(callback) {
|
|
1818
|
+
this._onStopCallback = callback;
|
|
1819
|
+
return this;
|
|
1820
|
+
};
|
|
1821
|
+
Tween2.prototype.update = function(time, autoStart) {
|
|
1822
|
+
var _this = this;
|
|
1823
|
+
var _a;
|
|
1824
|
+
if (time === void 0) {
|
|
1825
|
+
time = now();
|
|
1826
|
+
}
|
|
1827
|
+
if (autoStart === void 0) {
|
|
1828
|
+
autoStart = Tween2.autoStartOnUpdate;
|
|
1829
|
+
}
|
|
1830
|
+
if (this._isPaused)
|
|
1831
|
+
return true;
|
|
1832
|
+
var property;
|
|
1833
|
+
if (!this._goToEnd && !this._isPlaying) {
|
|
1834
|
+
if (autoStart)
|
|
1835
|
+
this.start(time, true);
|
|
1836
|
+
else
|
|
1837
|
+
return false;
|
|
1838
|
+
}
|
|
1839
|
+
this._goToEnd = false;
|
|
1840
|
+
if (time < this._startTime) {
|
|
1841
|
+
return true;
|
|
1842
|
+
}
|
|
1843
|
+
if (this._onStartCallbackFired === false) {
|
|
1844
|
+
if (this._onStartCallback) {
|
|
1845
|
+
this._onStartCallback(this._object);
|
|
1846
|
+
}
|
|
1847
|
+
this._onStartCallbackFired = true;
|
|
1848
|
+
}
|
|
1849
|
+
if (this._onEveryStartCallbackFired === false) {
|
|
1850
|
+
if (this._onEveryStartCallback) {
|
|
1851
|
+
this._onEveryStartCallback(this._object);
|
|
1852
|
+
}
|
|
1853
|
+
this._onEveryStartCallbackFired = true;
|
|
1854
|
+
}
|
|
1855
|
+
var elapsedTime = time - this._startTime;
|
|
1856
|
+
var durationAndDelay = this._duration + ((_a = this._repeatDelayTime) !== null && _a !== void 0 ? _a : this._delayTime);
|
|
1857
|
+
var totalTime = this._duration + this._repeat * durationAndDelay;
|
|
1858
|
+
var calculateElapsedPortion = function() {
|
|
1859
|
+
if (_this._duration === 0)
|
|
1860
|
+
return 1;
|
|
1861
|
+
if (elapsedTime > totalTime) {
|
|
1862
|
+
return 1;
|
|
1863
|
+
}
|
|
1864
|
+
var timesRepeated = Math.trunc(elapsedTime / durationAndDelay);
|
|
1865
|
+
var timeIntoCurrentRepeat = elapsedTime - timesRepeated * durationAndDelay;
|
|
1866
|
+
var portion = Math.min(timeIntoCurrentRepeat / _this._duration, 1);
|
|
1867
|
+
if (portion === 0 && elapsedTime === _this._duration) {
|
|
1868
|
+
return 1;
|
|
1869
|
+
}
|
|
1870
|
+
return portion;
|
|
1871
|
+
};
|
|
1872
|
+
var elapsed = calculateElapsedPortion();
|
|
1873
|
+
var value = this._easingFunction(elapsed);
|
|
1874
|
+
this._updateProperties(this._object, this._valuesStart, this._valuesEnd, value);
|
|
1875
|
+
if (this._onUpdateCallback) {
|
|
1876
|
+
this._onUpdateCallback(this._object, elapsed);
|
|
1877
|
+
}
|
|
1878
|
+
if (this._duration === 0 || elapsedTime >= this._duration) {
|
|
1879
|
+
if (this._repeat > 0) {
|
|
1880
|
+
var completeCount = Math.min(Math.trunc((elapsedTime - this._duration) / durationAndDelay) + 1, this._repeat);
|
|
1881
|
+
if (isFinite(this._repeat)) {
|
|
1882
|
+
this._repeat -= completeCount;
|
|
1883
|
+
}
|
|
1884
|
+
for (property in this._valuesStartRepeat) {
|
|
1885
|
+
if (!this._yoyo && typeof this._valuesEnd[property] === "string") {
|
|
1886
|
+
this._valuesStartRepeat[property] = // eslint-disable-next-line
|
|
1887
|
+
// @ts-ignore FIXME?
|
|
1888
|
+
this._valuesStartRepeat[property] + parseFloat(this._valuesEnd[property]);
|
|
1889
|
+
}
|
|
1890
|
+
if (this._yoyo) {
|
|
1891
|
+
this._swapEndStartRepeatValues(property);
|
|
1892
|
+
}
|
|
1893
|
+
this._valuesStart[property] = this._valuesStartRepeat[property];
|
|
1894
|
+
}
|
|
1895
|
+
if (this._yoyo) {
|
|
1896
|
+
this._reversed = !this._reversed;
|
|
1897
|
+
}
|
|
1898
|
+
this._startTime += durationAndDelay * completeCount;
|
|
1899
|
+
if (this._onRepeatCallback) {
|
|
1900
|
+
this._onRepeatCallback(this._object);
|
|
1901
|
+
}
|
|
1902
|
+
this._onEveryStartCallbackFired = false;
|
|
1903
|
+
return true;
|
|
1904
|
+
} else {
|
|
1905
|
+
if (this._onCompleteCallback) {
|
|
1906
|
+
this._onCompleteCallback(this._object);
|
|
1907
|
+
}
|
|
1908
|
+
for (var i = 0, numChainedTweens = this._chainedTweens.length; i < numChainedTweens; i++) {
|
|
1909
|
+
this._chainedTweens[i].start(this._startTime + this._duration, false);
|
|
1910
|
+
}
|
|
1911
|
+
this._isPlaying = false;
|
|
1912
|
+
return false;
|
|
1913
|
+
}
|
|
1914
|
+
}
|
|
1915
|
+
return true;
|
|
1916
|
+
};
|
|
1917
|
+
Tween2.prototype._updateProperties = function(_object, _valuesStart, _valuesEnd, value) {
|
|
1918
|
+
for (var property in _valuesEnd) {
|
|
1919
|
+
if (_valuesStart[property] === void 0) {
|
|
1920
|
+
continue;
|
|
1921
|
+
}
|
|
1922
|
+
var start = _valuesStart[property] || 0;
|
|
1923
|
+
var end = _valuesEnd[property];
|
|
1924
|
+
var startIsArray = Array.isArray(_object[property]);
|
|
1925
|
+
var endIsArray = Array.isArray(end);
|
|
1926
|
+
var isInterpolationList = !startIsArray && endIsArray;
|
|
1927
|
+
if (isInterpolationList) {
|
|
1928
|
+
_object[property] = this._interpolationFunction(end, value);
|
|
1929
|
+
} else if (typeof end === "object" && end) {
|
|
1930
|
+
this._updateProperties(_object[property], start, end, value);
|
|
1931
|
+
} else {
|
|
1932
|
+
end = this._handleRelativeValue(start, end);
|
|
1933
|
+
if (typeof end === "number") {
|
|
1934
|
+
_object[property] = start + (end - start) * value;
|
|
1935
|
+
}
|
|
1936
|
+
}
|
|
1937
|
+
}
|
|
1938
|
+
};
|
|
1939
|
+
Tween2.prototype._handleRelativeValue = function(start, end) {
|
|
1940
|
+
if (typeof end !== "string") {
|
|
1941
|
+
return end;
|
|
1942
|
+
}
|
|
1943
|
+
if (end.charAt(0) === "+" || end.charAt(0) === "-") {
|
|
1944
|
+
return start + parseFloat(end);
|
|
1945
|
+
}
|
|
1946
|
+
return parseFloat(end);
|
|
1947
|
+
};
|
|
1948
|
+
Tween2.prototype._swapEndStartRepeatValues = function(property) {
|
|
1949
|
+
var tmp = this._valuesStartRepeat[property];
|
|
1950
|
+
var endValue = this._valuesEnd[property];
|
|
1951
|
+
if (typeof endValue === "string") {
|
|
1952
|
+
this._valuesStartRepeat[property] = this._valuesStartRepeat[property] + parseFloat(endValue);
|
|
1953
|
+
} else {
|
|
1954
|
+
this._valuesStartRepeat[property] = this._valuesEnd[property];
|
|
1955
|
+
}
|
|
1956
|
+
this._valuesEnd[property] = tmp;
|
|
1957
|
+
};
|
|
1958
|
+
Tween2.autoStartOnUpdate = false;
|
|
1959
|
+
return Tween2;
|
|
1960
|
+
}()
|
|
1961
|
+
);
|
|
1962
|
+
var nextId = Sequence.nextId;
|
|
1963
|
+
var TWEEN = mainGroup;
|
|
1964
|
+
var getAll = TWEEN.getAll.bind(TWEEN);
|
|
1965
|
+
var removeAll = TWEEN.removeAll.bind(TWEEN);
|
|
1966
|
+
var add = TWEEN.add.bind(TWEEN);
|
|
1967
|
+
var remove = TWEEN.remove.bind(TWEEN);
|
|
1968
|
+
var update = TWEEN.update.bind(TWEEN);
|
|
1155
1969
|
|
|
1156
1970
|
// src/materials.ts
|
|
1157
1971
|
var THREE2 = __toESM(require("three"), 1);
|
|
@@ -1413,10 +2227,12 @@ var WebGLArcanumCube = class extends ArcanumCube {
|
|
|
1413
2227
|
_draggingTwist;
|
|
1414
2228
|
/** max degree to cancel the dragging */
|
|
1415
2229
|
_cancelDragDeg;
|
|
1416
|
-
/**
|
|
1417
|
-
|
|
2230
|
+
/** easing group */
|
|
2231
|
+
_easings;
|
|
1418
2232
|
/** light at the center of cube */
|
|
1419
2233
|
_coreLights;
|
|
2234
|
+
/** status of locking the twist */
|
|
2235
|
+
_lockTwist;
|
|
1420
2236
|
constructor(options) {
|
|
1421
2237
|
super(options);
|
|
1422
2238
|
this._config = {
|
|
@@ -1428,7 +2244,6 @@ var WebGLArcanumCube = class extends ArcanumCube {
|
|
|
1428
2244
|
gap: 0.01,
|
|
1429
2245
|
enableShadow: false,
|
|
1430
2246
|
skin: DefaultSkin,
|
|
1431
|
-
autoReset: true,
|
|
1432
2247
|
enableCoreLight: false,
|
|
1433
2248
|
coreLightColor: 33023,
|
|
1434
2249
|
coreLightIntensity: 30,
|
|
@@ -1441,8 +2256,9 @@ var WebGLArcanumCube = class extends ArcanumCube {
|
|
|
1441
2256
|
this._cubeObjectList = [];
|
|
1442
2257
|
this._cubeMap = {};
|
|
1443
2258
|
this._cancelDragDeg = 15;
|
|
1444
|
-
this.
|
|
2259
|
+
this._easings = new Group();
|
|
1445
2260
|
this._coreLights = [];
|
|
2261
|
+
this._lockTwist = false;
|
|
1446
2262
|
if (options) {
|
|
1447
2263
|
Object.assign(this._config, options);
|
|
1448
2264
|
}
|
|
@@ -1539,8 +2355,14 @@ var WebGLArcanumCube = class extends ArcanumCube {
|
|
|
1539
2355
|
}
|
|
1540
2356
|
await this.init();
|
|
1541
2357
|
}
|
|
2358
|
+
lockTwist(flag) {
|
|
2359
|
+
this._lockTwist = flag;
|
|
2360
|
+
}
|
|
2361
|
+
isTwisting() {
|
|
2362
|
+
return this._easings.getAll().length > 0;
|
|
2363
|
+
}
|
|
1542
2364
|
reset(duration = 1800) {
|
|
1543
|
-
if (this.
|
|
2365
|
+
if (this._lockTwist || this.isTwisting()) return;
|
|
1544
2366
|
if (this._selectedCube) this.deselectCube();
|
|
1545
2367
|
if (this._selectedSticker) this.deselectSticker();
|
|
1546
2368
|
this._twistGroup = void 0;
|
|
@@ -1559,34 +2381,34 @@ var WebGLArcanumCube = class extends ArcanumCube {
|
|
|
1559
2381
|
qa.push(cube.getGroup().quaternion.clone());
|
|
1560
2382
|
});
|
|
1561
2383
|
const params = { t: 0 };
|
|
1562
|
-
const
|
|
2384
|
+
const easingExplode = new Tween(params).to({ t: 1 }, duration * 5 / 18).easing(Easing.Quartic.Out).onUpdate(() => {
|
|
1563
2385
|
cubeList.forEach((cube) => {
|
|
1564
2386
|
cube.stretch(stretchSize * params.t);
|
|
1565
2387
|
});
|
|
1566
2388
|
}).onComplete(() => {
|
|
1567
|
-
this.
|
|
2389
|
+
this._easings.remove(easingExplode);
|
|
1568
2390
|
});
|
|
1569
2391
|
const params2 = { t: 0 };
|
|
1570
|
-
const
|
|
2392
|
+
const easingReset = new Tween(params2).to({ t: 1 }, duration * 8 / 18).easing(Easing.Quartic.Out).onUpdate(() => {
|
|
1571
2393
|
cubeList.forEach((cube, index) => {
|
|
1572
2394
|
cube.getGroup().quaternion.slerpQuaternions(qa[index], qb, params2.t);
|
|
1573
2395
|
});
|
|
1574
2396
|
}).onComplete(() => {
|
|
1575
2397
|
super.reset();
|
|
1576
|
-
this.
|
|
2398
|
+
this._easings.remove(easingReset);
|
|
1577
2399
|
});
|
|
1578
2400
|
const params3 = { t: 1 };
|
|
1579
|
-
const
|
|
2401
|
+
const easingContract = new Tween(params3).to({ t: 0 }, duration * 5 / 18).easing(Easing.Quartic.Out).onUpdate(() => {
|
|
1580
2402
|
cubeList.forEach((cube) => {
|
|
1581
2403
|
cube.stretch(stretchSize * params3.t);
|
|
1582
2404
|
});
|
|
1583
2405
|
}).onComplete(() => {
|
|
1584
|
-
this.
|
|
2406
|
+
this._easings.remove(easingContract);
|
|
1585
2407
|
});
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
this.
|
|
1589
|
-
|
|
2408
|
+
easingExplode.chain(easingReset);
|
|
2409
|
+
easingReset.chain(easingContract);
|
|
2410
|
+
this._easings.add(easingExplode, easingReset, easingContract);
|
|
2411
|
+
easingExplode.start();
|
|
1590
2412
|
}
|
|
1591
2413
|
}
|
|
1592
2414
|
selectedCube() {
|
|
@@ -1727,7 +2549,7 @@ var WebGLArcanumCube = class extends ArcanumCube {
|
|
|
1727
2549
|
return twistGroup;
|
|
1728
2550
|
}
|
|
1729
2551
|
dragTwist(twist, rad) {
|
|
1730
|
-
if (this.
|
|
2552
|
+
if (this._lockTwist || this.isTwisting()) return;
|
|
1731
2553
|
if (!this._draggingTwist || this._draggingTwist.twist != twist) {
|
|
1732
2554
|
this._draggingTwist = {
|
|
1733
2555
|
twist,
|
|
@@ -1742,30 +2564,30 @@ var WebGLArcanumCube = class extends ArcanumCube {
|
|
|
1742
2564
|
this._draggingTwist.group.quaternion.copy(q);
|
|
1743
2565
|
}
|
|
1744
2566
|
dragTwistEnd() {
|
|
1745
|
-
if (this.
|
|
2567
|
+
if (this._lockTwist || this.isTwisting()) return;
|
|
1746
2568
|
if (this._draggingTwist) {
|
|
1747
2569
|
const deg = this._draggingTwist.rad * 180 / Math.PI;
|
|
1748
2570
|
if (deg > this._cancelDragDeg) {
|
|
1749
|
-
this.
|
|
2571
|
+
this.easingTwist(this._draggingTwist.twist);
|
|
1750
2572
|
} else {
|
|
1751
|
-
this.
|
|
2573
|
+
this.easingTwist(this._draggingTwist.twist, false, 100, true);
|
|
1752
2574
|
}
|
|
1753
2575
|
}
|
|
1754
2576
|
}
|
|
1755
2577
|
// twist randomly several steps
|
|
1756
2578
|
scramble(steps = 0, duration = 3e3) {
|
|
1757
2579
|
const list = getRandomTwistList(steps);
|
|
1758
|
-
this.
|
|
2580
|
+
this.easingTwist(list, false, duration, false);
|
|
1759
2581
|
}
|
|
1760
2582
|
undo(steps = 1, duration = 300) {
|
|
1761
2583
|
const list = this.getUndoList(steps);
|
|
1762
|
-
this.
|
|
2584
|
+
this.easingTwist(list, true, duration, false);
|
|
1763
2585
|
}
|
|
1764
2586
|
// twisting(複数回対応)
|
|
1765
|
-
// durationを0にすると
|
|
1766
|
-
|
|
1767
|
-
if (this.
|
|
1768
|
-
|
|
2587
|
+
// durationを0にするとEasingなしとなる
|
|
2588
|
+
easingTwist(twist, reverse = false, duration = 500, cancel = false, options) {
|
|
2589
|
+
if (this._lockTwist || this.isTwisting()) return;
|
|
2590
|
+
options = { ...this._config.twistOptions, ...options };
|
|
1769
2591
|
if (duration === 0) {
|
|
1770
2592
|
if (Array.isArray(twist)) {
|
|
1771
2593
|
if (twist.length == 0) return;
|
|
@@ -1784,8 +2606,8 @@ var WebGLArcanumCube = class extends ArcanumCube {
|
|
|
1784
2606
|
options?.onComplete && options.onComplete(this);
|
|
1785
2607
|
return;
|
|
1786
2608
|
}
|
|
1787
|
-
let
|
|
1788
|
-
let
|
|
2609
|
+
let firstEasing = void 0;
|
|
2610
|
+
let easing = void 0;
|
|
1789
2611
|
if (Array.isArray(twist)) {
|
|
1790
2612
|
if (twist.length == 0) return;
|
|
1791
2613
|
const lap = duration / twist.length;
|
|
@@ -1797,22 +2619,22 @@ var WebGLArcanumCube = class extends ArcanumCube {
|
|
|
1797
2619
|
if (ontwisted)
|
|
1798
2620
|
opts.onTwisted = (self, twist2, n1, n2) => ontwisted(this, twist2, i + 1, len);
|
|
1799
2621
|
if (i === len - 1 && options?.onComplete) opts.onComplete = options.onComplete;
|
|
1800
|
-
const t = this.
|
|
1801
|
-
this.
|
|
1802
|
-
if (!
|
|
1803
|
-
|
|
2622
|
+
const t = this._easingTwist(c, reverse, lap, cancel, opts);
|
|
2623
|
+
this._easings.add(t);
|
|
2624
|
+
if (!easing) {
|
|
2625
|
+
firstEasing = easing = t;
|
|
1804
2626
|
} else {
|
|
1805
|
-
|
|
1806
|
-
|
|
2627
|
+
easing.chain(t);
|
|
2628
|
+
easing = t;
|
|
1807
2629
|
}
|
|
1808
2630
|
}
|
|
1809
2631
|
} else {
|
|
1810
|
-
|
|
1811
|
-
this.
|
|
2632
|
+
firstEasing = this._easingTwist(twist, reverse, duration, cancel, options);
|
|
2633
|
+
this._easings.add(firstEasing);
|
|
1812
2634
|
}
|
|
1813
|
-
if (
|
|
2635
|
+
if (firstEasing) {
|
|
1814
2636
|
options?.onStart && options.onStart(this);
|
|
1815
|
-
|
|
2637
|
+
firstEasing.start();
|
|
1816
2638
|
}
|
|
1817
2639
|
}
|
|
1818
2640
|
// twist immediately
|
|
@@ -1832,8 +2654,8 @@ var WebGLArcanumCube = class extends ArcanumCube {
|
|
|
1832
2654
|
this._twistGroup = void 0;
|
|
1833
2655
|
super.twist(twist, reverse);
|
|
1834
2656
|
}
|
|
1835
|
-
// twist with
|
|
1836
|
-
|
|
2657
|
+
// twist with easing
|
|
2658
|
+
_easingTwist(twist, reverse, duration, cancel, options = {}) {
|
|
1837
2659
|
let qa;
|
|
1838
2660
|
if (this._draggingTwist) {
|
|
1839
2661
|
this._twistGroup = this._draggingTwist.group;
|
|
@@ -1849,7 +2671,7 @@ var WebGLArcanumCube = class extends ArcanumCube {
|
|
|
1849
2671
|
qb.setFromAxisAngle(new THREE3.Vector3(axis[0], axis[1], axis[2]), rad);
|
|
1850
2672
|
}
|
|
1851
2673
|
const params = { t: 0 };
|
|
1852
|
-
const
|
|
2674
|
+
const easing = new Tween(params).to({ t: 1 }, duration).easing(Easing.Quartic.Out).onUpdate(() => {
|
|
1853
2675
|
if (!this._twistGroup) {
|
|
1854
2676
|
this._twistGroup = this._reconstructGroups(twist);
|
|
1855
2677
|
}
|
|
@@ -1869,15 +2691,17 @@ var WebGLArcanumCube = class extends ArcanumCube {
|
|
|
1869
2691
|
if (!cancel) {
|
|
1870
2692
|
super.twist(twist, reverse);
|
|
1871
2693
|
}
|
|
1872
|
-
this.
|
|
2694
|
+
this._easings.remove(easing);
|
|
1873
2695
|
options.onTwisted && options.onTwisted(this, twist, 1, 1);
|
|
1874
2696
|
options.onComplete && options.onComplete(this);
|
|
1875
|
-
if (
|
|
2697
|
+
if (options.onSolved && this.isSolved()) {
|
|
2698
|
+
options.onSolved(this);
|
|
2699
|
+
}
|
|
1876
2700
|
});
|
|
1877
|
-
return
|
|
2701
|
+
return easing;
|
|
1878
2702
|
}
|
|
1879
|
-
|
|
1880
|
-
this.
|
|
2703
|
+
update() {
|
|
2704
|
+
this._easings.update();
|
|
1881
2705
|
}
|
|
1882
2706
|
// set color of core lights
|
|
1883
2707
|
setCoreLightColor(color) {
|
|
@@ -1925,5 +2749,6 @@ var WebGLArcanumCube = class extends ArcanumCube {
|
|
|
1925
2749
|
getNextStickerColors,
|
|
1926
2750
|
getRandomTwistList,
|
|
1927
2751
|
getStickerIndex,
|
|
1928
|
-
getStickerPermutationGroup
|
|
2752
|
+
getStickerPermutationGroup,
|
|
2753
|
+
loadDefaultLogoTexture
|
|
1929
2754
|
});
|