/// <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)); }
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); }