From ed36cf2c5ce0f568577394588f59ae15b61d2307 Mon Sep 17 00:00:00 2001 From: JeffR Date: Thu, 17 Feb 2022 18:04:31 -0600 Subject: [PATCH] Changes for BaseUI Update --- Engine/source/T3D/assets/MaterialAsset.cpp | 6 ++ Engine/source/T3D/assets/assetImporter.cpp | 87 ++++++++++++++----- Engine/source/T3D/assets/assetImporter.h | 32 +++++++ Engine/source/Verve/GUI/VEditorButton.cpp | 2 +- Engine/source/afx/ui/afxSpellButton.cpp | 2 +- Engine/source/console/simDictionary.cpp | 2 +- .../source/gui/buttons/guiBitmapButtonCtrl.h | 2 +- Engine/source/gui/buttons/guiBorderButton.cpp | 2 +- .../source/gui/buttons/guiButtonBaseCtrl.cpp | 22 ++++- Engine/source/gui/buttons/guiButtonBaseCtrl.h | 7 +- Engine/source/gui/buttons/guiButtonCtrl.cpp | 5 +- Engine/source/gui/buttons/guiCheckBoxCtrl.cpp | 2 +- .../source/gui/buttons/guiIconButtonCtrl.cpp | 4 +- .../gui/buttons/guiSwatchButtonCtrl.cpp | 2 +- .../gui/buttons/guiToggleButtonCtrl.cpp | 4 +- .../gui/buttons/guiToolboxButtonCtrl.cpp | 2 +- .../source/gui/controls/guiGradientCtrl.cpp | 4 +- Engine/source/gui/core/guiCanvas.cpp | 3 + Engine/source/gui/utility/guiInputCtrl.cpp | 10 ++- Engine/source/gui/utility/guiInputCtrl.h | 1 + 20 files changed, 156 insertions(+), 45 deletions(-) diff --git a/Engine/source/T3D/assets/MaterialAsset.cpp b/Engine/source/T3D/assets/MaterialAsset.cpp index 50e75ffa3..e51f9a709 100644 --- a/Engine/source/T3D/assets/MaterialAsset.cpp +++ b/Engine/source/T3D/assets/MaterialAsset.cpp @@ -319,6 +319,12 @@ U32 MaterialAsset::getAssetByMaterialName(StringTableEntry matName, AssetPtrsetAssetId(MaterialAsset::smNoMaterialAssetFallback); + (*matAsset)->mLoadedState = AssetErrCode::UsingFallback; + return AssetErrCode::UsingFallback; + } StringTableEntry MaterialAsset::getAssetIdByMaterialName(StringTableEntry matName) diff --git a/Engine/source/T3D/assets/assetImporter.cpp b/Engine/source/T3D/assets/assetImporter.cpp index e9afcc479..8dc898dae 100644 --- a/Engine/source/T3D/assets/assetImporter.cpp +++ b/Engine/source/T3D/assets/assetImporter.cpp @@ -104,7 +104,9 @@ AssetImportConfig::AssetImportConfig() : importSounds(true), VolumeAdjust(false), PitchAdjust(false), - SoundsCompressed(false) + SoundsCompressed(false), + AlwaysAddSoundSuffix(false), + AddedSoundSuffix("_sound") { } @@ -316,6 +318,8 @@ void AssetImportConfig::loadImportConfig(Settings* configSettings, String config VolumeAdjust = dAtof(configSettings->value(String(configName + "/Sounds/VolumeAdjust").c_str())); PitchAdjust = dAtof(configSettings->value(String(configName + "/Sounds/PitchAdjust").c_str())); SoundsCompressed = dAtob(configSettings->value(String(configName + "/Sounds/Compressed").c_str())); + AlwaysAddSoundSuffix = dAtob(configSettings->value(String(configName + "/Sounds/AlwaysAddSoundSuffix").c_str())); + AddedSoundSuffix = configSettings->value(String(configName + "/Sounds/AddedSoundSuffix").c_str()); } void AssetImportConfig::CopyTo(AssetImportConfig* target) const @@ -406,6 +410,8 @@ void AssetImportConfig::CopyTo(AssetImportConfig* target) const target->VolumeAdjust = VolumeAdjust; target->PitchAdjust = PitchAdjust; target->SoundsCompressed = SoundsCompressed; + target->AlwaysAddSoundSuffix = AlwaysAddSoundSuffix; + target->AddedSoundSuffix = AddedSoundSuffix; } ConsoleDocClass(AssetImportObject, @@ -607,6 +613,7 @@ AssetImportObject* AssetImporter::addImportingAsset(String assetType, Torque::Pa assetName.replace('*', '_'); assetName.replace('-', '_'); assetName.replace('+', '_'); + assetName.replace('&', '_'); assetImportObj->assetType = assetType; assetImportObj->filePath = filePath; @@ -622,6 +629,14 @@ AssetImportObject* AssetImporter::addImportingAsset(String assetType, Torque::Pa assetImportObj->importStatus = AssetImportObject::NotProcessed; assetImportObj->generatedAsset = false; + //If the config is marked to always set the directory prefix, do that now + if (activeImportConfig->AddDirectoryPrefixToAssetName) + { + assetName = getFolderPrefixedName(assetImportObj); + assetImportObj->assetName = assetName; + assetImportObj->cleanAssetName = assetName; + } + if (parentItem != nullptr) { dSprintf(importLogBuffer, sizeof(importLogBuffer), "Added Child Importing Asset to %s", parentItem->assetName.c_str()); @@ -1976,6 +1991,12 @@ void AssetImporter::processSoundAsset(AssetImportObject* assetItem) dSprintf(importLogBuffer, sizeof(importLogBuffer), "Preparing Sound for Import: %s", assetItem->assetName.c_str()); activityLog.push_back(importLogBuffer); + if (activeImportConfig->AlwaysAddSoundSuffix) + { + assetItem->assetName += activeImportConfig->AddedSoundSuffix; + assetItem->cleanAssetName = assetItem->assetName; + } + assetItem->importStatus = AssetImportObject::Processed; } @@ -2165,7 +2186,49 @@ void AssetImporter::resolveAssetItemIssues(AssetImportObject* assetItem) { //Set trailing number String renamedAssetName = assetItem->assetName; - renamedAssetName = Sim::getUniqueName(renamedAssetName.c_str()); + String renamedAssetId = assetItem->moduleName + ":" + renamedAssetName; + + String addedSuffix; + + if (assetItem->assetType == String("ShapeAsset")) + addedSuffix = activeImportConfig->AddedShapeSuffix; + else if (assetItem->assetType == String("MaterialAsset")) + addedSuffix = activeImportConfig->AddedMaterialSuffix; + else if (assetItem->assetType == String("ImageAsset")) + addedSuffix = activeImportConfig->AddedImageSuffix; + else if (assetItem->assetType == String("SoundAsset")) + addedSuffix = activeImportConfig->AddedSoundSuffix; + + //do the suffix if it isn't already on it + if (!renamedAssetName.endsWith(addedSuffix.c_str())) + { + renamedAssetName += addedSuffix; + renamedAssetId = assetItem->moduleName + ":" + renamedAssetName; + assetItem->assetName = renamedAssetName; + } + + //if still conflicted + //add the directory prefix + if (AssetDatabase.isDeclaredAsset(renamedAssetId.c_str())) + { + renamedAssetName = getFolderPrefixedName(assetItem); + renamedAssetId = assetItem->moduleName + ":" + renamedAssetName; + assetItem->assetName = renamedAssetName; + } + + bool appendedNumber = false; + U32 uniqueNumber = 0; + while (AssetDatabase.isDeclaredAsset(renamedAssetId.c_str())) + { + uniqueNumber++; + renamedAssetId = assetItem->moduleName + ":" + renamedAssetName + String::ToString(uniqueNumber); + appendedNumber = true; + } + + if (appendedNumber) + { + renamedAssetName += String::ToString(uniqueNumber); + } //Log it's renaming dSprintf(importLogBuffer, sizeof(importLogBuffer), "Asset %s was renamed due to %s as part of the Import Configuration", assetItem->assetName.c_str(), humanReadableReason.c_str()); @@ -2186,25 +2249,7 @@ void AssetImporter::resolveAssetItemIssues(AssetImportObject* assetItem) } else if (activeImportConfig->DuplicateAutoResolution == String("FolderPrefix")) { - String renamedAssetName = assetItem->assetName; - - //Set trailing number - S32 dirIndex = assetItem->filePath.getDirectoryCount() - 1; - while (dirIndex > -1) - { - renamedAssetName = assetItem->assetName; - String owningFolder = assetItem->filePath.getDirectory(dirIndex); - - renamedAssetName = owningFolder + "_" + renamedAssetName; - - if (AssetDatabase.isDeclaredAsset(renamedAssetName)) - { - dirIndex--; - continue; - } - - break; - } + String renamedAssetName = getFolderPrefixedName(assetItem); //Log it's renaming dSprintf(importLogBuffer, sizeof(importLogBuffer), "Asset %s was renamed due to %s as part of the Import Configuration", assetItem->assetName.c_str(), humanReadableReason.c_str()); diff --git a/Engine/source/T3D/assets/assetImporter.h b/Engine/source/T3D/assets/assetImporter.h index b03c89c40..9505d00b1 100644 --- a/Engine/source/T3D/assets/assetImporter.h +++ b/Engine/source/T3D/assets/assetImporter.h @@ -409,6 +409,15 @@ public: /// bool SoundsCompressed; + /// When importing an image, this indicates if it should automatically add a standard suffix onto the name + /// + bool AlwaysAddSoundSuffix; + + /// + /// If AlwaysAddSoundSuffix is on, this is the suffix to be added + /// + String AddedSoundSuffix; + public: AssetImportConfig(); virtual ~AssetImportConfig(); @@ -934,4 +943,27 @@ public: // void setTargetModuleId(const String& moduleId) { targetModuleId = moduleId; } const String& getTargetModuleId() { return targetModuleId; } + + String getFolderPrefixedName(AssetImportObject* assetItem) + { + String renamedAssetName = assetItem->assetName; + S32 dirIndex = assetItem->filePath.getDirectoryCount() - 1; + while (dirIndex > -1) + { + renamedAssetName = assetItem->assetName; + String owningFolder = assetItem->filePath.getDirectory(dirIndex); + + renamedAssetName = owningFolder + "_" + renamedAssetName; + + if (AssetDatabase.isDeclaredAsset(renamedAssetName)) + { + dirIndex--; + continue; + } + + break; + } + + return renamedAssetName; + } }; diff --git a/Engine/source/Verve/GUI/VEditorButton.cpp b/Engine/source/Verve/GUI/VEditorButton.cpp index 3c32424b4..d86f86e3f 100644 --- a/Engine/source/Verve/GUI/VEditorButton.cpp +++ b/Engine/source/Verve/GUI/VEditorButton.cpp @@ -186,7 +186,7 @@ void VEditorButton::onRender( Point2I offset, const RectI& updateRect ) { RectI boundsRect( offset, getExtent() ); - if ( mDepressed || mStateOn || mMouseOver ) + if ( mDepressed || mStateOn || mHighlighted ) { renderFilledBorder( boundsRect, mProfile->mBorderColorHL, mProfile->mFillColorHL ); } diff --git a/Engine/source/afx/ui/afxSpellButton.cpp b/Engine/source/afx/ui/afxSpellButton.cpp index 632d2e652..76888a73a 100644 --- a/Engine/source/afx/ui/afxSpellButton.cpp +++ b/Engine/source/afx/ui/afxSpellButton.cpp @@ -221,7 +221,7 @@ void afxSpellButton::onRender(Point2I offset, const RectI& updateRect) if (mActive) { - if (mMouseOver) state = HILIGHT; + if (mHighlighted) state = HILIGHT; if (mDepressed || mStateOn) state = DEPRESSED; } else diff --git a/Engine/source/console/simDictionary.cpp b/Engine/source/console/simDictionary.cpp index 93491fd1c..8730a89dd 100644 --- a/Engine/source/console/simDictionary.cpp +++ b/Engine/source/console/simDictionary.cpp @@ -53,7 +53,7 @@ void SimNameDictionary::insert(SimObject* obj) SimObject* checkForDup = find(obj->getName()); if (checkForDup) - Con::warnf("Warning! You have a duplicate datablock name of %s. This can cause problems. You should rename one of them.", obj->getName()); + Con::warnf("Warning! You have a duplicate object name of %s. This can cause problems. You should rename one of them.", obj->getName()); Mutex::lockMutex(mutex); #ifndef USE_NEW_SIMDICTIONARY diff --git a/Engine/source/gui/buttons/guiBitmapButtonCtrl.h b/Engine/source/gui/buttons/guiBitmapButtonCtrl.h index 59e7825f1..846cdaedb 100644 --- a/Engine/source/gui/buttons/guiBitmapButtonCtrl.h +++ b/Engine/source/gui/buttons/guiBitmapButtonCtrl.h @@ -137,7 +137,7 @@ class GuiBitmapButtonCtrl : public GuiButtonCtrl if( mActive ) { if( mDepressed || mStateOn ) return DEPRESSED; - if( mMouseOver ) return HILIGHT; + if( mHighlighted ) return HILIGHT; return NORMAL; } else diff --git a/Engine/source/gui/buttons/guiBorderButton.cpp b/Engine/source/gui/buttons/guiBorderButton.cpp index 6efc5bc77..24f4a50f3 100644 --- a/Engine/source/gui/buttons/guiBorderButton.cpp +++ b/Engine/source/gui/buttons/guiBorderButton.cpp @@ -79,7 +79,7 @@ void GuiBorderButtonCtrl::onRender(Point2I offset, const RectI &updateRect) } } - if ( mMouseOver ) + if ( mHighlighted ) { RectI bounds( offset, getExtent() ); for ( S32 i=0; i < mProfile->mBorderThickness; i++ ) diff --git a/Engine/source/gui/buttons/guiButtonBaseCtrl.cpp b/Engine/source/gui/buttons/guiButtonBaseCtrl.cpp index 4621d5fea..b72f1b280 100644 --- a/Engine/source/gui/buttons/guiButtonBaseCtrl.cpp +++ b/Engine/source/gui/buttons/guiButtonBaseCtrl.cpp @@ -98,7 +98,7 @@ EndImplementEnumType; GuiButtonBaseCtrl::GuiButtonBaseCtrl() { mDepressed = false; - mMouseOver = false; + mHighlighted = false; mActive = true; static StringTableEntry sButton = StringTable->insert( "Button" ); mButtonText = sButton; @@ -288,14 +288,14 @@ void GuiButtonBaseCtrl::onMouseEnter(const GuiEvent &event) if(isMouseLocked()) { mDepressed = true; - mMouseOver = true; + mHighlighted = true; } else { if ( mActive && mProfile->mSoundButtonOver ) SFX->playOnce(mProfile->mSoundButtonOver); - mMouseOver = true; + mHighlighted = true; } } @@ -309,7 +309,7 @@ void GuiButtonBaseCtrl::onMouseLeave(const GuiEvent &) onMouseLeave_callback(); if( isMouseLocked() ) mDepressed = false; - mMouseOver = false; + mHighlighted = false; } //----------------------------------------------------------------------------- @@ -542,3 +542,17 @@ DefineEngineMethod( GuiButtonBaseCtrl, resetState, void, (),, { object->resetState(); } + +DefineEngineMethod(GuiButtonBaseCtrl, setHighlighted, void, (bool highlighted), (false), + "Reset the mousing state of the button.\n\n" + "This method should not generally be called.") +{ + object->setHighlighted(highlighted); +} + +DefineEngineMethod(GuiButtonBaseCtrl, isHighlighted, bool, (),, + "Reset the mousing state of the button.\n\n" + "This method should not generally be called.") +{ + return object->isHighlighted(); +} diff --git a/Engine/source/gui/buttons/guiButtonBaseCtrl.h b/Engine/source/gui/buttons/guiButtonBaseCtrl.h index 0e3be53a7..60f76ea4a 100644 --- a/Engine/source/gui/buttons/guiButtonBaseCtrl.h +++ b/Engine/source/gui/buttons/guiButtonBaseCtrl.h @@ -49,7 +49,7 @@ class GuiButtonBaseCtrl : public GuiControl StringTableEntry mButtonText; StringTableEntry mButtonTextID; bool mDepressed; - bool mMouseOver; + bool mHighlighted; bool mStateOn; S32 mButtonType; S32 mRadioGroup; @@ -95,7 +95,10 @@ class GuiButtonBaseCtrl : public GuiControl bool getStateOn() const { return mStateOn; } void setDepressed( bool depressed ) { mDepressed = depressed; } - void resetState() {mDepressed = false; mMouseOver = false;} + void resetState() {mDepressed = false; mHighlighted = false;} + + void setHighlighted(bool highlighted) { mHighlighted = highlighted; } + bool isHighlighted() { return mHighlighted; } void acceleratorKeyPress(U32 index); void acceleratorKeyRelease(U32 index); diff --git a/Engine/source/gui/buttons/guiButtonCtrl.cpp b/Engine/source/gui/buttons/guiButtonCtrl.cpp index c0d5f4e08..8996f87a9 100644 --- a/Engine/source/gui/buttons/guiButtonCtrl.cpp +++ b/Engine/source/gui/buttons/guiButtonCtrl.cpp @@ -83,7 +83,7 @@ bool GuiButtonCtrl::onWake() void GuiButtonCtrl::onRender(Point2I offset, const RectI& updateRect) { - bool highlight = mMouseOver; + bool highlight = mHighlighted; bool depressed = mDepressed; ColorI fontColor = mActive ? ( highlight ? mProfile->mFontColorHL : mProfile->mFontColor ) : mProfile->mFontColorNA; @@ -107,7 +107,7 @@ void GuiButtonCtrl::onRender(Point2I offset, indexMultiplier = 4; else if ( mDepressed || mStateOn ) indexMultiplier = 2; - else if ( mMouseOver ) + else if ( mHighlighted ) indexMultiplier = 3; renderSizableBitmapBordersFilled( boundsRect, indexMultiplier, mProfile ); @@ -123,3 +123,4 @@ void GuiButtonCtrl::onRender(Point2I offset, //render the children renderChildControls( offset, updateRect); } + diff --git a/Engine/source/gui/buttons/guiCheckBoxCtrl.cpp b/Engine/source/gui/buttons/guiCheckBoxCtrl.cpp index b7b47b57c..983709c7a 100644 --- a/Engine/source/gui/buttons/guiCheckBoxCtrl.cpp +++ b/Engine/source/gui/buttons/guiCheckBoxCtrl.cpp @@ -106,7 +106,7 @@ void GuiCheckBoxCtrl::onRender(Point2I offset, const RectI &updateRect) } ColorI backColor = mActive ? mProfile->mFillColor : mProfile->mFillColorNA; - ColorI fontColor = mActive ? (mMouseOver ? mProfile->mFontColorHL : mProfile->mFontColor) : mProfile->mFontColorNA; + ColorI fontColor = mActive ? (mHighlighted ? mProfile->mFontColorHL : mProfile->mFontColor) : mProfile->mFontColorNA; ColorI insideBorderColor = isFirstResponder() ? mProfile->mBorderColorHL : mProfile->mBorderColor; // just draw the check box and the text: diff --git a/Engine/source/gui/buttons/guiIconButtonCtrl.cpp b/Engine/source/gui/buttons/guiIconButtonCtrl.cpp index c0fb939ff..a84623fa1 100644 --- a/Engine/source/gui/buttons/guiIconButtonCtrl.cpp +++ b/Engine/source/gui/buttons/guiIconButtonCtrl.cpp @@ -218,7 +218,7 @@ void GuiIconButtonCtrl::onRender(Point2I offset, const RectI& updateRect) void GuiIconButtonCtrl::renderButton( Point2I &offset, const RectI& updateRect ) { - bool highlight = mMouseOver; + bool highlight = mHighlighted; bool depressed = mDepressed; ColorI fontColor = mActive ? (highlight ? mProfile->mFontColorHL : mProfile->mFontColor) : mProfile->mFontColorNA; @@ -236,7 +236,7 @@ void GuiIconButtonCtrl::renderButton( Point2I &offset, const RectI& updateRect ) else renderSlightlyLoweredBox(boundsRect, mProfile); } - else if(mMouseOver && mActive) + else if(mHighlighted && mActive) { // If there is a bitmap array then render using it. // Otherwise use a standard fill. diff --git a/Engine/source/gui/buttons/guiSwatchButtonCtrl.cpp b/Engine/source/gui/buttons/guiSwatchButtonCtrl.cpp index 7db73a05e..dea3e8535 100644 --- a/Engine/source/gui/buttons/guiSwatchButtonCtrl.cpp +++ b/Engine/source/gui/buttons/guiSwatchButtonCtrl.cpp @@ -90,7 +90,7 @@ bool GuiSwatchButtonCtrl::onWake() void GuiSwatchButtonCtrl::onRender( Point2I offset, const RectI &updateRect ) { - bool highlight = mMouseOver; + bool highlight = mHighlighted; ColorI borderColor = mActive ? ( highlight ? mProfile->mBorderColorHL : mProfile->mBorderColor ) : mProfile->mBorderColorNA; diff --git a/Engine/source/gui/buttons/guiToggleButtonCtrl.cpp b/Engine/source/gui/buttons/guiToggleButtonCtrl.cpp index a2aaaa6c9..8dea6943c 100644 --- a/Engine/source/gui/buttons/guiToggleButtonCtrl.cpp +++ b/Engine/source/gui/buttons/guiToggleButtonCtrl.cpp @@ -66,7 +66,7 @@ void GuiToggleButtonCtrl::onPreRender() void GuiToggleButtonCtrl::onRender(Point2I offset, const RectI& updateRect) { - bool highlight = mMouseOver; + bool highlight = mHighlighted; bool depressed = mDepressed; ColorI fontColor = mActive ? ( highlight ? mProfile->mFontColorHL : mProfile->mFontColor ) : mProfile->mFontColorNA; @@ -89,7 +89,7 @@ void GuiToggleButtonCtrl::onRender(Point2I offset, indexMultiplier = 4; else if ( mDepressed || mStateOn ) indexMultiplier = 2; - else if ( mMouseOver ) + else if ( mHighlighted ) indexMultiplier = 3; diff --git a/Engine/source/gui/buttons/guiToolboxButtonCtrl.cpp b/Engine/source/gui/buttons/guiToolboxButtonCtrl.cpp index 3f1b26f0c..9a9a63831 100644 --- a/Engine/source/gui/buttons/guiToolboxButtonCtrl.cpp +++ b/Engine/source/gui/buttons/guiToolboxButtonCtrl.cpp @@ -144,7 +144,7 @@ void GuiToolboxButtonCtrl::onRender(Point2I offset, const RectI& updateRect) RectI r(offset, getExtent()); if ( mDepressed || mStateOn ) renderStateRect( mLoweredBitmap , r ); - else if ( mMouseOver ) + else if ( mHighlighted ) renderStateRect( mHoverBitmap , r ); } diff --git a/Engine/source/gui/controls/guiGradientCtrl.cpp b/Engine/source/gui/controls/guiGradientCtrl.cpp index 112f3859d..3b5959ae8 100644 --- a/Engine/source/gui/controls/guiGradientCtrl.cpp +++ b/Engine/source/gui/controls/guiGradientCtrl.cpp @@ -99,7 +99,7 @@ bool GuiGradientSwatchCtrl::onWake() void GuiGradientSwatchCtrl::onRender( Point2I offset, const RectI &updateRect ) { - bool highlight = mMouseOver; + bool highlight = mHighlighted; ColorI borderColor = mActive ? ( highlight ? mProfile->mBorderColorHL : mProfile->mBorderColor ) : mProfile->mBorderColorNA; RectI renderRect( offset, getExtent() ); @@ -632,4 +632,4 @@ DefineEngineMethod(GuiGradientCtrl, getColor, LinearColorF, (S32 idx), , "Get co } return LinearColorF::ONE; -} \ No newline at end of file +} diff --git a/Engine/source/gui/core/guiCanvas.cpp b/Engine/source/gui/core/guiCanvas.cpp index 0b894f7c3..95f6213c2 100644 --- a/Engine/source/gui/core/guiCanvas.cpp +++ b/Engine/source/gui/core/guiCanvas.cpp @@ -706,6 +706,9 @@ bool GuiCanvas::processInputEvent(InputEventInfo &inputEvent) if (mCursorEnabled || mForceMouseToGUI || (mAlwaysHandleMouseButtons && inputEvent.objType == SI_BUTTON) ) { + if (inputEvent.objType != SI_AXIS && inputEvent.action == SI_MAKE) + bool asdfasdf = true; + return processMouseEvent(inputEvent); } break; diff --git a/Engine/source/gui/utility/guiInputCtrl.cpp b/Engine/source/gui/utility/guiInputCtrl.cpp index 907d861a9..4c56f9133 100644 --- a/Engine/source/gui/utility/guiInputCtrl.cpp +++ b/Engine/source/gui/utility/guiInputCtrl.cpp @@ -61,7 +61,8 @@ ConsoleDocClass( GuiInputCtrl, GuiInputCtrl::GuiInputCtrl() : mSendAxisEvents(false), mSendBreakEvents(false), - mSendModifierEvents(false) + mSendModifierEvents(false), + mIgnoreMouseEvents(false) { } @@ -76,6 +77,8 @@ void GuiInputCtrl::initPersistFields() "If true, break events for all devices will generate callbacks (Default false)."); addField("sendModifierEvents", TypeBool, Offset(mSendModifierEvents, GuiInputCtrl), "If true, Make events will be sent for modifier keys (Default false)."); + addField("ignoreMouseEvents", TypeBool, Offset(mIgnoreMouseEvents, GuiInputCtrl), + "If true, any events from mouse devices will be passed through."); endGroup("GuiInputCtrl"); Parent::initPersistFields(); @@ -97,7 +100,7 @@ bool GuiInputCtrl::onWake() if ( !Parent::onWake() ) return( false ); - if( !smDesignTime ) + if( !smDesignTime && !mIgnoreMouseEvents) mouseLock(); setFirstResponder(); @@ -151,6 +154,9 @@ IMPLEMENT_CALLBACK(GuiInputCtrl, onAxisEvent, void, (const char* device, const c //------------------------------------------------------------------------------ bool GuiInputCtrl::onInputEvent( const InputEventInfo &event ) { + if (mIgnoreMouseEvents && event.deviceType == MouseDeviceType) + return false; + char deviceString[32]; if ( event.action == SI_MAKE ) { diff --git a/Engine/source/gui/utility/guiInputCtrl.h b/Engine/source/gui/utility/guiInputCtrl.h index be60371f3..269569693 100644 --- a/Engine/source/gui/utility/guiInputCtrl.h +++ b/Engine/source/gui/utility/guiInputCtrl.h @@ -36,6 +36,7 @@ protected: bool mSendAxisEvents; bool mSendBreakEvents; bool mSendModifierEvents; + bool mIgnoreMouseEvents; public: