public static GLTFTexture Deserialize(GLTFRoot root, JsonReader reader) { var texture = new GLTFTexture(); while (reader.Read() && reader.TokenType == JsonToken.PropertyName) { var curProp = reader.Value.ToString(); switch (curProp) { case "sampler": texture.Sampler = SamplerId.Deserialize(root, reader); break; case "source": texture.Source = ImageId.Deserialize(root, reader); break; default: texture.DefaultPropertyDeserializer(root, reader); break; } } return(texture); }
public GLTFTexture(GLTFTexture texture, GLTFRoot gltfRoot) : base(texture, gltfRoot) { if (texture == null) { return; } if (texture.Sampler != null) { Sampler = new SamplerId(texture.Sampler, gltfRoot); } if (texture.Source != null) { Source = new ImageId(texture.Source, gltfRoot); } }
private TextureId ExportTexture(UnityEngine.Texture textureObj) { TextureId id = GetTextureId(_root, textureObj); if (id != null) { return(id); } var texture = new GLTF.Schema.GLTFTexture(); //If texture name not set give it a unique name using count if (textureObj.name == "") { textureObj.name = (_root.Textures.Count + 1).ToString(); } if (ExportNames) { texture.Name = textureObj.name; } texture.Source = ExportImage(textureObj); texture.Sampler = ExportSampler(textureObj); _textures.Add(textureObj); id = new TextureId { Id = _root.Textures.Count, Root = _root }; _root.Textures.Add(texture); return(id); }
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); }