For all callback related parameter like ShowIf, HideIf, EnableIf, DisableIf, RequiredIf, FieldShowIf, FieldHideIf, FieldEnableIf, FieldDisableIf,
and the show parameter in InfoBox, AboveText etc.
They use this XPath-like syntax, but the start point is from the current field.
For example, by using upwalk, damage will only be enabled if it's a member (field/propery) of BuildObject type (or its subtype)
[Serializable] public class BuildingAttackBrain { [EnableIf("..@as(BuildObject)")] [InfoBox("Only available in BuildObject type", show: "..@not-as(BuildObject)")] public int damage; }
you can also downwalk
[Serializable] public struct DownWalkProp { public string myContent; } // same as: [AboveText("<field.myContent/>")] [AboveText("$field::" + nameof(DownWalkProp.myContent))] public DownWalkProp v2;