diff --git a/src/assets.html b/src/assets.html
index ccd145c..d1dba68 100644
--- a/src/assets.html
+++ b/src/assets.html
@@ -75,7 +75,6 @@
+
+
+
+
+
+
+
{ supercut.visible = false; }, 1000);
+ supercut.material.uniforms.starttime.value = this.el.sceneEl.time - 50;
+ this.superCutIdx = (this.superCutIdx + 1) % this.superCuts.length;
+ }
+
+ const scoreEl = this.el.sceneEl.components[beatScorePool].requestEntity();
+ if (scoreEl) {
scoreEl.object3D.position.copy(this.el.object3D.position);
- scoreEl.setAttribute('text', 'value', scoreText);
scoreEl.play();
scoreEl.emit('beatscorestart', null, false);
}
diff --git a/src/components/score-beat.js b/src/components/score-beat.js
index 34282f0..eec906d 100644
--- a/src/components/score-beat.js
+++ b/src/components/score-beat.js
@@ -2,13 +2,18 @@
* Score beat, auto-return to pool in 1.2s.
*/
AFRAME.registerComponent('score-beat', {
+ schema: {
+ type: 'string'
+ },
+
play: function () {
+ this.poolComponent = `pool__beatscore${this.data}`;
this.startTime = this.el.sceneEl.time;
},
tick: function (time) {
if (time > this.startTime + 1200) {
- this.el.sceneEl.components.pool__beatscore.returnEntity(this.el);
+ this.el.sceneEl.components[this.poolComponent].returnEntity(this.el);
}
}
});
diff --git a/src/components/supercutfx-shader.js b/src/components/supercutfx-shader.js
new file mode 100644
index 0000000..170d0ed
--- /dev/null
+++ b/src/components/supercutfx-shader.js
@@ -0,0 +1,34 @@
+AFRAME.registerShader('superCutFxShader', {
+ schema: {
+ starttime: {type: 'float', is: 'uniform'},
+ timems: {type: 'time', is: 'uniform'}
+ },
+
+ vertexShader: `
+ varying vec2 uvs;
+ varying vec3 worldPos;
+ void main() {
+ uvs.xy = uv.xy;
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
+ }
+ `,
+
+ fragmentShader: `
+ uniform float starttime;
+ uniform float timems;
+ varying vec2 uvs;
+ varying vec3 worldPos;
+
+ #define COLOR vec3(0, 0.67, 0.98)
+
+ void main() {
+ float time = (timems - starttime) / 2000.0;
+ vec2 p = uvs.xy - 0.5;
+ float r = p.x * p.x + p.y * p.y;
+ float alpha = 1.0 - smoothstep(time - 0.01, time, r);
+ alpha *= smoothstep(time - 0.1, time, r);
+ alpha *= 1.0 - time * 5.5;
+ gl_FragColor = vec4(COLOR, alpha);
+ }
+ `
+});
diff --git a/src/index.html b/src/index.html
index 9b941cb..1f3c321 100644
--- a/src/index.html
+++ b/src/index.html
@@ -42,7 +42,10 @@
pool__beat-dot-blue="mixin: dotBlueBeat; size: 10; container: #beatContainer"
pool__beat-dot-red="mixin: dotRedBeat; size: 10; container: #beatContainer"
pool__beat-mine="mixin: mine; size: 12; container: #beatContainer"
- pool__beatscore="mixin: beatScore; size: 5; container: #beatContainer"
+ pool__beatscoreok="mixin: beatScoreOk; size: 2; container: #beatContainer"
+ pool__beatscoregood="mixin: beatScoreGood; size: 2; container: #beatContainer"
+ pool__beatscoreexcellent="mixin: beatScoreExcellent; size: 2; container: #beatContainer"
+ pool__beatscoresuper="mixin: beatScoreSuper; size: 2; container: #beatContainer"
pool__wall="mixin: wall; size: 10; container: #beatContainer"
proxy-event__cleargame1="event: gamemenuexit; as: cleargame; to: a-scene"
proxy-event__cleargame2="event: gamemenurestart; as: cleargame; to: a-scene"
@@ -78,6 +81,11 @@
{% include './templates/victory.html' %}
{% include './templates/leaderboard.html' %}
+
+ {% for i in range(1, 5) %}
+
+ {% endfor %}
+