diff --git a/MToon/Editor/MToonInspector.cs b/MToon/Editor/MToonInspector.cs index 9705cda..38e5eb8 100644 --- a/MToon/Editor/MToonInspector.cs +++ b/MToon/Editor/MToonInspector.cs @@ -9,6 +9,7 @@ namespace MToon public class MToonInspector : ShaderGUI { private static bool isAdvancedLightingPanelFoldout = false; + private static MToon.RotationUnit ofUvRotationUnit = MToon.RotationUnit.Rounds; private MaterialProperty _version; private MaterialProperty _blendMode; @@ -92,7 +93,6 @@ public override void OnGUI(MaterialEditor materialEditor, MaterialProperty[] pro _uvAnimScrollX = FindProperty(Utils.PropUvAnimScrollX, properties); _uvAnimScrollY = FindProperty(Utils.PropUvAnimScrollY, properties); _uvAnimRotation = FindProperty(Utils.PropUvAnimRotation, properties); - var materials = materialEditor.targets.Select(x => x as Material).ToArray(); Draw(materialEditor, materials); } @@ -317,7 +317,27 @@ private void Draw(MaterialEditor materialEditor, Material[] materials) materialEditor.TexturePropertySingleLine(new GUIContent("Mask", "Auto Animation Mask Texture (R)"), _uvAnimMaskTexture); materialEditor.ShaderProperty(_uvAnimScrollX, "Scroll X (per second)"); materialEditor.ShaderProperty(_uvAnimScrollY, "Scroll Y (per second)"); - materialEditor.ShaderProperty(_uvAnimRotation, "Rotation (per second)"); + + switch (EditorGUILayout.EnumPopup("Rotation Unit", ofUvRotationUnit)) + { + case MToon.RotationUnit.Rounds: + ofUvRotationUnit = MToon.RotationUnit.Rounds; + break; + case MToon.RotationUnit.Degrees: + ofUvRotationUnit = MToon.RotationUnit.Degrees; + break; + case MToon.RotationUnit.Radians: + ofUvRotationUnit = MToon.RotationUnit.Radians; + break; + default: + ofUvRotationUnit = MToon.RotationUnit.Rounds; + break; + }; + var uvRotation = GetUvRotationValue(ofUvRotationUnit, _uvAnimRotation.floatValue); + + uvRotation = EditorGUILayout.DelayedFloatField("Rotation value (per second)", uvRotation); + _uvAnimRotation.floatValue = GetUvRoundValue(ofUvRotationUnit, uvRotation); + } } EditorGUILayout.EndVertical(); @@ -401,5 +421,46 @@ private static void TextureWithHdrColor(MaterialEditor materialEditor, string la showAlpha: false); } + + private float GetUvRoundValue(MToon.RotationUnit unit , float val) + { + switch (unit) + { + case MToon.RotationUnit.Rounds: + { + return val; + } + case MToon.RotationUnit.Degrees: + { + return val / 360.0f; + } + case MToon.RotationUnit.Radians: + { + return val / (2.0f * 3.14159265359f); + } + default: + return val; + } + } + private float GetUvRotationValue(MToon.RotationUnit unit,float val) + { + switch (unit) + { + case MToon.RotationUnit.Rounds: + { + return val; + } + case MToon.RotationUnit.Degrees: + { + return val * 360.0f; + } + case MToon.RotationUnit.Radians: + { + return val * (2.0f * 3.14159265359f); + } + default: + return val; + } + } } } \ No newline at end of file diff --git a/MToon/Scripts/Enums.cs b/MToon/Scripts/Enums.cs index fde05ed..c140fa5 100644 --- a/MToon/Scripts/Enums.cs +++ b/MToon/Scripts/Enums.cs @@ -35,6 +35,13 @@ public enum CullMode Back = 2, } + public enum RotationUnit + { + Rounds = 0, + Degrees = 1, + Radians = 2 + } + public struct RenderQueueRequirement { public int DefaultValue;