Пример #1
0
 static void Traverse(ListTreeNode <JsonValue> node, JsonFormatter f, UnityPath dir)
 {
     if (node.IsArray())
     {
         f.BeginList();
         foreach (var x in node.ArrayItems())
         {
             TraverseItem(x, f, dir);
         }
         f.EndList();
     }
     else if (node.IsMap())
     {
         f.BeginMap();
         foreach (var kv in node.ObjectItems())
         {
             f.Key(kv.Key.GetUtf8String());
             TraverseItem(kv.Value, f, dir);
         }
         f.EndMap();
     }
     else
     {
         f.Value(node);
     }
 }
Пример #2
0
 void Traverse(ListTreeNode <JsonValue> node, JsonFormatter f, Utf8String parentKey)
 {
     if (node.IsMap())
     {
         f.BeginMap();
         foreach (var kv in node.ObjectItems())
         {
             if (parentKey == s_extensions)
             {
                 if (!UsedExtension(kv.Key.GetString()))
                 {
                     continue;
                 }
             }
             f.Key(kv.Key.GetUtf8String());
             Traverse(kv.Value, f, kv.Key.GetUtf8String());
         }
         f.EndMap();
     }
     else if (node.IsArray())
     {
         f.BeginList();
         foreach (var x in node.ArrayItems())
         {
             Traverse(x, f, default(Utf8String));
         }
         f.EndList();
     }
     else
     {
         f.Value(node);
     }
 }
Пример #3
0
        static void TraverseItem(ListTreeNode <JsonValue> node, JsonFormatter f, UnityPath dir)
        {
            var title = GetTitle(node);

            if (string.IsNullOrEmpty(title))
            {
                Traverse(node, f, dir);
            }
            else
            {
                // ref
                f.BeginMap();
                f.Key("$ref");
                var fileName = string.Format("{0}.schema.json", title);
                f.Value(fileName);
                f.EndMap();

                // new formatter
                {
                    var subFormatter = new JsonFormatter(4);

                    subFormatter.BeginMap();
                    foreach (var _kv in node.ObjectItems())
                    {
                        subFormatter.Key(_kv.Key.GetUtf8String());
                        Traverse(_kv.Value, subFormatter, dir);
                    }
                    subFormatter.EndMap();

                    var subJson = subFormatter.ToString();
                    var path    = dir.Child(fileName);
                    File.WriteAllText(path.FullPath, subJson);
                }
            }
        }
Пример #4
0
        public static ColliderShape Deserialize_Shapes_ITEM(ListTreeNode <JsonValue> parsed)
        {
            var value = new ColliderShape();

            foreach (var kv in parsed.ObjectItems())
            {
                var key = kv.Key.GetString();

                if (key == "extensions")
                {
                    value.Extensions = new glTFExtensionImport(kv.Value);
                    continue;
                }

                if (key == "extras")
                {
                    value.Extras = new glTFExtensionImport(kv.Value);
                    continue;
                }

                if (key == "sphere")
                {
                    value.Sphere = Deserialize_Sphere(kv.Value);
                    continue;
                }

                if (key == "capsule")
                {
                    value.Capsule = Deserialize_Capsule(kv.Value);
                    continue;
                }
            }
            return(value);
        }
Пример #5
0
 // {
 //   "bone": "hips",
 //   "node": 14,
 //   "useDefaultValues": true,
 //   "min": {
 //       "x": 0,
 //       "y": 0,
 //       "z": 0
 //   },
 //   "max": {
 //       "x": 0,
 //       "y": 0,
 //       "z": 0
 //   },
 //   "center": {
 //       "x": 0,
 //       "y": 0,
 //       "z": 0
 //   },
 //   "axisLength": 0
 // },
 static UniGLTF.Extensions.VRMC_vrm.HumanBone MigrateHumanoidBone(ListTreeNode <JsonValue> vrm0)
 {
     return(new UniGLTF.Extensions.VRMC_vrm.HumanBone
     {
         Node = vrm0["node"].GetInt32(),
     });
 }
Пример #6
0
        static string GetLicenseUrl(ListTreeNode <JsonValue> vrm0)
        {
            string l0 = default;
            string l1 = default;

            foreach (var kv in vrm0.ObjectItems())
            {
                switch (kv.Key.GetString())
                {
                case "otherLicenseUrl":
                    l0 = kv.Value.GetString();
                    break;

                case "otherPermissionUrl":
                    l1 = kv.Value.GetString();
                    break;
                }
            }
            if (!string.IsNullOrWhiteSpace(l0))
            {
                return(l0);
            }
            if (!string.IsNullOrWhiteSpace(l1))
            {
                return(l1);
            }
            return("");
        }
Пример #7
0
        public static ColliderShapeCapsule Deserialize_Capsule(ListTreeNode <JsonValue> parsed)
        {
            var value = new ColliderShapeCapsule();

            foreach (var kv in parsed.ObjectItems())
            {
                var key = kv.Key.GetString();

                if (key == "offset")
                {
                    value.Offset = Deserialize_Offset(kv.Value);
                    continue;
                }

                if (key == "radius")
                {
                    value.Radius = kv.Value.GetSingle();
                    continue;
                }

                if (key == "tail")
                {
                    value.Tail = Deserialize_Tail(kv.Value);
                    continue;
                }
            }
            return(value);
        }
Пример #8
0
        public static Spring Deserialize_Springs_ITEM(ListTreeNode <JsonValue> parsed)
        {
            var value = new Spring();

            foreach (var kv in parsed.ObjectItems())
            {
                var key = kv.Key.GetString();

                if (key == "name")
                {
                    value.Name = kv.Value.GetString();
                    continue;
                }

                if (key == "joints")
                {
                    value.Joints = Deserialize_Joints(kv.Value);
                    continue;
                }

                if (key == "colliders")
                {
                    value.Colliders = Deserialize_Colliders(kv.Value);
                    continue;
                }
            }
            return(value);
        }
Пример #9
0
        static glTF_KHR_texture_transform Deserialize(ListTreeNode <JsonValue> json)
        {
            var t = new glTF_KHR_texture_transform();

            if (json.Value.ValueType == ValueNodeType.Object)
            {
                foreach (var kv in json.ObjectItems())
                {
                    var key = kv.Key.GetString();
                    switch (key)
                    {
                    case nameof(offset):
                        t.offset = DeserializeFloat2(kv.Value).ToArray();
                        break;

                    case nameof(rotation):
                        t.rotation = kv.Value.GetSingle();
                        break;

                    case nameof(scale):
                        t.scale = DeserializeFloat2(kv.Value).ToArray();
                        break;

                    case nameof(texCoord):
                        t.texCoord = kv.Value.GetInt32();
                        break;

                    default:
                        throw new NotImplementedException();
                    }
                }
            }

            return(t);
        }
Пример #10
0
        public static List <glTF_VCI_Material> Parse(ListTreeNode <JsonValue> json)
        {
            var materials = json.DeserializeList <glTF_VCI_Material>();
            var jsonItems = json.ArrayItems().ToArray();

            for (var i = 0; i < materials.Count; ++i)
            {
                materials[i].floatProperties =
                    jsonItems[i][s_floatProperties].ObjectItems()
                    .ToDictionary(x => x.Key.GetString(), x => x.Value.GetSingle());
                materials[i].vectorProperties =
                    jsonItems[i][s_vectorProperties].ObjectItems().ToDictionary(x => x.Key.GetString(),
                                                                                x => { return(x.Value.ArrayItems().Select(y => y.GetSingle()).ToArray()); });
                materials[i].keywordMap =
                    jsonItems[i][s_keywordMap].ObjectItems()
                    .ToDictionary(x => x.Key.GetString(), x => x.Value.GetBoolean());
                materials[i].tagMap =
                    jsonItems[i][s_tagMap].ObjectItems().ToDictionary(x => x.Key.GetString(), x => x.Value.GetString());
                materials[i].textureProperties =
                    jsonItems[i][s_textureProperties].ObjectItems()
                    .ToDictionary(x => x.Key.GetString(), x => x.Value.GetInt32());
            }

            return(materials);
        }
Пример #11
0
        public static VRMC_springBone Deserialize(ListTreeNode <JsonValue> parsed)
        {
            var value = new VRMC_springBone();

            foreach (var kv in parsed.ObjectItems())
            {
                var key = kv.Key.GetString();

                if (key == "extensions")
                {
                    value.Extensions = new glTFExtensionImport(kv.Value);
                    continue;
                }

                if (key == "extras")
                {
                    value.Extras = new glTFExtensionImport(kv.Value);
                    continue;
                }

                if (key == "springs")
                {
                    value.Springs = Deserialize_Springs(kv.Value);
                    continue;
                }
            }
            return(value);
        }
