diff engine/core/controller/engine.i @ 654:5d6b1820b953

* Added the ability to change screen modes on the fly. This works both in OpenGL and SDL modes. * Added IEngineChangeListener so the client can update the cameras viewport if the screen mode has been changed. I chose to do it this way because the engine has no way to know which camera it should update. It will be up to the client to do it. * The cursor surface is now correctly freed when exiting. * Added DeviceCaps::getNearestScreenMode() for the client to request a supported screen mode. closes[t:315]
author prock@33b003aa-7bff-0310-803a-e67f0ece8222
date Thu, 21 Oct 2010 18:50:50 +0000
parents 01acc9fc35ea
children e3140f01749d
line wrap: on
line diff
--- a/engine/core/controller/engine.i	Fri Oct 15 18:54:34 2010 +0000
+++ b/engine/core/controller/engine.i	Thu Oct 21 18:50:50 2010 +0000
@@ -41,6 +41,7 @@
 	class RendererBase;
 	class DeviceCaps;
 	class ScreenMode;
+	class Image;
 
 	class EngineSettings {
 	public:
@@ -85,6 +86,13 @@
 		EngineSettings();
 	};	
 	
+	%feature("director") IEngineChangeListener;
+	class IEngineChangeListener {
+	public:
+		virtual ~IEngineChangeListener() {}
+		virtual void onScreenModeChanged(const ScreenMode& newmode) = 0;
+	};
+
 	class Engine {
 	public:
 		Engine();
@@ -96,6 +104,8 @@
 		EngineSettings& getSettings();
 		const DeviceCaps& getDeviceCaps() const;
 		
+		Image* changeScreenMode(const ScreenMode& mode);
+		
 		void init();
 		void destroy();
 
@@ -112,5 +122,8 @@
 		GuiFont* getDefaultFont();
 		VFS* getVFS();
 		Cursor* getCursor();
+		
+		void addChangeListener(IEngineChangeListener* listener);
+		void removeChangeListener(IEngineChangeListener* listener);
 	};
 }