12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import Matrix from '../../../3rd_party/transformation-matrix';
- function ShapeTransformManager() {
- this.sequences = {};
- this.sequenceList = [];
- this.transform_key_count = 0;
- }
- ShapeTransformManager.prototype = {
- addTransformSequence: function (transforms) {
- var i;
- var len = transforms.length;
- var key = '_';
- for (i = 0; i < len; i += 1) {
- key += transforms[i].transform.key + '_';
- }
- var sequence = this.sequences[key];
- if (!sequence) {
- sequence = {
- transforms: [].concat(transforms),
- finalTransform: new Matrix(),
- _mdf: false,
- };
- this.sequences[key] = sequence;
- this.sequenceList.push(sequence);
- }
- return sequence;
- },
- processSequence: function (sequence, isFirstFrame) {
- var i = 0;
- var len = sequence.transforms.length;
- var _mdf = isFirstFrame;
- while (i < len && !isFirstFrame) {
- if (sequence.transforms[i].transform.mProps._mdf) {
- _mdf = true;
- break;
- }
- i += 1;
- }
- if (_mdf) {
- sequence.finalTransform.reset();
- for (i = len - 1; i >= 0; i -= 1) {
- sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);
- }
- }
- sequence._mdf = _mdf;
- },
- processSequences: function (isFirstFrame) {
- var i;
- var len = this.sequenceList.length;
- for (i = 0; i < len; i += 1) {
- this.processSequence(this.sequenceList[i], isFirstFrame);
- }
- },
- getNewKey: function () {
- this.transform_key_count += 1;
- return '_' + this.transform_key_count;
- },
- };
- export default ShapeTransformManager;
|