From 6e73ae5855e842e87817aa746d2e73eb2b121651 Mon Sep 17 00:00:00 2001 From: Tanasart Date: Fri, 17 Nov 2023 18:33:25 +0700 Subject: [PATCH] - [Inspector] Fix d3dMaterial surface not show up in the inspector. --- PixelComposer.yyp | 2 +- datafiles/data/locale/en.zip | Bin 37923 -> 38143 bytes datafiles/data/locale/en/UI.json | 12 ++++ datafiles/data/locale/en/words.json | 7 ++ .../o_dialog_textbox_autocomplete/Draw_64.gml | 1 + scripts/__VFX/__VFX.gml | 1 - scripts/__node/__node.gml | 37 +++++++++++ .../node_VFX_renderer/node_VFX_renderer.gml | 60 +++++++++++------- .../node_VFX_renderer_output.gml | 55 ++++++++++------ scripts/node_data/node_data.gml | 23 ------- scripts/node_global/node_global.gml | 43 +++++++------ scripts/node_particle/node_particle.gml | 20 ++++-- scripts/pcx_server/pcx_server.gml | 2 + scripts/surfaceBox/surfaceBox.gml | 4 ++ scripts/textArea/textArea.gml | 1 + scripts/timeline_data/timeline_data.gml | 5 +- 16 files changed, 180 insertions(+), 93 deletions(-) diff --git a/PixelComposer.yyp b/PixelComposer.yyp index dd81c6cbe..df6ddc0f6 100644 --- a/PixelComposer.yyp +++ b/PixelComposer.yyp @@ -766,7 +766,6 @@ {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"mfcore.dll","CopyToMask":-1,"filePath":"datafiles",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"mfplat.dll","CopyToMask":-1,"filePath":"datafiles",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"README.txt","ConfigValues":{"Itch":{"CopyToMask":"0",},},"CopyToMask":-1,"filePath":"datafiles",}, - {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Welcome files.zip","CopyToMask":-1,"filePath":"datafiles",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"arrowRight.png","CopyToMask":-1,"filePath":"datafiles/Sample Projects",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Bevel.png","CopyToMask":-1,"filePath":"datafiles/Sample Projects",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Broken heart.png","CopyToMask":-1,"filePath":"datafiles/Sample Projects",}, @@ -801,6 +800,7 @@ {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Steamworks_Extension_Documentation.html","CopyToMask":0,"filePath":"datafiles",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"ucrtbased.dll","ConfigValues":{},"CopyToMask":-1,"filePath":"datafiles",}, {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"webpmux.exe","CopyToMask":-1,"filePath":"datafiles/webp",}, + {"resourceType":"GMIncludedFile","resourceVersion":"1.0","name":"Welcome files.zip","CopyToMask":-1,"filePath":"datafiles",}, ], "isEcma": false, "LibraryEmitters": [], diff --git a/datafiles/data/locale/en.zip b/datafiles/data/locale/en.zip index 116047557f28d69cb057f051eff12fbe0fd05ff7..5f57fa1c603a86a2f764ec5fad2e6b17ac0945d3 100644 GIT binary patch delta 7640 zcmV;}9Vgje-dnQSO4LggmM%B00B+_015yA0A+43RY@*tb8l{yT-$Hl zxYd8|0{cG@df9%hn_{tVd09BVC1|n<;#^RmfIw?FGpaSBs>|5kqW}AMZlp+x8hib) zJ35EIBa$M|jfeT~k3T5*D+awa<-u-D@tU4*&#$l4hmV(6#o3QPe@GkM)`zk&?QYz2 zE1;bNO^>y0l`zi2#@k*WOxf#^#1@}=bF9sSBC;ZK)ZDhEX*XW>$5!EE(t)AUjVZ@^ zY>aCe`~@ANhJE}70qcHeM(JHJpyCTLq<^^qF`oas)zxVGun)y8FzR-vnDttveXrZm z^qp;}gHi8`cOgqve^Y-n0lKn{?aRS51_duhUtAzxIlk|60<)cI%MSWJ$_M!f1SJHu zwatd-OVGPsZ)($yrP&__c)8f13b8Q!g{@XWq#TrXIl} zLcYt&?9cP>KImB!cn_3$!PiZ=$Mj}Xg6`Ovf#9K@S17yuv$>;<*v6= z2MSihN|l9sgCylhXL-b?9y~-4p0t1rd;3sUwrydOoGAekDn+3pa0REECK$TIA$8Fn ze{A*9PJJz#qB!4d)M(XAU4VLXutyW(V1AJV8s8pHe<7>hXk1tSnVjk_E{LQ&X@PMZ zm~yupzyJ<|y25AdY88u62zwPN;Cd76Uzq%Q14@1zVOr)DM6HHacW%DnCrU?p(y0F3 z*>@I&&ryqqdgE*%wczKd$==|Omc;-~3AJC1_#qlgF~r1vqd_AeqG3D>~6Lr@9oadJrbm?d9268hQc;x>EJKd+d5E#)Hv)J z&~EjSMzN#4FCD^$zs9gZM~WX|af8-|ZHi0V{xqsVM}DI2d;LV8E1u1FXfPCU$?VVC ze`*GhX>Gyt#idWS{_aW9bFdoiSeI2}bRSM$ae)*C6j&I;5ZSi?@t}L>^a=tgsNzqd z0;3=(peSsxtt---35;B==+lz3)g<3n-eJ3^QeMw%=>jN`c-Ola$nIDGb?#UQjUoFQ ztwP`XprLpR6vdRNC0WC$B^twAOOh$mlYV#~5EkMNbXj($HNBQETHMIf*^{k!7dW|p zN*co+G$UIc@1T7~ni5*lX`V9EfKkA(uQw(P+hqQjt%M!DZ#UHxExH+x|B9Qh@04Rl zxQ&zico~14g`lKFOHmFG?}n~C22#XU$X3kG<9h=WIVL@r@yyQk0LC2$|IuFox396DoMEPLVEO4y3ok&wCtB8Bd-L=1mKRz}~?K3eh4u@$lvu@je##F)oU zW55cYZVyWhwoGegPrJAxwsLI6?06lMm-M@}hjKVrJMN? z{9%gkVhAF=yZkU5sgxs_`yg56yKzNqSdK?D%|`vX2iF?nHTX`n$p0@{X+D%&ZcSWi zjtx!|GVW0r2~i?+lStFk$ObxIZ%*1du#wA~Mg942KckN>fm9;u04@w@^}R7oxM-ZH z+p34vlUpzJdU7xibz5(fffXN!NIpYs3JKhpos(gD6FT;=aKa=TFMV{cV0LwA7iK}U zeVD8C7DFKdq$?j7wEr93?j~oQos4&mt=_U(X^7X#2mPpK)>(=g_PR?T4kfGzvai9< z23>GKLu#98UMAok2ulU5^nLYV0tKQEU2G8XeaKRt6#+plfoD}hVBRN*)8ZSk)XYk? z){(=|^ba-GF^f3aSZ$&8H|8=MfdnT+-4}w+H zO_S7nFF|9nvuYkqHDR{v5i^(aRj!ywNM@`HAp4BT*C2S~)GMOhr=2~dbs?Nb@M2sV z;g5>JoE)YsTwgF%=u#Mzi2DPRM0_KEzqWm4QtO%f40A9we}>hs*O~{DYClXf!Lk8O zJdlMv>bi*%xdDD}nyx&;IBd|>FW~<4VDl9*vhO9_Lw#R|JMqFE4pWPHzVFD%z#0oX zAo1l~#1EWI!am$w;+2JX25axHox-!dkdVc#F18Xv4A#^cXffbq2ValXKACfWRUq+I zZB-X$A41(V8olsAZjrbOnZ4BXFv<@&K8#wZZLkTUaba~W#MBb)8hfXkqlVY~iO4rZ zP~SAHg}Y|4{#dbawBghasTv9}lExczH|@}Fg1bSx31UN_s0*PiIzusxST2}_D8oSQ z#BhN^$ZZbBqho#0@i~gae_-B!;y@*b4^LH6{Ni{e6flgv#*BODF`%=F2IW?Gs)`-a ztRQwXmQrXY$j5kz6w}38A!kS#_@PRth&Klr-O$piNxkrvAX{&UjMj>8gfhpp`c#m7f~o}OLo zx;^SepaTn?=~)P-hG9)5P)-n|)36T3ObV#P1@t4+PeHl1V5ytlApL}1!ec8tm=sB8 zSU^94T5^I=^O z*|UX0B5Rh@LJ=&@h%qd!1zW)O<}vOz!H}9NnmNm1G+41Z%03rYKm#q6yeh%OeE_DnE0p=`%k6Vbz}>aE2s2(X(O-V<6`JK_=%Y^wydBa=Y@i@nXUlBMccJ6?ZY%#-O|x1W)r~p zokBm^N$T!UCl~*;lN5YzRPYRFz(cFU!Vb>vy5tk^8~PP2d4#nkJcFgu6|CF62TQ3d z(VoHilb`^1AFhxb7AH6aDw*YHfplQq+7TSBdJq$NT~oefR7_j%FKB~gOK|%2sFQes zJv;WMgit*2LcZYArF}jKZpkai%Y_)0%A6M zgPghXK07~&>Zi73FEg$^`#iN6*88F}fga!!(3|k+jYg%Aq=Y29LmG4ONO`DteCnU6 z&)s1qf3<#RsX^_3anZqYxx-K#e!^avKJy74uUR8LVYl6I-t6 zAj^L-zA(e{Gsm1#b5~pteJ)XxVmm=csV?%mk|jbOm+xiNyn|(uq~wZELdyaM+ti!* zq`$aDntHQ5;E#|q#>cV6j8PX+6dNJs2t6zha3|o%tO7wi=rBO;POYeAV>PesiVItBAsO*=^9@w z@UZdtV9U;vyn_^f8lwP5ND!!p(mRNv7Lc{P`zeYM_Pv26fX6p@2SIxFnWzd6ZHT&n zh1F2uHH08{y@=v6(4dftGBcUlsU-@PudCIC7xpcDBcUz&$)^{*zJrby?^^U};+>R% z1WQN)lTL#kwwZ~{Tq7a&>Q#~u7aJvFXK$5MjUCLd!OICMIE>CN43+J}{E!Q1E`>7# zvGi-$%MA=L8_C=G9tP7BQzS@=p~wAnxNDPngkXQ>Z_tVQcV~2T2P170*1}OEGFmGF z*|i87e?y;QwXwflr;iri(&#&~2*o)*s`vD`it(O|cqP6XFm_37OY?GHw{jvmj0S@p zIftaDOxw;5bCqcE37!%I8n*3C&=hv*YRl2mt1o-~fG+a52m`{@XmwxG{mS?7>+fG% zB&Y&^DwA4;8-KU*TOnr^CNXa5E<7VrVq6%~sW8_eaR@2ybfAhAuarJ}&2_F*r>@e= z?TC=_#?ZIplNIOHxyl=ka3A)d01c*d1#!M6kIZlJg@5@rNfGeA-t8Nz z^Vw?3eihexlP|YeLn7#{dw2=*KM;(_wOyGHM+p$Lt$%)rcl|Gy%I~ktB`t!yP*u3* z!M+GVA6s%BfSiMp#^jTRo6rkSE*P)0e(u(?LwH;L`h@*hmhj(=Ja@mZnT%kUmDGUldXm%1OEOClhlSFEf$dX5s?_5y0Iq=OR~e`dLw%p%YHu1w3EiA zvWGjVT)g0)r%j7!=QsgYTr!g(hZ%o6KLJF=X~1$BWcZzn;n*Ok(b8oe%1`P+Kt#;F z4>aqpo!zT*d^}m;)jiQ{^K^Aj&P&WsHG?`0M#iH);nNz7Vs@`E(b-Epm0+FvX2C+e zNVKbQS9ASUE(G|CTX9RDoAR6I3vQbiUAzkp5^Ob5Nl|!x7KL3S16ThhxHyx!haG?1 z8@@#U*>HZCp65omW_%U399Jv~sAF&6{VNEsQ-?qO=Me%|L%tVudhCtp0Vbh8^+~8J zpWz)=gnZCDnZV$YKFVL#a1Z8=KHqov|LK;ydOJ|9e{n;tX89 zRfA1jS3F*d8$DSOIfA$-26r!d;4fO)@*Q8{<4g=hmsoj8MXv6aG)yyWp7Vf}-jJq` z6dV;U&js?w0?K6qB4yul@mNmTt2Vs15iBn}0Vs+efB4`315ir?1QY-O00;ouYjIba z36~x|3jhFMgnIhsH!gg_t#&l`1kJjuJ)r1W_Es<-u)vI7ga|5#%?EFy|)9< z7QId`s$^$QzWHj~nLXIZ<>FN*KYP`)4YU2mE^H*3cqL5R+J6yWc}ge=`li#id6gcCz%quB&EWF_HPOm{am5LMrsm5RV|E_XE=rB)TWEPt@R!I6x?<@kX8s zJ$utQ_OGZRP&x$jO7{>-!dy3WLzt^3yJL!DKz9&QVea`SB2aqioJSf#qUVDT#3K@+ z>6d_yIYXed_kX=L`0LLYs)V0;_F5^^n)ZORdX6B`Lu-5D5vkDo$;SEi`(Tc!15pW4 zxT&0I-}h#W58!D#XS*`l{DG5A3-LTNGZz|>a|8uFDWCfv8#h>%7-!-rU(0YMO_`S8 zH_UNY)Na^$azML6J9o0vJc$G1TnxS!4PYk4T|A{hNPlK>8DB{o)0%6S@NBb~at`)7 ztaP?n_Ml!MNOW&!OFW_^Ol@$Z?5T^)OfJtPJtxXdb8yYVk4%<2#NS*`hN8-aAO12| zXsI5|i^XZaAf&=F_O3PjU^PUxox|UL30Ea|yEp_mn3oJy8cfq$j8K;hRSJPu)FmMm zzKv$+WPcrBqE)Qo=-|W5A|MfVrl-Yrg&@(-ehH3~#Z|J@!P>4d?Gws^RdhW)6RtTq z2|MNVOv8FbC<))h|6A_gFD~Yx?r0oN{}tF(=g}^lCU;batxM5hH{xUAqEw6)^u-92 zUiv;RE^Fyc$r1-ip&)+{oWyx{!@i#87?Wv2KYtKa38k*RZw$`e2SO?Y(>Xif%zY5N z7N=aDa(O(k6hWdLeG6O@>6ejM00liMpPqfNJ-UB{tCFtkXsA9CO2Rbz@Jb3nm3(mD zAynb7|Cp@gFh5z!bRQXt6f>_6IQG|sR5+SFt(|K^Nsw)DeJr+t8>W$C)HTDEL=pa4 zjejJ^MY}UCeTNzwP(*v0BCfx*xOM;ln;wf#31N?**$kANVErgj87OaiOh$&rqb%#C*x2 z`$2FL2ivoRC<$S9ZJ(#>2d35wV>A=Ryaxn{o)5*{^P43FE|ZA)yW=;8K@`GCTz@8h z+mfZIk=EKnw${epV32u$tCD_PdXCW#f|EEoDI^{Qs~GIg1{*6*`moH*Tw*O5Ol zC@LS4WuQqf$65}Hn_}W3J#%*1FjUFyUDx>THCyZ(;npi2ow*c2r@R!I%yI1T0P|JK z!7WmiQpq(|(uQ4P5p7CI_(a;CKW$4W33EOB8rB3&)i#buJR~!rZU_HT`+tF|7pe`m zk*fSq38k*?2)l~6(KcD?5H}{Q4lSj&NK~t8DvmO}XUiO(VTUVm-{{#^X#b z#X!$t(c72&zNI<3Nl!N0%oLZ|>`{A!tCDd|APLt*expfzM4xK7SS@Q(StxH!aTn4IvfW{=jPnK%$2yItbnn5+TN%_V2*oBFJfB zm87~8Xev8Z@PmVR{X{F^9;^y2b%?8l*Xlh(m9T_Fg^&nbOM=3sWG2lA;^&mb|FamV z-gs5~nJjUDW9ouyn~@53&v$JIB>_@C35Z0Xlt_u6a$=VEr;{3w4u3HGrY)gNps=__ zpmbVy>-9Fh#>$wI5g`#EM*s~eBHKwPUERiWPr#DzwHtKKQAVINw8tBdx#Co?hz$nwvlPdh zJ}ye+5D49x;n_^Js^@4|%@3TCoCFu(BqlrT9L;LXHyX9RrPD@z?_J(+OO0!ENLJ<$ z2WfQelTF?0itXfdY)FjPM2@dew2m>uYSXt;Lfoi>TmQ8Q)_*+x4g9E+TM4svj7xrR z3rA*Fj?xffuc9f`+1a#*v{^3DUhS98nch>+nUD%_@{(bPK5seb(93s6y=16TFcYUFLL$Uj#E^F7vT(L@A?}>irv$UwmEB4o6D58fr>rX=Dk0Qu>EpM< z*<PRgonQ`+s0?%0IwWNQW($>whK!8)!AQ+G^cN)K;sItxU14@*CE!>J*O!*{{4Y zZ+@h-eQ)!2FZQye&yJlen>X80hLTEUD65hjV?rH|GuF#GZYoc zYd%yI6O)S_T1W37q=Fl2=>$Hwp*rS=cIddgPYoKdR$UtEY}B|op&Kq~id!C)2xZQa z+g@T7=JOUw#Z2Mo)VJUhJ?QDj97HT)blp9|i3!hBJMWjK8IvA^< zLv>8*RDXcAZdEKtn}%~kb~&KfPgpk|s#Tvc_?bIi8$yL3WtLzOrJkx|9Uid7Bx5So zRmI9`Z1Kh)-}I9k+88SP#!#)LhRWEn(9#aAvbeKZYTMd%W}D)|p1IS&P$g<7v@rqE z0C79voQTZL&h3F65UNC#9=8h^i#Yo|tfu0h{(q0iRp!nA{@GcMpX|5K|1ZNXS*wt} z##P6V9aF8$exWRxwW*-{PuY5y!*pjfAm>oSBo`yrP31s0HR9(015yA0A+43RY@*tb8l{yTw8D4 zII?~|1I&LQ^fG&Jyg3-mTV4i^?Kr_ElORqqSYQExt!8&?troSqwC!2!f8V;1A}Olv z@k6Fn#jiwCWZhVtfB*P{g1=(WJ5wI*))cSl`R?-Vjr#cM`lh(}fAI%tqucseHm2Q= z2W|zlOQ7kowyhGzMc8=P>!T@qJ(Aesb8k+yc~C@FM2?!Pe4#Y zP&?afdADqm7B(|h~jVN zNzpS*@hXTKlwWS&2nc>L=o!SjyYGU4UoS!&bk992-odXWf27_95Sn_KVL$UuZZP!- z77_AYR%U;mfA>Kz^0>uLDL%^wPo_V?4YnWSC3*)GMN8@&rrh-P{xHfo-?)c!h^_AL zjqIf2njg-!KTN?Yd^fEQy|H>558(q)<^^9j;U3f5Z3((#Zw8*Ta$EPNvi%c(3mN4m%(w)Nm4g7BmTWH{J|va)RpljKYZkWeWK6@e=_-88|_9S*6B z_V{C`Pj>2S*%Za)cB@9KX6gdeo1;CM5C`*%B+&Twe|QdA^+w~m`q$)CcX34|NCDT|VE@A8*IQ8X;|S9-uOMnQw7PTi4L?yj(vwE@ zAI`qBD144uJk(of3#kP^M@X$;zA zM5p6*+!!28I}Hw{HfD!(0{yy>(b)ZLM?ToSpL--oTk}|ti4BEq%+kSMu6K2y2B~q_ zGoan+6OCd|dtW+)4S$VcgN_tG!r}(44cipgw*6^TgO2<}-S_&5K36=O@6li=;*!~) zf3?*NAk*4{=Zj09Z2jg*(Q~jG?O2ypV{{)*UU7vK1r%5q!w}iG0P&!E=ky8!DX8Ml zp#q~ID4-~8u&XQ5n+c3ut?1K|v(+TuSKeW}r&39IrVpCyu7jna+loHLrGH8q!yYsvTORMAeL<7aco`8t)f6qd8IS*p+i&lcV@J5H zllyoXf5t*kQlh0O2Z(n=R~`c?Vk=}TX6Ny}fr%WG9?W=V=XwC+j)VW`uYhr9k^nq( zv(w-!m&4RU7;OTlh1y&*TM0Y%Vdifp{$2}qvLy2zuTNwvW_#;?MgmOHIQa#$kRa?x zMrgA+?NJV$F)o(9@@yq+#q3B(-2#z9cUU3@e*^1bS%SK|%W2Z4- z1y8q!r3PE3HM6H(+z?wiwqka?j>${(SpW^zB?#ntC<}M5G7NF+Hw9c z#qVMWBE7r(FdV6rBbfUjS>?NNLu^=%Cp67Q{iO%j8sathPPEAXH(6;ulv{31TxpIC ze-knuP#6hOB6OQb)6>WXI$m#1+9j}&%bP|0<*z@Zk1l~!BI*b(3~2R(F-^E=oT$61 zht-o?FZ6nHFpqUx?~;KPABjjlLu?8O+?c(tz!!L|Ot;8S!Im8`C5BCuZ=w#caKa=T zFMV{cV0LwA7iK}UeVD8C4nrXVq$?j79JK!%-R>u6ot=#Lj;%fj``Pa!;U}&;t(O|< z%9E{n9Di#c2J#f)Q>IdIrhn%qpjw__MKeH2`!Gc0^`akPPxoUD9@7x7m5=&S&8&+Q zH5_!8KpaX~5#&&VpAEX;h=$ZQ)4WW;JrI@(Sn2!f;{*ysAG_Ef;`@-LJSzf%S_03i zguuK{5~sy?VyT&xYONE8q3IuLtWzADb%}qFLw}{N!VC-+257(Pz6HN9=x4AnX7-u@ zO8$zT6*-{*Vyl21i~%)w+1ajy7&Y0ypKYg*dJ(mSaCpLG3V6|I_2pw?rWI5Z1e;G$ zD$XM+%4s;umb~eTn9i={;H0Nu96e@8oq5zeVH_|C(;G)Uk%`T@>On_NJwU^3n2T9$=4uwkORp?R}l!*HilS6zXe}8NH%B0pa_ZjA3YW@tX zU#~R}Ce?nJW`bn{ns^`!dD3+gC2|A&!8BcYf^pcOt6#zW>A~hJVr1V-xQF__4tL^} zJszhP^L)P}Cj)CN?103Va}hsqG70-|bBR|L;u);HzjhAK_Ci7yx4PI$2r*bw7of#} zlO23LR)=KHe^r6RSG84Ln0*L!*J$*@2f0JyDrELj)59n~;P^0Vp|-&$gvN!{wGdNF zv~TQ2Hzy6R`5z+R5)bTlr!+&Jnf8szThYwFxQvBk0B@{4>y~d1t z=rN$Pi3a6Pc&dsW(X1eLGnP_lCdkKli4@ap<`bVp$_?^fBxS$@Rrn?uhoZOx9)6R& zKM~`30YzKFzRVkQMt;sW}K>F1zaTd>qk zZ;*aQFX6G39ZZU(Gc2H=LGlp*o`6Q+;*w4a9q43q9n43>%kJ_y@j8x^gG=07$_lRI zrZ&GlzO|Eoet8z%E)fyH6>{?;4&c`QVcStRna&jNJd+N88Gi*TWkt`S(n(;{`rrvP z&w%U@0tM7FST|-rVTAS6Gsuk{56b}(HIIsx@VuMCrMrTZy__IrC!a;eXS%MZFH3NQ zGUCb@FCz?trTMTfi0s)yA(1u9X`u*~X2ckl)`Bfy2lE(rn_x&y70sOGFdD2_9c7=3 z8=!%fN?w&<;(wGEW0nc81ca(p`;iqN`0*@+GjFpZ<;U|~!@&6f?O0!a@{i|VbkO~5 z>54mgJd42dyg+BX!^btiFzWq2_EaH$VA>jHZ$}#fu+6P?0n_@cILGFKI(`+V*!G#Q zZiY41c4&VCT~>TxT27M%z^F!%3%z5VBeS(l&(;GH6E z20zz>y+yZkSNDU|D2p7PX`=J#=`#`<9Sd+0kp7GS+QoJnBDj*ADi+wBhqvZ&OrX^6 zH=sWQT_j2+Z?(vkrfM$9lg`icPDT0)z9H2%?&)LUM@~HkM4M;*HBsj?K4V9m{)%1lQ zA)Fi!QhUD0Sp;Y*GV)p2l{&Ho%9T_4y|k5A@o_P99sI;h8CzCRkn=)8*-Tde;iB!@ zm-b?Cz}sFRDo+er#Ow^VorG~l7tabX8%cU|%c_znFEmOR4R z5}v_Q=?d2E-h-vom1xi4{7F!NyAM}L4vP~U0+r12vp_nqZtVz;Ry~M`d|Ok#WK>LB z?=NVBWJ_@R^`w(`fjv78ri4&D@It=g(xrVzT*bw(u$6k%nI7{mSa$X5AMF(tCt;q% z7wr*Z%LZV;oisXO>tkQ$*D-b-)kl->ffW_ra7pIW(RG1mWk@@aQhcMII7UvolNo{~ ze~I*w^563}*kd#OB7>Z{@jkmei|VJgWG^$WJ^M1X7}oouGl3rA6VRLR=#56Dkfekp zyF(gt@kn{B_k8M~sn6YGC4xV?QPn}Wdsup~=6-(l^Dn-~3rR`wF0J;X(d{6?)-c** zcueTdbS~Vj68N>3Yd!FDXX!s3>8U{-e{j*ka@k-g4nJY9Od$7ZUjEz@F5+3HEAfbc z_=@={iVW7WtcfjGbdcr07+;v-`I%!*sktkzh(4F7NwJ-vqf{4pUC9z5kIVNmYTm&z zNm6pfXQ5>QgKg?9tf6?rv@`9azDfIYeG^pJJBJE-7pVZMoy-J_XQIV% zYRP}%i#Ghk?~s%dgf0gBP&kk`y_{w0p_9J;zdynJ#hJ>JCGy& z;?&XqDI#5DAn6)kEby@L_+ZPcye=SA9}c=c!XeoJZahq+3$_zX{p0S(*sCTI$~bhYJZ>DAZ0en1y_T!aB( zYP7m9>3-!0`1SwaS|q3fzblhjg&Ti&@>?Ni6(%um=`K7YQes>f(z!6#A#n&P?tGw% z6|a;&d(CyOQ>Sjy%k7Ae^2X4&`03w2|L3QYO?t@}MPJVbp9D~o{9RIU_$t0Cz#e5O$*$s~JuO_rxFwbb zVN1M!khbh8MuhedypxebBf>hrvn}D@tv%9eqF?F@k{505s3|2!ZQRW_l0dqOue$vS z=)fMjL*~5m1n6J(lD9bVPHwc9$X^=Gk&~>3BvAR`D`ww(8@jNK*Z!nfm*h#_nJ%{| za)ewhZ!iS%qj0|k|1Ti#BO)I5X=jZ~Wse)FT)g6+=S_=f z=QsgYTr-m(hZ%p3p8%rbG+?<5GW^cPaBL9NXz4N!Yiw}dAhnM=OyN+nn9fgBjZt@@o5c4F}qio=Ti^AR_16ThxxHyxzhaEUP7`{aR#c+O@p65om zW_%U399Jv~s4+!b6hHp(pZ@|-O9KQH000080MT4zR~N!DO9Bf30OKT+u80?Z9Jvv` zFR=fC@FfYbh=J9fa2l?+|JxR7~UHYr`lYay`Y9b>2b6#bPu5< z%vDV{jI*h;JEk}WbO#|7=8k_N0;QMM2c!`sdOn7cctj%9-7?~1&Jieo9YW_U{`zx< zD&c3IzZhj2+Z=ILFAyZUZ(K(_A{DwYxj5h9FxnI9Ko}tkH#3M?= z)Qo5gxeK7*1m#&M8%Q<>evcy4BD9G;x zCvl#Af2gK8#$=j*(Dy_cq13etwZ*x6Pe_H)w%+wPbMFPO#VJ>(Tpo@rMUZGu-vZY} zhGifYKtWH+r)M8shwdNXs-$mQ8mbS3k}%C-d?AIPN@4WhAynb7|B$TYFh4rVbRQUs z6fXs!b@xQLdKvu*8cNnorZ?aAA0E1p7&Lvst)L_RT@1=ybV;KzIm_HKR-BM!$$ zhDmxR`Z-a5{IZYv%YdAOoif@_!uzQZX1|9RF6r)LL8#kusvSk+j|@dh!+KYaXsniT zfbNEDcZBf}tHAI0;dg>noR9pHJ3=Zf^RUp?zhfxUU}L`I(0wmBiM{JsLX?DY_Dz?k z>wBiw3uCYo#k_k2iJp(e-Sev@1um0_`Mcvcj=d;E+k;$Hh4i7M2r5xNLWt2*;v68mz5{qbC zO2Q}7b^K{NLP?mbIaIJFXsUK`MB*Wt33WSvhUY5uRJ~Abu#1!ly%9=X{RwszZ=+qZ z)FEz6SRGnQ?T|35YATL0y=Tr+T&&Zfv`r(uLt;J5fssM51oe@>a#t+^jb82Vwj{=mGcRSb)B>H9K$~$ zNOYVOIMdaR#AJ#~dh+M;k?mSKPO}wt< z$=AN~GiII7$r6WWJN6v7zA#)#Q>IOSxj2ZDRozhjOas@NU(^u!dkCkBM)cninruu_ ziY0?;fD18(guPFC3w1x z2{JlH25RpR5}|c_yL9o?zGwx$A>ih1cpGLzS?EM1_zDTuXw&rDP_}N8;y{#s9NdsNQ&0{Fy9qfMe={Ynzb@ z?!b3#2_*qiJ_(3Kpp;07pK@Z8w2u*gwEU(Wp-iB#xI>_HT6gR9Hoe5kn35485gj_ z@euR1%US7i_5+tcN|!$}m#=XHSKMfE$!+NS=2 zQ<9V5M>vVe4!c0p4EaW**0*%psPDbc`)#RljSk7m9O57izIk-1du`ZGPN$m0cunN+ z0!8Z(Gpsg!jS}KU9o*`#_2}$>UvvQP%5PKC(q1Mf|Ii}6B zL3_1dT5r2RJ!e8Hz{yL79s0cGphGYB_40+z?oSr4>pDNs>GhJKN~4`PB@q%K&LW1i zE1!k4y&vPwNqtH%&A#kbhL|Yv>o{dy0bzttx222U4rhP#iIyQt91f#@#VLOeS0O#N zV6Oj}2yCEL*lMeECsA9?AZu)~t@0bzuIdzz1=+8>v9Erlw0&>$b}#m_q|c6>ESERi zQHGLAWhkqX9AiQik2D8520~BDJdi0a@qDja4G#ImM(blFPv878TB~n{u1}SBmB0^L zK&BwYeW3rA-P?kq>AEj}W(xZ-#YV)2%xV^h*0J%x$QYtVIgmk7-kB`5ZAp+lg^tfHX zSj0ITU^Ny0^nXBq&e&J~`)6l4ezM;o|Gx~oWUWH>8de=cc1*Q0`;BGEtW5>ohuTvp zH{i2xIUar?qyii}kJPC7BKSA0W8?dH`nQDSKHp2b`noT=)v$QpcEPr?X5QX_A#xLw zBNagi^e*fm;VpzjhzAfkkpIb0q}ET;A>J@liJPsPywMte9k};?Lr8>rF2y&& z|48YZ5GBDrbKeVq&=4a|oU3mIi#Qx#Cf`uwn4w6}Z0WgUfhbKH%sDj<80sgqd;EaS zRr-1EiIU0<0v+(9?K#_AFw}>Hj+W{UfzbG$6rk}RDd`tbBOiYOLy<-YUHF!k3Bk04 z-k3= len) { - //print($"Drawing part destroy when animation end"); kill(); return; } else diff --git a/scripts/__node/__node.gml b/scripts/__node/__node.gml index e76bd0cda..3e2366e08 100644 --- a/scripts/__node/__node.gml +++ b/scripts/__node/__node.gml @@ -2,6 +2,8 @@ function __Node_Base(x, y) constructor { self.x = x; self.y = y; + node_id = 0; + display_name = ""; inputs = ds_list_create(); outputs = ds_list_create(); @@ -11,6 +13,41 @@ function __Node_Base(x, y) constructor { preview_index = 0; anim_priority = -999; + #region --- attributes ---- + attributes = { + update_graph: true, + show_update_trigger: false, + color: -1, + }; + #endregion + + #region ---- timeline ---- + timeline_item = new timelineItemNode(self); + anim_priority = 0; + is_anim_timeline = false; + + static refreshTimeline = function() { #region + var _pre_anim = is_anim_timeline; + var _cur_anim = false; + + for( var i = 0, n = ds_list_size(inputs); i < n; i++ ) { + var _inp = inputs[| i]; + if(_inp.is_anim && _inp.isLeaf()) { + _cur_anim = true; + break; + } + } + + if(_pre_anim && !_cur_anim) + timeline_item.removeSelf(); + else if(!_pre_anim && _cur_anim) + PROJECT.timelines.addItem(timeline_item); + + is_anim_timeline = _cur_anim; + } #endregion + + #endregion + static step = function() {} static update = function(frame = CURRENT_FRAME) {} diff --git a/scripts/node_VFX_renderer/node_VFX_renderer.gml b/scripts/node_VFX_renderer/node_VFX_renderer.gml index 5b18c1fd4..d36958b58 100644 --- a/scripts/node_VFX_renderer/node_VFX_renderer.gml +++ b/scripts/node_VFX_renderer/node_VFX_renderer.gml @@ -11,21 +11,25 @@ function Node_VFX_Renderer(_x, _y, _group = noone) : Node(_x, _y, _group) constr inputs[| 1] = nodeValue("Round position", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true, "Round position to the closest integer value to avoid jittering.") .rejectArray(); - inputs[| 2] = nodeValue("Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) - .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Normal", "Alpha", "Additive" ]) - .rejectArray(); + input_display_list = [ 0, 1 ]; - setIsDynamicInput(1); + setIsDynamicInput(2); attribute_surface_depth(); attribute_interpolation(); - static createNewInput = function() { + static createNewInput = function() { #region var index = ds_list_size(inputs); - inputs[| index] = nodeValue("Particles", self, JUNCTION_CONNECT.input, VALUE_TYPE.particle, noone ) + + inputs[| index + 0] = nodeValue("Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Normal", "Alpha", "Additive" ]) + .rejectArray(); + + inputs[| index + 1] = nodeValue("Particles", self, JUNCTION_CONNECT.input, VALUE_TYPE.particle, noone ) .setVisible(true, true); - } - if(!LOADING && !APPENDING) createNewInput(); + + array_push(input_display_list, ["Particle", false], index + 0, index + 1); + } if(!LOADING && !APPENDING) createNewInput(); #endregion outputs[| 0] = nodeValue("Surface out", self, JUNCTION_CONNECT.output, VALUE_TYPE.surface, noone); @@ -35,12 +39,21 @@ function Node_VFX_Renderer(_x, _y, _group = noone) : Node(_x, _y, _group) constr static onInspector2Update = function() { clearCache(); } static refreshDynamicInput = function() { #region - var _l = ds_list_create(); - for( var i = 0; i < ds_list_size(inputs); i++ ) { - if(i < input_fix_len || inputs[| i].value_from) - ds_list_add(_l, inputs[| i]); - else - delete inputs[| i]; + var _l = ds_list_create(); + var _disp = []; + + for( var i = 0; i < input_fix_len ; i ++ ) { + ds_list_add(_l, inputs[| i]); + array_push(_disp, i); + } + + for( var i = input_fix_len; i < ds_list_size(inputs); i += data_length ) { + if(!inputs[| i + 1].value_from) continue; + + ds_list_add(_l, inputs[| i + 0]); + ds_list_add(_l, inputs[| i + 1]); + + array_push(_disp, ["Particle", false], i + 0, i + 1); } for( var i = 0; i < ds_list_size(_l); i++ ) @@ -48,6 +61,7 @@ function Node_VFX_Renderer(_x, _y, _group = noone) : Node(_x, _y, _group) constr ds_list_destroy(inputs); inputs = _l; + input_display_list = _disp; createNewInput(); } #endregion @@ -78,7 +92,6 @@ function Node_VFX_Renderer(_x, _y, _group = noone) : Node(_x, _y, _group) constr var _dim = inputs[| 0].getValue(_time); var _exact = inputs[| 1].getValue(_time); - var _blend = inputs[| 2].getValue(_time); var _outSurf = outputs[| 0].getValue(); @@ -87,17 +100,18 @@ function Node_VFX_Renderer(_x, _y, _group = noone) : Node(_x, _y, _group) constr surface_set_shader(_outSurf); shader_set_interpolation(_outSurf); - switch(_blend) { - case PARTICLE_BLEND_MODE.normal: BLEND_NORMAL; break; - case PARTICLE_BLEND_MODE.alpha: BLEND_ALPHA; break; - case PARTICLE_BLEND_MODE.additive: BLEND_ADD; break; - } - var surf_w = surface_get_width_safe(_outSurf); var surf_h = surface_get_height_safe(_outSurf); - for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i++ ) { - var parts = inputs[| i].getValue(_time); + for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i += data_length ) { + var blend = inputs[| i + 0].getValue(_time); + var parts = inputs[| i + 1].getValue(_time); + + switch(blend) { + case PARTICLE_BLEND_MODE.normal: BLEND_NORMAL; break; + case PARTICLE_BLEND_MODE.alpha: BLEND_ALPHA; break; + case PARTICLE_BLEND_MODE.additive: BLEND_ADD; break; + } if(!is_array(parts) || array_length(parts) == 0) continue; if(!is_array(parts[0])) parts = [ parts ]; diff --git a/scripts/node_VFX_renderer_output/node_VFX_renderer_output.gml b/scripts/node_VFX_renderer_output/node_VFX_renderer_output.gml index 8c61c4a29..46b06721f 100644 --- a/scripts/node_VFX_renderer_output/node_VFX_renderer_output.gml +++ b/scripts/node_VFX_renderer_output/node_VFX_renderer_output.gml @@ -15,11 +15,9 @@ function Node_VFX_Renderer_Output(_x, _y, _group = noone) : Node_Group_Output(_x inputs[| 1] = nodeValue("Round position", self, JUNCTION_CONNECT.input, VALUE_TYPE.boolean, true, "Round position to the closest integer value to avoid jittering.") .rejectArray(); - inputs[| 2] = nodeValue("Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) - .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Normal", "Alpha", "Additive" ]) - .rejectArray(); + input_display_list = [ 0, 1 ]; - setIsDynamicInput(1); + setIsDynamicInput(2); attribute_surface_depth(); attribute_interpolation(); @@ -31,8 +29,15 @@ function Node_VFX_Renderer_Output(_x, _y, _group = noone) : Node_Group_Output(_x static createNewInput = function() { #region var index = ds_list_size(inputs); - inputs[| index] = nodeValue("Particles", self, JUNCTION_CONNECT.input, VALUE_TYPE.particle, noone ) + + inputs[| index + 0] = nodeValue("Blend mode", self, JUNCTION_CONNECT.input, VALUE_TYPE.integer, 0 ) + .setDisplay(VALUE_DISPLAY.enum_scroll, [ "Normal", "Alpha", "Additive" ]) + .rejectArray(); + + inputs[| index + 1] = nodeValue("Particles", self, JUNCTION_CONNECT.input, VALUE_TYPE.particle, noone ) .setVisible(true, true); + + array_push(input_display_list, ["Particle", false], index + 0, index + 1); } if(!LOADING && !APPENDING) createNewInput(); #endregion static createOutput = function() { #region @@ -53,12 +58,21 @@ function Node_VFX_Renderer_Output(_x, _y, _group = noone) : Node_Group_Output(_x } if(!LOADING && !APPENDING) createOutput(); #endregion static refreshDynamicInput = function() { #region - var _l = ds_list_create(); - for( var i = 0; i < ds_list_size(inputs); i++ ) { - if(i < input_fix_len || inputs[| i].value_from) - ds_list_add(_l, inputs[| i]); - else - delete inputs[| i]; + var _l = ds_list_create(); + var _disp = []; + + for( var i = 0; i < input_fix_len ; i ++ ) { + ds_list_add(_l, inputs[| i]); + array_push(_disp, i); + } + + for( var i = input_fix_len; i < ds_list_size(inputs); i += data_length ) { + if(!inputs[| i + 1].value_from) continue; + + ds_list_add(_l, inputs[| i + 0]); + ds_list_add(_l, inputs[| i + 1]); + + array_push(_disp, ["Particle", false], i + 0, i + 1); } for( var i = 0; i < ds_list_size(_l); i++ ) @@ -66,6 +80,7 @@ function Node_VFX_Renderer_Output(_x, _y, _group = noone) : Node_Group_Output(_x ds_list_destroy(inputs); inputs = _l; + input_display_list = _disp; createNewInput(); } #endregion @@ -97,7 +112,6 @@ function Node_VFX_Renderer_Output(_x, _y, _group = noone) : Node_Group_Output(_x var _dim = inputs[| 0].getValue(_time); var _exact = inputs[| 1].getValue(_time); - var _blend = inputs[| 2].getValue(_time); var _outSurf = outParent.getValue(); @@ -106,18 +120,19 @@ function Node_VFX_Renderer_Output(_x, _y, _group = noone) : Node_Group_Output(_x surface_set_shader(_outSurf); shader_set_interpolation(_outSurf); - switch(_blend) { - case PARTICLE_BLEND_MODE.normal: BLEND_NORMAL; break; - case PARTICLE_BLEND_MODE.alpha: BLEND_ALPHA; break; - case PARTICLE_BLEND_MODE.additive: BLEND_ADD; break; - } - var surf_w = surface_get_width_safe(_outSurf); var surf_h = surface_get_height_safe(_outSurf); - for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i++ ) { - var parts = inputs[| i].getValue(_time); + for( var i = input_fix_len; i < ds_list_size(inputs) - 1; i += data_length ) { + var blend = inputs[| i + 0].getValue(_time); + var parts = inputs[| i + 1].getValue(_time); + switch(blend) { + case PARTICLE_BLEND_MODE.normal: BLEND_NORMAL; break; + case PARTICLE_BLEND_MODE.alpha: BLEND_ALPHA; break; + case PARTICLE_BLEND_MODE.additive: BLEND_ADD; break; + } + if(!is_array(parts) || array_length(parts) == 0) continue; if(!is_array(parts[0])) parts = [ parts ]; diff --git a/scripts/node_data/node_data.gml b/scripts/node_data/node_data.gml index 56d7e9e09..03f3fa97f 100644 --- a/scripts/node_data/node_data.gml +++ b/scripts/node_data/node_data.gml @@ -204,9 +204,6 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x timeline_item = new timelineItemNode(self); anim_priority = ds_map_size(PROJECT.nodeMap); is_anim_timeline = false; - - dopesheet_color = COLORS.panel_animation_dope_blend_default; - dopesheet_y = 0; #endregion #region ---- notification ---- @@ -1516,26 +1513,6 @@ function Node(_x, _y, _group = PANEL_GRAPH.getCurrentContext()) : __Node_Base(_x return _tool.selecting == subtool; } #endregion - static refreshTimeline = function() { #region - var _pre_anim = is_anim_timeline; - var _cur_anim = false; - - for( var i = 0, n = ds_list_size(inputs); i < n; i++ ) { - var _inp = inputs[| i]; - if(_inp.is_anim && _inp.isLeaf()) { - _cur_anim = true; - break; - } - } - - if(_pre_anim && !_cur_anim) - timeline_item.removeSelf(); - else if(!_pre_anim && _cur_anim) - PROJECT.timelines.addItem(timeline_item); - - is_anim_timeline = _cur_anim; - } #endregion - static clone = function(target = PANEL_GRAPH.getCurrentContext()) { #region CLONING = true; var _type = instanceof(self); diff --git a/scripts/node_global/node_global.gml b/scripts/node_global/node_global.gml index 06a39b9f9..5290f9d41 100644 --- a/scripts/node_global/node_global.gml +++ b/scripts/node_global/node_global.gml @@ -1,4 +1,4 @@ -function variable_editor(nodeVal) constructor { +function variable_editor(nodeVal) constructor { #region value = nodeVal; val_type = [ VALUE_TYPE.integer, VALUE_TYPE.float, VALUE_TYPE.boolean, VALUE_TYPE.color, VALUE_TYPE.gradient, VALUE_TYPE.path, VALUE_TYPE.curve, VALUE_TYPE.text ]; @@ -177,15 +177,18 @@ function variable_editor(nodeVal) constructor { return _h; } -} +} #endregion function Node_Global(_x = 0, _y = 0) : __Node_Base(_x, _y) constructor { name = "GLOBAL"; display_name = ""; - group = noone; + node_id = 0; + group = noone; + use_cache = CACHE_USE.none; - value = ds_map_create(); + value = ds_map_create(); + input_display_list = -1; anim_priority = -999; @@ -193,19 +196,19 @@ function Node_Global(_x = 0, _y = 0) : __Node_Base(_x, _y) constructor { RENDER_ALL } - static createValue = function() { + static createValue = function() { #region var _in = nodeValue("NewValue", self, JUNCTION_CONNECT.input, VALUE_TYPE.float, 0); _in.editor = new variable_editor(_in); ds_list_add(inputs, _in); return _in; - } + } #endregion - static inputExist = function(key) { + static inputExist = function(key) { #region return ds_map_exists(value, key); - } + } #endregion - static inputGetable = function(from, key) { + static inputGetable = function(from, key) { #region if(!inputExist(key)) return false; var to = value[? key]; @@ -215,14 +218,14 @@ function Node_Global(_x = 0, _y = 0) : __Node_Base(_x, _y) constructor { return false; return true; - } + } #endregion - static getInput = function(key, def = noone) { + static getInput = function(key, def = noone) { #region if(!ds_map_exists(value, key)) return def; return value[? key]; - } + } #endregion - static step = function() { + static step = function() { #region for( var i = 0; i < ds_list_size(inputs); i++ ) { var _inp = inputs[| i]; value[? _inp.name] = _inp; @@ -231,9 +234,9 @@ function Node_Global(_x = 0, _y = 0) : __Node_Base(_x, _y) constructor { if(string_pos(" ", _inp.name)) val = false; _inp.editor.tb_name.boxColor = val? c_white : COLORS._main_value_negative; } - } + } #endregion - static serialize = function() { + static serialize = function() { #region var _map = {}; var _inputs = []; @@ -250,10 +253,12 @@ function Node_Global(_x = 0, _y = 0) : __Node_Base(_x, _y) constructor { } _map.inputs = _inputs; + _map.attri = attributes; + return _map; - } + } #endregion - static deserialize = function(_map) { + static deserialize = function(_map) { #region var _inputs = _map.inputs; for(var i = 0; i < array_length(_inputs); i++) { @@ -273,6 +278,8 @@ function Node_Global(_x = 0, _y = 0) : __Node_Base(_x, _y) constructor { _in.applyDeserialize(_des); } + if(struct_has(_map, "attr")) struct_override(attributes, _map.attr); + step(); - } + } #endregion } \ No newline at end of file diff --git a/scripts/node_particle/node_particle.gml b/scripts/node_particle/node_particle.gml index 2ba64b602..0cac64242 100644 --- a/scripts/node_particle/node_particle.gml +++ b/scripts/node_particle/node_particle.gml @@ -95,14 +95,15 @@ function Node_Particle(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y, _ var _blend = inputs[| input_len + 2].getValue(_time); var _outSurf = outputs[| 0].getValue(); - switch(_blend) { - case PARTICLE_BLEND_MODE.normal: BLEND_NORMAL; break; - case PARTICLE_BLEND_MODE.alpha: BLEND_ALPHA; break; - case PARTICLE_BLEND_MODE.additive: BLEND_ADD; break; - } - if(render_amount == 0) { surface_set_shader(_outSurf); + + switch(_blend) { + case PARTICLE_BLEND_MODE.normal: BLEND_NORMAL; break; + case PARTICLE_BLEND_MODE.alpha: BLEND_ALPHA; break; + case PARTICLE_BLEND_MODE.additive: BLEND_ADD; break; + } + shader_set_interpolation(_outSurf); for(var i = 0; i < attributes.part_amount; i++) if(parts[i].active) parts[i].draw(_exact, _dim[0], _dim[1]); @@ -110,6 +111,13 @@ function Node_Particle(_x, _y, _group = noone) : Node_VFX_Spawner_Base(_x, _y, _ } else if(is_array(_outSurf)) { for( var o = 0, n = array_length(_outSurf); o < n; o++ ) { surface_set_shader(_outSurf[o]); + + switch(_blend) { + case PARTICLE_BLEND_MODE.normal: BLEND_NORMAL; break; + case PARTICLE_BLEND_MODE.alpha: BLEND_ALPHA; break; + case PARTICLE_BLEND_MODE.additive: BLEND_ADD; break; + } + shader_set_interpolation(_outSurf[o]); for(var i = 0; i < attributes.part_amount; i++) if(parts[i].active) parts[i].draw(_exact, _dim[0], _dim[1], o); diff --git a/scripts/pcx_server/pcx_server.gml b/scripts/pcx_server/pcx_server.gml index 20bffeabe..96d119852 100644 --- a/scripts/pcx_server/pcx_server.gml +++ b/scripts/pcx_server/pcx_server.gml @@ -22,6 +22,8 @@ function pxl_document_parser(prompt) { } function pxl_autocomplete_server(prompt, params = [], context = {}) { + if(isNumber(prompt)) return []; + var res = []; var pr_list = ds_priority_create(); diff --git a/scripts/surfaceBox/surfaceBox.gml b/scripts/surfaceBox/surfaceBox.gml index 6fac1a9a1..32f9b0a24 100644 --- a/scripts/surfaceBox/surfaceBox.gml +++ b/scripts/surfaceBox/surfaceBox.gml @@ -51,6 +51,8 @@ function surfaceBox(_onModify, def_path = "") : widget() constructor { _type = VALUE_TYPE.dynaSurface; } else if(is_instanceof(_surf_single, SurfaceAtlas)) { _type = VALUE_TYPE.atlas; + } else if(is_instanceof(_surf_single, __d3dMaterial)) { + _type = VALUE_TYPE.d3Material; } if(!open) { @@ -82,6 +84,8 @@ function surfaceBox(_onModify, def_path = "") : widget() constructor { if(is_array(_surface) && array_length(_surface)) _surface = _surface[safe_mod(round(current_time / 250), array_length(_surface))]; + if(is_instanceof(_surface, __d3dMaterial)) + _surface = _surface.surface; if(is_surface(_surface)) { var sfw = surface_get_width_safe(_surface); diff --git a/scripts/textArea/textArea.gml b/scripts/textArea/textArea.gml index 0426e05f9..a10668f03 100644 --- a/scripts/textArea/textArea.gml +++ b/scripts/textArea/textArea.gml @@ -112,6 +112,7 @@ function textArea(_input, _onModify) : textInput(_input, _onModify) constructor localParams = parser_server(crop, autocomplete_object); var data = autocomplete_server(pmt, localParams, autocomplete_context); + o_dialog_textbox_autocomplete.data = data; if(array_length(data)) { o_dialog_textbox_autocomplete.data = data; o_dialog_textbox_autocomplete.prompt = pmt; diff --git a/scripts/timeline_data/timeline_data.gml b/scripts/timeline_data/timeline_data.gml index 8709770c0..86930b711 100644 --- a/scripts/timeline_data/timeline_data.gml +++ b/scripts/timeline_data/timeline_data.gml @@ -118,7 +118,10 @@ function timelineItemNode(node) : timelineItem() constructor { show = struct_try_get(_map, "show", true); var _node_id = _map.node_id; - if(ds_map_exists(PROJECT.nodeMap, _node_id)) { + if(_node_id == 0) { + node = PROJECT.globalNode; + node.timeline_item = self; + } else if(ds_map_exists(PROJECT.nodeMap, _node_id)) { node = PROJECT.nodeMap[? _node_id]; node.timeline_item = self; }