36 lines
873 B
C#
36 lines
873 B
C#
|
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using BITKit.UX;
|
||
|
using UnityEngine;
|
||
|
using UnityEngine.UIElements;
|
||
|
|
||
|
public class UXBuilder : MonoBehaviour
|
||
|
{
|
||
|
[SerializeField, SerializeReference, SubclassSelector]
|
||
|
private IVisualElementProvider visualElementProvider;
|
||
|
|
||
|
[SerializeField] private VisualTreeAsset visualTreeAsset;
|
||
|
|
||
|
private readonly List<VisualElement> instances = new();
|
||
|
|
||
|
public T Build<T>() where T : VisualElement
|
||
|
{
|
||
|
var clone = visualTreeAsset.CloneTree()[0];
|
||
|
visualElementProvider.GetVisualElement().Add(clone);
|
||
|
instances.Add(clone);
|
||
|
return clone as T;
|
||
|
}
|
||
|
|
||
|
public UXContainer BuildAsContainer() => new(Build<VisualElement>());
|
||
|
|
||
|
public void Clear()
|
||
|
{
|
||
|
foreach (var x in instances)
|
||
|
{
|
||
|
visualElementProvider.GetVisualElement().Remove(x);
|
||
|
}
|
||
|
|
||
|
instances.Clear();
|
||
|
}
|
||
|
}
|