/// <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}"); } }
public ServerUpdatePacket(Packet packet) : base(packet) { DataPacketIds = new HashSet <ServerPacketId>(); HelloServer = new HelloServer(); PlayerUpdate = new PlayerUpdate(); EntityUpdates = new PacketDataCollection <EntityUpdate>(); PlayerEnterScene = new ServerPlayerEnterScene(); PlayerTeamUpdate = new ServerPlayerTeamUpdate(); PlayerSkinUpdate = new ServerPlayerSkinUpdate(); PlayerEmoteUpdate = new ServerPlayerEmoteUpdate(); }
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.LastPosition = playerEnterScene.Position; playerData.LastScale = playerEnterScene.Scale; playerData.LastAnimationClip = playerEnterScene.AnimationClipId; OnClientEnterScene(id, playerData); }