void RoboCatServer::Update() { RoboCat::Update(); Vector3 oldLocation = GetLocation(); Vector3 oldVelocity = GetVelocity(); float oldRotation = GetRotation(); ClientProxyPtr client = NetworkManagerServer::sInstance->GetClientProxy( GetPlayerId() ); if( client ) { MoveList& moveList = client->GetUnprocessedMoveList(); for( const Move& unprocessedMove : moveList ) { const InputState& currentState = unprocessedMove.GetInputState(); float deltaTime = unprocessedMove.GetDeltaTime(); ProcessInput( deltaTime, currentState ); SimulateMovement( deltaTime ); } moveList.Clear(); } HandleShooting(); if( !RoboMath::Is2DVectorEqual( oldLocation, GetLocation() ) || !RoboMath::Is2DVectorEqual( oldVelocity, GetVelocity() ) || oldRotation != GetRotation() ) { NetworkManagerServer::sInstance->SetStateDirty( GetNetworkId(), ECRS_Pose ); } }
void PlayerServer::Update() { Player::Update(); Vector3 oldLocation = GetLocation(); Vector3 oldVelocity = GetVelocity(); if ( mControlType == PCT_HUMAN ) { ClientProxyPtr client = NetworkManagerServer::sInstance->GetClientProxy( GetPlayerId() ); if ( !client ) { LOG( "NO HUMANC CONTROLING THIS, IT HAS BECOME SENTIENT RUN" ); return; } MoveList& moveList = client->GetUnprocessedMoveList(); for ( const Move& unprocessedMove : moveList ) { const InputState& currentState = unprocessedMove.GetInputState(); float deltaTime = unprocessedMove.GetDeltaTime(); ProcessInput( deltaTime, currentState ); SimulateMovement( TIME_STEP ); } moveList.Clear(); // TODO: Check if there velocity has actually changed before sending // update NetworkManagerServer::sInstance->SetStateDirty( GetNetworkId(), PRS_POSI ); } }