From a740bf9a56525a72eac35648fe6466bc16274d40 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Wed, 4 Oct 2017 20:18:01 +0300 Subject: [PATCH] Added oscillators (a signal component that sends out a periodic pulse, sine wave or a square wave) --- .../Content/Items/Electricity/signalcomp.png | Bin 15418 -> 15872 bytes .../Content/Items/Electricity/signalitems.xml | 34 +++++++ .../Components/Signal/OscillatorComponent.cs | 93 ++++++++++++++++++ 3 files changed, 127 insertions(+) create mode 100644 Barotrauma/BarotraumaShared/Source/Items/Components/Signal/OscillatorComponent.cs diff --git a/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalcomp.png b/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalcomp.png index 3bcb1978613e2fe6401953ad8bd745f602fd9942..e6d31758817af1e4daf88f375951c6c2526f1c5b 100644 GIT binary patch literal 15872 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 literal 15418 zcmW+-Wmp?c7Y*+2?(Xgm#Vt^vNYO$|aHlv$iUo(_MFORGA!uk;?`!%gj-Cjfv&^xuI1 z$j&8)-=w!y18M^RpIP7^{sI8pzrwHk000mjfIwmb07zy60A#N7rgTXFfK->dvVx)C z(ovrOH}khyuX202ZL{y&eI@hKnIqmBD)%M0Q`6x4PAU+Pf6yn#w^v3%S)qEpW0?bIhCwa|5@WZ4M=-M8NB0qbVB z&-u5%9|=w+ZWeyDK;AV%n^MN?`C%K)v>Ke;q#VctCfuZz3Y^gzEu*jwgg2_H+Qe_3 zcqVjNQ>n;~pv~_vzb(sTvQMLPbelE^pd%}ou%Iha4|aP~hihcn3HCFE`1>81t^W=@ zD2%3k_$E*~;%xz|v7E@2@cd&ZXaYj0g^9{?LB1A!ebCdeu2KQ5in~12RUg_^sh}ft zMd48GA0731TTl;DwC&{wyp&$$!ETINobEl6hnU?h$QZixdBKPD5M}!9I7}qcl6bz^ z*_F}kw-q0VKfPq^B_?Ql+g;u}_1u0u-IoVxmxw5;$$w8k&cB- z87Q%T%rMLIW*BgtMQ`6=WqQyLpET1isIs+f?dE<_NaQe`aZ z*VpD9LdkU2&UqU{#;^?7xZgDzqbH5*6wSAvczbzyZ9K}B8^$&^iuUk3 zNe9}F`Ur8QYcND~nJ$aJ0j*kP<0Eo>_@WNp<`)%>+VlVGA#t-1lDOpRnFAsW7$QVH%&xov7Zg^M5v^L81{#v7T&ljoIsvGfoK&&Hq zXhWhTmHdw3(Ha z(LaCC^@;1e4uB0X=2UgC^o3gBy2H+Jx*=!!YH6o;uhHkvv`oiRccMkw=^Uns?#G16 zq?=_D`$?I{fQ!lQ`X7uMY+i zpcg1v`Y!O!WJ+RF&`|6&80hSc&d3gz(>?Gf$~}nF`JK8~ehws&0nK|HwXKi*R5fKw8-2HVU8Okf z#H^*0r9NP&R(!&FO#MXR-ViP9+G)cQESr&VDE2FO^|OxOIz}M;hVAyl^_BBl&-ozj z#1LElXdV2wYziZ$D9f1_Or(9r4s6c1`bV>bqHk_|Bqb$3y1JHCRV9p%>tyg+XaodE z4VWq?$cAo<<6$y@TX(ZTsHe@_xW5*;H8`Xvdc9Ypkky$9n}>wK1zF}ibmKqC$|!0n}FZ>HXd2JmGW6+!%(sm$$xqfAIdLIFP# zhlLp(iIuJFZvTL8=Qq~)_J7B=LrCt+OBH}RWa~UP_}?dDOqBSkPz5ukazoUO9$m{n zt@+ayB!%Af>b>KHxj6U^Z6=AqKxJ*vkfQhPX{#ixE*O43Lyi*PC6@fC@gN`>wg~`A}Y#mxX-e z;(Il!j9l_-Z-lJ;-@pYV91ih`q<#f-_y?$xN_H`1BdL<}-a@M}$#C-^Cf@MI6$) zhX8xJVf*XRGSKTw9c|7#SQGLLs&4)FQwp;8c~61U8B7PjTXL%-L=F=LjRM{i92!2gXN2e=|6+e|*f6Is`AoltT2_O7M8GCKr^I1s4+oHGWz*3$Z>8nLh54 za2c)m%<8L-Rn_!%oTloq9E5DlKRv3lx~B|fBgeDYSdW<6d8gP3F1qzpT6X3yyR`Ad z7VR?+x>tW78i4FOhYByUro~4>p&RV|cYm2RelAdBeaYsUP8$25US{wSbS{Hu%X42U4NgPn zNEXR4LQhiM5|8zgRN+i#%+uLyb@>vEW#w2}wkOG~9B#-NNsI`2lf1>Ds@r1tw|afO zzf?O%jhRqcf7UIE+}163LD}N*Z)!=7hZ=`_+2XXfSqra7B{T$H(p1-dmYv0p>nCJa zuNR3wCS-!_*E8wj3p8vKsxTCKP03K{R$(SLC28?sa7JlqsSc{kkGR#=x4<%})Ri{= zWVYUKkAfXLLRupe{_hE0(k;njhnQ_D>j+_nxYdUu=4C+6w0IK8U6eAnW2K6EWcmFf zLD3Ch%eIF^4gvx;2GIfPE)LX1kY!M z37;l2MP3!_Ozd`s(fsx|qr1X?w8S3+YHgv9!la$ zOIq{#KG7X8gqjnL^9;P8-EtOy{KJv=a%Qt@ZywyR`<-Cl*cP5klcWMo*hq1N%2pp< z?XJ2IY2}=>t!yS%_jwCn5#@wKwu8=7Tpj7p zLOOy5ZK{(?_}ETe^XXBi-KLs?S%E`6kyu$np%1UVnZd)pCUrh333S1161rBAU8Z5s zY!QR-qG5P?b9l8pvCZVMWKF>+P-YDKxjg4>{4;Pk2#d6wx^l{nb;b{mi>vRL+crxL ze7bgjFvRg&ByrL5D1?3@>P5LVMm4VlCji!lMLOzm^5l|n(xyA+OljF=@@2c(ubRq? zLxk@BZh;)WX1ta;Ts_Db9@Wo@)Un7+0@`>f&vUK!vB?D>EJj3^^B`15*I`mKxcz(*KVChZ*sznQSs%EyT@dEPWkMszy>qd^XYBSe#^oE=AtWJd4XgaD z*w`RCH9Koa^z5yw{bY1oHcxiyQU2%8A9jf1)W@oOv;6gyX=xL7;vQg2glJtyD9Ym3 z6cU23QF5yvwXGcq2fc?%QfvWIfCcV#(o54LMUmmf~ z{i=d$MFeWP^$AruYR{LBn%^HW;n($$*Bnz;c6$ezPk?em=A-1ycGQ#Kou+C+%G0=r zwbL7tKGLgkUf3cic*brzCf5psF}mLnwBnaDSqAqN4bu4=!uQJIU>})+?+&5oG3QT0 z0#*-gP*MgIrV84PrJ5jugZWAT!xs6#q`frfa?EXO4^)V34 zj_kzI+_UG{SdC2J<7hd+Xzm$m$anEzoY? z4Vcu)Za!6w6SZXse7~QtzX~2WnQS5ln`iI+PL&JK(NGxsWN(;)_Hs(v;q%xFk6r)6 zl({0$FoyX?^ucR=aGaNP1Q30*?;a33r=VR2beDc#Wut%YUU%-`u<7h2aZTnLBNKf3 zLNe^>_nP1e*eEMo(bS6(KYpx1+c4gfRX+Shy_`?p8x$DU%;8Q}^)4~6I>9K_8YHef zM~aWN{BauBB44RUM!`V0tDAMAxq3QF=iG0CRTLM^Yy9AQadFo8xCA>#GEkTnb`=;Z z{svc(J+1g_Ptr{zEUNgU1E^Nujh0x2ycI<8Ufq0M$q`9$OOkL<6PBN|-~yAKA*_|U zf&kEzmeSGX5Ll5py0ud-NF1~8)=3`5ZEw`1gy(oA4QK>R2{8zVkXwOxx029ngJSR1 zW5<0C|Erw)#*2wWAV)fKXXtIvMi6z#YL57;Pyy=3X#IrM+{*f8xo%*rZpf~|U2r&# zr%@3ZuNAY{z~A4pBd6SR+P2&W=JJm3*&yfEQCKLFqCKY}4`>lgemh)vg-Pt^ITrv- z6>`JLR02vR&b&ADwn}q-x8fEvtM8`>#dWCL4Z&muT*&K>Yqvhb)Ep2akwJa(C_h%K zWy_aDzWjUFKgxu~fhAMuG(ehzUbc_S9f1DrkDpvv^TzZzGAZcjR5>!WSidBNJ3@p{~( z?$puju~Xi?-ePXMiw=6#kwTsR2RpgG-DQ*luYAELngH|H;zRUe@qm8clp`5e465kI zcayo0Ba`q5I|WU)!|WUiiZ#@aO9m7-<6|HAIR(X%Ax$Av&tFijZ95fZg3pMTP{75M z;O}>|&bC=XZ^U5zpR?z{%C-1gAz$dlKg|7no9XNAeII{I^cFKsw8r{;({;P*_2NBD zcB;3g)01QBFT2ikp&mQGwDc$(X*zLrb(O25&01bupn0I;l1(M)Rbq;|JznpwQ>7ki zO#rp*H$IYM%S*tsHbn%%m*pt&>o0V>B}6(!u9|daO}Mqe&u`!xuNdmvwcC34ZC26B z^{#-mds^C%CwI}x<*s*Sc|)^?1P9H{F26eh_y6KujA`<@N-xYzNarb!E!u?D%la5; z8UA@A3s3}pbl-n3oN4nR)=5xdZ$$#zaKx)E7G;PyEOJUQdHuTD{<={%712R;p|sTKCg3sXuO(QpI5d1DUTmPT#9*hdp*?zNvxY%K(0*VQcgy2152HV z3&<3DJdBVN?OfiUA}gE?w4Jmb#td~=u_FXCD*UviMeDS)Bt35DbCFCuTI+fV;Q7u{t~act2{pUQ`)<0U zS?Q`R3h#x6xjM=G_({NkYm5{{k(v1CsVW<&28s3Fbbr^ZF z)|Yh1!S0h(FUgZ{n9VNZU5+{!st|cd^K(r>BSi8iv(P>4#GDb3o#KN+YRk;XveXhrqxm zobByYV`kt`FHwGP#_J;mo#i8XDZh>)8Gn|rqHzTh5|ZV+j==j5*Pe$Ai)93tx{tTV z2Z`p%7evuqeBIt4*1MU(*Mv@3~YU&_O5cMlrxVfmNSwJpHgLN;fsLMa7*!p!`UC&64*)H$?oA@+x95(UqwzQE| zw%9Uf%uD**A4e`sSnX`wz8X{C0mFw754s?Gx*&-Qx;6XGr~A0ZRM$b;TfP;)XS|lX zl(;Ohnw+pOgmH<(ZR&uPI{57bp@MEks|u*-hKe|~GWAu<*(I4rxBuQ{e;l79vqoC1 zimdO80|;|9%YEf#Hudi0HLxj}2#{gd!&We%UybdtS+-S@fF&2gP|$gHX?_drR= zGHlD^0Ilkf=llqR?ym5}5DB+!Z4>U=4*L!?>dItspR{liN<}Nz?gszCE=HamceR)HPyTFwJI6R-0a%8i%hS-~F<~ z2;j3E5UY9O>u@_KyE`hA8|mvq4({2@F@7O4ewrXTY7e9cIEIp4?!uvzVI(aWFvBvf zS0B8Ux>qo0%=;h+$h2^$Xfe;w6eX!jK{GK%V5keNsjo)MqwO7tF%ej%4L+f1=6_8tC*q z*jfJ$ZBKV%jXP{%Zb$A1a)71e`{Mk>HPi*i{COW?A4=e;gqfK-E0Nu$MD=sG2svoT zPSCHqS2sAAsG|VDz23Y9j6zeTya%}RewIGemD`59f8aBhRHnrJq%-Gq+lV5k!U;DGlg3=Cy?}Di3W1az=KKnn!ukMOy!D+ExqN)LA zT>0BuEYj42OgZjqWkS$!Bs2zYm`R!kzv%c)RyHRrC7k7FvH@Vd^+}`SY=;jpxiSr$ z7sCk0=b+|pOvX!ccIFU;4u{-)rS%jzV7c5Ab1F*u*9#R4LLiWd~>ysF@ZBK7mB)XOFQ zmP6yqQsp2xjMA_gGZ68CQF1eAe5jM8Kd6Sp&`#aPCC&(TMwV7%``4$@(S(q}6m3!m zb#?ujepy~zCQ>V0SkpBPG9+IMB(pw7XgZR&~zS$LSJX+l8vw1F1(J|DEU!9)D+Z8bmlbgEulpa7r(ElV@3N z*EH$g=uPwkdqx~KUgGr1(r{N7eYxQ;0^GI5XC`LYN6dagc)^!S=9TeU}1AYmXhbGR}zz+&wnO;D3)H@T5)UKD-BHqf?pUo!>tFclxjj$!sjWxHp!{ zzx62ztpB?G;`@*O&fni=Yb`|l@hDklodDU(%bS)lyJ=#`15L&4o!A$(ti?T1&bKh)#z&@2Q8(i%`O{?1O$;dBx!$C*G!T#lm_)Ssif^ zl1HUqi>XA~+H7t4O~+wze6k-L4`Iu%2fs#&UM*AivMBAe3gjm!0kChbjzrW;=##T> zGL~|DQ5S;DfHkmxw@sM-9d7cSA@5T$>`*9j{`YvqaUhSj*I6(eS zYS6XkQPa zstv)|g9FvvTG|3rGfE#mqSHhrC<5QS(R+R_5p^y7v?xfJHJYvunMPZAa3VhoWNwgl z0Eky#euEO@uYjQbwQJTkXiot@#oYo_5aV{(b2cwV9+I&UJ!}z zx+k7y#*qq~=26rr;@^PNpZ50`J0`Xi3ynAsVjdnI6Hv=$6xG774_E`=M)6!92n>*x z*`3x#7cKAq`E+i};Yn3OWs*%c?_?p)%RjJj>Ih77#-@#tK)!WjSEynoG+8DQXjr$E9}DS+(t2|CrSM%QjWWD9G~lVZejvd!7b}>yw;Mq-%vy z7CD6i+}w|T7R=}l9`$MOdnBh(~)CJC+RY)Bq(gCsj;19c_~9z zOsunllrE&zm{jc@hz3;k^%7B|$dLQ2(YHMhJdV2-G};F6yA?Qns5s5bqoKZBv)zi% zKr7-ws@?KKxELAT|g z!jaB9C|`m^HCsuVPbun8YTr`SY(P<~)Xni}Aew6D-u|22vo^3l*=g`Z8&%)hbH10(0R|37f1H&&YT(Y2&Z5?>$k-{4|xnC@Sz!O3^2-gm^k=L zxi?CjK_d$sO#HVA2cum&Zre{Os;<@7pJ3_piItXv!^!$3hbNO4Cbx4n!2EArHFL_~ zMriWH-q4PR7T+W?xijd?rge`-q$6?iZBS=%aj}bg!_m+F?uJF#`jQ|Az*k*@<-EsA z7I{!Wg?Yz%ht1|zWRa~-+5W$5rX{oG{r!(*$IdiG#l=da2mgpKcPGd$_k82pGx>-f zX=`gfI)jo!U8_jyq#8A#rZHn8Rkm@3FfsaK{WT3QufZZOkTd;FtoWi(tm411 z(jqk`5NY@1@kYo(p?@UVXJ+lh!maprv_dK2ei-FC-!`l>Jt>R>;?Bwc(!2*s1Q$*vou= zr^(oIq@BxnTCnC(muWeQ();3YzQz_#Y$br!w5aohdj_7}&CxiRm6Uo{f*)!0iB;J0 z0@hmQ!3l{|0f!U!$0GB<+}skOi6xf*8X=`r2K0$N>k*7z-bxj(E+$`WiLcG zZ^7tjO9S9EJP!&eOE@YV)-YZx?xT<6boTrGYzx<6XBEq=G@kwUE^=+_pIr<4;ttQt z?{WiPTGBK=co7#;M{BW;sp>qS8(RdBfGfVnuYvFILe9SI@l{i1vJyzQWQ?O=nLG^} zKkekpt$1EJH?8{2T(oC;M_a2gCd*SY zlv~gRyIsGp7PdTmyV~@c82o&=DvFdK;65laB2@iqlkL!$uXmY?U=?3T8KL%W7fvW| zS7Zi80?YgQ$t+gH_dPA2s4Y9M4g>ci@XlwJU8-X$Uqjr98CV!&*@tJno+o^$8rQPOA3qr2YY~1ileAc`h+K2_cgnMv#GsV8jwh6#3ZaLs=6B^- zEe{W;=i3D@-|RU1?F#RH)YAa+ z4vGeI=Gi&^#Lo#E08&t!dpxpaepTa;(&H>lQ<{#cVBdaI&yMlgA#sUl>&CiDH%D-H zn4xNM#QT#$tex{sdesLL5G*|R`#jT;J)BADEctOOD0Pz%1$uS@Ek|FU{ToDxWXfBJ5UVgQB~30 zx~iR(*WZ`o*V))BkodJ*-r&xfZfB2%9X0%oVG`QlvK^as$^TZV|BYIPQM zj?9L6AaZA#qA~IDvxf}O$qVLwE9&_LU!c0 zbqMkHz{Xq>?K{nW@)Z-pNo3}TKB92Nay64G#($qyVc~nJ9yGh^>gW;jL#AFlf3uPa z-#spyL&yb6a~8vxBED8a+s6Lvncm6R=D z>so6H9#7lodXma0$HFzr^!o`lWfBvBzqCQSoRM6}g-~J57%pTpsJ%XR<2yi~QRvPh zyXS<1=&?DZwGC484xLm=r}7h(l97g}3V}bzyAyG*R$jcDt6CRO$jW(JDYriWSo_1! zzS9tsrvDi;RdEB+c3`rK*ja?5w$GhBA4PtZ=&p$_57>%D9c^jMX^8NFXD2&z6cK}A z-!Rr6_{*|o^mojVIC4xEfj}`7N(`|B@748_BZAH&zdQ2uFa7$(8v9K!iUr*JrfT)w zO{Y8{2|v6NKb}hI4LYuug(AJN?Mk!2Uyy~8<-gY7QSbgz+G?ceEfKIQv8#Y#Q}j{=(XE@F zxLX)~*czCslQQf({Ec72%4*_-ozt)jc1*W(cFw8I@TodiUU}!)MgArM!(s6i5kbBa zM&!@2H!CJ07z}DyVQk1BKnDqoh+QJ62@rUyrUe``hAKj0 z(_`a-*yITYNP2C+1Qum8O})o%BvT=$(Tx939=>Ut&nUTMnoZsI_w9F5+?xm}Ash;y zhQHl{sV;$3Z?xid5i@@7Z3NIJ3*2EucX?BM6;`YhaDv>YFO?SY&+6?d7tuqC&OI-El(R8rqE}deR4cVip%63 z8+ttHtXTCdO-tj_);_Nw5yC+^Yr`?^gc_75LQSNyQ$4o19}CJZ&KB#?kgS3o){3@e zTZi?~d7e&A(De1?jU9v_8YJb!z%iGW3*TDgK2mw&PtsKU z3r!eihaHjl?DHrL$>5QU7lrKlg9V50D}Il6i**i2^3ezj&8up}Dh(woen`8ff$|cV z^PcBHiR0t;tg#=cRbh^o4hXe-Nb;&CNaf1mRmCWhOW6ycV757VqNYSF3JU72??I$n zWiwZJ@hMu&TRdC#-l3h*Eb`yIBlcR*2OV~bsl=UL{i&Oc*)WWglA@Si54@?}`*NDM zUunC&NifzEd=DE(QNP@rF=X)lYXBG5GP>XhNlW*vG;+K89dqsPn<`sjr|xXjJOSW( zy#DYtVZ&@~%!O2h+S3%?!&X`ae8!RzQ%(VC(J;g10L0W7X6>>21tK-`l(*zGO*w;{ z9ybCfExiJ!wt3>XR#gcBC!8wyD)EWB)|LIYL4u3e9jC?K5&WdZ+C0JhQa2v~a1oIP zeX;lgkt-EDx=5e1U3Z;(Kks#RAjWj;JKc?SBtV1cKD#IqgwUio$z&SC*HkvNJJxT) z)sadmyE)vG6cHYFMeMO+TtG}NV#Rl+rWfv9{I>Y$$f$$*(4cUX0aLFMck?pANAz1a zfED%|Rkis9u^1oo6=lgARL9jn7{r3OREO*l{PJosgf@*M1MoqOO7M%MNhFs!sb-w>QE+BPcm#jW9;am)9DmxtwCrM`}W$!G!pv@+WO z03ocXPCCGBmh3Z&4**dL2{2<>FTbFKpy$w>ea>4ZV5wz$=CylBaaw<~MT;6L*_%fJ z_=X#v1^6}|`0kNAMyf*)D_jN*;6b^aM^R9w8J?xtbwxopC##!DJjIRv{toa>cII%@ z*8!j~Hi>eC4cMm;3XxQ^XX(Zw2iPnf)pSZ*VI=(s(uILN?Z1Y|*tXY9+#sIy>7?~9 zo+Bc4jV_+T-s8J+?IDy?ZqMO*0c4KfmWOrev<-L>xi{AT!NLXzjkOkuq}p0q)Wj-NF9Y9hmV%RHst?!bkh^U!cgG$pVAahjc9F>^2x^on2*~iG{hxf6Hme`)8>s236nZ$G5obD6yZ}~7 z+FQ`EsMR0x)LBzsWQEC}&^42C!;YiJ7oL#}9-$eQF0YCFTn3C%%?RRJvD#+T_ygAW ztD`x{w8#&o2bhj%I?MuGDEVZ&bU@zB(=+Ls*_D;2FLiZw%f;-UwKznkr>3kCFeAf@ zq3@mIC9L5zYe>AntKYJ7Q_xnGYY@m?6|j)Z%fEUALfzFe_}3SI%UxTC3UEN(-ogDi zhPWXS4=gv-Dx0B0aq*^h_|@M2Tmy#lMFh2^&GMii1E^{Hn5h{pEv;-#RTWQ~(5Srq z=)Z${^Em*2P|UaceAMjHcNk~$?q3$OFZMnOi;2}-NS}V5xMcO+xod1}jIM$@aGTU_ z*bTbBZ(>qSS_u1C@X~aFT{b@I>Fk^r(t0=s-utu?bh{ceK0e+)eQ5HZTHNRO`1rrngP-WAsjv9juco`Xs+(>6#B?U);LRqQ8j$GB8$HDqk! z53)HBj%NIh{$;-y;vmOlPa9iO7G;0HpZgu+G2rjR=Jm3sCBTNQB$qQrTK3wm$1bd^ zqmwTvDfy700r@paKEoN|mMDGkr>-XG7(^A8ufrv6r zP6-t4%;#lXRN*P;?tssr{-6LLdTuxxN^!FK1HO(Z*geUkV7qHWkr&KbVTNcWCMJe_ zFE2lM1aAl0_eSB6Ij#MEX9Dv7PhYI68tnoCQTb4_Axc9GOU-%NzR>^p!hSMp%04+i zuNo5a+SS+B_q@Hmt!r5E)}qP?4|(n2@#TGsxy#8kL^Cx@3l+oz*9AI4hvC`>8X6ie zU*FUryCh)7&7wmA-5MOm%1IgeTXlSVeCy-wy*h%;dcvN?^i$ydY{TP@h`!uRTE!!R z)3J=D0jlPaxWwO6LB=0xl;=UOZIOzbM{=+C6L8vRH&;Shn)_xwBm~apmcd&LI$+b& z9-55FCdTE4jPzMLW$+)dYdd}Pe0+SABISGk+t0(}7s$@8qyhr@(EV?&;tM}^CbwzB zM~d&MLnZK@u`q$sGWc5+_*-4)=jVZNz3RajEZ8Qt z12yiU@bI9HvhHAoP#s$wVTS|>kNNP;etYQ@F{p7_pP1c0)bIMyXdVIeJPgU<#dvYK z20&(A1+zwT1_uT@;Oh3GFSwHEwxg4DW#$tYdL(y0!cMYneU#DD5&WN;wb~6q-N3xY)84@_HMhnlk!*(3Ao+{4vscCIFE>qD85tRm zaMwNIA;xro_lK=@kM<;G6>d1>5D4dOPQ`!NP)Q~b78d^7*whqq7=}hGeh)uct+sl< zib+WLU&Cb_TyR;CDqM{AynV4Vk_uOAWV*%^m^C_C!;7;T2fQNCuCA^|SesN##~Pc> zdzTw-Zdmd}b@ z?oG&v7fjGe_@1mlh2ZrVU)oY4Y$|?&uhFZPccU|2U=UtN;C&}Qj4IF>$m!@D;Q!BQ zsewbbwjvJh;a}n5Q^am#XBVMZ*wyH~>_&~o@nL1K+x?@nGfU1`%E*oy1Sp!WA;Spy zo$9A_l+a~G9`&XA5WM#Juu7-J{ACZWU9aJ_?D)M5uQ^`ugfWNzD8+#jQ2nl3hzDaV zPMC}z9nqNM+Q@cvN=Zp68W$Irmy(>^4Q?bnqPWeQli=||j~?C)kEsq5?i;{=b?w2N zH*?-JkprSg&jGozm>*N;xK#YQ(-l1M4VQxjX37=u4PWu+xm1Ty65$hG9XzI<{-ayUfH-_z$z7c4h)a`94UsU?e_e=>$eqi z=O-s87O=!h=rnmM!Ub?RQt|5-C=BgmRXtFnDvc811-`^M(PB*vl4>0gB8eV1LVeCl vw5Y<(ufhpTMzT`1TA%>f57G+1tOIDf3Yok!t;OMezW{X=9p!38tMLB;c*Q@L diff --git a/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml b/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml index 4da203057..687e98788 100644 --- a/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml +++ b/Barotrauma/BarotraumaShared/Content/Items/Electricity/signalitems.xml @@ -449,6 +449,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + = pulseInterval) + { + item.SendSignal(0, "1", "signal_out", null); + phase -= pulseInterval; + } + break; + case WaveType.Square: + phase = (phase + deltaTime * frequency) % 1.0f; + item.SendSignal(0, phase < 0.5f ? "0" : "1", "signal_out", null); + break; + case WaveType.Sine: + phase = (phase + deltaTime * frequency) % 1.0f; + item.SendSignal(0, Math.Sin(phase * MathHelper.TwoPi).ToString(CultureInfo.InvariantCulture), "signal_out", null); + break; + } + } + + public override void ReceiveSignal(int stepsTaken, string signal, Connection connection, Item source, Character sender, float power = 0.0f) + { + switch (connection.Name) + { + case "set_frequency": + case "frequency_in": + float newFrequency; + if (float.TryParse(signal, out newFrequency)) + { + Frequency = newFrequency; + } + IsActive = true; + break; + case "set_outputtype": + case "set_wavetype": + WaveType newOutputType; + if (Enum.TryParse(signal, out newOutputType)) + { + OutputType = newOutputType; + } + break; + } + } + } +}