Beispiel #1
0
 private void OnTimeUpdate(TimeUpdateMessage message)
 {
     //todo adjust for ping here
     //technically safe to hanle our own message as it will just update the time to be the same.
     //we can also adjust remote simulation speed to try keep it closer to the master here
     m_Time = message.Time;
 }
        public void OnTick(TimeUpdateMessage message)
        {
            var remove = new List <Attack>();

            foreach (var attack in m_Attacks)
            {
                var target = m_VesselRepository.GetByName(attack.Target);
                if (target != null)
                {
                    Vector targetPosition = target.GetPosition(message.Time);

                    var distance = (targetPosition - attack.FiringPosition).Length;

                    var travelTime = distance / BaseConstants.WeaponSpeed * 1000;

                    double elapsedTime = (double)(message.Time - attack.FiringTime);

                    if (travelTime <= elapsedTime)
                    {
                        // we hit explode things here
                        m_Renderer.Scene.Remove("Attack" + attack.FiringTime);
                        remove.Add(attack);
                    }
                }
                else
                {
                    remove.Add(attack);
                }
            }

            foreach (var attack in remove)
            {
                m_Attacks.Remove(attack);
            }
        }
        public void RoundTrip()
        {
            const ulong time = 550000;
            var original = new TimeUpdateMessage(time);

            var serialiser = new MessageSerialiser();
            serialiser.Register(typeof(TimeUpdateMessage));
            var text = serialiser.Serialise(original);

            var deserialised = (TimeUpdateMessage)serialiser.Deserialise(text);

            Assert.AreEqual(time, deserialised.Time);
        }
        public void RoundTrip()
        {
            const ulong time     = 550000;
            var         original = new TimeUpdateMessage(time);

            var serialiser = new MessageSerialiser();

            serialiser.Register(typeof(TimeUpdateMessage));
            var text = serialiser.Serialise(original);

            var deserialised = (TimeUpdateMessage)serialiser.Deserialise(text);

            Assert.AreEqual(time, deserialised.Time);
        }