void Awake()
    {
        AddUIElement();
        lastAutoUpdate = Time.time;
        controller     = GetComponent <VehicleController>();
        input          = GetComponent <CarInputController>();
        input[InputEvent.ENABLE_LEFT_TURN_SIGNAL].Press  += controller.EnableLeftTurnSignal;
        input[InputEvent.ENABLE_RIGHT_TURN_SIGNAL].Press += controller.EnableRightTurnSignal;
        input[InputEvent.GEARBOX_SHIFT_DOWN].Press       += controller.GearboxShiftDown;
        input[InputEvent.GEARBOX_SHIFT_UP].Press         += controller.GearboxShiftUp;
        input[InputEvent.TOGGLE_SHIFT].Press             += controller.ToggleShift;
        input[InputEvent.ENABLE_HANDBRAKE].Press         += controller.ToggleHandBrake;
        input[InputEvent.HEADLIGHT_MODE_CHANGE].Press    += controller.ChangeHeadlightMode;
        input[InputEvent.TOGGLE_IGNITION].Press          += controller.ToggleIgnition;
        input[InputEvent.TOGGLE_CRUISE_MODE].Press       += controller.ToggleCruiseMode;
        input[InputEvent.SET_WIPER_OFF].Release          += controller.SetWindshiledWiperLevelOff;
        input[InputEvent.SET_WIPER_AUTO].Release         += controller.SetWindshiledWiperLevelAuto;
        input[InputEvent.SET_WIPER_LOW].Release          += controller.SetWindshiledWiperLevelLow;
        input[InputEvent.SET_WIPER_MID].Release          += controller.SetWindshiledWiperLevelMid;
        input[InputEvent.SET_WIPER_HIGH].Release         += controller.SetWindshiledWiperLevelHigh;
        input[InputEvent.TOGGLE_WIPER].Press             += controller.IncrementWiperState;

        // CES
        // ???
        //input[InputEvent.ACCEL].Release += controller.ToggleBrakeLightsOff;
        //input[InputEvent.BRAKE].Release += controller.ToggleBrakeLightsOn;
    }
Ejemplo n.º 2
0
    private void OnDisable()
    {
        CarInputController cc = FindObjectOfType <CarInputController>();

        if (cc != null)
        {
            cc[InputEvent.SELECT_UP].Press    -= SetDaytimeWeather;
            cc[InputEvent.SELECT_RIGHT].Press -= SetFogWeather;
            cc[InputEvent.SELECT_DOWN].Press  -= SetRainFogWeather;
            cc[InputEvent.SELECT_LEFT].Press  -= SetNightRainFogWeather;
        }
    }
Ejemplo n.º 3
0
    private void OnDestroy()
    {
        // CES
        CarInputController cc = GetComponent <CarInputController>();

        if (cc != null)
        {
            cc[InputEvent.TOGGLE_SENSOR_EFFECTS].Press -= ToggleSensorEffect;
            cc[InputEvent.TOGGLE_TRAFFIC].Press        -= ToggleTraffic;
            cc[InputEvent.TOGGLE_UI].Press             -= ToggleUI;
        }
    }
Ejemplo n.º 4
0
 void Awake()
 {
     controller = GetComponent <VehicleController>();
     input      = GetComponent <CarInputController>();
     input[InputEvent.ENABLE_LEFT_TURN_SIGNAL].Press  += controller.EnableLeftTurnSignal;
     input[InputEvent.ENABLE_RIGHT_TURN_SIGNAL].Press += controller.EnableRightTurnSignal;
     input[InputEvent.GEARBOX_SHIFT_DOWN].Press       += controller.GearboxShiftDown;
     input[InputEvent.GEARBOX_SHIFT_UP].Press         += controller.GearboxShiftUp;
     input[InputEvent.ENABLE_HANDBRAKE].Press         += controller.EnableHandbrake;
     input[InputEvent.HEADLIGHT_MODE_CHANGE].Press    += controller.ChangeHeadlightMode;
     input[InputEvent.TOGGLE_IGNITION].Press          += controller.ToggleIgnition;
 }
    private void OnDisable()
    {
        Missive.RemoveListener <ActiveAgentMissive>(OnAgentChange);

        CarInputController cc = FindObjectOfType <CarInputController>();

        if (cc != null)
        {
            cc[InputEvent.SELECT_UP].Press    -= SetDaytimeWeather;
            cc[InputEvent.SELECT_RIGHT].Press -= SetFogWeather;
            cc[InputEvent.SELECT_DOWN].Press  -= SetRainFogWeather;
            cc[InputEvent.SELECT_LEFT].Press  -= SetNightRainFogWeather;
        }
    }
Ejemplo n.º 6
0
    void Start()
    {
        InitDayNight();
        InitWeather();

        // CES TODO needs moved asap
        CarInputController cc = FindObjectOfType <CarInputController>();

        if (cc != null)
        {
            cc[InputEvent.SELECT_UP].Press    += SetDaytimeWeather;
            cc[InputEvent.SELECT_RIGHT].Press += SetFogWeather;
            cc[InputEvent.SELECT_DOWN].Press  += SetRainFogWeather;
            cc[InputEvent.SELECT_LEFT].Press  += SetNightRainFogWeather;
        }
    }
Ejemplo n.º 7
0
    void Start()
    {
        skyboxMat = new Material(RenderSettings.skybox);
        skyboxMat.SetTexture("_Tex", daySky.skyboxTexture);
        skyboxMat.SetTexture("_OverlayTex", daySky.skyboxTexture);
        skyboxMat.SetFloat("_Blend", 0f);
        RenderSettings.skybox = skyboxMat;

        //weather controller options
        rainIntensitySlider = Tweakables.Instance.AddFloatSlider("Rain intensity", 0, 1, weatherController.rainIntensity);
        rainIntensitySlider.onValueChanged.AddListener(x => weatherController.rainIntensity = x);

        fogIntensitySlider = Tweakables.Instance.AddFloatSlider("Fog intensity", 0, 1, weatherController.fogIntensity);
        fogIntensitySlider.onValueChanged.AddListener(x => weatherController.fogIntensity = x);

        roadWetnessSlider = Tweakables.Instance.AddFloatSlider("Road wetness", 0, 1, weatherController.roadWetness);
        roadWetnessSlider.onValueChanged.AddListener(x => weatherController.roadWetness = x);

        //master time options
        timeOfDaySlider = Tweakables.Instance.AddFloatSlider("Time of day", 0, 24, currentHour);
        timeOfDaySlider.onValueChanged.AddListener(x => currentHour = x);

        freezeToggle = Tweakables.Instance.AddCheckbox("Freeze time of day", freezeTimeOfDay);
        freezeToggle.onValueChanged.AddListener(x => freezeTimeOfDay = x);

        originalSunIntensity = RenderSettings.sun.intensity;


        // CES
        CarInputController cc = FindObjectOfType <CarInputController>();

        if (cc != null)
        {
            cc[InputEvent.SELECT_UP].Press    += SetDaytimeWeather;
            cc[InputEvent.SELECT_RIGHT].Press += SetFogWeather;
            cc[InputEvent.SELECT_DOWN].Press  += SetRainFogWeather;
            cc[InputEvent.SELECT_LEFT].Press  += SetNightRainFogWeather;
        }
    }
 public void SetCurrentCar(int _currentCar = 0)
 {
     if (carController != null)
     {
         carController.StopEngine();
         carController.carInFocus = false;
     }
     for (var i = 0; i < cars.Length; i++)
     {
         if (i == _currentCar)
         {
             foreach (var camera in cameras)
             {
                 camera.GetComponent <CameraClass>().target = cars[i].transform;
                 camera.GetComponent <CameraClass>().SetPosition();
             }
             carController            = cars[i].GetComponent <CarInputController>();
             transform.position       = cars[i].transform.position;
             carController.carInFocus = true;
         }
     }
 }
