public static XElement CreateAssetMeta(string filePath) { AssetItemType assetType = GetAssetFileType(filePath); XElement metaData = new XElement("MetaData"); switch (assetType) { default: // unknown file break; case AssetItemType.Mesh: Assimp.Scene scene = ObjectLoader.Import(filePath); foreach (Assimp.Node node in scene.RootNode.Children) { metaData.Add(BuildAssimpNodeTree(node)); } break; } return(metaData); }
private AssetMenuItem LoadFile(FileSystemInfo file, AssetMenuItem parent = null) { string metaPath = Path.ChangeExtension(file.FullName, ".meta"); XElement metaData; if (!File.Exists(metaPath)) { using (StreamWriter metaWriter = File.CreateText(metaPath)) { metaData = CreateAssetMeta(file.FullName); metaData.Save(metaWriter); } File.SetAttributes(metaPath, FileAttributes.Hidden); } else { metaData = XElement.Load(metaPath); } AssetItemType assetType = GetAssetFileType(file.FullName); AssetMenuItem item = new AssetMenuItem(); item.Type = assetType; item.Name = file.Name; item.Parent = parent; item.SystemPath = file.FullName; item.RelativePath = Path.GetRelativePath(AssetPath, file.FullName); foreach (XElement elem in metaData.Elements()) { ApplyAssetItemMetaData(ref item, elem); } return(item); }