示例#1
0
        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 { }
            }
        }
示例#2
0
    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);
        }
    }