mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-22 21:40:39 +00:00
make syncbase generic
This commit is contained in:
parent
1c050e07db
commit
b5f12796af
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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))
|
||||||
{
|
{
|
||||||
|
@ -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; }
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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()
|
||||||
|
@ -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;
|
||||||
|
@ -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)
|
||||||
|
@ -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)
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user