summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/rectangles/engine/shapes/polyline.js
diff options
context:
space:
mode:
Diffstat (limited to 'public/assets/javascripts/rectangles/engine/shapes/polyline.js')
-rw-r--r--public/assets/javascripts/rectangles/engine/shapes/polyline.js21
1 files changed, 15 insertions, 6 deletions
diff --git a/public/assets/javascripts/rectangles/engine/shapes/polyline.js b/public/assets/javascripts/rectangles/engine/shapes/polyline.js
index fc6cad7..65e22ad 100644
--- a/public/assets/javascripts/rectangles/engine/shapes/polyline.js
+++ b/public/assets/javascripts/rectangles/engine/shapes/polyline.js
@@ -9,6 +9,12 @@ var Polyline = Fiber.extend(function(base){
this.mx_points = []
this.closed = false
}
+ exports.type = function(){
+ return "polyline"
+ }
+ exports.instantiate = function(){
+ return new Polyline
+ }
exports.add = function(p){
this.points.push( p )
this.mx_points.push( new MX.Point(p) )
@@ -25,19 +31,19 @@ var Polyline = Fiber.extend(function(base){
exports.getHeadAtIndex = function(index){
if (index == 0) { return null }
if (index == this.points.length-1) { return this.clone() }
- var head = new Polyline()
+ var head = this.instantiate()
head.points = this.points.slice(0, index+1)
return head
}
exports.getTailAtIndex = function(index){
if (index == this.points.length-1) { return null }
if (index == 0) { return this.clone() }
- var tail = new Polyline()
+ var tail = this.instantiate()
tail.points = this.points.slice(index, this.points.length)
return tail
}
exports.clone = function(){
- var clone = new Polyline()
+ var clone = this.instantiate()
clone.points = this.points.concat()
}
exports.hasPointNear = function(p){
@@ -148,10 +154,13 @@ var Polyline = Fiber.extend(function(base){
return segments
}
exports.serialize = function(){
- return this.points.map(function(point){ return [point.a, point.b] })
+ return {
+ type: this.type(),
+ points: this.points.map(function(point){ return [point.a, point.b] }),
+ }
}
- exports.deserialize = function(points){
- this.points = points.map(function(point){ return new vec2(point[0], point[1]) })
+ exports.deserialize = function(data){
+ this.points = (data.points || data).map(function(point){ return new vec2(point[0], point[1]) })
}
exports.reset = function(){
this.mx_points.forEach(function(mx){ scene.remove(mx) })