/// <summary>
        /// Toggles between different dynamic camera states
        /// </summary>
        /// <param name="mode"></param>
        public void OnCameraDropdownValueChanged(int mode)
        {
            switch (mode)
            {
            case 1:
                camera.SwitchCameraState(new DynamicCamera.DriverStationState(camera));
                DynamicCamera.ControlEnabled = true;
                break;

            case 2:
                camera.SwitchCameraState(new DynamicCamera.OrbitState(camera));
                DynamicCamera.ControlEnabled = true;
                break;

            case 3:
                camera.SwitchCameraState(new DynamicCamera.FreeroamState(camera));
                DynamicCamera.ControlEnabled = true;
                break;

            case 4:
                camera.SwitchCameraState(new DynamicCamera.OverviewState(camera));
                DynamicCamera.ControlEnabled = true;
                break;
            }
        }
Пример #2
0
    //In game UI switches view using UI icons
    public void SwitchViewClickMoreBetterer(int joe)
    {
        Debug.Log(joe);
        switch (joe)
        {
        case 1:
            dynamicCamera.SwitchCameraState(new DynamicCamera.DriverStationState(dynamicCamera));
            DynamicCamera.MovingEnabled = true;
            break;

        case 2:
            dynamicCamera.SwitchCameraState(new DynamicCamera.OrbitState(dynamicCamera));
            DynamicCamera.MovingEnabled = true;
            break;

        case 3:
            dynamicCamera.SwitchCameraState(new DynamicCamera.FreeroamState(dynamicCamera));
            DynamicCamera.MovingEnabled = true;
            break;

        case 4:
            dynamicCamera.SwitchCameraState(new DynamicCamera.OverviewState(dynamicCamera));
            DynamicCamera.MovingEnabled = true;
            break;
        }
    }
Пример #3
0
    /// <summary>
    /// Toggles between different dynamic camera states
    /// </summary>
    /// <param name="joe"></param>
    public void SwitchCameraView(int joe)
    {
        switch (joe)
        {
        case 1:
            camera.SwitchCameraState(new DynamicCamera.DriverStationState(camera));
            DynamicCamera.MovingEnabled = true;
            break;

        case 2:
            camera.SwitchCameraState(new DynamicCamera.OrbitState(camera));
            DynamicCamera.MovingEnabled = true;
            break;

        case 3:
            camera.SwitchCameraState(new DynamicCamera.FreeroamState(camera));
            DynamicCamera.MovingEnabled = true;
            break;

        case 4:
            camera.SwitchCameraState(new DynamicCamera.OverviewState(camera));
            DynamicCamera.MovingEnabled = true;
            break;
        }
    }
Пример #4
0
        // Use this for initialization
        public override void Start()
        {
            moveArrows                         = GameObject.Instantiate(Resources.Load <GameObject>("Prefabs\\MoveArrows"));
            moveArrows.name                    = "IndicatorMoveArrows";
            moveArrows.transform.parent        = sensor.transform;
            moveArrows.transform.rotation      = sensor.transform.rotation;
            moveArrows.transform.localPosition = UnityEngine.Vector3.zero;

            moveArrows.GetComponent <MoveArrows>().Translate = (translation) =>
                                                               sensor.transform.Translate(translation, Space.World);

            StateMachine.SceneGlobal.Link <SensorSpawnState>(moveArrows);

            DynamicCamera dynamicCamera = UnityEngine.Camera.main.transform.GetComponent <DynamicCamera>();

            lastCameraState = dynamicCamera.ActiveState;

            dynamicCamera.SwitchCameraState(new DynamicCamera.ConfigurationState(dynamicCamera, sensor));

            Button resetButton = GameObject.Find("ResetButton").GetComponent <Button>();

            resetButton.onClick.RemoveAllListeners();
            resetButton.onClick.AddListener(ResetSpawn);
            Button returnButton = GameObject.Find("ReturnButton").GetComponent <Button>();

            returnButton.onClick.RemoveAllListeners();
            returnButton.onClick.AddListener(ReturnToMainState);
        }
