dont process events if world objects arent ready yet lol

This commit is contained in:
JohnCorby 2021-11-10 21:59:32 -08:00
parent 495f814739
commit a371c71415
8 changed files with 24 additions and 14 deletions

View File

@ -29,6 +29,11 @@ namespace QSB.MeteorSync.Events
public override void OnReceiveRemote(bool isHost, MeteorImpactMessage message)
{
if (!MeteorManager.MeteorsReady)
{
return;
}
var qsbMeteor = QSBWorldSync.GetWorldFromId<QSBMeteor>(message.ObjectId);
qsbMeteor.Impact(message.Position, message.RelativeVelocity, message.Damage);
}

View File

@ -26,6 +26,11 @@ namespace QSB.MeteorSync.Events
public override void OnReceiveRemote(bool isHost, BoolWorldObjectMessage message)
{
if (!WorldObjectManager.AllReady)
{
return;
}
var qsbMeteorLauncher = QSBWorldSync.GetWorldFromId<QSBMeteorLauncher>(message.ObjectId);
qsbMeteorLauncher.LaunchMeteor(message.State);
}

View File

@ -1,5 +1,6 @@
using QSB.Events;
using QSB.MeteorSync.WorldObjects;
using QSB.Utility;
using QSB.WorldSync;
using QSB.WorldSync.Events;
using EventType = QSB.Events.EventType;
@ -28,8 +29,15 @@ namespace QSB.MeteorSync.Events
public override void OnReceiveRemote(bool isHost, WorldObjectMessage message)
{
if (!MeteorManager.MeteorsReady)
{
return;
}
var qsbMeteor = QSBWorldSync.GetWorldFromId<QSBMeteor>(message.ObjectId);
// todo
DebugLog.DebugWrite($"{qsbMeteor.LogName} - resync requested");
}
}
}

View File

@ -6,7 +6,7 @@ namespace QSB.MeteorSync
/// we have to do this fake bs
public class MeteorManager : WorldObjectManager
{
public new static bool AllReady;
public static bool MeteorsReady;
protected override void RebuildWorldObjects(OWScene scene)
{
@ -15,7 +15,7 @@ namespace QSB.MeteorSync
QSBCore.UnityEvents.FireInNUpdates(() =>
{
QSBWorldSync.Init<QSBMeteor, MeteorController>();
AllReady = true;
MeteorsReady = true;
}, 10);
}
}

View File

@ -1,6 +1,5 @@
using HarmonyLib;
using OWML.Common;
using QSB.Events;
using QSB.MeteorSync.WorldObjects;
using QSB.Patches;
using QSB.Player;
@ -73,11 +72,6 @@ namespace QSB.MeteorSync.Patches
GameObject hitObject, Vector3 impactPoint, Vector3 impactVel)
{
var qsbMeteor = QSBWorldSync.GetWorldFromUnity<QSBMeteor>(__instance);
if (hitObject == null)
{
DebugLog.DebugWrite($"{QSBPlayerManager.LocalPlayerId} {qsbMeteor.ObjectId} - oh no! hit obj is null (for now)", MessageType.Error);
return false;
}
var componentInParent = hitObject.GetComponentInParent<FragmentIntegrity>();
if (componentInParent != null)

View File

@ -7,7 +7,7 @@ namespace QSB.MeteorSync.TransformSync
{
public class MeteorTransformSync : UnsectoredRigidbodySync
{
public override bool IsReady => MeteorManager.AllReady;
public override bool IsReady => MeteorManager.MeteorsReady;
public override bool UseInterpolation => true;
private QSBMeteor _qsbMeteor;

View File

@ -1,5 +1,4 @@
using QSB.MeteorSync.TransformSync;
using QSB.Player;
using QSB.Utility;
using QSB.WorldSync;
using QuantumUNET;
@ -45,7 +44,7 @@ namespace QSB.MeteorSync.WorldObjects
QNetworkServer.Destroy(TransformSync.gameObject);
}
MeteorManager.AllReady = false;
MeteorManager.MeteorsReady = false;
}
@ -58,7 +57,7 @@ namespace QSB.MeteorSync.WorldObjects
Damage = damage;
// todo get object
AttachedObject.Impact(null, position, relativeVelocity);
// AttachedObject.Impact(null, position, relativeVelocity);
}
}
}

View File

@ -1,5 +1,4 @@
using QSB.Player;
using QSB.Utility;
using QSB.Utility;
using QSB.WorldSync;
namespace QSB.MeteorSync.WorldObjects