public void Update(S_CREATURE_ROTATE m) { var entity = GetOrNull(m.Entity); if (entity == null) { return; } entity.Position = entity.Position.MoveForvard(entity.Finish, entity.Speed, m.Time.Ticks - entity.StartTime); entity.Finish = entity.Position; entity.Speed = 0; entity.StartTime = m.Time.Ticks; if (entity.EndTime > 0 && entity.EndTime <= entity.StartTime) { entity.Heading = entity.EndAngle; } //else if (entity.EndTime > 0) //{ // Debug.WriteLine("New rotate started before old ended!"); //} entity.EndAngle = m.Heading; entity.EndTime = entity.StartTime + (m.NeedTime == 0 ? 0 : TimeSpan.TicksPerMillisecond * m.NeedTime); //Debug.WriteLine($"{entity.Position} {entity.Heading} {entity.EndAngle} {m.NeedTime}"); }
public void Update(S_CREATURE_ROTATE m) { var entity = GetOrNull(m.Entity); if (entity == null) { return; } entity.Position = entity.Position.MoveForvard(entity.Finish, entity.Speed, m.Time.Ticks - entity.StartTime); entity.Finish = entity.Position; entity.Speed = 0; entity.StartTime = m.Time.Ticks; if (entity.EndTime > 0 && entity.EndTime <= entity.StartTime) { entity.Heading = entity.EndAngle; } entity.EndAngle = m.Heading; entity.EndTime = entity.StartTime + (m.NeedTime == 0 ? 0 : TimeSpan.TicksPerMillisecond * m.NeedTime); }