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
|
world = require("world")
sprites = require("world.sprites")
ecs = require("ecs")
class CabinGraphicsComponent extends world.GraphicsComponent
--
-- #####
-- # #
-- ##/##
-- 3x3 floor, 1x3 * 3 walls, 1x1 * 2 door side walls, 1x1 door
buf_size: () =>
(6*9) + (6*9) + (6* 2) + (6 * 1)
populate_buf: (geom_view, normal_view, offset) =>
z1 = -0.01
z2 = -1
iuv = sprites.wall_inside_normal
ouv = sprites.wall_outside_normal
fuv = sprites.floor_normal
wall = (geom, uv, offset, start, finish, texture) ->
geom[offset + 0] = vec3(start.x, start.y, z1)
geom[offset + 1] = vec3(start.x, start.y, z2)
geom[offset + 2] = vec3(finish.x, finish.y, z2)
geom[offset + 3] = vec3(finish.x, finish.y, z2)
geom[offset + 4] = vec3(finish.x, finish.y, z1)
geom[offset + 5] = vec3(start.x, start.y, z1)
uv[offset+0] = vec2(texture.s1,texture.t1)
uv[offset+1] = vec2(texture.s1,texture.t2)
uv[offset+2] = vec2(texture.s2,texture.t2)
uv[offset+3] = vec2(texture.s2,texture.t2)
uv[offset+4] = vec2(texture.s2,texture.t1)
uv[offset+5] = vec2(texture.s1,texture.t1)
floor = (geom, uv, offset, start, finish) ->
geom[offset + 0] = vec3(start.x,start.y,z1)
geom[offset + 1] = vec3(start.x,finish.y,z1)
geom[offset + 2] = vec3(finish.x,finish.y,z1)
geom[offset + 3] = vec3(finish.x,finish.y,z1)
geom[offset + 4] = vec3(finish.x,start.y,z1)
geom[offset + 5] = vec3(start.x,start.y,z1)
normal_view[offset + 0] = vec2(fuv.s1, fuv.t1)
normal_view[offset + 1] = vec2(fuv.s1, fuv.t2)
normal_view[offset + 2] = vec2(fuv.s2, fuv.t2)
normal_view[offset + 3] = vec2(fuv.s2, fuv.t2)
normal_view[offset + 4] = vec2(fuv.s2, fuv.t1)
normal_view[offset + 5] = vec2(fuv.s1, fuv.t1)
--left wall
j = 1
wall(geom_view, normal_view, j, vec2(-2,-2),vec2(-2,0), sprites.wall_inside_normal)
j += 6
for floorx = 1,3
for floory = 1,3
floor(geom_view, normal_view, j, vec2(-2 + (2*floorx), -2 + (2*floory)), vec2(2*floorx, 2*floory))
j += 6
cabin = ecs.Entity("cabin",{
graphic: CabinGraphicsComponent("graphic")
})
cabin
|