merge de/ser again, just make sure that it doesnt mess with anything (ie store and defer to getfrom/applytoattached

This commit is contained in:
JohnCorby 2022-01-16 07:23:35 -08:00
parent 7f1c6ea6c8
commit 0912b6cee0
15 changed files with 109 additions and 81 deletions

View File

@ -65,25 +65,36 @@ namespace QSB.JellyfishSync.TransformSync
private void OnUnsuspend(OWRigidbody suspendedBody) => netIdentity.SendAuthQueueMessage(AuthQueueAction.Add);
private void OnSuspend(OWRigidbody suspendedBody) => netIdentity.SendAuthQueueMessage(AuthQueueAction.Remove);
protected override void Serialize(NetworkWriter writer)
{
base.Serialize(writer);
private bool _isRising;
_qsbJellyfish.Align = true;
writer.Write(_qsbJellyfish.IsRising);
protected override void Serialize(NetworkWriter writer, bool initialState)
{
base.Serialize(writer, initialState);
writer.Write(_isRising);
}
protected override void Deserialize(NetworkReader reader)
protected override void Deserialize(NetworkReader reader, bool initialState)
{
base.Deserialize(reader);
base.Deserialize(reader, initialState);
_qsbJellyfish.Align = false;
_qsbJellyfish.IsRising = reader.ReadBool();
_isRising = reader.ReadBool();
}
protected override void GetFromAttached()
{
base.GetFromAttached();
_qsbJellyfish.Align = true;
_isRising = _qsbJellyfish.IsRising;
}
/// replacement using SetPosition/Rotation instead of Move
protected override void ApplyToAttached()
{
_qsbJellyfish.Align = false;
_qsbJellyfish.IsRising = _isRising;
var pos = ReferenceTransform.FromRelPos(transform.position);
AttachedRigidbody.SetPosition(pos);
AttachedRigidbody.SetRotation(ReferenceTransform.FromRelRot(transform.rotation));

View File

@ -29,6 +29,8 @@ namespace QSB.ShipSync.TransformSync
protected override void ApplyToAttached()
{
base.ApplyToAttached();
if (ReferenceTransform == null || transform.position == Vector3.zero)
{
return;

View File

@ -21,13 +21,13 @@ namespace QSB.Syncs
Vector3.Distance(transform.position, _prevPosition) > 1E-05f ||
Quaternion.Angle(transform.rotation, _prevRotation) > 1E-05f;
protected override void Serialize(NetworkWriter writer)
protected override void Serialize(NetworkWriter writer, bool initialState)
{
writer.Write(transform.position);
writer.Write(transform.rotation);
}
protected override void Deserialize(NetworkReader reader)
protected override void Deserialize(NetworkReader reader, bool initialState)
{
transform.position = reader.ReadVector3();
transform.rotation = reader.ReadQuaternion();

View File

@ -23,13 +23,13 @@ namespace QSB.Syncs
Vector3.Distance(Target.localPosition, _prevPosition) > 1E-05f ||
Quaternion.Angle(Target.localRotation, _prevRotation) > 1E-05f;
protected override void Serialize(NetworkWriter writer)
protected override void Serialize(NetworkWriter writer, bool initialState)
{
writer.Write(Target.localPosition);
writer.Write(Target.localRotation);
}
protected override void Deserialize(NetworkReader reader)
protected override void Deserialize(NetworkReader reader, bool initialState)
{
Target.localPosition = reader.ReadVector3();
Target.localRotation = reader.ReadQuaternion();

View File

@ -1,8 +1,6 @@
using Mirror;
using OWML.Common;
using QSB.SectorSync;
using QSB.SectorSync.WorldObjects;
using QSB.Utility;
using QSB.WorldSync;
namespace QSB.Syncs.Sectored
@ -15,6 +13,8 @@ namespace QSB.Syncs.Sectored
public QSBSector ReferenceSector { get; private set; }
public SectorSync.SectorSync SectorSync { get; private set; }
private int _sectorId;
public override void Start()
{
SectorSync = gameObject.AddComponent<SectorSync.SectorSync>();
@ -26,10 +26,7 @@ namespace QSB.Syncs.Sectored
{
base.OnDestroy();
QSBSectorManager.Instance.TransformSyncs.Remove(this);
if (SectorSync != null)
{
Destroy(SectorSync);
}
Destroy(SectorSync);
}
protected override void OnSceneLoaded(OWScene oldScene, OWScene newScene, bool isInUniverse)
@ -38,33 +35,38 @@ namespace QSB.Syncs.Sectored
SetReferenceSector(null);
}
protected override void Serialize(NetworkWriter writer)
protected override void Serialize(NetworkWriter writer, bool initialState)
{
base.Serialize(writer);
if (ReferenceSector == null)
{
DebugLog.ToConsole($"Warning - ReferenceSector of {LogName} is null.", MessageType.Warning);
writer.Write(-1);
return;
}
writer.Write(ReferenceSector.ObjectId);
base.Serialize(writer, initialState);
writer.Write(_sectorId);
}
protected override void Deserialize(NetworkReader reader)
protected override void Deserialize(NetworkReader reader, bool initialState)
{
base.Deserialize(reader);
base.Deserialize(reader, initialState);
_sectorId = reader.ReadInt();
}
var sectorId = reader.ReadInt();
if (sectorId == -1)
protected override void GetFromAttached()
{
if (ReferenceSector != null)
{
_sectorId = ReferenceSector.ObjectId;
}
else
{
_sectorId = -1;
}
}
protected override void ApplyToAttached()
{
if (_sectorId == -1)
{
DebugLog.ToConsole($"Error - {LogName} got sector of ID -1. (From deserializing transform.)", MessageType.Error);
return;
}
var sector = sectorId.GetWorldObject<QSBSector>();
SetReferenceSector(sector);
ReferenceSector = _sectorId.GetWorldObject<QSBSector>();
}
public void SetReferenceSector(QSBSector sector)

View File

@ -36,27 +36,24 @@ namespace QSB.Syncs.Sectored.Rigidbodies
_prevAngularVelocity = _relativeAngularVelocity;
}
protected override void Serialize(NetworkWriter writer)
protected override void Serialize(NetworkWriter writer, bool initialState)
{
base.Serialize(writer);
base.Serialize(writer, initialState);
writer.Write(_relativeVelocity);
writer.Write(_relativeAngularVelocity);
}
protected override void Deserialize(NetworkReader reader)
protected override void Deserialize(NetworkReader reader, bool initialState)
{
base.Deserialize(reader);
base.Deserialize(reader, initialState);
_relativeVelocity = reader.ReadVector3();
_relativeAngularVelocity = reader.ReadVector3();
if (transform.position == Vector3.zero)
{
DebugLog.ToConsole($"Warning - {LogName} at (0,0,0)!", MessageType.Warning);
}
}
protected override void GetFromAttached()
{
base.GetFromAttached();
if (ReferenceTransform != null)
{
transform.position = ReferenceTransform.ToRelPos(AttachedRigidbody.GetPosition());
@ -75,8 +72,11 @@ namespace QSB.Syncs.Sectored.Rigidbodies
protected override void ApplyToAttached()
{
base.ApplyToAttached();
if (ReferenceTransform == null || transform.position == Vector3.zero)
{
DebugLog.ToConsole($"Warning - {LogName} at (0,0,0)!", MessageType.Warning);
return;
}

View File

@ -15,18 +15,19 @@ namespace QSB.Syncs.Sectored.Transforms
protected override Transform InitAttachedTransform()
=> hasAuthority ? InitLocalTransform() : InitRemoteTransform();
protected override void Deserialize(NetworkReader reader)
protected override void Deserialize(NetworkReader reader, bool initialState)
{
base.Deserialize(reader);
base.Deserialize(reader, initialState);
if (transform.position == Vector3.zero)
{
DebugLog.ToConsole($"Warning - {LogName} at (0,0,0)!", MessageType.Warning);
}
}
protected override void GetFromAttached()
{
base.GetFromAttached();
if (ReferenceTransform != null)
{
transform.position = ReferenceTransform.ToRelPos(AttachedTransform.position);
@ -41,8 +42,11 @@ namespace QSB.Syncs.Sectored.Transforms
protected override void ApplyToAttached()
{
base.ApplyToAttached();
if (ReferenceTransform == null || transform.position == Vector3.zero)
{
DebugLog.ToConsole($"Warning - {LogName} at (0,0,0)!", MessageType.Warning);
return;
}

View File

@ -118,9 +118,9 @@ namespace QSB.Syncs
protected virtual void OnSceneLoaded(OWScene oldScene, OWScene newScene, bool isInUniverse) => IsInitialized = false;
private bool _shouldApply;
protected override void Deserialize(NetworkReader reader)
protected override void Deserialize(NetworkReader reader, bool initialState)
{
base.Deserialize(reader);
base.Deserialize(reader, initialState);
if (OnlyApplyOnDeserialize)
{
_shouldApply = true;
@ -180,7 +180,7 @@ namespace QSB.Syncs
return;
}
if (!hasAuthority && UseInterpolation)
if (UseInterpolation)
{
SmoothPosition = SmartSmoothDamp(SmoothPosition, transform.position);
SmoothRotation = SmartSmoothDamp(SmoothRotation, transform.rotation);

View File

@ -33,16 +33,16 @@ namespace QSB.Syncs.Unsectored.Rigidbodies
_prevAngularVelocity = _relativeAngularVelocity;
}
protected override void Serialize(NetworkWriter writer)
protected override void Serialize(NetworkWriter writer, bool initialState)
{
base.Serialize(writer);
base.Serialize(writer, initialState);
writer.Write(_relativeVelocity);
writer.Write(_relativeAngularVelocity);
}
protected override void Deserialize(NetworkReader reader)
protected override void Deserialize(NetworkReader reader, bool initialState)
{
base.Deserialize(reader);
base.Deserialize(reader, initialState);
_relativeVelocity = reader.ReadVector3();
_relativeAngularVelocity = reader.ReadVector3();
}

View File

@ -12,16 +12,16 @@ namespace QSB.Syncs.Unsectored.Transforms
protected override Transform InitAttachedTransform()
=> hasAuthority ? InitLocalTransform() : InitRemoteTransform();
protected override void Serialize(NetworkWriter writer)
protected override void Serialize(NetworkWriter writer, bool initialState)
{
base.Serialize(writer);
base.Serialize(writer, initialState);
writer.Write(transform.position);
writer.Write(transform.rotation);
}
protected override void Deserialize(NetworkReader reader)
protected override void Deserialize(NetworkReader reader, bool initialState)
{
base.Deserialize(reader);
base.Deserialize(reader, initialState);
transform.position = reader.ReadVector3();
transform.rotation = reader.ReadQuaternion();
}

View File

@ -47,16 +47,26 @@ namespace QSB.TornadoSync.TransformSync
.ToArray();
}
protected override void SerializeInitial(NetworkWriter writer)
protected override void Serialize(NetworkWriter writer, bool initialState)
{
writer.Write(_bodyIndex);
writer.Write(_refBodyIndex);
base.Serialize(writer, initialState);
if (initialState)
{
writer.Write(_bodyIndex);
writer.Write(_refBodyIndex);
}
}
protected override void DeserializeInitial(NetworkReader reader)
protected override void Deserialize(NetworkReader reader, bool initialState)
{
_bodyIndex = reader.ReadInt();
_refBodyIndex = reader.ReadInt();
base.Deserialize(reader, initialState);
if (initialState)
{
_bodyIndex = reader.ReadInt();
_refBodyIndex = reader.ReadInt();
}
}
protected override void ApplyToAttached()

View File

@ -10,15 +10,13 @@ namespace QSB.Utility
private double _lastSendTime;
protected virtual void SerializeInitial(NetworkWriter writer) { }
protected virtual void DeserializeInitial(NetworkReader reader) { }
public sealed override bool OnSerialize(NetworkWriter writer, bool initialState)
{
var changed = base.OnSerialize(writer, initialState);
if (initialState && isServer)
{
SerializeInitial(writer);
Serialize(writer, true);
UpdatePrevData();
}
return changed;
@ -29,14 +27,15 @@ namespace QSB.Utility
base.OnDeserialize(reader, initialState);
if (initialState && !isServer)
{
DeserializeInitial(reader);
UpdatePrevData();
Deserialize(reader, true);
}
}
protected abstract bool HasChanged();
protected abstract void UpdatePrevData();
protected abstract void Serialize(NetworkWriter writer);
protected abstract void Deserialize(NetworkReader reader);
protected abstract void Serialize(NetworkWriter writer, bool initialState);
protected abstract void Deserialize(NetworkReader reader, bool initialState);
protected virtual void Update()
{
@ -65,7 +64,7 @@ namespace QSB.Utility
}
using var writer = NetworkWriterPool.GetWriter();
Serialize(writer);
Serialize(writer, false);
UpdatePrevData();
var data = writer.ToArraySegment();
@ -96,7 +95,7 @@ namespace QSB.Utility
{
using var reader = NetworkReaderPool.GetReader(data);
UpdatePrevData();
Deserialize(reader);
Deserialize(reader, false);
}
}
}

View File

@ -11,7 +11,7 @@ namespace QSB.Utility.VariableSync
protected override bool HasChanged() => Value != _prevValue;
protected override void UpdatePrevData() => _prevValue = Value;
protected override void Serialize(NetworkWriter writer) => writer.Write(Value);
protected override void Deserialize(NetworkReader reader) => Value = reader.Read<bool>();
protected override void Serialize(NetworkWriter writer, bool initialState) => writer.Write(Value);
protected override void Deserialize(NetworkReader reader, bool initialState) => Value = reader.Read<bool>();
}
}

View File

@ -11,7 +11,7 @@ namespace QSB.Utility.VariableSync
protected override bool HasChanged() => Value != _prevValue;
protected override void UpdatePrevData() => _prevValue = Value;
protected override void Serialize(NetworkWriter writer) => writer.Write(Value);
protected override void Deserialize(NetworkReader reader) => Value = reader.Read<float>();
protected override void Serialize(NetworkWriter writer, bool initialState) => writer.Write(Value);
protected override void Deserialize(NetworkReader reader, bool initialState) => Value = reader.Read<float>();
}
}

View File

@ -12,7 +12,7 @@ namespace QSB.Utility.VariableSync
protected override bool HasChanged() => Value != _prevValue;
protected override void UpdatePrevData() => _prevValue = Value;
protected override void Serialize(NetworkWriter writer) => writer.Write(Value);
protected override void Deserialize(NetworkReader reader) => Value = reader.Read<Vector3>();
protected override void Serialize(NetworkWriter writer, bool initialState) => writer.Write(Value);
protected override void Deserialize(NetworkReader reader, bool initialState) => Value = reader.Read<Vector3>();
}
}