/// <inheritdoc /> protected override void DoBuildMembers() { #if DEV_MODE Debug.Log(ToString() + ".DoBuildMembers()"); #endif ParentDrawerUtility.BuildMembers(DrawerProvider, this, memberBuildList, ref members); if (inspector.Preferences.drawScriptReferenceFields || DebugMode) { var monoScript = MonoScript; if (monoScript != null) { DrawerArrayPool.InsertAt(ref members, 0, ScriptReferenceDrawer.Create(MonoScript, this, false), true); } } if (DebugMode && (members.Length == 0 || !(members[0] is DebugModeDisplaySettingsDrawer))) { #if DEV_MODE Debug.Log("InsertAt(0, DebugModeDisplaySettingsDrawer)"); #endif DrawerArrayPool.InsertAt(ref members, 0, SpaceDrawer.Create(7f, this), true); DrawerArrayPool.InsertAt(ref members, 0, DebugModeDisplaySettingsDrawer.Create(this, debugModeDisplaySettings), true); DrawerArrayPool.InsertAt(ref members, 0, SpaceDrawer.Create(7f, this), true); } #if DEV_MODE && PI_ASSERTATIONS Debug.Assert(!members.ContainsNullMembers()); #endif }
/// <summary> Creates a new instance of the drawer or returns a reusable instance from the pool. </summary> /// <param name="height"> The height in pixels to occupy in the inspector. </param> /// <param name="parent"> The parent drawer of the created drawer. Can be null. </param> /// <returns> The drawer instance, ready to be used. </returns> public static SpaceDrawer Create(float height, [CanBeNull] IParentDrawer parent) { SpaceDrawer result; if (!DrawerPool.TryGet(out result)) { result = new SpaceDrawer(); } result.Setup(height, parent); result.LateSetup(); return(result); }