NEL3D_APPDATA_INTERFACE_FILE = 1423062700 -- Allocate 20 Me for the script heapSize += 15000000 nlErrorFilename = "W:/database/conversion.log" nlErrorStream = openFile nlErrorFilename mode:"w" if nlErrorStream == undefined then nlErrorStream = createFile nlErrorFilename -- Log a message fn nllog message = ( if nlErrorStream != undefined then ( format "%\n" message to:nlErrorStream flush nlErrorStream ) -- To the console print message ) include "nel_utility.ms" fn getAbsoluteSource t = ( return (mapPaths.getFullFilePath ((getFilenameFile (filenameFromPath t)) + ".png")) ) fn getAbsoluteDestination t = ( if ((findString t "\\\\Amiga") != undefined) then ( return ("W:\\" + (substring (getFilenamePath t) 11 -1) + "\\" + (getFilenameFile (filenameFromPath t)) + ".png") ) else if ((findString t "\\\\amiga") != undefined) then ( return ("W:\\" + (substring (getFilenamePath t) 11 -1) + "\\" + (getFilenameFile (filenameFromPath t)) + ".png") ) else if (((findString t "\\\\Database") != undefined) or ((findString t "\\\\database") != undefined)) and ((findString t "W:\\") == undefined) then ( return ("W:\\" + (getFilenamePath t) + "\\" + (getFilenameFile (filenameFromPath t)) + ".png") ) else if ((findString t "W:\\") != undefined) then ( return ((getFilenamePath t) + "\\" + (getFilenameFile (filenameFromPath t)) + ".png") ) else if ((findString t "E:\\Ryzom\\tryker") != undefined) then ( return "W:\\database\\Stuff\\Tryker\\Decors\\_textures\\Batiments\\" + (getFilenameFile (filenameFromPath t)) + ".png" ) else if ((findString t "\\tronc.") != undefined) then ( return "W:\\database\\database_proto\\stuff\\fyros\\objects\\tronc.png" ) else if ((findString t "\\trame.") != undefined) then ( return "W:\\database\\stuff\\lod_actors\\texture_lod\\trame.png" ) else if ((findString t "\\PR_MO_phytopsy_tete01_Boss.") != undefined) then ( return "W:\\database\\Stuff\\Tryker\\Agents\\_textures\\monster\\PR_MO_phytopsy_tete01_Boss.png" ) else ( return t ) ) fn getMaxDestination mf = ( if ((findString mf "\\\\Amiga") != undefined) then ( return ("W:\\" + (substring mf 11 -1)) ) else if ((findString mf "\\\\amiga") != undefined) then ( return ("W:\\" + (substring mf 11 -1)) ) else if (((findString mf "\\\\Database") != undefined) or ((findString mf "\\\\database") != undefined)) and ((findString mf "W:\\") == undefined) then ( return ("W:\\" + mf) ) else ( return mf ) ) fn getFixedTexturePath t = ( absoluteDestination = (getAbsoluteDestination t) if (not (doesFileExist absoluteDestination)) and (((findString t "\\Stuff\\Fyros\\Decors\\_textures\\Batiments") != undefined) or ((findString t "\\Stuff\\Fyros\\Decors\\_textures\\Accessories\\Vv2\\") != undefined)) then ( testDestination = ("W:\\database\\stuff\\Fyros\\Agents\\_textures\\Accessories\\" + (getFilenameFile (filenameFromPath t)) + ".png") if (doesFileExist testDestination) then ( return testDestination ) ) if (not (doesFileExist absoluteDestination)) and (((findString t "\\Stuff\\Fyros\\Decors\\_textures\\Batiments") != undefined) or ((findString t "\\Stuff\\Fyros\\Decors\\_textures\\Accessories\\") != undefined)) then ( testDestination = ("W:\\database\\stuff\\Fyros\\Agents\\_textures\\Accessories\\Vv2\\" + (getFilenameFile (filenameFromPath t)) + ".png") if (doesFileExist testDestination) then ( return testDestination ) ) if (not (doesFileExist absoluteDestination)) and ((findString t "\\Stuff\\Fyros\\Decors\\_textures\\Accessories") != undefined) then ( testDestination = ("W:\\database\\stuff\\Fyros\\Agents\\_textures\\Batiments\\" + (getFilenameFile (filenameFromPath t)) + ".png") if (doesFileExist testDestination) then ( return testDestination ) ) if (not (doesFileExist absoluteDestination)) and ((findString t "\\Stuff\\Tryker\\Decors\\_textures\\batiments") != undefined) then ( testDestination = ("W:\\database\\Stuff\\Tryker\\Decors\\_textures\\batiments\\noutilise\\" + (getFilenameFile (filenameFromPath t)) + ".png") if (doesFileExist testDestination) then ( return testDestination ) ) if (not (doesFileExist absoluteDestination)) and ((findString t "\\Stuff\\Tryker\\Decors\\_textures\\batiments") != undefined) then ( testDestination = ("W:\\database\\Stuff\\Tryker\\Decors\\_textures\\batiments\\vv2\\" + (getFilenameFile (filenameFromPath t)) + ".png") if (doesFileExist testDestination) then ( return testDestination ) ) if (not (doesFileExist absoluteDestination)) and ((findString t "\\Stuff\\Tryker\\Decors\\_textures\\batiments") != undefined) then ( testDestination = ("W:\\database\\Stuff\\Tryker\\Decors\\_textures\\batiments\\tempautel\\" + (getFilenameFile (filenameFromPath t)) + ".png") if (doesFileExist testDestination) then ( return testDestination ) ) if (not (doesFileExist absoluteDestination)) and ((findString t "\\Stuff\\Tryker\\Decors\\_textures\\batiments") != undefined) then ( testDestination = ("W:\\database\\Stuff\\Tryker\\Decors\\_textures\\batiments\\" + (getFilenameFile (filenameFromPath t)) + ".png") if (doesFileExist testDestination) then ( return testDestination ) ) if (not (doesFileExist absoluteDestination)) and ((findString t "\\Stuff\\Fyros\\Decors\\_textures") != undefined) then ( testDestination = ("W:\\database\\Stuff\\Fyros\\Decors\\_textures\\Batiments\\" + (getFilenameFile (filenameFromPath t)) + ".png") if (doesFileExist testDestination) then ( return testDestination ) ) if (not (doesFileExist absoluteDestination)) and ((findString t "\\Stuff\\Fyros\\Decors\\_textures") != undefined) then ( testDestination = ("W:\\database\\Stuff\\Tryker\\Decors\\_textures\\Batiments\\" + (getFilenameFile (filenameFromPath t)) + ".png") if (doesFileExist testDestination) then ( return testDestination ) ) if (not (doesFileExist absoluteDestination)) and ((findString t "\\sky_V2\\textures\\textures") != undefined) then ( testDestination = ("W:\\database\\sky_V2\\textures\\textures\\nodds\\" + (getFilenameFile (filenameFromPath t)) + ".png") if (doesFileExist testDestination) then (return testDestination) testDestination = ("W:\\database\\sky_V2\\textures\\textures\\desert\\" + (getFilenameFile (filenameFromPath t)) + ".png") if (doesFileExist testDestination) then (return testDestination) testDestination = ("W:\\database\\sky_V2\\textures\\textures\\forest\\" + (getFilenameFile (filenameFromPath t)) + ".png") if (doesFileExist testDestination) then (return testDestination) testDestination = ("W:\\database\\sky_V2\\textures\\textures\\jungle\\" + (getFilenameFile (filenameFromPath t)) + ".png") if (doesFileExist testDestination) then (return testDestination) testDestination = ("W:\\database\\sky_V2\\textures\\textures\\lacustre\\" + (getFilenameFile (filenameFromPath t)) + ".png") if (doesFileExist testDestination) then (return testDestination) ) return absoluteDestination ) fn renameTexture t = ( try ( if (t != undefined) then ( if (classof t == NelBitmapTexture) then ( if (t.bitmap1FileName != "") then (t.bitmap1FileName = getFixedTexturePath t.bitmap1FileName) if (t.bitmap2FileName != "") then (t.bitmap2FileName = getFixedTexturePath t.bitmap2FileName) if (t.bitmap3FileName != "") then (t.bitmap3FileName = getFixedTexturePath t.bitmap3FileName) if (t.bitmap4FileName != "") then (t.bitmap4FileName = getFixedTexturePath t.bitmap4FileName) if (t.bitmap5FileName != "") then (t.bitmap5FileName = getFixedTexturePath t.bitmap5FileName) if (t.bitmap6FileName != "") then (t.bitmap6FileName = getFixedTexturePath t.bitmap6FileName) if (t.bitmap7FileName != "") then (t.bitmap7FileName = getFixedTexturePath t.bitmap7FileName) if (t.bitmap8FileName != "") then (t.bitmap8FileName = getFixedTexturePath t.bitmap8FileName) renameTexture t.bitmap if (t.bitmap.fileName == undefined) then ( if (doesFileExist (mapPaths.getFullFilePath t.bitmap1FileName)) then (t.bitmap.fileName = t.bitmap1FileName) else if (doesFileExist (mapPaths.getFullFilePath t.bitmap2FileName)) then (t.bitmap.fileName = t.bitmap2FileName) else if (doesFileExist (mapPaths.getFullFilePath t.bitmap3FileName)) then (t.bitmap.fileName = t.bitmap3FileName) else if (doesFileExist (mapPaths.getFullFilePath t.bitmap4FileName)) then (t.bitmap.fileName = t.bitmap4FileName) else if (doesFileExist (mapPaths.getFullFilePath t.bitmap5FileName)) then (t.bitmap.fileName = t.bitmap5FileName) else if (doesFileExist (mapPaths.getFullFilePath t.bitmap6FileName)) then (t.bitmap.fileName = t.bitmap6FileName) else if (doesFileExist (mapPaths.getFullFilePath t.bitmap7FileName)) then (t.bitmap.fileName = t.bitmap7FileName) else if (doesFileExist (mapPaths.getFullFilePath t.bitmap8FileName)) then (t.bitmap.fileName = t.bitmap8FileName) ) else if not (doesFileExist (mapPaths.getFullFilePath t.bitmap.fileName)) then ( if (doesFileExist (mapPaths.getFullFilePath t.bitmap1FileName)) then (t.bitmap.fileName = t.bitmap1FileName) else if (doesFileExist (mapPaths.getFullFilePath t.bitmap2FileName)) then (t.bitmap.fileName = t.bitmap2FileName) else if (doesFileExist (mapPaths.getFullFilePath t.bitmap3FileName)) then (t.bitmap.fileName = t.bitmap3FileName) else if (doesFileExist (mapPaths.getFullFilePath t.bitmap4FileName)) then (t.bitmap.fileName = t.bitmap4FileName) else if (doesFileExist (mapPaths.getFullFilePath t.bitmap5FileName)) then (t.bitmap.fileName = t.bitmap5FileName) else if (doesFileExist (mapPaths.getFullFilePath t.bitmap6FileName)) then (t.bitmap.fileName = t.bitmap6FileName) else if (doesFileExist (mapPaths.getFullFilePath t.bitmap7FileName)) then (t.bitmap.fileName = t.bitmap7FileName) else if (doesFileExist (mapPaths.getFullFilePath t.bitmap8FileName)) then (t.bitmap.fileName = t.bitmap8FileName) ) t.delegate.RGBOutput = 0 t.delegate.monoOutput = 1 t.delegate.alphasource = 2 ) else if (classof t == Reflect_Refract) then ( if (t.bitmapName[1] != undefined) then (t.bitmapName[1] = getFixedTexturePath t.bitmapName[1]) if (t.bitmapName[2] != undefined) then (t.bitmapName[2] = getFixedTexturePath t.bitmapName[2]) if (t.bitmapName[3] != undefined) then (t.bitmapName[3] = getFixedTexturePath t.bitmapName[3]) if (t.bitmapName[4] != undefined) then (t.bitmapName[4] = getFixedTexturePath t.bitmapName[4]) if (t.bitmapName[5] != undefined) then (t.bitmapName[5] = getFixedTexturePath t.bitmapName[5]) if (t.bitmapName[6] != undefined) then (t.bitmapName[6] = getFixedTexturePath t.bitmapName[6]) if (t.outputname != undefined) then (t.outputname = getFixedTexturePath t.outputname) ) else ( if (t.fileName != undefined) then (t.fileName = getFixedTexturePath t.fileName) if (classof t == BitmapTexture) then ( t.RGBOutput = 0 t.monoOutput = 1 t.alphasource = 2 ) ) ) ) catch ( ) ) rollout assets_png_rollout "Properties" ( fn do_it = ( for m in getClassInstances BitmapTexture do ( renameTexture m ) for m in getClassInstances NelBitmapTexture do ( renameTexture m ) for m in getClassInstances NelMaterial do ( renameTexture m.tTexture_1 renameTexture m.tTexture_2 renameTexture m.tTexture_3 renameTexture m.tTexture_4 renameTexture m.tTexture_5 renameTexture m.tTexture_6 renameTexture m.tTexture_7 renameTexture m.tTexture_8 m.delegate.DiffuseMapEnable = m.bEnableSlot_1 m.delegate.DiffuseMap = m.tTexture_1 m.delegate.AmbientMapEnable = m.bEnableSlot_1 m.delegate.AmbientMap = m.tTexture_1 m.delegate.SpecularMapEnable = m.bEnableSlot_2 m.delegate.SpecularMap = m.tTexture_2 m.delegate.SelfIllumMap = undefined m.delegate.OpacityMap = undefined m.delegate.FilterMap = undefined m.delegate.BumpMap = undefined m.delegate.DisplacementMap = undefined m.delegate.ReflectionMap = undefined m.delegate.RefractionMap = undefined ) max select none for node in geometry do ( itfMaxFile = getAppData node NEL3D_APPDATA_INTERFACE_FILE if (itfMaxFile != undefined) then ( if (itfMaxFile != "") then ( itfMaxFile = getMaxDestination itfMaxFile setAppData node NEL3D_APPDATA_INTERFACE_FILE itfMaxFile ) ) ) actionMan.executeAction 0 "40021" -- Selection: Select All actionMan.executeAction 0 "311" -- Tools: Zoom Extents All Selected actionMan.executeAction 0 "40807" -- Views: Activate All Maps actionMan.executeAction 0 "63508" -- Views: Standard Display with Maps actionMan.executeAction 0 "40043" -- Selection: Select None max views redraw return 1 ) -- This script is a base script to include to add multiple functionality to your script -- To use this script -- Include it in your script into the rollout at the beginning. -- Implement a do_it function to do the job in your rollout. -- The function should retun -1 if an arror occured, else the count of modification done -- It the function returns <1, the project will not be overwritten Group "Running properties" ( RadioButtons SourceFiles "Source projects" labels:#("Current project", "All Projects in a folder") align:#left Label DirectoryLabel "Source directory" align:#left EditText Directory "" width:500 align:#left enabled:false Button BrowseDirectory "Browse..." align:#left enabled:false CheckBox Recurse "Look in subfolders" checked:true enabled:false CheckBox Test "Test only, do not save" checked:false enabled:false CheckBox BackupFiles "Backup files" checked:false enabled:false CheckBox StopOnError "Stop on error" checked:false enabled:false CheckBox UseTag "Use tag" checked:false enabled:false Label ProgressText width:500 align:#left ProgressBar Progress width:500 align:#left Button GoButton "Go" width:500 align:#left ) local countModifications local countErrors local fileModified local fileParsed fn UpdateData = ( if SourceFiles.state == 2 then isSourceDir = true else isSourceDir = false if Test.checked == true then isTest = true else isTest = false Directory.enabled = isSourceDir BrowseDirectory.enabled = isSourceDir Recurse.enabled = isSourceDir Test.enabled = isSourceDir BackupFiles.enabled = isSourceDir and (isTest == false) StopOnError.enabled = isSourceDir UseTag.enabled = isSourceDir ) on SourceFiles changed state do ( UpdateData () ) on Test changed state do ( UpdateData () ) fn call_do_it = ( local result -- One more project fileParsed = fileParsed + 1 -- Call it result = do_it () -- Error ? if result < 0 then countErrors = countErrors + 1 else countModifications = countModifications + result -- Return result return result ) fn BackupFile file = ( local i local newFilename i = 0 while true do ( -- New file name newFilename = file + ".backup_" + (i as string) -- File exist ? if (fileExist newFilename) == false then ( if (copyFile file newFilename) == false then return false else return true ) i = i + 1 ) ) fn RecurseFolder currentDirectory = ( resetMAXFile #noprompt local result local file local files local origAnimStart local origAnimEnd local origFrameRate -- Parse files files = getFiles (currentDirectory+"/*.max") -- For each files for i = 1 to files.count do ( -- File name file = files[i] -- Progress bar ProgressText.text = "In directory "+currentDirectory+", compute file \"" + (getFilenameFile file) + "\"" Progress.value = i*100/files.count if (UseTag.checked == false) or ((NeLTestFileDate file "W:/database/conversion.tag") == true) then ( resetMAXFile #noprompt nllog("CONVERT " + file) -- Open the max project if loadMaxFile file quiet:true == true then ( origAnimStart = animationRange.start origAnimEnd = animationRange.end origFrameRate = frameRate resetMAXFile #noprompt animationRange = interval origAnimStart origAnimEnd frameRate = origFrameRate -- Merge the max project if mergeMaxFile file quiet:true == true then ( result = call_do_it () -- Error ? if result < 0 then ( if StopOnError.checked == true then Messagebox ("Error in file " + file) ) else ( -- Save the max project ? if (Test.checked == false) and (result != 0) then ( -- Backup the max project ? local ok ok = true if BackupFiles.checked == true then ( -- Backup the file if (BackupFile file) == false then ( -- Don't save the file because backup has failed ok = false if StopOnError.checked == true then Messagebox ("Can't backup file " + file) -- One more error countErrors = countErrors + 1 ) ) -- Save the max project ? if ok == true then ( if (saveMaxFile file) == true then ( fileModified = fileModified + 1 ) else ( if StopOnError.checked == true then Messagebox ("Can't write file " + file) -- One more error countErrors = countErrors + 1 ) ) ) ) ) else ( if StopOnError.checked == true then Messagebox ("Can't load file " + file) -- One more error countErrors = countErrors + 1 ) ) ) else ( nllog("SKIP " + file + " by tag") ) ) -- Parse sub directory ? if (Recurse.checked == true) then ( local directories -- Get the directories directories = getDirectories (currentDirectory+"/*") -- For each directories for dir in directories do ( RecurseFolder dir ) ) ) on BrowseDirectory pressed do ( local dir try ( dir = getSavePath () -- caption:"Select the projects directory" if dir != undefined then Directory.text = dir ) catch ( ) ) on GoButton pressed do ( -- Reset count countModifications = 0 countErrors = 0 fileModified = 0 fileParsed = 0 -- Get files in the shape_source_directory if SourceFiles.state == 2 then ( -- Should warning user ? if (SourceFiles.state == 2) and (Test.checked == false) then ( -- Warning ! if ((queryBox "Warning, all the files in the specified folders will be overwrited.\nYou should backup your files before executing this script.\nDo you want to continue executing this script ?" beep:true) == true) then RecurseFolder (adjustPathStringForScript Directory.text) ) else ( RecurseFolder (adjustPathStringForScript Directory.text) ) ) else ( -- Just compute the current project call_do_it () ) -- Show errors ProgressText.text = (fileParsed as string) + " project(s) opened, " + (countModifications as string) + " project modification(s), " + (fileModified as string) + " project(s) saved, " + (countErrors as string) + " error(s)." Progress.value = 100 ) ) assets_png_floater = newRolloutFloater "NeL Assets PNG Database" 550 874 addrollout assets_png_rollout assets_png_floater rolledUp:false