示例#1
0
    /// <summary>
    /// Draws the UI when in scan mode.
    /// Automatically shows Help dialog when starting and after timeout.
    /// </summary>
    public void DrawUI(ImageTargetBuilder.FrameQuality frameQuality)
    {
        if (frameQuality != ImageTargetBuilder.FrameQuality.FRAME_QUALITY_NONE)
        {
            // draw the view finder UI...
            if (frameQuality == ImageTargetBuilder.FrameQuality.FRAME_QUALITY_MEDIUM || frameQuality == ImageTargetBuilder.FrameQuality.FRAME_QUALITY_HIGH)
            {
                // draw the view finder with green marks
                mUserInterface.DrawViewFinder(Color.green);
            }
            else
            {
                // draw the basic viewfinder with white marks and show the scanning message
                mUserInterface.DrawViewFinder(Color.white);
            }

            UserDefinedTargetBuildingUI.ButtonID buttonId = UserDefinedTargetBuildingUI.ButtonID.NONE_PRESSED;

            if (QCARRuntimeUtilities.IsLandscapeOrientation)
            {
                // Draws the Landscape UI for the Scanning Mode
                buttonId = mUserInterface.DrawScanningModeLandscapeUI();
            }
            else
            {
                // Draws the Portrait UI for the scanning mode
                buttonId = mUserInterface.DrawScanningModePortraitUI();
            }

            // Checks Button actions
            if (buttonId == UserDefinedTargetBuildingUI.ButtonID.CANCEL_PRESSED)
            {
                mStopScanningCallback();
            }
            else if (buttonId == UserDefinedTargetBuildingUI.ButtonID.BUILD_TARGET_PRESSED)
            {
                // check if the current frame has too low quality to create a good target
                if (frameQuality == ImageTargetBuilder.FrameQuality.FRAME_QUALITY_LOW)
                {
                    ErrorMsg.New("Low Quality Image", "The image has very little detail, please try another.",
                                 () => mUserInterface.ButtonPressed = true);
                }
                mStartBuildingCallback();
            }
        }

        // Draws possible error messages
        ErrorMsg.Draw();
    }
    /// <summary>
    /// Renders the UI, depending on the current state
    /// </summary>
    void OnGUI()
    {
        if (mOnInitializedCalled)
        {
            // BeginOnGUI tells the user interface to reset some values and set the right GUISkin
            mUserInterface.BeginOnGUI();

            // check in which mode we are
            if (mFrameQuality == ImageTargetBuilder.FrameQuality.FRAME_QUALITY_NONE)
            {
                if (QCARRuntimeUtilities.IsLandscapeOrientation)
                {
                    if (!mDrawInstructionsFlag)
                    {
                        // Draws Landscape UI for ViewFinder Mode & process button actions
                        if (mUserInterface.DrawViewFinderModeLandscapeUI() == UserDefinedTargetBuildingUI.ButtonID.ENTER_SCANNING_MODE_PRESSED)
                        {
                            // Checks if the instructions Screen need to be displayed
                            if (mDoShowInstructions)
                            {
                                // Draws the instructions UI
                                mDrawInstructionsFlag = true;
                            }
                            else
                            {
                                // Enters the scanning mode
                                mTargetBuildingBehaviour.StartScanning();
                            }
                        }
                    }
                    else
                    {
                        // Draws the Landscape Instructions UI
                        UserDefinedTargetBuildingUI.ButtonID buttonPreessedId = mUserInterface.DrawInstructionsLandscapeUI();

                        // Checks Instructions button pressed
                        if (buttonPreessedId == UserDefinedTargetBuildingUI.ButtonID.INSTRUCTIONS_OK_PRESSED)
                        {
                            mDrawInstructionsFlag = false;
                            mDoShowInstructions   = false;
                            mTargetBuildingBehaviour.StartScanning();
                        }
                        else if (buttonPreessedId == UserDefinedTargetBuildingUI.ButtonID.CANCEL_PRESSED)
                        {
                            mDrawInstructionsFlag = false;
                        }
                    }
                }
                else
                {
                    if (!mDrawInstructionsFlag)
                    {
                        // Draws Portrait mode for ViewFinder Mode & process button actions
                        if (mUserInterface.DrawViewFinderModePortraitUI() == UserDefinedTargetBuildingUI.ButtonID.ENTER_SCANNING_MODE_PRESSED)
                        {
                            // Checks if the instructions Screen need to be displayed
                            if (mDoShowInstructions)
                            {
                                // Draws the instructions UI
                                mDrawInstructionsFlag = true;
                            }
                            else
                            {
                                // Enters the scanning mode
                                mTargetBuildingBehaviour.StartScanning();
                            }
                        }
                    }
                    else
                    {
                        // Draws the portrait Instructions UI
                        UserDefinedTargetBuildingUI.ButtonID buttonPreessedId = mUserInterface.DrawInstructionsPortraitUI();

                        // Checks Instructions button pressed
                        if (buttonPreessedId == UserDefinedTargetBuildingUI.ButtonID.INSTRUCTIONS_OK_PRESSED)
                        {
                            mDrawInstructionsFlag = false;
                            mDoShowInstructions   = false;
                            mTargetBuildingBehaviour.StartScanning();
                        }
                        else if (buttonPreessedId == UserDefinedTargetBuildingUI.ButtonID.CANCEL_PRESSED)
                        {
                            mDrawInstructionsFlag = false;
                        }
                    }
                }
            }

            // draw scanning mode UI, decides internally what should be rendered
            mScanModeUILogic.DrawUI(mFrameQuality);
        }
    }