From 603cdbf0424e3d9d1542dbc0ee28fa4e90525dec Mon Sep 17 00:00:00 2001
From: codeimp <codeimp@e0d998f2-2e9b-42fe-843d-47128df60a06>
Date: Sun, 22 Aug 2010 12:09:32 +0000
Subject: [PATCH] Added some functionality for plugins that want to render in
 other editing modes

---
 Source/Core/Editing/ClassicMode.cs    | 3 +++
 Source/Core/Plugins/Plug.cs           | 1 +
 Source/Core/Plugins/PluginManager.cs  | 1 +
 Source/Core/Rendering/Renderer2D.cs   | 2 ++
 Source/Core/Rendering/Renderer3D.cs   | 2 ++
 Source/Core/VisualModes/VisualMode.cs | 3 +++
 6 files changed, 12 insertions(+)

diff --git a/Source/Core/Editing/ClassicMode.cs b/Source/Core/Editing/ClassicMode.cs
index 6411ff79..db4e977a 100644
--- a/Source/Core/Editing/ClassicMode.cs
+++ b/Source/Core/Editing/ClassicMode.cs
@@ -102,6 +102,9 @@ namespace CodeImp.DoomBuilder.Editing
 		// Panning
 		public bool IsPanning { get { return panning; } }
 
+		// Rendering
+		public IRenderer2D Renderer { get { return renderer; } }
+
 		#endregion
 
 		#region ================== Constructor / Disposer
diff --git a/Source/Core/Plugins/Plug.cs b/Source/Core/Plugins/Plug.cs
index 7ad7c6e4..1a8b77fb 100644
--- a/Source/Core/Plugins/Plug.cs
+++ b/Source/Core/Plugins/Plug.cs
@@ -322,6 +322,7 @@ namespace CodeImp.DoomBuilder.Plugins
 		// Rendering events
 		public virtual void OnEditRedrawDisplayBegin() { }
 		public virtual void OnEditRedrawDisplayEnd() { }
+		public virtual void OnPresentDisplayBegin() { }
 		
 		#endregion
 	}
diff --git a/Source/Core/Plugins/PluginManager.cs b/Source/Core/Plugins/PluginManager.cs
index 26696865..2788ae51 100644
--- a/Source/Core/Plugins/PluginManager.cs
+++ b/Source/Core/Plugins/PluginManager.cs
@@ -300,6 +300,7 @@ namespace CodeImp.DoomBuilder.Plugins
 		public void OnEditMouseInput(Vector2D delta) { foreach(Plugin p in plugins) p.Plug.OnEditMouseInput(delta); }
 		public void OnEditRedrawDisplayBegin() { foreach(Plugin p in plugins) p.Plug.OnEditRedrawDisplayBegin(); }
 		public void OnEditRedrawDisplayEnd() { foreach(Plugin p in plugins) p.Plug.OnEditRedrawDisplayEnd(); }
+		public void OnPresentDisplayBegin() { foreach(Plugin p in plugins) p.Plug.OnPresentDisplayBegin(); }
 		
 		#endregion
 	}
diff --git a/Source/Core/Rendering/Renderer2D.cs b/Source/Core/Rendering/Renderer2D.cs
index 13c7b1a1..e7710a37 100644
--- a/Source/Core/Rendering/Renderer2D.cs
+++ b/Source/Core/Rendering/Renderer2D.cs
@@ -202,6 +202,8 @@ namespace CodeImp.DoomBuilder.Rendering
 		// This draws the image on screen
 		public void Present()
 		{
+			General.Plugins.OnPresentDisplayBegin();
+			
 			// Start drawing
 			if(graphics.StartRendering(true, General.Colors.Background.ToColorValue(), graphics.BackBuffer, graphics.DepthBuffer))
 			{
diff --git a/Source/Core/Rendering/Renderer3D.cs b/Source/Core/Rendering/Renderer3D.cs
index 47c0bfcf..79e15e32 100644
--- a/Source/Core/Rendering/Renderer3D.cs
+++ b/Source/Core/Rendering/Renderer3D.cs
@@ -767,6 +767,8 @@ namespace CodeImp.DoomBuilder.Rendering
 		// This finishes rendering
 		public void Finish()
 		{
+			General.Plugins.OnPresentDisplayBegin();
+
 			// Done
 			graphics.FinishRendering();
 			graphics.Present();
diff --git a/Source/Core/VisualModes/VisualMode.cs b/Source/Core/VisualModes/VisualMode.cs
index 1d62ad9b..363f7983 100644
--- a/Source/Core/VisualModes/VisualMode.cs
+++ b/Source/Core/VisualModes/VisualMode.cs
@@ -86,6 +86,9 @@ namespace CodeImp.DoomBuilder.VisualModes
 		public bool ProcessGeometry { get { return processgeometry; } set { processgeometry = value; } }
 		public bool ProcessThings { get { return processthings; } set { processthings = value; } }
 		public VisualBlockMap BlockMap { get { return blockmap; } }
+
+		// Rendering
+		public IRenderer3D Renderer { get { return renderer; } }
 		
 		#endregion