public static JsonTexture2D ToSurrogate(object obj) { var texture2D = (Texture2D)obj; if (_writeCache.TryGetValue(texture2D, out var jsonTexture2D)) { return(jsonTexture2D); } var path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), @"Graph3DVisualizer\"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } var fileName = (texture2D.name != string.Empty ? texture2D.name : Guid.NewGuid().ToString()) + ".jpg"; path = System.IO.Path.Combine(path, fileName); using (var fs = new FileStream(path, FileMode.OpenOrCreate)) { var bytes = texture2D.EncodeToJPG(); fs.Write(bytes, 0, bytes.Length); } jsonTexture2D = new JsonTexture2D(path); _writeCache.Add(texture2D, jsonTexture2D); return(jsonTexture2D); }
private static CommonOptions MakeYuzuCommonOptions() { var yuzuCommonOptions = new CommonOptions() { Meta = new MetaOptions(). AddOverride(typeof(Vector2), o => o.AddAttr(new YuzuAlias("Vector2")).AddItem(nameof(Vector2.x), i => i.AddAttr(new YuzuMember("X"))). AddItem(nameof(Vector2.y), i => i.AddAttr(new YuzuMember("Y")))). AddOverride(typeof(Vector2Int), o => o.AddAttr(new YuzuAlias("Vector2Int")).AddItem(nameof(Vector2Int.x), i => i.AddAttr(new YuzuMember("X"))). AddItem(nameof(Vector2Int.y), i => i.AddAttr(new YuzuMember("Y")))). AddOverride(typeof(Vector3), o => o.AddAttr(new YuzuAlias("Vector3")).AddItem(nameof(Vector3.x), i => i.AddAttr(new YuzuMember("X"))). AddItem(nameof(Vector3.y), i => i.AddAttr(new YuzuMember("Y"))). AddItem(nameof(Vector3.z), i => i.AddAttr(new YuzuMember("Z")))). AddOverride(typeof(Vector4), o => o.AddAttr(new YuzuAlias("Vector4")).AddItem(nameof(Vector4.x), i => i.AddAttr(new YuzuMember("X"))). AddItem(nameof(Vector4.y), i => i.AddAttr(new YuzuMember("Y"))). AddItem(nameof(Vector4.z), i => i.AddAttr(new YuzuMember("Z"))). AddItem(nameof(Vector4.w), i => i.AddAttr(new YuzuMember("W")))). AddOverride(typeof(Quaternion), o => o.AddAttr(new YuzuAlias("Quaternion")).AddItem(nameof(Quaternion.x), i => i.AddAttr(new YuzuMember("X"))). AddItem(nameof(Quaternion.y), i => i.AddAttr(new YuzuMember("Y"))). AddItem(nameof(Quaternion.z), i => i.AddAttr(new YuzuMember("Z"))). AddItem(nameof(Quaternion.w), i => i.AddAttr(new YuzuMember("W")))). AddOverride(typeof(Color), o => o.AddAttr(new YuzuAlias("Color")).AddItem(nameof(Color.r), i => i.AddAttr(new YuzuMember("R"))). AddItem(nameof(Color.g), i => i.AddAttr(new YuzuMember("G"))). AddItem(nameof(Color.b), i => i.AddAttr(new YuzuMember("B"))). AddItem(nameof(Color.a), i => i.AddAttr(new YuzuMember("A")))), AllowEmptyTypes = true, }; var surrogateTexture2D = Meta.Get(typeof(Texture2D), yuzuCommonOptions).Surrogate; surrogateTexture2D.SurrogateType = typeof(JsonTexture2D); surrogateTexture2D.FuncTo = JsonTexture2D.ToSurrogate; surrogateTexture2D.FuncFrom = JsonTexture2D.FromSurrogate; JsonTexture2D.ReinitializeCache(); var surrogateType = Meta.Get(typeof(Type), yuzuCommonOptions).Surrogate; surrogateType.SurrogateType = typeof(JsonSystemType); surrogateType.FuncTo = JsonSystemType.ToSurrogate; surrogateType.FuncFrom = JsonSystemType.FromSurrogate; return(yuzuCommonOptions); }