示例#1
0
 public override void OnInspectorGUI()
 {
     base.OnInspectorGUI();
     serializedObject.Update();
     reorderable.DoLayoutList();
     serializedObject.ApplyModifiedProperties();
 }
        void drawContexts()
        {
            EditorGUILayout.Space();

            EditorGUILayout.BeginHorizontal();
            {
                GUILayout.Space(5);
                EditorGUILayout.BeginVertical();
                {
                    _contextList.DoLayoutList();
                }
                EditorGUILayout.EndVertical();
                GUILayout.Space(4);
            }
            EditorGUILayout.EndHorizontal();

            if (_contexts.Count <= 1)
            {
                EditorGUILayout.HelpBox("You can optimize the memory footprint of entities by creating multiple contexts. " +
                                        "The code generator generates subclasses of ContextAttribute for each context name. " +
                                        "You have to assign components to one or more contexts with the generated attribute, e.g. [Game] or [Input], " +
                                        "otherwise they will be ignored by the code generator.", MessageType.Info);
            }

            _codeGeneratorConfig.contexts = _contexts.ToArray();
        }
        public override void OnInspectorGUI()
        {
            serializedObject.Update();

            EditorGUILayout.BeginVertical();

            DrawPropertiesExcluding(serializedObject, new string[]
            {
                "m_Script",
                "ID",
                _equipTypes.name
            });
            EditorGUILayout.EndVertical();

            EditorGUILayout.Space();
            if (GUILayout.Button("Edit types"))
            {
                InventoryMainEditor.window.Show();
                InventoryMainEditor.SelectTab(typeof(EquipmentTypeEditor));
            }

            EditorGUILayout.Space();
            EditorGUILayout.LabelField("Define which types are allowed in this wrapper.\n\nFor example when selecting helmet and necklace both items with equipment type helmet and neckalce can be equipped to this slot.", EditorStyles.labelStyle);
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            _list.DoLayoutList();

            serializedObject.ApplyModifiedProperties();
        }
示例#4
0
        public override void OnInspectorGUI()
        {
            EditorGUILayout.BeginVertical(GUI.skin.box);

            if (mGroupNameOverride)
            {
                EditorGUILayout.PropertyField(mGroupName);
            }
            else
            {
                EditorGUILayout.LabelField("group", (target as MonoBehaviour).name);
            }

            mGroupNameOverride = EditorGUILayout.Toggle("override", mGroupNameOverride);
            if (!mGroupNameOverride)
            {
                mGroupName.stringValue = "";
            }

            EditorGUILayout.EndVertical();

            EditorGUILayout.PropertyField(mPersistent);

            EditorGUILayout.PropertyField(mPoolHolder);

            M8.EditorExt.Utility.DrawSeparator();

            mFactory.DoLayoutList();

            serializedObject.ApplyModifiedProperties();
        }
示例#5
0
 /// <summary> Panel to display Sequences to play </summary>
 /// <param name="inlineHelp">Should help be displayed?</param>
 void SequencesPanel(bool inlineHelp)
 {
     ++EditorGUI.indentLevel;
     m_sequencesReorderable.DoLayoutList();
     m_editorUtils.InlineHelp("mSequences", inlineHelp);
     --EditorGUI.indentLevel;
 }
示例#6
0
        public override void OnInspectorGUI()
        {
            if (mChildList == null)
            {
                SetupChildList();
            }

            // Ordinary properties
            base.OnInspectorGUI();

            // Blends
            m_BlendsEditor.DrawEditorCombo(
                "Create New Blender Asset",
                Target.gameObject.name + " Blends", "asset", string.Empty,
                "Custom Blends", false);

            // vcam children
            EditorGUILayout.Separator();
            EditorGUI.BeginChangeCheck();
            mChildList.DoLayoutList();
            if (EditorGUI.EndChangeCheck())
            {
                serializedObject.ApplyModifiedProperties();
            }
        }
