UniversalViewer/Assets/Scripts/ModelViewerBase/UI/UIToolbar.cs

46 lines
1.1 KiB
C#
Raw Permalink Normal View History

2024-04-21 22:38:26 +08:00
using UnityEngine;
using UnityEngine.EventSystems;
public class UIToolbar : MonoBehaviour, IDropHandler
{
public ElementType ElementMask;
public LayoutMode Layout;
[System.Flags]
public enum ElementType
{
None = 0,
Toolbar = 1,
Dynamic = 2
}
public enum LayoutMode
{
Horizontal,
Vertical
}
public void OnDrop(PointerEventData eventData)
{
if (eventData.pointerDrag.TryGetComponent<UIElementDragger>(out var draggable))
{
if (!ElementMask.HasFlag(draggable.ElementType) || draggable.LockProxyState || draggable.LastDragAction != UIElementDragger.DragAction.Position) return;
AttachToThis(draggable);
}
}
public void AttachToThis(UIElementDragger draggable)
{
var proxy = UIDraggableProxy.Create(transform).Link(draggable);
draggable.gameObject.SetActive(false);
}
private void OnDisable()
{
foreach(var proxy in GetComponentsInChildren<UIDraggableProxy>())
{
proxy.SetDraggableVisible(false);
}
}
}