소스 검색

Fixes up some erroneous behavior with Simgroup parentage.

Fixes Prefab creation handling of SceneObjects and SimGroups.
Fixes SceneObjects where the default icon incorrectly defaulted to the simgroup folder rather than the generic class object when the class has no specific class icon.
Areloch 9 년 전
부모
커밋
3ab2f98ec3
2개의 변경된 파일25개의 추가작업 그리고 4개의 파일을 삭제
  1. 13 3
      Engine/source/gui/controls/guiTreeViewCtrl.cpp
  2. 12 1
      Engine/source/gui/worldEditor/worldEditor.cpp

+ 13 - 3
Engine/source/gui/controls/guiTreeViewCtrl.cpp

@@ -4113,10 +4113,20 @@ void GuiTreeViewCtrl::onRenderCell(Point2I offset, Point2I cell, bool, bool )
       {
          if ( pGroup != NULL)
          {
-            if (item->isExpanded())
-               item->mIcon = SimGroup1;
+            //Check if we're a SceneObject, and pick the default icon as appropriate
+            
+            if (pObject->getClassName() != String("SimGroup"))
+            {
+               item->mIcon = Icon31;
+            }
             else
-               item->mIcon = SimGroup2;
+            {
+               //If we're purely a SimGroup, pick our icon.
+               if (item->isExpanded())
+                  item->mIcon = SimGroup1;
+               else
+                  item->mIcon = SimGroup2;
+            }
          }
          else
             item->mIcon = SimGroup2;

+ 12 - 1
Engine/source/gui/worldEditor/worldEditor.cpp

@@ -3631,7 +3631,18 @@ void WorldEditor::makeSelectionPrefab( const char *filename )
       {
          for ( S32 i = 0; i < grp->size(); i++ )
             stack.push_back( grp->at(i) );
-         cleanup.push_back( grp );
+         
+         SceneObject* scn = dynamic_cast< SceneObject* >(grp);
+         if (scn)
+         {
+            if (Prefab::isValidChild(obj, true))
+               found.push_back(obj);
+         }
+         else
+         {
+            //Only push the cleanup of the group if it's ONLY a SimGroup.
+            cleanup.push_back(grp);
+         }
       }
       else
       {