summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles/engine
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/javascripts/rectangles/engine')
-rw-r--r--public/assets/javascripts/rectangles/engine/rooms/projector.js30
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/_scenery.js4
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/resize.js16
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/types/image.js2
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/types/text.js66
-rw-r--r--public/assets/javascripts/rectangles/engine/scenery/types/video.js2
6 files changed, 75 insertions, 45 deletions
diff --git a/public/assets/javascripts/rectangles/engine/rooms/projector.js b/public/assets/javascripts/rectangles/engine/rooms/projector.js
deleted file mode 100644
index 2eac314..0000000
--- a/public/assets/javascripts/rectangles/engine/rooms/projector.js
+++ /dev/null
@@ -1,30 +0,0 @@
-
-rooms.projector = new function(){
-
- projector = new THREE.Projector();
- vector = new THREE.Vector3( mouse.x, mouse.y, 0.5 );
- projector.unprojectVector( vector, camera );
-
- raycaster = new THREE.Raycaster( camera.position, vector.sub( camera.position ).normalize() );
- intersects = raycaster.intersectObjects( scene.children, true );
-
-}
-
-
-
-THREE.Projector = function () {
-
- _viewProjectionMatrix = new THREE.Matrix4(),
-
- this.unprojectVector = function ( vector, camera ) {
- camera.projectionMatrixInverse.getInverse( camera.projectionMatrix );
-
- _viewProjectionMatrix.multiplyMatrices(
- camera.matrixWorld,
- camera.projectionMatrixInverse
- );
-
- return vector.applyProjection( _viewProjectionMatrix );
- };
-
-}
diff --git a/public/assets/javascripts/rectangles/engine/scenery/_scenery.js b/public/assets/javascripts/rectangles/engine/scenery/_scenery.js
index 69e9ba7..3d3067f 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/_scenery.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/_scenery.js
@@ -24,6 +24,10 @@ var Scenery = new function(){
case 'vimeo':
scene_media = new Scenery.types.video (opt)
break
+
+ case 'text':
+ scene_media = new Scenery.types.text (opt)
+ break
}
base.list[scene_media.id] = scene_media
return scene_media
diff --git a/public/assets/javascripts/rectangles/engine/scenery/resize.js b/public/assets/javascripts/rectangles/engine/scenery/resize.js
index 893237c..0ce976e 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/resize.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/resize.js
@@ -117,22 +117,13 @@ Scenery.resize = new function(){
base.bind = function(){
dots.forEach(function(dot){
Scenery.mouse.bind_el(dot.el)
- $(dot.el).bind({
- mouseenter: function(e){
-// Scenery.resize.hovering = true
- },
- mouseleave: function(e){
-// Scenery.resize.hovering = false
-// base.defer_hide()
- }
- })
})
Scenery.mouse.on("down", down)
Scenery.mouse.on("drag", drag)
Scenery.mouse.on("up", up)
}
- this.unbind = function(){
+ base.unbind = function(){
dots.forEach(function(dot){
Scenery.mouse.unbind_el(dot.el)
})
@@ -151,7 +142,6 @@ Scenery.resize = new function(){
naturalDimension = obj.naturalDimensions
dimension = obj.dimensions
position = new vec3(obj.mx.x, obj.mx.y, obj.mx.z)
- scale = obj.mx.scale
oldState = obj.serialize()
document.body.classList.add("dragging")
@@ -165,7 +155,6 @@ Scenery.resize = new function(){
var width = cursor.x.magnitude()
var height = cursor.y.magnitude()
var mag = cursor.magnitude()
- var old_width = dimension.a * scale
if (abs(width) > abs(height)) {
mag = x_sign * mag * sign(width)
@@ -175,9 +164,6 @@ Scenery.resize = new function(){
}
obj.set_scale( ( dimension.a + mag ) / naturalDimension.a )
- // dimension.a // scale * (old_width + mag) / old_width
-
-// console.log(scale, obj.mx.scale, dimension.a + mag, naturalDimension.a)
if (selected_dot.side & LEFT_RIGHT) {
obj.mx.x = position.a + cos(rotationY) * mag/2 * (x_sign)
diff --git a/public/assets/javascripts/rectangles/engine/scenery/types/image.js b/public/assets/javascripts/rectangles/engine/scenery/types/image.js
index aa43341..bed847b 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/types/image.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/types/image.js
@@ -3,6 +3,8 @@ Scenery.types.image = Scenery.types.base.extend(function(base){
var exports = {
+ type: 'image',
+
init: function(opt){
opt.scale = opt.scale || (opt.data && opt.data.scale) || 300 / max(300, opt.media.width)
diff --git a/public/assets/javascripts/rectangles/engine/scenery/types/text.js b/public/assets/javascripts/rectangles/engine/scenery/types/text.js
new file mode 100644
index 0000000..16c7a5c
--- /dev/null
+++ b/public/assets/javascripts/rectangles/engine/scenery/types/text.js
@@ -0,0 +1,66 @@
+
+Scenery.types.text = Scenery.types.base.extend(function(base){
+
+ var exports = {
+
+ type: 'text',
+
+ init: function(opt){
+
+ opt.scale = 1
+
+ base.init.call(this, opt)
+
+ this.build()
+ this.bind()
+
+ if (opt.data) {
+ if (opt.wall) {
+ var position = opt.wall.mxToPosition(opt.data.position)
+ opt.index = opt.wall.surface.index_for_x( position.a, 0 )
+ }
+ this.set_wall(opt)
+ this.deserialize(opt.data)
+ }
+ else {
+ this.set_wall(opt)
+ if (this.bounds) {
+ this.recenter()
+ if (opt.position) {
+ this.translateTo(opt.position)
+ }
+ var mx_position = this.wall.positionToMx( this.position, this.dimensions )
+ this.mx.move(mx_position)
+ }
+ }
+ },
+
+ build: function(){
+ this.mx = new MX.Text({
+ scale: this.scale,
+ media: this.media,
+ y: this.scale * this.media.height/2,
+ backface: false,
+ })
+ scene.add( this.mx )
+ },
+
+ setText: function(text){
+ this.media.description = text
+ this.mx.setText(text)
+ },
+
+ serialize: function(){
+ var data = base.serialize.call(this)
+ return data
+ },
+
+ deserialize: function(data){
+ this.mx.move(data.position)
+ this.mx.ops.width = data.dimensions.a
+ this.mx.ops.height = data.dimensions.b
+ },
+ }
+
+ return exports
+})
diff --git a/public/assets/javascripts/rectangles/engine/scenery/types/video.js b/public/assets/javascripts/rectangles/engine/scenery/types/video.js
index 2ef6ec3..b723f56 100644
--- a/public/assets/javascripts/rectangles/engine/scenery/types/video.js
+++ b/public/assets/javascripts/rectangles/engine/scenery/types/video.js
@@ -2,6 +2,8 @@
Scenery.types.video = Scenery.types.base.extend(function(base){
var exports = {
+
+ type: 'video',
init: function(opt){
opt.scale = opt.scale || (opt.data && opt.data.scale) || 300 / max(300, opt.media.width)