UnitFile.cs 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. using System;
  2. using Newtonsoft.Json;
  3. using Newtonsoft.Json.Linq;
  4. using System.IO;
  5. using System.Text;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. namespace UnitEditor
  9. {
  10. public class UnitFile
  11. {
  12. private JObject m_root;
  13. private Dictionary<string, Renderable> m_renderables;
  14. private Dictionary<string, Node> m_nodes;
  15. public UnitFile (string file_name)
  16. {
  17. string json_string = string.Empty;
  18. using (StreamReader streamReader = new StreamReader(file_name))
  19. {
  20. json_string = streamReader.ReadToEnd();
  21. m_root = JObject.Parse (json_string);
  22. }
  23. deserialize ();
  24. }
  25. public string[] renderables_names()
  26. {
  27. return m_renderables.Keys.ToArray ();
  28. }
  29. public Renderable[] renderables()
  30. {
  31. return m_renderables.Values.ToArray ();
  32. }
  33. public void deserialize()
  34. {
  35. // Deserialize renderables
  36. JToken renderables_token = m_root ["renderables"];
  37. m_renderables = JsonConvert.DeserializeObject<Dictionary<string, Renderable>>(renderables_token.ToString());
  38. // Deserialize Nodes
  39. JToken nodes_token = m_root ["nodes"];
  40. m_nodes = JsonConvert.DeserializeObject<Dictionary<string, Node>> (nodes_token.ToString ());
  41. }
  42. public void serialize()
  43. {
  44. string json_string = "{";
  45. json_string += "\"renderables\": {";
  46. string last = m_renderables.Keys.Last ();
  47. foreach (var r in m_renderables)
  48. {
  49. var k = r.Key;
  50. var v = r.Value;
  51. string renderables_token = string.Format ("\t\"{0}\" : {1}", k, JsonConvert.SerializeObject(v));
  52. if (k != last)
  53. json_string += ",";
  54. json_string += renderables_token;
  55. }
  56. json_string += "},\n";
  57. json_string += "\"nodes\": {";
  58. foreach (var n in m_nodes)
  59. {
  60. var k = n.Key;
  61. var v = n.Value;
  62. string nodes_token = string.Format ("\t\"{0}\" : {1}", k, JsonConvert.SerializeObject(v));
  63. json_string += nodes_token;
  64. }
  65. json_string += "}";
  66. json_string += "}";
  67. Console.Write (json_string);
  68. }
  69. }
  70. }