Example #1
0
        private void Awake()
        {
            _remote = GameObject.Find("RaiSimUnity").GetComponent <RsUnityRemote>();
            _camera = GameObject.Find("Main Camera").GetComponent <CameraController>();

            if (_remote == null)
            {
                // TODO exception
            }

            if (_camera == null)
            {
                // TODO exception
            }

            // modal view
            {
                var modal    = GameObject.Find(_ErrorModalViewName).GetComponent <Canvas>();
                var okButton = modal.GetComponentInChildren <Button>();
                okButton.onClick.AddListener(() => { modal.enabled = false; });
            }

            // visualize section
            {
                var toggleVisual = GameObject.Find(_ToggleVisualBodiesName).GetComponent <Toggle>();
                toggleVisual.onValueChanged.AddListener((isSelected) =>
                {
                    _remote.ShowVisualBody = isSelected;
                    _remote.ShowOrHideObjects();
                });
                var toggleCollision = GameObject.Find(_ToggleCollisionBodiesName).GetComponent <Toggle>();
                toggleCollision.onValueChanged.AddListener((isSelected) =>
                {
                    _remote.ShowCollisionBody = isSelected;
                    _remote.ShowOrHideObjects();
                });


                var sliderContactPoints = GameObject.Find(_SliderContactPointsName).GetComponent <Slider>();
                sliderContactPoints.onValueChanged.AddListener((value) => { _remote.ContactPointMarkerScale = value; });
                var toggleContactPoints = GameObject.Find(_ToggleContactPointsName).GetComponent <Toggle>();
                toggleContactPoints.onValueChanged.AddListener((isSelected) =>
                {
                    _remote.ShowContactPoints = isSelected;
                    _remote.ShowOrHideObjects();

                    if (isSelected)
                    {
                        sliderContactPoints.interactable = true;
                    }
                    else
                    {
                        sliderContactPoints.interactable = false;
                    }
                });

                var sliderContactForces = GameObject.Find(_SliderContactForcesName).GetComponent <Slider>();
                sliderContactForces.onValueChanged.AddListener((value) => { _remote.ContactForceMarkerScale = value; });
                var toggleContactForces = GameObject.Find(_ToggleContactForcesName).GetComponent <Toggle>();
                toggleContactForces.onValueChanged.AddListener((isSelected) =>
                {
                    _remote.ShowContactForces = isSelected;
                    _remote.ShowOrHideObjects();

                    if (isSelected)
                    {
                        sliderContactForces.interactable = true;
                    }
                    else
                    {
                        sliderContactForces.interactable = false;
                    }
                });

                var sliderBodyFrames = GameObject.Find(_SliderBodyFramesName).GetComponent <Slider>();
                sliderBodyFrames.onValueChanged.AddListener((value) => { _remote.BodyFrameMarkerScale = value; });
                var toggleBodyFrames = GameObject.Find(_ToggleBodyFramesName).GetComponent <Toggle>();
                toggleBodyFrames.onValueChanged.AddListener((isSelected) =>
                {
                    _remote.ShowBodyFrames = isSelected;
                    _remote.ShowOrHideObjects();

                    if (isSelected)
                    {
                        sliderBodyFrames.interactable = true;
                    }
                    else
                    {
                        sliderBodyFrames.interactable = false;
                    }
                });
            }

            // connection section
            {
                var ipInputField = GameObject.Find(_InputFieldTcpName).GetComponent <InputField>();
                ipInputField.text = _remote.TcpAddress;
                var portInputField = GameObject.Find(_InputFieldPortName).GetComponent <InputField>();
                portInputField.text = _remote.TcpPort.ToString();
                var connectButton = GameObject.Find(_ButtonConnectName).GetComponent <Button>();
                connectButton.onClick.AddListener(() =>
                {
                    _remote.TcpAddress = ipInputField.text;
                    _remote.TcpPort    = Int32.Parse(portInputField.text);

                    // connect / disconnect
                    if (!_remote.TcpConnected)
                    {
                        try
                        {
                            _remote.EstablishConnection();
                        }
                        catch (Exception e)
                        {
                            var modal = GameObject.Find(_ErrorModalViewName).GetComponent <ErrorViewController>();
                            modal.Show(true);
                            modal.SetMessage(e.Message);
                        }
                    }
                    else
                    {
                        try
                        {
                            _remote.CloseConnection();
                        }
                        catch (Exception)
                        {
                        }
                    }
                });
            }

            // recording section
            {
                var screenshotButton = GameObject.Find(_ButtonScreenshotName).GetComponent <Button>();
                screenshotButton.onClick.AddListener(() =>
                {
                    _camera.TakeScreenShot();
                });

                var recordButton = GameObject.Find(_ButtonRecordName).GetComponent <Button>();

                if (!_camera.videoAvailable)
                {
                    recordButton.interactable = false;
                }
                else
                {
                    recordButton.interactable = true;
                }

                recordButton.onClick.AddListener(() =>
                {
                    if (_camera.IsRecording)
                    {
                        _camera.FinishRecording();
                    }
                    else
                    {
                        _camera.StartRecording();
                    }
                });
            }

            // background section
            {
                _daySky      = Resources.Load <Material>("backgrounds/Wispy Sky/Materials/WispySkyboxMat2");
                _sunriseSky  = Resources.Load <Material>("backgrounds/Wispy Sky/Materials/WispySkyboxMat");
                _sunsetSky   = Resources.Load <Material>("backgrounds/Skybox/Materials/Skybox_Sunset");
                _nightSky    = Resources.Load <Material>("backgrounds/FreeNightSky/Materials/nightsky1");
                _milkywaySky = Resources.Load <Material>("backgrounds/MilkyWay/Material/MilkyWay");

                var backgroundDropdown = GameObject.Find(_DropdownBackgroundName).GetComponent <Dropdown>();
                backgroundDropdown.onValueChanged.AddListener(delegate {
                    ChangeBackground(backgroundDropdown);
                    DynamicGI.UpdateEnvironment();
                });
            }

            // resource section
            {
                _remote.ResourceLoader.LoadFromPref();
                RefereshScrollResources();

                var addButton = GameObject.Find(_ButtonAddResourceName).GetComponent <Button>();
                addButton.onClick.AddListener(() =>
                {
                    SimpleFileBrowser.FileBrowser.ShowLoadDialog((path) =>
                    {
                        _remote.ResourceLoader.AddResourceDirectory(path);
                        RefereshScrollResources();
                    }, null, true);
                });

                var removeButton = GameObject.Find(_ButtonDeleteResourceName).GetComponent <Button>();
                removeButton.onClick.AddListener(() =>
                {
                    _remote.ResourceLoader.RemoveResourceDirectory();
                    RefereshScrollResources();
                });
            }
        }
        private void Start()
        {
            _remote = GameObject.Find("RaiSimUnity").GetComponent <RsUnityRemote>();
            _camera = GameObject.Find("Main Camera").GetComponent <CameraController>();
            _error  = GameObject.Find("_CanvasModalViewError").GetComponent <ErrorViewController>();

            if (_remote == null)
            {
                // TODO exception
            }

            if (_camera == null)
            {
                // TODO exception
            }

            // modal view
            {
                var modal    = GameObject.Find(_ErrorModalViewName).GetComponent <Canvas>();
                var okButton = modal.GetComponentInChildren <Button>();
                okButton.onClick.AddListener(() => { modal.enabled = false; });
            }


            // visualize section
            {
                var toggleVisual = GameObject.Find(_ToggleVisualBodiesName).GetComponent <Toggle>();
                toggleVisual.onValueChanged.AddListener((isSelected) =>
                {
                    _remote.ShowVisualBody = isSelected;
                    _remote.ShowOrHideObjects();
                });
                var toggleCollision = GameObject.Find(_ToggleCollisionBodiesName).GetComponent <Toggle>();
                toggleCollision.onValueChanged.AddListener((isSelected) =>
                {
                    _remote.ShowCollisionBody = isSelected;
                    _remote.ShowOrHideObjects();
                });


                var sliderContactPoints = GameObject.Find(_SliderContactPointsName).GetComponent <Slider>();
                sliderContactPoints.onValueChanged.AddListener((value) => { _remote.ContactPointMarkerScale = value; });
                var toggleContactPoints = GameObject.Find(_ToggleContactPointsName).GetComponent <Toggle>();
                toggleContactPoints.onValueChanged.AddListener((isSelected) =>
                {
                    _remote.ShowContactPoints = isSelected;
                    _remote.ShowOrHideObjects();

                    if (isSelected)
                    {
                        sliderContactPoints.interactable = true;
                    }
                    else
                    {
                        sliderContactPoints.interactable = false;
                    }
                });

                var sliderContactForces = GameObject.Find(_SliderContactForcesName).GetComponent <Slider>();
                sliderContactForces.onValueChanged.AddListener((value) => { _remote.ContactForceMarkerScale = value; });
                var toggleContactForces = GameObject.Find(_ToggleContactForcesName).GetComponent <Toggle>();
                toggleContactForces.onValueChanged.AddListener((isSelected) =>
                {
                    _remote.ShowContactForces = isSelected;
                    _remote.ShowOrHideObjects();

                    if (isSelected)
                    {
                        sliderContactForces.interactable = true;
                    }
                    else
                    {
                        sliderContactForces.interactable = false;
                    }
                });

                var sliderBodyFrames = GameObject.Find(_SliderBodyFramesName).GetComponent <Slider>();
                sliderBodyFrames.onValueChanged.AddListener((value) => { _remote.BodyFrameMarkerScale = value; });

                var sliderLight = GameObject.Find("_LightSlider").GetComponent <Slider>();
                sliderLight.onValueChanged.AddListener((value) => { GameObject.Find("Directional Light").transform.localRotation = Quaternion.Euler(50, value, 0); });

                var toggleBodyFrames = GameObject.Find(_ToggleBodyFramesName).GetComponent <Toggle>();
                toggleBodyFrames.onValueChanged.AddListener((isSelected) =>
                {
                    _remote.ShowBodyFrames = isSelected;
                    _remote.ShowOrHideObjects();

                    if (isSelected)
                    {
                        sliderBodyFrames.interactable = true;
                    }
                    else
                    {
                        sliderBodyFrames.interactable = false;
                    }
                });
            }

            // connection section
            {
                var ipInputField = GameObject.Find(_InputFieldTcpName).GetComponent <InputField>();
                ipInputField.text = _remote.TcpAddress;
                var portInputField = GameObject.Find(_InputFieldPortName).GetComponent <InputField>();
                portInputField.text = _remote.TcpPort.ToString();
                var connectButton = GameObject.Find(_ButtonConnectName).GetComponent <Button>();
                connectButton.onClick.AddListener(() =>
                {
                    _remote.TcpAddress = ipInputField.text;
                    _remote.TcpPort    = Int32.Parse(portInputField.text);

                    // connect / disconnect
                    if (!_remote.TcpConnected && !isAutoConnecting)
                    {
                        try
                        {
                            _remote.EstablishConnection();
                        }
                        catch (Exception e)
                        {
                            var modal = GameObject.Find(_ErrorModalViewName).GetComponent <ErrorViewController>();
                            modal.Show(true);
                            modal.SetMessage(e.Message);
                        }
                    }
                    else
                    {
                        try
                        {
                            _remote.CloseConnection();
                        }
                        catch (Exception)
                        {
                        }
                    }
                });
            }

            // recording section
            {
                var screenshotButton = GameObject.Find(_ButtonScreenshotName).GetComponent <Button>();
                screenshotButton.onClick.AddListener(() =>
                {
                    _camera.TakeScreenShot();
                });

                var recordButton = GameObject.Find(_ButtonRecordName).GetComponent <Button>();

                if (!_camera.videoAvailable)
                {
                    recordButton.interactable = false;
                }
                else
                {
                    recordButton.interactable = true;
                }

                recordButton.onClick.AddListener(() =>
                {
                    if (_camera.IsRecording)
                    {
                        _camera.FinishRecording();
                    }
                    else
                    {
                        _camera.StartRecording();
                    }
                });
            }

            // resource section
            {
                _remote.ResourceLoader.LoadFromPref();
                RefereshScrollResources();

                var addButton = GameObject.Find(_ButtonAddResourceName).GetComponent <Button>();
                addButton.onClick.AddListener(() =>
                {
                    SimpleFileBrowser.FileBrowser.ShowLoadDialog((path) =>
                    {
                        _remote.ResourceLoader.AddResourceDirectory(path);
                        RefereshScrollResources();
                    }, null, true);
                });

                var removeButton = GameObject.Find(_ButtonDeleteResourceName).GetComponent <Button>();
                removeButton.onClick.AddListener(() =>
                {
                    _remote.ResourceLoader.RemoveResourceDirectory();
                    RefereshScrollResources();
                });
            }

            if (GraphicsSettings.renderPipelineAsset is HDRenderPipelineAsset)
            {
                ConstructSkyHDRP();
            }
        }