示例#7
0
        void ShowScatterplotMatrixMenu(ref AbstractVisualisation.PropertyType?dirtyFlags)
        {
            EditorGUI.BeginChangeCheck();

            scatterplotMatrixListX.DoLayoutList();
            if (EditorGUI.EndChangeCheck())
            {
                dirtyFlags = _globalDirtyFlags;
            }
            EditorGUI.BeginChangeCheck();

            scatterplotMatrixListY.DoLayoutList();
            if (EditorGUI.EndChangeCheck())
            {
                dirtyFlags = _globalDirtyFlags;
            }

            EditorGUI.BeginChangeCheck();

            scatterplotMatrixListZ.DoLayoutList();

            if (EditorGUI.EndChangeCheck())
            {
                dirtyFlags = _globalDirtyFlags;
            }
        }
示例#8
0
        /// <summary> Panel to show "Requirements" for Sequence to play </summary>
        /// <param name="inlineHelp">Should help be displayed?</param>
        public void RequirementsPanel(bool inlineHelp)
        {
            ++EditorGUI.indentLevel;
            EditorGUI.BeginChangeCheck();
            m_editorUtils.PropertyField("mRequirements", m_requirements, inlineHelp);
            ValuesOrEvents reqVal = (ValuesOrEvents)System.Enum.GetValues(typeof(ValuesOrEvents)).GetValue(m_requirements.enumValueIndex);

            slidersGroup.target = (reqVal & ValuesOrEvents.Values) != 0;
            eventsGroup.target  = (reqVal & ValuesOrEvents.Events) != 0;
            if (EditorGUILayout.BeginFadeGroup(eventsGroup.faded))
            {
                m_editorUtils.InlineHelp("mEventsMix", inlineHelp);
                m_eventsReorderable.DoLayoutList();
                m_editorUtils.InlineHelp("mEvents", inlineHelp);
            }
            EditorGUILayout.EndFadeGroup();
            if (EditorGUI.EndChangeCheck() && MainWindowEditor.Instance != null)
            {
                MainWindowEditor.Instance.Repaint();
            }
            if (EditorGUILayout.BeginFadeGroup(slidersGroup.faded))
            {
                m_editorUtils.InlineHelp("mValuesMix", inlineHelp);
                m_valuesReorderable.DoLayoutList();
                m_editorUtils.InlineHelp("mValues", inlineHelp);
            }
            EditorGUILayout.EndFadeGroup();
            --EditorGUI.indentLevel;
        }
示例#9
0
        public override void OnInspectorGUI()
        {
            this.serializedObject.Update();

            DrawDefaultInspectorExcept(this.serializedObject, PROP_HANDLEBITSYMSG, PROP_ONBITSYMSG, PROP_MSGHANDLERS);

            //draw global msg handler
            var propHandleGlobal = this.serializedObject.FindProperty(PROP_HANDLEBITSYMSG);

            EditorGUILayout.PropertyField(propHandleGlobal);
            if (propHandleGlobal.boolValue)
            {
                EditorGUILayout.PropertyField(this.serializedObject.FindProperty(PROP_ONBITSYMSG));
            }

            //draw messages
            EditorGUILayout.Space();
            EditorGUILayout.LabelField("Message Handlers", EditorStyles.boldLabel);
            _messageHandlersList.DoLayoutList();
            if (_messageHandlersList.index >= 0 && _messageHandlersList.index < _messageHandlersList.serializedProperty.arraySize)
            {
                EditorGUI.indentLevel++;
                var entry       = _messageHandlersList.serializedProperty.GetArrayElementAtIndex(_messageHandlersList.index);
                var propMsg     = entry.FindPropertyRelative(PROP_MSG);
                var propHandler = entry.FindPropertyRelative(PROP_MSGHANDLER);
                EditorGUILayout.PropertyField(propHandler, new GUIContent(propMsg.stringValue));
                EditorGUI.indentLevel--;
            }

            this.serializedObject.ApplyModifiedProperties();
        }
        public override void OnInspectorGUI()
        {
            if (mInstructionList == null)
            {
                SetupInstructionList();
            }
            if (mChildList == null)
            {
                SetupChildList();
            }

            if (Target.m_AnimatedTarget == null)
            {
                EditorGUILayout.HelpBox("An Animated Target is required", MessageType.Error);
            }

            // Ordinary properties
            base.OnInspectorGUI();

            // Layer index
            EditorGUI.BeginChangeCheck();
            UpdateTargetStates();
            UpdateCameraCandidates();
            SerializedProperty layerProp = serializedObject.FindProperty(() => Target.m_LayerIndex);
            int currentLayer             = layerProp.intValue;
            int layerSelection           = EditorGUILayout.Popup("Layer", currentLayer, mLayerNames);

            if (currentLayer != layerSelection)
            {
                layerProp.intValue = layerSelection;
            }
            EditorGUILayout.PropertyField(serializedObject.FindProperty(() => Target.m_DefaultBlend));
            if (EditorGUI.EndChangeCheck())
            {
                serializedObject.ApplyModifiedProperties();
                Target.ValidateInstructions();
            }

            // Blends
            EditorGUILayout.Separator();
            m_BlendsEditor.DrawEditorCombo(
                "Create New Blender Asset",
                Target.gameObject.name + " Blends", "asset", string.Empty,
                "Custom Blends", false);

            // Instructions
            EditorGUI.BeginChangeCheck();
            EditorGUILayout.Separator();
            mInstructionList.DoLayoutList();

            // vcam children
            EditorGUILayout.Separator();
            mChildList.DoLayoutList();
            if (EditorGUI.EndChangeCheck())
            {
                serializedObject.ApplyModifiedProperties();
                Target.ValidateInstructions();
            }
        }