Пример #5
0
        // Use this for initialization
        public override void Start()
        {
            #region init
            ui       = GameObject.Find("GoalStateUI");
            helpMenu = Auxiliary.FindObject(ui, "Help");
            toolbar  = Auxiliary.FindObject(ui, "ResetStateToolbar");
            overlay  = Auxiliary.FindObject(ui, "Overlay");
            #endregion

            if (goalIndicator != null)
            {
                GameObject.Destroy(goalIndicator);
            }
            if (goalIndicator == null)
            {
                goalIndicator      = GameObject.CreatePrimitive(PrimitiveType.Cube); // Create cube to show goal region
                goalIndicator.name = "GoalIndicator";
                Renderer render = goalIndicator.GetComponentInChildren <Renderer>();
                render.material.shader = Shader.Find("Transparent/Diffuse");
                Color newColor = new Color(0, 0.88f, 0, 0.6f);
                render.material.color = newColor;
            }
            goalIndicator.transform.position   = color.Equals("Red") ? gm.redGoals[gamepieceIndex][goalIndex].GetComponent <Goal>().position : gm.blueGoals[gamepieceIndex][goalIndex].GetComponent <Goal>().position;
            goalIndicator.transform.localScale = color.Equals("Red") ? gm.redGoals[gamepieceIndex][goalIndex].GetComponent <Goal>().scale : gm.blueGoals[gamepieceIndex][goalIndex].GetComponent <Goal>().scale;

            settingGamepieceGoalVertical = false;

            GameObject moveArrows = GameObject.Instantiate(Resources.Load <GameObject>("Prefabs\\MoveArrows"));
            moveArrows.name                    = "IndicatorMoveArrows";
            moveArrows.transform.parent        = goalIndicator.transform;
            moveArrows.transform.localPosition = UnityEngine.Vector3.zero;

            if (move)
            {
                moveArrows.GetComponent <MoveArrows>().Translate = (translation) => goalIndicator.transform.Translate(translation, Space.World);
            }
            else
            {
                moveArrows.GetComponent <MoveArrows>().Translate = (translation) => goalIndicator.transform.localScale += translation;//goalIndicator.transform.localScale.Scale(translation);
            }
            StateMachine.SceneGlobal.Link <GoalState>(moveArrows);

            DynamicCamera dynamicCamera = UnityEngine.Camera.main.transform.GetComponent <DynamicCamera>();
            lastCameraState = dynamicCamera.ActiveState;

            dynamicCamera.SwitchCameraState(new DynamicCamera.ConfigurationState(dynamicCamera, goalIndicator));

            Button resetButton = GameObject.Find("ResetButton").GetComponent <Button>();
            resetButton.onClick.RemoveAllListeners();
            resetButton.onClick.AddListener(Reset);
            Button helpButton = GameObject.Find("HelpButton").GetComponent <Button>();
            helpButton.onClick.RemoveAllListeners();
            helpButton.onClick.AddListener(HelpMenu);
            Button returnButton = GameObject.Find("ReturnButton").GetComponent <Button>();
            returnButton.onClick.RemoveAllListeners();
            returnButton.onClick.AddListener(ReturnToMainState);
            Button closeHelp = Auxiliary.FindObject(helpMenu, "CloseHelpButton").GetComponent <Button>();
            closeHelp.onClick.RemoveAllListeners();
            closeHelp.onClick.AddListener(CloseHelpMenu);
        }
Пример #6
0
 /// <summary>
 /// Method for "Add/Configure Sensor" button. End configuration ends all window related to sensor addition/configuration
 /// </summary>
 public void ToggleSensorOption()
 {
     isChoosingOption = !isChoosingOption;
     sensorOptionPanel.SetActive(isChoosingOption);
     if (isChoosingOption)
     {
         preConfigState = dynamicCamera.cameraState;
         dynamicCamera.SwitchCameraState(new DynamicCamera.ConfigurationState(dynamicCamera));
         configureSensorButton.GetComponentInChildren <Text>().text = "End Configuration";
     }
     else
     {
         configureSensorButton.GetComponentInChildren <Text>().text = "Add/Configure Sensor";
         EndProcesses();
     }
 }
Пример #7
0
        /// <summary>
        /// End the reset process and puts the robot back down
        /// </summary>
        public void EndReset()
        {
            IsResetting = false;

            EndRobotReset();

            if (lastCameraState != null)
            {
                DynamicCamera dynamicCamera = UnityEngine.Camera.main.transform.GetComponent <DynamicCamera>();
                dynamicCamera.SwitchCameraState(lastCameraState);
                lastCameraState = null;
            }

            OnEndReset();

            Destroy(resetMoveArrows);
            resetMoveArrows = null;

            foreach (Tracker t in GetComponentsInChildren <Tracker>())
            {
                t.Clear();
            }

            InputControl.freeze = false;
            canvas.GetComponent <Canvas>().enabled = true;
            resetCanvas.SetActive(false);

            SimUI.getSimUI().CloseNavigationTooltip();
        }
Пример #8
0
        /// <summary>
        /// Toggles between different dynamic camera states
        /// </summary>
        /// <param name="mode"></param>
        public void OnCameraDropdownValueChanged(int mode)
        {
            AnalyticsManager.GlobalInstance.LogEventAsync(AnalyticsLedger.EventCatagory.CameraView,
                                                          AnalyticsLedger.EventAction.Clicked,
                                                          "View - Camera Dropdown",
                                                          AnalyticsLedger.getMilliseconds().ToString());

            DynamicCamera.ControlEnabled = true;
            switch (mode)
            {
            case 0:
                camera.SwitchCameraState(new DynamicCamera.DriverStationState(camera));

                AnalyticsManager.GlobalInstance.LogEventAsync(AnalyticsLedger.EventCatagory.CameraView,
                                                              AnalyticsLedger.EventAction.Changed,
                                                              "View - Driver Station",
                                                              AnalyticsLedger.getMilliseconds().ToString());
                break;

            case 1:
                camera.SwitchCameraState(new DynamicCamera.OrbitState(camera));

                AnalyticsManager.GlobalInstance.LogEventAsync(AnalyticsLedger.EventCatagory.CameraView,
                                                              AnalyticsLedger.EventAction.Changed,
                                                              "View - Orbit",
                                                              AnalyticsLedger.getMilliseconds().ToString());
                break;

            case 2:
                camera.SwitchCameraState(new DynamicCamera.FreeroamState(camera));

                AnalyticsManager.GlobalInstance.LogEventAsync(AnalyticsLedger.EventCatagory.CameraView,
                                                              AnalyticsLedger.EventAction.Changed,
                                                              "View - Freeroam",
                                                              AnalyticsLedger.getMilliseconds().ToString());
                break;

            case 3:
                camera.SwitchCameraState(new DynamicCamera.OverviewState(camera));

                AnalyticsManager.GlobalInstance.LogEventAsync(AnalyticsLedger.EventCatagory.CameraView,
                                                              AnalyticsLedger.EventAction.Changed,
                                                              "View - Overview",
                                                              AnalyticsLedger.getMilliseconds().ToString());
                break;
            }
        }
