MWindow * MEditor::createWindow(const char * title, int x, int y, unsigned int width, unsigned int height, void (* eventCallback)(MWindow * rootWindow, MWIN_EVENT_TYPE event)) { return MGUI_createWindow(title, x, y, width, height, eventCallback); }
// main int main(int argc, char **argv) { setlocale(LC_NUMERIC, "C"); char dir[256]; getDirectory(dir, argv[0]); MGUI_setCurrentDirectory(dir); // get engine MEngine *engine = MEngine::getInstance(); // init if (!MGUI_init()) return EXIT_FAILURE; // add loaders M_initFreeImage(); engine->getImageLoader()->addLoader(M_loadImage); // image loader //engine->getSoundLoader()->addLoader(M_loadSound); // sound loader //engine->getLevelLoader()->addLoader(xmlLevelLoad); // level loader : uncomment if wanted engine->getFontLoader()->addLoader(M_loadFont); // font loader //engine->getFontLoader()->addLoader(M_loadBinFont); // bin font loader : uncomment if wanted // mesh loader engine->getMeshLoader()->addLoader(xmlMeshLoad); engine->getArmatureAnimLoader()->addLoader(xmlArmatureAnimLoad); engine->getTexturesAnimLoader()->addLoader(xmlTextureAnimLoad); engine->getMaterialsAnimLoader()->addLoader(xmlMaterialAnimLoad); // create main window MWindow *window = MGUI_createWindow("Manual Use", 10, 10, 800, 600, winEvents); if (!window) { MGUI_close(); M_closeFreeImage(); return EXIT_FAILURE; } window->setDrawCallback(drawCallback); const float frequency = 60.0; double currentTick, startTick = MGUI_getTime(); unsigned int numFrame = 0; unsigned int currFrame = 0; unsigned int prevFrame = startTick * frequency; unsigned int steps, i; // update while (1) { ++numFrame; currentTick = MGUI_getTime(); if (currentTick - startTick >= 1.0) { startTick += 1.0; MLOG(6, "fps: " << numFrame << ", ft: " << 1000.0f / numFrame << "ms"); numFrame = 0; } currFrame = currentTick * frequency; steps = currFrame - prevFrame; prevFrame = currFrame; for (i = 0; i < steps; i++) game->update(); if (!MGUI_update()) break; } MGUI_close(); M_closeFreeImage(); return EXIT_SUCCESS; }