more stuff

This commit is contained in:
JohnCorby 2022-02-16 23:45:54 -08:00
parent f3ec0e8abb
commit 140fefe475
3 changed files with 20 additions and 12 deletions

View File

@ -1,4 +1,5 @@
using Cysharp.Threading.Tasks; using Cysharp.Threading.Tasks;
using QSB.Player.TransformSync;
using QSB.Utility; using QSB.Utility;
using QSB.WorldSync; using QSB.WorldSync;
using System.Linq; using System.Linq;
@ -10,16 +11,26 @@ namespace QSB.Player
{ {
public static async UniTaskVoid Create(PlayerInfo player, bool joining) public static async UniTaskVoid Create(PlayerInfo player, bool joining)
{ {
if (!player.IsLocalPlayer)
{
return;
}
if (joining)
{
if (PlayerTransformSync.LocalInstance == null ||
player.PlayerId < QSBPlayerManager.LocalPlayerId)
{
return;
}
await UniTask.WaitUntil(() => player.TransformSync.IsValid && player.TransformSync.ReferenceTransform);
}
DebugLog.DebugWrite($"WARP {player.TransformSync}"); DebugLog.DebugWrite($"WARP {player.TransformSync}");
player.SetVisible(false); player.SetVisible(false);
bool Predicate() => player.TransformSync.IsValid && player.TransformSync.ReferenceTransform;
if (!Predicate())
{
await UniTask.WaitUntil(Predicate);
}
var go = new GameObject(nameof(JoinLeaveSingularity)); var go = new GameObject(nameof(JoinLeaveSingularity));
go.transform.parent = player.TransformSync.ReferenceTransform; go.transform.parent = player.TransformSync.ReferenceTransform;
go.transform.localPosition = player.TransformSync.transform.position; go.transform.localPosition = player.TransformSync.transform.position;

View File

@ -76,8 +76,6 @@ namespace QSB.Player.Messages
player.Name = PlayerName; player.Name = PlayerName;
DebugLog.ToAll($"{player.Name} joined!", MessageType.Info); DebugLog.ToAll($"{player.Name} joined!", MessageType.Info);
DebugLog.DebugWrite($"{player.Name} joined. id:{player.PlayerId}, qsbVersion:{QSBVersion}, gameVersion:{GameVersion}, dlcInstalled:{DlcInstalled}", MessageType.Info); DebugLog.DebugWrite($"{player.Name} joined. id:{player.PlayerId}, qsbVersion:{QSBVersion}, gameVersion:{GameVersion}, dlcInstalled:{DlcInstalled}", MessageType.Info);
JoinLeaveSingularity.Create(player, true).Forget();
} }
public override void OnReceiveLocal() public override void OnReceiveLocal()

View File

@ -44,16 +44,15 @@ namespace QSB.Player.TransformSync
base.OnStartClient(); base.OnStartClient();
QSBPlayerManager.OnAddPlayer?.Invoke(Player); QSBPlayerManager.OnAddPlayer?.Invoke(Player);
DebugLog.DebugWrite($"Create Player : id<{Player.PlayerId}>", MessageType.Info); DebugLog.DebugWrite($"Create Player : id<{Player.PlayerId}>", MessageType.Info);
JoinLeaveSingularity.Create(Player, true).Forget();
} }
public override void OnStartLocalPlayer() => LocalInstance = this; public override void OnStartLocalPlayer() => LocalInstance = this;
public override void OnStopClient() public override void OnStopClient()
{ {
if (!isLocalPlayer) JoinLeaveSingularity.Create(Player, false).Forget();
{
JoinLeaveSingularity.Create(Player, false).Forget();
}
// TODO : Maybe move this to a leave event...? Would ensure everything could finish up before removing the player // TODO : Maybe move this to a leave event...? Would ensure everything could finish up before removing the player
QSBPlayerManager.OnRemovePlayer?.Invoke(Player); QSBPlayerManager.OnRemovePlayer?.Invoke(Player);