示例#11
0
        /// <summary>
        /// 绘制state 显示列表
        /// </summary>
        private void DrawList(Rect _rect)
        {
            EditorGUILayout.Space();

            scroll = GUILayout.BeginScrollView(scroll, GUILayout.MaxHeight(_rect.height));
            reorderableList.DoLayoutList();
            GUILayout.EndScrollView();
        }
        } /* OnEnable() */

        public override void OnInspectorGUI()
        {

            serializedObject.Update();
            list.DoLayoutList();
            serializedObject.ApplyModifiedProperties();

        } /* OnInspectorGUI() */
        public override void OnInspectorGUI()
        {
            BeginInspector();
            if (mChildList == null)
            {
                SetupChildList();
            }

            m_ColliderState = GetColliderState();
            switch (m_ColliderState)
            {
            case ColliderState.ColliderOnParent:
            case ColliderState.ColliderOnAllChildren:
                break;

            case ColliderState.NoCollider:
                EditorGUILayout.HelpBox(
                    "ClearShot requires a Collider extension to rank the shots.  Either add one to the ClearShot itself, or to each of the child cameras.",
                    MessageType.Warning);
                break;

            case ColliderState.ColliderOnSomeChildren:
                EditorGUILayout.HelpBox(
                    "Some child cameras do not have a Collider extension.  ClearShot requires a Collider on all the child cameras, or alternatively on the ClearShot iself.",
                    MessageType.Warning);
                break;

            case ColliderState.ColliderOnChildrenAndParent:
                EditorGUILayout.HelpBox(
                    "There is a Collider extension on the ClearShot camera, and also on some of its child cameras.  You can't have both.",
                    MessageType.Error);
                break;
            }

            DrawHeaderInInspector();
            DrawPropertyInInspector(FindProperty(x => x.m_Priority));
            DrawTargetsInInspector(FindProperty(x => x.m_Follow), FindProperty(x => x.m_LookAt));
            DrawRemainingPropertiesInInspector();

            // Blends
            m_BlendsEditor.DrawEditorCombo(
                "Create New Blender Asset",
                Target.gameObject.name + " Blends", "asset", string.Empty,
                "Custom Blends", false);

            // vcam children
            EditorGUILayout.Separator();
            EditorGUI.BeginChangeCheck();
            mChildList.DoLayoutList();
            if (EditorGUI.EndChangeCheck())
            {
                serializedObject.ApplyModifiedProperties();
            }

            // Extensions
            DrawExtensionsWidgetInInspector();
        }
示例#14
0
 void ShowParallelCoordinatesMenu(ref AbstractVisualisation.PropertyType?dirtyFlags)
 {
     EditorGUI.BeginChangeCheck();
     dimensionsListParallelCoordinates.DoLayoutList();
     if (EditorGUI.EndChangeCheck())
     {
         dirtyFlags = _globalDirtyFlags;
     }
 }
