1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
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}
|