From 91ff447a907c11ab98195ed2a7da02815ab921b9 Mon Sep 17 00:00:00 2001 From: Rachael Alexanderson Date: Sat, 29 Jul 2017 13:59:36 -0400 Subject: [PATCH] - fixed compile from last commit - refactored the zscript hookup a bit, made it actually work --- src/actor.h | 5 +++-- src/gl/scene/gl_sprite.cpp | 4 ++-- src/p_mobj.cpp | 7 +++++-- src/polyrenderer/scene/poly_sprite.cpp | 4 ++-- src/scripting/thingdef_properties.cpp | 17 +---------------- src/swrenderer/scene/r_opaque_pass.cpp | 4 ++-- wadsrc/static/zscript/actor.txt | 6 ++++++ 7 files changed, 21 insertions(+), 26 deletions(-) diff --git a/src/actor.h b/src/actor.h index 3343419f39..9f1f9b5bfb 100644 --- a/src/actor.h +++ b/src/actor.h @@ -1045,9 +1045,10 @@ public: uint32_t fillcolor; // Color to draw when STYLE_Shaded uint32_t Translation; + uint32_t RenderRequired; // current renderer must have this feature set + uint32_t RenderHidden; // current renderer must *not* have any of these features + ActorRenderFlags renderflags; // Different rendering flags - ActorRenderFeatureFlags renderrequired; // current renderer must have this feature set - ActorRenderFeatureFlags renderhidden; // current renderer must *not* have any of these features ActorFlags flags; ActorFlags2 flags2; // Heretic flags ActorFlags3 flags3; // [RH] Hexen/Heretic actor-dependant behavior made flaggable diff --git a/src/gl/scene/gl_sprite.cpp b/src/gl/scene/gl_sprite.cpp index 81b0772226..845ea24a8b 100644 --- a/src/gl/scene/gl_sprite.cpp +++ b/src/gl/scene/gl_sprite.cpp @@ -681,8 +681,8 @@ void GLSprite::Process(AActor* thing, sector_t * sector, int thruportal) // check renderrequired vs ~r_rendercaps, if anything matches we don't support that feature, // check renderhidden vs r_rendercaps, if anything matches we do support that feature and should hide it. - if ((!!((uint32_t)(thing->renderrequired) & ~r_renderercaps)) || - (!!((uint32_t)(thing->renderhidden) & r_renderercaps))) + if ((!!(thing->RenderRequired & ~r_renderercaps)) || + (!!(thing->RenderHidden & r_renderercaps))) return; int spritenum = thing->sprite; diff --git a/src/p_mobj.cpp b/src/p_mobj.cpp index 3fff257adf..c02490420f 100644 --- a/src/p_mobj.cpp +++ b/src/p_mobj.cpp @@ -352,6 +352,8 @@ DEFINE_FIELD(AActor, StealthAlpha) DEFINE_FIELD(AActor, WoundHealth) DEFINE_FIELD(AActor, BloodColor) DEFINE_FIELD(AActor, BloodTranslation) +DEFINE_FIELD(AActor, RenderHidden) +DEFINE_FIELD(AActor, RenderRequired) //========================================================================== // @@ -526,8 +528,9 @@ void AActor::Serialize(FSerializer &arc) A("woundhealth", WoundHealth) A("rdfactor", RadiusDamageFactor) A("selfdamagefactor", SelfDamageFactor) - A("stealthalpha", StealthAlpha); - + A("stealthalpha", StealthAlpha) + A("renderhidden", RenderHidden) + A("renderrequired", RenderRequired); } #undef A diff --git a/src/polyrenderer/scene/poly_sprite.cpp b/src/polyrenderer/scene/poly_sprite.cpp index ca960dd582..a859191986 100644 --- a/src/polyrenderer/scene/poly_sprite.cpp +++ b/src/polyrenderer/scene/poly_sprite.cpp @@ -179,8 +179,8 @@ bool RenderPolySprite::IsThingCulled(AActor *thing) // check renderrequired vs ~r_rendercaps, if anything matches we don't support that feature, // check renderhidden vs r_rendercaps, if anything matches we do support that feature and should hide it. - if ((!!((uint32_t)(thing->renderrequired) & ~r_renderercaps)) || - (!!((uint32_t)(thing->renderhidden) & r_renderercaps))) + if ((!!(thing->RenderRequired & ~r_renderercaps)) || + (!!(thing->RenderHidden & r_renderercaps))) return true; return false; diff --git a/src/scripting/thingdef_properties.cpp b/src/scripting/thingdef_properties.cpp index 4ac679b450..c36058ca46 100644 --- a/src/scripting/thingdef_properties.cpp +++ b/src/scripting/thingdef_properties.cpp @@ -1090,6 +1090,7 @@ DEFINE_PROPERTY(distancecheck, S, Actor) } } + //========================================================================== // // Special inventory properties @@ -1836,19 +1837,3 @@ DEFINE_SCRIPTED_PROPERTY(unmorphflash, S, PowerMorph) defaults->PointerVar(NAME_UnMorphFlash) = FindClassTentative(str, RUNTIME_CLASS(AActor), bag.fromDecorate); } - -//========================================================================== -// actor render feature filters - stop rendering if the renderer does/does not support certain features -//========================================================================== -DEFINE_SCRIPTED_PROPERTY(renderrequired, I, Actor) -{ - PROP_INT_PARM(f, 0); - defaults->renderrequired = f; -} - -DEFINE_SCRIPTED_PROPERTY(renderhidden, I, Actor) -{ - PROP_INT_PARM(f, 0); - defaults->renderhidden = f; -} - diff --git a/src/swrenderer/scene/r_opaque_pass.cpp b/src/swrenderer/scene/r_opaque_pass.cpp index 68c0abab8a..9325cbfcf8 100644 --- a/src/swrenderer/scene/r_opaque_pass.cpp +++ b/src/swrenderer/scene/r_opaque_pass.cpp @@ -971,8 +971,8 @@ namespace swrenderer // check renderrequired vs ~r_rendercaps, if anything matches we don't support that feature, // check renderhidden vs r_rendercaps, if anything matches we do support that feature and should hide it. - if ((!!((uint32_t)(thing->renderrequired) & ~r_renderercaps)) || - (!!((uint32_t)(thing->renderhidden) & r_renderercaps))) + if ((!!(thing->RenderRequired & ~r_renderercaps)) || + (!!(thing->RenderHidden & r_renderercaps))) return false; // [ZZ] Or less definitely not visible (hue) diff --git a/wadsrc/static/zscript/actor.txt b/wadsrc/static/zscript/actor.txt index 207e101b57..048ba07595 100644 --- a/wadsrc/static/zscript/actor.txt +++ b/wadsrc/static/zscript/actor.txt @@ -199,6 +199,8 @@ class Actor : Thinker native native int WoundHealth; // Health needed to enter wound state native readonly color BloodColor; native readonly int BloodTranslation; + native int RenderHidden; + native int RenderRequired; meta String Obituary; // Player was killed by this actor meta String HitObituary; // Player was killed by this actor in melee @@ -285,6 +287,8 @@ class Actor : Thinker native property Ripperlevel: RipperLevel; property RipLevelMin: RipLevelMin; property RipLevelMax: RipLevelMax; + property RenderHidden: RenderHidden; + property RenderRequired: RenderRequired; // need some definition work first //FRenderStyle RenderStyle; @@ -362,6 +366,8 @@ class Actor : Thinker native GibHealth int.min; DeathHeight -1; BurnHeight -1; + RenderHidden 0; + RenderRequired 0; } // Functions