Files
JiboSDK/node_modules/jibo-keyframes/lib/runtime.js
2026-03-22 04:37:35 +02:00

1 line
3.3 KiB
JavaScript

"use strict";var e=function(e){return e&&e.__esModule?e["default"]:e},r=e(require("fs")),a=e(require("./tweening")),t=e(require("lodash")),n=e(require("./uuid")),l=e(require("./keyframe-search")),i=require("./blend-operations"),f=e(require("./jibo-keyframe-info")),s={create:function(e){e&&e.defaults||(e=f);var r={version:e.defaults.version,framerate:e.defaults.framerate,duration:e.defaults.duration,scale:e.defaults.scale,layers:[]};return e.defaults.layers.forEach(function(e){r.layers.push({id:n(),name:e.name,type:e.type,visible:!0,locked:!1,keyframes:[]})}),r},load:function(e,a){var t=JSON.parse(r.readFileSync(e,"utf8"));return a.onLoad&&a.onLoad(t),t},save:function(e,a){r.writeFileSync(e,JSON.stringify(a,null," "),"utf8")},_isEventLayer:function(e,r){if(e){var a=r.layerTypes[e.type];return a.isEvent()}return!1},evaluateAllDOFLayers:function(e,r,a,t){var n=this,l=this.evaluateAllLayersFiltered(e,r,a,function(e){return!n._isEventLayer(e,r)},!1,t),i={};for(var s in l){var u=r.layerTypes[s],y=u.generateDofs(l[s]);for(var f in y)i[f]=y[f]}return i},evaluateAllLayersFiltered:function(e,r,a,t,n,l){for(var s={},u=e.layers.length-1;u>=0;u--)if(t(e.layers[u])&&e.layers[u].visible){var y=void 0===l?void 0:l[e.layers[u].id],f=this.evaluateLayer(e.layers[u],e,r,a,y);if("undefined"==typeof s[e.layers[u].type])s[e.layers[u].type]=f;else{var o=s[e.layers[u].type],v=r.layerTypes[e.layers[u].type].getInfo();for(var p in f){var d=v.properties[p];try{o[p]=i[d.blendOperation][d.type](o[p],f[p],d.defaultValue)}catch(c){u=0}}}}return s},computeRelativePropValues:function(e,r,a,t,n,l){var s=this.evaluateAllLayersFiltered(r,a,t,function(r){return r.type!==e.type||r.id===e.id?!1:!0},!0,l);if("undefined"==typeof s[e.type])return n;var u=a.layerTypes[e.type].getInfo(),y={};for(var f in n){var o=u.properties[f];y[f]=i.inverse[o.blendOperation][o.type](s[e.type][f],n[f],o.defaultValue)}return y},evaluateLayer:function(e,r,n,i,s){if(this._isEventLayer(e,n))return this._evaluateEventLayer(e,r,n,i);var u={};if(s){for(var y in s)u[y]=s[y];return u}var f=n.layerTypes[e.type].getInfo();if(0===e.keyframes.length)for(var y in f.properties)u[y]=t.cloneDeep(f.properties[y].defaultValue);else{void 0===r.scale&&(r.scale=n.defaults.scale);var o=i*r.framerate;if(1===e.keyframes.length||e.keyframes[0].time>=o)return t.cloneDeep(e.keyframes[0].value);if(e.keyframes[e.keyframes.length-1].time<=o)return t.cloneDeep(e.keyframes[e.keyframes.length-1].value);var v=l.keyframeSearch(e.keyframes,o),p=v.start,d=v.end;p=e.keyframes[p],d=e.keyframes[d];var c=p.time,m=d.time,h=(o-c)/(m-c),k="cubicInOut";p.value.Tween&&(k=p.value.Tween.value);for(var y in p.value)"string"==typeof f.properties[y].type?u[y]=a[f.properties[y].type](p.value[y],d.value[y],h,k):u[y]=a[f.properties[y].type.name](p.value[y],d.value[y],h,k)}return u},_evaluateEventLayer:function(e,r,a,n){var i=n*r.framerate,s=l.keyframeSearchAbsolute(e.keyframes,i);if(void 0!==s)return t.cloneDeep(e.keyframes[s].value);var u=a.layerTypes[e.type].getInfo(),y={};for(var f in u.properties)y[f]=t.cloneDeep(u.properties[f].defaultValue);return y},evaluateAllEventLayers:function(e,r,a){for(var t=[],n=e.layers.length,l=0;n>l;l++){var i=e.layers[l];if(this._isEventLayer(i,r)&&i.visible){var s=this.evaluateLayer(i,e,r,a);if(s){var u=r.layerTypes[i.type],y=u.generateEvent(s),f=typeof y;"object"===f&&u.isValid(y)&&t.push(y)}}}return t}};module.exports=s;