public override void Serialize(QNetworkWriter writer)
 {
     base.Serialize(writer);
     writer.Write(CharacterId);
     writer.Write(PlayerId);
     writer.Write(State);
 }
예제 #2
0
 public override void Serialize(QNetworkWriter writer)
 {
     writer.Write(netId);
     writer.WritePackedUInt32((uint)stateHash);
     writer.Write(normalizedTime);
     writer.WriteBytesAndSize(parameters, parameters?.Length ?? 0);
 }
예제 #3
0
 public override void Serialize(QNetworkWriter writer)
 {
     base.Serialize(writer);
     writer.Write(SlotId);
     writer.Write(OrbId);
     writer.Write(SlotState);
 }
 public override void Serialize(QNetworkWriter writer)
 {
     base.Serialize(writer);
     writer.Write(PlayerPosition);
     writer.Write(PlayerRotation);
     writer.Write(CameraDegrees);
 }
예제 #5
0
 public override void Serialize(QNetworkWriter writer)
 {
     writer.Write(NetId);
     writer.Write(SceneId);
     writer.Write(Position);
     writer.WriteBytesFull(Payload);
 }
 public override void Serialize(QNetworkWriter writer)
 {
     base.Serialize(writer);
     writer.Write(SocketId);
     writer.Write(ItemId);
     writer.Write((int)SocketType);
 }
예제 #7
0
        public override void Serialize(QNetworkWriter writer)
        {
            base.Serialize(writer);
            var temp = IndexArray.Select(x => (byte)x).ToArray();

            writer.WriteBytesAndSize(temp, temp.Length);
        }
예제 #8
0
 public override void Serialize(QNetworkWriter writer)
 {
     base.Serialize(writer);
     writer.Write(StateIndex);
     writer.Write(OnUnitSphere);
     writer.Write(OrbitAngle);
 }
예제 #9
0
 public override void Serialize(QNetworkWriter writer)
 {
     base.Serialize(writer);
     writer.Write(FactId);
     writer.Write(SaveGame);
     writer.Write(ShowNotification);
 }
 public override void Serialize(QNetworkWriter writer)
 {
     base.Serialize(writer);
     writer.Write(PlayerName);
     writer.Write(PlayerReady);
     writer.Write((int)PlayerState);
 }
예제 #11
0
        public virtual void Initialize(string networkAddress, int networkHostId, int networkConnectionId, HostTopology hostTopology)
        {
            m_Writer     = new QNetworkWriter();
            address      = networkAddress;
            hostId       = networkHostId;
            connectionId = networkConnectionId;
            var channelCount = hostTopology.DefaultConfig.ChannelCount;
            var packetSize   = (int)hostTopology.DefaultConfig.PacketSize;

            if (hostTopology.DefaultConfig.UsePlatformSpecificProtocols && Application.platform != RuntimePlatform.PS4 && Application.platform != RuntimePlatform.PSP2)
            {
                throw new ArgumentOutOfRangeException("Platform specific protocols are not supported on this platform");
            }
            m_Channels = new QChannelBuffer[channelCount];
            for (var i = 0; i < channelCount; i++)
            {
                var channelQOS = hostTopology.DefaultConfig.Channels[i];
                var bufferSize = packetSize;
                if (channelQOS.QOS == QosType.ReliableFragmented || channelQOS.QOS == QosType.UnreliableFragmented)
                {
                    bufferSize = hostTopology.DefaultConfig.FragmentSize * 128;
                }
                m_Channels[i] = new QChannelBuffer(this, bufferSize, (byte)i, IsReliableQoS(channelQOS.QOS), IsSequencedQoS(channelQOS.QOS));
            }
        }
 public virtual bool OnSerialize(QNetworkWriter writer, bool initialState)
 {
     if (!initialState)
     {
         writer.WritePackedUInt32(0U);
     }
     return(false);
 }
예제 #13
0
        private void PostInternalMessage(short msgType)
        {
            var networkWriter = new QNetworkWriter();

            networkWriter.StartMessage(msgType);
            networkWriter.FinishMessage();
            PostInternalMessage(networkWriter.AsArray(), 0);
        }
예제 #14
0
 public override void Serialize(QNetworkWriter writer)
 {
     writer.Write((ushort)scripts.Length);
     for (var i = 0; i < scripts.Length; i++)
     {
         writer.Write(scripts[i].name);
         writer.Write(scripts[i].channel);
     }
 }
 public void Awake()
 {
     m_PrevPosition = transform.position;
     m_PrevRotation = transform.rotation;
     if (LocalPlayerAuthority)
     {
         m_LocalTransformWriter = new QNetworkWriter();
     }
 }
예제 #16
0
        internal void InvokeHandlerOnClient(short msgType, QMessageBase msg, int channelId)
        {
            var networkWriter = new QNetworkWriter();

            networkWriter.StartMessage(msgType);
            msg.Serialize(networkWriter);
            networkWriter.FinishMessage();
            InvokeBytesOnClient(networkWriter.AsArray(), channelId);
        }
