From 3a975db66a3711f34e8b64bb27a8eaca79fdeca9 Mon Sep 17 00:00:00 2001 From: Alex Pickering Date: Sun, 1 Feb 2026 13:14:32 -0600 Subject: Initial commit --- src/ecs/player_graphic.moon | 66 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 src/ecs/player_graphic.moon (limited to 'src/ecs/player_graphic.moon') diff --git a/src/ecs/player_graphic.moon b/src/ecs/player_graphic.moon new file mode 100644 index 0000000..5ad9cab --- /dev/null +++ b/src/ecs/player_graphic.moon @@ -0,0 +1,66 @@ +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 -- cgit v1.2.3-70-g09d2