void EnemyBulletObject::OnUpdateThis(){
	SetAllPositions(getPosition() + (TimeMngr::GetDtime() * (m_vDir * m_fAcceleration)));

	if (!OnScreen()){
		DeleteMe();
	}
}
bool CEntity::Jump() 
{   
    // Cancel any carrying
    // Allows entity to jump from moving platforms for instance
    if (CarriedBy)
    {       
        if ((CarriedBy->Type == ENTITY_TYPE_PLATFORM) || (CarriedBy->Type == ENTITY_TYPE_ROTATINGPLATFORM))
            CanJump = true; // Can always jump from platform
        
        CarriedBy->Carrying = NULL;  // Cancel carry
        CarriedBy = NULL;
    }
    
    if (CanJump == false) return false;    
    if (Ducking == true) return false;
    
    SpeedY = -MaxSpeedY;

    // Play Sound if Entity is on screen
    
    if (OnScreen(this))
        CSoundManager::SoundManager.Play(FX_JUMP);        
   
    return true;
}
				int Run() {
					_Status = Server_Status::SERVER_RUNNING;
					_ServerNetworkDriver.Start();
					_HttpsServerNetworkDriver.Start();
					_Clipboard = std::make_unique<Capturing::Clipboard>(&_Config->Share_Clipboard, [&](const char* c, int len) { _ServerNetworkDriver.SendClipboardText(nullptr, c, static_cast<unsigned int>(len)); });

#if !__ANDROID__
					auto mouseimg(Input::get_MouseImage());
					auto mousepos(Input::get_MousePosition());
					auto mouseimgtimer = std::chrono::steady_clock::now();
					auto mousepostimer = std::chrono::steady_clock::now();

					auto screenimg(Capturing::get_ScreenImage());
					auto screenimgtimer = std::chrono::steady_clock::now();
				
#endif


					while (_Keepgoing) {
#if !__ANDROID__
						auto curtime = std::chrono::steady_clock::now();
						if (_ServerNetworkDriver.ClientCount() > 0) {
							//check mouse img first
							if (std::chrono::duration_cast<std::chrono::milliseconds>(curtime - mouseimgtimer).count() > _Config->MouseImageCaptureRate && is_ready(mouseimg)) {
								OnMouseImg(mouseimg.get());
								mouseimg = Input::get_MouseImage();
								mouseimgtimer = curtime;
							}
							//check mouse pos next
							if (std::chrono::duration_cast<std::chrono::milliseconds>(curtime - mousepostimer).count() > _Config->MousePositionCaptureRate && is_ready(mousepos)) {
								OnMousePos(mousepos.get());
								mousepos = Input::get_MousePosition();
								mousepostimer = curtime;
							}

							//check screen next
							if (std::chrono::duration_cast<std::chrono::milliseconds>(curtime - screenimgtimer).count() > _Config->ScreenImageCaptureRate && is_ready(screenimg)) {
								OnScreen(screenimg.get());
								screenimg = Capturing::get_ScreenImage();
								screenimgtimer = curtime;
							}
						}
#endif
						std::this_thread::sleep_for(std::chrono::milliseconds(50));
					}
					_HttpsServerNetworkDriver.Stop();
					_ServerNetworkDriver.Stop();

					_Status = Server_Status::SERVER_STOPPED;
					return 0;
				}