summaryrefslogtreecommitdiff
path: root/src/main.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.js')
-rw-r--r--src/main.js42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/main.js b/src/main.js
new file mode 100644
index 0000000..ade4e27
--- /dev/null
+++ b/src/main.js
@@ -0,0 +1,42 @@
+import Voronoi from './modules/3rdparty/rhill-voronoi-core.js';
+import Terrain from './modules/Terrain.js';
+import Mouse from './modules/Mouse.js';
+
+const $ = id => document.getElementById(id)
+
+window.onload = () => {
+ let canvas = document.createElement('canvas');
+ const ct = canvas.getContext('2d');
+
+ let render;
+
+ let mouse = new Mouse(ct);
+
+ const setCanvasSize = () => {
+ canvas.setAttribute('width', window.innerWidth);
+ canvas.setAttribute('height', window.innerHeight);
+ const scale = Math.max(canvas.width, canvas.height);
+ ct.scale(scale, scale);
+ render();
+ };
+ window.addEventListener('resize', setCanvasSize);
+
+ const terrain = new Terrain();
+ render = () => {
+ ct.clearRect(0, 0, 1, 1);
+ terrain.renderGrid(ct);
+ mouse.render(ct);
+ };
+ mouse.onMove = () => {
+ terrain.applyBrush(mouse.x, mouse.y, (pt, strength) => {
+ const lerp = (a, b, theta) => ((theta-1)*a) + (theta*b);
+ pt.height = lerp(pt.height, pt.height + 10, strength);
+ }, 1, mouse.radius);
+ render();
+ }
+
+ setCanvasSize();
+
+ const root = $('root');
+ root.appendChild(canvas);
+}