Пример #12
0
        public static SpringSetting Deserialize_Settings_ITEM(ListTreeNode <JsonValue> parsed)
        {
            var value = new SpringSetting();

            foreach (var kv in parsed.ObjectItems())
            {
                var key = kv.Key.GetString();

                if (key == "stiffness")
                {
                    value.Stiffness = kv.Value.GetSingle();
                    continue;
                }

                if (key == "gravityPower")
                {
                    value.GravityPower = kv.Value.GetSingle();
                    continue;
                }

                if (key == "gravityDir")
                {
                    value.GravityDir = Deserialize_GravityDir(kv.Value);
                    continue;
                }

                if (key == "dragForce")
                {
                    value.DragForce = kv.Value.GetSingle();
                    continue;
                }
            }
            return(value);
        }
Пример #13
0
        public static Vector3 Deserialize_vrm_firstPerson_firstPersonBoneOffset(ListTreeNode <JsonValue> parsed)
        {
            var value = new Vector3();

            foreach (var kv in parsed.ObjectItems())
            {
                var key = kv.Key.GetString();

                if (key == "x")
                {
                    value.x = kv.Value.GetSingle();
                    continue;
                }

                if (key == "y")
                {
                    value.y = kv.Value.GetSingle();
                    continue;
                }

                if (key == "z")
                {
                    value.z = kv.Value.GetSingle();
                    continue;
                }
            }
            return(value);
        }
Пример #14
0
 static float[] ReverseZ(ListTreeNode <JsonValue> xyz)
 {
     return(new float[] {
         xyz["x"].GetSingle(),
         xyz["y"].GetSingle(),
         -xyz["z"].GetSingle(),
     });
 }
Пример #15
0
        public static glTF_VRM_extensions Deserialize(ListTreeNode <JsonValue> parsed)
        {
            var value = new glTF_VRM_extensions();

            foreach (var kv in parsed.ObjectItems())
            {
                var key = kv.Key.GetString();

                if (key == "exporterVersion")
                {
                    value.exporterVersion = kv.Value.GetString();
                    continue;
                }

                if (key == "specVersion")
                {
                    value.specVersion = kv.Value.GetString();
                    continue;
                }

                if (key == "meta")
                {
                    value.meta = Deserialize_vrm_meta(kv.Value);
                    continue;
                }

                if (key == "humanoid")
                {
                    value.humanoid = Deserialize_vrm_humanoid(kv.Value);
                    continue;
                }

                if (key == "firstPerson")
                {
                    value.firstPerson = Deserialize_vrm_firstPerson(kv.Value);
                    continue;
                }

                if (key == "blendShapeMaster")
                {
                    value.blendShapeMaster = Deserialize_vrm_blendShapeMaster(kv.Value);
                    continue;
                }

                if (key == "secondaryAnimation")
                {
                    value.secondaryAnimation = Deserialize_vrm_secondaryAnimation(kv.Value);
                    continue;
                }

                if (key == "materialProperties")
                {
                    value.materialProperties = Deserialize_vrm_materialProperties(kv.Value);
                    continue;
                }
            }
            return(value);
        }
Пример #16
0
        public static PositionConstraint Deserialize_Position(ListTreeNode <JsonValue> parsed)
        {
            var value = new PositionConstraint();

            foreach (var kv in parsed.ObjectItems())
            {
                var key = kv.Key.GetString();

                if (key == "extensions")
                {
                    value.Extensions = new glTFExtensionImport(kv.Value);
                    continue;
                }

                if (key == "extras")
                {
                    value.Extras = new glTFExtensionImport(kv.Value);
                    continue;
                }

                if (key == "name")
                {
                    value.Name = kv.Value.GetString();
                    continue;
                }

                if (key == "source")
                {
                    value.Source = kv.Value.GetInt32();
                    continue;
                }

                if (key == "sourceSpace")
                {
                    value.SourceSpace = (ObjectSpace)Enum.Parse(typeof(ObjectSpace), kv.Value.GetString(), true);
                    continue;
                }

                if (key == "destinationSpace")
                {
                    value.DestinationSpace = (ObjectSpace)Enum.Parse(typeof(ObjectSpace), kv.Value.GetString(), true);
                    continue;
                }

                if (key == "freezeAxes")
                {
                    value.FreezeAxes = Deserialize_FreezeAxes(kv.Value);
                    continue;
                }

                if (key == "weight")
                {
                    value.Weight = kv.Value.GetSingle();
                    continue;
                }
            }
            return(value);
        }
Пример #17
0
        public static glTF_VRM_Material Deserialize_vrm_materialProperties_LIST(ListTreeNode <JsonValue> parsed)
        {
            var value = new glTF_VRM_Material();

            foreach (var kv in parsed.ObjectItems())
            {
                var key = kv.Key.GetString();

                if (key == "name")
                {
                    value.name = kv.Value.GetString();
                    continue;
                }

                if (key == "shader")
                {
                    value.shader = kv.Value.GetString();
                    continue;
                }

                if (key == "renderQueue")
                {
                    value.renderQueue = kv.Value.GetInt32();
                    continue;
                }

                if (key == "floatProperties")
                {
                    value.floatProperties = Deserialize_vrm_materialProperties__floatProperties(kv.Value);
                    continue;
                }

                if (key == "vectorProperties")
                {
                    value.vectorProperties = Deserialize_vrm_materialProperties__vectorProperties(kv.Value);
                    continue;
                }

                if (key == "textureProperties")
                {
                    value.textureProperties = Deserialize_vrm_materialProperties__textureProperties(kv.Value);
                    continue;
                }

                if (key == "keywordMap")
                {
                    value.keywordMap = Deserialize_vrm_materialProperties__keywordMap(kv.Value);
                    continue;
                }

                if (key == "tagMap")
                {
                    value.tagMap = Deserialize_vrm_materialProperties__tagMap(kv.Value);
                    continue;
                }
            }
            return(value);
        }
Пример #18
0
        public static glTF_VRM_Firstperson Deserialize_vrm_firstPerson(ListTreeNode <JsonValue> parsed)
        {
            var value = new glTF_VRM_Firstperson();

            foreach (var kv in parsed.ObjectItems())
            {
                var key = kv.Key.GetString();

                if (key == "firstPersonBone")
                {
                    value.firstPersonBone = kv.Value.GetInt32();
                    continue;
                }

                if (key == "firstPersonBoneOffset")
                {
                    value.firstPersonBoneOffset = Deserialize_vrm_firstPerson_firstPersonBoneOffset(kv.Value);
                    continue;
                }

                if (key == "meshAnnotations")
                {
                    value.meshAnnotations = Deserialize_vrm_firstPerson_meshAnnotations(kv.Value);
                    continue;
                }

                if (key == "lookAtTypeName")
                {
                    value.lookAtTypeName = kv.Value.GetString();
                    continue;
                }

                if (key == "lookAtHorizontalInner")
                {
                    value.lookAtHorizontalInner = Deserialize_vrm_firstPerson_lookAtHorizontalInner(kv.Value);
                    continue;
                }

                if (key == "lookAtHorizontalOuter")
                {
                    value.lookAtHorizontalOuter = Deserialize_vrm_firstPerson_lookAtHorizontalOuter(kv.Value);
                    continue;
                }

                if (key == "lookAtVerticalDown")
                {
                    value.lookAtVerticalDown = Deserialize_vrm_firstPerson_lookAtVerticalDown(kv.Value);
                    continue;
                }

                if (key == "lookAtVerticalUp")
                {
                    value.lookAtVerticalUp = Deserialize_vrm_firstPerson_lookAtVerticalUp(kv.Value);
                    continue;
                }
            }
            return(value);
        }
Пример #19
0
        public static void CheckBone(string bone, ListTreeNode <JsonValue> vrm0, UniGLTF.Extensions.VRMC_vrm.HumanBone vrm1)
        {
            var vrm0NodeIndex = vrm0["node"].GetInt32();

            if (vrm0NodeIndex != vrm1.Node)
            {
                throw new Exception($"different {bone}: {vrm0NodeIndex} != {vrm1.Node}");
            }
        }
Пример #20
0
 static IEnumerable <float> DeserializeFloat2(ListTreeNode <JsonValue> json)
 {
     if (json.Value.ValueType == ValueNodeType.Array)
     {
         foreach (var a in json.ArrayItems())
         {
             yield return(a.GetSingle());
         }
     }
 }
 private void InitTree()
 {
     LoadItems();
     if (TreeList.TvList.Nodes.Count > 0)
     {
         CurrentNode = (ListTreeNode)TreeList.TvList.Nodes[0];
         TreeList.TvList.SelectedNode = CurrentNode;
         LoadItemProperties();
     }
 }
Пример #22
0
        public static List <SpringBoneJoint> Deserialize_Joints(ListTreeNode <JsonValue> parsed)
        {
            var value = new List <SpringBoneJoint>();

            foreach (var x in parsed.ArrayItems())
            {
                value.Add(Deserialize_Joints_ITEM(x));
            }
            return(value);
        }
 private void InitTree()
 {
     LoadItems();
     if (TreeList.TvList.Nodes.Count > 0)
     {
         CurrentNode = (ListTreeNode)TreeList.TvList.Nodes[0];
         TreeList.TvList.SelectedNode = CurrentNode;
         LoadItemProperties();
     }
 }
Пример #24
0
        public static void SetValue <T>(this ListTreeNode <JsonValue> node, string key, T value)
        {
            var f = new JsonFormatter();

            f.Serialize(value);
            var p     = Utf8String.From(key);
            var bytes = f.GetStoreBytes();

            node.SetValue(p, bytes);
        }
Пример #25
0
        public static List <ColliderShape> Deserialize_Shapes(ListTreeNode <JsonValue> parsed)
        {
            var value = new List <ColliderShape>();

            foreach (var x in parsed.ArrayItems())
            {
                value.Add(Deserialize_Shapes_ITEM(x));
            }
            return(value);
        }
Пример #26
0
        public static bool[] Deserialize_FreezeAxes(ListTreeNode <JsonValue> parsed)
        {
            var value = new bool[parsed.GetArrayCount()];
            int i     = 0;

            foreach (var x in parsed.ArrayItems())
            {
                value[i++] = x.GetBoolean();
            }
            return(value);
        }
Пример #27
0
        public static int[] Deserialize_Colliders(ListTreeNode <JsonValue> parsed)
        {
            var value = new int[parsed.GetArrayCount()];
            int i     = 0;

            foreach (var x in parsed.ArrayItems())
            {
                value[i++] = x.GetInt32();
            }
            return(value);
        }
Пример #28
0
        public static Int32[] Deserialize_vrm_secondaryAnimation_boneGroups__bones(ListTreeNode <JsonValue> parsed)
        {
            var value = new Int32[parsed.GetArrayCount()];
            int i     = 0;

            foreach (var x in parsed.ArrayItems())
            {
                value[i++] = x.GetInt32();
            }
            return(value);
        }
Пример #29
0
        void Notify(Utf8String method, ListTreeNode <MsgPackValue> args)
        {
            NotifyFunc func;

            if (!m_map.TryGetValue(method, out func))
            {
                Console.WriteLine($"{method} not found");
                return;
            }
            func(args);
        }
Пример #30
0
        public static Single[] Deserialize_vrm_firstPerson_lookAtVerticalUp_curve(ListTreeNode <JsonValue> parsed)
        {
            var value = new Single[parsed.GetArrayCount()];
            int i     = 0;

            foreach (var x in parsed.ArrayItems())
            {
                value[i++] = x.GetSingle();
            }
            return(value);
        }
Пример #31
0
        public static float[] Deserialize_OutlineFactor(ListTreeNode <JsonValue> parsed)
        {
            var value = new float[parsed.GetArrayCount()];
            int i     = 0;

            foreach (var x in parsed.ArrayItems())
            {
                value[i++] = x.GetSingle();
            }
            return(value);
        }
        protected virtual void OnClickRemoveButton(Object source, EventArgs e)
        {
            if (IsLoading())
            {
                return;
            }

            if (TreeList.TvList.Nodes.Count == 0)
            {
                CurrentNode = null;
                LoadItemProperties();
            }

            SetDirty();
            UpdateControlsEnabling();
        }
        protected virtual void OnNodeSelected(Object source, TreeViewEventArgs e)
        {
            if (IsLoading())
            {
                return;
            }

            CurrentNode = (ListTreeNode) TreeList.TvList.SelectedNode;

            LoadItemProperties();
            UpdateControlsEnabling();
        }
Пример #34
0
 private void InitTree()
 {
     this.LoadItems();
     if (this.TreeList.TvList.Nodes.Count > 0)
     {
         this.CurrentNode = (ListTreeNode) this.TreeList.TvList.Nodes[0];
         this.TreeList.TvList.SelectedNode = this.CurrentNode;
         this.LoadItemProperties();
     }
 }
Пример #35
0
 protected virtual void OnNodeSelected(object source, TreeViewEventArgs e)
 {
     if (!base.IsLoading())
     {
         this.CurrentNode = (ListTreeNode) this.TreeList.TvList.SelectedNode;
         this.LoadItemProperties();
         this.UpdateControlsEnabling();
     }
 }
Пример #36
0
 protected virtual void OnClickRemoveButton(object source, EventArgs e)
 {
     if (!base.IsLoading())
     {
         if (this.TreeList.TvList.Nodes.Count == 0)
         {
             this.CurrentNode = null;
             this.LoadItemProperties();
         }
         this.SetDirty();
         this.UpdateControlsEnabling();
     }
 }