From 0a75c64fb1f5229e79c3ad541eceb860629b109f Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Mon, 4 Apr 2022 21:34:00 -0700 Subject: [PATCH] infodecal: Allow usage outside of HL BSP. Just not Quake 1/2 BSP. --- src/gs-entbase/server/infodecal.qc | 12 +++++++++++- src/gs-entbase/shared/NSEntity.qc | 3 --- src/gs-entbase/shared/decals.qc | 21 ++++++++++++++++++--- 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/src/gs-entbase/server/infodecal.qc b/src/gs-entbase/server/infodecal.qc index d03fe8e3..64081c9a 100644 --- a/src/gs-entbase/server/infodecal.qc +++ b/src/gs-entbase/server/infodecal.qc @@ -116,6 +116,8 @@ infodecal::SpawnKey(string strKey, string strValue) { switch (strKey) { case "material": + m_strTexture = strValue; + break; case "texture": m_strTexture = strtolower(strValue); break; @@ -127,7 +129,15 @@ infodecal::SpawnKey(string strKey, string strValue) void infodecal::infodecal(void) { - if (serverkeyfloat("*bspversion") != BSPVER_HL) { + float bsp_version = serverkeyfloat("*bspversion"); + + switch (bsp_version) { + case BSPVER_HL: + case BSPVER_RBSP: + case BSPVER_Q3: + case BSPVER_RTCW: + break; + default: remove(self); return; } diff --git a/src/gs-entbase/shared/NSEntity.qc b/src/gs-entbase/shared/NSEntity.qc index 6ba6f52d..8966a99b 100644 --- a/src/gs-entbase/shared/NSEntity.qc +++ b/src/gs-entbase/shared/NSEntity.qc @@ -176,21 +176,18 @@ void NSEntity::Touch(entity eToucher) { /* To be handled by sub-classes */ - print("touched!\n"); } void NSEntity::StartTouch(entity eToucher) { /* To be handled by sub-classes */ - print("start touched!\n"); } void NSEntity::EndTouch(entity eToucher) { /* To be handled by sub-classes */ - print("end touched!\n"); } void diff --git a/src/gs-entbase/shared/decals.qc b/src/gs-entbase/shared/decals.qc index c880ecfa..772251a1 100644 --- a/src/gs-entbase/shared/decals.qc +++ b/src/gs-entbase/shared/decals.qc @@ -94,6 +94,8 @@ decal::ReceiveEntity(void) if (serverkeyfloat("*bspversion") == BSPVER_HL) { BuildShader(); + } else { + m_strShader = m_strTexture; } makevectors(angles); @@ -152,11 +154,14 @@ decal::BuildShader(void) void decal::Place(vector org, string dname) { + if (!dname) + return; + decal_pickwall(this, org); /* we never hit any wall. */ if (g_tracedDecal.fraction == 1.0f) { - dprint(sprintf("^1infodecal tracing failed at %v\n", org)); + print(sprintf("^1infodecal tracing failed at %v\n", org)); if (classname != "tempdecal") remove(this); return; @@ -190,6 +195,8 @@ decal::Place(vector org, string dname) if (serverkeyfloat("*bspversion") == BSPVER_HL) { BuildShader(); + } else { + m_strShader = m_strTexture; } makevectors(angles); @@ -252,8 +259,16 @@ decal Decals_Next(vector pos) /* Generalized Decal Placing Function */ void Decals_Place(vector pos, string dname) { - if (serverkeyfloat("*bspversion") != BSPVER_HL) { - return; + float bsp_version = serverkeyfloat("*bspversion"); + + switch (bsp_version) { + case BSPVER_HL: + case BSPVER_RBSP: + case BSPVER_Q3: + case BSPVER_RTCW: + break; + default: + return; } decal x = Decals_Next(pos);