public AntStickBridge(AntStick antStick, BikeData bikeData) { lastAntStick = antStick; this.antStick = antStick; this.bikeData = bikeData; if (!ThreadHelper.SingletonCheck("AntStickBridge")) return; antStick.OnStateChange += delegate (object sender, AntStick.StateChangeEventArgs e) { ThreadHelper.Singleton.PerformActionOnMainThread(() => AntStickStateChange(sender, e)); }; PowerOnlyDataPage.OnReceived += delegate (object sender, EventArgs e) { ThreadHelper.Singleton.PerformActionOnMainThread(() => PowerOnlyReceived(sender, e)); }; WheelTorqueDataPage.OnReceived += delegate (object sender, EventArgs e) { ThreadHelper.Singleton.PerformActionOnMainThread(() => WheelTorqueReceived(sender, e)); }; }
private void AntStickStateChange(object sender, AntStick.StateChangeEventArgs e) { if (e.State == AntStick.AntState.Connected) { bikeData.UsingAntKickr = true; } }
/// <summary> /// The standard Unity Start method. /// </summary> void Start() { // Set the initial position and rotation; set the character controller. initialPosition = transform.position; initialRotation = transform.rotation; this.characterController = this.GetComponent<CharacterController>(); // Reset position (altitude) and heading. this.ResetPositionAndHeadingToTransform(); // Get a new BikeData object. bikeData = new BikeData(); #if UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN // Try to start Ant. try { this.antStick = new AntStick(); this.antStickBridge = new AntStickBridge(antStick, bikeData); this.antStick.Start(); } catch (Exception ex) { Debug.LogWarningFormat("[BikeController] Exception while loading Ant.\n{0}", ex.Message); } // Try to start the XSens Gyro. try { this.xsensGyro = new XSensGyro(); this.xsensGyroBridge = new XSensGyroBridge(xsensGyro, this); this.xsensGyro.Start(); // We have to wait after starting the gyro to zero it. StartCoroutine(WaitThenZeroXSensGyro()); } catch (Exception ex) { Debug.LogWarningFormat("[BikeController] Exception while loading XSens Gyro. The DLL is probably missing.\n{0}", ex.Message); } #else Debug.LogWarning("[BikeController] ANT and XSens are not available on non-Windows platforms."); #endif // Initialize and attach all the supplemental components needed by Bike Controller. UIOverlay.SetBikeController(this); this.uiOverlay = gameObject.AddComponent<UIOverlay>(); UIDebugOverlay.SetBikeController(this); this.uiDebugOverlay = gameObject.AddComponent<UIDebugOverlay>(); this.bikePhysics = new BikePhysics(this); this.bikeSteering = new BikeSteering(this, this.steeringCurve); // Disable collisions between player character and the terrain. CharacterController characterController = this.GetComponent<CharacterController>(); TerrainCollider terrainCollider = CollisionDisabler.GetTerrainColliderForActiveTerrain(); (new CollisionDisabler(characterController, terrainCollider)).Start(); // Start the timer. this._refTime = DateTime.Now; this._timerStarted = true; }