protected override FieldInfo RenderInfo(FieldInfo info, Rect rect, int index)
        {
            Rect infoRect = new Rect(rect);

            infoRect.width = 20;
            // Align icon on the center.
            infoRect.x--;
            infoRect.y--;

            Rect enumRect = new Rect(rect);

            enumRect.x     = infoRect.xMax;
            enumRect.width = rect.width / 3 - infoRect.width;

            Rect textRect = new Rect(rect);

            textRect.x     = enumRect.xMax;
            textRect.width = rect.width - enumRect.width - infoRect.width;

            if (DefaultMessages.IsSceneField(info))
            {
                EditorGUI.LabelField(infoRect, m_SceneFieldInfo);
            }
            else if (DefaultMessages.IsLoadingStateField(info))
            {
                EditorGUI.LabelField(infoRect, m_LoadingFieldInfo);
            }

            Selection selection = RenderEnumSelection(enumRect, info.enumTypeIndex);

            info.enumTypeIndex = selection.id;
            info.enumType      = selection.name;
            info.name          = EditorGUI.TextField(textRect, info.name);
            return(info);
        }
        protected override FieldInfo RenderInfo(FieldInfo info, Rect rect, int index)
        {
            Rect infoRect = new Rect(rect);

            infoRect.width = 20;
            // Align icon on the center.
            infoRect.x--;
            infoRect.y--;

            Rect enumRect = new Rect(rect);

            enumRect.x     = infoRect.xMax;
            enumRect.width = rect.width / 3 - infoRect.width;

            Rect textRect = new Rect(rect);

            textRect.x     = enumRect.xMax;
            textRect.width = rect.width - enumRect.width - infoRect.width;

            if (DefaultMessages.IsSceneField(info))
            {
                EditorGUI.LabelField(infoRect, m_SceneFieldInfo);
            }
            else if (DefaultMessages.IsLoadingStateField(info))
            {
                EditorGUI.LabelField(infoRect, m_LoadingFieldInfo);
            }

            Selection selection = RenderEnumSelection(enumRect, info.enumTypeIndex);

            info.enumTypeIndex = selection.id;
            info.enumType      = selection.name;
            string input = EditorGUI.TextField(textRect, info.name);

            // String should contain only a-z, A-Z, numbers and '_' symbols.
            info.name = Regex.Replace(input, "[^a-zA-Z0-9_]", "");
            return(info);
        }