void DrawArrow(float width)
        {
            QUI.BeginHorizontal(width);
            {
                QUI.QToggle("Show Arrow", showArrow);
                QUI.FlexibleSpace();
            }
            QUI.EndHorizontal();

            showArrowAnimBool.target = showArrow.boolValue;

            if (QUI.BeginFadeGroup(showArrowAnimBool.faded))
            {
                QUI.BeginVertical(width);
                {
                    QUI.Space(SPACE_2 * showArrowAnimBool.faded);
                    QUI.BeginHorizontal(width);
                    {
                        QUI.QObjectPropertyField("Arrow", arrow, width - 4 - 100, 20, true);
                        QUI.Space(SPACE_4 * showArrowAnimBool.faded);
                        QUI.QObjectPropertyField("Scale", arrowScale, 100, 20, false);
                        QUI.FlexibleSpace();
                    }
                    QUI.EndHorizontal();
                    QUI.BeginHorizontal(width);
                    {
                        QUI.QToggle("Override Arrow Color", overrideArrowColor);
                        QUI.Space(SPACE_2);
                        if (overrideArrowColor.boolValue)
                        {
                            tempFloat = (width - 152) / 2; //color fields width
                            QUI.QObjectPropertyField("Closed", arrowColorWhenClosed, tempFloat, 20, false);
                            QUI.Space(SPACE_2);
                            QUI.QObjectPropertyField("Opened", arrowColorWhenOpened, tempFloat, 20, false);
                        }
                        QUI.FlexibleSpace();
                    }
                    QUI.EndHorizontal();
                    QUI.Space(SPACE_2);
                    QUI.BeginHorizontal(width);
                    {
                        if (QUI.GhostButton("Reset Arrow Holder Pos", QColors.Color.Gray, (width - 4) / 3, 18))
                        {
                            Undo.RecordObject(Drawer.leftDrawerArrowHolder, "Update Arrow Holder");
                            switch (Drawer.drawerCloseDirection)
                            {
                            case Gestures.SimpleSwipe.Left: UIDrawer.ResetArrowHolder(Drawer.leftDrawerArrowHolder, Drawer.drawerCloseDirection); break;

                            case Gestures.SimpleSwipe.Right: UIDrawer.ResetArrowHolder(Drawer.rightDrawerArrowHolder, Drawer.drawerCloseDirection); break;

                            case Gestures.SimpleSwipe.Up: UIDrawer.ResetArrowHolder(Drawer.upDrawerArrowHolder, Drawer.drawerCloseDirection); break;

                            case Gestures.SimpleSwipe.Down: UIDrawer.ResetArrowHolder(Drawer.downDrawerArrowHolder, Drawer.drawerCloseDirection); break;
                            }
                        }
                        QUI.Space(SPACE_2);
                        if (QUI.GhostButton("Reset Closed Arrow Pos", QColors.Color.Gray, (width - 4) / 3, 18))
                        {
                            Undo.RecordObject(Drawer.leftDrawerArrowClosedPosition, "Update Closed Arrow");
                            switch (Drawer.drawerCloseDirection)
                            {
                            case Gestures.SimpleSwipe.Left: UIDrawer.ResetClosedArrow(Drawer.leftDrawerArrowClosedPosition, Drawer.drawerCloseDirection); break;

                            case Gestures.SimpleSwipe.Right: UIDrawer.ResetClosedArrow(Drawer.rightDrawerArrowClosedPosition, Drawer.drawerCloseDirection); break;

                            case Gestures.SimpleSwipe.Up: UIDrawer.ResetClosedArrow(Drawer.upDrawerArrowClosedPosition, Drawer.drawerCloseDirection); break;

                            case Gestures.SimpleSwipe.Down: UIDrawer.ResetClosedArrow(Drawer.downDrawerArrowClosedPosition, Drawer.drawerCloseDirection); break;
                            }
                        }
                        QUI.Space(SPACE_2);
                        if (QUI.GhostButton("Reset Opened Arrow Pos", QColors.Color.Gray, (width - 4) / 3, 18))
                        {
                            Undo.RecordObject(Drawer.leftDrawerArrowOpenedPosition, "Update Opened Arrow");
                            switch (Drawer.drawerCloseDirection)
                            {
                            case Gestures.SimpleSwipe.Left: UIDrawer.ResetOpenedArrow(Drawer.leftDrawerArrowOpenedPosition, Drawer.drawerCloseDirection); break;

                            case Gestures.SimpleSwipe.Right: UIDrawer.ResetOpenedArrow(Drawer.rightDrawerArrowOpenedPosition, Drawer.drawerCloseDirection); break;

                            case Gestures.SimpleSwipe.Up: UIDrawer.ResetOpenedArrow(Drawer.upDrawerArrowOpenedPosition, Drawer.drawerCloseDirection); break;

                            case Gestures.SimpleSwipe.Down: UIDrawer.ResetOpenedArrow(Drawer.downDrawerArrowOpenedPosition, Drawer.drawerCloseDirection); break;
                            }
                        }
                    }
                    QUI.EndHorizontal();
                    QUI.Space(SPACE_2);
                    QUI.BeginHorizontal(width);
                    {
                        if (QUI.GhostButton("Copy - Opened Arrow Position - to - Closed Arrow Position", QColors.Color.Gray, width, 18))
                        {
                            Undo.RecordObject(Drawer.leftDrawerArrowOpenedPosition, "Update Opened Arrow");
                            switch (Drawer.drawerCloseDirection)
                            {
                            case Gestures.SimpleSwipe.Left: UIDrawer.MatchRectTransform(Drawer.leftDrawerArrowClosedPosition, Drawer.leftDrawerArrowOpenedPosition); break;

                            case Gestures.SimpleSwipe.Right: UIDrawer.MatchRectTransform(Drawer.rightDrawerArrowClosedPosition, Drawer.rightDrawerArrowOpenedPosition); break;

                            case Gestures.SimpleSwipe.Up: UIDrawer.MatchRectTransform(Drawer.upDrawerArrowClosedPosition, Drawer.upDrawerArrowOpenedPosition); break;

                            case Gestures.SimpleSwipe.Down: UIDrawer.MatchRectTransform(Drawer.downDrawerArrowClosedPosition, Drawer.downDrawerArrowOpenedPosition); break;
                            }
                        }
                    }
                    QUI.EndHorizontal();
                    QUI.Space(SPACE_2);
                    QUI.BeginHorizontal(width);
                    {
                        if (QUI.GhostButton("Copy - Closed Arrow Position - to - Opened Arrow Position", QColors.Color.Gray, width, 18))
                        {
                            Undo.RecordObject(Drawer.leftDrawerArrowClosedPosition, "Update Closed Arrow");
                            switch (Drawer.drawerCloseDirection)
                            {
                            case Gestures.SimpleSwipe.Left: UIDrawer.MatchRectTransform(Drawer.leftDrawerArrowOpenedPosition, Drawer.leftDrawerArrowClosedPosition); break;

                            case Gestures.SimpleSwipe.Right: UIDrawer.MatchRectTransform(Drawer.rightDrawerArrowOpenedPosition, Drawer.rightDrawerArrowClosedPosition); break;

                            case Gestures.SimpleSwipe.Up: UIDrawer.MatchRectTransform(Drawer.upDrawerArrowOpenedPosition, Drawer.upDrawerArrowClosedPosition); break;

                            case Gestures.SimpleSwipe.Down: UIDrawer.MatchRectTransform(Drawer.downDrawerArrowOpenedPosition, Drawer.downDrawerArrowClosedPosition); break;
                            }
                        }
                    }
                    QUI.EndHorizontal();
                    QUI.Space(SPACE_2);
                    if (QUI.GhostBar("Show Arrow References", showArrowReferences.target ? QColors.Color.Blue : QColors.Color.Gray, showArrowReferences, width * showArrowAnimBool.faded, MiniBarHeight))
                    {
                        showArrowReferences.target = !showArrowReferences.target;
                    }
                    QUI.BeginHorizontal(width);
                    {
                        QUI.Space(SPACE_8 * showArrowReferences.faded);
                        if (QUI.BeginFadeGroup(showArrowReferences.faded))
                        {
                            QUI.BeginVertical(width - SPACE_8);
                            {
                                QUI.Space(SPACE_4 * showArrowReferences.faded);
                                QUI.QObjectPropertyField("Arrow Container", arrowContainer, width - SPACE_8, 20, true);
                                QUI.Space(SPACE_2 * showArrowReferences.faded);
                                DrawArrowHolder("Left", leftDrawerArrowHolder, leftDrawerArrowClosedPosition, leftDrawerArrowOpenedPosition, width);
                                QUI.Space(SPACE_2 * showArrowReferences.faded);
                                DrawArrowHolder("Right", rightDrawerArrowHolder, rightDrawerArrowClosedPosition, rightDrawerArrowOpenedPosition, width);
                                QUI.Space(SPACE_2 * showArrowReferences.faded);
                                DrawArrowHolder("Up", upDrawerArrowHolder, upDrawerArrowClosedPosition, upDrawerArrowOpenedPosition, width);
                                QUI.Space(SPACE_2 * showArrowReferences.faded);
                                DrawArrowHolder("Down", downDrawerArrowHolder, downDrawerArrowClosedPosition, downDrawerArrowOpenedPosition, width);
                                QUI.Space(SPACE_2 * showArrowReferences.faded);
                            }
                            QUI.EndVertical();
                        }
                        QUI.EndFadeGroup();
                    }
                    QUI.EndHorizontal();
                    QUI.Space(SPACE_2 * showArrowAnimBool.faded);
                }
                QUI.EndVertical();
            }
            QUI.EndFadeGroup();
        }