瀏覽代碼

Merge pull request #1207 from Areloch/ImageAssetArrayInspectorFix

Fixes the handling of imageAssets for array'd field types, as well asfixing the editor behavior of guiBitmapCtrl so the imageAssets correctly update the fields upon editing
Brian Roberts 1 年之前
父節點
當前提交
3fd4cbdb89
共有 2 個文件被更改,包括 17 次插入4 次删除
  1. 4 4
      Engine/source/T3D/assets/ImageAsset.cpp
  2. 13 0
      Engine/source/gui/controls/guiBitmapCtrl.cpp

+ 4 - 4
Engine/source/T3D/assets/ImageAsset.cpp

@@ -482,13 +482,13 @@ GuiControl* GuiInspectorTypeImageAssetPtr::constructEditControl()
 
    if (mInspector->getInspectObject() != nullptr)
    {
-      dSprintf(szBuffer, sizeof(szBuffer), "AssetBrowser.showDialog(\"ImageAsset\", \"AssetBrowser.changeAsset\", %s, %s);",
-         mInspector->getIdString(), mCaption);
+      dSprintf(szBuffer, sizeof(szBuffer), "AssetBrowser.showDialog(\"ImageAsset\", \"AssetBrowser.changeAsset\", %s);",
+         getIdString());
       mBrowseButton->setField("Command", szBuffer);
 
       setDataField(StringTable->insert("targetObject"), NULL, mInspector->getInspectObject()->getIdString());
 
-      previewImage = mInspector->getInspectObject()->getDataField(mCaption, NULL);
+      previewImage = getData();
    }
    else
    {
@@ -672,7 +672,7 @@ void GuiInspectorTypeImageAssetPtr::updatePreviewImage()
 {
    const char* previewImage;
    if (mInspector->getInspectObject() != nullptr)
-      previewImage = mInspector->getInspectObject()->getDataField(mCaption, NULL);
+      previewImage = getData();
    else
       previewImage = Con::getVariable(mVariableName);
 

+ 13 - 0
Engine/source/gui/controls/guiBitmapCtrl.cpp

@@ -117,6 +117,19 @@ void GuiBitmapCtrl::onSleep()
 //-------------------------------------
 void GuiBitmapCtrl::inspectPostApply()
 {
+   //This is a little bit of a 'special case' handling for this class
+   //Because we don't do the normal protectedField setup for the bitmapName/bitmapAsset fields
+   //which would automatically update the internal values and bound content, we'll do it here manually
+   //to ensure it's updated before we force a refresh, which would thrash the new values
+   if (mBitmapName != StringTable->insert("texhandle"))
+   {
+      _setBitmap(mBitmapAssetId);
+   }
+   else
+   {
+      setBitmap(getBitmap());
+   }
+
    // if the extent is set to (0,0) in the gui editor and appy hit, this control will
    // set it's extent to be exactly the size of the bitmap (if present)
    Parent::inspectPostApply();