72 lines
2.0 KiB
JavaScript
72 lines
2.0 KiB
JavaScript
import {
|
|
extendPrototype,
|
|
} from '../functionExtensions';
|
|
import DynamicPropertyContainer from '../helpers/dynamicProperties';
|
|
import {
|
|
initialDefaultFrame,
|
|
} from '../../main';
|
|
import shapeCollectionPool from '../pooling/shapeCollection_pool';
|
|
|
|
const 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: shapeCollectionPool.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);
|
|
|
|
export {
|
|
ShapeModifiers,
|
|
ShapeModifier,
|
|
};
|