Пример #9
0
        private void ReturnToMainState()
        {
            DynamicCamera dynamicCamera = UnityEngine.Camera.main.transform.GetComponent <DynamicCamera>();

            dynamicCamera.SwitchCameraState(lastCameraState);
            GameObject.Destroy(moveArrows);
            StateMachine.PopState();
        }
Пример #10
0
 /// <summary>
 /// Method for "Add/Configure Sensor" button. End configuration ends all window related to sensor addition/configuration
 /// </summary>
 public void ToggleSensorOption()
 {
     //Deal with UI conflicts between robot camera & sensors
     robotCameraGUI.EndProcesses();
     toolkit.EndProcesses(true);
     isChoosingOption = !isChoosingOption;
     if (isChoosingOption)
     {
         preConfigState = dynamicCamera.ActiveState;
         dynamicCamera.SwitchCameraState(new DynamicCamera.ConfigurationState(dynamicCamera));
         ShowAllSensors();
     }
     else
     {
         EndProcesses();
     }
 }
        private void ReturnToMainState()
        {
            if (helpMenu.activeSelf)
            {
                CloseHelpMenu();
            }
            DynamicCamera dynamicCamera = UnityEngine.Camera.main.transform.GetComponent <DynamicCamera>();

            dynamicCamera.SwitchCameraState(lastCameraState);
            GameObject.Destroy(spawnIndicator);
            StateMachine.PopState();
        }
Пример #12
0
 public void FinishGamepieceSpawn()
 {
     settingSpawn = 0;
     if (spawnIndicator != null)
     {
         Destroy(spawnIndicator);
     }
     if (lastCameraState != null)
     {
         DynamicCamera dynamicCamera = Camera.main.transform.GetComponent <DynamicCamera>();
         dynamicCamera.SwitchCameraState(lastCameraState);
         lastCameraState = null;
     }
     //MainState.ControlsDisabled = false;
 }
Пример #13
0
    public void StartGamepieceSpawn(int index)
    {
        if (definingRelease || definingIntake || addingGamepiece)
        {
            Debug.Log("User Error");                                                       //Message Manager already dispatches error message to user
        }
        else if (settingSpawn == 0)
        {
            if (GameObject.Find(gamepieceNames[index]) != null)
            {
                if (spawnIndicator != null)
                {
                    Destroy(spawnIndicator);
                }
                if (spawnIndicator == null)
                {
                    spawnIndicator      = Instantiate(AuxFunctions.FindObject(gamepieceNames[index]).GetComponentInParent <BRigidBody>().gameObject, new UnityEngine.Vector3(0, 3, 0), UnityEngine.Quaternion.identity);
                    spawnIndicator.name = "SpawnIndicator";
                    Destroy(spawnIndicator.GetComponent <BRigidBody>());
                    if (spawnIndicator.transform.GetChild(0) != null)
                    {
                        spawnIndicator.transform.GetChild(0).name = "SpawnIndicatorMesh";
                    }
                    Renderer render = spawnIndicator.GetComponentInChildren <Renderer>();
                    render.material.shader = Shader.Find("Transparent/Diffuse");
                    Color newColor = render.material.color;
                    newColor.a            = 0.6f;
                    render.material.color = newColor;
                }
                spawnIndicator.transform.position = gamepieceSpawn[index];
                settingSpawn = index + 1;

                DynamicCamera dynamicCamera = Camera.main.transform.GetComponent <DynamicCamera>();
                lastCameraState = dynamicCamera.cameraState;
                dynamicCamera.SwitchCameraState(new DynamicCamera.SateliteState(dynamicCamera));

                //MainState.ControlsDisabled = true;
            }
            else
            {
                UserMessageManager.Dispatch("You must define the gamepiece first!", 5f);
            }
        }
        else
        {
            FinishGamepieceSpawn();  //if already setting spawn, end editing process
        }
    }
Пример #14
0
 /// <summary>
 /// Activate the configure camera panel and start position configuration (which is the main configuration state for robot camera)
 /// </summary>
 public void ToggleCameraConfiguration()
 {
     robotCameraManager.ChangingCameraPosition = !robotCameraManager.ChangingCameraPosition;
     configureCameraPanel.SetActive(robotCameraManager.ChangingCameraPosition);
     if (robotCameraManager.ChangingCameraPosition)
     {
         preConfigCamState = dynamicCamera.ActiveState;
         dynamicCamera.SwitchCameraState(new DynamicCamera.ConfigurationState(dynamicCamera, robotCameraManager.CurrentCamera));
     }
     else
     {
         configureRobotCameraButton.GetComponentInChildren <Text>().text = "Configure";
         ResetConfigurationWindow();
         dynamicCamera.SwitchToState(preConfigCamState);
     }
 }
Пример #15
0
 /// <summary>
 /// Activate the configure camera panel and start position configuration
 /// </summary>
 public void ConfigureCameraPosition()
 {
     robotCamera.ChangingCameraPosition = !robotCamera.ChangingCameraPosition;
     configureCameraPanel.SetActive(robotCamera.ChangingCameraPosition);
     if (robotCamera.ChangingCameraPosition)
     {
         preConfigCamState = dynamicCamera.cameraState;
         dynamicCamera.SwitchCameraState(new DynamicCamera.ConfigurationState(dynamicCamera, robotCamera.CurrentCamera));
         //Update the node where current camera is attached to
         cameraNodeText.text = "Current Node: " + robotCamera.CurrentCamera.transform.parent.gameObject.name;
         configureRobotCameraButton.GetComponentInChildren <Text>().text = "End Configuration";
     }
     else
     {
         configureRobotCameraButton.GetComponentInChildren <Text>().text = "Configure Robot Camera";
         dynamicCamera.SwitchToState(preConfigCamState);
     }
 }
