diff options
Diffstat (limited to 'js/shader.js')
| -rw-r--r-- | js/shader.js | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/js/shader.js b/js/shader.js index b829a0d..cd6b899 100644 --- a/js/shader.js +++ b/js/shader.js @@ -1,13 +1,14 @@ var shader = (function(){ var fn_str, fn, lex var exports = {} + var animating = false exports.init = function(){ lex = new Lex (0, 0) exports.build(demo_shader.innerHTML) } exports.build = function (fn_str){ - new_fn = new Function('lex', 'x', 'y', fn_str) + new_fn = new Function('lex', 'x', 'y', 't', fn_str) try { new_fn(lex, 0, 0) } @@ -18,11 +19,26 @@ var shader = (function(){ return fn } exports.run = function(canvas){ + var t = +new Date canvas.forEach(function(lex, y, x){ - fn(lex, x, y) + fn(lex, x, y, t) lex.build() }) } + exports.toggle = function(state){ + animating = typeof state == "boolean" ? state : ! animating + } + exports.pause = function(){ + animating = false + } + exports.play = function(){ + animating = true + } + exports.animate = function (t){ + requestAnimationFrame(exports.animate) + if (! animating) { return } + exports.run(canvas) + } return exports |
