Example #1
0
        protected override void Save()
        {
            XMLAbstraction xml = new XMLAbstraction("Material");

            xml.AddNode("Shader", shader.ID.ToString());
            var uniformsNode = xml.AddNode("Uniforms");

            foreach (Shader.Uniform u in Uniforms)
            {
                if (u.value != null)
                {
                    var uniformNode = uniformsNode.AddNode("Uniform");
                    uniformNode.AddAttribute("name", u.name);
                    uniformNode.AddAttribute("type", u.type.FullName);
                    if (u.type.IsSubclassOf(typeof(Asset)))
                    {
                        TypeSerialization.SerializePrimitiveType((u.value as Asset).ID, uniformNode.node, xml.xml);
                    }
                    else
                    {
                        TypeSerialization.SerializeType(u.value, uniformNode.node, xml.xml);
                    }
                }
            }
            xml.Save(Path);
        }
        public static void WriteDatabase()
        {
            XMLAbstraction data = new XMLAbstraction("AssetDatabase");
            //IDs
            var idsNode = data.AddNode("IDs");

            idsNode.AddNode("CurrentID", currentID.ToString());
            var deletedIDsNode = idsNode.AddNode("DeletedIDs");

            foreach (int i in deletedIDs)
            {
                deletedIDsNode.AddNode("ID", i.ToString());
            }
            //Assets
            var assetsNode = data.AddNode("Assets");

            foreach (var a in atomicAssetsInProject)
            {
                var assetNode = assetsNode.AddNode("Asset");
                assetNode.AddAttribute("path", a.Item1);
                assetNode.AddAttribute("type", a.Item2);
                assetNode.AddAttribute("id", a.Item3);
            }
            foreach (var a in composedAssetsInProject)
            {
                var assetNode = assetsNode.AddNode("Asset");
                assetNode.AddAttribute("path", a.Item1);
                assetNode.AddAttribute("type", a.Item2);
                assetNode.AddAttribute("id", a.Item3);
            }
            data.Save("AssetDatabase.xml");
        }
        public static void Init()
        {
            Logging.LogInfo("Asset Database", "Loading Asset Database!");
            if (System.IO.File.Exists("AssetDatabase.xml"))
            {
                XMLAbstraction data = new XMLAbstraction("AssetDatabase", "AssetDatabase.xml");

                //Load IDs
                currentID = Convert.ToInt32(data.GetNode("//AssetDatabase/IDs/CurrentID").InnerText);
                var deletedIDNodes = data.GetNodes("//AssetDatabase/IDs/DeletedIDs/ID");
                foreach (var n in deletedIDNodes)
                {
                    deletedIDs.Add(Convert.ToInt32(n.InnerText));
                }

                //Load Assets
                var assetNodes = data.GetNodes("//AssetDatabase/Assets/*[local-name()='Asset']");
                foreach (var asset in assetNodes)
                {
                    string type = asset.GetAttribute("type");
                    if (IsTypeAtomic(type))
                    {
                        atomicAssetsInProject.Add(new Tuple <string, string, int>(asset.GetAttribute("path"), type, Convert.ToInt32(asset.GetAttribute("id"))));
                    }
                    else
                    {
                        composedAssetsInProject.Add(new Tuple <string, string, int>(asset.GetAttribute("path"), type, Convert.ToInt32(asset.GetAttribute("id"))));
                    }
                }
            }
            else
            {
                Logging.LogError("Asset Database", "Could not find AssetDatabase.xml!");
            }
        }
        public static void WriteDatabase()
        {
            XMLAbstraction data           = new XMLAbstraction("UserCodeDatabase");
            var            assembliesNode = data.AddNode("Assemblies");

            foreach (string s in assemblyPaths)
            {
                assembliesNode.AddNode("Assembly", s);
            }
            data.Save("UserCodeDatabase.xml");
        }
        public static void Init()
        {
            Logging.LogInfo("User Code Database", "Loading User Code Database!");
            XMLAbstraction data          = new XMLAbstraction("UserCodeDatabase", "UserCodeDatabase.xml");
            var            assemblyNodes = data.GetNodes("//UserCodeDatabase/Assemblies/Assembly");

            foreach (var a in assemblyNodes)
            {
                LoadAssembly(a.InnerText);
            }
        }
        public static int CreateMaterial(string path)
        {
            XMLAbstraction mat = new XMLAbstraction("Material");

            mat.Save(path);
            if (!Import(path))
            {
                return(-1);
            }
            Logging.LogInfo("Asset Database", "Created and imported new material!");
            WriteDatabase();
            return(GetIDFromPath(path));
        }
Example #7
0
        public void SaveScene(string path)
        {
            XMLAbstraction xml = new XMLAbstraction("Scene");

            //IDs
            var iDsNode = xml.AddNode("IDs");

            iDsNode.AddNode("CurrentID", currentID.ToString());
            var deletedIDsNode = iDsNode.AddNode("DeletedIDs");

            foreach (int i in deletedIDs)
            {
                deletedIDsNode.AddNode("ID", i.ToString());
            }

            //Hierarchy
            var hierarchyNode = xml.AddNode("Hierarchy");

            foreach (var e in hierarchy.root)
            {
                SaveEntity(e, hierarchyNode);
            }
            xml.Save(Path);
        }
Example #8
0
        public Material(string path) : base(path)
        {
            shader   = null;
            Uniforms = new List <Shader.Uniform>();
            XMLAbstraction xml        = new XMLAbstraction("Material", path);
            var            shaderNode = xml.GetNode("//Material/Shader");

            if (shaderNode != null)
            {
                SetShader(AssetDatabase.GetAsset(Convert.ToInt32(shaderNode.InnerText)) as Shader);
            }
            foreach (var n in xml.GetNodes("//Material/Uniforms/Uniform"))
            {
                Type t = Type.GetType(n.GetAttribute("type"));
                if (t.IsSubclassOf(typeof(Asset)))
                {
                    SetUniform(n.GetAttribute("name"), AssetDatabase.GetAsset(TypeSerialization.DeserializePrimitiveType <int>(n.node)));
                }
                else
                {
                    SetUniform(n.GetAttribute("name"), TypeSerialization.DeserializeType(n.node, t));
                }
            }
        }