From f46f773c261682ad7938cf30d5e350cf1a35dc23 Mon Sep 17 00:00:00 2001 From: Brendan Hansen Date: Mon, 18 Oct 2021 17:30:55 -0500 Subject: [PATCH] initial commit --- .gitignore | 7 +++++++ compile.vim | 2 ++ index.html | 29 ++++++++++++++++++++++++++ server.py | 14 +++++++++++++ src/sim.onyx | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 109 insertions(+) create mode 100644 .gitignore create mode 100644 compile.vim create mode 100644 index.html create mode 100755 server.py create mode 100644 src/sim.onyx diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7abdce7 --- /dev/null +++ b/.gitignore @@ -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 index 0000000..f04d62b --- /dev/null +++ b/compile.vim @@ -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 index 0000000..8343ee8 --- /dev/null +++ b/index.html @@ -0,0 +1,29 @@ + + + + OUIT + + + + + + + + + + + + + + This browser does not support the Canvas API. + + diff --git a/server.py b/server.py new file mode 100755 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 index 0000000..e7b3b2b --- /dev/null +++ b/src/sim.onyx @@ -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 -- 2.25.1