Ejemplo n.º 9
0
    public virtual void Setup(UserInterfaceSetup ui, RosBridgeConnector connector, VehicleConfig config)
    {
        // needed for npc
        foreach (Transform child in transform)
        {
            if (child.CompareTag("MainCamera"))
            {
                mainCamera = child.GetComponent <Camera>();
            }
        }

        Connector = connector;
        UI        = ui;
        var bridge = connector.Bridge;

        ui.agentController = agentController;

        ui.SensorEffectsToggle.onValueChanged.AddListener(enabled => ToggleSensorEffect(enabled));

        // ui.WheelScale.onValueChanged.AddListener(value =>
        // {
        //     try
        //     {
        //         CarController.SetWheelScale(float.Parse(value));
        //     }
        //     catch (System.Exception)
        //     {
        //         Debug.Log("ROS Wheel Force Scaler: Please input valid number!");
        //     }
        // });

        // Cameras.ForEach(c =>
        // {
        //     var pp = c.GetComponent<PostProcessingListener>();
        //     if (pp != null)
        //     {
        //         ui.CameraSaturation.onValueChanged.AddListener(x =>
        //         {
        //             pp.SetSaturationValue(x);
        //         });
        //     }
        // });

        ui.LowQualityRendering.onValueChanged.AddListener(useLowQuality =>
        {
            FollowCamera.GetComponent <PostProcessingBehaviour>().enabled = !useLowQuality;
            CameraMan?.SetHighQualityRendering(!useLowQuality);
        });
        ui.LowQualityRendering.onValueChanged.Invoke(ui.LowQualityRendering.isOn);

        ui.TrafficToggle.onValueChanged.AddListener(enabled =>
        {
            FindObjectOfType <NPCManager>()?.ToggleNPCS(enabled);

            //hack to sync toggle value among cars UIs
            {
                foreach (var otherUI in FindObjectsOfType <UserInterfaceSetup>())
                {
                    if (otherUI == ui)
                    {
                        continue;
                    }

                    var oldEvent = otherUI.TrafficToggle.onValueChanged;
                    otherUI.TrafficToggle.onValueChanged = new UnityEngine.UI.Toggle.ToggleEvent();
                    otherUI.TrafficToggle.isOn           = enabled;
                    otherUI.TrafficToggle.onValueChanged = oldEvent;
                }
            }
        });

        ui.TrafficPhysicsModeToggle.onValueChanged.AddListener(enabled =>
        {
            FindObjectOfType <NPCManager>()?.ToggleNPCPhysicsMode(enabled);
            //hack to sync toggle value among cars UIs
            {
                foreach (var otherUI in FindObjectsOfType <UserInterfaceSetup>())
                {
                    if (otherUI == ui)
                    {
                        continue;
                    }

                    var oldEvent = otherUI.TrafficPhysicsModeToggle.onValueChanged;
                    otherUI.TrafficPhysicsModeToggle.onValueChanged = new UnityEngine.UI.Toggle.ToggleEvent();
                    otherUI.TrafficPhysicsModeToggle.isOn           = enabled;
                    otherUI.TrafficPhysicsModeToggle.onValueChanged = oldEvent;
                }
            }
        });

        ui.PedestriansToggle.onValueChanged.AddListener(enabled =>
        {
            if (enabled)
            {
                FindObjectOfType <PedestrianManager>()?.SpawnPedestrians();
            }
            else
            {
                FindObjectOfType <PedestrianManager>()?.KillPedestrians();
            }

            //hack to sync toggle value among car UIs
            {
                foreach (var otherUI in FindObjectsOfType <UserInterfaceSetup>())
                {
                    if (otherUI == ui)
                    {
                        continue;
                    }

                    var oldEvent = otherUI.PedestriansToggle.onValueChanged;
                    otherUI.PedestriansToggle.onValueChanged = new UnityEngine.UI.Toggle.ToggleEvent();
                    otherUI.PedestriansToggle.isOn           = enabled;
                    otherUI.PedestriansToggle.onValueChanged = oldEvent;
                }
            }
        });

        ui.SteerwheelFeedback.onValueChanged.AddListener(enabled =>
        {
            var steerwheels = FindObjectsOfType <SteeringWheelInputController>();
            foreach (var steerwheel in steerwheels)
            {
                steerwheel.useFeedback = enabled;
            }
        });

        foreach (var item in NeedsBridge)
        {
            if (item == null)
            {
                continue;
            }
            var a = item as Comm.BridgeClient;
            a.OnBridgeAvailable(bridge);
        }

        ui.AddTweakables(Tweakables);

        if (config != null)
        {
            ui.ToggleTweakable(Tweakables, "Lidar", config.enable_lidar);
            ui.ToggleTweakable(Tweakables, "GPS", config.enable_gps);
            ui.ToggleTweakable(Tweakables, "IMU", config.enable_imu);
            ui.ToggleTweakable(Tweakables, "Main Camera", config.enable_main_camera);
            ui.ToggleTweakable(Tweakables, "Telephoto Camera", config.enable_telephoto_camera);

            ui.LowQualityRendering.isOn = !config.enable_high_quality_rendering;
            ui.SensorEffectsToggle.isOn = config.enable_sensor_effects;
        }

        if (config != null)
        {
            if (StaticConfigManager.Instance.staticConfig.initialized && ROSAgentManager.Instance.currentMode == StartModeTypes.StaticConfig)
            {
                ui.CheckStaticConfigTraffic();
            }
        }

        // CES
        CarInputController cc = GetComponent <CarInputController>();

        if (cc != null)
        {
            cc[InputEvent.TOGGLE_SENSOR_EFFECTS].Press += ToggleSensorEffect;
            cc[InputEvent.TOGGLE_TRAFFIC].Press        += ToggleTraffic;
            cc[InputEvent.TOGGLE_UI].Press             += ToggleUI;
        }
    }
