diff --git a/Engine/source/gui/buttons/guiBitmapButtonCtrl.cpp b/Engine/source/gui/buttons/guiBitmapButtonCtrl.cpp index f2ee24d43..d0af7da32 100644 --- a/Engine/source/gui/buttons/guiBitmapButtonCtrl.cpp +++ b/Engine/source/gui/buttons/guiBitmapButtonCtrl.cpp @@ -262,6 +262,51 @@ void GuiBitmapButtonCtrl::setAutoFitExtents( bool state ) } //----------------------------------------------------------------------------- +void GuiBitmapButtonCtrl::_setBitmap(StringTableEntry _in) +{ + if (mBitmapAsset.getAssetId() == _in) + return; + + if (getBitmapFile() == _in) + return; + + if (_in == 0 || !String::compare(_in, _getStringTable()->EmptyString())) + { + mBitmapAsset = 0; + mBitmapFile = ""; + return; + } + if (!AssetDatabase.isDeclaredAsset(_in)) + { + StringTableEntry imageAssetId = _getStringTable()->EmptyString(); + AssetQuery query; + S32 foundAssetcount = AssetDatabase.findAssetLooseFile(&query, _in); + if (foundAssetcount != 0) + { + imageAssetId = query.mAssetList[0]; + } + else if (Torque::FS::IsFile(_in) || (_in[0] == '$' || _in[0] == '#')) + { + imageAssetId = ImageAsset::getAssetIdByFilename(_in); + if (imageAssetId == ImageAsset::smNoImageAssetFallback) + { + ImageAsset* privateImage = new ImageAsset(); + privateImage->setImageFile(_in); + imageAssetId = AssetDatabase.addPrivateAsset(privateImage); + } + } + else { + Con::warnf("%s::%s: Could not find asset for: %s using fallback", "GuiBitmapButtonCtrl", "Bitmap", _in); + imageAssetId = ImageAsset::smNoImageAssetFallback; + } mBitmapAsset = imageAssetId; + mBitmapFile = _in; + } + else + { + mBitmapAsset = _in; + mBitmapFile = getBitmapFile(); + } +} void GuiBitmapButtonCtrl::setBitmap( StringTableEntry name ) { @@ -669,4 +714,10 @@ bool GuiBitmapButtonCtrl::pointInControl(const Point2I& parentCoordPoint) return Parent::pointInControl(parentCoordPoint); } -DEF_ASSET_BINDS_REFACTOR(GuiBitmapButtonCtrl, Bitmap) +DefineEngineMethod(GuiBitmapButtonCtrl, getBitmap, StringTableEntry, (), , "get name") { + return object->getBitmapFile(); +}DefineEngineMethod(GuiBitmapButtonCtrl, getBitmapAsset, StringTableEntry, (), , assetText(Bitmap, asset reference)) { + return object->_getBitmap(); +}DefineEngineMethod(GuiBitmapButtonCtrl, setBitmap, void, (const char* assetName), , assetText(Bitmap, assignment.first tries asset then flat file.)) { + object->setBitmap(StringTable->insert(assetName)); +} diff --git a/Engine/source/gui/buttons/guiBitmapButtonCtrl.h b/Engine/source/gui/buttons/guiBitmapButtonCtrl.h index ec96e9344..8fb3792d0 100644 --- a/Engine/source/gui/buttons/guiBitmapButtonCtrl.h +++ b/Engine/source/gui/buttons/guiBitmapButtonCtrl.h @@ -122,24 +122,8 @@ private: AssetPtr mBitmapAsset; String mBitmapFile; public: - void _setBitmap(StringTableEntry _in) { - if (_in == NULL || _in == StringTable->EmptyString() || _in == "") - { - mBitmapAsset = NULL; - mBitmapFile = ""; - return; - } - if (mBitmapAsset.getAssetId() == _in) return; if (!AssetDatabase.isDeclaredAsset(_in)) { - StringTableEntry imageAssetId = ImageAsset::smNoImageAssetFallback; AssetQuery query; S32 foundAssetcount = AssetDatabase.findAssetLooseFile(&query, _in); if (foundAssetcount != 0) { - imageAssetId = query.mAssetList[0]; - } mBitmapAsset = imageAssetId; - } - else { - mBitmapAsset = _in; - mBitmapName = _in; - mBitmap = getBitmap(); - } -}; inline StringTableEntry _getBitmap(void) const { + void _setBitmap(StringTableEntry _in); +inline StringTableEntry _getBitmap(void) const { return mBitmapAsset.getAssetId(); } GFXTexHandle getBitmap() { return mBitmapAsset.notNull() ? mBitmapAsset->getTexture(&GFXDefaultGUIProfile) : 0; diff --git a/Engine/source/gui/buttons/guiIconButtonCtrl.cpp b/Engine/source/gui/buttons/guiIconButtonCtrl.cpp index 813a3a2e2..9c0cd7517 100644 --- a/Engine/source/gui/buttons/guiIconButtonCtrl.cpp +++ b/Engine/source/gui/buttons/guiIconButtonCtrl.cpp @@ -464,4 +464,10 @@ void GuiIconButtonCtrl::renderBitmapArray(RectI &bounds, S32 state) } } -DEF_ASSET_BINDS_REFACTOR(GuiIconButtonCtrl, Bitmap) +DefineEngineMethod(GuiIconButtonCtrl, getBitmap, StringTableEntry, (), , "get name") { + return object->getBitmapFile(); +}DefineEngineMethod(GuiIconButtonCtrl, getBitmapAsset, StringTableEntry, (), , assetText(Bitmap, asset reference)) { + return object->_getBitmap(); +}DefineEngineMethod(GuiIconButtonCtrl, setBitmap, void, (const char* assetName), , assetText(Bitmap, assignment.first tries asset then flat file.)) { + object->setBitmap(StringTable->insert(assetName)); +}