From 477f62d3776bdc72ea27c3f6c8c39fd0873c854c Mon Sep 17 00:00:00 2001 From: Pete Shadbolt Date: Thu, 19 May 2016 01:18:36 +0100 Subject: [PATCH] Small optimizations --- static/img/ball.png | Bin 3658 -> 2829 bytes static/img/ball.svg | 91 ++++++++++++++++++++++++++++++++++++ static/img/make_figs.sh | 3 ++ static/img/tip.png | Bin 0 -> 1039 bytes static/img/tip.svg | 91 ++++++++++++++++++++++++++++++++++++ static/index.html | 17 +++++-- static/main.css | 17 ++++++- static/scripts/editor.js | 61 ++++++++++++++++++++++++ static/scripts/materials.js | 4 ++ static/scripts/mouse.js | 1 + 10 files changed, 278 insertions(+), 7 deletions(-) create mode 100644 static/img/ball.svg create mode 100755 static/img/make_figs.sh create mode 100644 static/img/tip.png create mode 100644 static/img/tip.svg create mode 100644 static/scripts/editor.js diff --git a/static/img/ball.png b/static/img/ball.png index daab427e13e56473cf8cbd51f100ed6cc006cffb..b49b534a0b085fda2bc733029e67e709e26c85dd 100644 GIT binary patch delta 2821 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 + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + diff --git a/static/img/make_figs.sh b/static/img/make_figs.sh new file mode 100755 index 0000000..c0ea20c --- /dev/null +++ b/static/img/make_figs.sh @@ -0,0 +1,3 @@ +#!/bin/bash +inkscape -z -e ball.png -w 64 -h 64 ball.svg +inkscape -z -e tip.png -w 64 -h 64 tip.svg diff --git a/static/img/tip.png b/static/img/tip.png new file mode 100644 index 0000000000000000000000000000000000000000..cbc6ee8a56855e304f5a9326ed4dc85fba7c8506 GIT binary patch literal 1039 zcmV+q1n~QbP)V^#$kvE5MR`TEKkb(KnzEJj)*7E}1C&w;EGJWm`g_0n+CuMSMVDLeUF1-vD{rA28m{K8rSRAR00$Y61I< z=L@ea>lh80WEvoooNdbi`CwbLq>|SH_G$>m7nxd84UoCLujy?atca!o1`Lo@-EQq6 zxo20j#Yk%bTew@*xnvomEk?`$88UWUMdX2<XdB8L9Iq~2N=B&;Z zo0xGvkAJ|($KDar&I+G{KavI{xo5b8$}Gwpj^0|XGmTJdv}G={_skR+okmk~MU zDw#-?wivp>s?I=A`m~(U3{50WxHqF_}~39wv1*Hy5~YPf&JFPJvfT zfw|xnI4zSmTxwHP77vqRLLk1>Rh!bg!dmM;zzO5s9eTit#9E3<+v4Kt3FG-p;Te{+=T%I0x-T|PyJ+Sp0lIH*b002ov JPDHLkV1m#&%2xmY literal 0 HcmV?d00001 diff --git a/static/img/tip.svg b/static/img/tip.svg new file mode 100644 index 0000000..e18e10f --- /dev/null +++ b/static/img/tip.svg @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/static/index.html b/static/index.html index 46999cb..e941749 100644 --- a/static/index.html +++ b/static/index.html @@ -26,12 +26,19 @@
+

Node (5,2)

diff --git a/static/main.css b/static/main.css index 4667beb..cd03e3a 100644 --- a/static/main.css +++ b/static/main.css @@ -21,7 +21,7 @@ html, body { margin: 0; padding: 0; overflow: hidden; font-size: 10pt; font-fam padding: 10px; font-family:"courier new"; position: absolute; - bottom: 10px; + top: 10px; right: 10px; font-size: 9pt; } @@ -34,7 +34,7 @@ html, body { margin: 0; padding: 0; overflow: hidden; font-size: 10pt; font-fam font-family:"courier new"; position: absolute; top: 10px; - right: 10px; + left: 10px; font-size: 9pt; } @@ -45,6 +45,12 @@ ul { margin: 0px; } +li{ + padding:3px; +} + + + .visible { visibility: visible; opacity: 1; @@ -62,3 +68,10 @@ ul { a { color: yellow; } + +h3 { + padding-top: 0px; + padding-bottom: 0px; + margin-top: 2px; + margin-bottom: 2px; +} diff --git a/static/scripts/editor.js b/static/scripts/editor.js new file mode 100644 index 0000000..70c887c --- /dev/null +++ b/static/scripts/editor.js @@ -0,0 +1,61 @@ +var editor = {}; +editor.nearest = undefined; + +editor.onFreeMove = function() { + var n = editor.nearestNode(mouse.ray); + if (editor.nearest !== n) { + editor.nearest = n; + if (n) { + gui.nodeMessage("Node " + n + " (VOP:" + abj.vops[n] + ")" + + "
" + "Click to edit neighbourhood"); + } else { + gui.hideNodeMessage(); + } + } +}; + +editor.onClick = function() { + var n = editor.nearestNode(mouse.ray); + if (n) { + var p = abj.meta[n].position; + editor.gimbal.position.set(p.x, p.y, p.z); + gui.controls.target.set(p.x, p.y, p.z); + gui.hideNodeMessage(); + editor.nearest = undefined; + gui.render(); + } +}; + +editor.prepare = function() { + mouse.onFreeMove = editor.onFreeMove; + mouse.onClick = editor.onClick; + editor.makeGimbal(); +}; + +// Gets a reference to the node nearest to the mouse cursor +editor.nearestNode = function(ray) { + for (var i in abj.meta) { + if (ray.distanceSqToPoint(abj.meta[i].position) < 0.03) { + return i; + } + } + return undefined; +}; + +editor.makeGimbal = function(center) { + editor.gimbal = new THREE.Object3D(); + + var pointGeometry = new THREE.Geometry(); + pointGeometry.vertices = [ + new THREE.Vector3(1, 0, 0), + new THREE.Vector3(0, 1, 0), + new THREE.Vector3(0, 0, 1), + new THREE.Vector3(-1, 0, 0), + new THREE.Vector3(0, -1, 0), + new THREE.Vector3(0, 0, -1) + ]; + var tips = new THREE.Points(pointGeometry, materials.tip); + + editor.gimbal.add(tips); + gui.scene.add(editor.gimbal); +}; diff --git a/static/scripts/materials.js b/static/scripts/materials.js index 5e4f52e..2d77ee4 100644 --- a/static/scripts/materials.js +++ b/static/scripts/materials.js @@ -15,6 +15,10 @@ materials.prepare = function() { transparent: false, linewidth: 1 }); + materials.gimbalEdge = new THREE.LineBasicMaterial({ + color: "black", + linewidth: 1, + }); materials.tip = new THREE.PointsMaterial({ size: 0.4, map: tipSprite, diff --git a/static/scripts/mouse.js b/static/scripts/mouse.js index a22c6a9..f143e37 100644 --- a/static/scripts/mouse.js +++ b/static/scripts/mouse.js @@ -47,6 +47,7 @@ mouse.onUp = function(event) { }; mouse.onMove = function(event) { + // TODO: wasclick sux mouse.wasClick = false; mouse.position_absolute = { x: event.clientX,