void ProcessClientEvents(ulong _ulPlayerId, TPlayerStates _tPlayers) { // Send out input events to subscribers on server for (int i = 0; i < (int)EInput.MAX; ++i) { if ((_tPlayers.ulPreviousInput & (ulong)1 << i) == 0 && (_tPlayers.ulInput & (ulong)1 << i) > 0) { InvokeClientInputEvent((EInput)i, _ulPlayerId, true); } else if ((_tPlayers.ulPreviousInput & (ulong)1 << i) > 0 && (_tPlayers.ulInput & (ulong)1 << i) == 0) { InvokeClientInputEvent((EInput)i, _ulPlayerId, false); } } }
public static void UnserializeInbound(CNetworkPlayer _cPlayer, CNetworkStream _cStream) { TPlayerStates tPlayerStates = s_cInstance.m_mPlayerStates[_cPlayer.PlayerId]; tPlayerStates.ulPreviousInput = tPlayerStates.ulInput; tPlayerStates.ulInput = _cStream.ReadULong(); tPlayerStates.fPreviousMouseX = tPlayerStates.fMouseX; tPlayerStates.fPreviousMouseY = tPlayerStates.fMouseY; tPlayerStates.fMouseX = _cStream.ReadFloat(); tPlayerStates.fMouseY = _cStream.ReadFloat(); if (tPlayerStates.fPreviousMouseX != tPlayerStates.fMouseX) { s_cInstance.InvokeClientClientAxisEvent(EAxis.MouseX, _cPlayer.PlayerId, tPlayerStates.fMouseX); } if (tPlayerStates.fPreviousMouseY != tPlayerStates.fMouseY) { s_cInstance.InvokeClientClientAxisEvent(EAxis.MouseY, _cPlayer.PlayerId, tPlayerStates.fMouseY); } s_cInstance.ProcessClientEvents(_cPlayer.PlayerId, tPlayerStates); }