You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

79 lines
2.5 KiB

using UnityEngine;
using UnityEngine.UIElements;
namespace UnityEditor.VFX.UI
{
class Vector3PropertyRM : VectorPropertyRM<VFXVector3Field, Vector3>
{
private VFXColorField m_ColorField;
public Vector3PropertyRM(IPropertyRMProvider controller, float labelWidth) : base(controller, labelWidth)
{
var isColor = m_Provider.attributes.Is(VFXPropertyAttributes.Type.Color);
if (isColor)
{
var mainContainer = new VisualElement { name = "mainContainer" };
mainContainer.AddToClassList("maincontainer");
m_ColorField = new VFXColorField((Label)null);
m_ColorField.OnValueChanged = OnColorValueChanged;
m_ColorField.showAlpha = false;
var vector3Field = this.Q<VFXVector3Field>();
mainContainer.Add(m_ColorField);
mainContainer.Add(vector3Field);
Add(mainContainer);
}
}
public override float GetPreferredControlWidth() => 170;
public override INotifyValueChanged<Vector3> CreateField()
{
var label = new Label(ObjectNames.NicifyVariableName(provider.name));
label.AddToClassList("label");
Add(label);
return new VFXVector3Field();
}
public override void UpdateGUI(bool force)
{
if (m_ColorField != null)
m_ColorField.value = new Color(m_Value.x, m_Value.y, m_Value.z);
base.UpdateGUI(force);
}
void OnColorValueChanged()
{
m_Value = new Vector3(m_ColorField.value.r, m_ColorField.value.g, m_ColorField.value.b);
NotifyValueChanged();
}
protected override void UpdateEnabled()
{
fieldControl.SetEnabled(propertyEnabled);
if (m_ColorField != null)
m_ColorField.SetEnabled(propertyEnabled);
}
protected override void UpdateIndeterminate()
{
fieldControl.indeterminate = indeterminate;
if (m_ColorField != null)
m_ColorField.indeterminate = indeterminate;
}
public override bool IsCompatible(IPropertyRMProvider providerParam)
{
if (!base.IsCompatible(providerParam)) return false;
bool isColor = provider.attributes.Is(VFXPropertyAttributes.Type.Color);
return isColor == (m_ColorField != null);
}
public override bool showsEverything => true;
}
}