Skip to content

Instantly share code, notes, and snippets.

View KeyMaster-'s full-sized avatar

Tilman Schmidt KeyMaster-

View GitHub Profile
@KeyMaster-
KeyMaster- / FunctionFinder.hx
Created February 12, 2016 23:26
A macro that extracts all static methods from a class that conform to a certain function signature, and returns an array with those functions.
import haxe.macro.Expr;
import haxe.macro.Context;
import haxe.macro.Type;
import haxe.macro.TypeTools;
import haxe.macro.MacroStringTools;
class FunctionFinder {
macro public static function get_functions(e:Expr, fun_signature:Expr) {
var function_type:Type = switch(fun_signature.expr) {
case EConst(c):
@KeyMaster-
KeyMaster- / to_hex.p8
Created September 24, 2016 13:45
Pico8 number-to-hex function
hex_abc = '0123456789abcdef'
function to_hex(num)
local str = ''
for i=0,7 do --8 packs of 4 bits for 32 bit number
local digit = num
local shift = (i - 4)*4
if shift < 0 then digit = shl(digit, -shift)
else digit = shr(digit, shift) end
@KeyMaster-
KeyMaster- / RotatingPyramid.hx
Last active October 19, 2016 12:00
A quick luxe program to demonstrate manual perspective projection of a rotating pyramid.
import luxe.GameConfig;
import luxe.Input;
import luxe.Vector;
class Main extends luxe.Game {
//--- The actual important stuff --
var verts:Array<Vector>; //Holds the '3D model' vertices, i.e. actual 3D coordinates
import luxe.GameConfig;
import luxe.Input;
import luxe.Vector;
class Main extends luxe.Game {
//--- The actual important stuff --
var verts:Array<Vector>; //Holds the '3D model' vertices, i.e. actual 3D coordinates
@KeyMaster-
KeyMaster- / integrator_lab.rs
Last active March 28, 2020 23:59
A simple harmonic oscillator simulation for testing out different numerical integration methods. Logs state at each step in CSV format.
// Just position and velocity along one dimension. We're assuming the particle has a mass of 1.
#[derive(Clone)]
struct State {
x: f64,
v: f64,
}
trait Integrator {
fn step(&mut self, state: State, sim: &Simulation, dt: f64) -> State;