blockbench/lib/molang.umd.js
JannisX11 b6c3c3fbaa Fix issue with reloading particles
Fix molang issue with equal operator
2021-01-05 22:58:18 +01:00

2 lines
6.0 KiB
JavaScript

!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?module.exports=r():"function"==typeof define&&define.amd?define(r):(e="undefined"!=typeof globalThis?globalThis:e||self).Molang=r()}(this,(function(){"use strict";const e=e=>((e+180)%360+180)%360;var r={clamp:(e,r,t)=>(e>t&&(e=t),(e<r||isNaN(e))&&(e=r),e),random:(e,r)=>e+Math.random()*(r-e),randomInt:(e,r)=>(e=Math.ceil(e),r=Math.floor(r),e+Math.floor(Math.random()*(r-e+1))),dieRoll(e,r,t){e=this.clamp(e,0,1e9);let n=0;for(var a=0;a<e;a++)n+=this.random(r,t);return n},dieRollInt(e,r,t){e=this.clamp(e,0,1e9);let n=0;for(var a=0;a<e;a++)n+=this.randomInt(r,t);return n},lerp:(e,r,t)=>e+(r-e)*t,lerpRotate(r,t,n){let a=e(r),s=e(t);a>s&&([a,s]=[s,a]);var u=s-a;return u>180?e(s+n*(360-u)):a+n*u}};return function(){const e=this;this.global_variables={},this.cache_enabled=!0,this.use_radians=!1;let t={},n={};function a(e){this.lines=e.split(";").map((e=>l(e)))}function s(e,r,t,n){this.operator=e,this.a=l(r),void 0!==t&&(this.b=l(t)),void 0!==n&&(this.c=l(n))}function u(e,r){this.value=l(r),this.name=e}function i(e,r){this.value=l(r),this.type=e}let c=()=>this.use_radians?1:Math.PI/180;function l(e){if(!e)return 0;if(!isNaN(e))return parseFloat(e);for(e=e.replace(/\s/g,"");o(e);)e=e.substr(1,e.length-2);var r;if(r=e.length>5&&e.match(/^return/))return new i(r[0],e.substr(r[0].length));if((r=e.length>6&&e.match(/(temp|variable)\.\w+=/))&&"="!==e[r.index+r[0].length]){return new u(r[0].replace(/=$/,""),e.substr(r.index+r[0].length))}var t=h(e,"?");if(t){let e=h(t[1],":");return e&&e.length?new s(10,t[0],e[0],e[1]):new s(10,t[0],t[1],0)}var n=f(e,"&&",11)||f(e,"||",12)||f(e,"<",13)||f(e,"<=",14)||f(e,">",15)||f(e,">=",16)||f(e,"==",17)||f(e,"!=",18)||f(e,"+",1,!0)||function(e,r,t,n){var a=h(e,r,n);if(a){if(0===a[0].length)return new s(t,0,a[1]);if(!1==="+*/<>=|&?:".includes(a[0].substr(-1)))return new s(t,a[0],a[1])}}(e,"-",2,!0)||f(e,"*",3)||f(e,"/",4);if(n)return n;if("math."===e.substr(0,5)){if("math.pi"===e.substr(0,7))return Math.PI;let r=e.search(/\(/),t=e.substr(5,r-5),n=e.substr(r+1,e.length-r-2),u=h(n,",")||[n];if(u.length>1){var a=h(u[1],",");a&&a.length>1&&(u[1]=a[0],u[2]=a[1])}switch(t){case"abs":return new s(100,u[0]);case"sin":return new s(101,u[0]);case"cos":return new s(102,u[0]);case"exp":return new s(103,u[0]);case"ln":return new s(104,u[0]);case"pow":return new s(105,u[0],u[1]);case"sqrt":return new s(106,u[0]);case"random":return new s(107,u[0],u[1]);case"ceil":return new s(108,u[0]);case"round":return new s(109,u[0]);case"trunc":return new s(110,u[0]);case"floor":return new s(111,u[0]);case"mod":return new s(112,u[0],u[1]);case"min":return new s(113,u[0],u[1]);case"max":return new s(114,u[0],u[1]);case"clamp":return new s(115,u[0],u[1],u[2]);case"lerp":return new s(116,u[0],u[1],u[2]);case"lerprotate":return new s(117,u[0],u[1],u[2]);case"asin":return new s(118,u[0]);case"acos":return new s(119,u[0]);case"atan":return new s(120,u[0]);case"atan2":return new s(121,u[0],u[1]);case"die_roll":return new s(122,u[0],u[1],u[2]);case"die_roll_integer":return new s(123,u[0],u[1],u[2]);case"hermite_blend":return new s(124,u[0]);case"random_integer":return new s(125,u[0],u[1],u[2])}}return(t=e.match(/[a-zA-Z0-9._]{2,}/g))&&1===t.length?e:0}function o(e){if("("===e.substr(0,1)&&")"===e.substr(-1)){let t=0;for(var r=0;r<e.length-1;r++){switch(e[r]){case"(":t++;break;case")":t--}if(0==t)return!1}return!0}}function f(e,r,t,n){var a=h(e,r,n);if(a)return new s(t,a[0],a[1])}function h(e,r,t){for(var n=t?-1:1,a=t?e.length-1:0,s=0,u="string"==typeof r;t?a>=0:a<e.length;){if("("===e[a])s+=n;else if(")"===e[a])s-=n;else if(0===s){var i=e.substr(a,r.length);if(u&&i===r)return[e.substr(0,a),e.substr(a+r.length)];if(!u)for(var c=0;c<r.length;c++)if(r[c]===i)return[e.substr(0,a),e.substr(a+r[c].length)]}a+=n}}function b(t){if("number"==typeof t)return t;if("string"==typeof t){var a=n[t];if(void 0===a){if("true"===t)return 1;if("false"===t)return 0;a=e.global_variables[t]}return void 0===a&&"function"==typeof e.variableHandler&&(a=e.variableHandler(t,n)),"string"==typeof a&&(a=e.parse(a,n)),a||0}if(t instanceof i)return b(t.value);if(t instanceof u)return n[t.name]=b(t.value);if(t instanceof s)switch(t.operator){case 1:return b(t.a)+b(t.b);case 2:return b(t.a)-b(t.b);case 3:return b(t.a)*b(t.b);case 4:return b(t.a)/b(t.b);case 10:return b(t.a)?b(t.b):b(t.c);case 11:return b(t.a)&&b(t.b)?1:0;case 12:return b(t.a)||b(t.b)?1:0;case 13:return b(t.a)<b(t.b)?1:0;case 14:return b(t.a)<=b(t.b)?1:0;case 15:return b(t.a)>b(t.b)?1:0;case 16:return b(t.a)>=b(t.b)?1:0;case 17:return b(t.a)===b(t.b)?1:0;case 18:return b(t.a)!==b(t.b)?1:0;case 100:return Math.abs(b(t.a));case 101:return Math.sin(b(t.a)*c());case 102:return Math.cos(b(t.a)*c());case 103:return Math.exp(b(t.a));case 104:return Math.log(b(t.a));case 105:return Math.pow(b(t.a),b(t.b));case 106:return Math.sqrt(b(t.a));case 107:return r.random(b(t.a),b(t.b));case 108:return Math.ceil(b(t.a));case 109:return Math.round(b(t.a));case 110:return Math.trunc(b(t.a));case 111:return Math.floor(b(t.a));case 112:return b(t.a)%b(t.b);case 113:return Math.min(b(t.a),b(t.b));case 114:return Math.max(b(t.a),b(t.b));case 115:return r.clamp(b(t.a),b(t.b),b(t.c));case 116:return r.lerp(b(t.a),b(t.b),b(t.c));case 117:return r.lerpRotate(b(t.a),b(t.b),b(t.c));case 118:return Math.asin(b(t.a))/c();case 119:return Math.acos(b(t.a))/c();case 120:return Math.atan(b(t.a))/c();case 121:return Math.atan2(b(t.a),b(t.b))/c();case 122:return r.dieRoll(b(t.a),b(t.b),b(t.c));case 123:return r.dieRollInt(b(t.a),b(t.b),b(t.c));case 124:let e=b(t.a);return 3*Math.pow(e,2)-2*Math.pow(e,3);case 125:return r.randomInt(b(t.a),b(t.b))}return 0}this.parse=(e,r)=>{if("number"==typeof e)return isNaN(e)?0:e;if("string"!=typeof e)return 0;var s;if((s=(s=e).toLowerCase().trim()).includes(";")&&(s=s.replace(/;\s+/g,";").replace(/;\s*$/,"")),e=s,this.cache_enabled&&t[e])var u=t[e];else{u=new a(e);this.cache_enabled&&(t[e]=u)}return function(e,r){n=r||{};var t=0;for(var a of e.lines){let r=b(a);if(++t==e.lines.length||a instanceof i&&"return"===a.type)return r}return 0}(u,r)}}}));