ConditionManager.cs 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. using System;
  2. using Routes;
  3. using Sensors;
  4. using Controller;
  5. using SicknessReduction.Haptic;
  6. using SicknessReduction.Visual.DoF;
  7. using SicknessReduction.Visual.Vignetting;
  8. using UnityEngine;
  9. namespace Study
  10. {
  11. public enum SicknessMeasure
  12. {
  13. Vignetting,
  14. DepthOfField,
  15. VirtualHelmet,
  16. Fan,
  17. Vibration,
  18. None
  19. }
  20. public enum SteeringMode
  21. {
  22. frontWheel,
  23. Leaning,
  24. HMD
  25. }
  26. [Serializable]
  27. public struct Condition
  28. {
  29. public int routeNumber;
  30. public SicknessMeasure activeMeasure;
  31. public SteeringMode steeringMode;
  32. }
  33. public class ConditionManager : MonoBehaviour
  34. {
  35. [Header("Game Objects")] public RouteManager routeManager;
  36. public DynamicVignetting dynamicVignetting;
  37. public DynamicDoF dynamicDoF;
  38. public GameObject virtualHelmet;
  39. public DeskFanController fanController;
  40. public VibrationController vibrationController;
  41. public GameObject ppVolume;
  42. public SensorStatus waitForSensors;
  43. [Header("Configuration")] public Condition[] conditions;
  44. public int activeCondition;
  45. private void OnEnable()
  46. {
  47. var c = conditions[activeCondition];
  48. routeManager.selectedRoute = c.routeNumber;
  49. ppVolume.SetActive(false);
  50. var bikePlayer = GameObject.Find("bike");
  51. var playerStats = bikePlayer.GetComponent<PlayerStats>();
  52. var bike = GameObject.Find("BikePlayer - RigidBody");
  53. var sensorBike = bike.GetComponent<Controller.SensorBikeController>();
  54. playerStats.SetCondition(c.steeringMode);
  55. sensorBike.SetCondition(c.steeringMode);
  56. // Make sure the script is enabled
  57. sensorBike.enabled = true;
  58. fanController.enabled = c.activeMeasure == SicknessMeasure.Fan;
  59. vibrationController.enabled = c.activeMeasure == SicknessMeasure.Vibration;
  60. virtualHelmet.SetActive(c.activeMeasure == SicknessMeasure.VirtualHelmet);
  61. ppVolume.SetActive(c.activeMeasure == SicknessMeasure.DepthOfField);
  62. dynamicDoF.enabled = c.activeMeasure == SicknessMeasure.DepthOfField;
  63. dynamicVignetting.enabled = c.activeMeasure == SicknessMeasure.Vignetting;
  64. waitForSensors.waitForMqtt =
  65. c.activeMeasure == SicknessMeasure.Vibration || c.activeMeasure == SicknessMeasure.Fan;
  66. }
  67. public int GetRouteNumber()
  68. {
  69. var c = conditions[activeCondition];
  70. return c.routeNumber;
  71. }
  72. }
  73. }