123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- // Amplify Shader Editor - Visual Shader Editing Tool
- // Copyright (c) Amplify Creations, Lda <info@amplify.pt>
- using UnityEngine;
- using System.Collections.Generic;
- using System;
- namespace AmplifyShaderEditor
- {
- public sealed class ContextPalette : PaletteParent
- {
- private Vector3 m_position;
- private Vector2 m_startDropPosition;
- public ContextPalette( AmplifyShaderEditorWindow parentWindow ) : base( parentWindow, 0, 0, 250, 250, string.Empty, MenuAnchor.NONE, MenuAutoSize.NONE )
- {
- m_isActive = false;
- OnPaletteNodeCreateEvt += OnOptionSelected;
- m_searchFilterControl += "CONTEXTPALETTE";
- }
- public override void OnEnterPressed(int index = 0)
- {
- if ( m_searchFilter.Length > 0 && m_currentItems.Count > 0 )
- {
- FireNodeCreateEvent( m_currentItems[ index ].NodeType, m_currentItems[ index ].Name, m_currentItems[ index ].Function );
- }
- else
- {
- Disable();
- }
- }
- public override void OnEscapePressed()
- {
- Disable();
- if ( m_parentWindow.WireReferenceUtils.ValidReferences() )
- {
- m_parentWindow.WireReferenceUtils.InvalidateReferences();
- }
- }
- public override void Draw( Rect parentPosition, Vector2 mousePosition, int mouseButtonId, bool hasKeyboadFocus )
- {
- //if ( !_isActive )
- // return;
- if ( Event.current.type == EventType.MouseDown && !IsInside( Event.current.mousePosition ) )
- {
- Disable();
- return;
- }
- base.Draw( parentPosition, mousePosition, mouseButtonId, hasKeyboadFocus );
- }
- public void Show( Vector2 position, Rect cameraInfo )
- {
- m_startDropPosition = position;
- m_maximizedArea.x = ( position.x + m_maximizedArea.width ) > cameraInfo.width ? ( cameraInfo.width - 1.1f * m_maximizedArea.width ) : position.x;
- m_maximizedArea.y = ( position.y + m_maximizedArea.height ) > cameraInfo.height ? ( cameraInfo.height - 1.1f * m_maximizedArea.height ) : position.y;
- m_position = new Vector3( m_maximizedArea.x, m_maximizedArea.y, 0f );
- m_isActive = true;
- m_focusOnSearch = true;
- }
- // This override is removing focus from our window ... need to figure out a workaround before re-using it
- //public override bool CheckButton( GUIContent content, GUIStyle style, int buttonId )
- //{
- // if ( buttonId != m_validButtonId )
- // return false;
- // return GUILayout.Button( content, style );
- //}
- void OnOptionSelected( System.Type type, string name, AmplifyShaderFunction function )
- {
- Disable();
- }
- public void Disable()
- {
- m_isActive = false;
- }
- public Vector2 StartDropPosition
- {
- get { return m_startDropPosition; }
- }
- public Vector3 CurrentPosition
- {
- get { return m_position; }
- }
- public Vector2 CurrentPosition2D
- {
- get { return new Vector2( m_position.x, m_position.y ); }
- }
- }
- }
|