=========
ParamTool
=========

ParamTool is the universal tool to modify NvParameterized assets. It has the
ability to convert from and to different formats and platforms.

Running ParamTool.exe -h results in a full usage description. The examples
on the bottom cover the most important usage scenarios:

..  code-block:: none

    Usage: ParamTool.exe [OPTIONS] [NAME1...]
    
    Options:
      -c, -convert-asset             convert files NAME1, ... to single NvParameterized file
      -m, -make-asset                make template asset file for specified assets;
                                     asset names may have format 'className' or 'className@classVersion'
                                     (by default the latest version is used)
      -l, -list                      print file summary: target platform, number of objects,
                                     their classes, names and versions
      -o file, -output file          specify name of destination file
      -s fmt, -serial fmt            specifies ouput serialization format
      -t tgt, -target-platform tgt   specifies target platform
      -pt tag, -platform-tag tag     specifies the platform tag used to prepare the assets for
      -i, -inplace                   use inplace deserialization (for debug)
      -v, -verify                    verify serialized data (for debug)
      -h, -help                      print this help message and exit
      -p, -print-classes             -h + print available APEX Authorable and NvParameterized classes
      -d, -diagnostic                turn on diagnostic messages

      -gv, -get-value "name"         try for '-c mode' get parameter from all input files and 
                                     prints: parameter name, value, type, valid status
                                     no necessary to provide output file in this case
                                     valid status is info about if parameter is applicable

      -sv, -set-value "name" "value" try for '-c mode' set value for parameter by it's name
                                     do it for all deserialized objects from input files
                                     print status of this action and serialize result to output
    
    Note that this version of ParamTool does not support legacy asset formats (use APEX 1.0 version for that).
    
    Default values:
    If none of -c, -m or -l is specified, -c is used. Note that you can't use
    -c (or -l) together with -m.
    Default output file (-o) is basename of NAME1 + xml/bin extension.
    Default target platform (-t) is current platform.
    Default serialization format (-s) is derived from extension of destination file.
    
    Supported serialization formats:
      apx (APex Xml, same as xml)
      apb (APex Binary, same as bin)
      xml
      bin
    
    Supported platforms:
      VcWin32 (Vc, x86)
      VcWin64 (Vc, x86_64)
      VcXbox, VcXbox360 (Vc, PPC)
      VcXboxOne (Vc, x86_64)
      GccPs3 (Gcc, Cell)
      GccPs4 (Gcc, x86_64)
      Pib (artificial platform which results in smaller asset files)
    
    Examples:
    
    convert all xml assets in current directory to single bin asset:
      ParamTool *.apx -o allAssets.apb
    
    convert binary asset to xml asset:
      ParamTool -s apx leafMesh.apb
    
    make NvParameterized file with several assets having default values (latest versions):
      ParamTool -m -s apx -o legacyClothing.apb ExplosionEnvParameters ShapeConvexParams
    
    make NvParameterized file with several assets (with explicit versions):
      ParamTool -m -s apx -o legacyClothing.apb ExplosionEnvParameters@0.0 ShapeConvexParams@0.1
    
    prepare an asset for a given platform tag, which has to be stored in the asset:
      ParamTool clothingAsset.apb -pt Xbox -o clothingAsset_Xbox.apb
    
    print file summary: target platform, number of objects, their classes, names and versions:
      ParamTool -l clothingAsset.apb

    get 'comment' parameter and prints parameter name, value, type, valid status per concrete input file:
      ParamTool -gv comments Block_Realtime.apx Wall.apb

    try to set 'comment' parameter. Save result to Block_RealtimeTemp.apx:
      ParamTool -sv comments "test" Block_Realtime.apx -o Block_RealtimeTemp.apx
