mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-21 09:39:56 +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;
|
||||
}
|
||||
|
||||
protected override Component InitLocalTransform() => GetTransform();
|
||||
protected override Component InitRemoteTransform() => GetTransform();
|
||||
protected override Transform InitLocalTransform() => GetTransform();
|
||||
protected override Transform InitRemoteTransform() => GetTransform();
|
||||
|
||||
protected override float DistanceLeeway => 1f;
|
||||
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));
|
||||
|
||||
@ -127,7 +127,7 @@ namespace QSB.Player.TransformSync
|
||||
return player;
|
||||
}
|
||||
|
||||
protected override Component InitRemoteTransform()
|
||||
protected override Transform InitRemoteTransform()
|
||||
{
|
||||
/*
|
||||
* CREATE PLAYER STRUCTURE
|
||||
|
@ -18,7 +18,7 @@ namespace QSB.SectorSync
|
||||
private void OnEnable() => RepeatingManager.Repeatings.Add(this);
|
||||
private void OnDisable() => RepeatingManager.Repeatings.Remove(this);
|
||||
|
||||
public List<BaseSectoredSync> SectoredSyncs = new();
|
||||
public List<IBaseSectoredSync> SectoredSyncs = new();
|
||||
|
||||
public void Invoke()
|
||||
{
|
||||
@ -29,13 +29,13 @@ namespace QSB.SectorSync
|
||||
|
||||
foreach (var sync in SectoredSyncs)
|
||||
{
|
||||
if (sync.AttachedObject == null)
|
||||
if (sync.ReturnObject() == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (sync.HasAuthority
|
||||
&& sync.AttachedObject.gameObject.activeInHierarchy
|
||||
&& sync.ReturnObject().gameObject.activeInHierarchy
|
||||
&& sync.IsReady
|
||||
&& sync.SectorSync.IsReady)
|
||||
{
|
||||
@ -74,9 +74,9 @@ namespace QSB.SectorSync
|
||||
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);
|
||||
if (closestSector == default(QSBSector))
|
||||
{
|
||||
|
@ -5,14 +5,26 @@ using QSB.SectorSync.WorldObjects;
|
||||
using QSB.Utility;
|
||||
using QSB.WorldSync;
|
||||
using QuantumUNET.Transport;
|
||||
using UnityEngine;
|
||||
|
||||
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 IgnoreNullReferenceTransform => true;
|
||||
|
||||
public Component ReturnObject() => AttachedObject;
|
||||
public QSBSector ReferenceSector { get; set; }
|
||||
public SectorSync.SectorSync SectorSync { get; private set; }
|
||||
|
||||
|
@ -6,7 +6,7 @@ using UnityEngine;
|
||||
|
||||
namespace QSB.Syncs.Sectored.Rigidbodies
|
||||
{
|
||||
public abstract class SectoredRigidbodySync : BaseSectoredSync
|
||||
public abstract class SectoredRigidbodySync : BaseSectoredSync<OWRigidbody>
|
||||
{
|
||||
public override bool ShouldReparentAttachedObject => false;
|
||||
|
||||
@ -35,7 +35,7 @@ namespace QSB.Syncs.Sectored.Rigidbodies
|
||||
|
||||
protected abstract OWRigidbody GetRigidbody();
|
||||
|
||||
protected override Component SetAttachedObject()
|
||||
protected override OWRigidbody SetAttachedObject()
|
||||
=> GetRigidbody();
|
||||
|
||||
public override void SerializeTransform(QNetworkWriter writer, bool initialState)
|
||||
|
@ -6,14 +6,14 @@ using UnityEngine;
|
||||
|
||||
namespace QSB.Syncs.Sectored.Transforms
|
||||
{
|
||||
public abstract class SectoredTransformSync : BaseSectoredSync
|
||||
public abstract class SectoredTransformSync : BaseSectoredSync<Transform>
|
||||
{
|
||||
public override bool ShouldReparentAttachedObject => true;
|
||||
|
||||
protected abstract Component InitLocalTransform();
|
||||
protected abstract Component InitRemoteTransform();
|
||||
protected abstract Transform InitLocalTransform();
|
||||
protected abstract Transform InitRemoteTransform();
|
||||
|
||||
protected override Component SetAttachedObject()
|
||||
protected override Transform SetAttachedObject()
|
||||
=> HasAuthority ? InitLocalTransform() : InitRemoteTransform();
|
||||
|
||||
public override void SerializeTransform(QNetworkWriter writer, bool initialState)
|
||||
|
@ -5,7 +5,6 @@ using QSB.Utility;
|
||||
using QSB.WorldSync;
|
||||
using QuantumUNET.Components;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
@ -16,7 +15,7 @@ namespace QSB.Syncs
|
||||
* 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
|
||||
{
|
||||
@ -55,8 +54,8 @@ namespace QSB.Syncs
|
||||
|
||||
public PlayerInfo Player => QSBPlayerManager.GetPlayer(PlayerId);
|
||||
|
||||
private bool _baseIsReady
|
||||
{
|
||||
private bool _baseIsReady
|
||||
{
|
||||
get
|
||||
{
|
||||
if (NetId.Value is uint.MaxValue or 0U)
|
||||
@ -98,7 +97,7 @@ namespace QSB.Syncs
|
||||
public abstract bool ShouldReparentAttachedObject { get; }
|
||||
public abstract bool IsPlayerObject { get; }
|
||||
|
||||
public Component AttachedObject { get; set; }
|
||||
public T AttachedObject { get; set; }
|
||||
public Transform ReferenceTransform { get; set; }
|
||||
|
||||
public string LogName => $"{PlayerId}.{NetId.Value}:{GetType().Name}";
|
||||
@ -109,7 +108,7 @@ namespace QSB.Syncs
|
||||
protected Quaternion _rotationSmoothVelocity;
|
||||
protected bool _isInitialized;
|
||||
|
||||
protected abstract Component SetAttachedObject();
|
||||
protected abstract T SetAttachedObject();
|
||||
protected abstract bool UpdateTransform();
|
||||
|
||||
public virtual void Start()
|
||||
|
@ -1,8 +1,9 @@
|
||||
using QuantumUNET.Transport;
|
||||
using UnityEngine;
|
||||
|
||||
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 IgnoreNullReferenceTransform => false;
|
||||
|
@ -5,7 +5,7 @@ using UnityEngine;
|
||||
|
||||
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 AngleRotatedThreshold = 0.05f;
|
||||
@ -31,7 +31,7 @@ namespace QSB.Syncs.Unsectored.Rigidbodies
|
||||
protected Vector3 _localPrevAngularVelocity;
|
||||
protected abstract OWRigidbody GetRigidbody();
|
||||
|
||||
protected override Component SetAttachedObject()
|
||||
protected override OWRigidbody SetAttachedObject()
|
||||
=> GetRigidbody();
|
||||
|
||||
public override void SerializeTransform(QNetworkWriter writer, bool initialState)
|
||||
|
@ -5,12 +5,12 @@ using UnityEngine;
|
||||
|
||||
namespace QSB.Syncs.Unsectored.Transforms
|
||||
{
|
||||
public abstract class UnsectoredTransformSync : BaseUnsectoredSync
|
||||
public abstract class UnsectoredTransformSync : BaseUnsectoredSync<Transform>
|
||||
{
|
||||
protected abstract Component InitLocalTransform();
|
||||
protected abstract Component InitRemoteTransform();
|
||||
protected abstract Transform InitLocalTransform();
|
||||
protected abstract Transform InitRemoteTransform();
|
||||
|
||||
protected override Component SetAttachedObject()
|
||||
protected override Transform SetAttachedObject()
|
||||
=> HasAuthority ? InitLocalTransform() : InitRemoteTransform();
|
||||
|
||||
public override void SerializeTransform(QNetworkWriter writer, bool initialState)
|
||||
|
@ -21,7 +21,7 @@ namespace QSB.Tools.ProbeTool.TransformSync
|
||||
|
||||
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));
|
||||
|
||||
@ -43,7 +43,7 @@ namespace QSB.Tools.ProbeTool.TransformSync
|
||||
return body;
|
||||
}
|
||||
|
||||
protected override Component InitRemoteTransform()
|
||||
protected override Transform InitRemoteTransform()
|
||||
{
|
||||
var probe = Locator.GetProbe().transform;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user