private bool HandleLeftMouseButton(MyStringId context)
        {
            if (MyInput.Static.IsNewLeftMousePressed() || MyControllerHelper.IsControl(context, MyControlsSpace.COPY_PASTE_ACTION))
            {
                bool handled = false;
                if (m_clipboard.IsActive)
                {
                    if (m_clipboard.PasteGrid())
                    {
                        UpdatePasteNotification(MyCommonTexts.CubeBuilderPasteNotification);
                        handled = true;
                    }
                }

                if (m_floatingObjectClipboard.IsActive)
                {
                    if (m_floatingObjectClipboard.PasteFloatingObject())
                    {
                        UpdatePasteNotification(MyCommonTexts.CubeBuilderPasteNotification);
                        handled = true;
                    }
                }

                if (m_voxelClipboard.IsActive)
                {
                    if (m_voxelClipboard.PasteVoxelMap())
                    {
                        UpdatePasteNotification(MyCommonTexts.CubeBuilderPasteNotification);
                        handled = true;
                    }
                }

                if (handled)
                {
                    this.Deactivate();
                    return(true);
                }
            }

            return(false);
        }
        public bool HandleGameInput()
        {
            m_rotationHintRotating = false;

            var context = (m_activated && MySession.Static.ControlledEntity is MyCharacter) ? MySession.Static.ControlledEntity.ControlContext : MyStringId.NullOrEmpty;

            // When spectator active, building is instant
            if (MySession.Static.IsCopyPastingEnabled || MySession.Static.CreativeMode || (SpectatorIsBuilding && MyFinalBuildConstants.IS_OFFICIAL == false))
            {
                if (MySession.Static.IsCopyPastingEnabled && !(MySession.Static.ControlledEntity is MyShipController))
                {
                    if (this.HandleCopyInput())
                    {
                        return(true);
                    }

                    if (this.HandleCutInput())
                    {
                        return(true);
                    }

                    if (this.HandlePasteInput())
                    {
                        return(true);
                    }

                    if (HandleMouseScrollInput(context))
                    {
                        return(true);
                    }
                }

                if (this.HandleEscape())
                {
                    return(true);
                }

                if (this.HandleLeftMouseButton(context))
                {
                    return(true);
                }
            }
            else if (MySession.Static.Battle)
            {
                if (MyControllerHelper.IsControl(context, MyControlsSpace.PRIMARY_TOOL_ACTION))
                {
                    if (m_clipboard.IsActive)
                    {
                        if (m_clipboard.PasteGrid())
                        {
                            UpdatePasteNotification(MyCommonTexts.CubeBuilderPasteNotification);
                            return(true);
                        }
                    }
                }
            }

            if (this.HandleBlueprintInput())
            {
                return(true);
            }

            if (m_clipboard != null && m_clipboard.IsActive && (MyControllerHelper.IsControl(context, MyControlsSpace.FREE_ROTATION) ||
                                                                MyControllerHelper.IsControl(context, MyControlsSpace.SWITCH_BUILDING_MODE)))
            {
                m_clipboard.EnableStationRotation = !m_clipboard.EnableStationRotation;
                m_floatingObjectClipboard.EnableStationRotation = !m_floatingObjectClipboard.EnableStationRotation;

                //if (m_clipboard.EnableStationRotation)
                //    ShowStationRotationNotification();
                //else
                //    HideStationRotationNotification();
            }

            if (HandleRotationInput(context))
            {
                return(true);
            }

            return(false);
        }