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/sculpture/move.js1
-rw-r--r--public/assets/javascripts/rectangles/engine/sculpture/resize.js3
-rw-r--r--public/assets/javascripts/rectangles/engine/sculpture/types/_object.js52
3 files changed, 50 insertions, 6 deletions
diff --git a/public/assets/javascripts/rectangles/engine/sculpture/move.js b/public/assets/javascripts/rectangles/engine/sculpture/move.js
index e571c3b..0cbeccd 100644
--- a/public/assets/javascripts/rectangles/engine/sculpture/move.js
+++ b/public/assets/javascripts/rectangles/engine/sculpture/move.js
@@ -83,6 +83,7 @@ Sculpture.move = function(base){
if (editor.permissions.resize) {
Sculpture.resize.move_dots()
+ base.updateOutline()
}
}
diff --git a/public/assets/javascripts/rectangles/engine/sculpture/resize.js b/public/assets/javascripts/rectangles/engine/sculpture/resize.js
index 53b8b2d..5f21d66 100644
--- a/public/assets/javascripts/rectangles/engine/sculpture/resize.js
+++ b/public/assets/javascripts/rectangles/engine/sculpture/resize.js
@@ -180,7 +180,8 @@ Sculpture.resize = new function(){
}
base.move_dots()
-
+ obj.updateOutline()
+
app.controller.sculptureEditor.setDimensions()
}
diff --git a/public/assets/javascripts/rectangles/engine/sculpture/types/_object.js b/public/assets/javascripts/rectangles/engine/sculpture/types/_object.js
index 5dd0aae..2f24ae5 100644
--- a/public/assets/javascripts/rectangles/engine/sculpture/types/_object.js
+++ b/public/assets/javascripts/rectangles/engine/sculpture/types/_object.js
@@ -6,7 +6,8 @@ Sculpture.types.base = Fiber.extend(function(base){
this.id = opt.id || Sculpture.uid("sculpture")
// this.move = new Sculpture.move (this)
this.media = opt.media
- this.naturalDimensions = new vec2(this.media.width, this.media.height)
+ this.naturalDimensions = new vec3(this.media.width, this.media.height, this.media.width)
+ this.dimensions = new vec3(this.media.width, this.media.height, this.media.width)
this.move = new Sculpture.move (this)
this.billboard = true
@@ -14,7 +15,7 @@ Sculpture.types.base = Fiber.extend(function(base){
this.set_scale( opt.scale || this.media.scale || 1.0 )
this.position = new vec2(0,0)
-
+
this.isSculpture = true
},
@@ -25,6 +26,11 @@ Sculpture.types.base = Fiber.extend(function(base){
}
this.dimensions = this.naturalDimensions.clone().mul(this.scale)
},
+ set_depth: function(depth){
+ console.log(this.dimensions.c, this.naturalDimensions.c, depth)
+ this.dimensions.c = depth
+ this.naturalDimensions.c = depth / this.scale
+ },
place: function(opt){
if (opt.data) {
@@ -45,11 +51,16 @@ Sculpture.types.base = Fiber.extend(function(base){
setOutline: function(val){
this.outline = val
- // show/hide outline
+ if (val && ! this.outlineEl) {
+ this.buildOutline()
+ }
+ this.outlineEl.el.style.display = val ? "block" : "none"
},
setOutlineColor: function(val){
this.outlineColor = val
- // set outline color
+ if (this.outlineEl) {
+ this.outlineColor = this.outlineEl.el.style.borderColor = val
+ }
},
setBillboard: function(val){
this.billboard = val
@@ -65,6 +76,32 @@ Sculpture.types.base = Fiber.extend(function(base){
}
Sculpture.resize.move_dots()
},
+
+ buildOutline: function(){
+ this.outlineEl = new MX.Object3D(".mx-outline")
+ this.outlineEl.width = this.naturalDimensions.a
+ this.outlineEl.height = this.naturalDimensions.c
+ this.outlineEl.scale = this.mx.scale
+ this.outlineEl.rotationX = -PI/2
+ this.outlineEl.x = this.mx.x
+ this.outlineEl.y = sculpture_distance_from_floor
+ this.outlineEl.z = this.mx.z
+ this.outlineEl.el.style.borderColor = this.outlineColor || "#000000"
+ scene.add(this.outlineEl)
+ },
+ updateOutline: function(){
+ if (! this.outline) { return }
+ if (! this.outlineEl) {
+ this.buildOutline()
+ }
+ this.outlineEl.x = this.mx.x
+ this.outlineEl.y = sculpture_distance_from_floor
+ this.outlineEl.z = this.mx.z
+ this.outlineEl.width = this.naturalDimensions.a
+ this.outlineEl.height = this.naturalDimensions.c
+
+ this.outlineEl.scale = this.mx.scale
+ },
remove: function(){
if (this.removed) return
@@ -112,7 +149,7 @@ Sculpture.types.base = Fiber.extend(function(base){
media: this.media,
billboard: this.billboard,
outline: this.outline,
- outlineColor: this.outlineColor,
+ outlineColor: this.outlineColor || "#000000",
backface: this.backface,
}
return data
@@ -123,9 +160,14 @@ Sculpture.types.base = Fiber.extend(function(base){
this.mx.ops.width = data.dimensions.a
this.mx.ops.height = data.dimensions.b
this.billboard = data.billboard
+ this.outline = data.outline
+ this.outlineColor = data.outlineColor || "#000000"
this.backface = data.backface
if (! this.backface) this.mx.el.classList.remove("backface-visible")
this.dimensions.deserialize(data.dimensions)
+ if (this.outline) {
+ this.buildOutline()
+ }
},
}