diff --git a/ShadowEditor.Web/src/component/PostProcessingComponent.js b/ShadowEditor.Web/src/component/PostProcessingComponent.js index bdf8988c..d2a96d9e 100644 --- a/ShadowEditor.Web/src/component/PostProcessingComponent.js +++ b/ShadowEditor.Web/src/component/PostProcessingComponent.js @@ -135,7 +135,7 @@ PostProcessingComponent.prototype.render = function () { xtype: 'number', id: 'bokehMaxBlur', scope: this.id, - value: 1.0, + value: 0.05, onChange: this.onChange.bind(this) }] }] diff --git a/ShadowEditor.Web/src/player/Player.js b/ShadowEditor.Web/src/player/Player.js index fb8663d5..79f6bf32 100644 --- a/ShadowEditor.Web/src/player/Player.js +++ b/ShadowEditor.Web/src/player/Player.js @@ -88,17 +88,18 @@ Player.prototype.start = function () { this.loader.create(jsons).then(obj => { this.initPlayer(obj); - this.event.create(this.scene, this.camera, this.renderer, obj.scripts); - this.control.create(this.scene, this.camera, this.renderer); - this.audio.create(this.scene, this.camera, this.renderer, this.loader); - this.playerRenderer.create(this.scene, this.camera, this.renderer); - this.animation.create(this.scene, this.camera, this.renderer, obj.animation); - this.physics.create(this.scene, this.camera, this.renderer); - - this.clock.start(); - this.event.init(); - this.event.start(); + var promise1 = this.event.create(this.scene, this.camera, this.renderer, obj.scripts); + var promise2 = this.control.create(this.scene, this.camera, this.renderer); + var promise3 = this.audio.create(this.scene, this.camera, this.renderer, this.loader); + var promise4 = this.playerRenderer.create(this.scene, this.camera, this.renderer); + var promise5 = this.animation.create(this.scene, this.camera, this.renderer, obj.animation); + var promise6 = this.physics.create(this.scene, this.camera, this.renderer); + Promise.all([promise1, promise2, promise3, promise4, promise5, promise6]).then(() => { + this.event.init(); + this.clock.start(); + this.event.start(); + }); requestAnimationFrame(this.animate.bind(this)); }); }; diff --git a/ShadowEditor.Web/src/player/animator/MMDAnimator.js b/ShadowEditor.Web/src/player/animator/MMDAnimator.js index 85005fef..0ef17943 100644 --- a/ShadowEditor.Web/src/player/animator/MMDAnimator.js +++ b/ShadowEditor.Web/src/player/animator/MMDAnimator.js @@ -31,7 +31,11 @@ MMDAnimator.prototype.create = function (scene, camera, renderer, animations) { var helper = this.helper; mmds.forEach(mesh => { - let { animation, cameraAnimation, audio } = mesh.userData.obj; + let { + animation, + cameraAnimation, + audio + } = mesh.userData.obj; if (animation) { helper.add(mesh, { @@ -52,11 +56,15 @@ MMDAnimator.prototype.create = function (scene, camera, renderer, animations) { if (audio) { var audioParams = { - delayTime: 160 * 1 / 30 + delayTime: 5 }; helper.add(audio, audioParams); } }); + + return new Promise(resolve => { + resolve(); + }); }; MMDAnimator.prototype.update = function (clock, deltaTime) { @@ -64,7 +72,7 @@ MMDAnimator.prototype.update = function (clock, deltaTime) { return; } - this.helper.update(deltaTime); + this.helper.update(deltaTime * 1.3); }; MMDAnimator.prototype.dispose = function () { diff --git a/ShadowEditor.Web/src/player/animator/ParticleAnimator.js b/ShadowEditor.Web/src/player/animator/ParticleAnimator.js index 982670e1..8985a1b6 100644 --- a/ShadowEditor.Web/src/player/animator/ParticleAnimator.js +++ b/ShadowEditor.Web/src/player/animator/ParticleAnimator.js @@ -14,6 +14,10 @@ ParticleAnimator.prototype.constructor = ParticleAnimator; ParticleAnimator.prototype.create = function (scene, camera, renderer) { this.scene = scene; + + return new Promise(resolve => { + resolve(); + }); }; ParticleAnimator.prototype.update = function (clock, deltaTime, time) { diff --git a/ShadowEditor.Web/src/player/animator/TweenAnimator.js b/ShadowEditor.Web/src/player/animator/TweenAnimator.js index d03991b9..c537137d 100644 --- a/ShadowEditor.Web/src/player/animator/TweenAnimator.js +++ b/ShadowEditor.Web/src/player/animator/TweenAnimator.js @@ -15,6 +15,10 @@ TweenAnimator.prototype.constructor = TweenAnimator; TweenAnimator.prototype.create = function (scene, camera, renderer, animations) { this.scene = scene; this.animations = animations; + + return new Promise(resolve => { + resolve(); + }); }; TweenAnimator.prototype.update = function (clock, deltaTime, time) { diff --git a/ShadowEditor.Web/src/player/component/PlayerAnimation.js b/ShadowEditor.Web/src/player/component/PlayerAnimation.js index 383d0612..7dcefca9 100644 --- a/ShadowEditor.Web/src/player/component/PlayerAnimation.js +++ b/ShadowEditor.Web/src/player/component/PlayerAnimation.js @@ -36,13 +36,15 @@ PlayerAnimation.prototype.create = function (scene, camera, renderer, animations this.maxTime = this.calculateMaxTime(); - this.animators.forEach(n => { - n.create(scene, camera, renderer, animations); - }); - this.app.call(`resetAnimation`, this); this.app.call(`startAnimation`, this); this.app.on(`animationTime.${this.id}`, this.updateTime.bind(this)); + + var promises = this.animators.map(n => { + return n.create(scene, camera, renderer, animations); + }); + + return Promise.all(promises); }; PlayerAnimation.prototype.calculateMaxTime = function () { diff --git a/ShadowEditor.Web/src/player/component/PlayerAudio.js b/ShadowEditor.Web/src/player/component/PlayerAudio.js index 5d1571c6..a6685545 100644 --- a/ShadowEditor.Web/src/player/component/PlayerAudio.js +++ b/ShadowEditor.Web/src/player/component/PlayerAudio.js @@ -35,6 +35,10 @@ PlayerAudio.prototype.create = function (scene, camera, renderer, loader) { this.audios.push(n); } }); + + return new Promise(resolve => { + resolve(); + }); }; PlayerAudio.prototype.dispose = function () { diff --git a/ShadowEditor.Web/src/player/component/PlayerComponent.js b/ShadowEditor.Web/src/player/component/PlayerComponent.js index fe02f3c1..087ffe74 100644 --- a/ShadowEditor.Web/src/player/component/PlayerComponent.js +++ b/ShadowEditor.Web/src/player/component/PlayerComponent.js @@ -17,7 +17,9 @@ function PlayerComponent(app) { * @param {*} others */ PlayerComponent.prototype.create = function (scene, camera, renderer, others) { - + return new Promise(resolve => { + resolve(); + }); }; /** diff --git a/ShadowEditor.Web/src/player/component/PlayerControl.js b/ShadowEditor.Web/src/player/component/PlayerControl.js index b76d7a41..4453cf95 100644 --- a/ShadowEditor.Web/src/player/component/PlayerControl.js +++ b/ShadowEditor.Web/src/player/component/PlayerControl.js @@ -50,6 +50,10 @@ PlayerControl.prototype.create = function (scene, camera, renderer) { } else { } + + return new Promise(resolve => { + resolve(); + }); }; PlayerControl.prototype.update = function (clock, deltaTime) { diff --git a/ShadowEditor.Web/src/player/component/PlayerEvent.js b/ShadowEditor.Web/src/player/component/PlayerEvent.js index 7bfb20c3..df3c2b4d 100644 --- a/ShadowEditor.Web/src/player/component/PlayerEvent.js +++ b/ShadowEditor.Web/src/player/component/PlayerEvent.js @@ -73,6 +73,10 @@ PlayerEvent.prototype.create = function (scene, camera, renderer, scripts) { window.addEventListener('resize', n.onResize.bind(this.scene)); } }); + + return new Promise(resolve => { + resolve(); + }); }; /** diff --git a/ShadowEditor.Web/src/player/component/PlayerPhysics.js b/ShadowEditor.Web/src/player/component/PlayerPhysics.js index 3965fbb6..39b0a01a 100644 --- a/ShadowEditor.Web/src/player/component/PlayerPhysics.js +++ b/ShadowEditor.Web/src/player/component/PlayerPhysics.js @@ -55,6 +55,10 @@ PlayerPhysics.prototype.create = function (scene, camera, renderer) { } } }); + + return new Promise(resolve => { + resolve(); + }); }; PlayerPhysics.prototype.update = function (clock, deltaTime) { diff --git a/ShadowEditor.Web/src/player/component/PlayerRenderer.js b/ShadowEditor.Web/src/player/component/PlayerRenderer.js index df4d8362..b3ad8041 100644 --- a/ShadowEditor.Web/src/player/component/PlayerRenderer.js +++ b/ShadowEditor.Web/src/player/component/PlayerRenderer.js @@ -51,7 +51,7 @@ PlayerRenderer.prototype.create = function (scene, camera, renderer) { if (postProcessing.bokeh && postProcessing.bokeh.enabled) { effect = new THREE.BokehPass(scene, camera, { focus: postProcessing.bokeh.focus, - aperture: postProcessing.bokeh.aperture, + aperture: postProcessing.bokeh.aperture / 100, maxblur: postProcessing.bokeh.maxBlur, width: renderer.domElement.width, height: renderer.domElement.height @@ -69,6 +69,10 @@ PlayerRenderer.prototype.create = function (scene, camera, renderer) { } this.composer = composer; + + return new Promise(resolve => { + resolve(); + }); }; PlayerRenderer.prototype.update = function (clock, deltaTime) {