public AssetTypeTemplateField GetTemplateBaseField(AssetsFile file, AssetFileInfoEx info, bool forceFromCldb = false) { ushort scriptIndex = AssetHelper.GetScriptIndex(file, info); uint fixedId = AssetHelper.FixAudioID(info.curFileType); bool hasTypeTree = file.typeTree.hasTypeTree; AssetTypeTemplateField baseField; if (useTemplateFieldCache && templateFieldCache.ContainsKey(fixedId)) { baseField = templateFieldCache[fixedId]; } else { baseField = new AssetTypeTemplateField(); if (hasTypeTree && !forceFromCldb) { baseField.From0D(AssetHelper.FindTypeTreeTypeByID(file.typeTree, fixedId, scriptIndex), 0); } else { baseField.FromClassDatabase(classFile, AssetHelper.FindAssetClassByID(classFile, fixedId), 0); } if (useTemplateFieldCache) { templateFieldCache[fixedId] = baseField; } } return(baseField); }
public AssetTypeInstance GetATI(AssetsFile file, AssetFileInfoEx info, bool forceFromCldb = false) { ushort scriptIndex = AssetHelper.GetScriptIndex(file, info); uint fixedId = AssetHelper.FixAudioID(info.curFileType); bool hasTypeTree = file.typeTree.hasTypeTree; AssetTypeTemplateField baseField; if (useTemplateFieldCache && templateFieldCache.ContainsKey(fixedId)) { baseField = templateFieldCache[fixedId]; } else { baseField = new AssetTypeTemplateField(); if (hasTypeTree && !forceFromCldb) { if (file.header.format < 0x10) { if (scriptIndex == 0xFFFF) { baseField.From0D(AssetHelper.FindTypeTreeTypeByID(file.typeTree, fixedId), 0); } else { baseField.From0D(AssetHelper.FindTypeTreeTypeByScriptIndex(file.typeTree, scriptIndex), 0); } } else { baseField.From0D(AssetHelper.FindTypeTreeTypeByID(file.typeTree, fixedId), 0); } } else { baseField.FromClassDatabase(classFile, AssetHelper.FindAssetClassByID(classFile, fixedId), 0); } if (useTemplateFieldCache) { templateFieldCache[fixedId] = baseField; } } return(new AssetTypeInstance(baseField, file.reader, info.absoluteFilePos)); }