private void Start() { switch (ModeController.Mode) { case SimulatorMode.Development: case SimulatorMode.Race: QualitySettings.vSyncCount = 0; // VSync must be disabled Application.targetFrameRate = 60; Time.captureFramerate = 60; Time.fixedDeltaTime = 0.002f; break; default: QualitySettings.vSyncCount = 1; Application.targetFrameRate = 60; Time.captureFramerate = 0; Time.fixedDeltaTime = 0.02f; break; } raceParameters = RaceParameters.readRaceParameters(); Observables.Delay(TimeSpan.FromMilliseconds(0)).Subscribe(_ => { if (ModeController.Mode == SimulatorMode.Playback || ModeController.Mode == SimulatorMode.RemoteControl) { setState(new Playback(this)); } else if (ModeController.Mode == SimulatorMode.Race) { setState(new RaceLobby(this)); } else { setState(new FreePractice(this)); } }); }
void SimulateWebClient() { Observables.Delay(TimeSpan.FromSeconds(1)).Subscribe(_ => { StartFreePractice(); SendFromWeb("{\"type\":\"CarLogin\",\"teamId\":\"j\u00E4s\u00E4\",\"name\":\"J\u00E4s\u00E4Bot\",\"color\":\"#FFFF00\",\"imageWidth\":8}"); }); }
public void LoadTrack(string fileName) { SplineMesh.SplineNode[] trackNodes = null; if (fileName != null) { string json = null; if (File.Exists(fileName)) { Debug.Log("Loading track from filesystem: " + fileName); json = new StreamReader(fileName).ReadToEnd(); } else { Debug.Log("Loading track as Unity resource: " + fileName); json = Resources.Load <TextAsset>("Tracks/" + fileName.Replace(".json", ""))?.text; } if (json != null) { trackNodes = FromJson <SplineMesh.SplineNode>(json); } else { Debug.Log("Unknown track " + fileName + ": not found as a resource or in the file system"); } } if (trackNodes != null && trackNodes.Length > 0) { track.enabled = false; track.IsLoop = false; while (track.nodes.Count > trackNodes.Length) { track.RemoveNode(track.nodes.Last()); } for (int i = 0; i < trackNodes.Length; i++) { var node = trackNodes[i]; if (i < track.nodes.Count) { track.nodes[i].Position = node.Position; track.nodes[i].Direction = node.Direction; track.nodes[i].Up = node.Up; track.nodes[i].Scale = node.Scale; track.nodes[i].Roll = node.Roll; } else { track.AddNode(node); } } track.IsLoop = true; track.enabled = true; Observables.Delay(TimeSpan.FromSeconds(1)).Subscribe(_ => { EventBus.Publish(new CameraFollow(null)); }); } }
private void OnEnable() { rigidBody = GetComponent <Rigidbody>(); allWheels = new WheelCollider[] { frontLeftWC, frontRightWC, rearLeftWC, rearRightWC }; EventBus.Subscribe <CarFinished>(this, f => { if (f.car.name == CarInfo.name) { this.finished = true; Observables.Delay(TimeSpan.FromSeconds(1)).Subscribe(_ => { Destroy(gameObject); }); } }); }
private void OnEnable() { switch (ModeController.Mode) { case SimulatorMode.Playback: case SimulatorMode.RemoteControl: break; default: Debug.Log("Initializing spectator socket"); StartListening(); RaceParameters raceParams = RaceParameters.readRaceParameters(); if (raceParams.raceLogFile != null) { Debug.Log("Writing race log to " + raceParams.raceLogFile); var stream = new BinaryWriter(File.Open(raceParams.raceLogFile, FileMode.Create)); Spectate(b => { stream.Write(b); }, () => stream.Close(), new CarInfo[] { }); } EventBus.Subscribe <CarAdded>(this, e => { CarInfo car = ((CarAdded)e).car; carInfos.Add(car.name, car); }); EventBus.Subscribe <CarRemoved>(this, e => { CarInfo car = ((CarRemoved)e).car; carInfos.Remove(car.name); }); EventBus.Subscribe <RaceFinished>(this, e => { Observables.Delay(TimeSpan.FromSeconds(1)).Subscribe(_ => { Debug.Log("Race finished, stopping updates"); raceEnded = true; EventBus.Publish(new GameStatus(new CarStatus[0])); var stream = new BinaryWriter(File.Open(raceParams.raceResultFile, FileMode.Create)); stream.Write(System.Text.Encoding.UTF8.GetBytes(JsonUtility.ToJson(e, true))); stream.Close(); }); Observables.Delay(TimeSpan.FromSeconds(3)).Subscribe(_ => { Debug.Log("Quitting application"); Application.Quit(); }); }); break; } }
private void Start() { raceParameters = RaceParameters.readRaceParameters(); Observables.Delay(TimeSpan.FromMilliseconds(0)).Subscribe(_ => { if (ModeController.Mode == SimulatorMode.Playback) { setState(new Playback(this)); } else if (ModeController.Mode == SimulatorMode.Race) { setState(new RaceLobby(this)); } else { setState(new FreePractice(this)); } }); }