public AssetTypeTemplateField GetTemplateField(AssetItem item, bool forceFromCldb = false) { var file = LoadedFiles[item.FileID].file; var hasTypeTree = file.typeTree.hasTypeTree; var baseField = new AssetTypeTemplateField(); var scriptIndex = item.MonoID; var fixedId = AssetHelper.FixAudioID(item.TypeID); if (hasTypeTree && !forceFromCldb) { baseField.From0D(AssetHelper.FindTypeTreeTypeByScriptIndex(file.typeTree, scriptIndex), 0); } else { baseField.FromClassDatabase(Am.classFile, AssetHelper.FindAssetClassByID(Am.classFile, fixedId), 0); } return(baseField); }
private void XRefsDialog_Load(object sender, EventArgs e) { List <AssetID> xrefs = map.GetXRefs(id); if (xrefs == null) { xrefList.Items.Add("[no xrefs]"); } else { foreach (AssetID id in xrefs) { int instIndex = am.files.FindIndex(f => Path.GetFileName(f.path).ToLower() == Path.GetFileName(id.fileName).ToLower()); if (instIndex != -1) { AssetsFileInstance xrefInst = am.files[instIndex]; AssetsFile xrefFile = xrefInst.file; AssetFileInfoEx xrefInf = xrefInst.table.GetAssetInfo(id.pathID); uint fixedId = AssetHelper.FixAudioID(xrefInf.curFileType); bool hasTypeTree = xrefFile.typeTree.hasTypeTree; string assetName = AssetHelper.GetAssetNameFast(xrefFile, am.classFile, xrefInf); string typeName; if (hasTypeTree) { Type_0D xrefType = AssetHelper.FindTypeTreeTypeByID(xrefFile.typeTree, fixedId); typeName = xrefType.typeFieldsEx[0].GetTypeString(xrefType.stringTable); } else { ClassDatabaseType xrefType = AssetHelper.FindAssetClassByID(am.classFile, fixedId); typeName = xrefType.name.GetString(am.classFile); } xrefList.Items.Add(new ListBoxInfo($"{id.fileName} {id.pathID} ({typeName} {assetName})", id)); } else { xrefList.Items.Add(new ListBoxInfo($"{id.fileName} {id.pathID}", id)); } } } }
public AssetTypeTemplateField GetTemplateField(AssetsFile file, uint type, ushort scriptIndex) { uint fixedId = AssetHelper.FixAudioID(type); bool hasTypeTree = file.typeTree.hasTypeTree; AssetTypeTemplateField baseField = new AssetTypeTemplateField(); if (hasTypeTree) { Type_0D type0d = Extensions.FindTypeTreeTypeByID(file.typeTree, fixedId, scriptIndex); if (type0d != null && type0d.typeFieldsExCount > 0) baseField.From0D(type0d, 0); else //fallback to cldb baseField.FromClassDatabase(am.classFile, AssetHelper.FindAssetClassByID(am.classFile, fixedId), 0); } else { baseField.FromClassDatabase(am.classFile, AssetHelper.FindAssetClassByID(am.classFile, fixedId), 0); } return baseField; }