UNPKG

@babylonjs/viewer

Version:

The Babylon Viewer aims to simplify a specific but common Babylon.js use case: loading, viewing, and interacting with a 3D model.

3 lines (2 loc) 5.21 kB
import{b as t}from"./KHR_interactivity-BMn2G2LI.esm.min.js";import{d as i,a as n,R as e}from"./declarationMapper-sl3auZpG.esm.min.js";import{A as r}from"./animationGroup.pure-CtDCPZp-.esm.min.js";import{u as o}from"./index-OM-TXt9s.esm.min.js";import"./animationGroup-B7hqXekV.esm.min.js";import"./objectModelMapping-DA3c5cv8.esm.min.js";import"./spotLight.pure-guqQj5Iw.esm.min.js";import"./bone.pure-DxlM4RQF.esm.min.js";class a extends t{constructor(t){super(t,["animationLoop","animationEnd","animationGroupLoop"]),this.config=t,this.speed=this.registerDataInput("speed",i),this.loop=this.registerDataInput("loop",n),this.from=this.registerDataInput("from",i,0),this.to=this.registerDataInput("to",i),this.currentFrame=this.registerDataOutput("currentFrame",i),this.currentTime=this.registerDataOutput("currentTime",i),this.currentAnimationGroup=this.registerDataOutput("currentAnimationGroup",e),this.animationGroup=this.registerDataInput("animationGroup",e,t?.animationGroup),this.animation=this.registerDataInput("animation",e),this.object=this.registerDataInput("object",e)}_startPendingTasks(t){t._getExecutionVariable(this,"_initialized",!1)&&(this._cancelPendingTasks(t),this._resetAfterCanceled(t)),this._tryPreparePendingTasks(t)&&(t._addPendingBlock(this),this.out._activateSignal(t),t._setExecutionVariable(this,"_initialized",!0))}_preparePendingTasks(t){this._tryPreparePendingTasks(t)}_tryPreparePendingTasks(t){const i=this.animationGroup.getValue(t),n=this.animation.getValue(t);if(i||n){const e=this.currentAnimationGroup.getValue(t);e&&e!==i&&e.dispose();let o,a,s=i,u=!1;if(n&&!s){const i=this.object.getValue(t);if(!i)return this._reportError(t,"No target object provided"),!1;const e=Array.isArray(n)?n:[n],p=e[0].name;s=new r("flowGraphAnimationGroup-"+p+"-"+i.name,t.configuration.scene);const m=t._getGlobalContextVariable("interpolationAnimations",[]);for(const t of e)s.addTargetedAnimation(t,i),-1!==m.indexOf(t.uniqueId)&&(u=!0);o=e,a=i}const p=this.speed.getValue(t)||1,m=this.from.getValue(t)??0,l=this.to.getValue(t),c=l||s.to;if(!n){if(isNaN(l))return this._reportError(t,"Invalid animation end time"),!1;if(this.speed.isConnected()||t._hasConnectionValue(this.speed)){const i=this.speed.getValue(t);if(!isFinite(i)||i<=0)return this._reportError(t,"Invalid animation speed"),!1}}if(!isFinite(m))return this._reportError(t,"Invalid animation duration"),!1;if(n&&(!isFinite(c)||c<0))return this._reportError(t,"Invalid animation duration"),!1;if(n){const i=Array.isArray(n)?n:[n];for(const n of i){const i=n.getEasingFunction?.();if(i&&"x1"in i){const n=i;if(!Number.isFinite(n.x1)||!Number.isFinite(n.y1)||!Number.isFinite(n.x2)||!Number.isFinite(n.y2)||n.x1<0||n.x1>1||n.x2<0||n.x2>1)return this._reportError(t,"Invalid bezier curve control points"),!1}}}u&&o&&void 0!==a&&this._checkInterpolationDuplications(t,o,a);const h=!isFinite(c)||this.loop.getValue(t);this.currentAnimationGroup.setValue(s,t);const d=t._getGlobalContextVariable("currentlyRunningAnimationGroups",[]);-1!==d.indexOf(s.uniqueId)&&s.stop();try{s.start(h,p,m,c),s.onAnimationGroupEndObservable.add(()=>this._onAnimationGroupEnd(t)),s.onAnimationEndObservable.add(()=>this._eventsSignalOutputs.animationEnd._activateSignal(t)),s.onAnimationLoopObservable.add(()=>this._eventsSignalOutputs.animationLoop._activateSignal(t)),s.onAnimationGroupLoopObservable.add(()=>this._eventsSignalOutputs.animationGroupLoop._activateSignal(t)),d.push(s.uniqueId),t._setGlobalContextVariable("currentlyRunningAnimationGroups",d)}catch(i){return this._reportError(t,i),!1}return!0}return this._reportError(t,"No animation or animation group provided"),!1}_reportError(t,i){super._reportError(t,i),this.currentFrame.setValue(-1,t),this.currentTime.setValue(-1,t)}_executeOnTick(t){const i=this.currentAnimationGroup.getValue(t);i&&(this.currentFrame.setValue(i.getCurrentFrame(),t),this.currentTime.setValue(i.animatables[0]?.elapsedTime??0,t))}_execute(t){this._startPendingTasks(t)}_onAnimationGroupEnd(t){this._removeFromCurrentlyRunning(t,this.currentAnimationGroup.getValue(t)),this._resetAfterCanceled(t),this.done._activateSignal(t)}_checkInterpolationDuplications(t,i,n){const e=t._getGlobalContextVariable("currentlyRunningAnimationGroups",[]);for(const r of e){const e=t.assetsContext.animationGroups.find(t=>t.uniqueId===r);if(e)for(const r of e.targetedAnimations)for(const o of i)r.animation.targetProperty===o.targetProperty&&r.target===n&&this._stopAnimationGroup(t,e)}}_stopAnimationGroup(t,i){i.stop(!0),i.name.startsWith("flowGraphAnimationGroup-")&&i.dispose(),this._removeFromCurrentlyRunning(t,i)}_removeFromCurrentlyRunning(t,i){const n=t._getGlobalContextVariable("currentlyRunningAnimationGroups",[]),e=n.indexOf(i.uniqueId);-1!==e&&(n.splice(e,1),t._setGlobalContextVariable("currentlyRunningAnimationGroups",n))}_cancelPendingTasks(t){const i=this.currentAnimationGroup.getValue(t);i&&this._stopAnimationGroup(t,i)}getClassName(){return"FlowGraphPlayAnimationBlock"}}let s=!1;function u(){s||(s=!0,o("FlowGraphPlayAnimationBlock",a))}u();export{a as FlowGraphPlayAnimationBlock,u as RegisterFlowGraphPlayAnimationBlock}; //# sourceMappingURL=flowGraphPlayAnimationBlock-Cl0EzIf_.esm.min.js.map