コード整理

This commit is contained in:
ousttrue 2022-05-10 15:31:41 +09:00
parent 3d60280188
commit 5517dc2674
7 changed files with 110 additions and 81 deletions

View File

@ -0,0 +1,23 @@
using UnityEditor;
using UnityEngine;
namespace UniGLTF.MeshUtility
{
[CustomEditor(typeof(MeshProcessDialog), true)]
public class BoneMeshEraserGUI : Editor
{
public override void OnInspectorGUI()
{
serializedObject.Update();
var skinnedMesh = serializedObject.FindProperty("_cSkinnedMesh");
EditorGUILayout.PropertyField(skinnedMesh, new GUIContent("Skinned Mesh"), true);
var animator = serializedObject.FindProperty("_cAnimator");
EditorGUILayout.PropertyField(animator, new GUIContent("Animator"), false);
var eraseRoot = serializedObject.FindProperty("_cEraseRoot");
EditorGUILayout.PropertyField(eraseRoot, new GUIContent("Erase Root"), false);
var list = serializedObject.FindProperty("_eraseBones");
EditorGUILayout.PropertyField(list, new GUIContent("Erase Bones"), true);
serializedObject.ApplyModifiedProperties();
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5cdbec3de528c61448aeb739ffe1f79e
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -9,24 +9,6 @@ using UniGLTF.M17N;
namespace UniGLTF.MeshUtility
{
[CustomEditor(typeof(MeshProcessDialog), true)]
public class BoneMeshEraserGUI : Editor
{
public override void OnInspectorGUI()
{
serializedObject.Update();
var skinnedMesh = serializedObject.FindProperty("_cSkinnedMesh");
EditorGUILayout.PropertyField(skinnedMesh, new GUIContent("Skinned Mesh"), true);
var animator = serializedObject.FindProperty("_cAnimator");
EditorGUILayout.PropertyField(animator, new GUIContent("Animator"), false);
var eraseRoot = serializedObject.FindProperty("_cEraseRoot");
EditorGUILayout.PropertyField(eraseRoot, new GUIContent("Erase Root"), false);
var list = serializedObject.FindProperty("_eraseBones");
EditorGUILayout.PropertyField(list, new GUIContent("Erase Bones"), true);
serializedObject.ApplyModifiedProperties();
}
}
public class MeshProcessDialog : EditorWindow
{
enum Tabs
@ -60,55 +42,14 @@ namespace UniGLTF.MeshUtility
GUIStyle _tabButtonStyle => "LargeButton";
GUI.ToolbarButtonSize _tabButtonSize => GUI.ToolbarButtonSize.Fixed;
private enum MeshProcessingMessages
public static void OpenWindow()
{
[LangMsg(Languages.ja, "ターゲットオブジェクト")]
[LangMsg(Languages.en, "TargetObject")]
TARGET_OBJECT,
[LangMsg(Languages.ja, "BlendShapeを含むメッシュは分割されます")]
[LangMsg(Languages.en, "Meshes containing BlendShape will be split")]
MESH_SEPARATOR,
[LangMsg(Languages.ja, "メッシュを統合します。BlendShapeを含むメッシュは独立して統合されます")]
[LangMsg(Languages.en, "Generate a single mesh. Meshes w/ BlendShape will be grouped into another one")]
MESH_INTEGRATOR,
[LangMsg(Languages.ja, "静的メッシュを一つに統合します")]
[LangMsg(Languages.en, "Integrate static meshes into one")]
STATIC_MESH_INTEGRATOR,
[LangMsg(Languages.ja, "ボーン(Erase Rootのヒエラルキー)に関連するメッシュを削除します")]
[LangMsg(Languages.en, "Eliminate meshes associated with the bones in EraseRoot hierarchy")]
BONE_MESH_ERASER,
[LangMsg(Languages.ja, "Skinned Meshを選んでください")]
[LangMsg(Languages.en, "Select a skinned mesh")]
SELECT_SKINNED_MESH,
[LangMsg(Languages.ja, "Erase Rootを選んでください")]
[LangMsg(Languages.en, "Select a erase root")]
SELECT_ERASE_ROOT,
[LangMsg(Languages.ja, "GameObjectを選んでください")]
[LangMsg(Languages.en, "Select a GameObject first")]
NO_GAMEOBJECT_SELECTED,
[LangMsg(Languages.ja, "GameObjectにスキンメッシュが含まれていません")]
[LangMsg(Languages.en, "No skinned mesh is contained")]
NO_SKINNED_MESH,
[LangMsg(Languages.ja, "GameObjectに静的メッシュが含まれていません")]
[LangMsg(Languages.en, "No static mesh is contained")]
NO_STATIC_MESH,
[LangMsg(Languages.ja, "GameObjectにスキンメッシュ・静的メッシュが含まれていません")]
[LangMsg(Languages.en, "Skinned/Static mesh is not contained")]
NO_MESH,
[LangMsg(Languages.ja, "ターゲットオブジェクトはVRMモデルです。`VRM0-> MeshIntegrator`を使ってください")]
[LangMsg(Languages.en, "Target object is VRM model, use `VRM0 -> MeshIntegrator` instead")]
VRM_DETECTED,
var window =
(MeshProcessDialog)EditorWindow.GetWindowWithRect(typeof(MeshProcessDialog),
new Rect(0, 0, 650, 500));
window.titleContent = new GUIContent("Mesh Processing Window");
window.Show();
}
private void OnEnable()

View File

@ -0,0 +1,55 @@
using UniGLTF.M17N;
namespace UniGLTF.MeshUtility
{
public enum MeshProcessingMessages
{
[LangMsg(Languages.ja, "ターゲットオブジェクト")]
[LangMsg(Languages.en, "TargetObject")]
TARGET_OBJECT,
[LangMsg(Languages.ja, "BlendShapeを含むメッシュは分割されます")]
[LangMsg(Languages.en, "Meshes containing BlendShape will be split")]
MESH_SEPARATOR,
[LangMsg(Languages.ja, "メッシュを統合します。BlendShapeを含むメッシュは独立して統合されます")]
[LangMsg(Languages.en, "Generate a single mesh. Meshes w/ BlendShape will be grouped into another one")]
MESH_INTEGRATOR,
[LangMsg(Languages.ja, "静的メッシュを一つに統合します")]
[LangMsg(Languages.en, "Integrate static meshes into one")]
STATIC_MESH_INTEGRATOR,
[LangMsg(Languages.ja, "ボーン(Erase Rootのヒエラルキー)に関連するメッシュを削除します")]
[LangMsg(Languages.en, "Eliminate meshes associated with the bones in EraseRoot hierarchy")]
BONE_MESH_ERASER,
[LangMsg(Languages.ja, "Skinned Meshを選んでください")]
[LangMsg(Languages.en, "Select a skinned mesh")]
SELECT_SKINNED_MESH,
[LangMsg(Languages.ja, "Erase Rootを選んでください")]
[LangMsg(Languages.en, "Select a erase root")]
SELECT_ERASE_ROOT,
[LangMsg(Languages.ja, "GameObjectを選んでください")]
[LangMsg(Languages.en, "Select a GameObject first")]
NO_GAMEOBJECT_SELECTED,
[LangMsg(Languages.ja, "GameObjectにスキンメッシュが含まれていません")]
[LangMsg(Languages.en, "No skinned mesh is contained")]
NO_SKINNED_MESH,
[LangMsg(Languages.ja, "GameObjectに静的メッシュが含まれていません")]
[LangMsg(Languages.en, "No static mesh is contained")]
NO_STATIC_MESH,
[LangMsg(Languages.ja, "GameObjectにスキンメッシュ・静的メッシュが含まれていません")]
[LangMsg(Languages.en, "Skinned/Static mesh is not contained")]
NO_MESH,
[LangMsg(Languages.ja, "ターゲットオブジェクトはVRMモデルです。`VRM0-> MeshIntegrator`を使ってください")]
[LangMsg(Languages.en, "Target object is VRM model, use `VRM0 -> MeshIntegrator` instead")]
VRM_DETECTED,
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 575d573f28f0e4a48a2a6509e69b7f6f
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -26,10 +26,7 @@ namespace UniGLTF
private static void ImportGltfFile() => TopMenuImplementation.ImportGltfFileToGameObject();
[MenuItem(UserMeshUtilityPrefix + "/MeshProcessing Wizard", priority = 10)]
private static void OpenMeshProcessingWindow() => TopMenuImplementation.OpenMeshProcessingWindow();
[MenuItem(UserMeshUtilityPrefix + "/Open Documents", priority = 11)]
private static void MeshUtilityDocs() => Application.OpenURL("https://vrm.dev/en/docs/univrm/gltf/mesh_utility/");
private static void OpenMeshProcessingWindow() => MeshUtility.MeshProcessDialog.OpenWindow();
#if VRM_DEVELOP
[MenuItem(DevelopmentMenuPrefix + "/Generate Serialization Code", priority = 20)]

View File

@ -8,7 +8,7 @@ namespace UniGLTF
{
public static void ExportGameObjectToGltfFile()
{
var window = (GltfExportWindow) GltfExportWindow.GetWindow(typeof(GltfExportWindow));
var window = (GltfExportWindow)GltfExportWindow.GetWindow(typeof(GltfExportWindow));
window.titleContent = new GUIContent("Gltf Exporter");
window.Show();
}
@ -92,19 +92,10 @@ namespace UniGLTF
Selection.activeObject = asset;
}
public static void OpenMeshProcessingWindow()
{
var window =
(MeshUtility.MeshProcessDialog) EditorWindow.GetWindowWithRect(typeof(MeshUtility.MeshProcessDialog),
new Rect(0, 0, 650, 500));
window.titleContent = new GUIContent("Mesh Processing Window");
window.Show();
}
public static void GenerateSerializationCode()
{
SerializerGenerator.GenerateSerializer();
DeserializerGenerator.GenerateSerializer();
}
}
}
}