Files
riversong-code-showcase/Source/Riversong/Game/UI/Helpers/VisualElementExtensions.cs
2026-05-21 16:04:49 +02:00

40 lines
1.3 KiB
C#

using System;
using UnityEngine;
using UnityEngine.UIElements;
namespace DanieleMarotta.RiversongCodeShowcase
{
public static class VisualElementExtensions
{
public static VisualElement GetFirstAncestorOrSelf(this VisualElement element, Func<VisualElement, bool> predicate)
{
while (element != null)
{
if (predicate(element)) return element;
element = element.parent;
}
return null;
}
public static void SetAbsoluteScreenPosition(this VisualElement element, Vector2 screenPoint)
{
element.style.position = Position.Absolute;
element.style.left = screenPoint.x;
element.style.top = Screen.height - screenPoint.y;
}
public static void SetScale(this VisualElement element, float value)
{
element.style.scale = new StyleScale(new Scale(Vector2.one * value));
}
public static void SetPickingModeRecursive(this VisualElement element, PickingMode pickingMode)
{
element.pickingMode = pickingMode;
var hierarchy = element.hierarchy;
for (var i = 0; i < hierarchy.childCount; i++) hierarchy.ElementAt(i).SetPickingModeRecursive(pickingMode);
}
}
}