/// <summary> /// Callback method for when a player enters a scene. /// </summary> /// <param name="id">The ID of the player.</param> /// <param name="playerEnterScene">The ServerPlayerEnterScene packet data.</param> private void OnClientEnterScene(ushort id, ServerPlayerEnterScene playerEnterScene) { if (!_playerData.TryGetValue(id, out var playerData)) { Logger.Get().Warn(this, $"Received EnterScene data from {id}, but player is not in mapping"); return; } var newSceneName = playerEnterScene.NewSceneName; Logger.Get().Info(this, $"Received EnterScene data from ID {id}, new scene: {newSceneName}"); // Store it in their PlayerData object playerData.CurrentScene = newSceneName; playerData.Position = playerEnterScene.Position; playerData.Scale = playerEnterScene.Scale; playerData.AnimationId = playerEnterScene.AnimationClipId; OnClientEnterScene(playerData); try { PlayerEnterSceneEvent?.Invoke(playerData); } catch (Exception e) { Logger.Get().Warn(this, $"Exception thrown while invoking PlayerEnterScene event, {e.GetType()}, {e.Message}, {e.StackTrace}"); } }
/// <summary> /// Callback method for when another player enters our scene. /// </summary> /// <param name="enterSceneData">The ClientPlayerEnterScene packet data.</param> private void OnPlayerEnterScene(ClientPlayerEnterScene enterSceneData) { // Read ID from player data var id = enterSceneData.Id; Logger.Get().Info(this, $"Player {id} entered scene"); if (!_playerData.TryGetValue(id, out var playerData)) { playerData = new ClientPlayerData(id, enterSceneData.Username); _playerData[id] = playerData; } playerData.IsInLocalScene = true; _playerManager.SpawnPlayer( playerData, enterSceneData.Username, enterSceneData.Position, enterSceneData.Scale, enterSceneData.Team, enterSceneData.SkinId ); _animationManager.UpdatePlayerAnimation(id, enterSceneData.AnimationClipId, 0); try { PlayerEnterSceneEvent?.Invoke(playerData); } catch (Exception e) { Logger.Get().Warn(this, $"Exception thrown while invoking PlayerEnterScene event, {e.GetType()}, {e.Message}, {e.StackTrace}"); } }