Пример #16
0
        /// <summary>
        /// End the reset process and puts the robot back down
        /// </summary>
        public void EndReset()
        {
            IsResetting = false;

            foreach (RigidNode n in RootNode.ListAllNodes())
            {
                BRigidBody br = n.MainObject.GetComponent <BRigidBody>();

                if (br == null)
                {
                    continue;
                }

                RigidBody r = (RigidBody)br.GetCollisionObject();

                r.LinearFactor = r.AngularFactor = BulletSharp.Math.Vector3.One;
            }

            if (lastCameraState != null)
            {
                DynamicCamera dynamicCamera = UnityEngine.Camera.main.transform.GetComponent <DynamicCamera>();
                dynamicCamera.SwitchCameraState(lastCameraState);
                lastCameraState = null;
            }

            OnEndReset();

            Destroy(resetMoveArrows);
            resetMoveArrows = null;

            foreach (Tracker t in GetComponentsInChildren <Tracker>())
            {
                t.Clear();
            }

            if (helpMenu.activeSelf)
            {
                CloseHelpMenu();
            }
            InputControl.freeze = false;
            canvas.GetComponent <Canvas>().enabled = true;
            resetCanvas.SetActive(false);
        }
Пример #17
0
        // Use this for initialization
        public override void Start()
        {
            #region init
            ui       = GameObject.Find("ResetSensorSpawnpointUI");
            helpMenu = Auxiliary.FindObject(ui, "Help");
            toolbar  = Auxiliary.FindObject(ui, "ResetStateToolbar");
            overlay  = Auxiliary.FindObject(ui, "Overlay");
            #endregion

            moveArrows                         = GameObject.Instantiate(Resources.Load <GameObject>("Prefabs\\MoveArrows"));
            moveArrows.name                    = "IndicatorMoveArrows";
            moveArrows.transform.parent        = sensor.transform;
            moveArrows.transform.rotation      = sensor.transform.rotation;
            moveArrows.transform.localPosition = UnityEngine.Vector3.zero;

            moveArrows.GetComponent <MoveArrows>().Translate = (translation) =>
                                                               sensor.transform.Translate(translation, Space.World);

            StateMachine.SceneGlobal.Link <SensorSpawnState>(moveArrows);

            DynamicCamera dynamicCamera = UnityEngine.Camera.main.transform.GetComponent <DynamicCamera>();
            lastCameraState = dynamicCamera.ActiveState;

            dynamicCamera.SwitchCameraState(new DynamicCamera.ConfigurationState(dynamicCamera, sensor));

            Button resetButton = GameObject.Find("ResetButton").GetComponent <Button>();
            resetButton.onClick.RemoveAllListeners();
            resetButton.onClick.AddListener(ResetSpawn);
            Button helpButton = GameObject.Find("HelpButton").GetComponent <Button>();
            helpButton.onClick.RemoveAllListeners();
            helpButton.onClick.AddListener(HelpMenu);
            Button returnButton = GameObject.Find("ReturnButton").GetComponent <Button>();
            returnButton.onClick.RemoveAllListeners();
            returnButton.onClick.AddListener(ReturnToMainState);
            Button closeHelp = Auxiliary.FindObject(helpMenu, "CloseHelpButton").GetComponent <Button>();
            closeHelp.onClick.RemoveAllListeners();
            closeHelp.onClick.AddListener(CloseHelpMenu);
        }
Пример #18
0
        // Use this for initialization
        public override void Start()
        {
            //create indicator
            if (goalIndicator != null)
            {
                GameObject.Destroy(goalIndicator);
            }
            if (goalIndicator == null)
            {
                goalIndicator      = GameObject.CreatePrimitive(PrimitiveType.Cube); // Create cube to show goal region
                goalIndicator.name = "GoalIndicator";
                Renderer render = goalIndicator.GetComponentInChildren <Renderer>();
                render.material.shader = Shader.Find("Transparent/Diffuse");
                Color newColor = new Color(0, 0.88f, 0, 0.6f);
                render.material.color = newColor;
            }

            GameObject goal = color.Equals("Red") ? gm.redGoals[gamepieceIndex][goalIndex] : gm.blueGoals[gamepieceIndex][goalIndex];

            goalIndicator.transform.position    = goal.GetComponent <Goal>().position;
            goalIndicator.transform.eulerAngles = goal.GetComponent <Goal>().rotation;
            goalIndicator.transform.localScale  = goal.GetComponent <Goal>().scale;

            settingGamepieceGoalVertical = false;

            //move arrow attachment
            GameObject moveArrows = GameObject.Instantiate(Resources.Load <GameObject>("Prefabs\\MoveArrows"));

            moveArrows.name                    = "IndicatorMoveArrows";
            moveArrows.transform.parent        = goalIndicator.transform;
            moveArrows.transform.localPosition = UnityEngine.Vector3.zero;

            if (move)
            {
                moveArrows.GetComponent <MoveArrows>().Translate = (translation) => goalIndicator.transform.Translate(translation, Space.World);
            }
            else
            {
                moveArrows.GetComponent <MoveArrows>().Translate = (translation) => goalIndicator.transform.localScale += translation;
            }

            StateMachine.SceneGlobal.Link <GoalState>(moveArrows);

            //camera stuff
            DynamicCamera dynamicCamera = UnityEngine.Camera.main.transform.GetComponent <DynamicCamera>();

            lastCameraState = dynamicCamera.ActiveState;
            dynamicCamera.SwitchCameraState(new DynamicCamera.ConfigurationState(dynamicCamera, goalIndicator));

            //UI callbacks
            Button resetButton = GameObject.Find("ResetButton").GetComponent <Button>();

            resetButton.onClick.RemoveAllListeners();
            resetButton.onClick.AddListener(Reset);
            Button returnButton = GameObject.Find("ReturnButton").GetComponent <Button>();

            returnButton.onClick.RemoveAllListeners();
            returnButton.onClick.AddListener(ReturnToMainState);

            if (move)
            {
                SimUI.getSimUI().OpenNavigationTooltip();
            }
        }
