@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) • 4.97 kB
JavaScript
import{F as t}from"./KHR_interactivity-BMn2G2LI.esm.min.js";import{f as i,h as e,i as a,a as s,g as r,d as n,F as o,j as l}from"./declarationMapper-sl3auZpG.esm.min.js";import{M as u,V as c,aD as p,u as h}from"./index-OM-TXt9s.esm.min.js";import{F as m}from"./flowGraphUnaryOperationBlock-DAnp-QWU.esm.min.js";import{F as x}from"./flowGraphCachedOperationBlock-YPEvoRCv.esm.min.js";import{F as d}from"./flowGraphBinaryOperationBlock-DVhosVT4.esm.min.js";import"./objectModelMapping-DA3c5cv8.esm.min.js";import"./spotLight.pure-guqQj5Iw.esm.min.js";class g extends m{constructor(t){super(r(t?.matrixType||"Matrix"),r(t?.matrixType||"Matrix"),t=>t.transpose?t.transpose():u.Transpose(t),"FlowGraphTransposeBlock",t)}}class V extends m{constructor(t){super(r(t?.matrixType||"Matrix"),n,t=>t.determinant(),"FlowGraphDeterminantBlock",t)}}class M extends x{constructor(t){super(r(t?.matrixType||"Matrix"),t),this._matrixType=t?.matrixType||"Matrix",this.a=this.registerDataInput("a",r(t?.matrixType||"Matrix"))}_doOperation(t){const i=this.a.getValue(t),e=i.determinant();if(0!==e&&Number.isFinite(e))return i.inverse?i.inverse():u.Invert(i)}_getInvalidOutputValue(){return"Matrix2D"===(t=this._matrixType)?new o([0,0,0,0]):"Matrix3D"===t?new l([0,0,0,0,0,0,0,0,0]):u.FromArray(new Array(16).fill(0));var t}getClassName(){return"FlowGraphInvertMatrixBlock"}}class F extends d{constructor(t){super(r(t?.matrixType||"Matrix"),r(t?.matrixType||"Matrix"),r(t?.matrixType||"Matrix"),(t,i)=>i.multiply(t),"FlowGraphMatrixMultiplicationBlock",t)}}class b extends t{constructor(t){super(t),this.input=this.registerDataInput("input",a),this.position=this.registerDataOutput("position",i),this.rotationQuaternion=this.registerDataOutput("rotationQuaternion",e),this.scaling=this.registerDataOutput("scaling",i),this.isValid=this.registerDataOutput("isValid",s,!1)}_updateOutputs(t){const i=t._getExecutionVariable(this,"executionId",-1),e=t._getExecutionVariable(this,"cachedPosition",null),a=t._getExecutionVariable(this,"cachedRotation",null),s=t._getExecutionVariable(this,"cachedScaling",null),r=t._getExecutionVariable(this,"cachedIsValid",null);if(i===t.executionId&&e&&a&&s&&null!==r)return this.isValid.setValue(r,t),this.position.setValue(e,t),this.rotationQuaternion.setValue(a,t),void this.scaling.setValue(s,t);const n=this.input.getValue(t).m,o=!!this.config?.keepDegenerateComponents,l=new c(n[12],n[13],n[14]),h=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]),m=Math.sqrt(n[4]*n[4]+n[5]*n[5]+n[6]*n[6]),x=Math.sqrt(n[8]*n[8]+n[9]*n[9]+n[10]*n[10]),d=t=>({isValid:!1,rotationQuaternion:p.Identity(),position:t?l:c.Zero(),scaling:t?new c(h,m,x):c.One()});let g;const V=Number.isFinite(h)&&Number.isFinite(m)&&Number.isFinite(x),M=Number.isFinite(n[12])&&Number.isFinite(n[13])&&Number.isFinite(n[14]);if(V&&(o||M))if(0===h||0===m||0===x)g=d(!0);else{const t=(n[0]*(n[5]*n[10]-n[6]*n[9])-n[4]*(n[1]*n[10]-n[2]*n[9])+n[8]*(n[1]*n[6]-n[2]*n[5]))/(h*m*x);if(Math.abs(t)<1e-6)g=d(o);else{const t=u.FromValues(n[0],n[1],n[2],0,n[4],n[5],n[6],0,n[8],n[9],n[10],0,n[12],n[13],n[14],1),i=new c,e=new p,a=new c;t.decompose(i,e,a),g={isValid:!0,position:a,rotationQuaternion:e,scaling:i}}}else g=d(o);this.isValid.setValue(g.isValid,t),this.position.setValue(g.position,t),this.rotationQuaternion.setValue(g.rotationQuaternion,t),this.scaling.setValue(g.scaling,t),t._setExecutionVariable(this,"cachedIsValid",g.isValid),t._setExecutionVariable(this,"cachedPosition",g.position),t._setExecutionVariable(this,"cachedRotation",g.rotationQuaternion),t._setExecutionVariable(this,"cachedScaling",g.scaling),t._setExecutionVariable(this,"executionId",t.executionId)}getClassName(){return"FlowGraphMatrixDecompose"}}class w extends t{constructor(t){super(t),this.position=this.registerDataInput("position",i),this.rotationQuaternion=this.registerDataInput("rotationQuaternion",e),this.scaling=this.registerDataInput("scaling",i),this.value=this.registerDataOutput("value",a)}_updateOutputs(t){const i=t._getExecutionVariable(this,"executionId",-1),e=t._getExecutionVariable(this,"cachedMatrix",null);if(i===t.executionId&&e)this.value.setValue(e,t);else{const i=u.Compose(this.scaling.getValue(t),this.rotationQuaternion.getValue(t),this.position.getValue(t));this.value.setValue(i,t),t._setExecutionVariable(this,"cachedMatrix",i),t._setExecutionVariable(this,"executionId",t.executionId)}}getClassName(){return"FlowGraphMatrixCompose"}}let _=!1;function I(){_||(_=!0,h("FlowGraphTransposeBlock",g),h("FlowGraphDeterminantBlock",V),h("FlowGraphInvertMatrixBlock",M),h("FlowGraphMatrixMultiplicationBlock",F),h("FlowGraphMatrixDecompose",b),h("FlowGraphMatrixCompose",w))}I();export{V as FlowGraphDeterminantBlock,M as FlowGraphInvertMatrixBlock,w as FlowGraphMatrixComposeBlock,b as FlowGraphMatrixDecomposeBlock,F as FlowGraphMatrixMultiplicationBlock,g as FlowGraphTransposeBlock,I as RegisterFlowGraphMatrixMathBlocks};
//# sourceMappingURL=flowGraphMatrixMathBlocks-DMz2stO3.esm.min.js.map