first commit
This commit is contained in:
71
node_modules/lottie-web/player/js/utils/shapes/ShapeModifiers.js
generated
vendored
Normal file
71
node_modules/lottie-web/player/js/utils/shapes/ShapeModifiers.js
generated
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
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,
|
||||
};
|
Reference in New Issue
Block a user