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