protected void DoEvent() { if ((DateTime.Now - PrevTime).TotalSeconds > 1) { long Prev = data.Position; if (stream_mode) { data.Position = tPosition; } else { data.Position = innerStream.Position; } data.Rate = (double)(data.Position - Prev) / (DateTime.Now - PrevTime).TotalSeconds; PrevTime = DateTime.Now; Rate_mean = (Rate_mean + data.Rate) / 2; var togo = Math.Round((data.Length - data.Position) / Rate_mean); togo = (double.IsInfinity(togo)) ? 0 : togo; data.Log = data.Position.ToString("#,0") + '/' + data.Length.ToString("#,0") + string.Format("({0:0.00%}) ", (double)data.Position / data.Length) + ConvertUnit(Rate_mean) + " [ETA " + TimeSpan.FromSeconds(togo).ToString() + " ] "; try { PosChangeEvent?.Invoke(this, data); } catch { } } }
void FixedUpdate() { fsm.CurrentState?.Update(this); physics.Update(this); if (transform.position.x < 14.5f) { PosChangeEvent?.Invoke(0); } else if (transform.position.x > 14.5f) { PosChangeEvent?.Invoke(1); } }