LayoutCloseHere / LayoutTerminateHereWarningYou don't need this for most of the time. The new layout system can handle this quite well.
ImportantEnableSaintsEditorbefore using
Include the current field into the coresponding group, then:
LayoutCloseHerewill close the most recent group, like aLayoutEnd(".")LayoutTerminateHerewill close all groups, like aLayoutEnd
LayoutCloseHere is useful when you're done with your subgroup, but you might add some field later, but at the point you don't have a field to put a LayoutEnd
[LayoutStart("Tab", ELayout.TitleBox)] public string tab; [LayoutStart("./1", ELayout.TitleBox)] public string tab1Sub1; public string tab1Sub2; [LayoutCloseHere] // same as: [Layout(".", keepGrouping: false), LayoutEnd(".")] public string tab1Sub3; // some feature day you might add some field below, `LayoutCloseHere` ensures you don't accidently include them into the subgroup // ... you field added in the feature [Button] public void AFunction() {} [Button] public void BFunction() {}

LayoutTerminateHere is useful when you're done with your group, and your script is also done here (so nowhere to put EndLayout). Oneday you come back and add some new fields, this attribute can avoid them to be included in the group accidently.
[LayoutStart("Tab", ELayout.TitleBox)] public string tab; [LayoutStart("./1", ELayout.TitleBox)] public string tab1Sub1; public string tab1Sub2; [LayoutTerminateHere] // same as: [Layout("."), LayoutEnd] public string tab1Sub3; [Button] public void AFunction() {} [Button] public void BFunction() {}
