public static GLTFAnimation Deserialize(GLTFRoot root, JsonReader reader) { var animation = new GLTFAnimation(); while (reader.Read() && reader.TokenType == JsonToken.PropertyName) { var curProp = reader.Value.ToString(); switch (curProp) { case "channels": animation.Channels = reader.ReadList(() => AnimationChannel.Deserialize(root, reader)); break; case "samplers": animation.Samplers = reader.ReadList(() => AnimationSampler.Deserialize(root, reader)); break; default: animation.DefaultPropertyDeserializer(root, reader); break; } } return(animation); }
public static AnimationChannel Deserialize(GLTFRoot root, JsonReader reader, GLTFAnimation anim) { var animationChannel = new AnimationChannel(); while (reader.Read() && reader.TokenType == JsonToken.PropertyName) { var curProp = reader.Value.ToString(); switch (curProp) { case "sampler": animationChannel.Sampler = AnimationSamplerId.Deserialize(root, anim, reader); break; case "target": animationChannel.Target = AnimationChannelTarget.Deserialize(root, reader); break; default: animationChannel.DefaultPropertyDeserializer(root, reader); break; } } return(animationChannel); }
public static AnimationSamplerId Deserialize(GLTFRoot root, GLTFAnimation anim, JsonReader reader) { return(new AnimationSamplerId { Id = reader.ReadAsInt32().Value, GLTFAnimation = anim, Root = root }); }
public GLTFAnimation(GLTFAnimation animation, GLTFRoot gltfRoot) : base(animation, gltfRoot) { Channels = new List <AnimationChannel>(animation.Channels.Count); foreach (AnimationChannel channel in animation.Channels) { Channels.Add(new AnimationChannel(channel, gltfRoot)); } Samplers = new List <AnimationSampler>(animation.Samplers.Count); foreach (AnimationSampler sampler in animation.Samplers) { Samplers.Add(new AnimationSampler(sampler, gltfRoot)); } }
public static GLTFRoot Deserialize(TextReader textReader) { var jsonText = textReader.ReadToEnd(); var sr = textReader as StreamReader; sr.BaseStream.Seek(0, SeekOrigin.Begin); sr.DiscardBufferedData(); JObject jo = JObject.Parse(jsonText); var jsonReader = new JsonTextReader(textReader); var root = new GLTFRoot(); if (jsonReader.Read() && jsonReader.TokenType != JsonToken.StartObject) { throw new Exception("gltf json must be an object"); } while (jsonReader.Read() && jsonReader.TokenType == JsonToken.PropertyName) { var curProp = jsonReader.Value.ToString(); switch (curProp) { case "extensionsUsed": root.ExtensionsUsed = jsonReader.ReadStringList(); break; case "extensionsRequired": root.ExtensionsRequired = jsonReader.ReadStringList(); break; case "accessors": root.Accessors = jsonReader.ReadList(() => Accessor.Deserialize(root, jsonReader)); break; case "animations": root.Animations = jsonReader.ReadList(() => GLTFAnimation.Deserialize(root, jsonReader)); break; case "asset": var asset = jo["asset"].ToString(); root.Asset = JsonUtility.FromJson <Asset>(asset); // will be deleted Asset.Deserialize(root, jsonReader); break; case "buffers": root.Buffers = jsonReader.ReadList(() => GLTFBuffer.Deserialize(root, jsonReader)); break; case "bufferViews": root.BufferViews = jsonReader.ReadList(() => BufferView.Deserialize(root, jsonReader)); break; case "cameras": root.Cameras = new List <GLTFCamera>(); foreach (var camera in jo["cameras"]) { GLTFCamera c = JsonUtility.FromJson <GLTFCamera>(camera.ToString()); root.Cameras.Append(c); } // will be deleted jsonReader.ReadList(() => GLTFCamera.Deserialize(root, jsonReader)); break; case "images": root.Images = jsonReader.ReadList(() => GLTFImage.Deserialize(root, jsonReader)); break; case "materials": root.Materials = jsonReader.ReadList(() => GLTFMaterial.Deserialize(root, jsonReader)); break; case "meshes": root.Meshes = jsonReader.ReadList(() => GLTFMesh.Deserialize(root, jsonReader)); break; case "nodes": root.Nodes = jsonReader.ReadList(() => Node.Deserialize(root, jsonReader)); break; case "samplers": root.Samplers = jsonReader.ReadList(() => Sampler.Deserialize(root, jsonReader)); break; case "scene": root.Scene = SceneId.Deserialize(root, jsonReader); break; case "scenes": root.Scenes = jsonReader.ReadList(() => GLTF.Schema.GLTFScene.Deserialize(root, jsonReader)); break; case "skins": root.Skins = jsonReader.ReadList(() => Skin.Deserialize(root, jsonReader)); break; case "textures": root.Textures = jsonReader.ReadList(() => GLTFTexture.Deserialize(root, jsonReader)); break; default: root.DefaultPropertyDeserializer(root, jsonReader); break; } } return(root); }
public static GLTFRoot Deserialize(TextReader textReader) { var jsonReader = new JsonTextReader(textReader); var root = new GLTFRoot(); if (jsonReader.Read() && jsonReader.TokenType != JsonToken.StartObject) { throw new Exception("gltf json must be an object"); } while (jsonReader.Read() && jsonReader.TokenType == JsonToken.PropertyName) { var curProp = jsonReader.Value.ToString(); switch (curProp) { case "extensionsUsed": root.ExtensionsUsed = jsonReader.ReadStringList(); break; case "extensionsRequired": root.ExtensionsRequired = jsonReader.ReadStringList(); break; case "accessors": root.Accessors = jsonReader.ReadList(() => Accessor.Deserialize(root, jsonReader)); break; case "animations": root.Animations = jsonReader.ReadList(() => GLTFAnimation.Deserialize(root, jsonReader)); break; case "asset": root.Asset = Asset.Deserialize(root, jsonReader); break; case "buffers": root.Buffers = jsonReader.ReadList(() => GLTFBuffer.Deserialize(root, jsonReader)); break; case "bufferViews": root.BufferViews = jsonReader.ReadList(() => BufferView.Deserialize(root, jsonReader)); break; case "cameras": root.Cameras = jsonReader.ReadList(() => GLTFCamera.Deserialize(root, jsonReader)); break; case "images": root.Images = jsonReader.ReadList(() => GLTFImage.Deserialize(root, jsonReader)); break; case "materials": root.Materials = jsonReader.ReadList(() => GLTFMaterial.Deserialize(root, jsonReader)); break; case "meshes": root.Meshes = jsonReader.ReadList(() => GLTFMesh.Deserialize(root, jsonReader)); break; case "nodes": root.Nodes = jsonReader.ReadList(() => Node.Deserialize(root, jsonReader)); break; case "samplers": root.Samplers = jsonReader.ReadList(() => Sampler.Deserialize(root, jsonReader)); break; case "scene": root.Scene = SceneId.Deserialize(root, jsonReader); break; case "scenes": root.Scenes = jsonReader.ReadList(() => GLTF.Schema.GLTFScene.Deserialize(root, jsonReader)); break; case "skins": root.Skins = jsonReader.ReadList(() => Skin.Deserialize(root, jsonReader)); break; case "textures": root.Textures = jsonReader.ReadList(() => GLTFTexture.Deserialize(root, jsonReader)); break; default: root.DefaultPropertyDeserializer(root, jsonReader); break; } } return(root); }
public AnimationSamplerId(AnimationSamplerId sampler, GLTFRoot root) { Id = sampler.Id; GLTFAnimation = sampler.GLTFAnimation; Root = root; }