This commit is contained in:
2026-06-25 16:27:34 +07:00
parent 89763fda5e
commit 003fcf6b6f
11 changed files with 276 additions and 57 deletions

View File

@@ -248,6 +248,15 @@ namespace Hallucinate.UI
{
SendLocalMetaData(player);
}
// If the server receives a player join event and the scene is already loaded, spawn them immediately
if (runner.IsServer && UnityEngine.SceneManagement.SceneManager.GetActiveScene().name == "Main Scene")
{
if (!_spawnedCharacters.ContainsKey(player))
{
SpawnPlayer(runner, player);
}
}
}
private async void SendLocalMetaData(PlayerRef player)
@@ -409,19 +418,40 @@ namespace Hallucinate.UI
{
foreach (var player in runner.ActivePlayers)
{
Vector2 spawnPosition = (player == runner.LocalPlayer) ? new Vector2(-8, 0) : new Vector2(8, 0);
var networkPlayerObject = runner.Spawn(_playerPrefab, spawnPosition, Quaternion.identity, player);
// Give the client State Authority so they can move themselves
// networkPlayerObject.AssignStateAuthority(player);
_spawnedCharacters.Add(player, networkPlayerObject);
if (!_spawnedCharacters.ContainsKey(player))
{
SpawnPlayer(runner, player);
}
}
}
/*if (currentSceneName == "Main Scene")
{
UIManager.Instance?.OnGameStarted();
/
BNM098TYU78I98IU7Y6T57U8I9I8U7Y6T57U8I7Y6T5Y67U8IU7Y6T57U8IU7Y6E4XDER45ESZXSDCER45EDSXZSDCEFR45TTRFGHJUIYTRW
}*/
}
private void SpawnPlayer(NetworkRunner runner, PlayerRef player)
{
Vector3 spawnPosition = (player == runner.LocalPlayer) ? new Vector3(-8, 2, 0) : new Vector3(8, 2, 0);
var networkPlayerObject = runner.Spawn(_playerPrefab, spawnPosition, Quaternion.identity, player);
networkPlayerObject.AssignInputAuthority(player);
_spawnedCharacters[player] = networkPlayerObject;
}
private void OnGUI()
{
if (_runner != null && _runner.IsRunning)
{
GUI.color = Color.green;
GUI.Label(new Rect(10, 10, 300, 30), $"[Network] Session: {_runner.SessionInfo?.Name}");
GUI.Label(new Rect(10, 30, 300, 30), $"[Network] Players in Room: {_runner.ActivePlayers.Count()}");
GUI.Label(new Rect(10, 50, 300, 30), $"[Network] Am I Server?: {_runner.IsServer}");
}
}
public void OnSceneLoadStart(NetworkRunner runner) { }
}