| var ShapeModifiers = (function () { |
| var ob = {}; |
| var modifiers = {}; |
| ob.registerModifier = registerModifier; |
| ob.getModifier = getModifier; |
| |
| function registerModifier(nm, factory) { |
| if (!modifiers[nm]) { |
| modifiers[nm] = factory; |
| } |
| } |
| |
| function getModifier(nm, elem, data) { |
| return new modifiers[nm](elem, data); |
| } |
| |
| return ob; |
| }()); |
| |
| function ShapeModifier() {} |
| ShapeModifier.prototype.initModifierProperties = function () {}; |
| ShapeModifier.prototype.addShapeToModifier = function () {}; |
| ShapeModifier.prototype.addShape = function (data) { |
| if (!this.closed) { |
| // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick. |
| data.sh.container.addDynamicProperty(data.sh); |
| var shapeData = { shape: data.sh, data: data, localShapeCollection: shapeCollection_pool.newShapeCollection() }; |
| this.shapes.push(shapeData); |
| this.addShapeToModifier(shapeData); |
| if (this._isAnimated) { |
| data.setAsAnimated(); |
| } |
| } |
| }; |
| ShapeModifier.prototype.init = function (elem, data) { |
| this.shapes = []; |
| this.elem = elem; |
| this.initDynamicPropertyContainer(elem); |
| this.initModifierProperties(elem, data); |
| this.frameId = initialDefaultFrame; |
| this.closed = false; |
| this.k = false; |
| if (this.dynamicProperties.length) { |
| this.k = true; |
| } else { |
| this.getValue(true); |
| } |
| }; |
| ShapeModifier.prototype.processKeys = function () { |
| if (this.elem.globalData.frameId === this.frameId) { |
| return; |
| } |
| this.frameId = this.elem.globalData.frameId; |
| this.iterateDynamicProperties(); |
| }; |
| |
| extendPrototype([DynamicPropertyContainer], ShapeModifier); |