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)); }
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); }
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)); } } }