1059 lines
28 KiB
Plaintext
Executable File
1059 lines
28 KiB
Plaintext
Executable File
--
|
|
-- File:: %RS_TOOLSLIB%/util/ragebuilder/convert.rbs
|
|
-- Description:: Asset conversion control script.
|
|
--
|
|
|
|
-----------------------------------------------------------------------------
|
|
-- Uses
|
|
-----------------------------------------------------------------------------
|
|
require( 'archive.rbs' )
|
|
require( 'util.rbs' )
|
|
|
|
-----------------------------------------------------------------------------
|
|
-- Locals
|
|
-----------------------------------------------------------------------------
|
|
|
|
local outputSettings = false
|
|
local dirTemp = "c:/temp/"
|
|
local isTemporary = false
|
|
local doRebuild = false
|
|
local customScript = "custom.rbs"
|
|
local customScriptEnd = "custom_finish.rbs"
|
|
|
|
-----------------------------------------------------------------------------
|
|
-- Functions
|
|
-----------------------------------------------------------------------------
|
|
|
|
--
|
|
-- name: setBuildFlags
|
|
-- desc: Set Ragebuilder build options.
|
|
--
|
|
function setBuildFlags( options )
|
|
|
|
textureMinValue = 1
|
|
textureMaxValue = -1
|
|
textureScale = 1.0
|
|
maxMipMapCount = -1
|
|
compressResources = 0
|
|
triStripping = 1
|
|
texOverload = ""
|
|
|
|
if options ~= nil then
|
|
|
|
in_textureMinValue = getParam(options, "texMinValue")
|
|
in_textureMaxValue = getParam(options, "texMaxValue")
|
|
in_textureScale = getParam(options, "texScale")
|
|
in_maxMipMapCount = getParam(options, "texMaxMips")
|
|
in_compressResources = getParam(options, "compressResources")
|
|
in_triStripping = getParam(options, "triStrip")
|
|
in_texOverload = getParam(options, "texOverload")
|
|
|
|
if in_textureMinValue ~= nil then
|
|
textureMinValue = 0 + in_textureMinValue
|
|
end
|
|
if in_textureMaxValue ~= nil then
|
|
textureMaxValue = 0 + in_textureMaxValue
|
|
end
|
|
if in_textureScale ~= nil then
|
|
textureScale = 0 + in_textureScale
|
|
end
|
|
if in_maxMipMapCount ~= nil then
|
|
maxMipMapCount = 0 + in_maxMipMapCount
|
|
end
|
|
if in_compressResources ~= nil then
|
|
compressResources = 0 + in_compressResources
|
|
end
|
|
if in_triStripping ~= nil then
|
|
triStripping = 0 + in_triStripping
|
|
end
|
|
if in_texOverload ~= nil then
|
|
texOverload = in_texOverload
|
|
end
|
|
end
|
|
|
|
set_texture_minmipmap(textureMinValue)
|
|
set_texture_max(textureMaxValue)
|
|
set_texture_scale(textureScale)
|
|
set_mipmapcount_max(maxMipMapCount)
|
|
set_overload_texture_src(texOverload)
|
|
set_compress_resources(compressResources)
|
|
set_tristripping(triStripping)
|
|
end
|
|
|
|
--
|
|
-- name: convertInner
|
|
-- desc: Convert a file to a specific platform based on extension.
|
|
--
|
|
function convertInner( input, output, platform, projBin )
|
|
|
|
output = convert_filename_to_platform( output, platform )
|
|
create_leadingpath(output)
|
|
|
|
if ( input == output ) then
|
|
return ( true )
|
|
end
|
|
|
|
trace1( "Converting " .. input .. " to " .. output .. " [" .. platform .. "]" )
|
|
|
|
registerTextureNames( )
|
|
|
|
local filename = get_filename_from_path( input )
|
|
local ext = get_extension_from_path( filename )
|
|
local secext = get_extension_from_path( remove_extension_from_path( filename ) )
|
|
local converted = true
|
|
|
|
if( ext==".rpf" ) then
|
|
result = convertRpf( input, output, platform, projBin )
|
|
elseif ( ext==".zip" and secext==nil ) then
|
|
result = convertZip( input, output, platform, projBin )
|
|
elseif( ext==".idr" or secext==".idr" ) then
|
|
result = convertIdr( input, output, platform )
|
|
elseif( ext==".itd" or secext==".itd" ) then
|
|
result = convertItd( input, output, platform )
|
|
elseif( ext==".ibd" or secext==".ibd" ) then
|
|
result = convertIbd( input, output, platform )
|
|
elseif( ext==".ibn" or secext==".ibn" ) then
|
|
result = convertIbn( input, output, platform )
|
|
elseif( ext==".idd" or secext==".idd" ) then
|
|
result = convertIdd( input, output, platform )
|
|
elseif( ext==".ild" or secext==".ild" ) then
|
|
result = convertIld( input, output, platform )
|
|
elseif( ext==".ift" or secext==".ift" ) then
|
|
result = convertIft( input, output, platform )
|
|
elseif( ext==".ibs" or secext==".ibs" ) then
|
|
result = convertIbs( input, output, platform )
|
|
elseif( ext==".isd" or secext==".isd" ) then
|
|
result = convertIsd( input, output, platform )
|
|
elseif( ext==".ipt" or secext==".ipt" ) then
|
|
result = convertIpt( input, output, platform )
|
|
elseif( ext==".icd" or secext==".icd" ) then
|
|
result = convertIcd( input, output, platform )
|
|
elseif( ext==".ipm" or secext==".ipm" ) then
|
|
result = convertIpm( input, output, platform )
|
|
elseif( ext==".ied" or secext==".ied" ) then
|
|
result = convertIed( input, output, platform )
|
|
elseif( ext==".ifd" or secext==".ifd" ) then
|
|
result = convertIfd( input, output, platform )
|
|
elseif( ext==".ipl" ) then
|
|
result = convertIpl( input, output, platform )
|
|
elseif( ext==".ind" ) then
|
|
result = convertInd( input, output, platform )
|
|
elseif( ext==".inv" ) then
|
|
result = convertInv( input, output, platform )
|
|
elseif( ext==".inh" ) then
|
|
result = convertInh( input, output, platform )
|
|
elseif( ext==".ihn" ) then
|
|
result = convertIhn( input, output, platform )
|
|
elseif( ext==".iwr" ) then
|
|
result = convertIwr( input, output, platform )
|
|
elseif( ext==".ivr" ) then
|
|
result = convertIvr( input, output, platform )
|
|
elseif( ext==".iam" ) then
|
|
result = convertIam( input, output, platform )
|
|
elseif( ext==".meta" and secext==".pso" ) then
|
|
result = convertMeta( input, output, platform, true )
|
|
elseif( ext==".meta" ) then
|
|
result = convertMeta( input, output, platform, false )
|
|
elseif ( ext==".imap" ) then
|
|
result = convertImap( input, output, platform )
|
|
elseif ( ext==".ityp" ) then
|
|
result = convertItyp( input, output, platform )
|
|
elseif ( ext==".imf" ) then
|
|
result = convertImf( input, output, platform )
|
|
elseif ( ext==".mrf" ) then
|
|
result = convertDefault( input, output, platform )
|
|
elseif ( ext==".gfx" ) then
|
|
result = convertDefault( input, output, platform )
|
|
elseif ( ext==".cut" ) then
|
|
result = convertDefault( input, output, platform )
|
|
elseif ( ext==".cutxml" ) then
|
|
result = convertCutxml( input, output, platform )
|
|
elseif ( ext==".ipdb" ) then
|
|
result = convertDefault( input, output, platform )
|
|
elseif ( ext==".sco" ) then
|
|
result = convertSco( input, output, platform )
|
|
elseif( ext==".ildb" ) then
|
|
result = convertIldb( input, output, platform )
|
|
else
|
|
--# JWR - B* 692193 - prevent files from being blindly copied to target data
|
|
converted = false
|
|
result = true
|
|
end
|
|
|
|
if converted then
|
|
set_file_attrib(output, "readonly", false)
|
|
end
|
|
|
|
return ( result )
|
|
end
|
|
|
|
--
|
|
-- name: execCustomScript
|
|
-- desc: Requires a pack:/ custom script for handling custom properties.
|
|
--
|
|
function execCustomScript( mount )
|
|
|
|
script = mount .. customScript
|
|
if file_exists( script ) then
|
|
print( "Executing " .. customScript .. "..." )
|
|
require( script )
|
|
end
|
|
end
|
|
|
|
--
|
|
-- name: execCustomScriptEnd
|
|
-- desc: Requires a pack:/ custom script end for cleaning up custom properties.
|
|
--
|
|
function execCustomScriptEnd( mount )
|
|
|
|
script = mount .. customScriptEnd
|
|
if file_exists( script ) then
|
|
print( "Executing " .. customScriptEnd .. "..." )
|
|
require( script )
|
|
end
|
|
end
|
|
|
|
|
|
-- convert (default) - merely copies the file.
|
|
function convertDefault( input, output, platform )
|
|
|
|
if (copy_file( input, output ) == 0) then
|
|
error("Error copying " .. input .. " to " .. output)
|
|
return 0
|
|
end
|
|
|
|
set_file_attrib(output, "readonly", false)
|
|
|
|
return 1
|
|
end
|
|
|
|
--
|
|
-- name: convertIpt
|
|
-- desc: Convert effect IPT asset
|
|
--
|
|
function convertIpt( input, output, platform )
|
|
|
|
local inbasename = remove_all_extensions_from_path(input)
|
|
local effectname = get_filename_from_path(inbasename)
|
|
local outbasename = remove_all_extensions_from_path(output)
|
|
|
|
start_build()
|
|
mount( input, "pack:/" )
|
|
execCustomScript( "pack:/" )
|
|
set_effectpath( "pack:/" )
|
|
load_effect( "pack:/fxlists/" .. effectname .. "/" .. effectname .. ".fxlist" )
|
|
local result = save_effect(outbasename)
|
|
execCustomScriptEnd( "pack:/" )
|
|
unmount( input )
|
|
return result
|
|
end
|
|
|
|
|
|
-- convert path region
|
|
function convertInd( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path(output)
|
|
start_build()
|
|
|
|
load_pathregion(input)
|
|
local result = save_pathregion(basename)
|
|
|
|
return result
|
|
|
|
end
|
|
|
|
|
|
-- convert navmesh
|
|
function convertInv( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path(output)
|
|
start_build()
|
|
|
|
load_navmesh(input)
|
|
local result = save_navmesh(basename)
|
|
|
|
return result
|
|
|
|
end
|
|
|
|
-- convert heightmesh
|
|
function convertInh( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path(output)
|
|
start_build()
|
|
|
|
load_heightmesh(input)
|
|
local result = save_heightmesh(basename)
|
|
|
|
return result
|
|
|
|
end
|
|
|
|
-- convert hierarchical nav data
|
|
function convertIhn( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path(output)
|
|
start_build()
|
|
|
|
load_hierarchicalnav(input)
|
|
local result = save_hierarchicalnav(basename)
|
|
|
|
return result
|
|
|
|
end
|
|
|
|
-- convert waypoint recording data
|
|
function convertIwr( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path(output)
|
|
start_build()
|
|
|
|
load_waypointrecording(input)
|
|
local result = save_waypointrecording(basename)
|
|
|
|
return result
|
|
|
|
end
|
|
|
|
--
|
|
-- name: convertItd
|
|
-- desc: Convert texture dictionary ITD asset
|
|
--
|
|
function convertItd( input, output, platform )
|
|
|
|
local basename = remove_all_extensions_from_path(output)
|
|
local corename = get_filename_from_path(basename)
|
|
|
|
push_buildvars()
|
|
|
|
start_build()
|
|
mount(input, "pack:/" )
|
|
execCustomScript( "pack:/" )
|
|
|
|
if file_exists( "pack:/" .. "info.rbs" ) then
|
|
require( "pack:/" .. "info.rbs" )
|
|
end
|
|
|
|
load_textures( "pack:/" )
|
|
local result = save_texture_dictionary( basename, "hi" )
|
|
|
|
execCustomScriptEnd( "pack:/" )
|
|
unmount(input)
|
|
|
|
pop_buildvars()
|
|
|
|
return ( result )
|
|
end
|
|
|
|
--
|
|
-- name: convertIdr
|
|
-- desc: Convert drawable IDR asset
|
|
--
|
|
function convertIdr( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path(output)
|
|
|
|
start_build()
|
|
mount( input, "pack:/" )
|
|
execCustomScript( "pack:/" )
|
|
|
|
local subname = get_filename_from_path(remove_extension_from_path(input))
|
|
|
|
if file_exists( "pack:/" .. "info.rbs" ) then
|
|
require( "pack:/" .. "info.rbs" )
|
|
end
|
|
|
|
local texture_count = load_textures( "pack:/" )
|
|
if ( texture_count > 0 ) then
|
|
set_auto_texdict( true )
|
|
end
|
|
|
|
load_model( "pack:/" .. "entity.type" )
|
|
local result = save_model( basename )
|
|
|
|
-- Save the (optional) hi-MIP texture dictionary.
|
|
result = result and save_texture_dictionary_himip( basename, "hidr" )
|
|
|
|
execCustomScriptEnd( "pack:/" )
|
|
unmount( input )
|
|
|
|
set_auto_texdict(false)
|
|
|
|
return result
|
|
|
|
end
|
|
|
|
-- convert blendshape object
|
|
function convertIbs( input, output, platform )
|
|
|
|
local inputBasename = remove_extension_from_path(input)
|
|
local outputBaseName = remove_extension_from_path(output)
|
|
start_build()
|
|
mount(input, "pack:/" )
|
|
execCustomScript( "pack:/" )
|
|
|
|
clear_definitions()
|
|
load_model( "pack:/" .. "entity.type" )
|
|
local result = save_blendshape(inputBasename, outputBaseName)
|
|
|
|
execCustomScriptEnd( "pack:/" )
|
|
unmount(input)
|
|
|
|
return result
|
|
|
|
end
|
|
|
|
--
|
|
-- name: convertIft
|
|
-- desc: Convert fragment IFT asset
|
|
--
|
|
function convertIft( input, output, platform )
|
|
|
|
local basename = remove_all_extensions_from_path( output )
|
|
|
|
start_build()
|
|
|
|
local tunename = get_filename_from_path(remove_all_extensions_from_path(input))
|
|
|
|
mount(input, "pack:/" .. tunename .. "/")
|
|
execCustomScript( "pack:/" .. tunename .. "/" )
|
|
|
|
local ide_filename = "pack:/" .. tunename .. "/" .. tunename .. ".ide"
|
|
clear_definitions()
|
|
if ( file_exists( ide_filename ) ) then
|
|
load_definitions( ide_filename )
|
|
end
|
|
|
|
local texture_count = load_textures( "pack:/" .. tunename .. "/" )
|
|
if ( texture_count > 0 ) then
|
|
set_auto_texdict( true )
|
|
end
|
|
load_fragment( "pack:/" .. tunename .. "/entity.type" )
|
|
|
|
if load_nm_data ~= nil then
|
|
load_nm_data(find_xml_match(input,"$(core_assets)/characters/nm.xml"))
|
|
end
|
|
|
|
local result = save_fragment(basename)
|
|
|
|
-- Save the (optional) hi-MIP texture dictionary.
|
|
result = result and save_texture_dictionary_himip( basename, "hifr" )
|
|
|
|
execCustomScriptEnd( "pack:/" )
|
|
unmount(input)
|
|
|
|
return result
|
|
|
|
end
|
|
|
|
--
|
|
-- name: convertIcd
|
|
-- desc: Convert a clip dictionary ICD asset (no compression).
|
|
--
|
|
function convertIcd( input, output, platform )
|
|
local basename = remove_all_extensions_from_path( output )
|
|
|
|
start_build()
|
|
mount( input, "pack:/" )
|
|
load_clip( "pack:/" .. "*.clip" )
|
|
local result = save_clip_dictionary(basename, 1)
|
|
unmount(input)
|
|
|
|
return result
|
|
end
|
|
|
|
-- convert param motion dictionary
|
|
function convertIpm( input, output, platform )
|
|
local basename = remove_extension_from_path(output)
|
|
|
|
start_build()
|
|
mount( input, "pack:/" )
|
|
load_param_motion( "pack:/" .. "*.spm" )
|
|
local result = save_param_motion_dictionary(basename)
|
|
unmount(input)
|
|
|
|
return result
|
|
end
|
|
|
|
-- convert expressions dictionary
|
|
function convertIed( input, output, platform )
|
|
local basename = remove_extension_from_path(output)
|
|
|
|
start_build()
|
|
mount( input, "pack:/" )
|
|
load_expressions( "pack:/*.expr" )
|
|
local result = save_expressions_dictionary(basename)
|
|
unmount( input )
|
|
|
|
return result
|
|
end
|
|
|
|
-- convert framefilter dictionary
|
|
function convertIfd( input, output, platform )
|
|
local basename = remove_extension_from_path(output)
|
|
|
|
start_build()
|
|
mount( input, "pack:/" )
|
|
load_framefilter( "pack:/*.iff" )
|
|
local result = save_framefilter_dictionary(basename)
|
|
unmount( input )
|
|
|
|
return result
|
|
end
|
|
|
|
-- convert bound object
|
|
function convertIbn( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path(output)
|
|
|
|
start_build()
|
|
mount(input, "pack:/" )
|
|
execCustomScript( "pack:/" )
|
|
|
|
load_bound( "pack:/*.bnd" )
|
|
local result = save_bound(basename)
|
|
|
|
execCustomScriptEnd( "pack:/" )
|
|
unmount(input)
|
|
return result
|
|
|
|
end
|
|
|
|
|
|
-- convert bounds dictionary
|
|
function convertIbd( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path(output)
|
|
|
|
start_build()
|
|
mount( input, "pack:/" )
|
|
execCustomScript( "pack:/" )
|
|
|
|
load_bounds( "pack:/*.bnd" )
|
|
result = save_bound_dictionary(basename)
|
|
|
|
execCustomScriptEnd( "pack:/" )
|
|
unmount( input )
|
|
return result
|
|
|
|
end
|
|
|
|
-- convert drawable dictionary
|
|
function convertIdd( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path(output)
|
|
|
|
start_build()
|
|
mount( input, "pack:/" )
|
|
execCustomScript( "pack:/" )
|
|
|
|
local drawables = find_dirs( "pack:/" )
|
|
local texture_count = 0
|
|
|
|
for key, value in drawables do
|
|
texture_count = texture_count + load_textures( "pack:/" .. value .. "/" )
|
|
load_model( "pack:/" .. value .. "/entity.type" )
|
|
end
|
|
|
|
if ( texture_count > 0 ) then
|
|
set_auto_texdict( true )
|
|
end
|
|
|
|
result = save_model_dictionary(basename)
|
|
|
|
-- Save the (optional) hi-MIP texture dictionary.
|
|
if ( texture_count > 0 ) then
|
|
result = result and save_texture_dictionary_himip( basename, "hidd" )
|
|
end
|
|
|
|
execCustomScriptEnd( "pack:/" )
|
|
unmount( input )
|
|
return result
|
|
end
|
|
|
|
-- convert cloth dictionary
|
|
function convertIld( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path(output)
|
|
|
|
start_build()
|
|
mount( input, "pack:/" )
|
|
execCustomScript( "pack:/" )
|
|
|
|
local drawables = find_dirs( "pack:/" )
|
|
|
|
for key, value in drawables do
|
|
load_model( "pack:/" .. value .. "/entity.type" )
|
|
end
|
|
|
|
result = save_cloth_dictionary(basename)
|
|
execCustomScriptEnd( "pack:/" )
|
|
unmount( input )
|
|
return result
|
|
|
|
end
|
|
|
|
-- convert blendshape dictionary
|
|
function convertIsd( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path(output)
|
|
|
|
start_build()
|
|
mount( input, "pack:/" )
|
|
execCustomScript( "pack:/" )
|
|
|
|
local drawables = find_dirs( "pack:/" )
|
|
|
|
for key, value in drawables do
|
|
load_blendshape( "pack:/" .. value .. "/entity.type" )
|
|
end
|
|
|
|
execCustomScriptEnd( "pack:/" )
|
|
result = save_blendshape_dictionary(basename)
|
|
unmount( input )
|
|
return result
|
|
end
|
|
|
|
--
|
|
-- name: convertIpl
|
|
-- desc: Convert instances IPL asset
|
|
--
|
|
function convertIpl( input, output, platform )
|
|
|
|
start_build()
|
|
set_platform("independent")
|
|
load_placements( input )
|
|
set_platform( platform )
|
|
result = save_placements(output)
|
|
return result
|
|
end
|
|
|
|
-- convert text database
|
|
function convertIldb( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path(output)
|
|
start_build()
|
|
|
|
load_meta(input)
|
|
local result = save_textdatabase(basename)
|
|
|
|
end
|
|
|
|
--
|
|
-- Convert an RPF file, recursively. This function is called internally in
|
|
-- the main convertRpf function and should not be called elsewhere.
|
|
--
|
|
function convertRpfRecurse( root_mount, relative_mount, platform, projBin, temporary_files )
|
|
|
|
-- Recurse into RPF directories, depth-first recursion.
|
|
local mount_point = root_mount .. relative_mount
|
|
print( "mount_point: " .. mount_point )
|
|
local dirs = find_dirs( mount_point )
|
|
for key, value in dirs do
|
|
|
|
-- Prevent too many slashes.
|
|
local dir_mount = ""
|
|
if ( "" == relative_mount ) then
|
|
dir_mount = value
|
|
else
|
|
dir_mount = relative_mount .. "/" .. value
|
|
end
|
|
convertRpfRecurse( root_mount, dir_mount, platform, projBin, temporary_files )
|
|
end
|
|
|
|
-- Loop through all files in the current RPF directory.
|
|
local files = find_files( mount_point .. "/*.*" )
|
|
for key, value in files do
|
|
|
|
local src_file = mount_point .. "/" .. value
|
|
local filename = get_filename_from_path( value )
|
|
local basename = remove_extension_from_path( filename )
|
|
local ext = get_extension_from_path( filename )
|
|
local dst_file = relative_mount .. "/" .. basename .. "." .. get_platform_extension(ext)
|
|
|
|
-- Set dirTemp if its not currently set.
|
|
if ( nil == dirTemp ) then
|
|
dirTemp = "c:/temp/"
|
|
end
|
|
temp = dirTemp .. "/" .. dst_file
|
|
|
|
if ( filetime_compare( temp, src_file ) == 1 ) or ( doRebuild == true ) then
|
|
convertInner( src_file, temp, platform, projBin )
|
|
end
|
|
|
|
add_to_pack( temp, dst_file )
|
|
table.insert( temporary_files, temp )
|
|
end
|
|
end
|
|
|
|
|
|
--
|
|
-- Convert an RPF file. RPF files can have, and do, a folder hierarchy so we
|
|
-- need to ensure we recurse correctly across this.
|
|
--
|
|
function convertRpf( input, output, platform, projBin )
|
|
|
|
local mount = "image:/"
|
|
local temporary_files = {}
|
|
|
|
print( "convertRpf : starting uncompressed RPF output" )
|
|
start_uncompressed_pack( false )
|
|
mount_pack( input, mount )
|
|
execCustomScript( mount )
|
|
|
|
convertRpfRecurse( mount, "", platform, projBin, temporary_files )
|
|
|
|
local result = save_pack(output)
|
|
|
|
execCustomScriptEnd( mount )
|
|
unmount_pack(input)
|
|
close_pack()
|
|
|
|
-- Cleanup temporary files (if applicable)
|
|
if ( isTemporary ) then
|
|
for key, value in temporary_files do
|
|
del_file( value )
|
|
end
|
|
end
|
|
|
|
return ( result )
|
|
end
|
|
|
|
--
|
|
-- name: convertZip
|
|
-- desc: Convert a ZIP file (to RPF). ZIP files can have a folder hierarchy
|
|
-- so we need to ensure we recurse correctly across this.
|
|
--
|
|
function convertZip( input, output, platform, projBin )
|
|
|
|
local mount = "zip:/"
|
|
local temporary_files = {}
|
|
|
|
print( "convertZip : starting uncompressed RPF output" )
|
|
start_uncompressed_pack( false )
|
|
mount_zip( input, mount )
|
|
execCustomScript( mount )
|
|
|
|
convertRpfRecurse( mount, "", platform, projBin, temporary_files )
|
|
local result = save_pack( output )
|
|
|
|
execCustomScriptEnd( mount )
|
|
unmount_zip( input )
|
|
close_pack( )
|
|
|
|
-- Cleanup temporary files (if applicable)
|
|
if ( isTemporary ) then
|
|
for key, value in temporary_files do
|
|
del_file( value )
|
|
end
|
|
end
|
|
|
|
return ( result )
|
|
end
|
|
|
|
--
|
|
-- name: convertIvr
|
|
-- desc: Convert vehicle recording IVR asset.
|
|
--
|
|
function convertIvr( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path(output)
|
|
start_build()
|
|
|
|
load_vehiclerecording(input)
|
|
local result = save_vehiclerecording(basename)
|
|
|
|
return result
|
|
end
|
|
|
|
--
|
|
-- name: convertIam
|
|
-- desc:
|
|
--
|
|
function convertIam( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path(output)
|
|
start_build()
|
|
|
|
load_audmesh(input)
|
|
local result = save_audmesh(basename)
|
|
|
|
return result
|
|
|
|
end
|
|
|
|
--
|
|
-- name: convertMeta
|
|
-- desc: Convert metadata file asset.
|
|
--
|
|
function convertMeta( input, output, platform, outputPSO )
|
|
|
|
local basename = remove_extension_from_path(output)
|
|
|
|
load_meta(input)
|
|
local result
|
|
if ( outputPSO ) then
|
|
if (string.find(basename, ".*_srl" ) or
|
|
string.find(basename, ".*[\\/]scenario[\\/]") or
|
|
string.find(basename, "player_.*") or
|
|
string.find(basename, "cs_.*") or
|
|
string.find(basename, "a_c_.*") or
|
|
string.find(basename, "a_f_.*") or
|
|
string.find(basename, "a_m_.*") or
|
|
string.find(basename, "csb_.*") or
|
|
string.find(basename, "g_f_y_.*") or
|
|
string.find(basename, "g_m_.*") or
|
|
string.find(basename, "hc_.*") or
|
|
string.find(basename, "ig_.*") or
|
|
string.find(basename, "mp_.*") or
|
|
string.find(basename, "s_f_.*") or
|
|
string.find(basename, "s_m_.*") or
|
|
string.find(basename, "slot_.*") or
|
|
string.find(basename, "u_f_.*") or
|
|
string.find(basename, "u_m_.*") or
|
|
string.find(basename, "z_.*")) then
|
|
result = save_pso_as(basename, "rsc")
|
|
else
|
|
result = save_pso(basename)
|
|
end
|
|
else
|
|
result = save_rbf(basename)
|
|
end
|
|
|
|
return result
|
|
|
|
end
|
|
|
|
--
|
|
-- name: convertImap
|
|
-- desc: Convert map data file asset.
|
|
--
|
|
function convertImap( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path( output )
|
|
load_meta( input )
|
|
local result = save_mapdata( basename )
|
|
|
|
return result
|
|
end
|
|
|
|
--
|
|
-- name: convertItyp
|
|
-- desc: convert map type data file asset
|
|
--
|
|
function convertItyp( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path( output )
|
|
load_meta( input )
|
|
local result = save_maptypes( basename )
|
|
end
|
|
|
|
--
|
|
-- name: convertCutxml
|
|
-- desc: convert cutxml data file asset
|
|
--
|
|
function convertCutxml( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path( output )
|
|
load_meta( input )
|
|
local result = save_cutfile( basename )
|
|
end
|
|
|
|
--
|
|
-- name: convertImf
|
|
-- desc: convert manifest file asset
|
|
--
|
|
function convertImf( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path( output )
|
|
load_meta( input )
|
|
local result = save_imf( basename )
|
|
end
|
|
|
|
--
|
|
-- name: convertSco
|
|
-- desc: Convert SCO script file asset.
|
|
--
|
|
function convertSco( input, output, platform )
|
|
|
|
local basename = remove_extension_from_path( output )
|
|
load_script( input )
|
|
local result = save_script( basename )
|
|
|
|
return result
|
|
end
|
|
|
|
--
|
|
-- name: convert2
|
|
-- desc: Simplified version of the convert function; removing parameters no
|
|
-- longer required for Asset Pipeline 3.
|
|
--
|
|
function convert2( input, output, platform, build, materials, procedurals, shader, shaderdb, options, bindir, core_assets, assets, metadata_definitions )
|
|
|
|
--todo: put a check in here to load the preload.list
|
|
--and check it against the shaders in the shader folder
|
|
--as all hell breaks loose internally in rage if there are
|
|
--any inconsistencies here...
|
|
--a higher level check should probably also be put in in ruby code
|
|
|
|
setBuildFlags( options )
|
|
set_buildpath( build )
|
|
set_shaderpath( shader )
|
|
set_shaderdbpath( shaderdb )
|
|
set_platform( platform )
|
|
set_coreassetspath( core_assets )
|
|
set_assetspath( assets )
|
|
set_metadatadefinitionspath( metadata_definitions )
|
|
loadMaterials( build, materials, procedurals )
|
|
|
|
if ( false == outputSettings ) then
|
|
print( "Platform: " .. platform )
|
|
print( "Build Path: " .. build )
|
|
print( "Shaders Path: " .. shader )
|
|
print( "Shaders DB: " .. shaderdb )
|
|
print( "Build Path: " .. build )
|
|
print( "Core Assets Path: " .. core_assets )
|
|
print( "Assets Path: " .. assets )
|
|
print( "Metadata Definitions Path: " .. metadata_definitions )
|
|
if ( options ~= nil ) then
|
|
print( "Options: " .. options )
|
|
else
|
|
print( "Options: nil" )
|
|
end
|
|
outputSettings = true
|
|
end
|
|
|
|
print( "Converting:" )
|
|
print( "Input file: " .. input )
|
|
print( "Output file: " .. output )
|
|
convertInner( input, output, platform, bindir )
|
|
end
|
|
|
|
--
|
|
-- name: convert2directory
|
|
-- desc: Method to convert files matching (search_pattern) in a directory of independent files (input_dir) to a directory of platform specific files (output_dir).
|
|
--
|
|
-- param: resourcePrefix - used for map DLC to ensure assets are uniquely named.
|
|
--
|
|
function convert2directory( input_dir, search_pattern, output_dir, platform, build, materials, procedurals, shader, shaderdb, options, bindir, core_assets, assets, metadata_definitions, resource_prefix )
|
|
|
|
setBuildFlags( options )
|
|
set_buildpath( build )
|
|
set_shaderpath( shader )
|
|
set_shaderdbpath( shaderdb )
|
|
set_platform( platform )
|
|
set_coreassetspath( core_assets )
|
|
set_assetspath( assets )
|
|
set_metadatadefinitionspath( metadata_definitions )
|
|
loadMaterials( build, materials, procedurals )
|
|
|
|
if ( false == outputSettings ) then
|
|
print( "Platform: " .. platform )
|
|
print( "Build Path: " .. build )
|
|
print( "Shaders Path: " .. shader )
|
|
print( "Shaders DB: " .. shaderdb )
|
|
print( "Build Path: " .. build )
|
|
print( "Core Assets Path: " .. core_assets )
|
|
print( "Assets Path: " .. assets )
|
|
print( "Metadata Definitions Path: " .. metadata_definitions )
|
|
|
|
if ( resource_prefix ~= nil ) then
|
|
print( "Resource Prefix: " .. resource_prefix )
|
|
else
|
|
print( "Resource Prefix: nil" )
|
|
end
|
|
|
|
if ( options ~= nil ) then
|
|
print( "Options: " .. options )
|
|
else
|
|
print( "Options: nil" )
|
|
end
|
|
outputSettings = true
|
|
end
|
|
|
|
print( "Converting:" )
|
|
local input_filenames = find_files( input_dir .. "/" .. search_pattern )
|
|
for index, input_filename in input_filenames do
|
|
|
|
local input_pathname = input_dir .. "/" .. input_filename
|
|
|
|
--build the output_pathname
|
|
local output_filename = input_filename
|
|
local input_extension = get_extension_from_path( input_filename )
|
|
if ( input_extension == ".zip" ) then
|
|
output_filename = remove_extension_from_path( input_filename )
|
|
end
|
|
output_filename = convert_filename_to_platform( output_filename, platform )
|
|
local output_pathname = ""
|
|
|
|
if ( ( resource_prefix ~= nil ) and ( ".ityp" ~= input_extension ) and nil == string.find( output_filename, resource_prefix ) ) then
|
|
output_pathname = output_dir .. "/" .. resource_prefix .. output_filename
|
|
else
|
|
output_pathname = output_dir .. "/" .. output_filename
|
|
end
|
|
|
|
print( "Input file: " .. input_pathname )
|
|
print( "Output file: " .. output_pathname )
|
|
convertInner( input_pathname, output_pathname, platform, bindir )
|
|
end
|
|
|
|
end
|
|
|
|
--
|
|
-- name: convert
|
|
-- desc: Convert input file to output file.
|
|
--
|
|
function convert( input, output, platform, build, shader, shaderdb, folder, temporary, rebuild, options, projBin )
|
|
|
|
dirTemp = folder
|
|
isTemporary = temporary
|
|
doRebuild = rebuild
|
|
|
|
--todo: put a check in here to load the preload.list
|
|
--and check it against the shaders in the shader folder
|
|
--as all hell breaks loose internally in rage if there are
|
|
--any inconsistencies here...
|
|
--a higher level check should probably also be put in in ruby code
|
|
|
|
setBuildFlags( options )
|
|
set_shaderpath( shader )
|
|
set_shaderdbpath( shaderdb )
|
|
set_platform( platform )
|
|
loadMaterials( build, nil, nil )
|
|
|
|
if ( false == outputSettings ) then
|
|
print( "Platform: " .. platform )
|
|
print( "Shaders Path: " .. shader )
|
|
print( "Shaders DB: " .. shaderdb )
|
|
print( "Build Path: " .. build )
|
|
if ( dirTemp ~= nil ) then
|
|
print( "Temp Path: " .. dirTemp )
|
|
else
|
|
print( "Temp Path: nil" )
|
|
end
|
|
if ( isTemporary ) then
|
|
print( "Temp Enabled: true" )
|
|
else
|
|
print( "Temp Enabled: false" )
|
|
end
|
|
if ( rebuild ) then
|
|
print( "Rebuild: true" )
|
|
else
|
|
print( "Rebuild: false" )
|
|
end
|
|
if ( options ~= nil ) then
|
|
print( "Options: " .. options )
|
|
else
|
|
print( "Options: nil" )
|
|
end
|
|
outputSettings = true
|
|
end
|
|
|
|
print( "Converting:" )
|
|
print( "Input file: " .. input )
|
|
print( "Output file: " .. output )
|
|
convertInner( input, output, platform, projBin )
|
|
end
|
|
|
|
-- %RS_TOOLSLIB%/util/ragebuilder/convert.rbs
|