Added per-thing render hooks
This commit is contained in:
parent
5bfd484ae2
commit
302af61686
5 changed files with 97 additions and 20 deletions
|
|
@ -53,6 +53,18 @@ void E_RenderCamera()
|
|||
handler->RenderCamera();
|
||||
}
|
||||
|
||||
void E_RenderBeforeThing(AActor* thing)
|
||||
{
|
||||
for (DEventHandler* handler = E_FirstEventHandler; handler; handler = handler->next)
|
||||
handler->RenderBeforeThing(thing);
|
||||
}
|
||||
|
||||
void E_RenderAfterThing(AActor* thing)
|
||||
{
|
||||
for (DEventHandler* handler = E_FirstEventHandler; handler; handler = handler->next)
|
||||
handler->RenderAfterThing(thing);
|
||||
}
|
||||
|
||||
// declarations
|
||||
IMPLEMENT_CLASS(DEventHandler, false, false);
|
||||
IMPLEMENT_CLASS(DRenderEventHandler, false, false);
|
||||
|
|
@ -62,6 +74,8 @@ DEFINE_FIELD_X(RenderEventHandler, DRenderEventHandler, ViewAngle);
|
|||
DEFINE_FIELD_X(RenderEventHandler, DRenderEventHandler, ViewPitch);
|
||||
DEFINE_FIELD_X(RenderEventHandler, DRenderEventHandler, ViewRoll);
|
||||
DEFINE_FIELD_X(RenderEventHandler, DRenderEventHandler, FracTic);
|
||||
DEFINE_FIELD_X(RenderEventHandler, DRenderEventHandler, Camera);
|
||||
DEFINE_FIELD_X(RenderEventHandler, DRenderEventHandler, CurrentThing);
|
||||
|
||||
DEFINE_ACTION_FUNCTION(DEventHandler, Create)
|
||||
{
|
||||
|
|
@ -109,12 +123,12 @@ DEFINE_ACTION_FUNCTION(DEventHandler, Unregister)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#define DEFINE_EVENT_HANDLER(cls, funcname) DEFINE_ACTION_FUNCTION(cls, funcname) \
|
||||
#define DEFINE_EVENT_HANDLER(cls, funcname, args) DEFINE_ACTION_FUNCTION(cls, funcname) \
|
||||
{ \
|
||||
PARAM_SELF_PROLOGUE(cls); \
|
||||
return 0; \
|
||||
} \
|
||||
void cls::funcname() \
|
||||
void cls::funcname(args) \
|
||||
{ \
|
||||
IFVIRTUAL(cls, funcname) \
|
||||
{ \
|
||||
|
|
@ -125,10 +139,12 @@ void cls::funcname() \
|
|||
} \
|
||||
}
|
||||
|
||||
DEFINE_EVENT_HANDLER(DEventHandler, MapLoaded)
|
||||
DEFINE_EVENT_HANDLER(DEventHandler, MapUnloading)
|
||||
DEFINE_EVENT_HANDLER(DEventHandler, RenderFrame)
|
||||
DEFINE_EVENT_HANDLER(DEventHandler, RenderCamera)
|
||||
DEFINE_EVENT_HANDLER(DEventHandler, MapLoaded,)
|
||||
DEFINE_EVENT_HANDLER(DEventHandler, MapUnloading,)
|
||||
DEFINE_EVENT_HANDLER(DEventHandler, RenderFrame,)
|
||||
DEFINE_EVENT_HANDLER(DEventHandler, RenderCamera,)
|
||||
DEFINE_EVENT_HANDLER(DEventHandler, RenderBeforeThing, AActor*)
|
||||
DEFINE_EVENT_HANDLER(DEventHandler, RenderAfterThing, AActor*)
|
||||
|
||||
//
|
||||
void DEventHandler::OnDestroy()
|
||||
|
|
@ -144,6 +160,7 @@ void DRenderEventHandler::Setup()
|
|||
ViewPitch = ::ViewPitch;
|
||||
ViewRoll = ::ViewRoll;
|
||||
FracTic = ::r_TicFracF;
|
||||
Camera = ::camera;
|
||||
}
|
||||
|
||||
void DRenderEventHandler::RenderFrame()
|
||||
|
|
@ -157,3 +174,15 @@ void DRenderEventHandler::RenderCamera()
|
|||
Setup();
|
||||
DEventHandler::RenderCamera();
|
||||
}
|
||||
|
||||
void DRenderEventHandler::RenderBeforeThing(AActor* thing)
|
||||
{
|
||||
CurrentThing = thing;
|
||||
DEventHandler::RenderBeforeThing(thing);
|
||||
}
|
||||
|
||||
void DRenderEventHandler::RenderAfterThing(AActor* thing)
|
||||
{
|
||||
CurrentThing = thing;
|
||||
DEventHandler::RenderAfterThing(thing);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue