Beispiel #1
0
        void Setup(Vrm10Instance instance)
        {
            if (instance.Vrm != null)
            {
                // OK
                return;
            }

            if (!CheckHumanoid(instance.gameObject))
            {
                // can not
                return;
            }

            EditorGUILayout.HelpBox("Humanoid OK.", MessageType.Info);
            if (GUILayout.Button("Create new VRM10Object"))
            {
                var saveName = (instance.name ?? "vrm-1.0");
                var dir      = SaveFileDialog.GetDir(SaveTitle, saveName);
                if (!string.IsNullOrEmpty(dir))
                {
                    var expressions = new Dictionary <ExpressionPreset, VRM10Expression>();
                    foreach (ExpressionPreset expression in System.Enum.GetValues(typeof(ExpressionPreset)))
                    {
                        if (expression == ExpressionPreset.custom)
                        {
                            continue;
                        }
                        expressions[expression] = CreateAndSaveExpression(expression, dir);
                    }

                    var path  = System.IO.Path.Combine(dir, (instance.name ?? "VRMObject") + ".asset");
                    var asset = CreateAsset(path, expressions);
                    if (asset != null)
                    {
                        // update editor
                        serializedObject.Update();
                        var prop = serializedObject.FindProperty(nameof(Vrm10Instance.Vrm));
                        prop.objectReferenceValue = asset;
                        serializedObject.ApplyModifiedProperties();
                    }
                }
            }
        }