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);
        }
Beispiel #2
0
        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);
        }