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=$parenting scripts Ud.;]kI 忞@.;]kI 忞@"SubObject*Encapsulated objects"\o4W}@O{4W}@O{$ Owner4Owner of the Encapsulator$p ؅(XFҦV(XFҦV"LE2Data$LE2 Data for node >g'JNjn*p"P -1OSM n-1OSM n"LayoutLayout 럆L<_ї"(XFҦV>g'JNjn*pFNDCb@@^@?-1OSM n 럆L<_їˮOˁ CRih[( :(PActivity.Run('%THIS_NAME%' + '/Parent')ParentZ`Ez]UOOˁ CRih[0X :(TActivity.Run('%THIS_NAME%' + '/UnParent')UnParentZ`Ez]UO 48@J g'JNjn*p[ceZU@䑧rceZU@䑧r$_scriptData*Internal Script data [җJs@ %\4W}@O{$ Ud](XFҦVLE2Data, 1#]z@Hoz@Ho Control InTransitionInX^MT^RwL~YYTMT^RwL~YYTޢLE2Data$LE2 Data for node >g'JNjn*pLE2Data, 2 _J@#QLJ@#QLLE2Data$LE2 Data for node >g'JNjn*pLE2Data, 3_-1OSM n# 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ NewCommand(// // UnParenter Script // // by Clinton Reese // January 30 2008 // // use: select the object to unparent and run this script // // Execute // Called to execute the command function Execute(params) { sel = Node.Selection(); //list of selected nodes numsel = Node.SelectionLength(sel); // number of selected nodes worldMat = System.CreateDO("Math Package/Matrix Float Data"); for (i = 0; i < numsel; i++) { theChild = Node.SelectionGetAt(sel, i); //save world position worldMat = Node.Value(theChild,"WldMatrix"); //disconnect the parent from the child Node.DisconnectAllInputs(theChild,"OwnerMatrix"); //reset the owner matrix - no roation, translation, scale=1 Node.ConReset(theChild,"OwnerMatrix"); //set back into position in world space Node.Value(theChild,"Matrix") = worldMat; } //Node.Value("Status Line","Model") ="children unparented"; } NScript Object Package/jScript language~൱D#^c4W}@O{(XFҦV>g'JNjn*pnYDPB`@@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 // // Parenter Script // // by Clinton Reese // January 29 2008 // // use: control select items in the scene choosing the parent item last // then execute this script // the children's owner matrix should be in a reset state before parenting // // Execute // Called to execute the command function Execute(params) { sel = Node.Selection(); //list of selected nodes numsel = Node.SelectionLength(sel); // number of selected nodes theParent = Node.SelectionGetAt(sel, numsel-1); //last selected item will be the parent if(numsel < 2) { //Node.Value("Status Line","Model") = "please select at least one child then the parent object"; return; } parentMat = System.CreateDO("Math Package/Matrix Float Data"); parentMatInv = System.CreateDO("Math Package/Matrix Float Data"); childMat = System.CreateDO("Math Package/Matrix Float Data"); parentMat = Node.Value(theParent,"WldMatrix"); parentMatInv = parentMat.Invert(); for (i = 0; i < numsel-1; i++) { //prepare child for parenting //get the child matrix and multiply it by the parent inverted matrix theChild = Node.SelectionGetAt(sel, i); childMat = Node.Value(theChild,"WldMatrix"); childMat.Mult(parentMatInv); Node.Value(theChild,"Matrix") = childMat; //parenting step Node.ConnectTo(theParent, "WldMatrix", theChild, "OwnerMatrix"); } //select parent object //Node.Select(""); Node.Select(theParent); //Node.Value("Status Line","Model") ="children parented to " + theParent; } NScript Object Package/jScript language@?>&4W}@O{(XFҦV>g'JNjn*pnDXB`@@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@Ho8ʯȥJH|o7 gH]kDwP@~`d8pM*#ͺOY~2/tfѭ8Lwb"q)A