本文整理汇总了C++中HandleEvents函数的典型用法代码示例。如果您正苦于以下问题:C++ HandleEvents函数的具体用法?C++ HandleEvents怎么用?C++ HandleEvents使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了HandleEvents函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetTime
void PlatformDesktop::SingleLoop()
{
if( mEventRecorder )
mEventRecorder->StartOfFrame( GetTime() );
HandleEvents();
poro_assert( GetApplication() );
poro_assert( mGraphics );
types::Double32 dt = mOneFrameShouldLast;
if( mFixedTimeStep == false )
{
static types::Double32 last_time_update_called = 0;
dt = (types::Double32)( GetUpTime() - last_time_update_called );
last_time_update_called = GetUpTime();
}
GetApplication()->Update( (types::Float32)(dt) );
mGraphics->BeginRendering();
GetApplication()->Draw(mGraphics);
mGraphics->EndRendering();
if( mEventRecorder )
mEventRecorder->EndOfFrame( GetTime() );
}
示例2: CaptureUserInput
void * CaptureUserInput(void * arg) {
int i;
GetMyDeviceType();
ReadDeviceKeyDB();
printf("sizeof(struct input_event) = %d\n", sizeof(struct input_event));
maxEventPlusOne = -1;
for (i=0; i<=MAX_INPUT_FILE_ID; i++) {
if (nKeyEntries[i] == 0) {
inputEvents[i] = -1;
} else {
inputEvents[i] = OpenInputDevice(i);
if (inputEvents[i] > maxEventPlusOne) maxEventPlusOne = inputEvents[i];
}
}
maxEventPlusOne++;
while (1) {
if (!HandleEvents()) break;
}
printf("Thread CaptureUserInput() exit.\n");
for (i=0; i<=MAX_INPUT_FILE_ID; i++) {
CloseInputDevice(i);
}
return 0;
}
示例3: Initialise
void GameStateManager::Run(void)
{
Initialise();
while (m_running)
{
// If a new state is set to begin, set it now
if (m_preparedState)
InitialisePreparedState();
// Update static key states
KeyTools::UpdateStates();
// State's key press responses
m_currentState->OnKeys(SDL_GetKeyboardState(nullptr));
// Update State
m_currentState->OnUpdate(delta);
// Render State
m_currentState->OnRender();
HandleEvents();
delta = RegulateFrameRate();
}
delete this;
}
示例4: while
void Game::Run()
{
const float TargetFps = 60.0f;
const float DelayTime = 1000.0f / TargetFps;
gameState = RUNNING;
while(gameState == RUNNING)
{
frameStart = SDL_GetTicks();
HandleEvents();
Update();
Render();
frameCount += 1;
frameTime = SDL_GetTicks() - frameStart;
if(frameStart < DelayTime)
{
SDL_Delay((int)(DelayTime - frameTime));
}
}
Clean();
}
示例5: InitWindow
void Displayer::RenderLoop()
{
InitWindow();
while (win->IsOpened() && !closed)
{
HandleEvents();
// Don't draw if disabled/minimised
if (!Displayer::drawingEnabled)
continue;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, win->GetWidth(), win->GetHeight(), 0, -1, 1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClearColor(0, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);
// Draw panels
controlPanel->Draw(*win, defaultFont);
DrawWorldPanel();
// Display and sleep
win->Display();
sf::Sleep(1.0f / refreshRate);
}
}
示例6: SDL_GetTicks
void GameEngine::Start()
{
int ticksPerFrame = (int)(1000.0 / FPS_TARGET + 0.5);
Uint32 nextSecond = SDL_GetTicks() + 1000;
int frames = 0;
Mix_Chunk *track = NULL;
int channel = 0;
_isRunning = true;
while (_isRunning)
{
_frameTimer.Mark();
HandleEvents();
Update();
Draw();
// If there is no music playing
if(Mix_Playing(channel) == 0)
// Play music
channel = Music(track);
if (_frameTimer.GetTicks() < ticksPerFrame)
SDL_Delay(ticksPerFrame - _frameTimer.GetTicks());
if (SDL_GetTicks() >= nextSecond)
{
nextSecond += 1000;
_currentFps = frames;
frames = 0;
}
++frames;
}
}
示例7: NewGameWindow
Word NewGameWindow(Word NewVidSize)
{
XSizeHints sizehints;
if (NewVidSize == VidSize)
return VidSize;
if (NewVidSize < 4) {
w = VidXs[NewVidSize];
h = VidYs[NewVidSize];
v = VidVs[NewVidSize];
} else {
fprintf(stderr, "Invalid Vid size: %d\n", NewVidSize);
exit(EXIT_FAILURE);
}
sizehints.min_width = w;
sizehints.min_height = h;
sizehints.flags = PMinSize;
XSetWMNormalHints(dpy, win, &sizehints);
XResizeWindow(dpy, win, w, h);
SetAPalette(rBlackPal);
ClearTheScreen(BLACK);
BlastScreen();
VidSize = NewVidSize;
XSync(dpy, False);
glXWaitGL();
glXWaitX();
HandleEvents();
return VidSize;
}
示例8: HandleWindowEvents
void GameEngine::Run()
{
HandleWindowEvents();
HandleEvents();
Update();
Draw();
}
示例9: main
int
main( int argc, char **argv )
{
/* Save our program name - for error messages */
set_DeadPipe_handler(DeadPipe);
InitMyApp (CLASS_IDENT, argc, argv, NULL, NULL, 0 );
LinkAfterStepConfig();
set_signal_handler( SIGSEGV );
ConnectX( ASDefaultScr, 0 );
ConnectAfterStep (WINDOW_CONFIG_MASK |
WINDOW_NAME_MASK |
M_END_WINDOWLIST, 0);
Config = CreateIdentConfig ();
/* Request a list of all windows, while we load our config */
SendInfo ("Send_WindowList", 0);
LoadBaseConfig ( GetBaseOptions);
LoadColorScheme();
LoadConfig ("ident", GetOptions);
CheckConfigSanity();
ReloadASDatabase();
ReloadCategories(True);
if (MyArgs.src_window == 0)
MyArgs.src_window = get_target_window();
/* And at long last our main loop : */
HandleEvents();
return 0 ;
}
示例10: Initialize
void Application::Run() {
Initialize();
double tickCounter = 0;
int frames = 0;
clock_t t1 = clock();
clock_t t2;
while(!HandleEvents()) {
Update();
BeginDraw();
Draw();
EndDraw();
frames++;
t2 = clock();
clock_t diff = t2 - t1;
//Guarantee a maximum fps rate
double sleepInteval = (double)CLOCKS_PER_SEC / fps - diff;
if(sleepInteval > 0) {
usleep(1000000 * sleepInteval / CLOCKS_PER_SEC);
tickCounter += sleepInteval;
}
//Display FPS rate
tickCounter += diff;
if(tickCounter > CLOCKS_PER_SEC) {
_frameRate = frames;
tickCounter = 0;
frames = 0;
}
t1 = clock();
}
}
示例11: Sys_SendKeyEvents
void Sys_SendKeyEvents (void) {
// XEvent event; // bk001204 - unused
if (!screen)
return;
HandleEvents();
}
示例12: HandleCollision
void Map::Update()
{
for (std::vector<Entity*>::iterator it = entities.begin(); it != entities.end();)
{
if ((*it)->active)
++it;
else {
delete *it;
it = entities.erase(it);
}
}
HandleCollision();
HandleEvents();
Entity* entity;
for (std::vector<Entity*>::iterator it = entities.begin(); it != entities.end(); ++it)
{
entity = (*it);
if (entity->OnScreen == false)
continue;
if (entity->GetLight() > 0 && ((int) entity->shape->GetCenterX() != (int) (entity->prevPos.x + entity->GetSize().x / 2.0) || (int) entity->shape->GetCenterY() != (int) (entity->prevPos.y + entity->GetSize().y / 2.0)))
lightDirty = true;
}
skyManager->Update();
}
示例13: main
int main(int argc, char* argv[])
{
SDL_Init(SDL_INIT_EVERYTHING);
atexit(SDL_Quit);
debugLogFile = fopen("stderr.txt", "wb");
{
char buffer[128];
const time_t raw(time(NULL));
const struct tm* local(localtime(&raw));
strftime(buffer, sizeof(buffer)-1, "%c\n", local);
LOG("%s", buffer);
}
if (!Initialise()) { exit(EXIT_FAILURE); }
unsigned int lastUpdate = 0;
while (!quit)
{
HandleEvents();
unsigned int now = SDL_GetTicks();
unsigned int elapsedMS = now - lastUpdate;
lastUpdate = now;
UpdateGame(elapsedMS);
RenderFrame();
Device::SwapBuffers();
}
return 0;
}
示例14: while
void Game::Run(){
while (running) {
//trap mouse curser in window
HWND hwnd;
hwnd = FindWindow(0,LPCWSTR("Pew"));
RECT r;
//top left coords
r.left = window.getPosition().x;
r.top = window.getPosition().y;
//bottom right coords
r.right = window.getPosition().x + window.getSize().x;
r.bottom = window.getPosition().y + window.getSize().y;
//clip mouse to window
GetWindowRect(hwnd, &r);
ClipCursor(&r);
//do the game stuff
Update();
HandleEvents();
Render();
Quit();
}
}
示例15: main
int main(int argc, char *argv[])
{
initialize();
srand(time(NULL));
SDL_Surface *screen;
screen = SDL_SetVideoMode(WIDTH, HEIGHT, DEPTH, SDL_SWSURFACE);
if ( screen == NULL )
{
fprintf(stderr, "Unable to set 640x480 video: %s\n", SDL_GetError());
exit(1);
}
//Main game loop
while(1)
{
//Check for end game conditions
if (!player.alive)
{ RenderFinal(screen, FALSE); }
else if (g_monsters == NULL)
{ RenderFinal(screen, TRUE); }
UpdateState();
RenderState(screen);
HandleEvents();
usleep(50000);
}
}