GraphicsComponent = require("ecs.graphics") sprites = require("sprites") geom_fac = { {-1, -1, 1}, {-1, 1, 1}, {-1, -1, 1}, {1, 1, 1}, {1, -1, 1}, {-1, -1, 1} } class PlayerGraphicComponent extends GraphicsComponent @player_size = 0.25 @static = false --new: (name, properties) => --print("New PlayerGraphicsComponenet, super is", @@__init) --print("But graphicsComponent's __init is:", GraphicsComponent.__init) --GraphicsComponent.__init(@, name, properties) --super(name, properties) tris: () -> 2 populate_buf: (geom_view, uv_view, offset) => @playerbuf = geom_view h = @@player_size / 2 for i, set in ipairs(geom_fac) geom_view[i] = vec3(h*set[1], h*set[2], h*set[3]) uv = sprites.player_normal uv_view[1] = vec2(uv.s1,uv.t1) uv_view[2] = vec2(uv.s1,uv.t2) uv_view[3] = vec2(uv.s2,uv.t2) uv_view[4] = vec2(uv.s2,uv.t2) uv_view[5] = vec2(uv.s2,uv.t1) uv_view[6] = vec2(uv.s1,uv.t1) join: (entity) => super(entity) aspect = win.width / win.height -- inject nodes into the scene graph program = @.node("use_program") pred_component = entity\get("pred") graphic = entity\get("graphic") @node\remove(program) @node\append(am.blend("alpha")\append(am.depth_test("less", true)\append(program))) @node\action(() => pred_loc = pred_component.properties.pos graphic\move(pred_loc.x, pred_loc.y) ) --@.node("bind").highlight = color.am_color.black move: (x,y) => assert(x, "x required") assert(y, "y required") world.level.move_lamp(@lamp, x + @lamp_offset.x, y + @lamp_offset.y) h = @@player_size / 2 z = 0.5 @playerbuf[1] = vec3(x-h,y-h,z) @playerbuf[2] = vec3(x-h,y+h,z) @playerbuf[3] = vec3(x+h,y+h,z) @playerbuf[4] = vec3(x+h,y+h,z) @playerbuf[5] = vec3(x+h,y-h,z) @playerbuf[6] = vec3(x-h,y-h,z) --print("Move called", @playerbuf[1]) face: (direction) => --print("direction",direction) @.node("bind").rot = (direction ) % (math.pi * 2) PlayerGraphicComponent