diff options
Diffstat (limited to 'public')
4 files changed, 14 insertions, 8 deletions
diff --git a/public/assets/javascripts/rectangles/engine/scenery/resize.js b/public/assets/javascripts/rectangles/engine/scenery/resize.js index 6b2e52c..d9cce18 100644 --- a/public/assets/javascripts/rectangles/engine/scenery/resize.js +++ b/public/assets/javascripts/rectangles/engine/scenery/resize.js @@ -6,7 +6,7 @@ Scenery.resize = new function(){ var obj var x, y, z, bounds var dragging = false - var dimensions, position, scale + var naturalDimension, dimension, position, scale var oldState var dots = [], dot, selected_dot @@ -148,8 +148,9 @@ Scenery.resize = new function(){ selected_dot = selection[0] dragging = true - - dimensions = obj.dimensions + + 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() @@ -165,7 +166,7 @@ Scenery.resize = new function(){ var width = cursor.x.magnitude() var height = cursor.y.magnitude() var mag = cursor.magnitude() - var old_width = dimensions.a * scale + var old_width = dimension.a * scale if (abs(width) > abs(height)) { mag = x_sign * mag * sign(width) @@ -173,8 +174,10 @@ Scenery.resize = new function(){ else { mag = y_sign * mag * sign(height) } - - obj.mx.scale = scale * (old_width + mag) / old_width + + obj.mx.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) @@ -192,7 +195,7 @@ Scenery.resize = new function(){ selected_dot = null if (! editor.permissions.resize) { return } obj.scale = obj.mx.ops.scale = obj.mx.scale - obj.set_wall() + obj.dimensions.assign(obj.naturalDimensions).mul(obj.scale) UndoStack.push({ type: 'update-scenery', diff --git a/public/assets/javascripts/rectangles/engine/scenery/types/image.js b/public/assets/javascripts/rectangles/engine/scenery/types/image.js index 2b50cbf..d2fa3ab 100644 --- a/public/assets/javascripts/rectangles/engine/scenery/types/image.js +++ b/public/assets/javascripts/rectangles/engine/scenery/types/image.js @@ -4,7 +4,8 @@ Scenery.types.image = Scenery.types.base.extend(function(base){ var exports = { init: function(opt){ - opt.scale = opt.scale || 300 / max(300, opt.media.width) + + opt.scale = opt.scale || (opt.data && opt.data.scale) || 300 / max(300, opt.media.width) base.init.call(this, opt) diff --git a/public/assets/javascripts/rectangles/models/rect.js b/public/assets/javascripts/rectangles/models/rect.js index 67852b4..a08176a 100644 --- a/public/assets/javascripts/rectangles/models/rect.js +++ b/public/assets/javascripts/rectangles/models/rect.js @@ -42,6 +42,7 @@ Rect.prototype.assign = function(r) { this.x.assign(r.x) this.y.assign(r.y) + return this } Rect.prototype.center = function(){ return new vec2(this.x.midpoint(), this.y.midpoint()) diff --git a/public/assets/javascripts/rectangles/models/vec2.js b/public/assets/javascripts/rectangles/models/vec2.js index a36c614..0040435 100644 --- a/public/assets/javascripts/rectangles/models/vec2.js +++ b/public/assets/javascripts/rectangles/models/vec2.js @@ -20,6 +20,7 @@ vec2.prototype.assign = function(v){ this.a = v.a this.b = v.b + return this } vec2.prototype.abs = function(){ if (this.b < this.a) { |
