2025-07-08 10:46:31 +00:00
//Stylized Water 2
//Staggart Creations (http://staggart.xyz)
//Copyright protected under Unity Asset Store EULA
using System ;
using System.Collections ;
using System.Collections.Generic ;
using UnityEditor ;
using UnityEditor.AnimatedValues ;
using UnityEditor.Rendering ;
using UnityEngine ;
using UnityEngine.Rendering ;
#if URP
using UnityEngine.Rendering.Universal ;
#endif
namespace StylizedWater2
{
public class UI
{
private const string AssetIconData = "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
private static Texture _AssetIcon ;
public static Texture AssetIcon
{
get
{
if ( _AssetIcon = = null ) _AssetIcon = CreateIcon ( AssetIconData ) ;
return _AssetIcon ;
}
}
private const string UnderwaterAssetIconData = "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
private static Texture _UnderwaterAssetIcon ;
public static Texture UnderwaterAssetIcon
{
get
{
if ( _UnderwaterAssetIcon = = null ) _UnderwaterAssetIcon = CreateIcon ( UnderwaterAssetIconData ) ;
return _UnderwaterAssetIcon ;
}
}
private const string DynamicEffectsAssetIconData = "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
private static Texture _DynamicEffectsAssetIcon ;
public static Texture DynamicEffectsAssetIcon
{
get
{
if ( _DynamicEffectsAssetIcon = = null ) _DynamicEffectsAssetIcon = CreateIcon ( DynamicEffectsAssetIconData ) ;
return _DynamicEffectsAssetIcon ;
}
}
private const string WarningIconData = "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" ;
public static Texture WarningIcon ;
private const string ErrorIconData = "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAD9klEQVR4Ae2bz2vUQBTHJ91S7FZ6EH/VY/GuRy8evHoVWnELgl68eBG8eNhfUPoXeOxB6B5WsGAPpZT+ISK46j/Q7MZiy2q75u04a35MkjeTl7fbrQMhmTcv8973k8nM0E2dQbslrIrj6G9rb+ntVNbVNbueBgPtfTNa6wUy/gdA/LCrfn8w1oo8IAZZoRwBVdHeapBlltSRjEEGgQoAj3gFhRACBQBe8cQQ8gIYj3hCCHkAjFc8EQRbADWWCU+JzDrnmBNsANTE+1Y9Kyf2dksIs4aJ2ou//6AlHq/hlq+PH16L/d0XhrmJ4aiUW+Um9l6TEWAvHrIplz2xs93xr9KPg72OWFjoYgXE/AxHAhZAPvHBLHe2g7Xw9cFeuG5bM4CAAUAnXgnSQaASr2IgIWQBoBevEgxCoBavYiAgpAEoTrxKECAUJV7FyICQBKB48SpBjrOEUNOF0gGYLvFKtdy7xCBEAUyn+BQIs/6uTjXDuR6sTOW1HAmjv1uY7gTtmZydRUeb7OvkRNfnZZ2xCBsfgB/eVQMBSwa+uVz5AHS7NwwyNfE16Dbuygeg55qIMvGNqzKw8AFw3SWxGZpwZZq6H1iePWF7BfQTkwFBtOvJMUxsZYT/vJC+CNf8LnwjAHJ1D+HJfslI+1ZGO2kzLwCvdx0BAHzYCi8AOQKyxLG9/5AIL4AuaiVgWwH4AfRQe4EpBuC6N7PGv9+O8UF0g3PhfQW8LmaCw/jg1CG8eAEcHmKWOIwPQhrOhReA17sWSqu6LquNN0Ez6whwBo8eBoPDhw3Flbm5Y387LHeDnheOs7go688rP0W/Px9uJK+NPnDi2wqDBinsr1KtqEUG8aHAvK8AhIaVoFSKPH7fDiPi9JR1BYB0+AF8/3pHLN/+DcFj5VvnbsxWsIF3DihYjEH3Y5oDDDLkcuWdBLlUGcS58ABmxUolyKs+kV9/BDPMe71SqQe7iK4CjSGQIj+Bede+Ekwgdr1e2xWfP92L2SkMUvzoRxHoUvcKAIQ6RTxtH09XXd+uPzaarpgp6ZdIbWcGRo14uFsHAOxFQ4AY4bLRDNcpa6trNeE4Df8Q0SMJAITng1C0eCES6aYBKBbC200hjo7k8fIV5fP+1xc8+RTx4JgFAHzoRwKIjxZqCAjxkAIGAPjRQdCJhwhQqCAgxUPI6DIItqQCEATBPmE5KcDQ/qt/KbU9q9FAPHTlWPzT1OR+RWIoHgBgXwHwVYXudVA9UpwtxEPYmei6iKw3hAxIkXr+PizFSwD24ZsTASGH+LwA4P7xQsgpngLA+CAQiKcCwA+BSDwlAD4IhOIhaZONEPhnlabvAMe5KTb7gHMjDpPohQfwB63ZMyXk5VWPAAAAAElFTkSuQmCC" ;
public static Texture ErrorIcon ;
private const string InfoIconData = "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" ;
public static Texture InfoIcon ;
public static readonly Color RedColor = new Color ( 1f , 0.31f , 0.34f ) ;
public static readonly Color OrangeColor = new Color ( 1f , 0.68f , 0f ) ;
public static readonly Color GreenColor = new Color ( 0.33f , 1f , 0f ) ;
private const float ANIM_SPEED = 12f ;
public static bool ExpandTooltips
{
get = > SessionState . GetBool ( "SW2_UI_TOOLTIPS" , false ) ;
set = > SessionState . SetBool ( "SW2_UI_TOOLTIPS" , value ) ;
}
static UI ( )
{
WarningIcon = CreateIcon ( WarningIconData ) ;
ErrorIcon = CreateIcon ( ErrorIconData ) ;
InfoIcon = CreateIcon ( InfoIconData ) ;
}
public static Texture CreateIcon ( string data )
{
byte [ ] bytes = System . Convert . FromBase64String ( data ) ;
Texture2D icon = new Texture2D ( 32 , 32 , TextureFormat . RGBA32 , false , false ) ;
icon . LoadImage ( bytes , true ) ;
return icon ;
}
public static void DrawHeader ( )
{
EditorGUILayout . LabelField ( $"{AssetInfo.ASSET_NAME} (version {AssetInfo.INSTALLED_VERSION})" , EditorStyles . centeredGreyMiniLabel ) ;
EditorGUILayout . Space ( ) ;
}
public static string iconPrefix = > EditorGUIUtility . isProSkin ? "d_" : "" ;
public static void DrawRendererProperty ( SerializedProperty property )
{
#if URP
property . serializedObject . Update ( ) ;
int selectedRendererOption = property . intValue ;
EditorGUI . BeginChangeCheck ( ) ;
Rect controlRect = EditorGUILayout . GetControlRect ( true ) ;
EditorGUI . BeginProperty ( controlRect , new GUIContent ( property . displayName , null , tooltip : property . tooltip ) , property ) ;
selectedRendererOption = EditorGUI . IntPopup ( controlRect , new GUIContent ( property . displayName , null , tooltip : property . tooltip ) , selectedRendererOption , PipelineUtilities . rendererDisplayList , PipelineUtilities . rendererIndexList ) ;
if ( EditorGUI . EndChangeCheck ( ) )
{
//Clamp to valid index
selectedRendererOption = PipelineUtilities . ValidateRenderer ( selectedRendererOption ) ;
property . intValue = selectedRendererOption ;
property . serializedObject . ApplyModifiedProperties ( ) ;
}
#else
EditorGUILayout . PropertyField ( property ) ;
#endif
}
private static float Sin ( float offset = 0f )
{
return Mathf . Sin ( offset + ( float ) EditorApplication . timeSinceStartup * Mathf . PI * 2f ) * 0.5f + 0.5f ;
}
public static void DrawNotification ( string text , MessageType messageType = MessageType . None )
{
DrawHelpbox ( text , messageType ) ;
}
public static void DrawNotification ( bool condition , string text , string label , Action action , MessageType messageType = MessageType . None )
{
DrawHelpbox ( text , messageType , condition , label , action ) ;
}
public static void DrawNotification ( bool condition , string text , MessageType messageType = MessageType . None )
{
DrawHelpbox ( text , messageType , condition , null , null ) ;
}
private static void DrawHelpbox ( string text , MessageType messageType = MessageType . None , bool condition = true , string buttonLabel = "" , Action action = null )
{
if ( ! condition ) return ;
Rect r = EditorGUILayout . GetControlRect ( ) ;
r . width - = 10f ;
Color sideColor = Color . gray ;
Texture icon = null ;
switch ( messageType )
{
case ( MessageType . None ) :
{
sideColor = Color . gray ;
}
break ;
case ( MessageType . Warning ) : //Warning
{
sideColor = Color . Lerp ( OrangeColor , OrangeColor * 1.20f , Sin ( r . y ) ) ;
icon = WarningIcon ;
}
break ;
case ( MessageType . Error ) : //Error
{
sideColor = Color . Lerp ( RedColor , RedColor * 1.33f , Sin ( r . y ) ) ;
icon = ErrorIcon ;
}
break ;
case ( MessageType . Info ) : //Info
{
sideColor = Color . Lerp ( new Color ( 1f , 1f , 1f ) , new Color ( 0.9f , 0.9f , 0.9f ) , Sin ( r . y ) ) ;
icon = InfoIcon ;
}
break ;
}
float width = r . width ;
//float rightPadding =
float height = EditorStyles . helpBox . CalcHeight ( new GUIContent ( text ) , EditorGUIUtility . currentViewWidth ) + ( EditorStyles . label . lineHeight * 2f ) ;
r . height = height ;
Rect btnRect = r ;
GUIContent btnContent = null ;
//Showing a button instead
if ( action ! = null )
{
icon = null ;
btnContent = new GUIContent ( " " + buttonLabel , EditorGUIUtility . IconContent ( "SceneLoadIn" ) . image , "Execute suggested action" ) ;
float size = EditorStyles . toolbarButton . CalcSize ( btnContent ) . x + 5f ;
btnRect . width = size ;
btnRect . x = width - size ;
btnRect . height = EditorStyles . miniButtonMid . fixedHeight + 5f ;
//Vertical center
btnRect . y + = ( height * 0.5f ) - ( btnRect . height * 0.5f ) ;
}
Rect iconRect = r ;
if ( icon ! = null )
{
float size = Mathf . Min ( height * 0.75f , 50f ) ;
iconRect = r ;
iconRect . x = r . width - size ;
iconRect . width = size ;
iconRect . height = iconRect . width ;
//Vertical center
iconRect . y + = ( height * 0.5f ) - ( iconRect . height * 0.5f ) ;
//Recalculate text height
height = EditorStyles . helpBox . CalcHeight ( new GUIContent ( text ) ,
EditorGUIUtility . currentViewWidth - size ) + ( EditorStyles . label . lineHeight * 2f ) ;
r . height = height ;
}
float backgroundTint = EditorGUIUtility . isProSkin ? 0.4f : 1f ;
EditorGUI . DrawRect ( r , new Color ( backgroundTint , backgroundTint , backgroundTint , 0.2f ) ) ;
Rect colorRect = r ;
colorRect . width = 7f ;
EditorGUI . DrawRect ( colorRect , sideColor ) ;
Rect textRect = r ;
textRect . x + = colorRect . width + 10f ;
//Shrink text area on right side to make room
if ( icon ! = null ) textRect . width - = iconRect . width * 2f ;
if ( action ! = null ) textRect . width - = btnRect . width + 30f ;
GUI . Label ( textRect , new GUIContent ( text ) , Styles . NotificationArea ) ;
if ( icon ! = null )
{
GUI . DrawTexture ( iconRect , icon , ScaleMode . ScaleToFit ) ;
}
if ( action ! = null )
{
if ( GUI . Button ( btnRect , btnContent ) )
{
action ? . Invoke ( ) ;
}
}
GUILayout . Space ( height - EditorStyles . label . lineHeight ) ; //17=default line height
}
public static void DrawStatusBox ( string prefix , string statusText , MessageType messageType = MessageType . None )
{
using ( new EditorGUILayout . HorizontalScope ( ) )
{
EditorGUILayout . LabelField ( prefix , GUILayout . MaxWidth ( EditorGUIUtility . labelWidth ) ) ;
Color defaultColor = GUI . contentColor ;
using ( new EditorGUILayout . HorizontalScope ( EditorStyles . textField ) )
{
switch ( messageType )
{
case MessageType . Error : GUI . contentColor = RedColor ;
break ;
case MessageType . Warning : GUI . contentColor = OrangeColor ;
break ;
case MessageType . Info : GUI . contentColor = GreenColor ;
break ;
}
EditorGUILayout . LabelField ( statusText ) ;
GUI . contentColor = defaultColor ;
}
}
}
public static void DrawExtension ( string name , string description , bool installed , string url , Texture icon )
{
EditorGUILayout . BeginHorizontal ( ) ;
{
Color defaultColor = GUI . contentColor ;
GUILayout . Label ( icon , GUILayout . MaxHeight ( 100f ) ) ;
EditorGUILayout . BeginVertical ( ) ;
{
EditorGUILayout . LabelField ( name , Styles . BoldLabel , GUILayout . Height ( 20 ) ) ;
GUILayout . Space ( 5 ) ;
EditorGUILayout . LabelField ( description , Styles . WordWrapLabel ) ;
using ( new EditorGUILayout . HorizontalScope ( EditorStyles . textField ) )
{
if ( installed ) GUI . contentColor = UI . GreenColor ;
EditorGUILayout . LabelField ( installed ? "Installed" : "Not Installed" , GUILayout . MaxWidth ( ( 75f ) ) ) ;
GUI . contentColor = defaultColor ;
GUILayout . FlexibleSpace ( ) ;
if ( GUILayout . Button ( UI . Styles . AssetStoreBtnContent ) )
{
Application . OpenURL ( url ) ;
}
}
}
EditorGUILayout . EndVertical ( ) ;
}
EditorGUILayout . EndHorizontal ( ) ;
}
public static void DrawIntegration ( ShaderConfigurator . Fog . Integration integration )
{
EditorGUILayout . LabelField ( integration . name , EditorStyles . boldLabel ) ;
EditorGUILayout . BeginHorizontal ( ) ;
{
Color defaultColor = GUI . contentColor ;
GUILayout . Label ( integration . thumbnail , GUILayout . Height ( 50f ) , GUILayout . Width ( 50f ) ) ;
EditorGUILayout . BeginVertical ( ) ;
{
GUILayout . Space ( 5 ) ;
if ( integration . asset ! = ShaderConfigurator . Fog . Assets . None & & integration . asset ! = ShaderConfigurator . Fog . Assets . UnityFog )
{
using ( new EditorGUILayout . HorizontalScope ( EditorStyles . textField ) )
{
if ( integration . installed ) GUI . contentColor = GreenColor ;
if ( ! integration . installed ) GUI . contentColor = UI . OrangeColor ;
EditorGUILayout . LabelField ( integration . installed ? "Installed" : "Not Installed" , GUILayout . MaxWidth ( ( 75f ) ) ) ;
GUI . contentColor = defaultColor ;
GUILayout . FlexibleSpace ( ) ;
if ( GUILayout . Button ( UI . Styles . AssetStoreBtnContent ) )
{
AssetInfo . OpenAssetStore ( integration . url ) ;
}
}
GUILayout . Space ( 5 ) ;
}
if ( ! integration . installed )
{
//UI.DrawNotification("Shader library for asset not found in project", MessageType.Error);
}
}
EditorGUILayout . EndVertical ( ) ;
}
EditorGUILayout . EndHorizontal ( ) ;
}
public static void DrawH2 ( string text )
{
Rect backgroundRect = EditorGUILayout . GetControlRect ( ) ;
backgroundRect . height = 25f ;
var labelRect = backgroundRect ;
// Background rect should be full-width
backgroundRect . xMin = 0f ;
// Background
float backgroundTint = ( EditorGUIUtility . isProSkin ? 0.1f : 1f ) ;
EditorGUI . DrawRect ( backgroundRect , new Color ( backgroundTint , backgroundTint , backgroundTint , 0.2f ) ) ;
// Title
EditorGUI . LabelField ( labelRect , new GUIContent ( text ) , Styles . H2 ) ;
EditorGUILayout . Space ( backgroundRect . height * 0.5f ) ;
}
public static void DrawRenderGraphError ( )
{
#if UNITY_6000_0_OR_NEWER & & URP
if ( GraphicsSettings . GetRenderPipelineSettings < RenderGraphSettings > ( ) . enableRenderCompatibilityMode = = false )
{
EditorGUILayout . HelpBox ( "Render Graph is not compatible." +
"\n\nBackwards compatibility mode must be enabled." , MessageType . Error ) ;
GUILayout . Space ( - 32 ) ;
using ( new EditorGUILayout . HorizontalScope ( ) )
{
GUILayout . FlexibleSpace ( ) ;
if ( GUILayout . Button ( new GUIContent ( "Enable" , EditorGUIUtility . IconContent ( "d_tab_next" ) . image ) , GUILayout . Width ( 60 ) ) )
{
GraphicsSettings . GetRenderPipelineSettings < RenderGraphSettings > ( ) . enableRenderCompatibilityMode = true ;
EditorUtility . DisplayDialog ( $"{AssetInfo.ASSET_NAME} v{AssetInfo.INSTALLED_VERSION}" ,
"Please note that this fallback option will be removed in a future Unity version, this version of Stylized Water will no longer be completely functional then." +
"\n\n" +
"A license upgrade for Unity 6+ support is available through Stylized Water 3, please check the documentation for current information." , "OK" ) ;
}
GUILayout . Space ( 8 ) ;
}
GUILayout . Space ( 11 ) ;
}
#endif
}
public static void DrawFooter ( )
{
GUILayout . Space ( 5f ) ;
Rect rect = EditorGUILayout . GetControlRect ( ) ;
if ( rect . Contains ( Event . current . mousePosition ) )
{
EditorGUIUtility . AddCursorRect ( new Rect ( Event . current . mousePosition . x , Event . current . mousePosition . y , 27 , 27 ) , MouseCursor . Link ) ;
EditorGUI . DrawRect ( rect , Color . gray * ( EditorGUIUtility . isProSkin ? 0.66f : 0.20f ) ) ;
}
if ( GUI . Button ( rect , new GUIContent ( "- Staggart Creations -" , "Open website" ) , EditorStyles . centeredGreyMiniLabel ) )
{
Application . OpenURL ( "http://staggart.xyz" ) ;
}
}
public static void Unity6Message ( )
{
#if UNITY_6000_0_OR_NEWER
UI . DrawNotification ( true , "Unity 6 or newer is not supported. You can continue to use it until breaking changes occur." +
"\n\nStylized Water 3 is available as an upgrade for Unity 6." , "Asset store" , ( ) = >
{
AssetInfo . OpenAssetStore ( "https://assetstore.unity.com/packages/slug/287769" ) ;
} , MessageType . Warning ) ;
UI . DrawRenderGraphError ( ) ;
#endif
}
public static class Material
{
//Section toggles
public class Section
{
public bool Expanded
{
get { return SessionState . GetBool ( id , false ) ; }
set { SessionState . SetBool ( id , value ) ; }
}
public AnimBool anim ;
public readonly string id ;
public GUIContent title ;
public Section ( MaterialEditor owner , string id , GUIContent title )
{
this . id = AssetInfo . ASSET_ABRV + "_" + id + "_SECTION" ;
this . title = title ;
anim = new AnimBool ( true ) ;
anim . valueChanged . AddListener ( owner . Repaint ) ;
anim . speed = ANIM_SPEED ;
anim . target = Expanded ;
}
public void DrawHeader ( Action clickAction )
{
UI . Material . DrawHeader ( title , Expanded , clickAction ) ;
anim . target = Expanded ;
}
}
private const float HeaderHeight = 25f ;
//https://github.com/Unity-Technologies/Graphics/blob/d0473769091ff202422ad13b7b764c7b6a7ef0be/com.unity.render-pipelines.core/Editor/CoreEditorUtils.cs#L460
public static bool DrawHeader ( GUIContent content , bool isExpanded , Action clickAction = null )
{
#if URP
CoreEditorUtils . DrawSplitter ( ) ;
#endif
Rect backgroundRect = GUILayoutUtility . GetRect ( 1f , HeaderHeight ) ;
#if UNITY_2022_2_OR_NEWER
//Negate room made for parameter locking (material variants functionality)
backgroundRect . xMin - = 15f ;
#endif
var labelRect = backgroundRect ;
labelRect . xMin + = 8f ;
labelRect . xMax - = 20f + 16 + 5 ;
var foldoutRect = backgroundRect ;
foldoutRect . xMin - = 8f ;
foldoutRect . y + = 0f ;
foldoutRect . width = HeaderHeight ;
foldoutRect . height = HeaderHeight ;
// Background rect should be full-width
backgroundRect . xMin = 0f ;
backgroundRect . width + = 4f ;
// Background
float backgroundTint = ( EditorGUIUtility . isProSkin ? 0.1f : 1f ) ;
if ( backgroundRect . Contains ( Event . current . mousePosition ) ) backgroundTint * = EditorGUIUtility . isProSkin ? 1.5f : 0.9f ;
EditorGUI . DrawRect ( backgroundRect , new Color ( backgroundTint , backgroundTint , backgroundTint , 0.2f ) ) ;
// Title
EditorGUI . LabelField ( labelRect , content , EditorStyles . boldLabel ) ;
// Foldout
GUI . Label ( foldoutRect , new GUIContent ( isExpanded ? "− " : "≡" ) , EditorStyles . boldLabel ) ;
// Handle events
var e = Event . current ;
if ( e . type = = EventType . MouseDown )
{
if ( backgroundRect . Contains ( e . mousePosition ) )
{
if ( e . button = = 0 )
{
isExpanded = ! isExpanded ;
if ( clickAction ! = null ) clickAction . Invoke ( ) ;
}
e . Use ( ) ;
}
}
return isExpanded ;
}
public static void DrawIntSlider ( MaterialProperty prop , string label = null , string tooltip = null )
{
#if UNITY_2022_1_OR_NEWER
MaterialEditor . BeginProperty ( prop ) ;
#endif
EditorGUI . BeginChangeCheck ( ) ;
EditorGUI . showMixedValue = prop . hasMixedValue ;
float value = ( float ) EditorGUILayout . IntSlider ( new GUIContent ( label ? ? prop . displayName , null , tooltip ) , ( int ) prop . floatValue , ( int ) prop . rangeLimits . x , ( int ) prop . rangeLimits . y ) ;
if ( ExpandTooltips & & tooltip ! = string . Empty ) EditorGUILayout . HelpBox ( tooltip , MessageType . None ) ;
if ( EditorGUI . EndChangeCheck ( ) )
prop . floatValue = value ;
EditorGUI . showMixedValue = false ;
#if UNITY_2022_1_OR_NEWER
MaterialEditor . EndProperty ( ) ;
#endif
}
public static void DrawFloatField ( MaterialProperty prop , string label = null , string tooltip = null )
{
#if UNITY_2022_1_OR_NEWER
MaterialEditor . BeginProperty ( prop ) ;
#endif
EditorGUI . BeginChangeCheck ( ) ;
EditorGUI . showMixedValue = prop . hasMixedValue ;
float value = EditorGUILayout . FloatField ( new GUIContent ( label ? ? prop . displayName , null , tooltip ) , prop . floatValue , GUILayout . MaxWidth ( EditorGUIUtility . labelWidth + 50f ) ) ;
if ( ExpandTooltips & & tooltip ! = null ) EditorGUILayout . HelpBox ( tooltip , MessageType . None ) ;
if ( EditorGUI . EndChangeCheck ( ) )
prop . floatValue = value ;
EditorGUI . showMixedValue = false ;
#if UNITY_2022_1_OR_NEWER
MaterialEditor . EndProperty ( ) ;
#endif
}
public static void DrawFloatTicker ( MaterialProperty prop , string label = null , string tooltip = null , bool showReverse = false )
{
#if UNITY_2022_1_OR_NEWER
MaterialEditor . BeginProperty ( prop ) ;
#endif
EditorGUI . BeginChangeCheck ( ) ;
EditorGUI . showMixedValue = prop . hasMixedValue ;
float value = m_DrawFloatTicker ( prop . floatValue , label ? ? prop . displayName , tooltip , showReverse ) ;
if ( EditorGUI . EndChangeCheck ( ) )
prop . floatValue = value ;
EditorGUI . showMixedValue = false ;
#if UNITY_2022_1_OR_NEWER
MaterialEditor . EndProperty ( ) ;
#endif
}
private static float m_DrawFloatTicker ( float value , string label = null , string tooltip = null , bool showReverse = false )
{
EditorGUILayout . BeginHorizontal ( ) ;
EditorGUILayout . PrefixLabel ( new GUIContent ( label , null , tooltip ) ) ;
if ( GUILayout . Button ( new GUIContent ( "«" , "-0.1" ) , EditorStyles . miniButtonLeft , GUILayout . Width ( 20 ) ) )
{
value - = 0.1f ;
}
if ( GUILayout . Button ( new GUIContent ( "‹ " , "-0.01" ) , EditorStyles . miniButtonMid , GUILayout . Width ( 20 ) ) )
{
value - = 0.01f ;
}
value = EditorGUILayout . FloatField ( value , GUILayout . MaxWidth ( EditorGUIUtility . fieldWidth ) ) ;
if ( GUILayout . Button ( new GUIContent ( "› " , "+0.01" ) , EditorStyles . miniButtonMid , GUILayout . Width ( 20 ) ) )
{
value + = 0.01f ;
}
if ( GUILayout . Button ( new GUIContent ( "»" , "+0.1" ) , EditorStyles . miniButtonRight , GUILayout . Width ( 20 ) ) )
{
value + = 0.1f ;
}
if ( showReverse )
{
if ( GUILayout . Button ( "Reverse" , EditorStyles . miniButton , GUILayout . MaxWidth ( 70f ) ) )
{
value = - value ;
}
}
EditorGUILayout . EndHorizontal ( ) ;
if ( ExpandTooltips & & tooltip ! = null ) EditorGUILayout . HelpBox ( tooltip , MessageType . None ) ;
return value ;
}
public static void DrawMinMaxSlider ( MaterialProperty prop , float min , float max , string label = null , string tooltip = null )
{
#if UNITY_2022_1_OR_NEWER
MaterialEditor . BeginProperty ( prop ) ;
#endif
float minVal = prop . vectorValue . x ;
float maxVal = prop . vectorValue . y ;
EditorGUI . BeginChangeCheck ( ) ;
EditorGUI . showMixedValue = prop . hasMixedValue ;
using ( new EditorGUILayout . HorizontalScope ( ) )
{
EditorGUILayout . LabelField ( new GUIContent ( label , null , tooltip ) , GUILayout . MaxWidth ( EditorGUIUtility . labelWidth ) ) ;
minVal = EditorGUILayout . FloatField ( minVal , GUILayout . Width ( EditorGUIUtility . fieldWidth ) ) ;
EditorGUILayout . MinMaxSlider ( ref minVal , ref maxVal , min , max ) ;
maxVal = EditorGUILayout . FloatField ( maxVal , GUILayout . Width ( EditorGUIUtility . fieldWidth ) ) ;
}
if ( ExpandTooltips & & tooltip ! = null ) EditorGUILayout . HelpBox ( tooltip , MessageType . None ) ;
if ( EditorGUI . EndChangeCheck ( ) )
{
prop . vectorValue = new Vector4 ( minVal , maxVal ) ;
}
EditorGUI . showMixedValue = false ;
#if UNITY_2022_1_OR_NEWER
MaterialEditor . EndProperty ( ) ;
#endif
}
public static void DrawColorField ( MaterialProperty prop , bool hdr , string name = null , string tooltip = null )
{
#if UNITY_2022_1_OR_NEWER
MaterialEditor . BeginProperty ( prop ) ;
#endif
EditorGUI . BeginChangeCheck ( ) ;
EditorGUI . showMixedValue = prop . hasMixedValue ;
Color color ;
using ( new EditorGUILayout . HorizontalScope ( ) )
{
EditorGUILayout . PrefixLabel ( new GUIContent ( name ? ? prop . displayName , tooltip ) ) ;
color = EditorGUILayout . ColorField ( new GUIContent ( "" , null , tooltip ) , prop . colorValue , true , true , hdr , GUILayout . MaxWidth ( 60f ) ) ;
EditorGUILayout . LabelField ( $"Opacity: {Math.Round(prop.colorValue.a * 100f, 2)}%" , EditorStyles . miniLabel ) ;
}
if ( ExpandTooltips & & tooltip ! = null ) EditorGUILayout . HelpBox ( tooltip , MessageType . None ) ;
if ( EditorGUI . EndChangeCheck ( ) )
prop . colorValue = color ;
EditorGUI . showMixedValue = false ;
#if UNITY_2022_1_OR_NEWER
MaterialEditor . EndProperty ( ) ;
#endif
}
public static void DrawVector2 ( MaterialProperty prop , string label , string tooltip = null )
{
#if UNITY_2022_1_OR_NEWER
MaterialEditor . BeginProperty ( prop ) ;
#endif
EditorGUI . BeginChangeCheck ( ) ;
EditorGUI . showMixedValue = prop . hasMixedValue ;
Vector2 value ;
using ( new EditorGUILayout . HorizontalScope ( ) )
{
EditorGUILayout . PrefixLabel ( new GUIContent ( label , tooltip ) ) ;
value = EditorGUILayout . Vector2Field ( new GUIContent ( "" , null , tooltip ) , prop . vectorValue ) ;
}
if ( ExpandTooltips & & tooltip ! = null ) EditorGUILayout . HelpBox ( tooltip , MessageType . None ) ;
if ( EditorGUI . EndChangeCheck ( ) )
prop . vectorValue = value ;
EditorGUI . showMixedValue = false ;
#if UNITY_2022_1_OR_NEWER
MaterialEditor . EndProperty ( ) ;
#endif
}
public static void DrawVector2Ticker ( MaterialProperty prop , string label , string tooltip = null )
{
#if UNITY_2022_1_OR_NEWER
MaterialEditor . BeginProperty ( prop ) ;
#endif
EditorGUI . BeginChangeCheck ( ) ;
EditorGUI . showMixedValue = prop . hasMixedValue ;
Vector2 value = prop . vectorValue ;
using ( new EditorGUILayout . HorizontalScope ( ) )
{
EditorGUILayout . PrefixLabel ( new GUIContent ( label , tooltip ) ) ;
if ( GUILayout . Button ( new GUIContent ( "«" , "-0.1" ) , EditorStyles . miniButtonLeft , GUILayout . Width ( 20 ) ) )
{
value . x - = 0.1f ;
value . y - = 0.1f ;
}
if ( GUILayout . Button ( new GUIContent ( "‹ " , "-0.01" ) , EditorStyles . miniButtonMid , GUILayout . Width ( 20 ) ) )
{
value . x - = 0.01f ;
value . y - = 0.01f ;
}
value = EditorGUILayout . Vector2Field ( new GUIContent ( "" , null , tooltip ) , value , GUILayout . MaxWidth ( EditorGUIUtility . fieldWidth * 2f ) ) ;
if ( GUILayout . Button ( new GUIContent ( "› " , "+0.01" ) , EditorStyles . miniButtonMid , GUILayout . Width ( 20 ) ) )
{
value . x + = 0.01f ;
value . y + = 0.01f ;
}
if ( GUILayout . Button ( new GUIContent ( "»" , "+0.1" ) , EditorStyles . miniButtonRight , GUILayout . Width ( 20 ) ) )
{
value . x + = 0.1f ;
value . y + = 0.1f ;
}
}
if ( ExpandTooltips & & tooltip ! = null ) EditorGUILayout . HelpBox ( tooltip , MessageType . None ) ;
if ( EditorGUI . EndChangeCheck ( ) )
{
prop . vectorValue = value ;
}
EditorGUI . showMixedValue = false ;
#if UNITY_2022_1_OR_NEWER
MaterialEditor . EndProperty ( ) ;
#endif
}
}
public class Styles
{
public static GUIStyle _NotificationArea ;
public static GUIStyle NotificationArea
{
get
{
if ( _NotificationArea = = null )
{
_NotificationArea = new GUIStyle ( EditorStyles . label )
{
//margin = new RectOffset(15, 0, 15, 0),
//padding = new RectOffset(5, 5, 5, 5),
richText = true ,
wordWrap = true ,
clipping = TextClipping . Overflow ,
} ;
}
return _NotificationArea ;
}
}
private static Texture2D _smallGreenDot ;
public static Texture2D SmallGreenDot
{
get
{
if ( _smallGreenDot = = null )
{
_smallGreenDot = EditorGUIUtility . FindTexture ( "d_winbtn_mac_max" ) ;
}
return _smallGreenDot ;
}
}
private static Texture2D _smallOrangeDot ;
public static Texture2D SmallOrangeDot
{
get
{
if ( _smallOrangeDot = = null )
{
_smallOrangeDot = EditorGUIUtility . FindTexture ( "d_winbtn_mac_min" ) ;
}
return _smallOrangeDot ;
}
}
private static Texture2D _smallRedDot ;
public static Texture2D SmallRedDot
{
get
{
if ( _smallRedDot = = null )
{
_smallRedDot = EditorGUIUtility . FindTexture ( "d_winbtn_mac_close_h" ) ;
}
return _smallRedDot ;
}
}
private static GUIStyle _UpdateText ;
public static GUIStyle UpdateText
{
get
{
if ( _UpdateText = = null )
{
_UpdateText = new GUIStyle ( "Button" )
{
//fontSize = 10,
alignment = TextAnchor . MiddleLeft ,
stretchWidth = false ,
} ;
}
return _UpdateText ;
}
}
private static GUIStyle _Footer ;
public static GUIStyle Footer
{
get
{
if ( _Footer = = null )
{
_Footer = new GUIStyle ( EditorStyles . centeredGreyMiniLabel )
{
richText = true ,
alignment = TextAnchor . MiddleCenter ,
wordWrap = true ,
fontSize = 12
} ;
}
return _Footer ;
}
}
private static GUIStyle _Button ;
public static GUIStyle Button
{
get
{
if ( _Button = = null )
{
_Button = new GUIStyle ( GUI . skin . button )
{
alignment = TextAnchor . MiddleLeft ,
stretchWidth = true ,
richText = true ,
wordWrap = true ,
padding = new RectOffset ( )
{
left = 7 ,
right = 0 ,
top = 5 ,
bottom = 5
} ,
imagePosition = ImagePosition . ImageLeft
} ;
}
return _Button ;
}
}
private static GUIContent _AssetStoreBtnContent ;
public static GUIContent AssetStoreBtnContent
{
get
{
if ( _AssetStoreBtnContent = = null )
{
_AssetStoreBtnContent = new GUIContent ( " View on Asset Store " , EditorGUIUtility . IconContent ( "Asset Store" ) . image , "Open web page.\n\nURL may contain an affiliate ID, this commission helps to fund the purchase of new assets in order to investigate/develop integrations for them." ) ;
}
return _AssetStoreBtnContent ;
}
}
private static GUIStyle _H1 ;
public static GUIStyle H1
{
get
{
if ( _H1 = = null )
{
_H1 = new GUIStyle ( GUI . skin . label )
{
richText = true ,
alignment = TextAnchor . MiddleCenter ,
wordWrap = true ,
fontSize = 18 ,
fontStyle = FontStyle . Normal
} ;
}
return _H1 ;
}
}
private static GUIStyle _H2 ;
public static GUIStyle H2
{
get
{
if ( _H2 = = null )
{
_H2 = new GUIStyle ( GUI . skin . label )
{
richText = true ,
alignment = TextAnchor . MiddleLeft ,
wordWrap = true ,
fontSize = 14 ,
fontStyle = FontStyle . Bold
} ;
}
return _H2 ;
}
}
private static GUIStyle _Section ;
public static GUIStyle Section
{
get
{
if ( _Section = = null )
{
_Section = new GUIStyle ( EditorStyles . helpBox )
{
margin = new RectOffset ( 0 , 0 , - 5 , 5 ) ,
padding = new RectOffset ( 10 , 10 , 5 , 5 ) ,
clipping = TextClipping . Clip ,
} ;
}
return _Section ;
}
}
private static GUIStyle _WordWrapLabel ;
public static GUIStyle WordWrapLabel
{
get
{
if ( _WordWrapLabel = = null )
{
_WordWrapLabel = new GUIStyle ( EditorStyles . label ) ;
_WordWrapLabel . wordWrap = true ;
_WordWrapLabel . richText = true ;
}
return _WordWrapLabel ;
}
}
private static GUIStyle _BoldLabel ;
public static GUIStyle BoldLabel
{
get
{
if ( _BoldLabel = = null )
{
_BoldLabel = new GUIStyle ( EditorStyles . largeLabel ) ;
_BoldLabel . fontStyle = FontStyle . Bold ;
}
return _BoldLabel ;
}
}
private static GUIStyle _Tab ;
public static GUIStyle Tab
{
get
{
if ( _Tab = = null )
{
_Tab = new GUIStyle ( EditorStyles . miniButtonMid )
{
alignment = TextAnchor . MiddleCenter ,
stretchWidth = true ,
richText = true ,
wordWrap = true ,
fontSize = 16 ,
fixedHeight = 27.5f ,
fontStyle = FontStyle . Bold ,
padding = new RectOffset ( )
{
left = 14 ,
right = 14 ,
top = 3 ,
bottom = 3
}
} ;
}
return _Tab ;
}
}
private static GUIStyle s_CenterBoldLabel ;
public static GUIStyle CenterBoldLabel
{
get
{
if ( s_CenterBoldLabel = = null ) {
s_CenterBoldLabel = new GUIStyle ( EditorStyles . largeLabel ) ;
s_CenterBoldLabel . alignment = TextAnchor . UpperCenter ;
s_CenterBoldLabel . padding = new RectOffset ( ) ;
s_CenterBoldLabel . fontStyle = FontStyle . Bold ;
}
return s_CenterBoldLabel ;
}
}
private static GUIStyle s_AddOnTitle ;
private static GUIStyle AddOnTitle
{
get
{
if ( s_AddOnTitle = = null ) {
s_AddOnTitle = new GUIStyle ( CenterBoldLabel ) ;
s_AddOnTitle . fontSize = 14 ;
s_AddOnTitle . alignment = TextAnchor . MiddleLeft ;
}
return s_AddOnTitle ;
}
}
}
}
}