macroScript MassMaterialModify category:"Keffer Tools" tooltip:"MMM" buttontext:"MMM" ( rollout MaterialModify "MASS Material Modifier" width:162 height:334 ( group "Material Settings" ( --pickbutton FindMaterial "Get MultiSub Material" width:140 height:18 align:#center button FindMaterial "Get MultiSub Material" width:140 height:18 align:#center dropdownlist mattype "Material Type" items:#("MultiSub","MultiSub w/MipMap","Alchemy Multisub","Alchemy Multisub w/MipMap") default:1 columns:1 spinner MaterialSlot "Slot #" range:[1,100,1] type:#integer width:70 height:20 align:#right spinner NumSubMaterials "# SubMaterials" range:[1,1000,1] type:#integer width:100 height:20 align:#right edittext extension "change bitmap ext's to:" text:"" fieldWidth:30 button changeextension "change extensions" width:140 height:18 align:#center ) group "SHADER SETTINGS" ( DropDownList MaterialType items:#("Anisotropic","Blinn","Metal","Multi-Layer","Oren-Neyar-Blinn","Phong","Strauss") selection:2 spinner Specular "Specular Level" range:[0,999,0] type:#integer width:100 height:20 align:#right spinner Glossiness "Glossiness Level" range:[0,100,0] type:#integer width:100 height:20 align:#right spinner Soften "Soften Level" range:[0,1,0] type:#float width:100 height:20 align:#right ) group "COLOR SETTINGS" ( colorPicker ambientLightColor "A:" width:40 height:15 color:(color 150 150 150) align:#cen across:3 colorPicker diffuseLightColor "D:" width:40 height:15 color:(color 200 200 200) align:#cen colorPicker specularLightColor "S:" width:40 height:15 color:(color 255 255 255) align:#cen ) group "Blend SETTINGS" ( radiobuttons BlendType "Blend type" labels:#("A","M","R") default:1 columns:3 align:#center enabled:false button ChangeBlendType "Change Blending Type" width:140 height:18 align:#center enabled:false ) group "MipMap" ( button addmipmap "Add" width:45 height:18 enabled:true align:#left across:3 button changemipmap "Change" width:45 height:18 align:#right enabled:false button removemipmap "Remove" width:45 height:18 align:#right enabled:false checkbox generate "Generate Mipmaps" checked:true --radiobuttons TextureType "MipMapping:" labels:#("Diff","Light") default:1 columns:3 align:#center radiobuttons Filter "Texture-MipMap filter:" labels:#("Nearest,Nearest","Nearest,Linear","Linear,Nearest","Linear,Linear") default:1 columns:1 align:#center checkbox psx2 "Use Specified L/K" checked:true spinner L "L" range:[-10000,10000,0] type:#integer width:50 height:20 align:#right across:2 spinner K "K" range:[-10000,10000,-4.00] type:#float scale:0.01 width:50 height:20 align:#right ) ---------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------- on mattype selected m do ( if mattype.selection == 1 then ( blendtype.enabled = false changeblendtype.enabled = false addmipmap.enabled = true changemipmap.enabled = false ) if mattype.selection == 2 then ( blendtype.enabled = false changeblendtype.enabled = false addmipmap.enabled = false changemipmap.enabled = true ) if mattype.selection == 3 then ( blendtype.enabled = true changeblendtype.enabled = true addmipmap.enabled = true changemipmap.enabled = false ) if mattype.selection == 4 then ( blendtype.enabled = true changeblendtype.enabled = true addmipmap.enabled = false changemipmap.enabled = true ) else () ) ---------------------------------------------------------------------- --on FindMaterial picked matname do on FindMaterial pressed do ( if $ != undefined then ( --FindMaterial.text = matname.name --selobj=matname.name --meditMaterials[MaterialSlot.value] = matname.material meditMaterials[MaterialSlot.value] = copy $.material NumSubMaterials.value = meditMaterials[MaterialSlot.value].count UpdateMtlEditorBrackets for i = 1 to NumSubMaterials.value do ( meditMaterials[MaterialSlot.value].materialList[i].adLock = off ) UpdateMtlEditorBrackets MaterialType.selection = meditMaterials[MaterialSlot.value].materialList[1].shaderType + 1 ambientlightcolor.color = meditMaterials[MaterialSlot.value].materialList[1].Ambient diffuselightcolor.color = meditMaterials[MaterialSlot.value].materialList[1].Diffuse specularlightcolor.color = meditMaterials[MaterialSlot.value].materialList[1].Specular Specular.value = meditMaterials[MaterialSlot.value].materialList[1].specularLevel Glossiness.value = meditMaterials[MaterialSlot.value].materialList[1].glossiness Soften.value = meditMaterials[MaterialSlot.value].materialList[1].soften ------------------Material Checker matstring = (meditMaterials[MaterialSlot.value].materiallist[1].diffusemap as string) print matstring type_multisub = (findstring matstring "Bitmap") type_multisubmipmap = (findstring matstring "MipMap") type_alchemy = (findstring matstring "alchemy_texmap") if type_multisub != undefined then ( mattype.selection = 1 ) if type_multisubmipmap != undefined then ( mattype.selection = 2 ) if type_alchemy != undefined then ( matstring = (meditMaterials[1].materiallist[1].diffusemap.stage0_map as string) type_alchemymipmap = (findstring matstring "Mipmap") if type_alchemymipmap != undefined then ( mattype.selection = 4 )--end if type else ( mattype.selection = 3 )--end else ) if mattype.selection == 1 then ( blendtype.enabled = false changeblendtype.enabled = false addmipmap.enabled = true changemipmap.enabled = false ) if mattype.selection == 2 then ( blendtype.enabled = false changeblendtype.enabled = false addmipmap.enabled = false changemipmap.enabled = true ) if mattype.selection == 3 then ( blendtype.enabled = true changeblendtype.enabled = true addmipmap.enabled = true changemipmap.enabled = false ) if mattype.selection == 4 then ( blendtype.enabled = true changeblendtype.enabled = true addmipmap.enabled = false changemipmap.enabled = true ) ) else ( ) ) --------------------------------------------------------------------- on ambientlightcolor changed state do ( for i = 1 to NumSubMaterials.value do ( if MaterialType.selection < 7 do ( meditMaterials[MaterialSlot.value].materialList[i].Ambient = ambientLightColor.color ) ( meditMaterials[MaterialSlot.value].materialList[i].Diffuse = diffuseLightColor.color ) ) UpdateMtlEditorBrackets ) ------------------------------------------------------------------------ on diffuselightcolor changed state do ( for i = 1 to NumSubMaterials.value do ( if MaterialType.selection < 7 do ( meditMaterials[MaterialSlot.value].materialList[i].Diffuse = diffuseLightColor.color ) ( meditMaterials[MaterialSlot.value].materialList[i].Diffuse = diffuseLightColor.color ) ) UpdateMtlEditorBrackets ) ------------------------------------------------------------------------ on specularlightcolor changed state do ( for i = 1 to NumSubMaterials.value do ( if MaterialType.selection < 7 do ( meditMaterials[MaterialSlot.value].materialList[i].Specular = specularLightColor.color ) ( meditMaterials[MaterialSlot.value].materialList[i].Diffuse = diffuseLightColor.color ) ) UpdateMtlEditorBrackets ) ----------------------------------------------------------------------------- on MaterialType selected i do ( for s = 1 to NumSubMaterials.value do ( if MaterialType.selection < 7 do ( meditMaterials[MaterialSlot.value].materialList[s].shaderType = (MaterialType.selection - 1) ) ( meditMaterials[MaterialSlot.value].materialList[s].shaderType = (MaterialType.selection - 1) ) ) UpdateMtlEditorBrackets ) ---------------------------------------------------------------------------- on specular changed state do ( for s = 1 to NumSubMaterials.value do ( meditMaterials[MaterialSlot.value].materialList[s].specularLevel = specular.value ) ) -------------------------------------------------------------------------------------- on glossiness changed state do ( for s = 1 to NumSubMaterials.value do ( meditMaterials[MaterialSlot.value].materialList[s].glossiness = glossiness.value ) ) ------------------------------------------------------------------------------------ on soften changed state do ( for s = 1 to NumSubMaterials.value do ( meditMaterials[MaterialSlot.value].materialList[s].soften = soften.value ) )--end soften --------------------------------------- on ChangeBlendType pressed do ( if mattype.selection == 3 then ( for b = 1 to NumSubMaterials.value do ( meditMaterials[MaterialSlot.value].materialList[b].diffuseMap.noiseType = (BlendType.state - 1) ) ) if mattype.selection == 4 then ( for b = 1 to NumSubMaterials.value do ( meditMaterials[MaterialSlot.value].materialList[b].diffuseMap.noiseType = (BlendType.state - 1) ) ) else ( ) )--end ChangeBlendType ------------------------------------------------------------------------------------------------------- on changeextension pressed do ( temptext = extension.text temptextnum = temptext.count print temptextnum if mattype.selection == 1 then ( if temptextnum == 3 then ( for n = 1 to NumSubMaterials.value do ( originalname = meditMaterials[MaterialSlot.value].materialList[n].diffuseMap.filename numberchar = originalname.count newname = replace originalname (numberchar - 2) 3 extension.text meditMaterials[MaterialSlot.value].materialList[n].diffuseMap= Bitmaptexture fileName: newname print originalname print numberchar print newname )--end for n )--end if temptextnum else ( messagebox "extension requires 3 characters" )--end else )--end if mattype --------------------------------------------------------- if mattype.selection == 2 then ( if temptextnum == 3 then ( for n = 1 to NumSubMaterials.value do ( originalname = meditMaterials[MaterialSlot.value].materialList[n].diffuseMap.mipmap.filename numberchar = originalname.count newname = replace originalname (numberchar - 2) 3 extension.text meditMaterials[MaterialSlot.value].materialList[n].diffuseMap.mipmap= Bitmaptexture fileName: newname print originalname print numberchar print newname )--end for n )--end if temptextnum else ( messagebox "extension requires 3 characters" )--end else )--end if mattype --------------------------------------------------------- if mattype.selection == 3 then ( if temptextnum == 3 then ( for n = 1 to NumSubMaterials.value do ( originalname = meditMaterials[MaterialSlot.value].materialList[n].diffuseMap.stage0_map.filename numberchar = originalname.count newname = replace originalname (numberchar - 2) 3 extension.text meditMaterials[MaterialSlot.value].materialList[n].diffuseMap.stage0_map = Bitmaptexture fileName: newname ) ) else ( messagebox "extension requires 3 characters" ) ) if mattype.selection == 4 then ( if temptextnum == 3 then ( for n = 1 to NumSubMaterials.value do ( originalname = meditMaterials[MaterialSlot.value].materialList[n].diffuseMap.stage0_map.mipmap.filename numberchar = originalname.count newname = replace originalname (numberchar - 2) 3 extension.text meditMaterials[MaterialSlot.value].materialList[n].diffuseMap.stage0_map.mipmap = Bitmaptexture fileName: newname ) ) else ( messagebox "extension requires 3 characters" ) ) )--end change extension ---------------------------------------------------------------------------------------------------------------------- on addmipmap pressed do ( if mattype.selection == 1 do ( for m = 1 to NumSubMaterials.value do ( dmap = meditMaterials[MaterialSlot.value].materialList[m].diffuseMap meditMaterials[MaterialSlot.value].materialList[m].diffuseMap = Alchemy_Mipmap_Parameters () meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.mipmap = dmap meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.filter_type = (filter.state - 1) if generate.checked then ( meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.generate_mipmaps_enable = on )--end if genterate else ( meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.generate_mipmaps_enable = off )--end else if psx2.checked then ( meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.psx2_enable = on meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.psx2_mipmap_L = L.value meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.psx2_mipmap_K = K.value )--end if psx else ( meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.psx2_enable = off )--end else )---end for m mattype.selection = 2 addmipmap.enabled = false changemipmap.enabled = true )--end if mattype ------------------------------------ if mattype.selection == 3 do ( for m = 1 to NumSubMaterials.value do ( dmap = meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.stage0_map meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.stage0_map = Alchemy_Mipmap_Parameters () meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.stage0_map.mipmap = dmap meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.stage0_map.filter_type = (filter.state - 1) if generate.checked then ( meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.stage0_map.generate_mipmaps_enable = on )--end if generate else ( meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.stage0_map.generate_mipmaps_enable = off )--end else if psx2.checked then ( meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.stage0_map.psx2_enable = on meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.stage0_map.psx2_mipmap_L = L.value meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.stage0_map.psx2_mipmap_K = K.value )--end if psx2 else ( meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.stage0_map.psx2_enable = off )--end else )--end for for m mattype.selection = 4 mattype.selection = 2 addmipmap.enabled = false )--end if maptype --else --( --)--end else )---end addmipmap -------------------------------------------------------------------------------------------------------------------- on changemipmap pressed do ( if mattype.selection == 2 then ( for m = 1 to NumSubMaterials.value do ( meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.filter_type = (filter.state - 1) if generate.checked then ( meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.generate_mipmaps_enable = on )--end if genterate else ( meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.generate_mipmaps_enable = off )--end else if psx2.checked then ( meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.psx2_enable = on meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.psx2_mipmap_L = L.value meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.psx2_mipmap_K = K.value )--end if psx else ( meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.psx2_enable = off )--end else )---end for m )--end if mattype ------------------------------------ if mattype.selection == 4 then ( for m = 1 to NumSubMaterials.value do ( meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.stage0_map.filter_type = (filter.state - 1) if generate.checked then ( meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.stage0_map.generate_mipmaps_enable = on )--end if generate else ( meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.stage0_map.generate_mipmaps_enable = off )--end else if psx2.checked then ( meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.stage0_map.psx2_enable = on meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.stage0_map.psx2_mipmap_L = L.value meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.stage0_map.psx2_mipmap_K = K.value )--end if psx2 else ( meditMaterials[MaterialSlot.value].materialList[m].diffuseMap.stage0_map.psx2_enable = off )--end else )--end for for m )--end if maptype else ( )--end else )---end changemipmap --------------------------------------------------------------------------------------------------------------------- )--end of rollout ------------------------------------------------------------------------------------------------------------ --------------------------NEW ROLLOUT----------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------ rollout CombineMaterial "MASS Material Combiner" width:162 height:334 ( group "diffuse object" ( pickbutton DiffuseMap "Diffuse Map Object" width:140 height:20 align:#center spinner DiffuseMaterialSlot "Put in Slot Number" range:[1,100,2] type:#integer width:100 height:20 align:#right spinner DiffuseNumSubMaterials "# SubMaterials" range:[1,1000,1] type:#integer width:100 height:20 align:#right ) group "light object" ( pickbutton LightMap "Light Map Object" width:140 height:20 align:#center spinner LightMaterialSlot "Put in Slot Number" range:[1,100,3] type:#integer width:100 height:20 align:#right spinner LightNumSubMaterials "# SubMaterials" range:[1,1000,1] type:#integer width:100 height:20 align:#right ) group "combo object" ( button MakeSubMaterialType "Make Composite Material" width:140 height:20 align:#center spinner CompositeMaterialSlot "Put in Slot Number" range:[1,100,4] type:#integer width:100 height:20 align:#right ) ------------------------------------------------------------------------------------------------ -------------------------------------------------------------------------------------------------- on DiffuseMap picked Diffuse do ( DiffuseMap.text = Diffuse.name selobj=diffuse.name meditMaterials[DiffuseMaterialSlot.value] = Diffuse.material meditMaterials[DiffuseMaterialSlot.value].name = "diffuse channel" DiffuseNumSubMaterials.value = meditMaterials[DiffuseMaterialSlot.value].count UpdateMtlEditorBrackets ) ----------------------------------------------------------------------------------- on LightMap picked Light do ( LightMap.text = Light.name selobj=Light.name meditMaterials[LightMaterialSlot.value] = Light.material meditMaterials[LightMaterialSlot.value].name = "light channel" LightNumSubMaterials.value = meditMaterials[LightMaterialSlot.value].count UpdateMtlEditorBrackets ) --------------------------------------------------------------------------- on MakeSubMaterialType pressed do ( meditMaterials[CompositeMaterialSlot.value] = copy meditMaterials[DiffuseMaterialSlot.value] meditMaterials[CompositeMaterialSlot.value].name = "Diffuse Light Combo" for x = 1 to DiffuseNumSubMaterials.value do ( meditMaterials[CompositeMaterialSlot.value].materialList[x].diffuseMap = Alchemy_Texmap () meditMaterials[CompositeMaterialSlot.value].materialList[x].diffuseMap.stage0_map = meditMaterials[DiffuseMaterialSlot.value].materialList[x].diffuseMap meditMaterials[CompositeMaterialSlot.value].materialList[x].diffuseMap.stage1_map = meditMaterials[LightMaterialSlot.value].materialList[x].diffuseMap --meditMaterials[CompositeMaterialSlot.value].materialList[x].diffuseMap.map_Channel = 4 ) UpdateMtlEditorBrackets ) ) ------------------------------------------------------------------------------------ if MaterialMain != undefined then ( closerolloutFloater MaterialMain MaterialMain = Undefined ) MAterialMain= newRolloutFloater "MMM V1" 190 730 AddRollout MaterialModify MaterialMain AddRollout CombineMaterial MaterialMain rolledup:true )