gH]kDwP$Rosetta Beta 7.61[VS_O93YJClinton Reese, Clintons 3D Creations`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=Ć 4install Unreal T3D Button: .;]kI 忞@.;]kI 忞@"SubObject*Encapsulated objects"? _ j (3v; 4W}@O{4W}@O{$ Owner4Owner of the Encapsulator$(XFҦV(XFҦV"LE2Data$LE2 Data for node >g'JNjn*p" zFAa| zFAa|DhelpText\vRm)EC!avRm)EC!aD leftClickScript\1V {E!Y1V {E!YD name\!K0}q!K0}qD"rightClickScript\-1OSM n-1OSM n"LayoutLayout 럆L<_ї"1V {E!YsayHello!K0}q2System.Alert("goodbye");(XFҦV>g'JNjn*pF%DBk@@V@AB?vRm)EC!a<System.Alert("hello there!"); zFAa|say hello-1OSM n 럆L<_їˆDefaultOˁ CRih[ }}LActivity.Run('%THIS_NAME%' + "/doIt")8install buttons and scriptsZ`Ez]UO GFʠN= 81}}September 5 2011Z`Ez]UO}}|) // `._E#ބ6 CustomFrame(> .;]kI 忞@"S ? 4W}@O{$*O΢C}*O΢C} WinIDWindow ID@ -pϗO 0)t-pϗO 0)PositionShelf Position mz!OHwc@ @ >-MD'zZt>-MD'zZRectangle"Screen Rectangle THj6F 2s*A RÒGbDeC tRÒGbDeC  WidthWindow width@ A [FB%n*jt[FB%n*jHeightWindow height@  [GDJM [GDJMMin Width$Min. Window width%]GJ7ψ%]GJ7ψMin Height&Min. Window height^^Dy^^DyMax Width$Max. Window widthv43N tv43N tMax Height&Max. Window height~൱D@ j#^c~൱D@ j#^cMaximized(Window Is Maximized 9@'s9@'sRootNodeRootNode{Q !aOt {Q !aOt  TitleTitle Text6*Mv46*Mv4View Index$View window indexf$I `7f$I `7Frame TypeFrame Typej^G@!,j^G@!,"ViewersViewers array 2bOdA)f "I)LL !I)LL ! Def1D Default 1D GUID8M0cry8M0cry Def2D Default 2D GUIDF L$3F L$3 Def3D Default 3D GUIDobFFJL}obFFJL}SnappedTo$Snapped To WindowBXPjKɸtEBXPjKɸtE SnappedToTarget@Snapped To Window Target CornerkJHx(V@WkJHx(V@W SnappedToSource@Snapped To Window Source CornerKTLA7~fKTLA7~f"SnappedToOffsetX6Snapped To Window Offset XK8Y8O#=gtMK8Y8O#=gtM"SnappedToOffsetY6Snapped To Window Offset Ymk~_Lb.mk~_Lb.SnappedToWidth0Snapped To Window Width|7EId |7EId  SnappedToHeight2Snapped To Window HeightKXtO LKXtO L,StartSnappedToOffsetXBStart Snapped To Window Offset XVG))jHETVG))jHET,StartSnappedToOffsetYBStart Snapped To Window Offset Y?V{N7l?V{N7lSnappedToRatio,Snapped To Ratio Mode 86*n^HD9t 86*n^HD9t OwnedByOwned By|_ D|_ DTabsAsButtons Tabs As Buttons _N>G1_N>G1HiddenHidden Flag \q^2FII3w\q^2FII3wPreference,View Preference Panel >=жaMpT>=жaMpT&HideDockedTitlebarJHide Title bar when window is docked N'D)L-N'D)L-MinimizedBHJWindow Is Minimized into Blue Handle ϕ`&FSx9wϕ`&FSx9wSizeLockPrevent horizontal and/or vertical size change. 0x01 - horizontal, 0x02 - vertical˽OS˽OSDispTitleText,Display Titlebar Text Ī8mݧC>!7Ī8mݧC>!7SmallerTabs*Display smaller Tabs (XFҦV"&BXPjKɸtEkJHx(V@W|_ D8M0cryN{485B725E-A69D-4AD5-A876-B3BBA72D2C0A}mk~_Lb.[FB%n*jRÒGbDeC 1 [GDJM6*Mv4K8Y8O#=gtM\q^2FII3w{Q !aOt f$I `7v43N t I)LL !obFFJL}Ī8mݧC>!7^^Dy(XFҦV>g'JNjn*pFBCX@1@?*O΢C}N{5FDDFE6E-518F-464A-B4B9-8D24B556E36C}9@'s_N>G1-pϗO 0)mz!OHwc ˽OSF L$3>=жaMpTϕ`&FSx9w>-MD'zZ%]GJ7ψj^G@!,2bOdA)f 6^r[HJv-, ^r[HJv-, KXtO LVG))jHET?V{N7l ~൱D@ j#^cKTLA7~f|7EId 86*n^HD9t N'D)L-^r[HJv-,  Toolbar.;]kI 忞@"S 4W}@O{$n_<&KES Qn_<&KES Q NameItem nameo(K ]p do(K ]p dHelpTextHelp text8Cechg8Cechg RowsToolbar RowsNL {NL {$Dimension$Toolbar dimension$Z_IFL!OSZ_IFL!OSHorizontal Horizontal Flag .S)A2UЍc.S)A2UЍcIsSubToolbar$IsSubToolbar Flag =JM@hM Q3=JM@hM Q3IsImportant2IsImportant Toolbar Flag .UuwO e.UuwO eIDToolbar ID'0#ԪC'X/9}'0#ԪC'X/9}$ IndexItem Index$_N>G1JdWJc~JdWJc~PrototypePrototype name<9BH@b\<9BH@b\IsMinimizedPTrue/False flag if toolbar is minimized m O1Wwm O1Ww$IsAspectT(Aspect Toolbar Flag $(XFҦV".UuwO e'0#ԪC'X/9}=JM@hM Q3 m O1Ww(XFҦV>g'JNjn*pFBCb@ f@?NL {Z_IFL!OS _N>G18CechgJdWJc~n_<&KES Q.S)A2UЍc o(K ]p d<9BH@b\ R/$ķKniaW$  unrealT3dButton'0#ԪC'X/9}]8teO?s]8teO?s"MaxItemTxtHeight.Maximal item text size% sH?DC sH?DCTagTag%IlfāA>ˁwIlfāA>ˁwTagAliasTag Alias%/ru|GF0/ru|GF0AgentIDUpdate agentID(XFҦVLE2Data, 1"-1OSM n".;]kI 忞@"_ 4W}@O{$n_<&KES Qo(K ]p dQm6l3Ll/V^Qm6l3Ll/V^CommandAction commandN="QEj%:N="QEj%:RClickCommand,RClick Action Command$ܿORE bi$ܿORE biPreview2D8Item preview 2D resource id*S]?G[~x;*S]?G[~x;Preview3D8Item preview 3D resource idSr)B8Sr)B8Package"Package class idDNOQsP'ѭDNOQsP'ѭBitmap.Item preview 3D bitmap eSBgciDsL[wiDsL[wRadio Group(Radio buttons group4E*4E*ControlID2D&User Control ID 2Dh>ǑJ]@<h>ǑJ]@<ControlID3D&User Control ID 3D+fyOA7XC+fyOA7XC MaxItemBmpWidth2Maximal item bitmap sizeTl@fC.^&GZTl@fC.^&GZ"MaxItemBmpHeight2Maximal item bitmap sizeh0OY~ C h0OY~ C  MaxItemTxtWidth.Maximal item text size%?Aυ D)7t?Aυ D)7tGrayPercentxGray icon about specified percents if it is not highlighted][D+Iv(][D+Iv( MenuAct As Menu 8{Nm(!8{Nm(!IsMenuButtonIs Menu Button ko649蝣ijTYY-,qDyoeBJj5!9~5-mSuuuFww|^^^v6VQY/'9&8jWa2Yd_sps݃u%BU (eBQRRBgDBxھIGaSgTQBz,õTP^%zR=&P* <2.o}汎ӂjy4B*v/}(;uF_蟠-ks.OMyyySKjO1s!1hr>Fc +PJJʭ7sͣl!>ggD> =mr^ |GM%8=y3)zXͣi4veg)gdwSm1JL{K<$ցڬby?Y}kCh}w]m/e?MNT?@K) R f{7'1zTЮ5gv_&Ok["{+OQQC1A k9E')ZiDsGaa Eio^ q{1_?b(^SHj9u/QYۇfNNMJJTKKKḃd(>} e{~g, `q233edd C m#Xqz ' qؿg+0fi%u$"̏ٿ;Voz.M sܭU?WT48@J g'JNjn*pceZU@䑧rceZU@䑧r$_scriptData*Internal Script data [җJs@ %j 4W}@O{$(XFҦVLE2Data, 1#J@#QLJ@#QLLE2Data$LE2 Data for node >g'JNjn*pLE2Data, 3MT^RwL~YYTMT^RwL~YYTޢLE2Data$LE2 Data for node >g'JNjn*pLE2Data, 22|=Bynj2|=Bynj Control OutTransitionOutz@Hoz@Ho Control InTransitionIn 2|=Bynj2AEHM'>g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ j NewCommand // Execute // Called to execute the command function Execute(params) { owner = System.ThisOwner(); button1 = "unrealT3dButton"; theScript = "unreal t3d import"; // if(Node.Exists("/Project/Windows Manager Space/CustomFrame/Toolbar/" + button1)) Node.Delete("/Project/Windows Manager Space/CustomFrame/Toolbar/" + button1); //check for and create customframe if(!Node.Exists("/Project/Windows Manager Space/CustomFrame")) Node.Copy(owner + "/CustomFrame","/Project/Windows Manager Space"); //copy buttons to custom frame oldButt = Node.Copy(owner + "/" + button1,"/Project/Windows Manager Space/CustomFrame/Toolbar"); //copy script to custom commands //create CustomCommands if(!Node.Exists("/Scripts/CustomCommands")) { temp = Node.Create("Kernel Package/Object","/Scripts"); custcom = Node.Rename(temp,"CustomCommands"); } if(Node.Exists("/Scripts/CustomCommands/" + theScript)) Node.Delete("/Scripts/CustomCommands/" + theScript); Node.Copy(owner + "/" + theScript,"/Scripts/CustomCommands"); //activate it WindowsManager.Activate(); WindowsManager.UpdateWindowsStructure(); //reset the toolbar //1D Aspect WindowsManager.SetWindowAspect('/Project/Windows Manager Space/CustomFrame', 1); //2D Aspect WindowsManager.SetWindowAspect('/Project/Windows Manager Space/CustomFrame', 2); } NScript Object Package/jScript language~൱D*#^c4W}@O{(XFҦV>g'JNjn*pn7C`b@H@2|=Bynj|?z@Hoۙ>?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їjControlOˁ CRih[ Ca8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0 Ca:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho܂dKu=/$unreal t3d import( v.;]kI 忞@"(vv/v:v(3v4W}@O{$(XFҦV"2vwL݃wL݃DfilenameT(v-1OSM n"vGaZBGaZBDbrushB T( v(vpɜ,IɶIpɜ,IɶID(externalstaticmeshB T( vvrg'JNjn*pF\D`k@x@BA?MC¦pgvM4`j YMJ@O=%3-Q?̉C1ԃZ\Lcb@n~ z/ GaZB pɜ,IɶI г˂6FBXBF{Gz?-1OSM n 럆L<_їcDefaultLights, GFʠN=p n1 }}wL݃Z`Ez]UO1釥GP>a0 n0 }}wL݃Z`Ez]UOOˁ CRih[0H n}}ZActivity.Run('%THIS_NAME%' + "/import_t3d");importZ`Ez]UO#nKSM2p n$}}wL݃Z`Ez]UO GFʠN=Pxh n= }} import scaleǑӉmX@Z)EJZ`Ez]UO1釥GP>axPh nl}}"TahomaP]FǑӉmX@Z)EJZ`Ez]UO GFʠN=hxx n> }} import lights<]qWGe(Z`Ez]UOͽ>fdN*5Ւhxhx n, }}<]qWGe(Z`Ez]UO GFʠN=x nG }}flatten brush booleansrfdN*5Ւhx n, }}rfdN*5Ւhx n, }}Lcb@n~ z/Z`Ez]UO GFʠN=x nD }}externalstaticmeshBpɜ,IɶIZ`Ez]UOͽ>fdN*5Ւhx n, }}pɜ,IɶIȱZ`Ez]UO GFʠN=xx n? }}import brushesGaZBZ`Ez]UOͽ>fdN*5Ւhxx n, }}GaZBZ`Ez]UO GFʠN=x nE }}import skeletal meshIj7KO\X;7CZ`Ez]UOͽ>fdN*5Ւhx n, }}Ij7KO\X;7CZ`Ez]UO GFʠN=x n? }}import volumesgvM4`jZ`Ez]UOͽ>fdN*5Ւhx n, }}gvM4`jZ`Ez]UO GFʠN=x n? }}import kactors)Bc&.Z`Ez]UOͽ>fdN*5Ւhx n, }})Bc&.Z`Ez]UO GFʠN=` n9 }}new mesh̉C1ԃZ\Z`Ez]UO1釥GP>a  n0 }}̉C1ԃZ\Z`Ez]UO GFʠN= `8 n9 }}old meshMC¦pZ`Ez]UO1釥GP>a8H n0 }}MC¦pZ`Ez]UOOˁ CRih[` n}}vNode.Value('%THIS_NAME%',"source") = Node.Firstselected();set sourceZ`Ez]UOOˁ CRih[` 8 n}}Node.Value('%THIS_NAME%',"destination") = Node.Firstselected(); set destinationZ`Ez]UOOˁ CRih[H` n}}ZActivity.Run('%THIS_NAME%' + "/replacemesh")replace meshZ`Ez]UO AϠOsX n5}}Mesh ReplacementZ`Ez]UO GFʠN= `8 n9 }}Constant"J_Z`Ez]UO1釥GP>ax 8 n0 }}"J_Z`Ez]UO GFʠN=8`P n7 }}Linearʊ׃~C`]=Z`Ez]UO1釥GP>ax8P n0 }}ʊ׃~C`]=Z`Ez]UO GFʠN=P`h n: }} QuadraticYMJ@O=%3-Z`Ez]UO1釥GP>axPh n0 }}YMJ@O=%3-Z`Ez]UO GFʠN=h` n: }} Thresholdг˂6FBXBFZ`Ez]UO1釥GP>axh n0 }}г˂6FBXBFZ`Ez]UO AϠOsX n<}}Attenuation AdjustmentsZ`Ez]UOOˁ CRih[ n}}rActivity.Run('%THIS_NAME%' + "/SetAllLightsAttenuation") ApplyZ`Ez]UOPN AnqH` x8 nB}}"J_ A8Z`Ez]UOPN AnqH`8xP nB}}ʊ׃~C`]= A8Z`Ez]UOPN AnqH`Pxh nB}}YMJ@O=%3- A8Z`Ez]UOPN AnqH`hx nB}}г˂6FBXBF A8Z`Ez]UO}}}}ʊ׃~C`]=rg'JNjn*p(vK#uiL$tK#uiL$AlphaTestAlphaTest :KrbSx(uv,L?D}t,L?D}AlphaTestValueAlphaTestValue(uJ.HE /*gA%%u5E b>g'JNjn*pFCPAb@t@?4W}@O{фNMTND DY08?(XFҦV>g'JNjn*pFaDb@ l@?VIGó)F,L?D}.F_P#S:0@JDEBlk?9syEGi?oGix` $`KM?3Q=eSBgc \C:\Users\Clint\Pictures\UDKdefaultDiffuse.bmphnɐJPhxAN@ C6$ IEo=ah-h[|yM ̹1wdf0%\VVB7;KP`;IZ`Ez]UO GFʠN=0P@1 }}VIGó)FZ`Ez]UO1釥GP>aP0@0 }}VIGó)FZ`Ez]UO GFʠN=@PP1 }}S:0@JDZ`Ez]UO1釥GP>aP@P0 }}S:0@JDZ`Ez]UO GFʠN=PP`1 }}S!jJHޛQZ`Ez]UO1釥GP>aPP`0 }}S!jJHޛQZ`Ez]UO GFʠN=`Pp1 }}9syEGiZ`Ez]UO1釥GP>aP`p0 }}9syEGiZ`Ez]UO GFʠN=pf1 }}.F_P#Z`Ez]UO}4կMj=+fp0.F_P#}} GFʠN=P1 }}8VnZN:W pZ`Ez]UO1釥GP>aP0 }}8VnZN:W pZ`Ez]UO GFʠN=f@1 }}`KM?3Q=Z`Ez]UOٓ PM>1wdf@%\VV`KM?3Q=Z`Ez]UO GFʠN=@PP1 }}oGix` $Z`Ez]UO1釥GP>aP@P0 }}oGix` $Z`Ez]UO GFʠN=PP`1 }}фNMTNZ`Ez]UO1釥GP>aPP`0 }}фNMTNZ`Ez]UO GFʠN=`Pp1 }}D DY08Z`Ez]UO1釥GP>aP`p0 }}D DY08Z`Ez]UO GFʠN=pP1 }}EBlkZ`Ez]UO1釥GP>aPp0 }}EBlkZ`Ez]UO GFʠN=P1 }}J.HE /*gZ`Ez]UO1釥GP>aP0 }}J.HE /*gZ`Ez]UO GFʠN=P1 }}ll-#Ez k^Z`Ez]UO1釥GP>aP0 }}ll-#Ez k^Z`Ez]UO GFʠN=f1 }}.F_P#Z`Ez]UO}4կMj=+f0.F_P#}}8VnZN:W p?B7;KP`;IeSBgc \C:\Users\Clint\Pictures\UDKdefaultNormal3.bmphnɐJPixAj@E!] $PBF -1鮄CP\!Tib7O4[(D|I$mDbR%i|_1.^+l/:c{p~?x9h>-6`G<>2~ yݖn|;ew:n۔o"?ߦfnp?'go??[䷾~~?Eǿ?}|??E?vun 5??o?__Y????ڧYQQ*&оx>^ǻSN|?/o؄TxO:8/UĶ9O::_KV9ҽ_Y[_/գ&2??wug0cr29TySsGa_rs_́`?wsgwKsAKǿE>i?3_=?oųr?[^#?y$u_?o?-?[?m߶ǿ-|?oߺ~ᇟ?Mr|>گk&֯O=g'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ zNewCommandvfunction vertex() { this.x = 0; this.y = 0; this.z = 0; } function polygon() { this.vertexindex = new Array(); this.vertexcount; } function setColor() { color = System.CreateDO("Common Data Package/Color Data"); for(i=0;i<coltag.length;i++) { element = coltag[i].split("="); axis = element[0]; val = element[1]; if(axis=="R") color.SetRed8(parseInt(val)); if(axis=="G") color.SetGreen8(parseInt(val)); if(axis=="B") color.SetBlue8(parseInt(val)); } Node.Value(encapsObject,"Color") = color; } function ScaleMesh() { dsx = 1; dsy = 1; dsz = 1; ds = 1; if(drawscale3dfound) { for(i=0;i<dstag.length;i++) { element = dstag[i].split("="); axis = element[0]; val = element[1]; if(axis=="X") dsx = parseFloat(val); if(axis=="Y") dsy = parseFloat(val); if(axis=="Z") dsz = parseFloat(val); } } if(drawscalefound) { dsx = drawscale*dsx; dsy = drawscale*dsy; dsz = drawscale*dsz; } var matrix = System.CreateDO('Math Package/Matrix Float Data'); matrix = Node.Value(encapsObject,"OwnerMatrix"); sx = dsx * matrix.GetScaleX(); sy = dsy * matrix.GetScaleY(); sz = dsz * matrix.GetScaleZ(); matrix.SetScaleX(sx); matrix.SetScaleY(sy); matrix.SetScaleZ(sz); Node.Value(encapsObject,"OwnerMatrix") = matrix; } function setTheTransform() { unreal2deg = 360/65536; matrix = System.CreateDO('Math Package/Matrix Float Data'); matrix.LoadIdentity(); ppx = 0; ppy = 0; ppz = 0; lx = 0; ly = 0; lz = 0; psx = 1; psy = 1; psz = 1; if(prepivotfound) { for(j=0;j<pptag.length;j++) { element2 = pptag[j].split("="); axis2 = element2[0]; val2 = element2[1]; if(axis2=="X") ppx = parseFloat(val2)*scale; if(axis2=="Y") ppy = parseFloat(val2)*scale; if(axis2=="Z") ppz = parseFloat(val2)*scale; } } if(locationfound) { for(i=0;i<loctag.length;i++) { element = loctag[i].split("="); axis = element[0]; val = element[1]; if(axis=="X") lx = parseFloat(val)*scale; if(axis=="Y") ly = parseFloat(val)*scale; if(axis=="Z") lz = parseFloat(val)*scale; } } if(locationfound || prepivotfound) { matrix.SetTransX(-ppx+lx); matrix.SetTransY(-ppy+ly); matrix.SetTransZ(-ppz+lz); } //NOTE: truespace rotations giving usual problems so do helper nodes for yaw,pitch,roll matrixRoll = System.CreateDO('Math Package/Matrix Float Data'); matrixRoll.LoadIdentity(); matrixPitch = System.CreateDO('Math Package/Matrix Float Data'); matrixPitch.LoadIdentity(); matrixYaw = System.CreateDO('Math Package/Matrix Float Data'); matrixYaw.LoadIdentity(); matrixRot = System.CreateDO('Math Package/Matrix Float Data'); matrixRot.LoadIdentity(); matrixPostScale = System.CreateDO('Math Package/Matrix Float Data'); matrixPostScale.LoadIdentity(); if(rotationfound) { for(i=0;i<rottag.length;i++) { element = rottag[i].split("="); axis = element[0]; //System.Trace(axis); val = element[1]; //if(axis=="Roll") matrix.SetRoll(parseFloat(val)*unreal2deg); if(axis=="Roll") matrixRoll.SetRoll(parseFloat(val)*unreal2deg); if(axis=="Yaw") { yv = parseFloat(val)*unreal2deg; //System.Trace("yaw " + yv); // matrix.SetYaw(yv); matrixYaw.SetYaw(-yv); } //if(axis=="Pitch") matrix.SetPitch(parseFloat(val)*unreal2deg); if(axis=="Pitch") matrixPitch.SetPitch(parseFloat(val)*unreal2deg); } //try reverse of this //matrixRoll.PreMult(matrixPitch); //matrixRoll.PreMult(matrixYaw); //result was lost pitch completely //matrixYaw.PreMult(matrixPitch); //matrixYaw.PreMult(matrixRoll); //try mult - result still no yaw //matrixYaw.Mult(matrixPitch); //matrixYaw.Mult(matrixRoll); //try again with mult - WORKED this is same as connecting nodes like //yaw -> pitch -> roll -> node actual matrixRoll.Mult(matrixPitch); matrixRoll.Mult(matrixYaw); matrix.SetRoll(matrixRoll.GetRoll()); matrix.SetPitch(matrixRoll.GetPitch()); matrix.SetYaw(matrixRoll.GetYaw()); } if(postscalefound) { for(i=0;i<poststag.length;i++) { element = poststag[i].split("="); axis = element[0]; val = element[1]; if(axis=="X") psx = parseFloat(val); if(axis=="Y") psy = parseFloat(val); if(axis=="Z") psz = parseFloat(val); } } matrixPostScale.SetScaleX(psx); matrixPostScale.SetScaleY(psy); matrixPostScale.SetScaleZ(psz); matrix.PreMult(matrixPostScale); //System.Trace("postscale " + psx + ", " + psy + ", " + psz); Node.Value(encapsObject,"OwnerMatrix") = matrix; if(lightfound) { matrix.LoadIdentity(); matrix.SetPitch(-90); Node.Value(encapsObject,"Matrix") = matrix; } } function buildMesh() { //scale = 0.01; minx = 10000; miny = 10000; minz = 10000; maxx = -10000; maxy = -10000; maxz = -10000; scene = Space.CurrentScene(); owner = System.ThisOwner(); vertexstream = System.CreateDO("Space 3D Package/Vertex Stream Data"); vertexstream.SetNumVertices(vertindex); vertexstream.BeginWrite(); for(i=0;i<vertindex;i++) { vertexstream.x(i) = vert[i].x*scale; vertexstream.y(i) = vert[i].y*scale; vertexstream.z(i) = vert[i].z*scale; //find min and max for uv scaling if(vert[i].x<minx) minx=vert[i].x; if(vert[i].y<miny) miny=vert[i].y; if(vert[i].z<minz) minz=vert[i].z; if(vert[i].x>maxx) maxx=vert[i].x; if(vert[i].y>maxy) maxy=vert[i].y; if(vert[i].z>maxz) maxz=vert[i].z; } vertexstream.EndWrite() trivertstream = System.CreateDO("Space 3D Package/Triangle Vertices Stream Data"); trivertstream.SetNumTripleIndices(totnumtri); trivertstream.BeginWrite(); curtri = 0; //System.Trace("polyindex " + polyindex); for(j=0;j<polyindex;j++) { polyvertcount = polylist[j].vertexcount; firstvert = polylist[j].vertexindex[0]; for(k=0;k<polyvertcount-2;k++) { trivertstream.i(curtri) = firstvert; trivertstream.j(curtri) = polylist[j].vertexindex[k+1]; trivertstream.k(curtri) = polylist[j].vertexindex[k+2]; curtri++; } } trivertstream.EndWrite(); //System.Trace(totnumtri + " " + curtri); meshdata = System.CreateDO("Space 3D Package/Mesh Data"); meshdata.AttachVerticesStream(vertexstream); meshdata.AttachTrianglesStream(trivertstream); encapsObject = Node.Create('Kernel Package/Object', scene); System.Trace(name); if(name!="") { if(!Node.Exists(scene + "/" + name)) encapsObject = Node.Rename(encapsObject,name); else encapsObject = Node.SafeRename(encapsObject,name); } transform = Node.Create('Space 3D Package/Transform', encapsObject); meshnode = Node.Create('Space 3D Package/Editable shape', encapsObject); materialnode = Node.Copy(owner + "/TextureBump",encapsObject); Node.Value(meshnode,"Input Mesh") = meshdata; Node.ExportConnector(transform ,"Matrix","",1,1); Node.ExportConnector(transform ,"WldMatrix","",1,1); Node.ExportConnector(transform ,"ObjMatrix","",1,1); Node.ExportConnector(transform ,"OwnerMatrix","",1,1); Node.ExportConnector(meshnode ,"Mesh","",1,1); Node.ExportConnector(materialnode ,"Material","",1,1); //do auto normals about 30 deg MeshModifiers.AutofacetNormals(encapsObject,30.0); UVEditor.ToggleUvProjection('Cubic',encapsObject); UVEditor.ToggleUvProjection('Cubic',encapsObject); //scale uv values deltax = maxx-minx; deltay = maxy-miny; deltaz = maxz-minz; deltamax = deltax; if(deltay>deltamax) deltamax = deltay; if(deltaz>deltamax) deltamax = deltaz; uvscale = deltamax / 128;//128 size of udk mesh for 1 uv unit meshdata = Node.Value(meshnode,"Input Mesh"); var UVCoordStream = System.CreateDO('Space 3D Package/UV Coordinate Stream Data'); UVCoordStream = meshdata.GetCustStreamByName('UV Coordinate Stream Data'); var UVCount = UVCoordStream.GetNumUVCoords(); for(i=0;i<UVCount;i++) { UVCoordStream.u(i) = UVCoordStream.u(i) * uvscale; UVCoordStream.v(i) = UVCoordStream.v(i) * uvscale; } Node.Value(meshnode,"Input Mesh") = meshdata; //add axis and flatten it RsTool.ShowAxes(encapsObject); RsTool.ShowAxes(encapsObject); MeshModifiers.FlattenAxes(encapsObject); } function setwirecolor(node,r,g,b) { var color = System.CreateDO("Common Data Package/Color Data"); color.SetRed8(r); color.SetGreen8(g); color.SetBlue8(b); Node.Value(rendattnode , "Edges Color") = color; } function displaywire() { D3DView.ShowRenderAttribsForObject('',encapsObject); rendattnode = encapsObject + "/Object Render Attributes"; Node.Value(rendattnode , "Ignore layer attributes") = true; Node.Value(rendattnode , "Edges opacity") = 1; Node.Value(rendattnode , "Surface Opacity") = 0; if(ActorClass=="Brush") setwirecolor(rendattnode ,93,0,0); else { if(ActorClass=="DynamicPhysicsVolume" || ActorClass=="DynamicTriggerVolume") setwirecolor(rendattnode ,40,129,129); else if(ActorClass=="LevelGridVolume") setwirecolor(rendattnode ,129,129,129); else if(ActorClass=="LevelStreamingVolume") setwirecolor(rendattnode ,129,77,0); else if(ActorClass=="LightmassCharacterIndirectDetailVolume") setwirecolor(rendattnode ,71,89,7); else if(ActorClass=="LightmassImportanceVolume") setwirecolor(rendattnode ,129,129,7); else if(ActorClass=="MassiveLODOverrideVolume") setwirecolor(rendattnode ,51,29,29); else if(ActorClass=="NavMeshBoundsVolume") setwirecolor(rendattnode ,26,26,26); else if(ActorClass=="NxGenericForceFieldBrush") setwirecolor(rendattnode ,40,129,40); else if(ActorClass=="PrecomputedVisibilityOverrideVolume") setwirecolor(rendattnode ,7,51,34); else if(ActorClass=="PrecomputedVisibilityVolume") setwirecolor(rendattnode ,7,129,7); else if(ActorClass=="ProcBuilding") setwirecolor(rendattnode ,111,129,59); else if(ActorClass=="ReverbVolume" || ActorClass=="ReverbVolumeToggleable") setwirecolor(rendattnode ,129,129,0); else if(ActorClass=="TriggerVolume") setwirecolor(rendattnode ,40,129,40); else if(ActorClass=="UTAutoCrouchVolume") setwirecolor(rendattnode ,0,0,129); else setwirecolor(rendattnode ,129,96,129); } //Node.Value(rendattnode , "Edges Color") = color; } function csgoperation(typetext) { scene = Space.CurrentScene(); owner = System.ThisOwner(); if(csgsubtract && firstCSG) { //if first csg is subtract then old style subtract style map //need to add giant cube and boolean subtract var curcopy= Node.Create("Kernel Package/Object",scene); var mat = Node.Create("Space 3D Package/Transform",curcopy); Node.ExportConnector(mat, "Matrix", "", 1, 1); Node.ExportConnector(mat, "OwnerMatrix", "", 1, 1); Node.ExportConnector(mat, "ObjMatrix", "", 1, 1); Node.ExportConnector(mat, "WldMatrix", "", 1, 1); var cube = Node.Create("Space 3D Package/Cube3",curcopy); Node.Value(cube,"Depth") = 2621;//ut3 map size Node.Value(cube,"Height") = 2621; Node.Value(cube,"Width") = 2621; Node.ExportConnector(cube, "Mesh", "", 1, 1); var materialnode = Node.Copy(owner + "/TextureBump", curcopy); Node.ExportConnector(materialnode ,"Material","",1,1); var sublevel = Node.Rename(curcopy ,"GiantSubLevel"); lastCSG = sublevel; firstCSG = false; } if((csgsubtract || csgadd) && !firstCSG) { //delete materials if(!flattenB) { Node.Delete(lastCSG + "/TextureBump"); Node.Delete(encapsObject + "/TextureBump"); } //create new group var sel = lastCSG + ";" + encapsObject; Space.Select(sel); lastCSGSN = Node.ShortName(lastCSG); encapsObjectSN = Node.ShortName(encapsObject); //use random name //var encapsname = lastCSGSN + "_" + encapsObjectSN + "_" + typetext;//names way too long var encapsname = ""; for(i=0;i<8;i++) { num = Math.random(); letterA = 97; num = num * 25 + letterA; numstring = num.toFixed(0); encapsname = encapsname + String.fromCharCode(numstring); } encapsname = encapsname + "_" + typetext; //NodeSel.AssembleEx(encapsname);//does not work class error LE.CreateEncapsulationNode("",encapsname,5,5,0);//wild guess encapsname = scene + "/" + encapsname; var csgnode = Node.Create("Mesh Modifiers Package/Csg operation",encapsname); Node.ExportConnector(csgnode, "Mesh", "", 1, 1); var senum = System.CreateDO("Common Data Package/String Enum Data"); senum = Node.Value(csgnode, "Operation"); if(csgsubtract) senum.SetSelectedString("Subtraction"); if(csgadd) senum.SetSelectedString("Union"); Node.Value(csgnode, "Operation") = senum; var xform = Node.Create("Space 3D Package/Transform",encapsname); Node.ExportConnector(xform, "Matrix", "", 1, 1); Node.ExportConnector(xform, "OwnerMatrix", "", 1, 1); Node.ExportConnector(xform, "ObjMatrix", "", 1, 1); Node.ExportConnector(xform, "WldMatrix", "", 1, 1); var materialnode = Node.Copy(owner + "/TextureBump", encapsname); Node.ExportConnector(materialnode ,"Material","",1,1); //System.Trace(lastCSG); lastCSG = encapsname + "/" + lastCSGSN; encapsObject = encapsname + "/" + encapsObjectSN; Node.ConnectTo(lastCSG, "WldMatrix", csgnode, "Matrix A"); Node.ConnectTo(lastCSG, "Mesh", csgnode, "Mesh A"); Node.ConnectTo(encapsObject, "WldMatrix", csgnode, "Matrix B"); Node.ConnectTo(encapsObject, "Mesh", csgnode, "Mesh B"); lastCSG = encapsname; if(flattenB) MeshModifiers.FlattenNodes(lastCSG); } if(csgadd && firstCSG) { //System.Trace("save ref to first csg mesh"); lastCSG = encapsObject; firstCSG = false; } } function addLight() { //ConeAngle=22.000000 //OuterConeAngle=22.000000 //LightColor=(B=255,G=113,R=79,A=0) //LightHue=15 //class Light same as PointLight scene = Space.CurrentScene(); if(ActorClass=="SpotLight") RsFileIO.LoadObject(lightPath + "SpotLight2.rsobj",scene); if(ActorClass=="PointLight" || ActorClass=="Light") RsFileIO.LoadObject(lightPath + "OmniLight.rsobj",scene); var scenecnt = Node.SubObjectCount(scene); encapsObject = scene + "/" + Node.SubObject(scene,scenecnt-1); if(name!="") { if(!Node.Exists(scene + "/" + name)) encapsObject = Node.Rename(encapsObject,name); else encapsObject = Node.SafeRename(encapsObject,name); } lightfound = true; } function addStaticMesh() { scene = Space.CurrentScene(); encapsObject = Node.Create("Kernel Package/Object",scene); var mat = Node.Create("Space 3D Package/Transform",encapsObject ); Node.ExportConnector(mat, "Matrix", "", 1, 1); Node.ExportConnector(mat, "OwnerMatrix", "", 1, 1); Node.ExportConnector(mat, "ObjMatrix", "", 1, 1); Node.ExportConnector(mat, "WldMatrix", "", 1, 1); var cube = Node.Create("Space 3D Package/Cube3",encapsObject ); Node.ExportConnector(cube, "Mesh", "", 1, 1); if(smtag != "") { smtaglen = smtag.length; smeshname = smtag[smtaglen-1]; Node.Rename(cube,smeshname); } //do cube place holder for now if(name!="") { if(!Node.Exists(scene + "/" + name)) encapsObject = Node.Rename(encapsObject,name); else encapsObject = Node.SafeRename(encapsObject,name); } } function addSkeletalMesh() { scene = Space.CurrentScene(); encapsObject = Node.Create("Kernel Package/Object",scene); var mat = Node.Create("Space 3D Package/Transform",encapsObject ); Node.ExportConnector(mat, "Matrix", "", 1, 1); Node.ExportConnector(mat, "OwnerMatrix", "", 1, 1); Node.ExportConnector(mat, "ObjMatrix", "", 1, 1); Node.ExportConnector(mat, "WldMatrix", "", 1, 1); var cone = Node.Create("Space 3D Package/Cone2",encapsObject ); //var cube = Node.Create("Space 3D Package/Cube3",encapsObject ); Node.ExportConnector(cone , "Mesh", "", 1, 1) //do cube place holder for now if(name!="") { if(!Node.Exists(scene + "/" + name)) encapsObject = Node.Rename(encapsObject,name); else encapsObject = Node.SafeRename(encapsObject,name); } } function readPolyList() { small = 0.001; vert = new Array(); polylist = new Array(); whiteSpacesOrCommas = /[\,\s]+/;//one or more times + //whiteSpacesOrCommas = /\s+/; vertindex = 0; polyindex = 0; polyvertcount = 0; totnumtri = 0; while(!(msgtag[0]=="End" && msgtag[1]=="PolyList")) { rline = fileTextStream.ReadLine(); if(rline.match(oneWhiteSpace)) lineStartIndex = rline.search(nonWhiteSpace); else lineStartIndex = 0; rline = rline.slice(lineStartIndex); msgtag = rline.split(whiteSpacesOrCommas); //if polygon get its vertices - will need to compare for corresponding values, no indices only xyz values //need convert poly to triangles + edge flags //t3d verts CCW if(msgtag[0] == "Begin" && msgtag[1] == "Polygon") { polyvertcount = 0; polylist[polyindex] = new polygon; } if(msgtag[0] == "Vertex") { matchindex = -1; tempx = parseFloat(msgtag[1]); tempy = parseFloat(msgtag[2]); tempz = parseFloat(msgtag[3]); if(vertindex==0) { matchindex = -1; } else { for(i=0;i<vertindex;i++) { //check for pre existing vertex dx = Math.abs(vert[i].x-tempx); dy = Math.abs(vert[i].y-tempy); dz = Math.abs(vert[i].z-tempz); if(dx<small && dy<small && dz<small) matchindex = i; } } if(matchindex == -1) { vert[vertindex] = new vertex; vert[vertindex].x = tempx; vert[vertindex].y = tempy; vert[vertindex].z = tempz; matchindex = vertindex; vertindex++; } polylist[polyindex].vertexindex[polyvertcount] = matchindex; if(vertindex==0) System.Trace(vert[vertindex].x + ", " + vert[vertindex].y + ", " + vert[vertindex].z) polyvertcount++; polylist[polyindex].vertexcount = polyvertcount; } if(msgtag[0] == "End" && msgtag[1] == "Polygon") { numtri = polyvertcount - 2; totnumtri = totnumtri + numtri; numvisedges = polyvertcount; polyvertcount = 0; polyindex++; } } if(vertindex != 0) { //System.Trace(" - write mesh to the scene"); buildMesh(); meshfound = true; } beginPoly = false; } // Execute // Called to execute the command function Execute(params) { filename = params.ConValue('filename'); flattenB = params.ConValue('flattenB'); lightsB = params.ConValue('lightsB'); staticmeshB = params.ConValue('staticmeshB'); brushB = params.ConValue('brushB'); volumeB = params.ConValue('volumeB'); externalstaticmeshB = params.ConValue('externalstaticmeshB'); scale = params.ConValue('scale'); skeletalmeshB = params.ConValue('skeletalmeshB'); kactorB = params.ConValue('kactorB'); if(scale==0) scale = 1.0; System.Trace("*** start t3d import"); tsprogramPath = System.GetMainDir(); bitmapPath = tsprogramPath + "\\Rs Main Libraries\\Bitmaps - Base\\"; lightPath = tsprogramPath + "\\Scripts\\preobjects\\"; var forReading = 1, forWriting = 2, forAppending = 8; var TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0; fileSystemObject = new ActiveXObject("Scripting.FileSystemObject"); fileObject = fileSystemObject.GetFile(filename); fileTextStream = fileObject.OpenAsTextStream( forReading, TristateUseDefault); //read lines of rline = ""; ut3map = false;//change this to level map = false; brush = false; actor = false; name = ""; csgadd = false; csgsubtract = false; firstCSG = true; lastCSG = "" nonWhiteSpace = /\S/; whiteSpaces = /\s+/;//one or more times + oneWhiteSpace = /\s/; vert = new vertex; meshlocation = new vertex; locationfound = false; rotationfound = false; meshfound = false; ActorClass = ""; postscalefound = false; drawscale3dfound = false; drawscalefound = false; while( !fileTextStream.AtEndOfStream ) { beginPoly = false; //read line and remove leading whitespaces rline = fileTextStream.ReadLine(); if(rline.match(oneWhiteSpace)) lineStartIndex = rline.search(nonWhiteSpace); else lineStartIndex = 0; rline = rline.slice(lineStartIndex); msgtag = rline.split(whiteSpaces); if(msgtag[0]=="Begin" && msgtag[1]=="Map") { System.Trace("map file"); map = true; } if(msgtag[0]=="End" && msgtag[1]=="Map") { System.Trace("end map file"); map = false; } if(msgtag[0]=="Begin" && msgtag[1]=="PolyList") beginPoly = true; if(msgtag[0]=="Begin" && msgtag[1]=="Level") { ut3map = true; System.Trace("ut3 map file"); } if(msgtag[0]=="End" && msgtag[1]=="Level") { ut3map = true; System.Trace("end level - ut3 map"); } if(msgtag[0]=="Begin" && msgtag[1]=="Actor") { actor = true; lightfound = false; staticmeshfound = false; skeletalmeshfound = false; kactormeshfound=false; System.Trace("begin actor"); //go through each and look for start text "Name=" numtags = msgtag.length; for(i=2;i<numtags;i++) { lbltag = msgtag[i].split("="); if(lbltag[0]=="Name") name = lbltag[1]; } ActorClass = ""; //go through each and look for start text "Class=" numtags = msgtag.length; for(i=2;i<numtags;i++) { lbltag = msgtag[i].split("="); if(lbltag[0]=="Class") ActorClass = lbltag[1]; } if(ActorClass=="SpotLight" || ActorClass=="PointLight" || ActorClass=="Light") { if(lightsB) { colorfound = false; addLight(); } } if(staticmeshB && ActorClass=="StaticMeshActor") { staticmeshfound=true; //save archtype?wait for other line? //addStaticMesh();//for now just add a cube smtag = "";//clear name } if(kactorB && ActorClass=="KActor") { kactormeshfound=true; System.Trace("kactor found"); //save archtype?wait for other line? //addStaticMesh();//for now just add a cube smtag = "";//clear name } if(skeletalmeshB && ActorClass=="SkeletalMeshActor") { skeletalmeshfound = true; addSkeletalMesh(); } } if(rline.substr(0,12)=="LightColor=(") { colstring = rline.substr(12,rline.length-1-12); //System.Trace(colstring); coltag = colstring.split(","); if(lightsB) colorfound = true; //System.Trace("coltag length " + coltag.length); } if(rline.substr(0,22)=="StaticMesh=StaticMesh'") { smstring = rline.substr(22,rline.length-1-22); //System.Trace(smstring); smtag = smstring.split("."); //if(staticmeshB ) colorfound = true; //System.Trace("coltag length " + coltag.length); } if(rline=="CsgOper=CSG_Subtract") { csgsubtract = true; } if(rline=="CsgOper=CSG_Add") { csgadd = true; } if(rline.substr(0,10)=="Location=(") { locstring = rline.substr(10,rline.length-1-10); //System.Trace(locstring); loctag = locstring.split(","); locationfound = true; //System.Trace("loctag length " + loctag.length); } if(rline.substr(0,10)=="DrawScale=") { dsstring = rline.substr(10,rline.length-1-10); drawscale = parseFloat(dsstring); //System.Trace(locstring); //loctag = locstring.split(","); drawscalefound = true; //System.Trace("loctag length " + loctag.length); } if(rline.substr(0,13)=="DrawScale3D=(") { dsstring = rline.substr(13,rline.length-1-13); //System.Trace(locstring); dstag = dsstring.split(","); drawscale3dfound = true; //System.Trace("loctag length " + loctag.length); } if(rline.substr(0,10)=="PrePivot=(") { ppstring = rline.substr(10,rline.length-1-10); //System.Trace(ppstring); pptag = ppstring.split(","); prepivotfound = true; } if(rline.substr(0,10)=="Rotation=(") { rotstring = rline.substr(10,rline.length-1-10); //System.Trace(rotstring); rottag = rotstring.split(","); rotationfound = true; //System.Trace("rottag length " + rottag.length); } if(rline.substr(0,18)=="PostScale=(Scale=(") { rlinetag = rline.split(")"); psstring = rlinetag[0].substr(18,rlinetag[0].length-18); //psstring = rline.substr(18,rline.length-1-18); //System.Trace(psstring); poststag = psstring.split(","); postscalefound = true; //System.Trace("loctag length " + loctag.length); } if(msgtag[0]=="End" && msgtag[1]=="Actor") { if(staticmeshB && staticmeshfound) addStaticMesh(); if(kactorB && kactormeshfound) addStaticMesh(); if((locationfound || rotationfound) && (lightsB && lightfound)) setTheTransform(); if((locationfound || rotationfound || postscalefound) && ((brushB || volumeB) && meshfound)) setTheTransform(); if(lightsB && lightfound && colorfound) setColor(); if(staticmeshB && staticmeshfound && (locationfound || rotationfound)) setTheTransform(); if(kactorB && kactormeshfound && (locationfound || rotationfound)) setTheTransform(); if(skeletalmeshB && skeletalmeshfound && (locationfound || rotationfound)) setTheTransform(); if((kactorB && kactormeshfound) && (drawscalefound || drawscale3dfound)) ScaleMesh(); if((staticmeshB && staticmeshfound) && (drawscalefound || drawscale3dfound)) ScaleMesh(); if((brushB || volumeB) && meshfound) { if(!csgadd && ! csgsubtract) displaywire(); if(csgadd) csgoperation("CSG_Add"); if(csgsubtract) csgoperation("CSG_Sub"); } actor = false; System.Trace("end actor"); name = ""; csgadd = false; csgsubtract = false; locationfound = false; rotationfound = false; meshfound = false; lightfound = false; colorfound = false; staticmeshfound=false; prepivotfound = false; skeletalmeshfound=false; postscalefound = false; kactormeshfound=false; drawscale3dfound = false; drawscalefound = false; } doPolyList = false; if(ActorClass=="Brush" && brushB) doPolyList = true; if(volumeB) { if(ActorClass.search("Volume") != -1) doPolyList = true; if(ActorClass== "ProcBuilding") doPolyList = true; if(ActorClass== "NxGenericForceFieldBrush") doPolyList = true; } if(doPolyList) { //if(beginPoly) System.Trace("polylist found"); if(beginPoly) readPolyList(); } } fileTextStream.Close(); } NScript Object Package/jScript languageؒF1 stringfilenamek<ΈdJbsbooleanflattenB rg'JNjn*pnDPAb@ j@2|=Bynj|?z@Hoۙ>?gvM4`j J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?Lcb@n~ z/ GaZB k<ΈdJbsHD:\UDK\MapExportTest\ExampleMap.t3dpɜ,IɶI -1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a:Activity.Stop('%THIS_NAME%') StopZ`Ez]UOMT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?rg'JNjn*pnBC`@0@2|=Bynj|?z@Hoۙ>?ceZU@䑧r[җJs@ DNewCommandfunction ReplaceTheMesh(replacenode, index) { //System.Trace("replace " + replacenode); Node.ConRemove(replacenode, "Mesh"); var oldmesh = replacenode + "/" + Node.SubObject(replacenode,index); Node.Delete(oldmesh); var newmesh = Node.Copy(meshnode ,replacenode); Node.ExportConnector(newmesh, "Mesh", "", 1, 1); Node.Rename(newmesh,destination); if(matnode != "") { newmat = Node.Copy(matnode, replacenode); Node.ExportConnector(newmat, "Material List", "", 1, 1); } } // Execute // Called to execute the command function Execute(params) { source = params.ConValue('source'); destination = params.ConValue('destination'); // TODO: put your action code here scene = Space.CurrentScene(); owner = System.ThisOwner(); System.Trace("copy from " + source); System.Trace("to " + destination); meshnode = ""; matnode = ""; if(!Node.Exists(source)) return; if(destination=="") return; //get mesh and material to be copied numsubobj = Node.SubObjectCount(source); for(i=0;i<numsubobj;i++) { subobj = Node.SubObject(source,i); if(Node.ConExists(source + "/" + subobj,"Mesh")) meshnode = source + "/" + subobj; if(Node.ConExists(source + "/" + subobj,"Material List")) matnode = source + "/" + subobj; } if(meshnode=="") return; // read and adjust mesh node name to be replaced if(Node.Exists(destination)) { numsubobj = Node.SubObjectCount(destination); for(i=0;i<numsubobj;i++) { subobj = Node.SubObject(destination,i); if(Node.ConExists(destination + "/" + subobj,"Mesh")) { System.Trace(subobj); destination = subobj; Node.Value(owner,"destination") = subobj; } } } //look for destination mesh in the scene numsceneobj = Node.SubObjectCount(scene); for(var i=0;i<numsceneobj;i++) { sceneobj = Node.SubObject(scene,i); numsubobj = Node.SubObjectCount(scene + "/" + sceneobj); for(var j=0;j<numsubobj;j++) { subobj = Node.SubObject(scene + "/" + sceneobj,j); if(subobj==destination) { //System.Trace("found " + sceneobj) ReplaceTheMesh(scene + "/" + sceneobj, j); } } } } NScript Object Package/jScript language~൱DV^"#^cstringsourcẻC1ԃZ\stringdestinationMC¦p4W}@O{(XFҦV>g'JNjn*pnCCb@@T@2|=Bynj|?z@Hoۙ>?MC¦p̉C1ԃZ\J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?-1OSM n 럆L<_їjControlOˁ CRih[ a8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0a: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 // Execute // Called to execute the command function Execute(params) { attconstant = params.ConValue('attconstant'); attlinear = params.ConValue('attlinear'); attquadratic = params.ConValue('attquadratic'); attthreshold = params.ConValue('attthreshold'); // TODO: put your action code here scene = Space.CurrentScene(); ExploreNode(scene) } function ExploreNode(thePath) { //declare local variables for recusrsive calls var curIndex; var curnumObj; var childPath, MyObj; if(Node.IsLight(thePath) && Node.ConExists(thePath,"AttConstant")) { System.Trace(thePath); //TODO also set for good non ', 1' names if(Node.ConExists(thePath, "AttConstant")) Node.Value(thePath, "AttConstant") = attconstant; if(Node.ConExists(thePath, "AttLinear, 1")) Node.Value(thePath, "AttLinear, 1") = attlinear; if(Node.ConExists(thePath, "AttLinear")) Node.Value(thePath, "AttLinear") = attlinear; if(Node.ConExists(thePath, "AttQuadratic, 1")) Node.Value(thePath, "AttQuadratic, 1") = attquadratic; if(Node.ConExists(thePath, "AttQuadratic")) Node.Value(thePath, "AttQuadratic") = attquadratic; Node.Value(thePath, "ThresholdAttenuation") = attthreshold return; } //get first child curIndex = 0; curnumObj = Node.SubObjectCount(thePath); if(curnumObj > 0) { MyObj = Node.SubObject(thePath,0); childPath = thePath + "/" + MyObj; } //recursion runs here - get the next child while(curnumObj > 0) { ExploreNode(childPath); curIndex = curIndex + 1; if(curIndex < curnumObj) { MyObj = Node.SubObject(thePath, curIndex); childPath = thePath + "/" + MyObj; } else curnumObj = 0; } } // --------------------------------- // Advanced handlers // --------------------------------- function OnDefaultValue(params) { conName = params.Param('conName'); switch (conName) { // set default value for particular connectors like this, if desired : // params.Param('vtData') = 1.0 case 'attconstant': params.Param('vtData') = 1.0; params.Param('bHandled') = true; break; case 'attlinear': params.Param('vtData') = 0.0; params.Param('bHandled') = true; break; case 'attquadratic': params.Param('vtData') = 0.005; params.Param('bHandled') = true; break; case 'attthreshold': params.Param('vtData') = 0.05; params.Param('bHandled') = true; break; } } NScript Object Package/jScript language~൱D_#^cnumberattconstant"J_numberattlinearʊ׃~C`]=numberattquadraticYMJ@O=%3-numberattthresholdг˂6FBXBF4W}@O{(XFҦV>g'JNjn*pnDDCb@ `@2|=Bynj|?z@Hoۙ>?YMJ@O=%3-Q?J@#QL>g'JNjn*pnBB`@T@2|=Bynj|?z@Hoۙ>?г˂6FBXBF{Gz?ʊ׃~C`]=-1OSM n 럆L<_ї~Control Oˁ CRih[ h e}}8Activity.Run('%THIS_NAME%') StartZ`Ez]UOOˁ CRih[ 0h e}}:Activity.Stop('%THIS_NAME%') StopZ`Ez]UO GFʠN=0H@h 1 }}"J_Z`Ez]UO1釥GP>aH0@h 0 }}"J_Z`Ez]UO GFʠN=@HPh 1 }}ʊ׃~C`]=Z`Ez]UO1釥GP>aH@Ph 0 }}ʊ׃~C`]=Z`Ez]UO GFʠN=PH`h 1 }}YMJ@O=%3-Z`Ez]UO1釥GP>aHP`h 0 }}YMJ@O=%3-Z`Ez]UO GFʠN=`Hph 1 }}г˂6FBXBFZ`Ez]UO1釥GP>aH`ph 0 }}г˂6FBXBFZ`Ez]UO}}MT^RwL~YYT>g'JNjn*pnCB`@0@2|=Bynj|?z@Hoۙ>?z@Ho8ʯȥJH|o7 gH]kDwPB`d8pM*#ͺO2/tfѭ8Lwb"q