|
|
- // Amplify Shader Editor - Visual Shader Editing Tool
- // Copyright (c) Amplify Creations, Lda <info@amplify.pt>
-
- using UnityEditor;
- using UnityEngine;
-
- namespace AmplifyShaderEditor
- {
- public class ConfirmationWindow
- {
- public delegate ShaderLoadResult OnConfirmationSelected( bool value, Shader shader, Material material );
- public event OnConfirmationSelected OnConfirmationSelectedEvt;
-
- private const string m_yesStr = "Yes";
- private const string m_noStr = "No";
- private bool m_isActive = false;
- private string m_currentMessage;
-
- private GUIStyle m_areaStyle;
- private GUIContent m_content;
- private GUIStyle m_buttonStyle;
- private GUIStyle m_labelStyle;
-
-
- private Shader m_shader;
- private Material m_material;
- private Rect m_area;
- private bool m_autoDeactivate = true;
-
-
- public ConfirmationWindow( float x, float y, float width, float height )
- {
- m_content = new GUIContent( GUIContent.none );
- m_area = new Rect( x, y, width, height );
- }
-
- public void Destroy()
- {
- m_shader = null;
- OnConfirmationSelectedEvt = null;
- }
-
- public void ActivateConfirmation( Shader shader, Material material, string message, OnConfirmationSelected evt, bool autoDeactivate = true )
- {
- OnConfirmationSelectedEvt = evt;
- m_currentMessage = message;
- m_shader = shader;
- m_material = material;
- m_autoDeactivate = autoDeactivate;
- m_isActive = true;
- }
-
- public void OnGUI()
- {
- if ( m_areaStyle == null )
- {
- m_areaStyle = new GUIStyle( UIUtils.TextArea );
- m_areaStyle.stretchHeight = true;
- m_areaStyle.stretchWidth = true;
- m_areaStyle.fontSize = ( int ) Constants.DefaultTitleFontSize;
- }
-
- if ( m_buttonStyle == null )
- {
- m_buttonStyle = UIUtils.Button;
- }
-
- if ( m_labelStyle == null )
- {
- m_labelStyle = new GUIStyle( UIUtils.Label );
- m_labelStyle.alignment = TextAnchor.MiddleCenter;
- m_labelStyle.wordWrap = true;
- }
-
- m_area.x = ( int ) ( 0.5f * UIUtils.CurrentWindow.CameraInfo.width );
- m_area.y = ( int ) ( 0.5f * UIUtils.CurrentWindow.CameraInfo.height );
-
- GUILayout.BeginArea( m_area, m_content, m_areaStyle );
- {
- EditorGUILayout.BeginVertical();
- {
- EditorGUILayout.Separator();
- EditorGUILayout.LabelField( m_currentMessage, m_labelStyle );
-
- EditorGUILayout.Separator();
- EditorGUILayout.Separator();
- EditorGUILayout.BeginHorizontal();
- {
- if ( GUILayout.Button( m_yesStr, m_buttonStyle ) )
- {
- if ( OnConfirmationSelectedEvt != null )
- OnConfirmationSelectedEvt( true, m_shader, m_material );
-
- if ( m_autoDeactivate )
- Deactivate();
- }
-
- if ( GUILayout.Button( m_noStr, m_buttonStyle ) )
- {
- if ( OnConfirmationSelectedEvt != null )
- OnConfirmationSelectedEvt( false, m_shader, m_material );
- if ( m_autoDeactivate )
- Deactivate();
- }
- }
- EditorGUILayout.EndHorizontal();
- }
- EditorGUILayout.EndVertical();
- }
- GUILayout.EndArea();
- }
-
- public void Deactivate()
- {
- m_isActive = false;
- OnConfirmationSelectedEvt = null;
- }
- public bool IsActive { get { return m_isActive; } }
- }
- }
|