world = require("world") sprites = require("world.sprites") ecs = require("ecs") class BobberGraphicsComponent extends world.GraphicsComponent @loctbl = { {-1,-1} {-1,1} {1,1} {1,1} {1,-1} {-1,-1} } buf_size: () => 6 populate_buf: (geom_view, normal_view, offset) => @buf = geom_view h = 0.1 uv = sprites.player_normal utbl = { [-1]: {uv.s1, uv.t1} [1]: {uv.s2, uv.t2} } z = -0.1 print("Bobber created at", @properties.pos) for i = 1,6 loctbl = @@loctbl[i] geom_view[i] = vec3(@@loctbl[i][1] * h, @@loctbl[i][2] * h, z) + vec3(@properties.pos.x, @properties.pos.y, z) normal_view[i] = vec2(utbl[@@loctbl[i][1]][1], utbl[@@loctbl[i][2]][2]) class BobberPhysicsComponent extends world.PhysicsComponent new: (name, properties, shape, args) => super(name, properties) join: (entity) => super(entity) @gc = entity\get("graphics") class Bobber extends ecs.Entity new: (name, position) => c = { bobber: BobberGraphicsComponent("bobber",{pos: position}) pc: world.PhysicsComponent("pc",{},"circle", {position.x, position.y, 0.1}) } super(name, c) check: () => --print("Bobber is looking for fish") bp = @get("pc") for other, _ in pairs(bp\collisions!) --print("Found entity in collisions:", other) if other.component and other.component.entity --print("And it's component.entity is:", other.component.entity) @which = other.component.entity return true return false class BubblesGraphicsComponent extends world.GraphicsComponent buf_size: () => 6 populate_buf: (geom_view, normal_view, offset) => h = 1 geom_view[1] = vec3(-h,-h,1) geom_view[2] = vec3(-h,h,1) geom_view[3] = vec3(-h,-h,1) geom_view[4] = vec3(h,h,1) geom_view[5] = vec3(h,-h,1) geom_view[6] = vec3(-h,-h,1) uv = sprites.player_normal normal_view[1] = vec2(uv.s1,uv.t1) normal_view[2] = vec2(uv.s1,uv.t2) normal_view[3] = vec2(uv.s2,uv.t2) normal_view[4] = vec2(uv.s2,uv.t2) normal_view[5] = vec2(uv.s2,uv.t1) normal_view[6] = vec2(uv.s1,uv.t1) bind = @.node("bind") {:BobberGraphicsComponent, :BobberPhysicsComponent, :Bobber}