/// <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="monoScript"> The MonoScript which the drawer points to. </param> /// <param name="parent"> The parent drawer of the created drawer. Can be null. </param> /// <param name="readOnly"> True if control should be read only. </param> /// <returns> The instance, ready to be used. </returns> public static ScriptReferenceDrawer Create([CanBeNull] MonoScript monoScript, [CanBeNull] IParentDrawer parent, bool readOnly) { ScriptReferenceDrawer result; if (!DrawerPool.TryGet(out result)) { result = new ScriptReferenceDrawer(); } result.Setup(monoScript, typeof(MonoScript), null, parent, null, readOnly); result.LateSetup(); return(result); }
/// <inheritdoc /> protected override void DoBuildMembers() { #if DEV_MODE Debug.Log(ToString() + ".DoBuildMembers()"); #endif ParentDrawerUtility.BuildMembers(DrawerProvider, this, memberBuildList, ref members); #if UNITY_EDITOR if (Platform.EditorMode && (inspector.Preferences.drawScriptReferenceFields || DebugMode)) { var monoScript = MonoScript; if (monoScript != null) { DrawerArrayPool.InsertAt(ref members, 0, ScriptReferenceDrawer.Create(MonoScript, this, false), true); } } #endif }
/// <inheritdoc/> protected override void DoBuildMembers() { if (parent == null) { return; } #if UNITY_EDITOR DrawerArrayPool.Resize(ref members, 2); var scriptReference = ScriptReferenceDrawer.Create(monoScript, this, monoScript != null); scriptReference.OnValueChanged += SetMonoScript; members[0] = scriptReference; int index = 1; #else int index = 0; #endif DrawerArrayPool.Resize(ref members, index + 1); members[index] = BoxDrawer.Create(this, GUIContentPool.Create(GetWarningMessage()), MessageType.Warning, ReadOnly); }