698 lines
22 KiB
Plaintext
698 lines
22 KiB
Plaintext
fn IsMaster2 CName =
|
|
(
|
|
local DashPos = -1
|
|
for i = 1 to CName.count do
|
|
if CName[i] == "-" do
|
|
DashPos = i
|
|
if DashPos == -1 then
|
|
return true
|
|
else
|
|
(
|
|
if (substring CName (DashPos) 3) == "-00" then
|
|
return true
|
|
else
|
|
return false
|
|
)
|
|
)
|
|
|
|
fn RemBumps o =
|
|
(
|
|
local NMat
|
|
if classof o.mat == standardMaterial do
|
|
(
|
|
OMats = #(o.mat.diffuseMap, o.mat.opacityMap)
|
|
NMat = standardMaterial()
|
|
NMat.name = o.mat.name
|
|
NMat.diffusemap = o.mat.diffusemap
|
|
if Omats[2] != undefined do NMat.opacityMap = OMats[2]
|
|
)
|
|
|
|
if classOf o.mat == MultiMaterial do
|
|
(
|
|
NMat = MultiMaterial()
|
|
NMat.name = o.mat.name
|
|
ns = o.mat.numsubs
|
|
NMat.numsubs = ns
|
|
for i = 1 to ns do
|
|
(
|
|
NMat[i] = standardMaterial()
|
|
NMat[i].name = o.mat[i].name
|
|
NMat[i].diffuseMap = o.mat[i].diffuseMap
|
|
if o.mat[i].opacityMap != undefined do NMat[i].opacityMap = o.mat[i].opacityMap
|
|
)
|
|
)
|
|
gc()
|
|
return NMat
|
|
)
|
|
|
|
fn CleanIDs o =
|
|
(
|
|
if classof o.mat == Multimaterial do
|
|
(
|
|
local ns = o.mat.numsubs
|
|
for i = 1 to o.numfaces do
|
|
if (local iID = getFaceMatID o i) > ns do
|
|
setFaceMatID o i (mod iID ns)
|
|
)
|
|
|
|
if classof o.mat == StandardMaterial do
|
|
for i = 1 to o.numfaces do setFaceMatID o i 1
|
|
update o
|
|
)
|
|
|
|
Utility BitmapTools "Bitmap Tools"
|
|
(
|
|
|
|
local SubMaterialView, SubMatNameArray = #(), CNumsubs = 1, MaterialArray, CObj, CFaceArray,
|
|
NFaceArray, Cnf, WackyIDs, NMat, CSub, CMat, NewIDs, CID, OldBitmap, NewBitmap
|
|
|
|
local debug = false
|
|
|
|
group "Map Path Info"
|
|
(
|
|
radiobuttons infotype labels:#("All", "Selected")
|
|
button getMapInfo "Get Bitmap Info" width:140
|
|
label MapPathInfoLabel1 "Map Paths are Displayed"
|
|
label MapPathInfoLabel2 "in Listener Window"
|
|
)
|
|
|
|
group "Map Path Remapper"
|
|
(
|
|
checkbox WDialogs "Show Warning Dialogs" checked:true
|
|
button RemapSelected "Remap Selected" width:140
|
|
)
|
|
|
|
group "Multi-Sub Manager"
|
|
(
|
|
pickButton pickObject "Pick Object" width:140 enabled:false
|
|
button RebuildSelected "Rebuild Selected" width:140
|
|
button RemBumpsSel "Remove Bump Maps" width:140
|
|
)
|
|
|
|
|
|
group "Map Replacement"
|
|
(
|
|
label b1label "Old:" align:#left
|
|
button b1 width:100 align:#right offset:[5,-20]
|
|
label b2label "New:" align:#left
|
|
button b2 width:100 align:#right offset:[5,-20]
|
|
button remapSelection "Remap Selection"
|
|
)
|
|
|
|
on RemBumpsSel pressed do
|
|
(
|
|
ObjArray = selection as array
|
|
oc = ObjArray.count
|
|
ocInv = (1.0 / oc) * 100
|
|
ProgressStart "Removing Bumps...."
|
|
for i = 1 to oc do
|
|
(
|
|
ProgressUpdate (ocInv * i)
|
|
CObj = ObjArray[i]
|
|
CObj.mat = RemBumps CObj
|
|
if debug do print heapfree
|
|
)
|
|
ProgressEnd()
|
|
)
|
|
|
|
on b1 pressed do
|
|
(
|
|
if (OldBitmap = selectBitmap()) != undefined then
|
|
(
|
|
b1.text = (FileNameFromPath OldBitmap.filename)
|
|
) else (
|
|
OldBitmap = undefined
|
|
)
|
|
)
|
|
|
|
on b2 pressed do
|
|
(
|
|
if (NewBitmap = selectBitmap()) != undefined then
|
|
(
|
|
b2.text = (FileNameFromPath NewBitmap.filename)
|
|
) else (
|
|
NewBitmap = undefined
|
|
)
|
|
)
|
|
|
|
on remapSelection pressed do
|
|
(
|
|
if OldBitmap != undefined and NewBitmap != undefined then
|
|
(
|
|
ObjArray = for obj in selection collect obj
|
|
oc = ObjArray.count
|
|
SearchName = (FilenameFromPath OldBitmap.filename)
|
|
for i = 1 to oc do
|
|
(
|
|
o = ObjArray[i]
|
|
if ClassOf o.mat == standardmaterial do
|
|
(
|
|
if classof o.mat.diffusemap == bitmaptexture do
|
|
(
|
|
Cname = (FileNamefromPath o.mat.diffusemap.filename)
|
|
if CName == SearchName do
|
|
o.mat.diffusemap.filename = NewBitMap.filename
|
|
)
|
|
|
|
if classof o.mat.opacitymap == bitmaptexture do
|
|
(
|
|
Cname = (FileNamefromPath o.mat.opacitymap.filename)
|
|
if CName == SearchName do
|
|
o.mat.opacitymap.filename = NewBitMap.filename
|
|
)
|
|
|
|
if classof o.mat.bumpmap == bitmaptexture do
|
|
(
|
|
Cname = (FileNamefromPath o.mat.bumpmap.filename)
|
|
if CName == SearchName do
|
|
o.mat.bumpmap.filename = NewBitMap.filename
|
|
)
|
|
)
|
|
|
|
if ClassOf o.mat == Multimaterial do
|
|
(
|
|
ns = o.mat.numsubs
|
|
for j = 1 to ns do
|
|
(
|
|
if classof o.mat[j].diffusemap == bitmaptexture do
|
|
(
|
|
Cname = (FileNamefromPath o.mat[j].diffusemap.filename)
|
|
if CName == SearchName do
|
|
o.mat[j].diffusemap.filename = NewBitMap.filename
|
|
)
|
|
if classof o.mat[j].opacitymap == bitmaptexture do
|
|
(
|
|
Cname = (FileNamefromPath o.mat[j].opacitymap.filename)
|
|
if CName == SearchName do
|
|
o.mat[j].opacitymap.filename = NewBitMap.filename
|
|
)
|
|
if classof o.mat[j].bumpmap == bitmaptexture do
|
|
(
|
|
Cname = (FileNamefromPath o.mat[j].bumpmap.filename)
|
|
if CName == SearchName do
|
|
o.mat[j].bumpmap.filename = NewBitMap.filename
|
|
)
|
|
)
|
|
)
|
|
)
|
|
messageBox "Done"
|
|
) else (
|
|
MessageBox "Bitmaps are not defined"
|
|
)
|
|
|
|
)
|
|
|
|
on BitmapTools open do SubMatNameArray = #()
|
|
|
|
on BitmapTools close do removeRollout SubMaterialView
|
|
|
|
on PickObject Picked obj do
|
|
(
|
|
removeRollout SubMaterialView
|
|
SubMatNameArray = #()
|
|
CFaceArray = #()
|
|
NFaceArray = #()
|
|
if classof obj != editable_mesh then
|
|
(
|
|
if (querybox "Object is not an EditableMesh, do you want to Collapse?\n\n If you click No, a copy of the object will be made") == true then
|
|
(
|
|
ConvertToMesh Obj
|
|
CObj = obj
|
|
) else (
|
|
CObj = copy Obj
|
|
ConvertToMesh CObj
|
|
CObj.name = (Obj.name + "-Copy")
|
|
)
|
|
) else (
|
|
CObj = obj
|
|
ConvertToMesh CObj
|
|
)
|
|
Cnf = CObj.numfaces
|
|
NMat = undefined
|
|
-- build FaceID Array
|
|
for i = 1 to Cnf do (CFaceArray[i] = (getfaceMatID CObj i))
|
|
if classof CObj.mat == MultiMaterial then
|
|
(
|
|
CNumSubs = CObj.mat.numsubs
|
|
for i = 1 to CNumSubs do (append SubMatNameArray (i as string + ": " +(CObj.mat[i]).name))
|
|
addrollout SubMaterialView rolledup:false
|
|
) else (
|
|
messagebox "Picked Object does not have\n a MultiMaterial assigned to it!"
|
|
)
|
|
)
|
|
|
|
rollout SubMaterialView "Sub Materials"
|
|
(
|
|
listbox SubMatList "Sub Materials:" height:10 items:SubMatNameArray
|
|
button RemoveSubMaterial "Remove" width:145
|
|
button MoveUp "Bump Up" width:70 offset:[-37,0] enabled:false
|
|
button MoveDown "Bump Down" width:70 offset:[37,-26] enabled:false
|
|
button RebuildMat "Rebuild Material" width:145
|
|
button SimplifyMaterial "Simplify Material" width:145
|
|
label status1
|
|
|
|
|
|
-- *********************************************************************************************
|
|
-- Simplify Material
|
|
-- *********************************************************************************************
|
|
on SimplifyMaterial pressed do
|
|
(
|
|
MaterialArray = #()
|
|
CMat = CObj.mat
|
|
|
|
-- build the array of material definitions
|
|
for i = 1 to CNumSubs do
|
|
(
|
|
MaterialArray[i] = #("","","")
|
|
if classof CMat[i].diffusemap == bitmaptexture do
|
|
MaterialArray[i][1] = (filenameFromPath CObj.mat[i].diffusemap.filename)
|
|
if classof CMat[i].OpacityMap == bitmaptexture do
|
|
MaterialArray[i][2] = (filenameFromPath CObj.mat[i].OpacityMap.filename)
|
|
if classof CMat[i].BumpMap == bitmaptexture do
|
|
MaterialArray[i][3] = (filenameFromPath CObj.mat[i].BumpMap.filename)
|
|
)
|
|
NewIDs = #()
|
|
for i = 1 to MaterialArray.count do
|
|
(
|
|
NewIDs[i] = #(-1)
|
|
CMat = MaterialArray[i]
|
|
if (CMat[1] == "") and (CMat[2] == "") and (CMat[3] == "") then
|
|
(
|
|
1 == 1
|
|
) else (
|
|
for j = 1 to MaterialArray.count do
|
|
if i != j do
|
|
if (CMat[1] == MaterialArray[j][1]) and (CMat[2] == MaterialArray[j][2]) and (CMat[3] == MaterialArray[j][3]) do
|
|
(
|
|
format "Found Match: i = %; j = %\n" i j
|
|
append NewIDs[i] j
|
|
-- clear out that MaterialArray#() index
|
|
MaterialArray[j] = #("", "", "")
|
|
)
|
|
)
|
|
)
|
|
for i = 1 to NewIDs.count do
|
|
(
|
|
if NewIDs[i].count > 1 do
|
|
(
|
|
for j = 2 to NewIDs[i].count do
|
|
for k = 1 to CObj.numfaces do
|
|
(
|
|
CID = getfaceMatID CObj k
|
|
if CID == NewIDs[i][j] do (setFaceMatID CObj k i)
|
|
)
|
|
)
|
|
)
|
|
update CObj
|
|
)
|
|
|
|
on RemoveSubMaterial pressed do
|
|
(
|
|
CSub = SubMatList.selection
|
|
CMat = CObj.mat
|
|
|
|
-- build the new Multi Material
|
|
NMat = MultiMaterial()
|
|
NMat.name = CMat.name
|
|
NMat.numsubs = (CNumSubs - 1)
|
|
NMat.name = CMat.name
|
|
for i = 1 to NMat.numsubs do
|
|
(
|
|
if i >= CSub do (NMat[i] = CMat[i+1])
|
|
if i < CSub do (NMat[i] = CMat[i])
|
|
)
|
|
|
|
-- Modify CObj's face Mat ID's
|
|
WackyIDs = false
|
|
for i = 1 to CFaceArray.count do
|
|
(
|
|
Cid = CFaceArray[i]
|
|
if Cid == CSub do
|
|
(
|
|
CFaceArray[i] = 1000
|
|
WackyIDs = true
|
|
)
|
|
if Cid > CSub do (CFaceArray[i] = (Cid - 1))
|
|
)
|
|
-- apply the FaceMatID Array back to the object
|
|
for i = 1 to CObj.numfaces do
|
|
(
|
|
setfaceMatid CObj i CFaceArray[i]
|
|
)
|
|
-- Apply the new material to CObj
|
|
CObj.mat = NMat
|
|
|
|
-- Update all the interface stuff
|
|
removeRollout SubMaterialView
|
|
CNumSubs = CObj.mat.numsubs
|
|
SubMatNameArray = #()
|
|
for i = 1 to CNumSubs do
|
|
(
|
|
append SubMatNameArray (i as string + ": " +(CObj.mat[i]).name)
|
|
)
|
|
AddRollout SubMaterialView
|
|
if WackyIDs == true do (MessageBox "Faces found in object that have\nthe Material ID of the deleted Sub Material.\nSuch faces now have the\nMaterial ID of 1000")
|
|
)
|
|
|
|
on RebuildMat pressed do
|
|
(
|
|
FaceIDArray = #()
|
|
UniqueFaceIDArray = #()
|
|
ns = CObj.mat.numsubs
|
|
nf = CObj.numfaces
|
|
NMat = MultiMaterial()
|
|
FaceIDArray = for i = 1 to nf collect getFaceMatID CObj i
|
|
for i = 1 to nf do
|
|
(
|
|
if finditem UniqueFaceIDArray FaceIDArray[i] == 0 do (append UniqueFaceIDArray FaceIDArray[i])
|
|
)
|
|
NMat = MultiMaterial()
|
|
NMat.name = CObj.mat.name
|
|
NMat.numsubs = UniqueFaceIDArray.count
|
|
NewSubMatCount = 0
|
|
for i = 1 to ns do
|
|
(
|
|
status1.text = i as string
|
|
if findItem FaceIDArray i != 0 then
|
|
(
|
|
NewSubMatCount = NewSubMatCount + 1
|
|
for j = 1 to nf do
|
|
(
|
|
if FaceIDArray[j] == i do (SetFaceMatID CObj j NewSubMatCount) -- reset the face material ID
|
|
NMat[NewSubMatCount] = CObj.mat[i] -- toss the new Sub Material into the new MM
|
|
)
|
|
) else (
|
|
1 == 1
|
|
)
|
|
)
|
|
standard = false
|
|
if NMat.numsubs == 1 do
|
|
(
|
|
NMat2 = StandardMaterial()
|
|
NMat2.name = NMat.name
|
|
NMat2.diffusemap = bitmaptexture()
|
|
NMat2.diffusemap = NMat[1].diffusemap
|
|
if NMat[1].OpacityMap == bitmaptexture do
|
|
(
|
|
NMat2.Opacitymap = bitmaptexture()
|
|
NMat2.opacitymap = NMat[1].OpacityMap
|
|
)
|
|
if NMat[1].BumpMap == bitmaptexture do
|
|
(
|
|
NMat2.Bumpmap = bitmaptexture()
|
|
NMat2.BumpMap = NMat[1].Bumpmap
|
|
)
|
|
NMat = NMat2
|
|
NMat.name = NMat2.name
|
|
standard = true
|
|
)
|
|
CObj.mat = NMat -- asign the new material to CObj
|
|
if CObj.mat.name == "" do
|
|
CObj.mat.name = CObj.name
|
|
-- rebuild the interface
|
|
removeRollout SubMaterialView
|
|
if standard == false do
|
|
(
|
|
CNumSubs = CObj.mat.numsubs
|
|
SubMatNameArray = #()
|
|
for i = 1 to CNumSubs do
|
|
append SubMatNameArray (i as string + ": " +(CObj.mat[i]).name)
|
|
AddRollout SubMaterialView
|
|
)
|
|
)
|
|
) -- end rollout
|
|
|
|
|
|
-- *******************************************************************
|
|
-- * Rebuild Selection
|
|
-- *******************************************************************
|
|
on RebuildSelected pressed do
|
|
(
|
|
ObjArray = #()
|
|
-- make sure we're only getting geometry into the tool
|
|
g = geometry as array
|
|
for obj in selection do
|
|
if (findItem g obj) != 0 do
|
|
append ObjArray obj
|
|
|
|
oc = ObjArray.count
|
|
ocInv = (1.0 / oc) * 100 -- ProgressUpdate() scalar
|
|
HeapNow = heapFree
|
|
ProgressStart ("Rebuilding..." + oc as string)
|
|
for i = 1 to oc do
|
|
(
|
|
CObj = ObjArray[i]
|
|
HeapBefore = HeapNow
|
|
HeapNow = heapFree
|
|
-- if (mod i 10) == 0 do gc()
|
|
CleanIDs CObj -- fn call to CleanIDs()
|
|
MaterialArray = #()
|
|
CMat = CObj.mat
|
|
if CMat != undefined do
|
|
(
|
|
ProgressUpdate (i * ocInv)
|
|
if classof CMat == MultiMaterial do
|
|
(
|
|
CNumSubs = CMat.numsubs
|
|
for i = 1 to CNumSubs do
|
|
(
|
|
local submat = CMat[i]
|
|
if submat != undefined do
|
|
(
|
|
MaterialArray[i] = #("","","")
|
|
if classof submat.diffusemap == bitmaptexture do
|
|
MaterialArray[i][1] = (filenameFromPath submat.diffusemap.filename)
|
|
if classof submat.OpacityMap == bitmaptexture do
|
|
MaterialArray[i][2] = (filenameFromPath submat.OpacityMap.filename)
|
|
if classof submat.BumpMap == bitmaptexture do
|
|
MaterialArray[i][3] = (filenameFromPath submat.BumpMap.filename)
|
|
)
|
|
)
|
|
NewIDs = #()
|
|
for i = 1 to MaterialArray.count do
|
|
(
|
|
NewIDs[i] = #(-1)
|
|
local Mat = MaterialArray[i]
|
|
if (Mat[1] != "") or (Mat[2] != "") or (Mat[3] != "") do
|
|
for j = 1 to MaterialArray.count do
|
|
if i != j do
|
|
if (Mat[1] == MaterialArray[j][1]) and (Mat[2] == MaterialArray[j][2]) and (Mat[3] == MaterialArray[j][3]) do
|
|
(
|
|
append NewIDs[i] j
|
|
-- clear out that MaterialArray#() index
|
|
MaterialArray[j] = #("", "", "")
|
|
)
|
|
)
|
|
for i = 1 to NewIDs.count do
|
|
if NewIDs[i].count > 1 do
|
|
for j = 2 to NewIDs[i].count do
|
|
for k = 1 to CObj.numfaces do
|
|
(
|
|
CID = getfaceMatID CObj k
|
|
if CID == NewIDs[i][j] do (setFaceMatID CObj k i)
|
|
)
|
|
update CObj
|
|
FaceIDArray = #()
|
|
UniqueFaceIDArray = #()
|
|
CMat = CObj.mat
|
|
ns = CMat.numsubs
|
|
nf = CObj.numfaces
|
|
FaceIDArray = for i = 1 to nf collect getFaceMatID CObj i
|
|
for i = 1 to nf do
|
|
if finditem UniqueFaceIDArray FaceIDArray[i] == 0 do (append UniqueFaceIDArray FaceIDArray[i])
|
|
NMat = MultiMaterial()
|
|
NMat.name = CMat.name
|
|
NMat.numsubs = UniqueFaceIDArray.count
|
|
NewSubMatCount = 0
|
|
local smats = for m in CMat collect m
|
|
for i = 1 to ns do
|
|
if findItem FaceIDArray i != 0 do
|
|
(
|
|
NewSubMatCount = NewSubMatCount + 1
|
|
for j = 1 to nf do
|
|
(
|
|
if FaceIDArray[j] == i do (SetFaceMatID CObj j NewSubMatCount) -- reset the face material ID
|
|
NMat[NewSubMatCount] = smats[i] -- toss the new Sub Material into the new MultiMaterial
|
|
)
|
|
)
|
|
NewSubMatCount = FaceIDArray = UniqueFaceIDArray = ns = nf = i = undefined
|
|
if NMat.numsubs == 1 do
|
|
(
|
|
NMat2 = StandardMaterial()
|
|
NMat2.name = NMat.name
|
|
NMat2.diffusemap = bitmaptexture()
|
|
NMat2.diffusemap = NMat[1].diffusemap
|
|
if NMat[1].OpacityMap == bitmaptexture do
|
|
(
|
|
NMat2.Opacitymap = bitmaptexture()
|
|
NMat2.opacitymap = NMat[1].OpacityMap
|
|
)
|
|
if NMat[1].BumpMap == bitmaptexture do
|
|
(
|
|
NMat2.Bumpmap = bitmaptexture()
|
|
NMat2.BumpMap = NMat[1].Bumpmap
|
|
)
|
|
NMat = NMat2
|
|
NMat.name = NMat2.name
|
|
)
|
|
CObj.mat = NMat -- asign the new material to CObj
|
|
NMat = NMat2 = undefined
|
|
if CObj.mat.name == "" do CObj.mat.name = CObj.name
|
|
)
|
|
)
|
|
MaterialArray = CMat = NMat = NewSubMatCount = CNumSubs = undefined
|
|
)
|
|
-- gc()
|
|
ProgressEnd()
|
|
)
|
|
|
|
on getMapInfo pressed do
|
|
(
|
|
ObjArray = #()
|
|
if infotype.state == 1 do (ObjArray = for o in objects collect o)
|
|
if infotype.state == 2 do (ObjArray = for obj in selection collect obj)
|
|
numObj = ObjArray.count
|
|
for o in objArray do
|
|
(
|
|
if (isMaster2 o.name) do
|
|
(
|
|
format "Object: %\n" o.name
|
|
if classof o.mat == standardmaterial do
|
|
(
|
|
if classof o.mat.diffusemap == bitmaptexture do (format "%\n" o.mat.diffusemap.filename)
|
|
if classof o.mat.opacitymap == bitmaptexture do (format "%\n" o.mat.opacitymap.filename)
|
|
if classof o.mat.bumpmap == bitmaptexture do (format "%\n" o.mat.bumpmap.filename)
|
|
)
|
|
|
|
if classof o.mat == multimaterial do
|
|
(
|
|
ns = o.mat.numsubs
|
|
for i = 1 to ns do
|
|
(
|
|
if classof o.mat[i].diffusemap == bitmaptexture do (format "%\n" o.mat[i].diffusemap.filename)
|
|
if classof o.mat[i].opacitymap == bitmaptexture do (format "%\n" o.mat[i].opacitymap.filename)
|
|
if classof o.mat[i].bumpmap == bitmaptexture do (format "%\n" o.mat[i].bumpmap.filename)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
on RemapSelected pressed do
|
|
(
|
|
Objarray = for obj in selection collect obj
|
|
oc = ObjArray.count
|
|
if oc >= 1 then
|
|
(
|
|
if (SaveLoc = getsavePath caption:"Specify map folder") != undefined do
|
|
(
|
|
for i = 1 to oc do
|
|
(
|
|
o = ObjArray[i]
|
|
MapNotFound = false
|
|
|
|
-- if we have a standard material
|
|
if classof o.mat == StandardMaterial do
|
|
(
|
|
|
|
if classof o.mat.diffusemap == bitmaptexture do
|
|
(
|
|
MapName = FilenamefromPath o.mat.diffusemap.filename
|
|
NewFileName = (SaveLoc + "\\" + MapName)
|
|
if (getfiles NewFileName).count != 0 then
|
|
(
|
|
o.mat.diffusemap.filename = NewFileName
|
|
) else (
|
|
MapNotFound = true
|
|
if WDialogs.checked do
|
|
Messagebox ("Bitmap " + MapName + " was not found\nin the specified location.")
|
|
)
|
|
)
|
|
|
|
if classof o.mat.opacitymap == bitmaptexture do
|
|
(
|
|
MapName = FilenamefromPath o.mat.OpacityMap.filename
|
|
NewFileName = (SaveLoc + "\\" + MapName)
|
|
if (getfiles NewFileName).count != 0 then
|
|
(
|
|
o.mat.OpacityMap.filename = NewFilename
|
|
) else (
|
|
MapNotFound = true
|
|
if WDialogs.checked do
|
|
Messagebox ("Bitmap " + MapName + " was not found\nin the specified location.")
|
|
)
|
|
)
|
|
|
|
if classof o.mat.BumpMap == bitmaptexture do
|
|
(
|
|
MapName = FilenamefromPath o.mat.BumpMap.filename
|
|
NewFileName = (SaveLoc + "\\" + MapName)
|
|
if (getfiles NewFileName).count != 0 then
|
|
(
|
|
o.mat.BumpMap.filename = NewFilename
|
|
) else (
|
|
MapNotFound = true
|
|
if WDialogs.checked do
|
|
Messagebox ("Bitmap " + MapName + " was not found\nin the specified location.")
|
|
)
|
|
)
|
|
)
|
|
-- if we have a multi material
|
|
if classof o.mat == MultiMaterial do
|
|
(
|
|
MaterialArray = #()
|
|
ns = o.mat.numsubs
|
|
for i = 1 to ns do
|
|
(
|
|
if classof o.mat[i].diffusemap == bitmaptexture do
|
|
(
|
|
MapName = FilenamefromPath o.mat[i].diffusemap.filename
|
|
NewFileName = (SaveLoc + "\\" + MapName)
|
|
if (getfiles NewFileName).count != 0 then
|
|
(
|
|
o.mat[i].diffusemap.filename = NewFilename
|
|
) else (
|
|
MapNotFound = true
|
|
if WDialogs.checked do
|
|
Messagebox ("Bitmap " + MapName + " was not found\nin the specified location.")
|
|
)
|
|
)
|
|
|
|
if classof o.mat[i].opacitymap == bitmaptexture do
|
|
(
|
|
MapName = FilenamefromPath o.mat[i].OpacityMap.filename
|
|
NewFileName = (SaveLoc + "\\" + MapName)
|
|
if (getfiles NewFileName).count != 0 then
|
|
(
|
|
o.mat[i].OpacityMap.filename = NewFilename
|
|
) else (
|
|
MapNotFound = true
|
|
if WDialogs.checked do
|
|
Messagebox ("Bitmap " + MapName + " was not found\nin the specified location.")
|
|
)
|
|
)
|
|
|
|
if classof o.mat[i].BumpMap == bitmaptexture do
|
|
(
|
|
MapName = FilenamefromPath o.mat[i].BumpMap.filename
|
|
NewFileName = (SaveLoc + "\\" + MapName)
|
|
if (getfiles NewFileName).count != 0 then
|
|
(
|
|
o.mat[i].BumpMap.filename = NewFilename
|
|
) else (
|
|
MapNotFound = true
|
|
if WDialogs.checked do
|
|
Messagebox ("Bitmap " + MapName + " was not found\nin the specified location.")
|
|
)
|
|
)
|
|
)
|
|
)
|
|
if MapNotfound == true do format "Some maps in object % were not re-mapped\n" o.name
|
|
)
|
|
)
|
|
MessageBox "Done!"
|
|
) else (
|
|
MessageBox "Nothing Selected!\nPlease note the name of this tool...\n\n\"Remap SELECTED\""
|
|
)
|
|
)
|
|
) |