diff options
| author | Jules Laplace <jules@okfoc.us> | 2014-10-31 18:51:32 -0400 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2014-10-31 18:51:32 -0400 |
| commit | 22bf04c9b56fafadc3c3be54dceb6665243331cd (patch) | |
| tree | eb84826fa6cec2150415c1825280625ce12d10a9 | |
| parent | d94ab5ee18e321f28df32005add4c11946d5d922 (diff) | |
| parent | a12a4f48b75dd26075508b8b3f3953eea0649195 (diff) | |
merge
| -rw-r--r-- | public/assets/javascripts/rectangles/models/surface.js | 7 | ||||
| -rw-r--r-- | public/assets/javascripts/ui/_router.js | 12 | ||||
| -rwxr-xr-x | public/assets/stylesheets/app.css | 66 | ||||
| -rw-r--r-- | public/assets/test/intersect2.html | 2 | ||||
| -rw-r--r-- | public/assets/test/intersect3.html | 230 |
5 files changed, 300 insertions, 17 deletions
diff --git a/public/assets/javascripts/rectangles/models/surface.js b/public/assets/javascripts/rectangles/models/surface.js index fc4aae4..f031665 100644 --- a/public/assets/javascripts/rectangles/models/surface.js +++ b/public/assets/javascripts/rectangles/models/surface.js @@ -12,6 +12,7 @@ var Surface = function (face){ this.bounds = new Rect (new vec2(0, 0), new vec2(0, 0)) + this.vec = new Rect (new vec2(0, 0), new vec2(0, 0)) this.faces = [] if (face) { this.add(face) @@ -161,6 +162,12 @@ return this.faces[i] } } + if (x < this.faces[0].x.a) { + return this.faces[0] + } + else { + return this.faces[this.faces.length-1] + } return null } diff --git a/public/assets/javascripts/ui/_router.js b/public/assets/javascripts/ui/_router.js index 0c95664..d5a8e7f 100644 --- a/public/assets/javascripts/ui/_router.js +++ b/public/assets/javascripts/ui/_router.js @@ -18,6 +18,7 @@ var SiteRouter = Router.extend({ routes: { "/": 'home', + "/home": 'home', "/login": 'signin', "/signup": 'signup', @@ -45,7 +46,16 @@ var SiteRouter = Router.extend({ mobileRoutes: { "/": 'home', "/home": 'home', + "/login": 'signin', + "/signup": 'signup', + "/auth/usernameTaken": 'usernameTaken', + "/auth/password": 'passwordReset', + "/auth/forgotPassword": 'passwordForgot', + "/profile": 'profile', + "/profile/edit": 'editProfile', + "/profile/:name": 'profile', + "/project/:name": 'projectViewer', }, @@ -63,10 +73,12 @@ var SiteRouter = Router.extend({ this.route() + /* if (is_mobile) { $(".topLinks").hide() $(".share").hide() } + */ $("body").removeClass("loading") }, diff --git a/public/assets/stylesheets/app.css b/public/assets/stylesheets/app.css index ef49350..6e42050 100755 --- a/public/assets/stylesheets/app.css +++ b/public/assets/stylesheets/app.css @@ -302,6 +302,7 @@ h5 { .page { text-align:center; + background:#f9f9f9; } .page.profile { @@ -327,6 +328,7 @@ h5 { text-align: left; border-top: 1px solid; padding:10% 0; + margin-bottom:20px; } .projectList.about .item{ @@ -749,6 +751,11 @@ iframe.embed { font-weight: 300; float: left; clear: both; + max-width: 100%; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + display: inline-block; } .profilepage .bio span:last-of-type:after { display: none; } @@ -842,9 +849,6 @@ border-left: 1px solid black; margin: 0; } -.templates span.active { - border:1px solid #017cfe; -} .clear:after { visibility: hidden; @@ -1156,7 +1160,7 @@ border-left: 1px solid black; } .fixed::-webkit-scrollbar { - width: 3px; + width: 3px; } .fixed::-webkit-scrollbar-track { @@ -2632,7 +2636,15 @@ a[data-role="forgot-password"] { width: 70px; height: 37px; } - + .video { + width: 100%!important; + height: auto!important; + } + .video iframe { + width: 100%!important; + height: auto!important; + margin-top: 0!important; + } .topLinks a { padding: 12px 8px; color: black; @@ -2685,23 +2697,36 @@ a[data-role="forgot-password"] { .profilepage .bio { height: 180px; width: 50%; + display: inline-block; + padding-top: 20px; } - .profilepage .bio h2 { - font-weight: 300; - font-size: 30px; - } + .profilePic { width: 50%; height: 180px; } .profilepage .about h2 { - text-align: center; - font-weight: 500; - font-size: 17px; + display:none; + } + .profilepage .projectList.about:after { + content:"In order to create a room in VValls you need to use a desktop or laptop computer.. Its totally worth though!"; + margin:20px 0 10px 0; + font-size:22px; + display:inline-block; + width:100%; + padding:10px; + line-height: 34px; + } + .bio .holder { + display: inline-block; + } + .page .projectList label { + font-weight:600; + border:0; } .projectList.about { text-align: center; - padding: 20px 0; + padding: 0px 0; } .projectList.about .item .rap { padding: 0; @@ -2717,7 +2742,7 @@ a[data-role="forgot-password"] { .projectList.about .item span:nth-child(1) { width: 100%; border-radius: 0; - height: 150px; + height: 160px; } .projectList.about .item span:nth-child(2) { width: 100%; @@ -2732,7 +2757,7 @@ a[data-role="forgot-password"] { padding: 18px 0; } .footer a, .footer span { - margin: 9px; + margin: 4px; } #keyhint { display:none; @@ -2743,7 +2768,13 @@ a[data-role="forgot-password"] { } .projectList .room { width: 100%; - height: 260px; + height: 280px; + margin: 0; + } + .mediaDrawer form h2 { + margin-bottom: 26px; + width: 100%; + text-align: left; } .aboutRoom { width: 170px; @@ -2756,6 +2787,9 @@ a[data-role="forgot-password"] { .aboutRoom h1 a, .aboutRoom h1 { font-size: 16px; } + .footer { + padding:50px 0 120px 0; + } } @media screen and (orientation:portrait) { diff --git a/public/assets/test/intersect2.html b/public/assets/test/intersect2.html index fade288..3df9f30 100644 --- a/public/assets/test/intersect2.html +++ b/public/assets/test/intersect2.html @@ -55,7 +55,7 @@ var rect_room = new Room({ id: "rect", rect: rect, height: 2 }) var east_room = new Room({ id: "east", rect: east, height: 2 }) var corner_room = new Room({ id: "corner", rect: corner, height: 2 }) var peninsula_room = new Room({ id: "peninsula", rect: peninsula, height: 3 }) -var peninsula2_room = new Room({ id: "peninsula2", rect: peninsula2, height: 3 }) +var peninsula2_room = new Room({ id: "peninsula2", rect: peninsula2, height: 1 }) Rooms.add( rect_room ) Rooms.add( east_room ) diff --git a/public/assets/test/intersect3.html b/public/assets/test/intersect3.html new file mode 100644 index 0000000..4fec891 --- /dev/null +++ b/public/assets/test/intersect3.html @@ -0,0 +1,230 @@ +<style> +body,html{margin:0;padding:0;} +#hud { position: absolute; top: 0; left: 0; pointer-events: none; } +</style> +<canvas id="canvas"></canvas> +<div id="hud"></div> + +<script src="/assets/javascripts/util.js"></script> +<script src="/assets/javascripts/vendor/tube.js"></script> +<script src="/assets/javascripts/vendor/bower_components/jquery/dist/jquery.min.js"></script> +<script src="/assets/javascripts/vendor/bower_components/lodash/dist/lodash.min.js"></script> +<script src="/assets/javascripts/mx/mx.js"></script> +<script src="/assets/javascripts/mx/extensions/mx.scene.js"></script> +<script src="/assets/javascripts/rectangles/util/constants.js"></script> +<script src="/assets/javascripts/rectangles/util/mouse.js"></script> +<script src="/assets/javascripts/rectangles/util/sort.js"></script> +<script src="/assets/javascripts/rectangles/util/uid.js"></script> +<script src="/assets/javascripts/rectangles/models/vec2.js"></script> +<script src="/assets/javascripts/rectangles/models/rect.js"></script> +<script src="/assets/javascripts/rectangles/models/room.js"></script> +<script src="/assets/javascripts/rectangles/models/surface.js"></script> +<script src="/assets/javascripts/rectangles/models/wall.js"></script> +<script src="/assets/javascripts/rectangles/models/floor.js"></script> +<script src="/assets/javascripts/rectangles/engine/rooms/_rooms.js"></script> +<script src="/assets/javascripts/rectangles/engine/rooms/_walls.js"></script> +<script src="/assets/javascripts/rectangles/engine/rooms/clipper.js"></script> +<script src="/assets/javascripts/rectangles/engine/rooms/builder.js"></script> +<script src="/assets/javascripts/rectangles/engine/rooms/grouper.js"></script> +<script src="/assets/javascripts/vendor/canvasutilities.js"></script> +<script> + +var ctx = canvas.getContext('2d') +var scene = new MX.Scene() + +var w = canvas.width = window.innerWidth +var h = canvas.height = window.innerHeight + +var cursor = new Rect( 150, 250, 150, 250 ) +var wall_vec = new Rect ( 0, 0, 0, 0 ) +var points = [ cursor.x, cursor.y ] + +var origins = new Rect() +origins.x = cursor.x +origins.y = wall_vec.x + +scene.camera.radius = 20 + +var rect = new Rect( new vec2(100,400), new vec2(100,400) ) +var east = new Rect( new vec2(200,600), new vec2(100,400) ) +var corner = new Rect( new vec2(300,700), new vec2(300,700) ) +var peninsula = new Rect( new vec2(400,600), new vec2(600,800) ) +var peninsula2 = new Rect( new vec2(650,750), new vec2(350,450) ) + +var rect_room = new Room({ id: "rect", rect: rect, height: 2 }) +var east_room = new Room({ id: "east", rect: east, height: 2 }) +var corner_room = new Room({ id: "corner", rect: corner, height: 2 }) +var peninsula_room = new Room({ id: "peninsula", rect: peninsula, height: 3 }) +var peninsula2_room = new Room({ id: "peninsula2", rect: peninsula2, height: 1 }) + +Rooms.add( rect_room ) +Rooms.add( east_room ) +Rooms.add( corner_room ) +Rooms.add( peninsula_room ) +Rooms.add( peninsula2_room ) + +Rooms.clipper.update() +Rooms.builder.build() +Rooms.grouper.build() + +var r = 4 + +var intersect = new vec2 () +var intersects = [] + +var dragging = false, dragging_a, dragging_b +var delta = new vec2( 0, 0 ) + +var mymouse = new mouse({ + el: canvas, + down: function(e, cursor){ + points.some(function(p){ + if (-cursor.x.a > p.a - r && -cursor.x.a < p.a + r && + cursor.y.a > p.b - r && cursor.y.a < p.b + r) { + dragging_a = p.a + dragging_b = p.b + dragging = p + return true + } + }) + }, + drag: function(e, cursor){ + if (! dragging) return + delta = cursor.delta() + delta.a = - delta.a + dragging.a = dragging_a + delta.a + dragging.b = dragging_b + delta.b + }, + up: function(e, cursor, new_cursor){ + delta.zero() + dragging.dragging = false + dragging = false + }, +}) + +function draw () { + ctx.fillStyle = "#fff" + ctx.fillRect(0,0,w,h) + + Rooms.forEach(function(room, i){ + ctx.fillStyle = "#eee" + ctx.fillRect(room.rect.x.a, room.rect.y.a, room.rect.width(), room.rect.height()) + }) + + ctx.fillStyle = "#333" + points.forEach(drawPoint) + + drawLine(cursor.x, cursor.y, "#f00") + hud.innerHTML = "" + intersects.length = 0 + + Walls.list.forEach(function(wall, i){ + if (wall.side & LEFT_RIGHT) { + wall_vec.x.a = wall.edge + wall_vec.x.b = wall.vec.a + wall_vec.y.a = wall.edge + wall_vec.y.b = wall.vec.b + } + else { + wall_vec.x.a = wall.vec.a + wall_vec.x.b = wall.edge + wall_vec.y.a = wall.vec.b + wall_vec.y.b = wall.edge + } + drawLine(wall_vec.x, wall_vec.y, "#888", true) + drawLine(origins.x, origins.y, "rgba(0,0,0,0.1)") + + var t = perp(origins, wall_vec) / ( perp(cursor, wall_vec) || 0.0000001 ) + intersect.a = cursor.x.a + ( cursor.y.a - cursor.x.a ) * t + intersect.b = cursor.x.b + ( cursor.y.b - cursor.x.b ) * t + + var collinear = is_collinear( intersect, wall_vec ) + var long_enough_to_intersect = 0 <= t && t <= 1 + var actually_intersects = false + var intersecting_face + var msg + + if (long_enough_to_intersect && collinear) { + if (wall.side & LEFT_RIGHT) { + intersecting_face = wall.surface.face_for_x(intersect.b) + } + else { + intersecting_face = wall.surface.face_for_x(intersect.a) + } + actually_intersects = !! (intersecting_face && intersecting_face.y.a == 0) + } + + if (actually_intersects) { + ctx.fillStyle = "#f00" + msg = "through" + } + else if (collinear) { + ctx.fillStyle = "#0f0" + msg = "to" + } + else { + ctx.fillStyle = "rgba(0,0,0,0.1)" + msg = "off" + } + + drawPoint(intersect) + if (intersecting_face) { + hud.innerHTML += intersecting_face.y.a + "<br>" + var clone = intersect.clone() + clone.t = t + intersects.push( clone ) + } + }) + + if (intersects.length) { + // get the intersect with smallest T value + // get the angle of the cam/pos vector + // move the desired position to pos - 20px + // display this point + } +} +function drawLine (pa, pb, color, headless) { + ctx.fillStyle = color + ctx.strokeStyle = color + var x1 = pa.a + var y1 = pa.b + var x2 = pb.a + var y2 = pb.b + drawArrow(ctx, x1, y1, x2, y2, 3, headless ? 0 : 1) +} +function drawPoint (p) { + var x = p.a - r + var y = p.b - r + ctx.fillRect(x, y, r*2, r*2) +} +function perp (va, vb) { + return (va.y.a - va.x.a) * (vb.y.b - vb.x.b) - (va.y.b - va.x.b) * (vb.y.a - vb.x.a) +} +function is_collinear (p, vec) { + var on_x, on_y + var pa = round(p.a), pb = round(p.b) + + if (vec.x.a < vec.y.a) { + on_x = vec.x.a <= pa && pa <= vec.y.a + } + else { + on_x = vec.x.a >= pa && pa >= vec.y.a + } + + if (vec.x.b < vec.y.b) { + on_y = vec.x.b <= pb && pb <= vec.y.b + } + else { + on_y = vec.x.b >= pb && pb >= vec.y.b + } + + return !! (on_x && on_y) +} + +function animate(){ + requestAnimationFrame(animate) + draw() +} +animate() + +</script> |
