Example #1
0
        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}");
        }
Example #2
0
        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);
        }