/// <summary>
        ///     Writes vector3.
        /// </summary>
        public static void WriteFixedVector3(this QNetMessageWriter writer, Vector3 previous, Vector3 vector,
                                             float step = 0.1f)
        {
            var flag = NetworkVectorAxis.None;

            if (Mathf.Abs(previous.x - vector.x) > step)
            {
                flag |= NetworkVectorAxis.X;
            }

            if (Mathf.Abs(previous.y - vector.y) > step)
            {
                flag |= NetworkVectorAxis.Y;
            }

            if (Mathf.Abs(previous.z - vector.z) > step)
            {
                flag |= NetworkVectorAxis.Z;
            }

            writer.WriteByte((byte)flag);
            if (flag.HasFlag(NetworkVectorAxis.X))
            {
                writer.WriteSingle(vector.x);
            }
            if (flag.HasFlag(NetworkVectorAxis.Y))
            {
                writer.WriteSingle(vector.y);
            }
            if (flag.HasFlag(NetworkVectorAxis.Z))
            {
                writer.WriteSingle(vector.z);
            }
        }
 /// <summary>
 ///     Writes vector4.
 /// </summary>
 public static void WriteVector4(this QNetMessageWriter writer, Vector4 vector)
 {
     writer.WriteSingle(vector.x);
     writer.WriteSingle(vector.y);
     writer.WriteSingle(vector.z);
     writer.WriteSingle(vector.w);
 }
 /// <inheritdoc />
 public override void Serialize(QNetMessageWriter writer)
 {
     writer.WriteInt16(ObjectIdentity);
     writer.WriteInt16(PrefabIdentity);
     writer.WriteInt16(OwnerIdentity);
     writer.WriteVector3(Position);
     writer.WriteVector3(Rotation.eulerAngles);
     writer.WriteVector3(Scale);
 }
 /// <summary>
 ///     Serializes current state of object from server side.
 ///     In most cases used to update current state of object on all clients.
 /// </summary>
 public virtual void SerializeServerObjectState(QNetMessageWriter writer)
 {
     // serialize some cool data like for example: current animations or currently used tools by character
 }
示例#5
0
 /// <summary>
 ///     Sends message to server.
 /// </summary>
 /// <param name="client">The Client.</param>
 /// <param name="channel">Channel of message.</param>
 /// <param name="method">Method of message sending.</param>
 /// <param name="writer">Message to send.</param>
 public static void Send(this QNetClient client, QNetUnityLocalChannel channel, QNetMessageMethod method,
                         QNetMessageWriter writer)
 {
     client.Send((byte)channel, method, writer);
 }
示例#6
0
 /// <inheritdoc />
 public override void Serialize(QNetMessageWriter writer)
 {
     writer.WriteInt16(ConnectionIdentity);
     writer.WriteString(NickName);
 }
示例#7
0
 /// <summary>
 ///     Sends message to given connection.
 /// </summary>
 /// <param name="connection">The connection.</param>
 /// <param name="channel">Channel of message.</param>
 /// <param name="method">Method of message sending.</param>
 /// <param name="writer">Message to send.</param>
 public static void Send(this QNetConnection connection, QNetUnityLocalChannel channel, QNetMessageMethod method,
                         QNetMessageWriter writer)
 {
     connection.Send((byte)channel, method, writer);
 }
示例#8
0
 /// <summary>
 ///     Sends message to given connection.
 /// </summary>
 /// <param name="server">Our Server.</param>
 /// <param name="except">Message will be send to all connections except this.</param>
 /// <param name="channel">Channel of message.</param>
 /// <param name="method">Method of message sending.</param>
 /// <param name="writer">Message to send.</param>
 public static void SendToAll(this QNetServer server, QNetConnection except, QNetLocalHeader channel,
                              QNetMessageMethod method, QNetMessageWriter writer)
 {
     server.SendToAll(except, (byte)channel, method, writer);
 }
示例#9
0
 /// <summary>
 ///     Sends message to given connection.
 /// </summary>
 /// <param name="server">Our Server.</param>
 /// <param name="channel">Channel of message.</param>
 /// <param name="method">Method of message sending.</param>
 /// <param name="writer">Message to send.</param>
 public static void SendToAll(this QNetServer server, QNetLocalChannel channel, QNetMessageMethod method,
                              QNetMessageWriter writer)
 {
     server.SendToAll((byte)channel, method, writer);
 }
示例#10
0
 /// <summary>
 ///     Sends message to given connection.
 /// </summary>
 /// <param name="server">Our Server.</param>
 /// <param name="connection">Target connection of message.</param>
 /// <param name="channel">Channel of message.</param>
 /// <param name="method">Method of message sending.</param>
 /// <param name="writer">Message to send.</param>
 public static void Send(this QNetServer server, QNetConnection connection, QNetLocalChannel channel,
                         QNetMessageMethod method, QNetMessageWriter writer)
 {
     server.Send(connection, (byte)channel, method, writer);
 }