Skip to content

Instantly share code, notes, and snippets.

@mebens
mebens / guide.sh
Created January 13, 2019 07:46
Setting up an up-to-date LAMP stack server on Ubuntu 18.04
# 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 March 7, 2013 08:40
A Lua script that adds polar vectors, without compensation for significant figures.
#!/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 December 10, 2015 05:08
Working Tilemap class using a canvas.
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 December 14, 2012 03:26
A Tilemap class. Unsure if the collision code works.
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 December 6, 2012 23:54
Here's an interesting noise-based Love2D shader. Simply keep setting factor to a random number every frame (or some other interval).
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 December 6, 2012 02:30
A post-processing effects manager for Love2D
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 December 5, 2012 19:36
Simple glow/bloom GLSL shader for Love2D
// 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 November 16, 2012 04:24
Doubly linked list in 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 November 8, 2012 01:15
Spritemap that works with Ammo
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 November 1, 2012 05:12
Calculate 8-axis movement angle with LÖVE and ammo-input
-- 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