int Application::Create(IWindow &window, IScene &scene) { assert( !MainWindow || MainWindow == &window ); MainWindow = &window; // Create window - assume that window has been precreated if (! window.Create() ) { Destroy(); return WINDOW_ERROR; } // Call event bool res = true; OnApplicationCreate(res); if (!res) { Destroy(); return EVENT_ERROR; } // Init window events SceneCur = &scene; window.OnCreate.Set(this, ::MainWindow_OnCreate); window.OnResize.Set(this, ::MainWindow_OnResize); // Create scene if (! SceneCur->Create(0, 0, window.Width_Get(), window.Height_Get()) ) { Destroy(); return SCENE_ERROR; } SceneCur->Enter(); return SUCCESS; }