private void Server_ReceiveMoveTryToFinish(RemoteEntityWorld sender, ReceiveDataReader reader)
        {
            if (!reader.Complete())
            {
                return;
            }

            //get network user by remote entity world
            EntitySystemServerNetworkService.ClientRemoteEntityWorld clientRemoteEntityWorld =
                (EntitySystemServerNetworkService.ClientRemoteEntityWorld)sender;
            UserManagementServerNetworkService.UserInfo user = clientRemoteEntityWorld.User;

            if (user == server_movingByUser)
            {
                ServerOrSingle_MoveFinish();
            }
        }
        protected override void Server_OnClientDisconnected(RemoteEntityWorld remoteEntityWorld)
        {
            base.Server_OnClientDisconnected(remoteEntityWorld);

            //finish moving when user disconnected
            if (serverOrSingle_Moving)
            {
                EntitySystemServerNetworkService.ClientRemoteEntityWorld clientRemoteEntityWorld =
                    (EntitySystemServerNetworkService.ClientRemoteEntityWorld)remoteEntityWorld;
                UserManagementServerNetworkService.UserInfo user = clientRemoteEntityWorld.User;

                if (user == server_movingByUser)
                {
                    ServerOrSingle_MoveFinish();
                }
            }
        }
        private void Server_ReceiveMoveUpdatePosition(RemoteEntityWorld sender, ReceiveDataReader reader)
        {
            Vec2 newPosition = reader.ReadVec2();

            if (!reader.Complete())
            {
                return;
            }

            //get network user by remote entity world
            EntitySystemServerNetworkService.ClientRemoteEntityWorld clientRemoteEntityWorld =
                (EntitySystemServerNetworkService.ClientRemoteEntityWorld)sender;
            UserManagementServerNetworkService.UserInfo user = clientRemoteEntityWorld.User;

            if (user == server_movingByUser)
            {
                ServerOrSingle_MoveUpdatePosition(newPosition);
            }
        }
        private void Server_ReceiveMoveTryToBegin(RemoteEntityWorld sender, ReceiveDataReader reader)
        {
            if (!reader.Complete())
            {
                return;
            }

            //already moving
            if (serverOrSingle_Moving)
            {
                return;
            }

            //get network user by remote entity world
            EntitySystemServerNetworkService.ClientRemoteEntityWorld clientRemoteEntityWorld =
                (EntitySystemServerNetworkService.ClientRemoteEntityWorld)sender;
            UserManagementServerNetworkService.UserInfo user = clientRemoteEntityWorld.User;

            Server_MoveBegin(user);
        }