@galacean/effects-plugin-multimedia 2.1.0-alpha.9 → 2.1.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/audio/audio-loader.d.ts +3 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +101 -38
- package/dist/index.js.map +1 -1
- package/dist/index.min.js +2 -2
- package/dist/index.min.js.map +1 -1
- package/dist/index.mjs +51 -8
- package/dist/index.mjs.map +1 -1
- package/dist/video/video-component.d.ts +4 -1
- package/dist/video/video-loader.d.ts +3 -0
- package/package.json +2 -2
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import type { SceneLoadOptions } from '@galacean/effects';
|
|
2
2
|
import { spec, AbstractPlugin } from '@galacean/effects';
|
|
3
|
+
/**
|
|
4
|
+
* 音频加载插件
|
|
5
|
+
*/
|
|
3
6
|
export declare class AudioLoader extends AbstractPlugin {
|
|
4
7
|
static processAssets(json: spec.JSONScene, options?: SceneLoadOptions): Promise<{
|
|
5
8
|
assets: spec.AssetBase[];
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -3,14 +3,34 @@
|
|
|
3
3
|
* Description: Galacean Effects player multimedia plugin
|
|
4
4
|
* Author: Ant Group CO., Ltd.
|
|
5
5
|
* Contributors: 云垣
|
|
6
|
-
* Version: v2.1.0
|
|
6
|
+
* Version: v2.1.0
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
9
|
'use strict';
|
|
10
10
|
|
|
11
11
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var EFFECTS = require('@galacean/effects');
|
|
14
|
+
|
|
15
|
+
function _interopNamespace(e) {
|
|
16
|
+
if (e && e.__esModule) return e;
|
|
17
|
+
var n = Object.create(null);
|
|
18
|
+
if (e) {
|
|
19
|
+
Object.keys(e).forEach(function (k) {
|
|
20
|
+
if (k !== 'default') {
|
|
21
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
22
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
23
|
+
enumerable: true,
|
|
24
|
+
get: function () { return e[k]; }
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
n["default"] = e;
|
|
30
|
+
return Object.freeze(n);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
var EFFECTS__namespace = /*#__PURE__*/_interopNamespace(EFFECTS);
|
|
14
34
|
|
|
15
35
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
16
36
|
try {
|
|
@@ -259,11 +279,11 @@ function _processMultimedia() {
|
|
|
259
279
|
return __generator(this, function(_state) {
|
|
260
280
|
renderLevel = options.renderLevel;
|
|
261
281
|
jobs = media.map(function(medium) {
|
|
262
|
-
if (
|
|
282
|
+
if (EFFECTS.passRenderLevel(medium.renderLevel, renderLevel)) {
|
|
263
283
|
var url = new URL(medium.url, location.href).href;
|
|
264
|
-
if (type ===
|
|
265
|
-
return
|
|
266
|
-
} else if (type ===
|
|
284
|
+
if (type === EFFECTS.spec.MultimediaType.video) {
|
|
285
|
+
return EFFECTS.loadVideo(url);
|
|
286
|
+
} else if (type === EFFECTS.spec.MultimediaType.audio) {
|
|
267
287
|
return loadAudio(url);
|
|
268
288
|
}
|
|
269
289
|
}
|
|
@@ -351,7 +371,7 @@ function _loadAudio() {
|
|
|
351
371
|
audioContext = new AudioContext();
|
|
352
372
|
return [
|
|
353
373
|
4,
|
|
354
|
-
|
|
374
|
+
EFFECTS.loadBinary(url)
|
|
355
375
|
];
|
|
356
376
|
case 2:
|
|
357
377
|
buffer = _state.sent();
|
|
@@ -404,7 +424,7 @@ var MultimediaError = /*#__PURE__*/ function(Error1) {
|
|
|
404
424
|
_this = Error1.call(this, message) || this;
|
|
405
425
|
_this.code = code;
|
|
406
426
|
_this.name = _this.constructor.name;
|
|
407
|
-
if ("captureStackTrace" in Error &&
|
|
427
|
+
if ("captureStackTrace" in Error && EFFECTS.isFunction(Error.captureStackTrace)) {
|
|
408
428
|
Error.captureStackTrace(_assert_this_initialized(_this), MultimediaError);
|
|
409
429
|
}
|
|
410
430
|
return _this;
|
|
@@ -412,7 +432,9 @@ var MultimediaError = /*#__PURE__*/ function(Error1) {
|
|
|
412
432
|
return MultimediaError;
|
|
413
433
|
}(_wrap_native_super(Error));
|
|
414
434
|
|
|
415
|
-
|
|
435
|
+
/**
|
|
436
|
+
* 视频加载插件
|
|
437
|
+
*/ var VideoLoader = /*#__PURE__*/ function(AbstractPlugin) {
|
|
416
438
|
_inherits(VideoLoader, AbstractPlugin);
|
|
417
439
|
function VideoLoader() {
|
|
418
440
|
return AbstractPlugin.apply(this, arguments);
|
|
@@ -427,7 +449,7 @@ var VideoLoader = /*#__PURE__*/ function(AbstractPlugin) {
|
|
|
427
449
|
_json_videos = json.videos, videos = _json_videos === void 0 ? [] : _json_videos;
|
|
428
450
|
return [
|
|
429
451
|
4,
|
|
430
|
-
processMultimedia(videos,
|
|
452
|
+
processMultimedia(videos, EFFECTS.spec.MultimediaType.video, options)
|
|
431
453
|
];
|
|
432
454
|
case 1:
|
|
433
455
|
loadedAssets = _state.sent();
|
|
@@ -443,9 +465,11 @@ var VideoLoader = /*#__PURE__*/ function(AbstractPlugin) {
|
|
|
443
465
|
})();
|
|
444
466
|
};
|
|
445
467
|
return VideoLoader;
|
|
446
|
-
}(
|
|
468
|
+
}(EFFECTS.AbstractPlugin);
|
|
447
469
|
|
|
448
|
-
|
|
470
|
+
/**
|
|
471
|
+
* 音频加载插件
|
|
472
|
+
*/ var AudioLoader = /*#__PURE__*/ function(AbstractPlugin) {
|
|
449
473
|
_inherits(AudioLoader, AbstractPlugin);
|
|
450
474
|
function AudioLoader() {
|
|
451
475
|
return AbstractPlugin.apply(this, arguments);
|
|
@@ -460,7 +484,7 @@ var AudioLoader = /*#__PURE__*/ function(AbstractPlugin) {
|
|
|
460
484
|
_json_audios = json.audios, audios = _json_audios === void 0 ? [] : _json_audios;
|
|
461
485
|
return [
|
|
462
486
|
4,
|
|
463
|
-
processMultimedia(audios,
|
|
487
|
+
processMultimedia(audios, EFFECTS.spec.MultimediaType.audio, options)
|
|
464
488
|
];
|
|
465
489
|
case 1:
|
|
466
490
|
loadedAssets = _state.sent();
|
|
@@ -476,7 +500,7 @@ var AudioLoader = /*#__PURE__*/ function(AbstractPlugin) {
|
|
|
476
500
|
})();
|
|
477
501
|
};
|
|
478
502
|
return AudioLoader;
|
|
479
|
-
}(
|
|
503
|
+
}(EFFECTS.AbstractPlugin);
|
|
480
504
|
|
|
481
505
|
var seed = 0;
|
|
482
506
|
exports.VideoComponent = /*#__PURE__*/ function(BaseRenderComponent) {
|
|
@@ -486,7 +510,7 @@ exports.VideoComponent = /*#__PURE__*/ function(BaseRenderComponent) {
|
|
|
486
510
|
_this = BaseRenderComponent.call(this, engine) || this;
|
|
487
511
|
_this.threshold = 0.03;
|
|
488
512
|
_this.name = "MVideo" + seed++;
|
|
489
|
-
_this.geometry = _this.createGeometry(
|
|
513
|
+
_this.geometry = _this.createGeometry(EFFECTS.glContext.TRIANGLES);
|
|
490
514
|
return _this;
|
|
491
515
|
}
|
|
492
516
|
var _proto = VideoComponent.prototype;
|
|
@@ -503,7 +527,7 @@ exports.VideoComponent = /*#__PURE__*/ function(BaseRenderComponent) {
|
|
|
503
527
|
});
|
|
504
528
|
this.engine.removeTexture(oldTexture);
|
|
505
529
|
this.renderer.texture = texture;
|
|
506
|
-
this.material.setTexture("
|
|
530
|
+
this.material.setTexture("_MainTex", texture);
|
|
507
531
|
this.video = texture.source.video;
|
|
508
532
|
};
|
|
509
533
|
_proto.fromData = function fromData(data) {
|
|
@@ -526,26 +550,49 @@ exports.VideoComponent = /*#__PURE__*/ function(BaseRenderComponent) {
|
|
|
526
550
|
this.setMuted(muted);
|
|
527
551
|
var endBehavior = this.item.endBehavior;
|
|
528
552
|
// 如果元素设置为 destroy
|
|
529
|
-
if (endBehavior ===
|
|
553
|
+
if (endBehavior === EFFECTS.spec.EndBehavior.destroy) {
|
|
530
554
|
this.setLoop(false);
|
|
531
555
|
}
|
|
532
556
|
}
|
|
533
557
|
var _renderer_renderMode, _renderer_blending, _renderer_texture, _renderer_side, _renderer_mask, _renderer_maskMode;
|
|
534
558
|
this.renderer = {
|
|
535
|
-
renderMode: (_renderer_renderMode = renderer.renderMode) != null ? _renderer_renderMode :
|
|
536
|
-
blending: (_renderer_blending = renderer.blending) != null ? _renderer_blending :
|
|
559
|
+
renderMode: (_renderer_renderMode = renderer.renderMode) != null ? _renderer_renderMode : EFFECTS.spec.RenderMode.BILLBOARD,
|
|
560
|
+
blending: (_renderer_blending = renderer.blending) != null ? _renderer_blending : EFFECTS.spec.BlendingMode.ALPHA,
|
|
537
561
|
texture: (_renderer_texture = renderer.texture) != null ? _renderer_texture : this.engine.emptyTexture,
|
|
538
562
|
occlusion: !!renderer.occlusion,
|
|
539
|
-
transparentOcclusion: !!renderer.transparentOcclusion || renderer.maskMode ===
|
|
540
|
-
side: (_renderer_side = renderer.side) != null ? _renderer_side :
|
|
563
|
+
transparentOcclusion: !!renderer.transparentOcclusion || renderer.maskMode === EFFECTS.spec.MaskMode.MASK,
|
|
564
|
+
side: (_renderer_side = renderer.side) != null ? _renderer_side : EFFECTS.spec.SideMode.DOUBLE,
|
|
541
565
|
mask: (_renderer_mask = renderer.mask) != null ? _renderer_mask : 0,
|
|
542
|
-
maskMode: (_renderer_maskMode = renderer.maskMode) != null ? _renderer_maskMode :
|
|
543
|
-
order: listIndex
|
|
566
|
+
maskMode: (_renderer_maskMode = renderer.maskMode) != null ? _renderer_maskMode : EFFECTS.spec.MaskMode.NONE,
|
|
567
|
+
order: listIndex,
|
|
568
|
+
shape: renderer.shape
|
|
544
569
|
};
|
|
545
570
|
this.interaction = interaction;
|
|
546
571
|
this.pauseVideo();
|
|
572
|
+
this.renderInfo = EFFECTS.getImageItemRenderInfo(this);
|
|
573
|
+
var geometry = this.createGeometry(EFFECTS.glContext.TRIANGLES);
|
|
574
|
+
var material = this.createMaterial(this.renderInfo, 2);
|
|
575
|
+
this.worldMatrix = EFFECTS.math.Matrix4.fromIdentity();
|
|
576
|
+
this.material = material;
|
|
577
|
+
this.geometry = geometry;
|
|
578
|
+
this.material.setVector4("_Color", new EFFECTS.math.Vector4().setFromArray(startColor));
|
|
579
|
+
this.material.setVector4("_TexOffset", new EFFECTS.math.Vector4().setFromArray([
|
|
580
|
+
0,
|
|
581
|
+
0,
|
|
582
|
+
1,
|
|
583
|
+
1
|
|
584
|
+
]));
|
|
547
585
|
this.setItem();
|
|
548
|
-
|
|
586
|
+
};
|
|
587
|
+
_proto.onStart = function onStart() {
|
|
588
|
+
var _this = this;
|
|
589
|
+
var _this_item_composition;
|
|
590
|
+
BaseRenderComponent.prototype.onStart.call(this);
|
|
591
|
+
(_this_item_composition = this.item.composition) == null ? void 0 : _this_item_composition.on("goto", function(option) {
|
|
592
|
+
if (option.time > 0) {
|
|
593
|
+
_this.setCurrentTime(option.time);
|
|
594
|
+
}
|
|
595
|
+
});
|
|
549
596
|
};
|
|
550
597
|
_proto.onUpdate = function onUpdate(dt) {
|
|
551
598
|
var _this_item_composition;
|
|
@@ -555,14 +602,14 @@ exports.VideoComponent = /*#__PURE__*/ function(BaseRenderComponent) {
|
|
|
555
602
|
this.setVisible(true);
|
|
556
603
|
this.playVideo();
|
|
557
604
|
}
|
|
558
|
-
if (time === 0 && ((_this_item_composition = this.item.composition) == null ? void 0 : _this_item_composition.rootItem.endBehavior) ===
|
|
605
|
+
if (time === 0 && ((_this_item_composition = this.item.composition) == null ? void 0 : _this_item_composition.rootItem.endBehavior) === EFFECTS.spec.EndBehavior.freeze) {
|
|
559
606
|
this.pauseVideo();
|
|
560
607
|
this.setCurrentTime(0);
|
|
561
608
|
}
|
|
562
609
|
if (Math.abs(time - duration) < this.threshold) {
|
|
563
|
-
if (endBehavior ===
|
|
610
|
+
if (endBehavior === EFFECTS.spec.EndBehavior.freeze) {
|
|
564
611
|
this.pauseVideo();
|
|
565
|
-
} else if (endBehavior ===
|
|
612
|
+
} else if (endBehavior === EFFECTS.spec.EndBehavior.restart) {
|
|
566
613
|
this.setVisible(false);
|
|
567
614
|
// 重播
|
|
568
615
|
this.pauseVideo();
|
|
@@ -642,6 +689,14 @@ exports.VideoComponent = /*#__PURE__*/ function(BaseRenderComponent) {
|
|
|
642
689
|
this.video.pause();
|
|
643
690
|
}
|
|
644
691
|
};
|
|
692
|
+
_proto.onDestroy = function onDestroy() {
|
|
693
|
+
BaseRenderComponent.prototype.onDestroy.call(this);
|
|
694
|
+
if (this.video) {
|
|
695
|
+
this.video.pause();
|
|
696
|
+
this.video.src = "";
|
|
697
|
+
this.video.load();
|
|
698
|
+
}
|
|
699
|
+
};
|
|
645
700
|
_proto.onDisable = function onDisable() {
|
|
646
701
|
var _this_video;
|
|
647
702
|
BaseRenderComponent.prototype.onDisable.call(this);
|
|
@@ -653,9 +708,9 @@ exports.VideoComponent = /*#__PURE__*/ function(BaseRenderComponent) {
|
|
|
653
708
|
this.playVideo();
|
|
654
709
|
};
|
|
655
710
|
return VideoComponent;
|
|
656
|
-
}(
|
|
711
|
+
}(EFFECTS.BaseRenderComponent);
|
|
657
712
|
exports.VideoComponent = __decorate([
|
|
658
|
-
|
|
713
|
+
EFFECTS.effectsClass(EFFECTS.spec.DataType.VideoComponent)
|
|
659
714
|
], exports.VideoComponent);
|
|
660
715
|
|
|
661
716
|
var AudioPlayer = /*#__PURE__*/ function() {
|
|
@@ -664,7 +719,7 @@ var AudioPlayer = /*#__PURE__*/ function() {
|
|
|
664
719
|
this.audioSourceInfo = {};
|
|
665
720
|
this.isSupportAudioContext = !!window["AudioContext"];
|
|
666
721
|
this.options = {
|
|
667
|
-
endBehavior:
|
|
722
|
+
endBehavior: EFFECTS.spec.EndBehavior.destroy,
|
|
668
723
|
duration: 0
|
|
669
724
|
};
|
|
670
725
|
this.destroyed = false;
|
|
@@ -715,11 +770,11 @@ var AudioPlayer = /*#__PURE__*/ function() {
|
|
|
715
770
|
var _this_audioSourceInfo = this.audioSourceInfo, audioContext = _this_audioSourceInfo.audioContext, source = _this_audioSourceInfo.source;
|
|
716
771
|
if (source && audioContext) {
|
|
717
772
|
switch(this.options.endBehavior){
|
|
718
|
-
case
|
|
719
|
-
case
|
|
773
|
+
case EFFECTS.spec.EndBehavior.destroy:
|
|
774
|
+
case EFFECTS.spec.EndBehavior.freeze:
|
|
720
775
|
source.start(0);
|
|
721
776
|
break;
|
|
722
|
-
case
|
|
777
|
+
case EFFECTS.spec.EndBehavior.restart:
|
|
723
778
|
source.loop = true;
|
|
724
779
|
source.loopStart = 0;
|
|
725
780
|
source.loopEnd = this.options.duration;
|
|
@@ -853,7 +908,7 @@ exports.AudioComponent = /*#__PURE__*/ function(RendererComponent) {
|
|
|
853
908
|
this.isVideoPlay = true;
|
|
854
909
|
}
|
|
855
910
|
if (Math.abs(time - duration) < this.threshold) {
|
|
856
|
-
if (endBehavior ===
|
|
911
|
+
if (endBehavior === EFFECTS.spec.EndBehavior.destroy) {
|
|
857
912
|
this.audioPlayer.pause();
|
|
858
913
|
}
|
|
859
914
|
}
|
|
@@ -912,13 +967,20 @@ exports.AudioComponent = /*#__PURE__*/ function(RendererComponent) {
|
|
|
912
967
|
this.audioPlayer.dispose();
|
|
913
968
|
};
|
|
914
969
|
return AudioComponent;
|
|
915
|
-
}(
|
|
970
|
+
}(EFFECTS.RendererComponent);
|
|
916
971
|
exports.AudioComponent = __decorate([
|
|
917
|
-
|
|
972
|
+
EFFECTS.effectsClass(EFFECTS.spec.DataType.AudioComponent)
|
|
918
973
|
], exports.AudioComponent);
|
|
919
974
|
|
|
920
|
-
|
|
921
|
-
|
|
975
|
+
/**
|
|
976
|
+
* 插件版本号
|
|
977
|
+
*/ var version = "2.1.0";
|
|
978
|
+
EFFECTS.registerPlugin("video", VideoLoader, EFFECTS.VFXItem, true);
|
|
979
|
+
EFFECTS.registerPlugin("audio", AudioLoader, EFFECTS.VFXItem, true);
|
|
980
|
+
EFFECTS.logger.info("Plugin multimedia version: " + version + ".");
|
|
981
|
+
if (version !== EFFECTS__namespace.version) {
|
|
982
|
+
console.error("注意:请统一 Multimedia 插件与 Player 版本,不统一的版本混用会有不可预知的后果!", "\nAttention: Please ensure the Multimedia plugin is synchronized with the Player version. Mixing and matching incompatible versions may result in unpredictable consequences!");
|
|
983
|
+
}
|
|
922
984
|
|
|
923
985
|
exports.AudioPlayer = AudioPlayer;
|
|
924
986
|
exports.MultimediaError = MultimediaError;
|
|
@@ -927,4 +989,5 @@ exports.loadAudio = loadAudio;
|
|
|
927
989
|
exports.multimediaErrorDisplayMessageMap = multimediaErrorDisplayMessageMap;
|
|
928
990
|
exports.multimediaErrorMessageMap = multimediaErrorMessageMap;
|
|
929
991
|
exports.processMultimedia = processMultimedia;
|
|
992
|
+
exports.version = version;
|
|
930
993
|
//# sourceMappingURL=index.js.map
|