Exemple #1
0
        /// <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}");
            }
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        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);
        }