initial commit
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 18 Oct 2021 22:30:55 +0000 (17:30 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 18 Oct 2021 22:30:55 +0000 (17:30 -0500)
.gitignore [new file with mode: 0644]
compile.vim [new file with mode: 0644]
index.html [new file with mode: 0644]
server.py [new file with mode: 0755]
src/sim.onyx [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..7abdce7
--- /dev/null
@@ -0,0 +1,7 @@
+js
+modules
+build.sh
+ouit.wasm
+ouit.wasm.data
+*.sublime-project
+*.sublime-workspace
\ No newline at end of file
diff --git a/compile.vim b/compile.vim
new file mode 100644 (file)
index 0000000..f04d62b
--- /dev/null
@@ -0,0 +1,2 @@
+set errorformat=%E\(%f\:%l\\,%c\)\ \%m,%C%.%#
+set makeprg=./build.sh
diff --git a/index.html b/index.html
new file mode 100644 (file)
index 0000000..8343ee8
--- /dev/null
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<html>
+    <head>
+        <title>OUIT</title>
+
+        <style>
+        html, body, canvas {
+            margin: 0;
+            padding: 0;
+            width: 100%;
+            height: 100%;
+            overflow: hidden;
+            background-color: black;
+        }
+        </style>
+
+        <script type="application/onyx" multi-threaded="true" data="ouit.wasm.data" src="ouit.wasm"></script>
+        <script type="text/javascript" src="modules/webgl2/webgl2.js"></script>
+        <script type="text/javascript" src="modules/js_events/js_events.js"></script>
+        <script type="text/javascript" src="modules/ouit/ouit.js"></script>
+        <script type="text/javascript" src="js/onyx-loader.js"></script>
+
+        <script>window.ONYX_THREAD_SCRIPT = "js/onyx-thread.js";</script>
+    </head>
+
+    <body>
+        <canvas id="main_canvas">This browser does not support the Canvas API.</canvas>
+    </body>
+</html>
diff --git a/server.py b/server.py
new file mode 100755 (executable)
index 0000000..67cdccb
--- /dev/null
+++ b/server.py
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+
+from http import server
+
+class COOPServer(server.SimpleHTTPRequestHandler):
+    def end_headers(self):
+        self.send_header("Cross-Origin-Embedder-Policy", "require-corp")
+        self.send_header("Cross-Origin-Opener-Policy", "same-origin")
+
+        server.SimpleHTTPRequestHandler.end_headers(self)
+
+if __name__ == '__main__':
+    httpd = server.HTTPServer(('', 8000), COOPServer)
+    httpd.serve_forever()
diff --git a/src/sim.onyx b/src/sim.onyx
new file mode 100644 (file)
index 0000000..e7b3b2b
--- /dev/null
@@ -0,0 +1,57 @@
+package main 
+
+#load "modules/ouit/module"
+
+#private_file {
+    gl       :: package gl
+    gfx      :: package immediate_mode
+
+    ouit     :: package ouit
+
+    use package core
+    use package core.intrinsics.onyx
+}
+
+main :: (args) => {
+    ouit.init("main_canvas", handle_event, update, draw);
+    ouit.start();
+}
+
+x: f32 = 0;
+y: f32 = 0;
+sx: f32;
+sy: f32;
+handle_event :: (ev) => {
+    switch ev.kind {
+        case .KeyDown {
+            switch ev.keyboard.keycode {
+                case 38 do sy = -100.0f;
+                case 40 do sy =  100.0f;
+                case 39 do sx =  100.0f;
+                case 37 do sx = -100.0f;
+            }
+        }
+
+        case .Resize {
+            gl.setSize(ev.resize.width, ev.resize.height);
+            gfx.set_window_size(ev.resize.width, ev.resize.height);
+        }
+    }
+}
+
+update :: (dt: f32) {
+    x += sx * dt;
+    y += sy * dt;
+
+    sx *= 0.9;
+    sy *= 0.9;
+}
+
+draw :: () {
+    gl.clearColor(.1, .1, .1, 1);
+    gl.clear(gl.COLOR_BUFFER_BIT);
+
+    gfx.rect(.{ x, y }, .{ 50, 50 }, .{ 1, 1, 1 });
+
+    gfx.flush();
+}
\ No newline at end of file