diff --git a/Engine/source/gui/core/guiCanvas.cpp b/Engine/source/gui/core/guiCanvas.cpp index f00cf6cca..82c0475f0 100644 --- a/Engine/source/gui/core/guiCanvas.cpp +++ b/Engine/source/gui/core/guiCanvas.cpp @@ -20,6 +20,11 @@ // IN THE SOFTWARE. //----------------------------------------------------------------------------- +//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// +// Arcane-FX for MIT Licensed Open Source version of Torque 3D from GarageGames +// Copyright (C) 2015 Faust Logic, Inc. +//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// + #include "platform/platform.h" #include "gui/core/guiCanvas.h" @@ -605,10 +610,11 @@ bool GuiCanvas::tabPrev(void) bool GuiCanvas::processInputEvent(InputEventInfo &inputEvent) { + mConsumeLastInputEvent = true; // First call the general input handler (on the extremely off-chance that it will be handled): if (mFirstResponder && mFirstResponder->onInputEvent(inputEvent)) { - return(true); + return mConsumeLastInputEvent; } switch (inputEvent.deviceType) @@ -664,7 +670,7 @@ bool GuiCanvas::processKeyboardEvent(InputEventInfo &inputEvent) if (mFirstResponder) { if(mFirstResponder->onKeyDown(mLastEvent)) - return true; + return mConsumeLastInputEvent; } //see if we should tab next/prev @@ -675,12 +681,12 @@ bool GuiCanvas::processKeyboardEvent(InputEventInfo &inputEvent) if (inputEvent.modifier & SI_SHIFT) { if(tabPrev()) - return true; + return mConsumeLastInputEvent; } else if (inputEvent.modifier == 0) { if(tabNext()) - return true; + return mConsumeLastInputEvent; } } } @@ -691,14 +697,14 @@ bool GuiCanvas::processKeyboardEvent(InputEventInfo &inputEvent) if ((U32)mAcceleratorMap[i].keyCode == (U32)inputEvent.objInst && (U32)mAcceleratorMap[i].modifier == eventModifier) { mAcceleratorMap[i].ctrl->acceleratorKeyPress(mAcceleratorMap[i].index); - return true; + return mConsumeLastInputEvent; } } } else if(inputEvent.action == SI_BREAK) { if(mFirstResponder && mFirstResponder->onKeyUp(mLastEvent)) - return true; + return mConsumeLastInputEvent; //see if there's an accelerator for (U32 i = 0; i < mAcceleratorMap.size(); i++) @@ -706,7 +712,7 @@ bool GuiCanvas::processKeyboardEvent(InputEventInfo &inputEvent) if ((U32)mAcceleratorMap[i].keyCode == (U32)inputEvent.objInst && (U32)mAcceleratorMap[i].modifier == eventModifier) { mAcceleratorMap[i].ctrl->acceleratorKeyRelease(mAcceleratorMap[i].index); - return true; + return mConsumeLastInputEvent; } } } @@ -718,13 +724,14 @@ bool GuiCanvas::processKeyboardEvent(InputEventInfo &inputEvent) if ((U32)mAcceleratorMap[i].keyCode == (U32)inputEvent.objInst && (U32)mAcceleratorMap[i].modifier == eventModifier) { mAcceleratorMap[i].ctrl->acceleratorKeyPress(mAcceleratorMap[i].index); - return true; + return mConsumeLastInputEvent; } } if(mFirstResponder) { - return mFirstResponder->onKeyRepeat(mLastEvent); + bool ret = mFirstResponder->onKeyRepeat(mLastEvent); + return ret && mConsumeLastInputEvent; } } return false; @@ -801,7 +808,7 @@ bool GuiCanvas::processMouseEvent(InputEventInfo &inputEvent) rootMiddleMouseDragged(mLastEvent); else rootMouseMove(mLastEvent); - return true; + return mConsumeLastInputEvent; } else if ( inputEvent.objInst == SI_ZAXIS || inputEvent.objInst == SI_RZAXIS ) @@ -860,7 +867,7 @@ bool GuiCanvas::processMouseEvent(InputEventInfo &inputEvent) rootMouseUp(mLastEvent); } - return true; + return mConsumeLastInputEvent; } else if(inputEvent.objInst == KEY_BUTTON1) // right button { @@ -891,7 +898,7 @@ bool GuiCanvas::processMouseEvent(InputEventInfo &inputEvent) else // it was a mouse up rootRightMouseUp(mLastEvent); - return true; + return mConsumeLastInputEvent; } else if(inputEvent.objInst == KEY_BUTTON2) // middle button { @@ -922,7 +929,7 @@ bool GuiCanvas::processMouseEvent(InputEventInfo &inputEvent) else // it was a mouse up rootMiddleMouseUp(mLastEvent); - return true; + return mConsumeLastInputEvent; } } return false; @@ -1801,7 +1808,7 @@ void GuiCanvas::renderFrame(bool preRenderOnly, bool bufferSwap /* = true */) if (GuiOffscreenCanvas::sList.size() != 0) { // Reset the entire state since oculus shit will have barfed it. - GFX->disableShaders(true); + //GFX->disableShaders(true); GFX->updateStates(true); for (Vector::iterator itr = GuiOffscreenCanvas::sList.begin(); itr != GuiOffscreenCanvas::sList.end(); itr++) @@ -2815,3 +2822,23 @@ ConsoleMethod( GuiCanvas, cursorNudge, void, 4, 4, "x, y" ) { object->cursorNudge(dAtof(argv[2]), dAtof(argv[3])); } +// This function allows resetting of the video-mode from script. It was motivated by +// the need to temporarily disable vsync during datablock cache load to avoid a +// significant slowdown. +bool AFX_forceVideoReset = false; + +ConsoleMethod( GuiCanvas, resetVideoMode, void, 2,2, "()") +{ + PlatformWindow* window = object->getPlatformWindow(); + if( window ) + { + GFXWindowTarget* gfx_target = window->getGFXTarget(); + if ( gfx_target ) + { + AFX_forceVideoReset = true; + gfx_target->resetMode(); + AFX_forceVideoReset = false; + } + } +} + diff --git a/Engine/source/gui/core/guiCanvas.h b/Engine/source/gui/core/guiCanvas.h index fa213f56a..7775b8af0 100644 --- a/Engine/source/gui/core/guiCanvas.h +++ b/Engine/source/gui/core/guiCanvas.h @@ -20,6 +20,11 @@ // IN THE SOFTWARE. //----------------------------------------------------------------------------- +//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// +// Arcane-FX for MIT Licensed Open Source version of Torque 3D from GarageGames +// Copyright (C) 2015 Faust Logic, Inc. +//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// + #ifndef _GUICANVAS_H_ #define _GUICANVAS_H_ @@ -446,6 +451,13 @@ public: private: static const U32 MAX_GAMEPADS = 4; ///< The maximum number of supported gamepads + protected: + bool mConsumeLastInputEvent; + public: + void clearMouseRightButtonDown(void) { mMouseRightButtonDown = false; } + void clearMouseButtonDown(void) { mMouseButtonDown = false; } + void setConsumeLastInputEvent(bool flag) { mConsumeLastInputEvent = flag; } + bool getLastCursorPoint(Point2I& pt) const { pt = mLastCursorPt; return mLastCursorEnabled; } }; #endif diff --git a/Engine/source/gui/core/guiControl.cpp b/Engine/source/gui/core/guiControl.cpp index fb833ca7b..968fc9a16 100644 --- a/Engine/source/gui/core/guiControl.cpp +++ b/Engine/source/gui/core/guiControl.cpp @@ -20,6 +20,11 @@ // IN THE SOFTWARE. //----------------------------------------------------------------------------- +//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// +// Arcane-FX for MIT Licensed Open Source version of Torque 3D from GarageGames +// Copyright (C) 2015 Faust Logic, Inc. +//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// + #include "platform/platform.h" #include "gui/core/guiControl.h" @@ -224,6 +229,7 @@ GuiControl::GuiControl() : mAddGroup( NULL ), mCanSaveFieldDictionary = false; mNotifyChildrenResized = true; + fade_amt = 1.0f; } //----------------------------------------------------------------------------- diff --git a/Engine/source/gui/core/guiControl.h b/Engine/source/gui/core/guiControl.h index fa3a327dd..eae37a8df 100644 --- a/Engine/source/gui/core/guiControl.h +++ b/Engine/source/gui/core/guiControl.h @@ -20,6 +20,11 @@ // IN THE SOFTWARE. //----------------------------------------------------------------------------- +//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// +// Arcane-FX for MIT Licensed Open Source version of Torque 3D from GarageGames +// Copyright (C) 2015 Faust Logic, Inc. +//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~//~~~~~~~~~~~~~~~~~~~~~// + #ifndef _GUICONTROL_H_ #define _GUICONTROL_H_ @@ -822,6 +827,10 @@ class GuiControl : public SimGroup void inspectPostApply(); void inspectPreApply(); +protected: + F32 fade_amt; +public: + void setFadeAmount(F32 amt) { fade_amt = amt; } }; typedef GuiControl::horizSizingOptions GuiHorizontalSizing;