public void Save(string filename, IKn5TextureProvider textureProvider = null) { using (var writer = new Kn5Writer(File.Open(filename, FileMode.Create, FileAccess.ReadWrite))) { writer.Write(Header); writer.Write(Textures.Count); foreach (var texture in Textures.Values) { if (TexturesData.TryGetValue(texture.Name, out var data) && data.Length > 0) { texture.Length = data.Length; writer.Write(texture); writer.Write(data); } else { textureProvider?.GetTexture(texture.Name, size => { texture.Length = size; writer.Write(texture); writer.Flush(); return(writer.BaseStream); }); } } writer.Write(Materials.Count); foreach (var material in Materials.Values) { writer.Write(material); } Save_Node(writer, RootNode); } }
public void SetMode(RenderMode mode, Shader[] shaders) { TexturesData data = (TexturesData)GetType().GetField(mode.ToString()).GetValue(this); material.mainTexture = data.main; material.color = data.color; material.SetTexture("_BumpMap", data.normals); material.shader = shaders [(int)mode]; }
public RenderSlot(Material mat) { material = mat; main = new TexturesData(material.mainTexture, material.GetTexture("_BumpMap"), material.color); transparent = new TexturesData(null, null, new Color(0.6f, 0.8f, 1, 0.5f)); }
public RenderSlot() { main = new TexturesData(); transparent = new TexturesData(); }