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
|
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
tutorial_keys = false
tutorial_mouse = false
tutorial_visual = false
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) ->
tuv = fuv
if not tutorial_keys
tuv = sprites.help_1
tutorial_keys = true
elseif not tutorial_mouse
tuv = sprites.help_2
tutorial_mouse = true
elseif not tutorial_visual
tuv = sprites.help_3
tutorial_visual = true
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(tuv.s1, tuv.t1)
normal_view[offset + 1] = vec2(tuv.s1, tuv.t2)
normal_view[offset + 2] = vec2(tuv.s2, tuv.t2)
normal_view[offset + 3] = vec2(tuv.s2, tuv.t2)
normal_view[offset + 4] = vec2(tuv.s2, tuv.t1)
normal_view[offset + 5] = vec2(tuv.s1, tuv.t1)
--left wall
j = 1
--wall(geom_view, normal_view, j, vec2(-2,-2),vec2(-2,0), sprites.wall_inside_normal)
--lamp = world.level.add_lamp(vec4(0,0,1,2))
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
|