blockbench/lib/molang.umd.js

2 lines
8.6 KiB
JavaScript
Raw Permalink Normal View History

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).Molang=t()}(this,(function(){"use strict";const e=e=>((e+180)%360+180)%360;var t={clamp:(e,t,r)=>(e>r&&(e=r),(e<t||isNaN(e))&&(e=t),e),random:(e,t)=>e+Math.random()*(t-e),randomInt:(e,t)=>(e=Math.ceil(e),t=Math.floor(t),e+Math.floor(Math.random()*(t-e+1))),dieRoll(e,t,r){e=this.clamp(e,0,1e9);let n=0;for(var a=0;a<e;a++)n+=this.random(t,r);return n},dieRollInt(e,t,r){e=this.clamp(e,0,1e9);let n=0;for(var a=0;a<e;a++)n+=this.randomInt(t,r);return n},lerp:(e,t,r)=>e+(t-e)*r,lerpRotate(t,r,n){let a=e(t),s=e(r);a>s&&([a,s]=[s,a]);var i=s-a;return i>180?e(s+n*(360-i)):a+n*i},inRange:(e,t,r)=>e<=r&&e>=t?1:0,all:(e,...t)=>-1===t.findIndex((t=>t!==e))?1:0,any:(e,...t)=>t.findIndex((t=>t==e))>=0?1:0,approxEq:(e,...t)=>-1===t.findIndex((t=>Math.abs(e-t)>1e-7))?1:0};return function(){const e=this;this.global_variables={},this.cache_enabled=!0,this.use_radians=!1,this.variables={},this.variableHandler=null;let r={},n=!1,a=0,s={},i=0;function u(e){this.lines=[];for(let t of e){if(!t)continue;let e=v(t);if(this.lines.push(e),e instanceof h)break}}function c(e,t){this.iterations=v(e),this.body=v(t)}function l(e,t,r,n){this.operator=e,this.a=v(t),void 0!==r&&(this.b=v(r)),void 0!==n&&(this.c=v(n))}function o(e,t){this.query=e,this.args=t.map((e=>v(e)))}function f(e,t){this.value=v(t),this.name=e}function h(e){this.value=v(e)}function b(){}function d(){}let g=()=>this.use_radians?1:Math.PI/180,p=/^-?\d+(\.\d+f?)?$/;function w(e){return p.test(e)}const m=/[&|<>=]/,y=/^(temp|variable)\.\w+=/;function v(e){if(!e)return 0;for(e.endsWith(";")&&(e=e.substring(0,e.length-1));M(e);)e=e.substr(1,e.length-2);if(w(e))return parseFloat(e);let t=W(e,";",!0);if(t)return new u(t);if(e.startsWith("return"))return new h(e.substr(6));switch(e){case"true":return 1;case"false":return 0;case"break":return new b;case"continue":return new d}if("."===e.substring(1,2)){switch(e.substring(0,1)){case"q":e="query"+e.substring(1);break;case"v":e="variable"+e.substring(1);break;case"t":e="temp"+e.substring(1);break;case"c":e="context"+e.substring(1)}}let r=-1!==e.indexOf("="),n=r&&e.length>4&&e.match(y);if(n&&"="!==e[n.index+n[0].length]){return new f(n[0].substring(0,n[0].length-1),e.substr(n.index+n[0].length))}let a=-1!==e.indexOf("?"),s=a&&x(e,"??",19);if(s)return s;let i=a&&W(e,"?");if(i){let e=W(i[1],":");return e&&e.length?new l(10,i[0],e[0],e[1]):new l(10,i[0],i[1],0)}if(s=m.test(e)&&(x(e,"&&",11)||x(e,"||",12)||r&&x(e,"==",17)||r&&x(e,"!=",18)||r&&x(e,"<=",14)||x(e,"<",13)||r&&x(e,">=",16)||x(e,">",15))||x(e,"+",1,!0)||function(e,t,r){let n=R(e,t);if(n)return 0===n[0].length?new l(r,0,n[1]):new l(r,n[0],n[1])}(e,"-",2)||x(e,"*",3)||x(e,"/",4,!0)||function(e){if(e.startsWith("!")&&e.length>1)return new l(5,e.substr(1),0)}(e),s instanceof l)return s;if(e.startsWith("math.")){if("math.pi"===e)return Math.PI;let t=e.indexOf("("),r=e.substr(5,t-5),n=e.substr(t+1,e.length-t-2),a=W(n,",",!0);switch(a||(a=[n]),r){case"abs":return new l(100,a[0]);case"sin":return new l(101,a[0]);case"cos":return new l(102,a[0]);case"exp":return new l(103,a[0]);case"ln":return new l(104,a[0]);case"pow":return new l(105,a[0],a[1]);case"sqrt":return new l(106,a[0]);case"random":return new l(107,a[0],a[1]);case"ceil":return new l(108,a[0]);case"round":return new l(109,a[0]);case"trunc":return new l(110,a[0]);case"floor":return new l(111,a[0]);case"mod":return new l(112,a[0],a[1]);case"min":return new l(113,a[0],a[1]);case"max":return new l(114,a[0],a[1]);case"clamp":return new l(115,a[0],a[1],a[2]);case"lerp":return new l(116,a[0],a[1],a[2]);case"lerprotate":return new l(117,a[0],a[1],a[2]);case"asin":return new l(118,a[0]);case"acos":return new l(119,a[0]);case"atan":return new l(120,a[0]);case"atan2":return new l(121,a[0],a[1]);case"die_roll":return new l(122,a[0],a[1],a[2]);case"die_roll_integer":return new l(123,a[0],a[1],a[2]);case"hermite_blend":return new l(124,a[0]);case"random_integer":return