示例#15
0
 /// <summary> Panel to show Events list to apply when Sequence is playing </summary>
 /// <param name="inlineHelp">Should help be displayed?</param>
 public void EventsPanel(bool inlineHelp)
 {
     ++EditorGUI.indentLevel;
     m_eventsWhilePlayingReorderable.DoLayoutList();
     m_editorUtils.InlineHelp("mEventsWhilePlaying", inlineHelp);
     m_valuesWhilePlayingReorderable.DoLayoutList();
     m_editorUtils.InlineHelp("mValuesWhilePlaying", inlineHelp);
     m_editorUtils.PropertyField("mOnPlayClip", m_OnPlayClip, inlineHelp);
     m_editorUtils.PropertyField("mOnStopClip", m_OnStopClip, inlineHelp);
     --EditorGUI.indentLevel;
 }
 public override void OnInspectorGUI()
 {
     EditorGUI.BeginChangeCheck();
     EditorGUILayout.PropertyField(m_AnimatorController);
     if (EditorGUI.EndChangeCheck())
     {
         ResetOverrideMotions();
     }
     m_ReorderableList.DoLayoutList();
     ApplyRevertGUI();
 }
示例#17
0
        override public void OnInspectorGUI()
        {
            base.OnInspectorGUI();

            GUILayout.FlexibleSpace();

            GUILayout.Label("Build Profiles", EditorStyles.boldLabel);
            list.DoLayoutList();

            EditorGUI.BeginDisabledGroup(distro.builds == null || distro.builds.Count == 0);
            {
                GUILayout.Label("Distribution", EditorStyles.boldLabel);
                EditorGUILayout.BeginHorizontal();
                {
                    if (distro.IsRunning)
                    {
                        if (GUILayout.Button("Cancel"))
                        {
                            distro.Cancel();
                        }
                        GUILayout.Label(GetSpinner(), GUILayout.ExpandWidth(false));
                    }
                    else
                    {
                        if (GUILayout.Button("Build & Distribute"))
                        {
                            distro.Distribute(DistroBuildMode.BuildAll);
                            GUIUtility.ExitGUI();
                        }
                        EditorGUI.BeginDisabledGroup(!distro.HasAllBuilds());
                        {
                            if (GUILayout.Button("Distribute"))
                            {
                                distro.Distribute();
                                GUIUtility.ExitGUI();
                            }
                        }
                        EditorGUI.EndDisabledGroup();
                    }
                }
                EditorGUILayout.EndHorizontal();
            }
            EditorGUI.EndDisabledGroup();

            if (BuildRunner.Current != null)
            {
                GUILayout.Space(20);
                GUILayout.Label("Current Build", EditorStyles.boldLabel);
                BuildRunner.Current.StatusGUI();
            }
        }
