riversong code showcase

This commit is contained in:
Daniele Marotta
2026-05-21 15:52:18 +02:00
commit 4c9eea1c02
462 changed files with 23406 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
using UnityEngine;
using UnityEngine.UIElements;
namespace DanieleMarotta.RiversongCodeShowcase
{
public class DraggableManipulator : PointerManipulator
{
private const string DraggedUssClassName = "dragged";
private Vector2 _startMousePosition;
private Vector2 _startElementPosition;
private VisualElement _draggedElement;
public DraggableManipulator(VisualElement draggedElement)
{
_draggedElement = draggedElement;
}
protected override void RegisterCallbacksOnTarget()
{
target.RegisterCallback<PointerDownEvent>(OnPointerDown);
target.RegisterCallback<PointerMoveEvent>(OnPointerMove);
target.RegisterCallback<PointerUpEvent>(OnPointerUp);
}
protected override void UnregisterCallbacksFromTarget()
{
target.UnregisterCallback<PointerDownEvent>(OnPointerDown);
target.UnregisterCallback<PointerMoveEvent>(OnPointerMove);
target.UnregisterCallback<PointerUpEvent>(OnPointerUp);
}
private void OnPointerDown(PointerDownEvent evt)
{
if (evt.button != 0) return;
target.CapturePointer(evt.pointerId);
evt.StopPropagation();
_startMousePosition = evt.position;
_startElementPosition = new Vector2(_draggedElement.resolvedStyle.left, _draggedElement.resolvedStyle.top);
_draggedElement.AddToClassList(DraggedUssClassName);
}
private void OnPointerMove(PointerMoveEvent evt)
{
if (!target.HasPointerCapture(evt.pointerId)) return;
var delta = (Vector2)evt.position - _startMousePosition;
_draggedElement.style.left = _startElementPosition.x + delta.x;
_draggedElement.style.top = _startElementPosition.y + delta.y;
}
private void OnPointerUp(PointerUpEvent evt)
{
if (!target.HasPointerCapture(evt.pointerId)) return;
target.ReleasePointer(evt.pointerId);
_draggedElement.RemoveFromClassList(DraggedUssClassName);
}
}
}