/// <summary>
        ///     Reads fixed vector3.
        /// </summary>
        public static Vector3 ReadFixedVector3(this QNetMessageReader reader, Vector3 previousVector3)
        {
            var flag = (NetworkVectorAxis)reader.ReadByte();
            var x    = previousVector3.x;
            var y    = previousVector3.y;
            var z    = previousVector3.z;

            if (flag.HasFlag(NetworkVectorAxis.X))
            {
                x = reader.ReadSingle();
            }
            if (flag.HasFlag(NetworkVectorAxis.Y))
            {
                y = reader.ReadSingle();
            }
            if (flag.HasFlag(NetworkVectorAxis.Z))
            {
                z = reader.ReadSingle();
            }
            return(new Vector3(x, y, z));
        }
Exemple #2
0
        public static void OnClientEntityQuery(QNetMessage message, QNetMessageReader reader, ref bool disallowRecycle)
        {
            if (!QNetWorldSerializer.WorldIsSerialized)
            {
                return; // system can't receive entity query data while initializing,
            }
            var objectIdentity = reader.ReadInt16();
            var qNetObject     = QNetObjectBehaviour.GetObject(objectIdentity);

            if (qNetObject == null)
            {
                if (QNetManager.PrintNetworkWarnings)
                {
                    JEMLogger.LogWarning(
                        $"Local machine received QNetEntity query message but object of identity {objectIdentity} not exists in local world.");
                }
                return;
            }

            var entity = qNetObject.GetComponent <QNetEntity>();

            if (entity == null)
            {
                throw new NullReferenceException(
                          $"QNetEntity query target exists but does not have {nameof(QNetEntity)} based script.");
            }

            if (message.IsClientMessage)
            {
                QNetSimulation.ReceivedServerFrame = reader.ReadUInt32();
                QNetSimulation.AdjustServerFrames  = QNetSimulation.ReceivedServerFrame > QNetTime.ServerFrame;
            }

            var index = reader.ReadByte();

            entity.InvokeNetworkMessage(index, reader);
        }