예제 #17
0
        public override void Serialize(QNetworkWriter writer)
        {
            base.Serialize(writer);
            writer.Write(ObjectId);
            writer.Write(Position);
            writer.Write(Normal);
            var qsbSector = QSBWorldSync.GetWorldFromUnity <QSBSector, Sector>(Sector);

            writer.Write(qsbSector.ObjectId);
        }
 private void SerializeModeTransform(QNetworkWriter writer)
 {
     writer.Write(transform.position);
     if (SyncRotationAxis != AxisSyncMode.None)
     {
         SerializeRotation3D(writer, transform.rotation, SyncRotationAxis, RotationSyncCompression);
     }
     m_PrevPosition = transform.position;
     m_PrevRotation = transform.rotation;
 }
 protected void SendTargetRPCInternal(QNetworkConnection conn, QNetworkWriter writer, int channelId, string rpcName)
 {
     if (!IsServer)
     {
         QLog.Warning("TargetRpc call on un-spawned object");
         return;
     }
     writer.FinishMessage();
     conn.SendWriter(writer, channelId);
 }
 protected void SendEventInternal(QNetworkWriter writer, int channelId, string eventName)
 {
     if (!QNetworkServer.active)
     {
         QLog.Error($"Tried to send event {eventName} on channel {channelId} but QSBNetworkServer isn't active.");
         return;
     }
     writer.FinishMessage();
     QNetworkServer.SendWriterToReady(gameObject, writer, channelId);
 }
 protected void SendRPCInternal(QNetworkWriter writer, int channelId, string rpcName)
 {
     if (!IsServer)
     {
         QLog.Warning("ClientRpc call on un-spawned object");
         return;
     }
     writer.FinishMessage();
     QNetworkServer.SendWriterToReady(gameObject, writer, channelId);
 }
 public override bool OnSerialize(QNetworkWriter writer, bool initialState)
 {
     if (!initialState)
     {
         if (SyncVarDirtyBits == 0U)
         {
             writer.WritePackedUInt32(0U);
             return(false);
         }
         writer.WritePackedUInt32(1U);
     }
     SerializeModeTransform(writer);
     return(true);
 }
 protected void SendCommandInternal(QNetworkWriter writer, int channelId, string cmdName)
 {
     if (!IsLocalPlayer && !HasAuthority)
     {
         QLog.Warning("Trying to send command for object without authority.");
     }
     else if (QClientScene.readyConnection == null)
     {
         QLog.Error($"Send command attempted with no client running [client={ConnectionToServer}].");
     }
     else
     {
         writer.FinishMessage();
         QClientScene.readyConnection.SendWriter(writer, channelId);
     }
 }
 private static void WriteAngle(QNetworkWriter writer, float angle, CompressionSyncMode compression)
 {
     if (compression != CompressionSyncMode.None)
     {
         if (compression != CompressionSyncMode.Low)
         {
             if (compression == CompressionSyncMode.High)
             {
                 writer.Write((short)angle);
             }
         }
         else
         {
             writer.Write((short)angle);
         }
     }
     else
     {
         writer.Write(angle);
     }
 }
        public static void SerializeRotation3D(QNetworkWriter writer, Quaternion rot, AxisSyncMode mode, CompressionSyncMode compression)
        {
            switch (mode)
            {
            case AxisSyncMode.AxisX:
                WriteAngle(writer, rot.eulerAngles.x, compression);
                break;

            case AxisSyncMode.AxisY:
                WriteAngle(writer, rot.eulerAngles.y, compression);
                break;

            case AxisSyncMode.AxisZ:
                WriteAngle(writer, rot.eulerAngles.z, compression);
                break;

            case AxisSyncMode.AxisXY:
                WriteAngle(writer, rot.eulerAngles.x, compression);
                WriteAngle(writer, rot.eulerAngles.y, compression);
                break;

            case AxisSyncMode.AxisXZ:
                WriteAngle(writer, rot.eulerAngles.x, compression);
                WriteAngle(writer, rot.eulerAngles.z, compression);
                break;

            case AxisSyncMode.AxisYZ:
                WriteAngle(writer, rot.eulerAngles.y, compression);
                WriteAngle(writer, rot.eulerAngles.z, compression);
                break;

            case AxisSyncMode.AxisXYZ:
                WriteAngle(writer, rot.eulerAngles.x, compression);
                WriteAngle(writer, rot.eulerAngles.y, compression);
                WriteAngle(writer, rot.eulerAngles.z, compression);
                break;
            }
        }
        public static void SerializeSpin3D(QNetworkWriter writer, Vector3 angularVelocity, AxisSyncMode mode, CompressionSyncMode compression)
        {
            switch (mode)
            {
            case AxisSyncMode.AxisX:
                WriteAngle(writer, angularVelocity.x, compression);
                break;

            case AxisSyncMode.AxisY:
                WriteAngle(writer, angularVelocity.y, compression);
                break;

            case AxisSyncMode.AxisZ:
                WriteAngle(writer, angularVelocity.z, compression);
                break;

            case AxisSyncMode.AxisXY:
                WriteAngle(writer, angularVelocity.x, compression);
                WriteAngle(writer, angularVelocity.y, compression);
                break;

            case AxisSyncMode.AxisXZ:
                WriteAngle(writer, angularVelocity.x, compression);
                WriteAngle(writer, angularVelocity.z, compression);
                break;

            case AxisSyncMode.AxisYZ:
                WriteAngle(writer, angularVelocity.y, compression);
                WriteAngle(writer, angularVelocity.z, compression);
                break;

            case AxisSyncMode.AxisXYZ:
                WriteAngle(writer, angularVelocity.x, compression);
                WriteAngle(writer, angularVelocity.y, compression);
                WriteAngle(writer, angularVelocity.z, compression);
                break;
            }
        }
예제 #27
0
 public override void Serialize(QNetworkWriter writer)
 {
     base.Serialize(writer);
     writer.Write(StateIndex);
 }
예제 #28
0
 public override void Serialize(QNetworkWriter writer) => writer.Write((ushort)PlayerControllerId);
예제 #29
0
 public override void Serialize(QNetworkWriter writer) => writer.WritePackedUInt32(State);
 public override void Serialize(QNetworkWriter writer)
 {
     writer.Write(netId);
     writer.Write(authority);
 }