aboutsummaryrefslogtreecommitdiff
path: root/src/ecs/graphics.moon
diff options
context:
space:
mode:
authorAlex Pickering <alex@cogarr.net>2026-02-01 13:14:32 -0600
committerAlexander M Pickering <alex@cogarr.net>2026-02-01 13:14:32 -0600
commit3a975db66a3711f34e8b64bb27a8eaca79fdeca9 (patch)
treefcc12f8f9d638ff575c1963796de76b7628854b4 /src/ecs/graphics.moon
downloadggj26-master.tar.gz
ggj26-master.tar.bz2
ggj26-master.zip
Initial commitHEADmaster
Diffstat (limited to 'src/ecs/graphics.moon')
-rw-r--r--src/ecs/graphics.moon67
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