예제 #1
0
        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);
        }
예제 #2
0
        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);
        }