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 QSB.Player.TransformSync;
using QSB.Utility;
using QSB.WorldSync;
using System.Linq;
@ -10,16 +11,26 @@ namespace QSB.Player
{
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}");
player.SetVisible(false);
bool Predicate() => player.TransformSync.IsValid && player.TransformSync.ReferenceTransform;
if (!Predicate())
{
await UniTask.WaitUntil(Predicate);
}
var go = new GameObject(nameof(JoinLeaveSingularity));
go.transform.parent = player.TransformSync.ReferenceTransform;
go.transform.localPosition = player.TransformSync.transform.position;

View File

@ -76,8 +76,6 @@ namespace QSB.Player.Messages
player.Name = PlayerName;
DebugLog.ToAll($"{player.Name} joined!", 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()

View File

@ -44,16 +44,15 @@ namespace QSB.Player.TransformSync
base.OnStartClient();
QSBPlayerManager.OnAddPlayer?.Invoke(Player);
DebugLog.DebugWrite($"Create Player : id<{Player.PlayerId}>", MessageType.Info);
JoinLeaveSingularity.Create(Player, true).Forget();
}
public override void OnStartLocalPlayer() => LocalInstance = this;
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
QSBPlayerManager.OnRemovePlayer?.Invoke(Player);