Skip to content

Instantly share code, notes, and snippets.

Michael Ebens mebens

Block or report user

Report or block mebens

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@mebens
mebens / guide.sh
Created Jan 13, 2019
Setting up an up-to-date LAMP stack server on Ubuntu 18.04
View guide.sh
# Script correlating to tutorial at http://ebens.me/post/install-lamp-stack-ubuntu
# Even though you probably could, don't run it all at once
# new user
adduser new_user
usermod -a -G sudo new_user
su - new_user
# new repos
@mebens
mebens / add-polars.lua
Created Mar 7, 2013
A Lua script that adds polar vectors, without compensation for significant figures.
View add-polars.lua
#!/usr/bin/env lua
function exit(msg, code)
print(msg)
os.exit(code or 1)
end
function main()
if #arg < 4 then exit("Please provide a magnitude and angle for two polar vectors") end
local m1, a1, m2, a2 = unpack(arg)
@mebens
mebens / Tilemap.lua
Last active Dec 10, 2015
Working Tilemap class using a canvas.
View Tilemap.lua
Tilemap = class("Tilemap")
Tilemap._mt = {}
function Tilemap._mt:__index(key)
return rawget(self, "_" .. key) or self.class.__instanceDict[key]
end
Tilemap:enableAccessors()
function Tilemap:initialize(img, fw, fh, width, height)
@mebens
mebens / Sheet.lua
Created Dec 14, 2012
A Tilemap class. Unsure if the collision code works.
View Sheet.lua
Sheet = class("Sheet")
function Sheet:initialize(img, tileWidth, tileHeight)
self.x = 0
self.y = 0
self.image = img
self.tw = tileWidth
self.th = tileHeight
self.quads = {}
@mebens
mebens / gist:4229527
Created Dec 6, 2012
Here's an interesting noise-based Love2D shader. Simply keep setting factor to a random number every frame (or some other interval).
View gist:4229527
extern float factor = 1;
extern float addPercent = 0.1;
extern float clamp = 0.85;
// from http://www.ozone3d.net/blogs/lab/20110427/glsl-random-generator/
float rand(vec2 n)
{
return 0.5 + 0.5 * fract(sin(dot(n.xy, vec2(12.9898, 78.233))) * 43758.5453);
}
@mebens
mebens / postfx.lua
Created Dec 6, 2012
A post-processing effects manager for Love2D
View postfx.lua
postfx = {}
postfx.all = {}
postfx.active = true
local PixelEffect = class("PixelEffect")
function PixelEffect:initialize(effect)
self.effect = effect
self.active = true
end
@mebens
mebens / gist:4218802
Created Dec 5, 2012
Simple glow/bloom GLSL shader for Love2D
View gist:4218802
// adapted from http://www.youtube.com/watch?v=qNM0k522R7o
extern vec2 size;
extern int samples = 5; // pixels per axis; higher = bigger glow, worse performance
extern float quality = 2.5; // lower = smaller glow, better quality
vec4 effect(vec4 colour, Image tex, vec2 tc, vec2 sc)
{
vec4 source = Texel(tex, tc);
vec4 sum = vec4(0);
@mebens
mebens / example.lua
Created Nov 16, 2012
Doubly linked list in Lua
View example.lua
require("list")
local a = { 3 }
local b = { 4 }
local l = list({ 2 }, a, b, { 5 })
l:pop()
l:shift()
l:push({ 6 })
l:unshift({ 7 })
@mebens
mebens / gist:4035772
Created Nov 8, 2012
Spritemap that works with Ammo
View gist:4035772
Spritemap = class("Spritemap")
Spritemap._mt = {}
function Spritemap._mt:__index(key)
return rawget(self, "_" .. key) or self.class.__instanceDict[key]
end
Spritemap:enableAccessors()
function Spritemap:initialize(img, fw, fh, complete, ...)
@mebens
mebens / gist:3991990
Created Nov 1, 2012
Calculate 8-axis movement angle with LÖVE and ammo-input
View gist:3991990
-- returns nil if there's no movement
function getDirection()
local xAxis = input.axisDown("left", "right")
local yAxis = input.axisDown("up", "down")
local xAngle = xAxis == 1 and 0 or (xAxis == -1 and math.tau / 2 or nil)
local yAngle = yAxis == 1 and math.tau / 4 or (yAxis == -1 and math.tau * 0.75 or nil)
if xAngle and yAngle then
-- x = 1, y = -1 is a special case the doesn't fit; not sure what I can do about it other than this:
if xAxis == 1 and yAxis == -1 then return yAngle + math.tau / 8 end
You can’t perform that action at this time.