summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--public/assets/javascripts/defaults.js3
-rw-r--r--public/assets/javascripts/mx/extensions/mx.movements.js18
-rw-r--r--public/assets/javascripts/mx/extensions/mx.orbitCamera.js1
-rw-r--r--public/assets/test/ortho2.html56
4 files changed, 66 insertions, 12 deletions
diff --git a/public/assets/javascripts/defaults.js b/public/assets/javascripts/defaults.js
index 12aed62..413bb13 100644
--- a/public/assets/javascripts/defaults.js
+++ b/public/assets/javascripts/defaults.js
@@ -1,3 +1,4 @@
+app = window.app || {}
app.defaults = {
viewHeight: window.viewHeight = 186,
units: app.units = "ft",
@@ -13,7 +14,7 @@ app.defaults = {
},
}
-marked.setOptions({
+window.marked && marked.setOptions({
sanitize: true,
smartypants: true,
})
diff --git a/public/assets/javascripts/mx/extensions/mx.movements.js b/public/assets/javascripts/mx/extensions/mx.movements.js
index 9af2c8d..bc71fc4 100644
--- a/public/assets/javascripts/mx/extensions/mx.movements.js
+++ b/public/assets/javascripts/mx/extensions/mx.movements.js
@@ -39,7 +39,7 @@ MX.Movements = function (cam) {
})
function clampRotation( vr ) {
- if (Rooms.mover.noclip) {
+ if (window.Rooms && Rooms.mover.noclip) {
return clamp(vr, PI/-2, PI/2 )
}
else {
@@ -221,15 +221,19 @@ MX.Movements = function (cam) {
/*
case 48: // 0
- cam.rotationX = 0
- cam.rotationY = 0
- cam.x = 0
- cam.y = viewHeight
- cam.z = 0
+ movements.center()
break
*/
}
},
+
+ center: function(){
+ cam.rotationX = 0
+ cam.rotationY = 0
+ cam.x = 0
+ cam.y = viewHeight
+ cam.z = 0
+ },
mousedown: function (e) {
if (locked) return;
@@ -341,7 +345,7 @@ MX.Movements = function (cam) {
jumping = false
}
- var ceiling = (Rooms.mover.room ? Rooms.mover.room.height : 5000)
+ var ceiling = ((window.Rooms && Rooms.mover.room) ? Rooms.mover.room.height : 5000)
if (pos.y >= ceiling-5) {
vy = 0
diff --git a/public/assets/javascripts/mx/extensions/mx.orbitCamera.js b/public/assets/javascripts/mx/extensions/mx.orbitCamera.js
index 6dc5b6c..f4759fb 100644
--- a/public/assets/javascripts/mx/extensions/mx.orbitCamera.js
+++ b/public/assets/javascripts/mx/extensions/mx.orbitCamera.js
@@ -68,6 +68,7 @@ MX.OrbitCamera = function(opt){
if (typeof x == "number") { opt.rotationX = x }
}
exports.update = function(){
+ if (! bound) return
if (abs(ry - opt.rotationY) > epsilon) {
ry = avg(ry, opt.rotationY, opt.ease)
}
diff --git a/public/assets/test/ortho2.html b/public/assets/test/ortho2.html
index 89a5688..d6f0c5c 100644
--- a/public/assets/test/ortho2.html
+++ b/public/assets/test/ortho2.html
@@ -1,3 +1,4 @@
+<link href='/assets/stylesheets/ionicons.css' rel='stylesheet' type='text/css'>
<style type="text/css">
html,body{width:100%;height:100%;margin:0;padding:0;}
body {
@@ -22,6 +23,8 @@ body {
background: white;
}
#url { width: 300px }
+#hud span { color: #888; cursor: pointer; }
+#hud span.active { color: #000; }
</style>
<div id="perspective"></div>
@@ -29,9 +32,12 @@ body {
<div id="hud">
<input type="text" id="url" placeholder="paste an image URL here!">
+ <span class="ion-ionic active" data-role="orbit-mode"></span>
+ <span class="ion-archive" data-role="keyboard-mode"></span>
</div>
<script src="/assets/javascripts/util.js"></script>
+<script src="/assets/javascripts/defaults.js"></script>
<script src="/assets/javascripts/vendor/bower_components/jquery/dist/jquery.min.js"></script>
<script src="/assets/javascripts/vendor/bower_components/lodash/lodash.min.js"></script>
<script src="/assets/javascripts/vendor/bower_components/hidpi-canvas/dist/hidpi-canvas.js"></script>
@@ -40,6 +46,7 @@ body {
<script src="/assets/javascripts/mx/mx.js"></script>
<script src="/assets/javascripts/mx/extensions/mx.scene.js"></script>
<script src="/assets/javascripts/mx/extensions/mx.orbitCamera.js"></script>
+<script src="/assets/javascripts/mx/extensions/mx.movements.js"></script>
<script src="/assets/javascripts/mx/primitives/mx.grid.js"></script>
<script src="/assets/javascripts/mx/primitives/mx.image.js"></script>
<script src="/assets/javascripts/rectangles/util/constants.js"></script>
@@ -53,6 +60,11 @@ body {
<script src="/assets/javascripts/rectangles/engine/map/draw.js"></script>
<script>
+var app = window.app || {}
+app.tube = new Tube ()
+app.on = function(){ app.tube.on.apply(app.tube, arguments) }
+app.off = function(){ app.tube.off.apply(app.tube, arguments) }
+
Map.UI = Map.UI || {}
Map.UI.Ortho = function(map){
@@ -154,8 +166,7 @@ $(window).resize(function(){
map.canvas.width = map.dimensions.a = window.innerWidth/2
})
-
-var wall_height = 100
+var wall_height = 180
var placing = false
var points, mx_points = []
var shapes = []
@@ -239,15 +250,46 @@ function add_mx_point (p, i) {
$("#url").on("input", function(){
floorplan.load({ src: this.value })
})
+$("[data-role=orbit-mode]").click(function(){
+ $("#hud .active").removeClass('active')
+ $(this).addClass('active')
+ controls.toggle(true)
+ movements.lock()
+})
+$("[data-role=keyboard-mode]").click(function(){
+ $("#hud .active").removeClass('active')
+ $(this).addClass('active')
+ controls.toggle(false)
+ movements.unlock()
+ movements.gravity(true)
+ cam.rotationX = 0
+ cam.rotationY = -cam.rotationY
+ cam.x = 0
+ cam.y = viewHeight + 100
+ cam.z = 0
+})
document.addEventListener('DOMContentLoaded', build)
function build () {
scene = new MX.Scene().addTo("#perspective")
scene.camera.radius = 20
+ viewHeight = 100
+
scene.width = window.innerWidth/2
scene.height = window.innerHeight
scene.perspective = window.innerHeight
+
+ cam = scene.camera
+ movements = new MX.Movements(cam, viewHeight)
+ movements.init()
+ movements.lock()
+ movements.velocity(8)
+ app.on("move", function(pos){
+ cam.x = pos.x
+ cam.y = pos.y
+ cam.z = pos.z
+ })
floorplan = new MX.Image({
src: "https://s3.amazonaws.com/luckyplop/fbf4295da80f1f66c5e4a248f2ea3e1ce7a22c3d.jpg",
@@ -270,10 +312,16 @@ function build () {
animate(0)
}
-function animate(time){
+var last_t = 0
+function animate(t){
requestAnimationFrame(animate)
- map.update(time)
+ var dt = t - last_t
+ last_t = t
+
+ map.update(t)
+
+ movements.update(dt)
controls.update()
scene.update()