diff options
| author | Jules Laplace <jules@okfoc.us> | 2014-04-28 18:49:49 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2014-04-28 18:49:49 -0400 |
| commit | fe91a9fe2ce70a679fc836fd1a1f8bde3d3b63e2 (patch) | |
| tree | 01c8d4ee2895c308f753f37b0e884b0af8659f33 /assets/javascripts/rectangles/engine/scenery.js | |
| parent | 5341b0b2c197cbfdc1304e756e43b7d0ad399220 (diff) | |
pictures on walls
Diffstat (limited to 'assets/javascripts/rectangles/engine/scenery.js')
| -rw-r--r-- | assets/javascripts/rectangles/engine/scenery.js | 100 |
1 files changed, 91 insertions, 9 deletions
diff --git a/assets/javascripts/rectangles/engine/scenery.js b/assets/javascripts/rectangles/engine/scenery.js index 07583c2..816bf06 100644 --- a/assets/javascripts/rectangles/engine/scenery.js +++ b/assets/javascripts/rectangles/engine/scenery.js @@ -1,19 +1,101 @@ +var wall_rotation = {} +wall_rotation[FRONT] = PI +wall_rotation[BACK] = 0 +wall_rotation[LEFT] = HALF_PI +wall_rotation[RIGHT] = -HALF_PI + var scenery = new function(){ var base = this; base.init = function(){ - var img = new MX.Image({ - src:"http://i.asdf.us/im/48/_1398690981_jules.gif", - x: 0, - y: 50, - z: 0, - scale: 1.2, - rotationY: 3*PI/4, - backface: true, + var url = "https://s3.amazonaws.com/luckyplop/f5b2c20e602cdfc86383910f294dcf23d91fa956.png" + var img = new Image () + img.onload = function(){ base.load(img) } + img.src = url + if (img.complete) base.load(img) + } + + base.load = function(img){ + img.width = 300 + img.height = ~~(300 * img.naturalHeight/img.naturalWidth) + clipper.rooms.forEach(function(room){ + room.walls.forEach(function(wall){ + new_image(wall, img) + }) }) - scene.add(img) + } + function new_image (wall, img) { + var x, z + if (wall.side & FRONT_BACK && wall.rect.x.length() < img.width) { + return + } + if (wall.side & LEFT_RIGHT && wall.rect.y.length() < img.width) { + return + } + + switch (wall.side) { + case FRONT: + x = wall.rect.x.a + wall.rect.x.length()/2 + z = wall.rect.y.a + 10 + break + case BACK: + x = wall.rect.x.b - wall.rect.x.length()/2 + z = wall.rect.y.b - 10 + break + case LEFT: + x = wall.rect.x.a + 10 + z = wall.rect.y.a + wall.rect.y.length()/2 + break + case RIGHT: + x = wall.rect.x.b - 10 + z = wall.rect.y.b - wall.rect.y.length()/2 + break + } + + var mx_img = new MX.Image({ + src: img.src, + x: x, + y: 70, + z: z, + scale: 300/img.naturalWidth, + rotationY: wall_rotation[ wall.side ], + backface: false, + }) + scene.add(mx_img) + + // https://s3.amazonaws.com/luckyplop/f5b2c20e602cdfc86383910f294dcf23d91fa956.png + + var x = 0, y = 0, z = 0, ry = 3 * PI/4 + + my_mouse = new mouse ({ el: mx_img.el }) + my_mouse.tube.on("down", function(e, cursor){ + console.log("down") + x = mx_img.x + y = mx_img.y + z = mx_img.z + }) + my_mouse.tube.on("drag", function(e, cursor){ + console.log("drag") + mx_img.y = y - cursor.y.magnitude() + switch (wall.side) { + case FRONT: + mx_img.x = x + cursor.x.magnitude() + break + case BACK: + mx_img.x = x - cursor.x.magnitude() + break + case LEFT: + mx_img.z = z - cursor.x.magnitude() + break + case RIGHT: + mx_img.z = z + cursor.x.magnitude() + break + } + }) + my_mouse.tube.on("up", function(e, cursor){ + }) } return base |
