66 lines
2.2 KiB
C#
66 lines
2.2 KiB
C#
using UnityEngine;
|
|
using UnityEngine.UIElements;
|
|
|
|
namespace RPGCoreCommon.Helpers.Editor.UIElements
|
|
{
|
|
[UxmlElement]
|
|
public partial class FakeObjectField : VisualElement
|
|
{
|
|
private Image _objectImage;
|
|
private Label _objectLabel;
|
|
|
|
public FakeObjectField() : this(null) { }
|
|
|
|
public FakeObjectField(string labelText = "")
|
|
{
|
|
var field = new VisualElement();
|
|
field.AddToClassList("unity-object-field");
|
|
field.AddToClassList("unity-base-field");
|
|
field.AddToClassList("unity-base-field__aligned");
|
|
field.style.marginLeft = field.style.marginRight = 3;
|
|
|
|
if (!string.IsNullOrEmpty(labelText))
|
|
{
|
|
var label = new Label(labelText);
|
|
label.AddToClassList("unity-label");
|
|
label.AddToClassList("unity-base-field__label");
|
|
field.Add(label);
|
|
}
|
|
|
|
var fieldInput = new VisualElement();
|
|
fieldInput.AddToClassList("unity-base-field__input");
|
|
fieldInput.AddToClassList("unity-object-field__input");
|
|
field.Add(fieldInput);
|
|
|
|
var fieldObject = new VisualElement();
|
|
fieldObject.AddToClassList("unity-object-field__object");
|
|
fieldInput.Add(fieldObject);
|
|
|
|
_objectImage = new Image();
|
|
_objectImage.AddToClassList("unity-object-field-display__icon");
|
|
fieldObject.Add(_objectImage);
|
|
|
|
_objectLabel = new Label();
|
|
_objectLabel.AddToClassList("unity-object-field-display__label");
|
|
fieldObject.Add(_objectLabel);
|
|
|
|
var fieldSelector = new VisualElement();
|
|
fieldSelector.AddToClassList("unity-object-field__selector");
|
|
fieldInput.Add(fieldSelector);
|
|
|
|
Add(field);
|
|
}
|
|
|
|
public void Set(string text, Texture image)
|
|
{
|
|
_objectLabel.text = text;
|
|
_objectImage.image = image;
|
|
}
|
|
|
|
public void Unset()
|
|
{
|
|
_objectLabel.text = null;
|
|
_objectImage.image = null;
|
|
}
|
|
}
|
|
} |