make syncbase generic

This commit is contained in:
JohnCorby 2021-12-13 12:42:27 -08:00
parent 1c050e07db
commit b5f12796af
11 changed files with 43 additions and 31 deletions

View File

@ -72,8 +72,8 @@ namespace QSB.OrbSync.TransformSync
return QSBWorldSync.OldOrbList[_index].transform; return QSBWorldSync.OldOrbList[_index].transform;
} }
protected override Component InitLocalTransform() => GetTransform(); protected override Transform InitLocalTransform() => GetTransform();
protected override Component InitRemoteTransform() => GetTransform(); protected override Transform InitRemoteTransform() => GetTransform();
protected override float DistanceLeeway => 1f; protected override float DistanceLeeway => 1f;
public override bool IsReady => WorldObjectManager.AllObjectsReady; public override bool IsReady => WorldObjectManager.AllObjectsReady;

View File

@ -96,7 +96,7 @@ namespace QSB.Player.TransformSync
} }
} }
protected override Component InitLocalTransform() protected override Transform InitLocalTransform()
{ {
QSBCore.UnityEvents.RunWhen(() => WorldObjectManager.AllObjectsReady, () => SectorSync.Init(Locator.GetPlayerSectorDetector(), TargetType.Player)); QSBCore.UnityEvents.RunWhen(() => WorldObjectManager.AllObjectsReady, () => SectorSync.Init(Locator.GetPlayerSectorDetector(), TargetType.Player));
@ -127,7 +127,7 @@ namespace QSB.Player.TransformSync
return player; return player;
} }
protected override Component InitRemoteTransform() protected override Transform InitRemoteTransform()
{ {
/* /*
* CREATE PLAYER STRUCTURE * CREATE PLAYER STRUCTURE

View File

@ -18,7 +18,7 @@ namespace QSB.SectorSync
private void OnEnable() => RepeatingManager.Repeatings.Add(this); private void OnEnable() => RepeatingManager.Repeatings.Add(this);
private void OnDisable() => RepeatingManager.Repeatings.Remove(this); private void OnDisable() => RepeatingManager.Repeatings.Remove(this);
public List<BaseSectoredSync> SectoredSyncs = new(); public List<IBaseSectoredSync> SectoredSyncs = new();
public void Invoke() public void Invoke()
{ {
@ -29,13 +29,13 @@ namespace QSB.SectorSync
foreach (var sync in SectoredSyncs) foreach (var sync in SectoredSyncs)
{ {
if (sync.AttachedObject == null) if (sync.ReturnObject() == null)
{ {
continue; continue;
} }
if (sync.HasAuthority if (sync.HasAuthority
&& sync.AttachedObject.gameObject.activeInHierarchy && sync.ReturnObject().gameObject.activeInHierarchy
&& sync.IsReady && sync.IsReady
&& sync.SectorSync.IsReady) && sync.SectorSync.IsReady)
{ {
@ -74,9 +74,9 @@ namespace QSB.SectorSync
IsReady = QSBWorldSync.GetWorldObjects<QSBSector>().Any(); IsReady = QSBWorldSync.GetWorldObjects<QSBSector>().Any();
} }
private void CheckTransformSyncSector(BaseSectoredSync transformSync) private void CheckTransformSyncSector(IBaseSectoredSync transformSync)
{ {
var attachedObject = transformSync.AttachedObject; var attachedObject = transformSync.ReturnObject();
var closestSector = transformSync.SectorSync.GetClosestSector(attachedObject.transform); var closestSector = transformSync.SectorSync.GetClosestSector(attachedObject.transform);
if (closestSector == default(QSBSector)) if (closestSector == default(QSBSector))
{ {

View File

@ -5,14 +5,26 @@ using QSB.SectorSync.WorldObjects;
using QSB.Utility; using QSB.Utility;
using QSB.WorldSync; using QSB.WorldSync;
using QuantumUNET.Transport; using QuantumUNET.Transport;
using UnityEngine;
namespace QSB.Syncs.Sectored namespace QSB.Syncs.Sectored
{ {
public abstract class BaseSectoredSync : SyncBase public interface IBaseSectoredSync
{
Component ReturnObject();
bool HasAuthority { get; }
bool IsReady { get; }
SectorSync.SectorSync SectorSync { get; }
QSBSector ReferenceSector { get; }
void SetReferenceSector(QSBSector closestSector);
}
public abstract class BaseSectoredSync<T> : SyncBase<T>, IBaseSectoredSync where T : Component
{ {
public override bool IgnoreDisabledAttachedObject => false; public override bool IgnoreDisabledAttachedObject => false;
public override bool IgnoreNullReferenceTransform => true; public override bool IgnoreNullReferenceTransform => true;
public Component ReturnObject() => AttachedObject;
public QSBSector ReferenceSector { get; set; } public QSBSector ReferenceSector { get; set; }
public SectorSync.SectorSync SectorSync { get; private set; } public SectorSync.SectorSync SectorSync { get; private set; }

View File

@ -6,7 +6,7 @@ using UnityEngine;
namespace QSB.Syncs.Sectored.Rigidbodies namespace QSB.Syncs.Sectored.Rigidbodies
{ {
public abstract class SectoredRigidbodySync : BaseSectoredSync public abstract class SectoredRigidbodySync : BaseSectoredSync<OWRigidbody>
{ {
public override bool ShouldReparentAttachedObject => false; public override bool ShouldReparentAttachedObject => false;
@ -35,7 +35,7 @@ namespace QSB.Syncs.Sectored.Rigidbodies
protected abstract OWRigidbody GetRigidbody(); protected abstract OWRigidbody GetRigidbody();
protected override Component SetAttachedObject() protected override OWRigidbody SetAttachedObject()
=> GetRigidbody(); => GetRigidbody();
public override void SerializeTransform(QNetworkWriter writer, bool initialState) public override void SerializeTransform(QNetworkWriter writer, bool initialState)

View File

@ -6,14 +6,14 @@ using UnityEngine;
namespace QSB.Syncs.Sectored.Transforms namespace QSB.Syncs.Sectored.Transforms
{ {
public abstract class SectoredTransformSync : BaseSectoredSync public abstract class SectoredTransformSync : BaseSectoredSync<Transform>
{ {
public override bool ShouldReparentAttachedObject => true; public override bool ShouldReparentAttachedObject => true;
protected abstract Component InitLocalTransform(); protected abstract Transform InitLocalTransform();
protected abstract Component InitRemoteTransform(); protected abstract Transform InitRemoteTransform();
protected override Component SetAttachedObject() protected override Transform SetAttachedObject()
=> HasAuthority ? InitLocalTransform() : InitRemoteTransform(); => HasAuthority ? InitLocalTransform() : InitRemoteTransform();
public override void SerializeTransform(QNetworkWriter writer, bool initialState) public override void SerializeTransform(QNetworkWriter writer, bool initialState)

View File

@ -5,7 +5,6 @@ using QSB.Utility;
using QSB.WorldSync; using QSB.WorldSync;
using QuantumUNET.Components; using QuantumUNET.Components;
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using UnityEngine; using UnityEngine;
@ -16,7 +15,7 @@ namespace QSB.Syncs
* God has cursed me for my hubris, and my work is never finished. * God has cursed me for my hubris, and my work is never finished.
*/ */
public abstract class SyncBase : QNetworkTransform public abstract class SyncBase<T> : QNetworkTransform where T: Component
{ {
public uint AttachedNetId public uint AttachedNetId
{ {
@ -98,7 +97,7 @@ namespace QSB.Syncs
public abstract bool ShouldReparentAttachedObject { get; } public abstract bool ShouldReparentAttachedObject { get; }
public abstract bool IsPlayerObject { get; } public abstract bool IsPlayerObject { get; }
public Component AttachedObject { get; set; } public T AttachedObject { get; set; }
public Transform ReferenceTransform { get; set; } public Transform ReferenceTransform { get; set; }
public string LogName => $"{PlayerId}.{NetId.Value}:{GetType().Name}"; public string LogName => $"{PlayerId}.{NetId.Value}:{GetType().Name}";
@ -109,7 +108,7 @@ namespace QSB.Syncs
protected Quaternion _rotationSmoothVelocity; protected Quaternion _rotationSmoothVelocity;
protected bool _isInitialized; protected bool _isInitialized;
protected abstract Component SetAttachedObject(); protected abstract T SetAttachedObject();
protected abstract bool UpdateTransform(); protected abstract bool UpdateTransform();
public virtual void Start() public virtual void Start()

View File

@ -1,8 +1,9 @@
using QuantumUNET.Transport; using QuantumUNET.Transport;
using UnityEngine;
namespace QSB.Syncs.Unsectored namespace QSB.Syncs.Unsectored
{ {
public abstract class BaseUnsectoredSync : SyncBase public abstract class BaseUnsectoredSync<T> : SyncBase<T> where T : Component
{ {
public override bool IgnoreDisabledAttachedObject => false; public override bool IgnoreDisabledAttachedObject => false;
public override bool IgnoreNullReferenceTransform => false; public override bool IgnoreNullReferenceTransform => false;

View File

@ -5,7 +5,7 @@ using UnityEngine;
namespace QSB.Syncs.Unsectored.Rigidbodies namespace QSB.Syncs.Unsectored.Rigidbodies
{ {
public abstract class UnsectoredRigidbodySync : BaseUnsectoredSync public abstract class UnsectoredRigidbodySync : BaseUnsectoredSync<OWRigidbody>
{ {
public const float PositionMovedThreshold = 0.05f; public const float PositionMovedThreshold = 0.05f;
public const float AngleRotatedThreshold = 0.05f; public const float AngleRotatedThreshold = 0.05f;
@ -31,7 +31,7 @@ namespace QSB.Syncs.Unsectored.Rigidbodies
protected Vector3 _localPrevAngularVelocity; protected Vector3 _localPrevAngularVelocity;
protected abstract OWRigidbody GetRigidbody(); protected abstract OWRigidbody GetRigidbody();
protected override Component SetAttachedObject() protected override OWRigidbody SetAttachedObject()
=> GetRigidbody(); => GetRigidbody();
public override void SerializeTransform(QNetworkWriter writer, bool initialState) public override void SerializeTransform(QNetworkWriter writer, bool initialState)

View File

@ -5,12 +5,12 @@ using UnityEngine;
namespace QSB.Syncs.Unsectored.Transforms namespace QSB.Syncs.Unsectored.Transforms
{ {
public abstract class UnsectoredTransformSync : BaseUnsectoredSync public abstract class UnsectoredTransformSync : BaseUnsectoredSync<Transform>
{ {
protected abstract Component InitLocalTransform(); protected abstract Transform InitLocalTransform();
protected abstract Component InitRemoteTransform(); protected abstract Transform InitRemoteTransform();
protected override Component SetAttachedObject() protected override Transform SetAttachedObject()
=> HasAuthority ? InitLocalTransform() : InitRemoteTransform(); => HasAuthority ? InitLocalTransform() : InitRemoteTransform();
public override void SerializeTransform(QNetworkWriter writer, bool initialState) public override void SerializeTransform(QNetworkWriter writer, bool initialState)

View File

@ -21,7 +21,7 @@ namespace QSB.Tools.ProbeTool.TransformSync
public override void OnStartAuthority() => LocalInstance = this; public override void OnStartAuthority() => LocalInstance = this;
protected override Component InitLocalTransform() protected override Transform InitLocalTransform()
{ {
QSBCore.UnityEvents.RunWhen(() => WorldObjectManager.AllObjectsReady, () => SectorSync.Init(Locator.GetProbe().GetSectorDetector(), TargetType.Probe)); QSBCore.UnityEvents.RunWhen(() => WorldObjectManager.AllObjectsReady, () => SectorSync.Init(Locator.GetProbe().GetSectorDetector(), TargetType.Probe));
@ -43,7 +43,7 @@ namespace QSB.Tools.ProbeTool.TransformSync
return body; return body;
} }
protected override Component InitRemoteTransform() protected override Transform InitRemoteTransform()
{ {
var probe = Locator.GetProbe().transform; var probe = Locator.GetProbe().transform;