فهرست منبع

Fixed managed Renderable and Camera handlers so they are properly destroyed

Marko Pintera 10 سال پیش
والد
کامیت
00753da319

+ 9 - 9
BansheeRenderer/Include/BsBansheeRenderer.h

@@ -57,48 +57,48 @@ namespace BansheeEngine
 		/**
 		 * @copydoc	Renderer::getName
 		 */
-		virtual const StringID& getName() const;
+		virtual const StringID& getName() const override;
 
 		/**
 		 * @copydoc	Renderer::renderAll
 		 */
-		virtual void renderAll();
+		virtual void renderAll() override;
 
 		/**
 		 * @copydoc	Renderer::_onActivated
 		 */
-		virtual void _onActivated();
+		virtual void _onActivated() override;
 
 		/**
 		 * @copydoc	Renderer::_onDeactivated
 		 */
-		virtual void _onDeactivated();
+		virtual void _onDeactivated() override;
 
 	private:
 		/**
 		 * @copydoc	Renderer::_notifyCameraAdded
 		 */
-		void _notifyCameraAdded(const CameraHandlerCore* camera);
+		void _notifyCameraAdded(const CameraHandlerCore* camera) override;
 
 		/**
 		 * @copydoc	Renderer::_notifyCameraRemoved
 		 */
-		void _notifyCameraRemoved(const CameraHandlerCore* camera);
+		void _notifyCameraRemoved(const CameraHandlerCore* camera) override;
 
 		/**
 		 * @copydoc	Renderer::_notifyRenderableAdded
 		 */
-		void _notifyRenderableAdded(RenderableHandlerCore* renderable);
+		void _notifyRenderableAdded(RenderableHandlerCore* renderable) override;
 
 		/**
 		 * @copydoc	Renderer::_notifyRenderableUpdated
 		 */
-		void _notifyRenderableUpdated(RenderableHandlerCore* renderable);
+		void _notifyRenderableUpdated(RenderableHandlerCore* renderable) override;
 
 		/**
 		 * @copydoc	Renderer::_notifyRenderableRemoved
 		 */
-		void _notifyRenderableRemoved(RenderableHandlerCore* renderable);
+		void _notifyRenderableRemoved(RenderableHandlerCore* renderable) override;
 
 		/**
 		 * @brief	Adds a new set of objects to the cameras render queue.

+ 2 - 0
SBansheeEngine/Include/BsScriptRenderableHandler.h

@@ -27,6 +27,8 @@ namespace BansheeEngine
 		static void internal_SetMaterial(ScriptRenderableHandler* thisPtr, ScriptMaterial* material, int index);
 		static void internal_OnDestroy(ScriptRenderableHandler* thisPtr);
 
+		void destroy();
+
 		SPtr<RenderableHandler> mRenderableHandler;
 		UINT32 mLastUpdateHash;
 	};

+ 1 - 0
SBansheeEngine/Source/BsScriptCameraHandler.cpp

@@ -412,5 +412,6 @@ namespace BansheeEngine
 	void ScriptCameraHandler::internal_OnDestroy(ScriptCameraHandler* instance)
 	{
 		gSceneManager()._unregisterCamera(instance->getInternal());
+		instance->getInternal()->destroy();
 	}
 }

+ 8 - 4
SBansheeEngine/Source/BsScriptRenderableHandler.cpp

@@ -22,9 +22,7 @@ namespace BansheeEngine
 	}
 
 	ScriptRenderableHandler::~ScriptRenderableHandler()
-	{
-
-	}
+	{ }
 
 	void ScriptRenderableHandler::initRuntimeData()
 	{
@@ -111,6 +109,12 @@ namespace BansheeEngine
 
 	void ScriptRenderableHandler::internal_OnDestroy(ScriptRenderableHandler* thisPtr)
 	{
-		gSceneManager()._unregisterRenderable(thisPtr->getInternal());
+		thisPtr->destroy();
+	}
+
+	void ScriptRenderableHandler::destroy()
+	{
+		gSceneManager()._unregisterRenderable(mRenderableHandler);
+		mRenderableHandler->destroy();
 	}
 }

+ 3 - 1
TODO.txt

@@ -28,15 +28,17 @@ Project window
 Dropping doesn't work. endDrag in DragAndDropManager gets called before cursorReleased()
 Destroying Renderable objects doesn't seem to properly clear them from the renderer
 Add mesh scale to FBX importer (and default it to 0.01 or whatever makes the dragon look normal sized)
+There's still an issue with dragging a selection area in the scroll box
 
 Later:
  - Hook up ping effect so it triggers when I select a resource or sceneobject
   - Add ping to SceneTreeView
- - Consider delaying search until user stops pressing keys
+ - Consider delaying search until user stops pressing keys (so not to have thousands of search results in the initial stages)
  - Save & restore scroll position when Refresh happens
  - F2 and context menu for renaming assets (or when clicking on a solo selected asset)
    - Also make sure the names contain only valid path characters
  - Delete with a dialog box to confirm
+ - Center labels and add a couple of pixels border from the selection rectangle
 
 ----------------------------------------------------------------------
 Resources