diff options
Diffstat (limited to 'src/prefab/cabin.moon')
| -rw-r--r-- | src/prefab/cabin.moon | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/prefab/cabin.moon b/src/prefab/cabin.moon new file mode 100644 index 0000000..1358c5a --- /dev/null +++ b/src/prefab/cabin.moon @@ -0,0 +1,79 @@ +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 + h1 = sprites.help_1 + h2 = sprites.help_2 + h3 = sprites.help_3 + h1_r = false + h2_r = false + h3_r = 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 h1_r + tuv = h1 + h1_r = true + elseif not h2_r + tuv = h2 + h2_r = true + elseif not h3_r + tuv = h3 + h3_r = 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) + 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 |
