summaryrefslogtreecommitdiff
path: root/assets/javascripts/rectangles/engine/scenery.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/javascripts/rectangles/engine/scenery.js')
-rw-r--r--assets/javascripts/rectangles/engine/scenery.js177
1 files changed, 0 insertions, 177 deletions
diff --git a/assets/javascripts/rectangles/engine/scenery.js b/assets/javascripts/rectangles/engine/scenery.js
deleted file mode 100644
index 1301949..0000000
--- a/assets/javascripts/rectangles/engine/scenery.js
+++ /dev/null
@@ -1,177 +0,0 @@
-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.mouse = new mouse ({ use_offset: false })
-
- base.init = function(){
- var urls = [
- "http://okfocus.s3.amazonaws.com/office/ducks/duck1.jpg",
- "http://okfocus.s3.amazonaws.com/office/ducks/duck2.jpg",
- "http://okfocus.s3.amazonaws.com/office/ducks/duck3.jpg",
- "http://okfocus.s3.amazonaws.com/office/ducks/duck4.jpg",
- "http://okfocus.s3.amazonaws.com/office/ducks/duck5.jpg",
- ]
- var loader = new Loader(function(){
- base.load(loader.images)
- })
- loader.preloadImages(urls)
- }
-
- base.load = function(images){
- images.forEach(function(img){
- img.width = 300
- img.height = ~~(300 * img.naturalHeight/img.naturalWidth)
- })
-
- Rooms.forEach(function(room){
- room.walls.forEach(function(wall){
- new_image(wall, choice(images))
- })
- })
- }
-
- function new_image (wall, img) {
- var x, z
-
- if (! wall.fits(img)) return
-
- var mx_img = new MX.Image({
- src: img.src,
- x: 0,
- y: Rooms.list[wall.room].height/2 - img.height/2 - 20,
- z: 0,
- scale: 300/img.naturalWidth,
- rotationY: 0,
- backface: false,
- })
-
- var center = wall.center_for(img, null)
- mx_img.move({
- x: center.a,
- z: center.b,
- rotationY: wall_rotation[ wall.side ]
- })
- scene.add(mx_img)
-
- // https://s3.amazonaws.com/luckyplop/f5b2c20e602cdfc86383910f294dcf23d91fa956.png
-
- var x = 0, y = 0, z = 0, bounds
-
- // should be proportional to distance from wall
- var cursor_amp = 1.5
- var dragging = false
-
- base.mouse.bind_el(mx_img.el)
- base.mouse.tube.on("down", function(e, cursor){
- if (e.target != mx_img.el) return;
- dragging = true
- x = mx_img.x
- y = mx_img.y
- z = mx_img.z
- bounds = wall.bounds_for(img)
- document.body.classList.add("dragging")
- })
- base.mouse.tube.on("enter", function(e, new_wall, cursor){
- if (! dragging) return
- if (new_wall.uid == wall.uid) return
- if (! new_wall.fits(img)) return
-
- bounds = new_wall.bounds_for(img)
- center = new_wall.center_for(img)
-
- x = center.a
- z = center.b
-
- var wall_group = wall.side | new_wall.side
-
- if (wall.side !== new_wall.side && wall_group !== FRONT_BACK && wall_group !== LEFT_RIGHT) {
- switch (wall.side) {
- case FRONT:
- z = bounds.x.a
- break
- case BACK:
- z = bounds.x.b
- break
- case LEFT:
- x = bounds.x.a
- break
- case RIGHT:
- x = bounds.x.b
- break
- }
- }
-
- cursor.x.a = cursor.x.b
-
- mx_img.move({
- x: x,
- z: z,
- rotationY: wall_rotation[ new_wall.side ]
- })
-
- wall = new_wall
- })
- base.mouse.tube.on("drag", function(e, cursor){
- if (! dragging) return
-
- mx_img.y = bounds.y.clamp( y - cursor.y.magnitude()*cursor_amp )
- switch (wall.side) {
- case FRONT:
- mx_img.x = bounds.x.clamp( x - cursor.x.magnitude()*cursor_amp )
- break
- case BACK:
- mx_img.x = bounds.x.clamp( x + cursor.x.magnitude()*cursor_amp )
- break
- case LEFT:
- mx_img.z = bounds.x.clamp( z + cursor.x.magnitude()*cursor_amp )
- break
- case RIGHT:
- mx_img.z = bounds.x.clamp( z - cursor.x.magnitude()*cursor_amp )
- break
- }
- })
- base.mouse.tube.on("up", function(e, cursor){
- dragging = false
- document.body.classList.remove("dragging")
- })
- }
-
- function side_direction (a, b) {
- if (a === b) return 0
- if ((a | b) === FRONT_BACK) return 0
- if ((a | b) === LEFT_RIGHT) return 0
- switch (a) {
- case FRONT:
- return b & LEFT ? -1 : 1
- case BACK:
- return b & RIGHT ? -1 : 1
- case LEFT:
- return b & FRONT ? -1 : 1
- case RIGHT:
- return b & BACK ? -1 : 1
- }
- }
-
-// console.log([
-// compare_sides( LEFT, RIGHT ),
-// compare_sides( FRONT, BACK ),
-// compare_sides( FRONT, LEFT ),
-// compare_sides( FRONT, RIGHT ),
-// compare_sides( BACK, RIGHT ),
-// compare_sides( BACK, LEFT ),
-// compare_sides( LEFT, FRONT ),
-// compare_sides( LEFT, BACK ),
-// compare_sides( RIGHT, BACK ),
-// compare_sides( RIGHT, FRONT ),
-// ].join("\n"))
-
- return base
-
-}