Пример #19
0
    void OnGUI()
    {
        // Draws stats window on to GUI
        if (showStatWindow)
        {
            GUI.Window(0, statsWindowRect, StatsWindow, "Stats");
        }

        // Draws help window on to GUI
        if (showHelpWindow)
        {
            int   windowWidth  = 900;
            int   windowHeight = 450;
            float paddingX     = (Screen.width - windowWidth) / 2.0f;
            float paddingY     = (Screen.height - windowHeight) / 2.0f;
            helpWindowRect = new Rect(paddingX, paddingY, windowWidth, windowHeight);
            GUI.Window(0, helpWindowRect, HelpWindow, "Help");
        }

        if (gui == null)
        {
            gui = new GUIController();
            gui.hideGuiCallback = HideGuiSidebar;
            gui.showGuiCallback = ShowGuiSidebar;

            gui.AddWindow("Load Robot", new FileBrowser("Load Robot"), (object o) =>
            {
                string fileLocation = (string)o;
                // If dir was selected...
                if (File.Exists(fileLocation + "\\skeleton.bxdj"))
                {
                    fileLocation += "\\skeleton.bxdj";
                }
                DirectoryInfo parent = Directory.GetParent(fileLocation);
                if (parent != null && parent.Exists && File.Exists(parent.FullName + "\\skeleton.bxdj"))
                {
                    this.filePath       = parent.FullName + "\\";
                    reloadRobotInFrames = 2;
                }
                else
                {
                    UserMessageManager.Dispatch("Invalid selection!", 10f);
                }

                dynamicCamera.EnableMoving();
            });

            gui.AddAction("Reset Robot", () =>
            {
                resetRobot();
            });
            //shows button to manually orient the robot
            ShowOrient();

            if (!File.Exists(filePath + "\\skeleton.bxdj"))
            {
                gui.DoAction("Load Model");
            }

            gui.AddWindow("Switch View", new DialogWindow("Switch View",
                                                          "Driver Station [D]", "Orbit Robot [R]", "Freeroam [F]"), (object o) =>
            {
                HideGuiSidebar();

                switch ((int)o)
                {
                case 0:
                    dynamicCamera.SwitchCameraState(new DynamicCamera.DriverStationState(dynamicCamera));
                    break;

                case 1:
                    dynamicCamera.SwitchCameraState(new DynamicCamera.OrbitState(dynamicCamera));
                    dynamicCamera.EnableMoving();
                    break;

                case 2:
                    dynamicCamera.SwitchCameraState(new DynamicCamera.FreeroamState(dynamicCamera));
                    break;

                default:
                    Debug.Log("Camera state not found: " + (string)o);
                    break;
                }
            });


            gui.AddWindow("Quit Simulation", new DialogWindow("Exit?", "Yes", "No"), (object o) =>
            {
                if ((int)o == 0)
                {
                    Application.Quit();
                }
            });
        }

        if (Input.GetMouseButtonUp(0) && !gui.ClickedInsideWindow())
        {
            HideGuiSidebar();
            gui.HideAllWindows();
        }

        if (fieldBrowser == null)
        {
            fieldBrowser             = new FileBrowser("Load Field", false);
            fieldBrowser.Active      = true;
            fieldBrowser.OnComplete += (object obj) =>
            {
                fieldBrowser.Active = true;
                string fileLocation = (string)obj;
                // If dir was selected...
                if (File.Exists(fileLocation + "\\definition.bxdf"))
                {
                    fileLocation += "\\definition.bxdf";
                }
                DirectoryInfo parent = Directory.GetParent(fileLocation);
                if (parent != null && parent.Exists && File.Exists(parent.FullName + "\\definition.bxdf"))
                {
                    this.filePath       = parent.FullName + "\\";
                    fieldBrowser.Active = false;
                    reloadFieldInFrames = 2;
                }
                else
                {
                    UserMessageManager.Dispatch("Invalid selection!", 10f);
                }
            };
        }

        if (showHelpWindow && Input.GetMouseButtonUp(0) && !auxFunctions.MouseInWindow(helpWindowRect) && !auxFunctions.MouseInWindow(helpButtonRect))
        {
            showHelpWindow = false;
        }

        gui.guiBackgroundVisible = showHelpWindow;

        if (!fieldLoaded)
        {
            fieldBrowser.Render();
        }

        else
        {
            // The Menu button on the top left corner
            GUI.Window(1, new Rect(0, 0, gui.GetSidebarWidth(), 25),
                       (int windowID) =>
            {
                if (GUI.Button(new Rect(0, 0, gui.GetSidebarWidth(), 25), "Menu"))
                {
                    gui.EscPressed();
                }
            },
                       ""
                       );

            helpButtonRect = new Rect(Screen.width - 25, 0, 25, 25);

            // The Help button on top right corner
            GUI.Window(2, helpButtonRect,
                       (int windowID) =>
            {
                if (GUI.Button(new Rect(0, 0, 25, 25), helpButtonContent))
                {
                    showHelpWindow = !showHelpWindow;
                }
            },
                       ""
                       );

            gui.Render();
        }

        UserMessageManager.Render();

        if (reloadRobotInFrames >= 0 || reloadFieldInFrames >= 0)
        {
            GUI.backgroundColor = new Color(1, 1, 1, 0.5f);
            GUI.Box(new Rect(Screen.width / 2 - 100, Screen.height / 2 - 25, 200, 50), "Loading... Please Wait", gui.BlackBoxStyle);
        }
    }
