using System.Collections.Generic; using Newtonsoft.Json; namespace GLTF.Schema { /// /// The root nodes of a scene. /// public class GLTFScene : GLTFChildOfRootProperty { /// /// The indices of each root node. /// public List Nodes; public GLTFScene() { } public GLTFScene(GLTFScene scene, GLTFRoot gltfRoot) : base(scene, gltfRoot) { if (scene == null) return; if (scene.Nodes != null) { Nodes = new List(scene.Nodes.Count); foreach (NodeId node in scene.Nodes) { Nodes.Add(new NodeId(node, gltfRoot)); } } } public static GLTFScene Deserialize(GLTFRoot root, JsonReader reader) { var scene = new GLTFScene(); while (reader.Read() && reader.TokenType == JsonToken.PropertyName) { var curProp = reader.Value.ToString(); switch (curProp) { case "nodes": scene.Nodes = NodeId.ReadList(root, reader); break; default: scene.DefaultPropertyDeserializer(root, reader); break; } } return scene; } public override void Serialize(JsonWriter writer) { writer.WriteStartObject(); if (Nodes != null && Nodes.Count > 0) { writer.WritePropertyName("nodes"); writer.WriteStartArray(); foreach (var node in Nodes) { writer.WriteValue(node.Id); } writer.WriteEndArray(); } base.Serialize(writer); writer.WriteEndObject(); } } }