فهرست منبع

Basic pause()/unpause() in Device

Daniele Bartolini 12 سال پیش
والد
کامیت
444006357c
1فایلهای تغییر یافته به همراه21 افزوده شده و 4 حذف شده
  1. 21 4
      engine/Device.cpp

+ 21 - 4
engine/Device.cpp

@@ -205,8 +205,17 @@ bool Device::init(int argc, char** argv)
 	start();
 
 	// Execute lua boot file
-	m_lua_environment->load_and_execute(m_boot_file);
-	m_lua_environment->call_global("init", 0);
+	if (m_lua_environment->load_and_execute(m_boot_file))
+	{
+		if (!m_lua_environment->call_global("init", 0))
+		{
+			pause();
+		}
+	}
+	else
+	{
+		pause();
+	}
 
 	// Show main window
 	m_window->show();
@@ -389,12 +398,14 @@ void Device::stop()
 void Device::pause()
 {
 	m_is_paused = true;
+	Log::d("Engine paused");
 }
 
 //-----------------------------------------------------------------------------
 void Device::unpause()
 {
 	m_is_paused = false;
+	Log::d("Engine unpaused");
 }
 
 //-----------------------------------------------------------------------------
@@ -426,8 +437,14 @@ void Device::frame()
 
 	m_window->frame();
 	m_input_manager->frame(frame_count());
-	
-	m_lua_environment->call_global("frame", 1, ARGUMENT_FLOAT, last_delta_time());
+
+	if (!m_is_paused)
+	{
+		if (!m_lua_environment->call_global("frame", 1, ARGUMENT_FLOAT, last_delta_time()))
+		{
+			pause();
+		}
+	}
 
 	m_debug_renderer->draw_all();
 	m_renderer->frame();