Пример #20
0
 /// <summary>
 /// Change to driver station view to the opposite side
 /// </summary>
 public void ToggleDriverStation()
 {
     oppositeSide = !oppositeSide;
     camera.SwitchCameraState(new DynamicCamera.DriverStationState(camera, oppositeSide));
 }
Пример #21
0
    void OnGUI()
    {
        //Custom style for windows
        menuWindow = new GUIStyle(GUI.skin.window);
        menuWindow.normal.background   = transparentWindowTexture;
        menuWindow.onNormal.background = transparentWindowTexture;
        menuWindow.font = russoOne;

        //Custom style for buttons
        menuButton      = new GUIStyle(GUI.skin.button);
        menuButton.font = russoOne;
        menuButton.normal.background   = buttonTexture;
        menuButton.hover.background    = buttonSelected;
        menuButton.active.background   = buttonSelected;
        menuButton.onNormal.background = buttonSelected;
        menuButton.onHover.background  = buttonSelected;
        menuButton.onActive.background = buttonSelected;

        // Draws stats window on to GUI
        if (showStatWindow)
        {
            GUI.Window(0, statsWindowRect, StatsWindow, "Stats", statsWindow);
        }

        if (gui == null)
        {
            gui = new GUIController();
            gui.hideGuiCallback = HideGuiSidebar;
            gui.showGuiCallback = ShowGuiSidebar;

            gui.AddWindow("Load Robot", new FileBrowser("Load Robot"), (object o) =>
            {
                string fileLocation = (string)o;
                // If dir was selected...
                if (File.Exists(fileLocation + "\\skeleton.bxdj"))
                {
                    fileLocation += "\\skeleton.bxdj";
                }
                DirectoryInfo parent = Directory.GetParent(fileLocation);
                if (parent != null && parent.Exists && File.Exists(parent.FullName + "\\skeleton.bxdj"))
                {
                    this.filePath       = parent.FullName + "\\";
                    reloadRobotInFrames = 2;
                }
                else
                {
                    UserMessageManager.Dispatch("Invalid selection!", 10f);
                }

                dynamicCamera.EnableMoving();
            });

            gui.AddAction("Reset Robot", () =>
            {
                resetRobot();
            });
            //shows button to manually orient the robot
            ShowOrient();

            if (!File.Exists(filePath + "\\skeleton.bxdj"))
            {
                gui.DoAction("Load Model");
            }

            gui.AddWindow("Switch View", new DialogWindow("Switch View",
                                                          "Driver Station", "Orbit Robot", "Freeroam"), (object o) =>
            {
                HideGuiSidebar();

                switch ((int)o)
                {
                case 0:
                    dynamicCamera.SwitchCameraState(new DynamicCamera.DriverStationState(dynamicCamera));
                    break;

                case 1:
                    dynamicCamera.SwitchCameraState(new DynamicCamera.OrbitState(dynamicCamera));
                    dynamicCamera.EnableMoving();
                    break;

                case 2:
                    dynamicCamera.SwitchCameraState(new DynamicCamera.FreeroamState(dynamicCamera));
                    break;

                default:
                    Debug.Log("Camera state not found: " + (string)o);
                    break;
                }
            });

            gui.AddWindow("Quit to Main Menu", new DialogWindow("Quit to Main Menu?", "Yes", "No"), (object o) =>
            {
                if ((int)o == 0)
                {
                    Application.LoadLevel("MainMenu");
                }
            });

            gui.AddWindow("Quit to Desktop", new DialogWindow("Quit to Desktop?", "Yes", "No"), (object o) =>
            {
                if ((int)o == 0)
                {
                    Application.Quit();
                }
            });
        }

        if (Input.GetMouseButtonUp(0) && !gui.ClickedInsideWindow())
        {
            HideGuiSidebar();
            gui.HideAllWindows();
        }

        if (fieldBrowser == null)
        {
            fieldBrowser             = new FileBrowser("Load Field", false);
            fieldBrowser.Active      = false;
            fieldBrowser.OnComplete += (object obj) =>
            {
                fieldBrowser.Active = false;
                string fileLocation = (string)obj;
                // If dir was selected...
                if (File.Exists(fileLocation + "\\definition.bxdf"))
                {
                    fileLocation += "\\definition.bxdf";
                }
                DirectoryInfo parent = Directory.GetParent(fileLocation);
                if (parent != null && parent.Exists && File.Exists(parent.FullName + "\\definition.bxdf"))
                {
                    this.filePath       = parent.FullName + "\\";
                    fieldBrowser.Active = false;
                    reloadFieldInFrames = 2;
                }
                else
                {
                    UserMessageManager.Dispatch("Invalid selection!", 10f);
                }
            };
        }

        if (!fieldLoaded)
        {
            fieldBrowser.Render();
        }

        else
        {
            // The Menu button on the top left corner
            GUI.Window(1, new Rect(0, 0, gui.GetSidebarWidth(), 25),
                       (int windowID) =>
            {
                if (GUI.Button(new Rect(0, 0, gui.GetSidebarWidth(), 25), "Menu", menuButton))
                {
                    gui.EscPressed();
                }
            },
                       "",
                       menuWindow
                       );

            gui.Render();
        }

        UserMessageManager.Render();

        if (reloadRobotInFrames >= 0 || reloadFieldInFrames >= 0)
        {
            GUI.backgroundColor = new Color(1, 1, 1, 0.5f);
            GUI.Box(new Rect(Screen.width / 2 - 100, Screen.height / 2 - 25, 200, 25), "Loading... Please Wait", gui.BlackBoxStyle);
        }
    }
