add SpawnWithServerAuthority extension

This commit is contained in:
Mister_Nebula 2021-08-19 16:37:29 +01:00
parent bdef0e428c
commit 28691065a0
3 changed files with 19 additions and 2 deletions

View File

@ -1,6 +1,7 @@
using OWML.Common;
using QSB.OrbSync.TransformSync;
using QSB.OrbSync.WorldObjects;
using QSB.Player;
using QSB.Utility;
using QSB.WorldSync;
using QuantumUNET;
@ -26,7 +27,10 @@ namespace QSB.OrbSync
{
NomaiOrbTransformSync.OrbTransformSyncs.ForEach(x => QNetworkServer.Destroy(x.gameObject));
NomaiOrbTransformSync.OrbTransformSyncs.Clear();
QSBWorldSync.OldOrbList.ForEach(x => QNetworkServer.Spawn(Instantiate(QSBNetworkManager.Instance.OrbPrefab)));
foreach (var orb in QSBWorldSync.OldOrbList)
{
Instantiate(QSBNetworkManager.Instance.OrbPrefab).SpawnWithServerAuthority();
}
}
DebugLog.DebugWrite($"Finished orb build with {QSBWorldSync.OldOrbList.Count} orbs.", MessageType.Success);

View File

@ -85,7 +85,8 @@ namespace QSB.ShipSync
{
DebugLog.ToConsole($"Error - Tried to spawn ship, but LocalPlayer's TransformSync is null!", MessageType.Error);
}
QNetworkServer.SpawnWithClientAuthority(Instantiate(QSBNetworkManager.Instance.ShipPrefab), QSBPlayerManager.LocalPlayer.TransformSync.gameObject);
Instantiate(QSBNetworkManager.Instance.ShipPrefab).SpawnWithServerAuthority();
}
QSBWorldSync.Init<QSBShipComponent, ShipComponent>();

View File

@ -1,5 +1,6 @@
using OWML.Common;
using OWML.Utils;
using QSB.Player;
using QSB.Player.TransformSync;
using QuantumUNET;
using System;
@ -72,6 +73,17 @@ namespace QSB.Utility
return controller.NetId.Value;
}
public static void SpawnWithServerAuthority(this GameObject go)
{
if (!QSBCore.IsHost)
{
DebugLog.ToConsole($"Error - Tried to spawn {go.name} using SpawnWithServerAuthority when not the host!", MessageType.Error);
return;
}
QNetworkServer.SpawnWithClientAuthority(go, QSBPlayerManager.LocalPlayer.TransformSync.gameObject);
}
// C#
public static void SafeInvoke(this MulticastDelegate multicast, params object[] args)
{