private void OnElapsed(object sender, ElapsedEventArgs e) { lock (_locker) { if (t1 != 0) { double power = Power; double mass = Mass; long t2 = e.SignalTime.Ticks; // dt in sec double dt = (t2 - t1) / 10000000.0; double a = power / mass; double v2 = a * dt + v1; double dl = (v2 + v1) / 2 * dt; v1 = v2; if (Math.Abs(dl) > wheelLength) { EngenieOverhead?.Invoke(); } if (dl > 0) { Direction = Direction.Forward; } else { if (dl < 0) { Direction = Direction.Back; } else { Direction = Direction.None; } } distance += dl; while (Math.Abs(distance) >= wheelLength) { SensorEvent?.Invoke(); if (distance > 0) { distance -= wheelLength; } else { distance += wheelLength; } } } t1 = e.SignalTime.Ticks; } }
public void FireSensorEvent(object sender, SensorEventArgs e) { SensorEvent?.Invoke(this, e); }
private void OnTriggerExit2D(Collider2D collision) { OnTriggerExit.Invoke(collision); }
private void OnTriggerStay2D(Collider2D collision) { OnTriggerStay.Invoke(collision); }
private void OnTriggerEnter2D(Collider2D collision) { OnTriggerEnter.Invoke(collision); }
public void CallEvent(SensorEventArgs args) { SensorEvent?.Invoke(this, args); }