gH]kDwP~trueSpace7.51[VS_O93Y*I Clinton Reese, RUR`d8pM*#ͺO2PNG  IHDR@@% IDATxُ]וÙ\YUdLjEInm +F$@$O~_txl$(DR*|V{ϸ@e5٦vq}ƍoo9MRv73 D՛oIuמyz㝋oO'Ӽ,VwwmnX\ʲ j%Y+4u}ww{[\\xm]`ƫHuJk`U43ñ$ϹQʟ5kz1`w߹x믽l֍Q`o_>3g\򲎣h?kڽ)-Fe$QGJ Dd "֫zt$*kEM#DXCv l{~)b)BV23 "" >`  d(iMxw?_\ZW2Y<㓢;k)jLΛ94T"bT(MUr+3!_w#"& &pi ~vБq!C+KDr`jE5Y@MS8 tDVK< >/ [ RHMtW.@, (msɬ+H2V9v!`$N fDF} qQL8q$PDD;@D`6^uU$T2GJG_RB/\JI0n4E,xSRRt,JӘ>P`]R $y v.kW9\{gBp"%@BJGQe R<瞹JHF D(E^8?}WWPR88NRj@`,|PHHL{(umۜNr"T"/K%4{DR@Iq8M=02GJGQ9 3 `:wܙف>$^zO@a_΃=ꏂ1Vˆy $gyk ᜣf;\aLU@k3;3K_t{_?bNt0;Gfgg]m+So?nGR3m:@$ieQ2@}&e_~koǕ+R򩲪"%Sb=>:\X]]}x</--f.nC+KQ# $0J@[|:yB"JڑcGD%U]*ғ;:~p8ŭ57FQܛQ~(jT_zg}͛e4nomn+936&uρYC!{}DB8MpX;rĝՏ[}+?~ݭvUk_uB!x2YX?ѧb| 0L0#37u (E&J*^J6@X?\COl^\Xw;OmÞ)>kPnzGRÇ;3yɫǏlo Xbzkuʓ++ `vнrh~ocgkwv0c}u烊Bؘ;8ËgduwYs#+)mmL:O85-&,`os?ï9wv{{s<>RJ""(jg{78888wtvov1,KQ o.MH%JHJ眎#"_WnɭQ1|`vowXZ;ٴq2>V&LQLO_:-8Ļy_t婫W=19w-G fB`ݾP$B*@@U] A'0{f@彃êtf?9mDvƵ{d09܁Ψv[[= o{e5\xpm%gdʘ"n۸uV+ŒNy{ʣyQĭ#I7HmM3\Ǻ*\~xgo:ћ1DuC:U_GC7WօVB`D9;8:ϧyయe1`SׯJǎt(kTii_޻~wMitـDN5;P^^MFyqh:98::" $(Sԭ}`po۬Yju9$J  NPP׾^yg7nLN&?lwEG+ '##o7M7WS'GSb|hǁA)e3ޝGU] 0 C(A+ٲ,bb N$wv_+5NWw_֍tBe<5M@ {o?)]v'qQz"&|4HƐT+_}t'2EɁ )BIa/KO]/XG)Yo_xwo^VWyzQt U;Q։N'-j{W.J/éj/.,[`eqGY(0 t$i4px`yy%Mu}l~.8gϟɫbt8/|s)88M$RJDcau\8:tfaqӗN.?۷N[o%#罐 Lc==`&vuŏR+ҝS`TUӬ>ޝ݋wa:g4NS -!0֢ےbjOW/_xB.|w*({&Fm|` Xqnn{F:ZS~X:[3+ F*˻"vgNi!ePG2(gVN_?__RD-^Zg(jLDJVi! ,JE{!0#Uu 3Ky x|4uNGRJm@SOç:y$NTlON uOά|G^UU>ZF)cj!&Ӊ*y"PJ@c)AR30sf=Gɥ,ͦImLEՔ!: xzJ͝rѝnUm۲N| VuQjRJ23 |R#29됁XDT(}D@@y:cB =J}ȔMmRF}MpToܾ+)Rp?37"3 K%tDVOTRB9HB8? Yb'R{S U`<+,,~hwf"!ToNU($K)bD<64UDGY#FȰgdJ "~'SF'Z#,OARD,Bg=إn!XiEq@(4&P`4RH9P>Eiєi+inw>=rkFQֽAOhc}#sQ'q W9c}N cm~=3ΗSIxRc (2xRQ<7;R ^+)Um!}ft*n !|rzR:/,8 CD)!;[["Nqs4AFc=oE`:e$)T QJRx)LDYTC]{ODNxk1z{{^fƙA9d86&Zk-'E:w‹Q~Zg1`.Ѿ5u 6VODR:.EJZYUkS(UUy88rb䣏9{XY[ke]9wQJn (CP$ibwD\j-~QvPT)@ .QGёcOBx@(/Q=ԇ{̠dt4_L3_W>ևO?Nӟ޼yʕg}w/_{擪 "}IENDB`/tfѭ8Lwb"q~܂dKu=(unSelectable Script@w.;]kI 忞@.;]kI 忞@"SubObject*Encapsulated objects"xsO@eHɎ8 5D4W}@O{4W}@O{$ Owner4Owner of the Encapsulator$ XO-(XFҦV(XFҦV"LE2Data$LE2 Data for node >g'JNjn*p"sOTK?JFܟ5TK?JFܟ5ActiveActive flag -h-1OSM n-1OSM n"LayoutLayout 럆L<_ї"(XFҦV>g'JNjn*pF@*DBb@ b@?TK?JFܟ5 -1OSM n 럆L<_їZDefault GFʠN=p1 }}TK?JFܟ5Z`Ez]UOͽ>fdN*5Ւhp8 TK?JFܟ5Z`Ez]UOOˁ CRih[0p PActivity.Run("%THIS_NAME%" + "/lockIt")Lock ItZ`Ez]UOOˁ CRih[0Pp TActivity.Run("%THIS_NAME%" + "/unlockIt")Unlock ItZ`Ez]UOOˁ CRih[Ppp \Activity.Run("%THIS_NAME%" + "/clearTheList")Unlock AllZ`Ez]UO\ ͤ*EgbĬ\ theData N22AEHM'2AEHM'LE2Data$LE2 Data for node >g'JNjn*p 2ceZU@䑧rceZU@䑧r$_scriptData*Internal Script data [җJs@ %xsO4W}@O{$@w8(XFҦV#.;]kI 忞@"X7-1OSM n#M8h-[I0tHY8h-[I0tHYBtheList R1TKNXIBiN/xE~iN/xE~BprevSelectionBSFrkI@Mt\SFrkI@Mt\DfirstTime DM 2AEHM'>g'JNjn*pFBC`@0@?ceZU@䑧r[җJs@ NewObject// OnComputeOutputs // Called to compute values of all output connectors function OnComputeOutputs(params) { var firstTime = params.ConValue('firstTime'); // TODO: put your computation here // var theList = System.CreateDO('Common Data Package/String Array Data'); // params.ConValue('theList') = theList // params.ConValue('prevSelection') = ... } NScript Object Package/jScript languageLCommon Data Package/String Array DatatheList R1TKNXIͽ8h-[I0tHYstringprevSelectioniN/xE~booleanfirstTime SFrkI@Mt\4W}@O{iN/xE~(XFҦV>g'JNjn*pFkDCb@@P@?8h-[I0tHYSFrkI@Mt\ .;]kI 忞@-1OSM n 럆L<_ї(48@J g'JNjn*pLE2Data, 2J@#QLJ@#QLLE2Data$LE2 Data for node >g'JNjn*pLE2Data, 3 i-1OSM n# 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ * NewCommand // processIt // // april 30 2008 // // by Clinton Reese // www.clintons3d.com // // check to see if new selection is allowed // if not allowed the previous selection will be selected // called from the Selection Change Event node // // // Execute // Called to execute the command function Execute(params) { owner = System.ThisOwner(); //if freshly loaded then clear the list and initialize the previous selection if(Node.Value(owner + "/theData","firstTime")) { a = System.CreateDO('Common Data Package/String Array Data'); a.Clear(); Node.Value(owner + "/theData","theList") = a; curSel = Node.FirstSelected(); Node.Value(owner + "/theData","prevSelection") = curSel; Node.Value(owner + "/theData","firstTime") = false; } //get list of locked items //if current selection is in the list then select previous item a = System.CreateDO('Common Data Package/String Array Data'); a = Node.Value(owner + "/theData","theList"); //get size of list sz = a.GetSize(); if(sz != 0) { curSel = Node.FirstSelected(); i = 0; while(i<sz) { item = a.GetAt(i); //match found so select previous item if(item==curSel) { curSel = Node.Value(owner + "/theData","prevSelection"); Node.Select(curSel); return; } i++; } } //no match found so save selection as previous selection curSel = Node.FirstSelected(); Node.Value(owner + "/theData","prevSelection") = curSel; } NScript Object Package/jScript language~൱D@ j#^c4W}@O{(XFҦV>g'JNjn*pn@(DBb@H@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_ї˂ControlOˁ CRih[ Cq 8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0 Cq:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@HoxeSwCћ"-<.SelectionChangeEvent01-TK?JFܟ5sO@à2|=BynjhݫZz@Ho4W}@O{$@wP(XFҦV"xP-1OSM n"T: asvHhTG asvHhTG$NodeIconNodeIcon eSBgc$2|=Bynj(XFҦV>g'JNjn*pFCBf@H@? asvHhTGeSBgcp 9sJZ@rVey0x]w]u׶nnVm%jW H:PCPPGbb28; gfı {`;J&bW]2㙓s}}jw{oHss~~wp>|cPbժz:8rN?ĉq's,[0m 0b03g>{{~=nm5/]A]B,fBSS3o?g?={_S_ jcЕU> 6 LD @< n@pa =w PJ/.8h0pl,Kj9s6l~+;U?+yU!e!X҂zp{& Pj}Y3gmWzwhlv^C`E)JZQ/΁khӘY0vd7 ؿ0^ϟGq5әXlPY:@J&ρTq$(`ǐ3NݨF Qc}zl>0D`Yxeh#?g!Xvc0+h46ړ8!N?=Ni<øF0)/iic@{Qr^U| QД[1?SB]̦M[Q7F]ey uBe:{[J"D GA< =1O0B*h?DgpN~Gz C.0T@T`P"C?׏_ʹ(`LcF]̳a77ϓ*Nc Ɣϣo8k2Cm Ѩ#GnsL z4w_ݵ n !br7> cC9p㞿ᰈz+=<]F]XC(6b#B#C U10q2ر yhh%.s9&ghk3Ns!AIB]XQuuu0wֽ~<  YcxC_{{` "ymvt>n.ܶXpqAA@g{\)\x s ( 48X$1U!hnjի"WW ”XrIZR6 ~C *= ch`2D76573WsLlǘ-z/qQg@,?U wQ_Wmhmj` Nsc˖(ߡc|"H5k#4%o VNԁ0th-̚u8pď!2Ϧ\Wq`<Y֧C> KRy<dOa,E_x5ɎwƲKE#<9v|#64cl,_*ցX_xz.^g%[.'$AuUԭSo6h@]pOCtL?2nLӠ/c y Q= "&-Zw\&gq}6g{g|>ۀº@+b`"w<0mBcp؂PQz ZW lAК{_M|"okt)6Y]y3A7bܳ8 B޸fzgOA\m=9#7t\0x Tyڅjqںf׀6@F;{ %k!&\K{u(g+% Tmz`XS@ =a^!(ԧh~戎>y$IP]]56]P=f] I{2nH1@o/Kʾ5h+{Akfx.Ӟrtz?smhS+νj b &S 7_0kڹS({m9hc࠿'_*j dOgO1{\>DmoBts\{Pr+e/2\̣)>q Q";҂"/@棽^n:\qGomq}`0ǁ*]yL}wc|Mڕ{5z.b|c3:rٕ|$g?GNaʾ}o(H۟_A#_wUGz]뎣WSٓ/ Tˠ]TR'&E5 P/hcI7Nϼi<^ } F;"t(Jq>\nr\O^eO;u~ӧ8m5w>K '%>z{` r=Te/=z ?~kP-9@@au[%|M}z0*ңm)Ƶ#ŗh^/Y\9Ak/Fh\{ <@(woU+Ƹ"߅: 0gǼ@aT"dWB埁ތ򧽅&@H1v=Ν{! qmSW Yq>q-H${eHnj=A E&u`hy]_0qd%&O 1 V$$,ȁߢ/[vr 7޸ @34O7ָxkYxZ;끆'=,] ځU(k\|}D0uh'gϢBp}.$_a;`6z-FiOdP7{Š->hFX7b0I06l`-x`HO ٠>R5iN8tb >.|K7oa`>0 &5 *~{9O7'ꬄ/`3f̂HB.ZjWhsR$h/.J: 2tSo\> ڳK` P'{@N}|`Yu+ NB<փ{_t^s|M@8*\L01.}/ s e/PQ$<ѢoF !~ݕ 0zt=9R|< '^OJe-oŮt ƢP?zLQ}!Z?T=Jy@߻;:Oeԁ@F فbӁ_X‘j}v䇐c.U| $ہ~b{`8ݾvvW[jf"QZ<](Ĭ#u`(_@Æ C@xPSS[ݣqF+%wO2(&_@ @z[gh/vkke[lgkZv qu c$I:57X|!Z];"Rk,8wDk+YKϋRG"rN>N?f3JrMk|*(|A2=~?/4;pg8"YS:)FNkPu5J*|!ygD WWQ+-1S;Nvj`U hn:@@~A.9u?hg>LK1,Z*!pBM(̞07@?%gʹB;1b$;ޙd,@ l{IBM,7x׈vf- )?@=HC by+ꟳwڍlv;ީpvwfΜ9;KI ;AgwD: A:ƾq؆сxU@q.|FN>'/>Ȼt>cc9.{!([@Oy; *"0ԟa|ݔç;w;ݗ(RL?[t6œ#ňB{?ܸ N±1S@##[jPUY X-jlN'a߾] H2Owma%fԁ9DtM y-@*Q1C&;i;3f#,{uvj@8sw 5]т >̳t'2 'l'򸝜yf!lPϑXNv7?u&g#`# }^˹3455eYZxTߣ97o b<J t:y^AflPWKRO-ux͝/[s9wli77Os_Fz0Gt { G)j3Rч]ĥϭXs9w :~S#{ӦS2퀛'&zxV#fsr? ͓kn {a'.z~}ev3vA;0tiGW~8){h qtT ݉>38!فh^4?6z{Ӳ?>6Crxt!#vM;RөSezQҁqfPEͩ/%G_Ӳ'=Xx=뻧 ;8y>G*&t8># zձˤeO.iP_jv Q+0?ԁGT]79w;,dڵZ"7(Nb4[r{NEt[kAN쀞ԁ(SZggu0߹{΁4u/X!^iYv#<;LHn 3=|n߅ ʼnztq,P":E۷%4E_F?3@ɿWʸ/8>ŭ^bzN  ZSs\b7Z=,H+0{j<Y9U?/_z+_FiC>ٳ#-;!=YǶ/^a耉> :@;< ڙO=<|_t23 ޗ}~耩n O̽Q?ْwTVeLes|w01gvT+ӈ6y^Js^ޠglA[fZs9>o1{[G]/uQJmO{\A-H)v1| %wrǧU{>ҸcmH@H<}ziՐς|c ^MfHVg=va˜/rw:E;`;Ae?&zx^=dfa\w5>>ݣw$#ڗ}!c5mCv ҹG/KtWta){)y}VXF('dgӧ)'du3"?w (Wi?hf19oNOα5W9ί2?\zWLJ>| TK?JFܟ5 -1OSM n 럆L<_їvDefault GFʠN=xg1 }}TK?JFܟ5Z`Ez]UOͽ>fdN*5Ւhg8 TK?JFܟ5Z`Ez]UO GFʠN= g= }} Control Out2|=BynjZ`Ez]UOz@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ 0NewCommand// lockIt // // april 30 2008 // // by Clinton Reese // www.clintons3d.com // // add current selection to locked items list // // Execute // Called to execute the command function Execute(params) { // first make sure item not already in list owner = System.ThisOwner(); a = System.CreateDO('Common Data Package/String Array Data'); a = Node.Value(owner + "/theData","theList"); //get size of list sz = a.GetSize(); if(sz != 0) { curSel = Node.FirstSelected(); for(i=0;i<sz;i++) { item = a.GetAt(i); if(item==curSel) { return; } } } // add current selection to the list tempList = System.CreateDO('Common Data Package/String Array Data'); tempList = Node.Value(owner + "/theData","theList"); curSel = Node.FirstSelected(); //check for self - do not lock the script item if(curSel==owner) return; tempList.Add(curSel); Node.Value(owner + "/theData","theList") = tempList; } NScript Object Package/jScript languageTw4W}@O{(XFҦV>g'JNjn*pn@'DC`@@P@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_ї˂ControlOˁ CRih[ Cq 8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0 Cq:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand6// unlockIt // // april 30 2008 // // by Clinton Reese // www.clintons3d.com // // remove items from list // deactivate the lock and setup to listen for the selection to unlock // // Execute // Called to execute the command function Execute(params) { // TODO: put your action code here owner = System.ThisOwner(); //deactivate locks Node.Value(owner,"Active") = false; //send help message if possible //activate wait for selection change Node.Value(owner + "/SelectionChangeEvent02","Active") = true; } NScript Object Package/jScript language~൱D̾d#^c4W}@O{(XFҦV>g'JNjn*pn@(DjC`@@P@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_ї˂ControlOˁ CRih[ Cq 8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0 Cq:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand<// clearTheList // // april 30 2008 // // by Clinton Reese // www.clintons3d.com // // remove all items from the locked list // // Execute // Called to execute the command function Execute(params) { // TODO: put your action code here owner = System.ThisOwner(); a = System.CreateDO('Common Data Package/String Array Data'); a.Clear(); Node.Value(owner + "/theData","theList") = a; } NScript Object Package/jScript language~൱DB#^c4W}@O{(XFҦV>g'JNjn*pn)DC`@@P@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_ї˂ControlOˁ CRih[ Cq 8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0 Cq:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@HoxeSwCћ"-$.SelectionChangeEvent02K\TK?JFܟ5P2|=Bynjpz@Ho8 4W}@O{$@wpz(XFҦV"(-1OSM n" asvHhTG$2|=Bynj(XFҦV>g'JNjn*pFbDCf@H@? asvHhTGeSBgc8 9sJZ@rVeyTK?JFܟ5 -1OSM n 럆L<_їvDefault GFʠN=x(A1 }}TK?JFܟ5Z`Ez]UOͽ>fdN*5Ւh(A8 TK?JFܟ5Z`Ez]UO GFʠN= (A= }} Control Out2|=BynjZ`Ez]UOz@Ho48@J g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand// removeIt // // april 30 2008 // // by Clinton Reese // www.clintons3d.com // // wait for next selection and remove it from the list of locked items // reactive locks after item is removed // activated by the removeIt script // // Execute // Called to execute the command function Execute(params) { owner = System.ThisOwner(); //stop waiting for selection to remove Node.Value(owner + "/SelectionChangeEvent02","Active") = false; a = System.CreateDO('Common Data Package/String Array Data'); a = Node.Value(owner + "/theData","theList"); //get size of list sz = a.GetSize(); if(sz != 0) { curSel = Node.FirstSelected(); i = 0; while(i<sz) { item = a.GetAt(i); if(item==curSel) { a.RemoveAt(i); Node.Value(owner + "/theData","theList") = a; break; } i++; } } //reactivate locking system Node.Value(owner,"Active") = true; //send help message if possible } NScript Object Package/jScript language~൱D_#^c4W}@O{(XFҦV>g'JNjn*pnDCb@H@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_ї˂ControlOˁ CRih[ Cq 8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0 Cq:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho8ʯȥJH|o7 gH]kDwP@~`d8pM*#ͺOY~2/tfѭ8Lwb"q~