示例#18
0
 public override void OnInspectorGUI()
 {
     serializedObject.UpdateIfRequiredOrScript();
     list.DoLayoutList();
     if (!isValid)
     {
         if (list.serializedProperty.arraySize < 1)
         {
             isValid = true;
         }
         UnityEditor.EditorGUILayout.HelpBox("You have non unique names in bundle!", UnityEditor.MessageType.Error);
     }
     serializedObject.ApplyModifiedProperties();
 }
        public override void OnPropertyDrawer(UnityEditor.SerializedProperty prop)
        {
            if (editorContent == null || string.IsNullOrEmpty(editorContent.text))
            {
                var name = UnityEditor.ObjectNames.NicifyVariableName(FieldName);
                editorContent = new UnityEngine.GUIContent(name);
            }

            if (reList == null)
            {
                Type type;
                if (FieldType.StartsWith("CS."))
                {
                    var typeName = FieldType.Substring(3);
                    type = String2TypeCache.GetType(typeName);
                }
                else
                {
                    type = typeof(LuaBinding);
                }

                reList = new UnityEditorInternal.ReorderableList(prop.serializedObject, prop)
                {
                    elementHeight = UnityEditor.EditorGUIUtility.singleLineHeight
                };
                reList.drawHeaderCallback += rect => {
                    UnityEditor.EditorGUI.LabelField(rect, FieldName);
                };
                reList.drawElementCallback += (rect, index, active, focused) => {
                    var elemProp = reList.serializedProperty.GetArrayElementAtIndex(index);
                    UnityEditor.EditorGUI.BeginChangeCheck();
                    UnityEditor.EditorGUI.ObjectField(rect, elemProp, type, editorContent);
                    if (UnityEditor.EditorGUI.EndChangeCheck())
                    {
                        var path = UnityEditor.AssetDatabase.GetAssetPath(elemProp.objectReferenceValue);
                        if (string.IsNullOrEmpty(path))
                        {
                            return;
                        }

                        UnityEditor.EditorUtility.DisplayDialog("ERROR", $"{FieldName} should use AssetReference to a non scene object!", "OK");
                        elemProp.objectReferenceValue = null;
                    }
                };
            }

            reList.serializedProperty = prop;
            reList.DoLayoutList();
        }
        private void OnGUIScreenshotConfigs()
        {
            EditorGUILayout.BeginHorizontal();
            GUILayout.Label(_configsIcon, GUILayout.Width(24));
            GUILayout.Label("Screenshots", EditorStyles.boldLabel);
            EditorGUILayout.EndHorizontal();

            _list.DoLayoutList();
            EditorGUILayout.Space();

            _settings.Tag = EditorGUILayout.TextField("Tag", _settings.Tag);
            EditorGUILayout.Space();

            _settings.AppendTimestamp = EditorGUILayout.Toggle("Timestamp", _settings.AppendTimestamp);
            EditorGUILayout.Space();
        }
        void drawPools()
        {
            EditorGUILayout.Space();

            _poolList.DoLayoutList();

            if (_pools.Count == 0)
            {
                EditorGUILayout.HelpBox("You can optimize the memory footprint of entities by creating multiple pools. " +
                                        "The code generator generates subclasses of PoolAttribute for each pool name. " +
                                        "You can assign components to a specific pool with the generated attribute, e.g. [UI] or [MetaGame], " +
                                        "otherwise they are assigned to the default pool.", MessageType.Info);
            }

            _codeGeneratorConfig.pools = _pools.ToArray();
        }
        public override void OnInspectorGUI()
        {
            BeginInspector();
            DrawRemainingPropertiesInInspector();

            if (mTargetList == null)
            {
                SetupTargetList();
            }
            EditorGUI.BeginChangeCheck();
            mTargetList.DoLayoutList();
            if (EditorGUI.EndChangeCheck())
            {
                serializedObject.ApplyModifiedProperties();
            }
        }
        void drawContexts()
        {
            EditorGUILayout.Space();

            _contextList.DoLayoutList();

            if (_contexts.Count <= 1)
            {
                EditorGUILayout.HelpBox("You can optimize the memory footprint of entities by creating multiple contexts. " +
                                        "The code generator generates subclasses of ContextAttribute for each context name. " +
                                        "You can assign components to a specific context with the generated attribute, e.g. [UI] or [MetaGame], " +
                                        "otherwise they are assigned to the default context.", MessageType.Info);
            }

            _codeGeneratorConfig.contexts = _contexts.ToArray();
        }
        void DrawManageStyles()
        {
            if (roorderList == null && _skinOriginal != null)
            {
                EnableList();
            }
            if (roorderList == null)
            {
                return;
            }

            ExGUI.Title("Add Buildt In Styles");
            DrawAddDefault();

            ExGUI.Title("Reorder");
            ExGUI.Horizontal(delegate()
            {
                script = (MonoScript)EditorGUILayout.ObjectField(script, typeof(MonoScript), false);
                if (GUILayout.Button("ReOrder", EditorStyles.miniButtonLeft))
                {
                    try
                    {
                        ReorderByEnum(script.GetClass());
                    }
                    catch (System.Exception ex)
                    {
                        Debug.Log(ex);
                    }
                }
                if (GUILayout.Button("Add From Enum", EditorStyles.miniButtonRight))
                {
                    try
                    {
                        AddFromEnum(script.GetClass());
                    }
                    catch (System.Exception ex)
                    {
                        Debug.Log(ex);
                    }
                }
            });


            EditorGUILayout.Space();
            roorderList.DoLayoutList();
        }
