diff options
| author | Alex Pickering <alex@cogarr.net> | 2026-02-01 13:14:32 -0600 |
|---|---|---|
| committer | Alexander M Pickering <alex@cogarr.net> | 2026-02-01 13:14:32 -0600 |
| commit | 3a975db66a3711f34e8b64bb27a8eaca79fdeca9 (patch) | |
| tree | fcc12f8f9d638ff575c1963796de76b7628854b4 /src/ecs/graphics.moon | |
| download | ggj26-3a975db66a3711f34e8b64bb27a8eaca79fdeca9.tar.gz ggj26-3a975db66a3711f34e8b64bb27a8eaca79fdeca9.tar.bz2 ggj26-3a975db66a3711f34e8b64bb27a8eaca79fdeca9.zip | |
Diffstat (limited to 'src/ecs/graphics.moon')
| -rw-r--r-- | src/ecs/graphics.moon | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/ecs/graphics.moon b/src/ecs/graphics.moon new file mode 100644 index 0000000..66e5e80 --- /dev/null +++ b/src/ecs/graphics.moon @@ -0,0 +1,67 @@ +Component = require("ecs.component") +sprites = require("sprites") +gworld = require("shaders.world") +world = require("world") +log = require("log") + +sd = sprites.floor +w1 = sprites.wall1_diffuse + +panel = { + vec3(0, 1, 0.4), + vec3(1, 1, 0.4), + vec3(1, 0, 0.4), + vec3(1, 0, 0.4), + vec3(0, 0, 0.4), + vec3(0, 1, 0.4) +} + +class GraphicsComponent extends Component + new: (name, properties) => + --assert(properties and properties.node , "Failed to find node for graphics component") + --assert(@@node, ".node not set for GraphicsComponent") + assert(world.geom_view,".geom_view not set for world") + assert(world.uv_view, ".uv_view not set for world") + --@node = properties.node + super(name, properties) + static: () => + @@static + join: () => + --log.info("Joining with graphics component" .. tostring(@node), {"graphics"}) + --@@node\append(@node) + gworld.add(@) + leave: () => + gworld.remove(@) + --@@node\remove(@node) + node: () => + error("Tried to access graphic component's .node") + --@properties.node + tris: () => + 2 + populate_buf: (geom_view, uv_view, offset) => + assert(@properties.graphic, "Graphics component needs a graphic") + assert(offset == 1, "Offset was " .. tostring(offset)) + log.info("Populating:" .. tostring(offset) .. ":" .. tostring(@properties.graphic), {"graphic","ecs"}) + log.info(debug.traceback(), {"graphic","ecs"}) + log.info("Populating with:" .. tostring(panel),{"graphic","ecs"}) + geom_view\set(panel, offset, @tris! * 3) + @geom_view = geom_view + @uv_view = uv_view + @offset = offset + uv = @properties.graphic + uv_view[1] = vec4(uv.s1,uv.t1,1,1) + uv_view[2] = vec4(uv.s1,uv.t2,1,1) + uv_view[3] = vec4(uv.s2,uv.t2,1,1) + uv_view[4] = vec4(uv.s2,uv.t2,1,1) + uv_view[5] = vec4(uv.s2,uv.t1,1,1) + uv_view[6] = vec4(uv.s1,uv.t1,1,1) + --error("Graphics components must override .populate_buf()") + move: (move_off) => + for i, set in ipairs(panel) + @geom_view[@offset + i - 1] = @geom_view[@offset + i - 1] + move_off + moveto: (loc) => + assert(@offset, "Moveto called before populate_buf") + for i, set in ipairs(panel) + @geom_view[@offset + i - 1] = loc + set + +GraphicsComponent |
