public bool Corresponds(AnimatorParameter other) { return ((other != null || !this.isAssigned) && this.target == other.target && this.name == other.name); }
/// <inheritdoc /> protected override void RenderMemberControl(Rect position) { var options = GetNameOptions(); PopupOption <AnimatorParameter> selectedOption = null; PopupOption <AnimatorParameter> noneOption = new PopupOption <AnimatorParameter>(null, "No Parameter"); AnimatorParameter value = GetValue(); if (value != null) { string label = value.name; AnimatorParameter valueInOptions = options.Select(option => option.value).FirstOrDefault(ap => ap.Corresponds(value)); if (valueInOptions != null) { selectedOption = new PopupOption <AnimatorParameter>(valueInOptions, label); } else { selectedOption = new PopupOption <AnimatorParameter>(value, label); } } // Make sure the callback uses the property of this drawer, not at its later value. var propertyNow = property; bool enabled = targets.Any(target => target != null); if (!enabled) { EditorGUI.BeginDisabledGroup(true); } PopupGUI <AnimatorParameter> .Render ( position, newValue => { Update(propertyNow); SetValue(newValue); propertyNow.serializedObject.ApplyModifiedProperties(); }, options, selectedOption, noneOption, nameProperty.hasMultipleDifferentValues ); if (!enabled) { EditorGUI.EndDisabledGroup(); } }
/// <summary> /// Assigns the property values from a specified animator parameter. /// </summary> protected void SetValue(AnimatorParameter value) { if (value != null) { nameProperty.stringValue = value.name; } else { nameProperty.stringValue = null; } }