macroScript MaterialSlammer category:"Keffer Tools" tooltip:"Mslam" buttontext:"Mslam" ( global MslamFloater ObjectArray = #() OldMaterial = #() NewMaterial = #() AllMaterial = #() AllBitmap RotArray = #() edgearray totalfaces FaceArray = #() Facestring = #() TextureArray = #() rollout MaterialCombine "Material Combiner" width:162 height:334 ( --Button CombineMaterials "Combine Materials" group "check" ( Button ConvertMat "Convert" ) group "create" ( Button MakeMaster "Make Master Material" spinner MaterialSlot "Slot #" range:[1,24,24] type:#integer width:70 height:20 align:#right ) group "modify" ( Button Re_ID "RE ID polys" edittext path "path" text:"Tex:" Button RenameMat "RenameMaterials" ) -------------------------------------------------- -------------------------------------------------- On RenameMat pressed do ( NumSubMaterials = meditMaterials[24].count for n = 1 to numsubmaterials do ( if meditMaterials[24].materiallist[n].diffusemap != undefined then ( pathcount = path.text.count Crappyname = meditMaterials[24].materiallist[n].diffusemap.filename newname = replace crappyname 1 pathcount "" numberchar = newname.count newname2 = replace newname (numberchar - 2) 3 "" meditMaterials[24].materialList[n].name = newname2 append NewMaterial newname )--end if else ( append newmaterial "nil" )--end else )--end for n ) On ConvertMat pressed do ( objectArray = #() objectArray = $ as array totalobjects = objectArray.count for c = 1 to totalobjects do ( select ObjectArray[c] if $.material != undefined do ( meditMaterials[23] = copy $.material matstring = (meditMaterials[23] as string) print matstring type_multi = (findstring matstring "Multi/Sub-Object:") if type_multi == undefined then ( meditMaterials[23] = Multimaterial material1:meditMaterials[23] $.material = meditMaterials[23] )--end if type else ( ) )--end if $.material )--end for c )-- end convertmat ------------------------------------------------------------------- On MakeMaster pressed do ( RotArray = #() AllMaterial = #() AllBitmap = #() objectArray = #() objectArray = $ as array totalobjects = objectArray.count for m = 1 to totalobjects do ( select ObjectArray[m] if $.material != undefined do ( meditMaterials[23] = copy $.material NumSubMaterials = meditMaterials[23].count for j = 1 to numsubmaterials do ( if meditMaterials[23].materiallist[j].diffusemap != undefined then ( filename = meditMaterials[23].materialList[j].diffusemap.filename exist = finditem AllBitmap filename if exist == 0 then ( append AllBitmap meditMaterials[23].materialList[j].diffusemap.filename append AllMaterial meditMaterials[23].materiallist[j] --append RotArray meditMaterials[23].materialList[j].diffuseMap.coords.W_Angle )-- end if exist else () )--end if meditmaterials else ( --append Allmaterial "nil" )--end else )--end for j )--end if $.material )--end for m --sort allmaterial --print allmaterial totalmaterials = allmaterial.count --print totalmaterials --print rotarray --print rotarray.count meditMaterials[MaterialSlot.value] = Multimaterial () meditMaterials[MaterialSlot.value].materialList.count = totalmaterials for mm = 1 to totalmaterials do ( meditMaterials[MaterialSlot.value].materiallist[mm] = allmaterial[mm] --meditMaterials[MaterialSlot.value].materialList[mm].diffusemap = Bitmaptexture fileName:allbitmap[mm] --meditMaterials[MaterialSlot.value].materialList[mm].diffuseMap.coords.W_Angle = RotArray[mm] ) select objectarray ) -------------------------------------------------- On Re_ID pressed do ( NewMaterial = #() NumSubMaterials = meditMaterials[24].count for n = 1 to numsubmaterials do ( if meditMaterials[24].materiallist[n].diffusemap != undefined then ( pathcount = path.text.count Crappyname = meditMaterials[24].materiallist[n].diffusemap.filename newname = replace crappyname 1 pathcount "" meditMaterials[24].materialList[n].name = newname append NewMaterial newname )--end if else ( append newmaterial "nil" )--end else )--end for n --print newmaterial --print newmaterial.count -------------------------------------------------- -------------------------------------------------- objectArray = #() objectArray = $ as array totalobjects = objectArray.count for i = 1 to totalobjects do ( select ObjectArray[i] macros.run "Modifier Stack" "Convert_to_Mesh" if $.material != undefined do ( OldMaterial = #() meditMaterials[23] = copy $.material NumSubMaterials = meditMaterials[23].count for j = 1 to numsubmaterials do ( if meditMaterials[23].materiallist[j].diffusemap != undefined then ( pathcount = path.text.count Crappyname = meditMaterials[23].materiallist[j].diffusemap.filename newname = replace crappyname 1 pathcount "" meditMaterials[23].materialList[j].name = newname append OldMaterial newname )--end if else ( append oldmaterial "nil" )--end else )--end for j --print oldmaterial )--end if macros.run "Modifier Stack" "Convert_to_Mesh" total_faces = getnumfaces $ --max modify mode --subobjectLevel = 4 for f = 1 to total_faces do ( Mat_ID = GetFaceMatID $ f Mat_IDname = OldMaterial[Mat_ID] --Print Mat_IDname New_ID = FindItem NewMaterial Mat_IDname SetFaceMatID $ f New_ID ) $.material = meditMaterials[24] --showtexturemap $.material $.material.materiallist[i].diffusemap on update $ )--end for i )--end RE_ID )--End Rollout ----------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------ Rollout IDCheck "ID Info" ( group "ID Tools" ( button getnummeshid "get number of id's" width:140 height:20 spinner MeshIDnum "# Material ID" range:[0,9999,1] type:#integer align:#right spinner NumSubMaterials "# Material ID's" range:[0,9999,1] type:#integer align:#right Listbox IDs "ID List" items:#() height:8 text:"" selected:0 dropdownlist texture "texture:" items:#("") fieldWidth:60 bitmap diffusetexture bitmap:(bitmap 120 120) ) ---------------------------------------------- on getNummeshID pressed do ( if $ !=undefined do ( converttomesh $ meditMaterials[24] = $.material NumSubMaterials.value = meditMaterials[24].count max modify mode subobjectlevel = 3 FaceArray = #() Facestring = #() TextureArray = #() TotalFaces = getNumFaces $ for m = 1 to totalfaces do ( Faceid = getFaceMatID $ m x = findItem FaceArray Faceid if x == 0 do ( insertitem faceid facearray 1 diffusetexture.filename = meditMaterials[24].materialList[faceid].diffuseMap.filename insertitem (getfilenamefile diffusetexture.filename) texturearray 1 ) ) meshidNum.value = facearray.count sort facearray for s = 1 to facearray.count do ( insertitem (facearray[s] as string) facestring 1 ) IDs.items = facestring sort texturearray texture.items = texturearray ) ) ------------------------------------------------------------------------------------------- on IDs selected selval do ( if $ !=undefined do ( FaceArray = #() selval = ids.selected as integer for m = 1 to totalfaces do ( Faceid = getFaceMatID $ m x = findItem FaceArray Faceid if faceid == selval do ( insertitem m facearray 1 ) ) $.selectedfaces = facearray diffusetexture.filename = meditMaterials[24].materialList[selval].diffuseMap.filename texture.selected = (getfilenamefile diffusetexture.filename) ) update $ ) ------------------------------------------------------------------------------------------- on IDs doubleclicked selval do ( dt = openbitmap (diffusetexture.filename) display dt modPanel.addModToSelection (Unwrap_UVW ()) ui:on $.modifiers[#unwrap_uvw].unwrap.edit () --map = getcurrentmap() $.modifiers[#unwrap_uvw].unwrap.setcurrentmap 123 ) -------------------------------------------------------------------------------------------- on IDCheck close do ( diffusetexture.bitmap = bitmap 120 120 --max create mode ) )---------end of rollout ----------------------------------------------------------------------------------------- if MslamFloater != undefined then ( closeRolloutFloater MslamFloater MsalmFloater = Undefined ) MslamFloater = NewRolloutFloater "MSlam" 190 500 AddRollout Materialcombine MslamFloater rolledup:true AddRollout IDCheck MslamFloater )