using System; using Routes; using Sensors; using Controller; using SicknessReduction.Haptic; using SicknessReduction.Visual.DoF; using SicknessReduction.Visual.Vignetting; using UnityEngine; namespace Study { public enum SicknessMeasure { Vignetting, DepthOfField, VirtualHelmet, Fan, Vibration, None } public enum SteeringMode { frontWheel, Leaning, HMD } [Serializable] public struct Condition { public int routeNumber; public SicknessMeasure activeMeasure; public SteeringMode steeringMode; } public class ConditionManager : MonoBehaviour { [Header("Game Objects")] public RouteManager routeManager; public DynamicVignetting dynamicVignetting; public DynamicDoF dynamicDoF; public GameObject virtualHelmet; public DeskFanController fanController; public VibrationController vibrationController; public GameObject ppVolume; public SensorStatus waitForSensors; [Header("Configuration")] public Condition[] conditions; public int activeCondition; private void OnEnable() { var c = conditions[activeCondition]; routeManager.selectedRoute = c.routeNumber; ppVolume.SetActive(false); var bikePlayer = GameObject.Find("bike"); var playerStats = bikePlayer.GetComponent(); var bike = GameObject.Find("BikePlayer - RigidBody"); var sensorBike = bike.GetComponent(); playerStats.SetCondition(c.steeringMode); sensorBike.SetCondition(c.steeringMode); // Make sure the script is enabled sensorBike.enabled = true; fanController.enabled = c.activeMeasure == SicknessMeasure.Fan; vibrationController.enabled = c.activeMeasure == SicknessMeasure.Vibration; virtualHelmet.SetActive(c.activeMeasure == SicknessMeasure.VirtualHelmet); ppVolume.SetActive(c.activeMeasure == SicknessMeasure.DepthOfField); dynamicDoF.enabled = c.activeMeasure == SicknessMeasure.DepthOfField; dynamicVignetting.enabled = c.activeMeasure == SicknessMeasure.Vignetting; waitForSensors.waitForMqtt = c.activeMeasure == SicknessMeasure.Vibration || c.activeMeasure == SicknessMeasure.Fan; } public int GetRouteNumber() { var c = conditions[activeCondition]; return c.routeNumber; } } }