示例#25
0
        public override void OnInspectorGUI()
        {
            serializedObject.Update();
            DrawPropertiesExcluding(serializedObject, m_excludeFields);
            serializedObject.ApplyModifiedProperties();

            if (mTargetList == null)
            {
                SetupTargetList();
            }
            EditorGUI.BeginChangeCheck();
            mTargetList.DoLayoutList();
            if (EditorGUI.EndChangeCheck())
            {
                serializedObject.ApplyModifiedProperties();
            }
        }
        //---------------------------------------------------------------------
        // Helpers
        //---------------------------------------------------------------------

        private void OnGUICameraInput()
        {
            EditorGUILayout.Space();

            EditorGUILayout.BeginHorizontal();
            GUILayout.Label(_cameraIcon, GUILayout.Width(24));
            GUILayout.Label("Camera", EditorStyles.boldLabel);
            EditorGUILayout.EndHorizontal();

            //if (_settings.Camera == null) _settings.Camera = Camera.main;
            _camerasList.DoLayoutList();
            if (ScreenShooterSettings.Instance.Cameras == null || ScreenShooterSettings.Instance.Cameras.Count == 0)
            {
                EditorGUILayout.HelpBox("No cameras selected, Game View buffer will be used instead", MessageType.Info);
            }
            EditorGUILayout.Space();
        }
        protected override void OnCustomInspectorGUI(params CustomOverrideProperty[] extraOverride)
        {
            var l = new List <CustomOverrideProperty>(extraOverride);

            l.Add(new CustomOverrideProperty("plyAttributes", () =>
            {
                //EditorGUILayout.EndVertical(); // Close box

                //EditorGUILayout.BeginVertical(InventoryEditorStyles.reorderableListStyle); // Continue
                EditorGUILayout.LabelField("Add value to attributes when this item is consumed.");
                list.DoLayoutList();
                //EditorGUILayout.EndVertical(); // Close box

                //EditorGUILayout.BeginVertical(); // Continue
            }));

            base.OnCustomInspectorGUI(l.ToArray());
        }
示例#28
0
            public override void Draw(ObjectInspector inspector, FieldInspector fieldInspector)
            {
                if (fieldInspector.Property.isArray)
                {
                    if (List == null)
                    {
                        GenerateList(fieldInspector);
                    }

                    List.DoLayoutList();
                }
                else
                {
                    GUILayout.BeginHorizontal();
                    EditorGUILayout.HelpBox("[" + fieldInspector.Field.Name + "] can't use the ReorderableList!", MessageType.Error);
                    GUILayout.EndHorizontal();
                }
            }
示例#29
0
        public override void OnInspectorGUI()
        {
            if ((serializedObject.FindProperty("drawingMode").intValue & (int)OutlinableDrawingMode.Normal) != 0)
            {
                if (serializedObject.FindProperty("renderStyle").intValue == 1)
                {
                    DrawPropertiesExcluding(serializedObject,
                                            "frontParameters",
                                            "backParameters",
                                            "outlineTargets",
                                            "outlineTargets",
                                            "m_Script");
                }
                else
                {
                    DrawPropertiesExcluding(serializedObject,
                                            "outlineParameters",
                                            "outlineTargets",
                                            "outlineTargets",
                                            "m_Script");
                }
            }
            else
            {
                DrawPropertiesExcluding(serializedObject,
                                        "outlineParameters",
                                        "frontParameters",
                                        "backParameters",
                                        "outlineTargets",
                                        "m_Script");
            }

            serializedObject.ApplyModifiedProperties();

            var renderers = serializedObject.FindProperty("outlineTargets");

            CheckList(renderers);

            if (serializedObject.targetObjects.Count() == 1)
            {
                targetsList.DoLayoutList();
            }
        }
示例#30
0
        public override void OnInspectorGUI()
        {
            BeginInspector();
            if (mInstructionList == null)
            {
                SetupInstructionList();
            }
            if (mChildList == null)
            {
                SetupChildList();
            }

            // Ordinary properties
            DrawHeaderInInspector();
            DrawPropertyInInspector(FindProperty(x => x.m_Priority));
            DrawTargetsInInspector(FindProperty(x => x.m_Follow), FindProperty(x => x.m_LookAt));
            DrawRemainingPropertiesInInspector();

            if (targets.Length == 1)
            {
                // Instructions
                UpdateCameraCandidates();
                EditorGUI.BeginChangeCheck();
                EditorGUILayout.Separator();
                mInstructionList.DoLayoutList();

                EditorGUILayout.Separator();

                mChildList.DoLayoutList();
                if (EditorGUI.EndChangeCheck())
                {
                    serializedObject.ApplyModifiedProperties();
                    Target.ValidateInstructions();
                }
            }
            else
            {
                EditorGUILayout.HelpBox(Styles.virtualCameraChildrenInfoMsg.text, MessageType.Info);
            }

            // Extensions
            DrawExtensionsWidgetInInspector();
        }