using System; using UnityEditor.Experimental.GraphView; using UnityEngine; using UnityEngine.UIElements; using UnityEditor.VFX; using System.Collections.Generic; using System.Linq; using PositionType = UnityEngine.UIElements.Position; namespace UnityEditor.VFX.UI { class VFXBlackboard : Blackboard, IControlledElement, IVFXMovable { VFXViewController m_Controller; Controller IControlledElement.controller { get { return m_Controller; } } public VFXViewController controller { get { return m_Controller; } set { if (m_Controller != value) { if (m_Controller != null) { m_Controller.UnregisterHandler(this); } Clear(); m_Controller = value; if (m_Controller != null) { m_Controller.RegisterHandler(this); } m_AddButton.SetEnabled(m_Controller != null); } } } new void Clear() { m_DefaultCategory.Clear(); if (m_OutputCategory != null) m_OutputCategory.Clear(); foreach (var cat in m_Categories) { cat.Value.RemoveFromHierarchy(); } m_Categories.Clear(); } VFXView m_View; Button m_AddButton; VisualElement m_LockedElement; public VFXBlackboard(VFXView view) { m_View = view; editTextRequested = OnEditName; addItemRequested = OnAddItem; this.scrollable = true; SetPosition(BoardPreferenceHelper.LoadPosition(BoardPreferenceHelper.Board.blackboard, defaultRect)); m_DefaultCategory = new VFXBlackboardCategory() { title = "parameters" }; Add(m_DefaultCategory); m_DefaultCategory.headerVisible = false; styleSheets.Add(VFXView.LoadStyleSheet("VFXBlackboard")); RegisterCallback(OnMouseClick, TrickleDown.TrickleDown); RegisterCallback(OnDragUpdatedEvent); RegisterCallback(OnDragPerformEvent); RegisterCallback(OnDragLeaveEvent); RegisterCallback(OnKeyDown); focusable = true; m_AddButton = this.Q