On Tuesday, 5 January 2016 at 04:41:45 UTC, Rikki Cattermole
wrote:
On 05/01/16 5:37 PM, Straivers wrote:
Hello,
I'm working on an event system, and I want to be able to check
if an
event is a subclass of another event. How might I go about
this? In
essence, I'm looking to compress this:
static if (E == UserInputEvent || E == MouseEvent || E ==
MouseButtonEvent || E == MouseReleasedEvent)
{
//MouseEvent => MouseButtonEvent => MouseReleasedEvent
mreListeners[mrePtr] = listener;
mrePtr++;
}
into something like this:
static if (isSuperclassOf!(MouseReleasedEvent, E))
{
mreListeners[mrePtr] = listener;
mrePtr++;
}
Thank you for your time.
-S
is(E : UserInputEvent)
Okay, maybe I didn't write enough. I have multiple subtypes like:
static if (E == UserInputEvent || E == MouseEvent || E ==
MouseMovementEvent)
{ //MouseMovementEvent is a subclass of MouseEvent
mmeListeners[mmePtr] = listener;
mmePtr++;
}
static if (E == UserInputEvent || E == MouseEvent || E ==
MouseButtonEvent || E == MouseReleasedEvent)
{ //MouseEvent => MouseButtonEvent => MouseReleasedEvent
mreListeners[mrePtr] = listener;
mrePtr++;
}
static if (E == UserInputEvent || E == MouseEvent || E ==
MouseButtonEvent || E == MousePressedEvent)
{ //MouseEvent => MouseButtonEvent => MousePressedEvent
mpeListeners[mpePtr] = listener;
mpePtr++;
}
and I want to differentiate between them so that a UserInputEvent
will cause all three blocks to be compiled, but a
MouseMovementEvent will only cause the first block to be
compiled. Sorry about that.