فهرست منبع

destructor code+ removed a crash-causing redundancy in onRemove

Azaezel 6 سال پیش
والد
کامیت
c1bf59bf07
2فایلهای تغییر یافته به همراه15 افزوده شده و 3 حذف شده
  1. 14 2
      Engine/source/renderInstance/renderProbeMgr.cpp
  2. 1 1
      Engine/source/renderInstance/renderProbeMgr.h

+ 14 - 2
Engine/source/renderInstance/renderProbeMgr.cpp

@@ -188,12 +188,24 @@ RenderProbeMgr::RenderProbeMgr(RenderInstType riType, F32 renderOrder, F32 proce
 {  
 }
 
-void RenderProbeMgr::onRemove()
+RenderProbeMgr::~RenderProbeMgr()
 {
-   SAFE_DELETE(mLastConstants);
+   mLastShader = NULL;
+   mLastConstants = NULL;
+
+   for (ProbeConstantMap::Iterator i = mConstantLookup.begin(); i != mConstantLookup.end(); i++)
+   {
+      if (i->value)
+         SAFE_DELETE(i->value);
+   }
+   mConstantLookup.clear();
+}
 
+void RenderProbeMgr::onRemove()
+{
    Parent::onRemove();
 }
+
 void RenderProbeMgr::initPersistFields()
 {
    Parent::initPersistFields();

+ 1 - 1
Engine/source/renderInstance/renderProbeMgr.h

@@ -191,7 +191,7 @@ class RenderProbeMgr : public RenderBinManager
 public:
    RenderProbeMgr();
    RenderProbeMgr(RenderInstType riType, F32 renderOrder, F32 processAddOrder);
-
+   virtual ~RenderProbeMgr();
    virtual void onRemove();
 
    // ConsoleObject