Ejemplo n.º 10
0
    public virtual void Setup(UserInterfaceSetup ui, RosBridgeConnector connector, VehicleConfig config)
    {
        Connector = connector;
        UI        = ui;
        var bridge = connector.Bridge;

        ui.PositionReset.RobotController = CarController;

        ui.SensorEffectsToggle.onValueChanged.AddListener(enabled => ToggleSensorEffect(enabled));

        // ui.WheelScale.onValueChanged.AddListener(value =>
        // {
        //     try
        //     {
        //         CarController.SetWheelScale(float.Parse(value));
        //     }
        //     catch (System.Exception)
        //     {
        //         Debug.Log("ROS Wheel Force Scaler: Please input valid number!");
        //     }
        // });

        // Cameras.ForEach(c =>
        // {
        //     var pp = c.GetComponent<PostProcessingListener>();
        //     if (pp != null)
        //     {
        //         ui.CameraSaturation.onValueChanged.AddListener(x =>
        //         {
        //             pp.SetSaturationValue(x);
        //         });
        //     }
        // });

        ui.HighQualityRendering.onValueChanged.AddListener(enabled =>
        {
            FollowCamera.GetComponent <PostProcessingBehaviour>().enabled = enabled;
            CameraMan?.SetHighQualityRendering(enabled);
        });

        ui.TrafficToggle.onValueChanged.AddListener(enabled =>
        {
            if (enabled)
            {
                FindObjectOfType <TrafSpawner>()?.ReSpawnTrafficCars();
            }
            else
            {
                FindObjectOfType <TrafSpawner>()?.KillTrafficCars();
            }

            //hack to sync toggle value among cars UIs
            {
                foreach (var otherUI in FindObjectsOfType <UserInterfaceSetup>())
                {
                    if (otherUI == ui)
                    {
                        continue;
                    }

                    var oldEvent = otherUI.TrafficToggle.onValueChanged;
                    otherUI.TrafficToggle.onValueChanged = new UnityEngine.UI.Toggle.ToggleEvent();
                    otherUI.TrafficToggle.isOn           = enabled;
                    otherUI.TrafficToggle.onValueChanged = oldEvent;
                }
            }
        });

        ui.PedestriansToggle.onValueChanged.AddListener(enabled =>
        {
            if (enabled)
            {
                FindObjectOfType <PedestrianManager>()?.SpawnNPCPedestrians();
            }
            else
            {
                FindObjectOfType <PedestrianManager>()?.KillNPCPedestrians();
            }

            //hack to sync toggle value among car UIs
            {
                foreach (var otherUI in FindObjectsOfType <UserInterfaceSetup>())
                {
                    if (otherUI == ui)
                    {
                        continue;
                    }

                    var oldEvent = otherUI.PedestriansToggle.onValueChanged;
                    otherUI.PedestriansToggle.onValueChanged = new UnityEngine.UI.Toggle.ToggleEvent();
                    otherUI.PedestriansToggle.isOn           = enabled;
                    otherUI.PedestriansToggle.onValueChanged = oldEvent;
                }
            }
        });

        ui.SteerwheelFeedback.onValueChanged.AddListener(enabled =>
        {
            var steerwheels = FindObjectsOfType <SteeringWheelInputController>();
            foreach (var steerwheel in steerwheels)
            {
                steerwheel.useFeedback = enabled;
            }
        });

        foreach (var item in NeedsBridge)
        {
            if (item == null)
            {
                continue;
            }
            var a = item as Ros.IRosClient;
            a.OnRosBridgeAvailable(bridge);
        }

        ui.AddTweakables(Tweakables);

        if (config != null)
        {
            ui.ToggleTweakable(Tweakables, "Lidar", config.enable_lidar);
            ui.ToggleTweakable(Tweakables, "GPS", config.enable_gps);
            ui.ToggleTweakable(Tweakables, "IMU", config.enable_imu);
            ui.ToggleTweakable(Tweakables, "Main Camera", config.enable_main_camera);
            ui.ToggleTweakable(Tweakables, "Telephoto Camera", config.enable_telephoto_camera);

            ui.HighQualityRendering.isOn = config.enable_high_quality_rendering;
            ui.SensorEffectsToggle.isOn  = config.enable_sensor_effects;
        }

        // CES
        CarInputController cc = FindObjectOfType <CarInputController>();

        if (cc != null)
        {
            GetComponent <CarInputController>()[InputEvent.TOGGLE_SENSOR_EFFECTS].Press += ToggleSensorEffect;
            GetComponent <CarInputController>()[InputEvent.TOGGLE_TRAFFIC].Press        += ToggleTraffic;
            GetComponent <CarInputController>()[InputEvent.TOGGLE_UI].Press             += ToggleUI;
        }
    }