예제 #1
0
        public void Deserialize(DataSerializer s)
        {
            try
            {
                data.Clear();

                var arraySize = s.ReadInt32();

                for (int i = 0; i < arraySize; i++)
                {
                    ushort prop = (ushort)s.ReadUInt16();

                    PrecisionData value = new PrecisionData();
                    value.x = (ushort)s.ReadUInt16();
                    value.z = (ushort)s.ReadUInt16();

                    if ((PropManager.instance.m_props.m_buffer[prop].m_flags & (ushort)PropInstance.Flags.Created) == (ushort)PropInstance.Flags.Created)
                    {
                        data[prop] = value;
                    }
                }
            }
            catch (Exception e)
            {
                DebugUtils.LogException(e);
            }
        }
예제 #2
0
        void Server_PacketReceived(PrecisionPacket packet)
        {
            if (packet.GridId == 0)
            {
                Server_PrecisionData.Remove(packet.OriginalSenderSteamId);
            }
            else
            {
                PrecisionData data;
                if (!Server_PrecisionData.TryGetValue(packet.OriginalSenderSteamId, out data))
                {
                    data = new PrecisionData();
                    Server_PrecisionData[packet.OriginalSenderSteamId] = data;
                }

                data.GridEntId = packet.GridId;
                data.BlockPos  = packet.BlockPos;
            }
        }
        public void FillPrecisionData(PrecisionData precisionData)
        {
            if (precisionData == null)
            {
                throw new ArgumentNullException("precisionData");
            }

            switch (this.Channel.ChannelNumber)
            {
            case 3:
                var channel3 = (Channel3)this.Channel;
                precisionData.NorthPositionAccuracy = channel3.NorthPositionAccuracy;
                precisionData.EastPositionAccuracy  = channel3.EastPositionAccuracy;
                precisionData.DownPositionAccuracy  = channel3.DownPositionAccurady;
                break;

            case 4:
                var channel4 = (Channel4)this.Channel;
                precisionData.NorthVelocityAccuracy = channel4.NorthVelocityAccuracy;
                precisionData.EastVelocityAccuracy  = channel4.EastVelocityAccuracy;
                precisionData.DownVelocityAccuracy  = channel4.DownVelocityAccuracy;
                break;

            case 5:
                var channel5 = (Channel5)this.Channel;
                precisionData.HeadingAccuracy = channel5.HeadingAccuracy;
                precisionData.PitchAccuracy   = channel5.PitchAccuracy;
                precisionData.RollAccuracy    = channel5.RollAccuracy;
                break;

            case 48:
                var channel48 = (Channel48)this.Channel;
                precisionData.Hdop = channel48.Hdop;
                precisionData.Pdop = channel48.Pdop;
                precisionData.Vdop = channel48.Vdop;
                break;
            }
        }
예제 #4
0
 public GpxData(PositionData positionData, VelocityData velocityData, PrecisionData precisionData)
 {
     this.PositionData  = positionData;
     this.PrecisionData = precisionData;
     this.VelocityData  = velocityData;
 }