Пример #22
0
        /// <summary>
        /// Return the robot to robotStartPosition and destroy extra game pieces
        /// </summary>
        /// <param name="resetTransform"></param>
        public void BeginReset()
        {
            //GetDriverPractice().DestroyAllGamepieces();

            InputControl.freeze = true;
            if (canvas == null)
            {
                canvas = GameObject.Find("Main Camera").transform.GetChild(0).gameObject;
            }
            if (resetCanvas == null)
            {
                resetCanvas = GameObject.Find("Main Camera").transform.GetChild(1).gameObject;
            }
            canvas.GetComponent <Canvas>().enabled = false;
            resetCanvas.SetActive(true);

            #region init
            if (helpMenu == null)
            {
                helpMenu = Auxiliary.FindObject(resetCanvas, "Help");
            }
            if (toolbar == null)
            {
                toolbar = Auxiliary.FindObject(resetCanvas, "ResetStateToolbar");
            }
            if (overlay == null)
            {
                overlay = Auxiliary.FindObject(resetCanvas, "Overlay");
            }
            if (helpBodyText == null)
            {
                helpBodyText = Auxiliary.FindObject(resetCanvas, "BodyText").GetComponent <Text>();
            }
            #endregion

            Button resetButton = Auxiliary.FindObject(resetCanvas, "ResetButton").GetComponent <Button>();
            resetButton.onClick.RemoveAllListeners();
            resetButton.onClick.AddListener(BeginRevertSpawnpoint);
            Button helpButton = Auxiliary.FindObject(resetCanvas, "HelpButton").GetComponent <Button>();
            helpButton.onClick.RemoveAllListeners();
            helpButton.onClick.AddListener(HelpMenu);
            Button returnButton = Auxiliary.FindObject(resetCanvas, "ReturnButton").GetComponent <Button>();
            returnButton.onClick.RemoveAllListeners();
            returnButton.onClick.AddListener(EndReset);
            Button closeHelp = Auxiliary.FindObject(helpMenu, "CloseHelpButton").GetComponent <Button>();
            closeHelp.onClick.RemoveAllListeners();
            closeHelp.onClick.AddListener(CloseHelpMenu);

            DynamicCamera dynamicCamera = UnityEngine.Camera.main.transform.GetComponent <DynamicCamera>();
            lastCameraState = dynamicCamera.ActiveState;
            dynamicCamera.SwitchCameraState(new DynamicCamera.OrbitState(dynamicCamera));

            foreach (SimulatorRobot robot in state.SpawnedRobots)
            {
                foreach (BRigidBody rb in robot.GetComponentsInChildren <BRigidBody>())
                {
                    if (rb != null && !rb.GetCollisionObject().IsActive)
                    {
                        rb.GetCollisionObject().Activate();
                    }
                }
            }

            if (!state.DynamicCameraObject.GetComponent <DynamicCamera>().ActiveState.GetType().Equals(typeof(DynamicCamera.ConfigurationState)))
            {
                IsResetting = true;

                foreach (RigidNode n in RootNode.ListAllNodes())
                {
                    BRigidBody br = n.MainObject.GetComponent <BRigidBody>();

                    if (br == null)
                    {
                        continue;
                    }

                    RigidBody r = (RigidBody)br.GetCollisionObject();

                    r.LinearVelocity = r.AngularVelocity = BulletSharp.Math.Vector3.Zero;
                    r.LinearFactor   = r.AngularFactor = BulletSharp.Math.Vector3.Zero;

                    BulletSharp.Math.Matrix newTransform = r.WorldTransform;
                    newTransform.Origin = (robotStartPosition + n.ComOffset).ToBullet();
                    newTransform.Basis  = BulletSharp.Math.Matrix.Identity;
                    r.WorldTransform    = newTransform;
                }

                OnBeginReset();

                //Where "save orientation" works
                RotateRobot(robotStartOrientation);

                AttachMoveArrows();
            }
            else
            {
                UserMessageManager.Dispatch("Please don't reset robot during configuration!", 5f);
            }
        }
        // Use this for initialization
        public override void Start()
        {
            #region init
            ui       = GameObject.Find("ResetGamepieceSpawnpointUI");
            helpMenu = Auxiliary.FindObject(ui, "Help");
            toolbar  = Auxiliary.FindObject(ui, "ResetStateToolbar");
            overlay  = Auxiliary.FindObject(ui, "Overlay");
            #endregion

            Gamepiece gamepiece = FieldDataHandler.gamepieces[gamepieceIndex];
            //gamepiece indicator
            if (spawnIndicator != null)
            {
                GameObject.Destroy(spawnIndicator);
            }
            if (spawnIndicator == null)
            {
                spawnIndicator = GameObject.Instantiate(Auxiliary.FindGameObject(gamepiece.name), new UnityEngine.Vector3(0, 3, 0), UnityEngine.Quaternion.identity);
                spawnIndicator.SetActive(true);
                spawnIndicator.name = "SpawnIndicator";
                GameObject.Destroy(spawnIndicator.GetComponent <BRigidBody>());
                GameObject.Destroy(spawnIndicator.GetComponent <BCollisionShape>());
                GameObject.Destroy(spawnIndicator.GetComponent <Tracker>());
                if (spawnIndicator.transform.GetChild(0) != null)
                {
                    spawnIndicator.transform.GetChild(0).name = "SpawnIndicatorMesh";
                }
                Renderer render = spawnIndicator.GetComponentInChildren <Renderer>();
                render.material.shader = Shader.Find("Transparent/Diffuse");
                Color newColor = render.material.color;
                newColor.a            = 0.6f;
                render.material.color = newColor;
            }
            spawnIndicator.transform.position = gamepiece.spawnpoint;

            //move arrow attachment
            GameObject moveArrows = GameObject.Instantiate(Resources.Load <GameObject>("Prefabs\\MoveArrows"));
            moveArrows.name                    = "IndicatorMoveArrows";
            moveArrows.transform.parent        = spawnIndicator.transform;
            moveArrows.transform.localPosition = UnityEngine.Vector3.zero;

            //IMPORTANT
            moveArrows.GetComponent <MoveArrows>().Translate = (translation) =>
                                                               spawnIndicator.transform.Translate(translation, Space.World);

            StateMachine.SceneGlobal.Link <GamepieceSpawnState>(moveArrows);

            //camera stuff
            DynamicCamera dynamicCamera = UnityEngine.Camera.main.transform.GetComponent <DynamicCamera>();
            lastCameraState = dynamicCamera.ActiveState;
            dynamicCamera.SwitchCameraState(new DynamicCamera.ConfigurationState(dynamicCamera, spawnIndicator));

            //help menu
            Button resetButton = GameObject.Find("ResetButton").GetComponent <Button>();
            resetButton.onClick.RemoveAllListeners();
            resetButton.onClick.AddListener(ResetSpawn);
            Button helpButton = GameObject.Find("HelpButton").GetComponent <Button>();
            helpButton.onClick.RemoveAllListeners();
            helpButton.onClick.AddListener(HelpMenu);
            Button returnButton = GameObject.Find("ReturnButton").GetComponent <Button>();
            returnButton.onClick.RemoveAllListeners();
            returnButton.onClick.AddListener(ReturnToMainState);
            Button closeHelp = Auxiliary.FindObject(helpMenu, "CloseHelpButton").GetComponent <Button>();
            closeHelp.onClick.RemoveAllListeners();
            closeHelp.onClick.AddListener(CloseHelpMenu);
        }
Пример #24
0
 //Camera Functions
 public void SwitchCameraFreeroam()
 {
     camera.SwitchCameraState(0);
 }
Пример #25
0
        /// <summary>
        /// Return the robot to robotStartPosition and destroy extra game pieces
        /// </summary>
        /// <param name="resetTransform"></param>
        public void BeginReset()
        {
            //GetDriverPractice().DestroyAllGamepieces();

            InputControl.freeze = true;
            if (canvas == null)
            {
                canvas = GameObject.Find("Canvas");
            }
            if (resetCanvas == null)
            {
                resetCanvas = Auxiliary.FindObject(UnityEngine.Camera.main.gameObject, "ResetRobotSpawnpointUI");
            }
            canvas.GetComponent <Canvas>().enabled = false;
            resetCanvas.SetActive(true);

            #region init
            if (toolbar == null)
            {
                toolbar = Auxiliary.FindObject(resetCanvas, "ResetStateToolbar");
            }
            #endregion

            Button resetButton = Auxiliary.FindObject(resetCanvas, "ResetButton").GetComponent <Button>();
            resetButton.onClick.RemoveAllListeners();
            resetButton.onClick.AddListener(BeginRevertSpawnpoint);
            Button returnButton = Auxiliary.FindObject(resetCanvas, "ReturnButton").GetComponent <Button>();
            returnButton.onClick.RemoveAllListeners();
            returnButton.onClick.AddListener(EndReset);

            DynamicCamera dynamicCamera = UnityEngine.Camera.main.transform.GetComponent <DynamicCamera>();
            lastCameraState = dynamicCamera.ActiveState;
            dynamicCamera.SwitchCameraState(new DynamicCamera.OrbitState(dynamicCamera));

            foreach (SimulatorRobot robot in state.SpawnedRobots)
            {
                foreach (BRigidBody rb in robot.GetComponentsInChildren <BRigidBody>())
                {
                    if (rb != null && !rb.GetCollisionObject().IsActive)
                    {
                        rb.GetCollisionObject().Activate();
                    }
                }
            }

            if (!state.DynamicCameraObject.GetComponent <DynamicCamera>().ActiveState.GetType().Equals(typeof(DynamicCamera.ConfigurationState)))
            {
                IsResetting = true;

                BeginRobotReset();
                OnBeginReset();

                //Where "save orientation" works
                RotateRobot(robotStartOrientation);

                AttachMoveArrows();
            }
            else
            {
                UserMessageManager.Dispatch("Please don't reset robot during configuration!", 5f);
            }

            SimUI.getSimUI().OpenNavigationTooltip();
        }