Skip to content

Instantly share code, notes, and snippets.

@Yatekii
Last active January 4, 2016 12:59
Show Gist options
  • Save Yatekii/8625502 to your computer and use it in GitHub Desktop.
Save Yatekii/8625502 to your computer and use it in GitHub Desktop.
RenderGUI::RenderGUI(Scene &scene):
scene(scene),
renderButtonEvent(0){
render = sfg::Button::Create("Render");
renderButtonEvent = render->GetSignal(sfg::Widget::OnLeftClick).Connect(std::bind(&RenderGUI::startRenderThread, this));
progress = sfg::ProgressBar::Create();
antialiasing = sfg::CheckButton::Create("AntiAliasing");
antialiasing->SetActive(scene.useAntiAliasing());
auto box = sfg::Box::Create( sfg::Box::Orientation::VERTICAL, 5.f );
box->Pack(antialiasing);
box->Pack(progress);
box->Pack(render);
window = sfg::Window::Create();
window->SetTitle("Render");
window->Add(box);
window->SetRequisition(sf::Vector2f(300,100));
window->SetPosition(sf::Vector2f(0,400));
}
void RenderGUI::startRenderThread(){
if(renderThread.joinable()){
renderThread.detach();
renderThread.~thread();
}
scene.allowRendering(true);
renderThread = std::thread(&RenderGUI::renderScene, this);
render->SetLabel("Abort");
if(renderButtonEvent != 0)
render->GetSignal(sfg::Widget::OnLeftClick).Disconnect(renderButtonEvent);
renderButtonEvent = render->GetSignal(sfg::Widget::OnLeftClick).Connect(std::bind( &RenderGUI::startRenderThread, this));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment