--- /dev/null
+<!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>
--- /dev/null
+#!/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()
--- /dev/null
+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