Skip to content
Peter Shinners edited this page Apr 16, 2021 · 5 revisions
void  getAssetFields(
    const std::string& assetId, 
    bool includeDefaults,
    StringMap& returnFields
)

Parse an assetId into a set of fields that it represents.

Katana doesn't use the returned fields itself. They are only needed to pass to other asset plugin methods. The fields are used for the publish functions, 'createAssetAndPath' and 'createAssetAndPath'. The fields can also be converted back into an assetId with [buildAssetId].

These field values are different than the assetId attributes used by 'getAssetAttributes'. The fields only need to be the individual values that identify the assetId. The attributes are used to identify optional metadata and information about the assetId.

Katana implies there should be a "name" value in the returnFields that represents the unversioned assetId. If defined there can also be a "version" value that represents the fully resolved versioned assetId. But nothing in Katana actually uses or expects any fields.

The simplest possible implementation is to copy the assetId into a field in the string map. To work with other Katana features this should put an unversioned assetId into the "name" field. Also consider an empty string in the "version" when includeDefaults is true to enable Katana's "version up and save" operations.

If includeDefaults is true then returnFields should be populated with empty strings for whatever values are normally returned. Otherwise these empty values can be omitted from the string map.

Katana's main menu has a "Version Up And Save" action under the file manu. This action will only be enabled if this method places a "version" value into the string map. The main menu passes includeDefaults set to true, so this method could always include an empty "version" string when includeDefaults is true.

The "name" field this returns will be put into the nodegraph root as "katanaSceneName". This is the value returned from KatanaFile.GetKatanaSceneName()

Clone this wiki locally