diff --git a/Scripts/Format/VRMImporterContext.cs b/Scripts/Format/VRMImporterContext.cs index c986b1156..71899779e 100644 --- a/Scripts/Format/VRMImporterContext.cs +++ b/Scripts/Format/VRMImporterContext.cs @@ -38,9 +38,10 @@ namespace VRM { var meta=ScriptableObject.CreateInstance(); meta.name = "Meta"; + meta.ExporterVersion = VRM.extensions.VRM.exporterVersion; var gltfMeta = VRM.extensions.VRM.meta; - meta.Version = gltfMeta.version; + meta.Version = gltfMeta.version; // model version meta.Author = gltfMeta.author; meta.ContactInformation = gltfMeta.contactInformation; meta.Reference = gltfMeta.reference; diff --git a/Scripts/Format/VRMVersion.cs b/Scripts/Format/VRMVersion.cs index 20912a780..db5fea0e2 100644 --- a/Scripts/Format/VRMVersion.cs +++ b/Scripts/Format/VRMVersion.cs @@ -1,4 +1,6 @@ +using System; + namespace VRM { public static class VRMVersion @@ -10,5 +12,48 @@ namespace VRM public const string DecrementMenuName = "VRM/Version(0.36) Decrement"; public const string IncrementMenuName = "VRM/Version(0.36) Increment"; + + public static bool IsNewer(string version) + { + if (string.IsNullOrEmpty(version)) + { + return false; + } + + var prefix = "UniVRM-"; + if (version.StartsWith(prefix)) + { + version = version.Substring(prefix.Length); + } + + var splited = version.Split('.'); + if (splited.Length < 2) + { + return false; + } + + try + { + var major = int.Parse(splited[0]); + var minor = int.Parse(splited[1]); + + if (major < MAJOR) + { + return false; + } + else if (major > MAJOR) + { + return true; + } + else + { + return minor > MINOR; + } + } + catch (Exception) + { + return false; + } + } } } diff --git a/Scripts/Meta/Editor/VRMMetaEditor.cs b/Scripts/Meta/Editor/VRMMetaEditor.cs index 0ebfe72d6..b5e861d22 100644 --- a/Scripts/Meta/Editor/VRMMetaEditor.cs +++ b/Scripts/Meta/Editor/VRMMetaEditor.cs @@ -79,6 +79,14 @@ namespace VRM so.Update(); + GUI.enabled = false; + EditorGUILayout.PropertyField(m_propMap["ExporterVersion"]); + if (VRMVersion.IsNewer(m_propMap["ExporterVersion"].stringValue)) + { + EditorGUILayout.HelpBox("Check UniVRM new version. https://github.com/dwango/UniVRM/releases", MessageType.Warning); + } + GUI.enabled = true; + m_foldoutInfo = EditorGUILayout.Foldout(m_foldoutInfo, "Information"); if (m_foldoutInfo) { diff --git a/Scripts/Meta/VRMMetaObject.cs b/Scripts/Meta/VRMMetaObject.cs index 6c6a3fa83..b614d25a5 100644 --- a/Scripts/Meta/VRMMetaObject.cs +++ b/Scripts/Meta/VRMMetaObject.cs @@ -5,6 +5,9 @@ namespace VRM { public class VRMMetaObject : ScriptableObject { + [SerializeField] + public string ExporterVersion; + #region Info [SerializeField] public string Title;