gui offscreen material test

added interaction static guioffscreencanvas to capture mouse events
added test shape
This commit is contained in:
marauder2k7 2025-06-18 17:05:35 +01:00
parent a276ad2505
commit 6f9c4158d8
10 changed files with 190 additions and 7 deletions

View file

@ -690,6 +690,12 @@ bool GuiCanvas::processInputEvent(InputEventInfo &inputEvent)
mConsumeLastInputEvent = true;
mLastInputDeviceType = inputEvent.deviceType;
// If we have an active offscreen canvas, give it the input
if (GuiOffscreenCanvas::sActiveOffscreenCanvas &&
(GuiOffscreenCanvas::sActiveOffscreenCanvas != this) &&
GuiOffscreenCanvas::sActiveOffscreenCanvas->processInputEvent(inputEvent))
return mConsumeLastInputEvent;
// First call the general input handler (on the extremely off-chance that it will be handled):
if (mFirstResponder && mFirstResponder->onInputEvent(inputEvent))
{

View file

@ -9,6 +9,7 @@
IMPLEMENT_CONOBJECT(GuiOffscreenCanvas);
GuiOffscreenCanvas* GuiOffscreenCanvas::sActiveOffscreenCanvas = NULL;
Vector<GuiOffscreenCanvas*> GuiOffscreenCanvas::sList;
GuiOffscreenCanvas::GuiOffscreenCanvas()
@ -33,7 +34,8 @@ void GuiOffscreenCanvas::initPersistFields()
addField( "targetName", TypeRealString, Offset( mTargetName, GuiOffscreenCanvas ), "");
addField( "dynamicTarget", TypeBool, Offset( mDynamicTarget, GuiOffscreenCanvas ), "");
addField( "useDepth", TypeBool, Offset( mUseDepth, GuiOffscreenCanvas ), "");
addField("canInteract", TypeBool, Offset(mCanInteract, GuiOffscreenCanvas), "");
addField("maxInteractDistance", TypeF32, Offset(mMaxInteractDistance, GuiOffscreenCanvas), "");
Parent::initPersistFields();
}

View file

@ -38,6 +38,8 @@ public:
void _teardownTargets();
NamedTexTargetRef getTarget() { return &mNamedTarget; }
bool canInteract() { return mCanInteract; }
F32 getMaxInteractDistance() { return mMaxInteractDistance; }
void markDirty() { mTargetDirty = true; }
@ -59,9 +61,12 @@ protected:
bool mUseDepth;
GFXTexHandle mTargetDepth;
bool mCanInteract;
F32 mMaxInteractDistance;
public:
static Vector<GuiOffscreenCanvas*> sList;
static GuiOffscreenCanvas* sActiveOffscreenCanvas;
};
#endif