From a95440b9f9cae997ceaa98eb0b7f94e81bc3732c Mon Sep 17 00:00:00 2001 From: Marco Hladik Date: Fri, 11 Dec 2020 21:18:30 +0100 Subject: [PATCH] env_projectedtexture: Add custom pattern support and show it off in test_dlights --- .../test_maps.pk3dir/maps/test_dlights.bsp | Bin 1608832 -> 3181796 bytes .../test_maps.pk3dir/maps/test_dlights.map | 2 ++ .../shared/env_projectedtexture.cpp | 23 +++++++++++++++--- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/platform/test_maps.pk3dir/maps/test_dlights.bsp b/platform/test_maps.pk3dir/maps/test_dlights.bsp index 8f087101d2f81188d31fd64263e70fbbc17b38db..b9972e3e5133e687de01dc4592b6018133c1df1a 100644 GIT binary patch delta 21733 zcmeI4Urbw79LH}dYoY613+iYZvl1BpI-qyc0V{ucI~|)?C`u#|O&S&^-{{yX{TD}u4GhEd#5m^1+w4fk;{?b21%SMgubvRY+;uX{ zyHTPzc;%QLxccK0hWQF!?}A<~zx}A@=hfvpbE?9}Fmdnghfd)^h!tY>6iU;`b()Hb z0OHMZU&8q0DdCa1QrOgCwgx&bq{G%4>P>I=G4b6#=&nvUXlOFW@8$JCqpDL%{X%22 z9InbesOBqkBl|PL3ce=z#>HrkMmsd}G($sWmU1JD>9Dj8bG6WIBQ5nNKa51Z)r}Sy z$#Py>+^SYbKIU$g!&SKg)g?L0x~Xgg&rm2yqYOc&e9j((Dg|FF&E|C2jt=v*$vNZg zJ~?O6HYG=z-cq%eQ)j!9Gj(L)b}DC^?NrWe9twqMv<4_uuo}t8vN|lt(Q!!~mf@6~ zskiDqTb!eWs=6t>I{b-BO-O*^~8EswF35gEKENE@XZ-Xve z^6pM$iKi4VM?uEDx#+FVPmNm3a95GdH@cJ+rd3-mz&C;gt?4mU!v-g>$Q95Gmrn%Q zq_P)aXeBJ@rCCykWe8i$O`g2XbW>=KMmsd}^gu%xwwhFVGp13RMy_6}VFVDFaQ;KZ zi5tE0jB3)-r%2VOV<2He(pKwApOPI-AApuSQ^N;*XN+1;3qEDSHNB^4HP*{33DWvX z@N)h%xy?gYYN*=}U9m-5cFYgMC`M@-xh_&s5kRTqxxUC;Zqms13KbQi(HcQkZ80lv zY*`%^e3gz%>aYwjzMwyO)4fEqIUTm6!#w@a)~4NGoe=GZc`VRdCE9tpxIPRzbt2z> zqeNS-6xWZH=oQd>ey)iJvRB}iic#=23MFZj0hG$WN0Yqy1}HQ~qa7M~UWbMjZCpy; zVmd6X!(0KnZ3Gx!&>zX$rVg_W(s3ajwnkXNydMn0JQnDIp<=yIqW3_j6m!UXn>Sdj z6D4}PSg*T>oz;di!SG)1`t((=QNHxA|2=V{3@+c8^sf)S{{vipu^*n<4;!GAK`}xp zhjI*x35pp?1(ZrC7AVK1{jhbkN?N>SoivE|qSj;5<foAk5?mq9u4?_QvNxsOU)g1>z$v+divewbHb5KT zy8*sI&L2e^)J|Iy#%K6>=$U?a!asuJBLRFIf-XQ8pbO9i=mK;Bx&U2(EEGDG@xT*)QW-y`jh|3Q7oZE!1?U2F0lENPfG$86{106au${aweH?Y1wy_ga!{bv^ z6CZuh8g1(QwCDn9($(JTIR(@{yT?i)Fdli~@7-O%>pEsn9n i|28`E)|>s8hDHbd!ypR2TA}_IO$)o`E)jm={N^9E%f`L{ delta 8028 zcmeH~O>7fK6vx+gNQfI_J|yD0YF*_6Vgp%2A%L6M!9V~*FcP;2X)8h{l!#g!dZ?@5 zg$i0sshezDCuxfVgo`C)K@N)|fkjRz67mIc$N@`;UUH~=tAyIRZ+2(BS-+{&1FBSM zB29Mwzj^a^-g`5<>sM0?HhJo_Yan{^giR2H-jqj(j=N6w$Z3!88vt@8f4!0*OnL?3 zRFWtUTs=ZB^qzet2w%Z<67+1t_>0zicW2w0(bhbB6^a;YtK5*BjyzboGBs@2DY!lTB`uOywF3p_E zWf+#HYLWe#a4C_^aAPaVU{uCP?1G6|Yh)<~D>0bQkLM=*?Ttsl9bM|YA0jztYG;6I z8u?J5OEaf355sjes|MgE)-uMoAe6(XLeO_+WRIj~C9)N>41<*!Ox&i|Y+YEZS#le# z5!H)^rlEMd^_o#R(v50X?1sfyYvvXak}xU|^n*3BDucy?*e=Ilm7rcTy428iYmL%| zrjagf*K0;)UIN{v_Mp+`}O)!xzrD?Xg{zIZgaC1KiS)mw{(PNw9=47T)#*IZKWp=iGf+JYOR}Q)5rlFWRS24{ z`66|T#1P70RK`d=3KM@a;?mE0ior?@<~xSxCJ6h{^hfGeWH9$2wv!mFK-g`=AAINx zLLOJ>*m0|#uG7mz-!kWi;#Qrm(@R!87dYWvKXE2Jcjxk3_t(d3?8?m9=-lzM zw@4@Qg*f`9IBJ7thvtCR0BsetMrcjYRzqus=7jc^Dvq{z)~WZ$TJm;v=4wmErpj{5 z6`LxJb^NK3F-~|k_)d6Zrywiu+z`uNu=#tkgLeP*T5rE9HTzo|vTz88|AoyRVzWAX z!A1P6@n1Hj3bNW@YCf!GiKpcscgsUhE33OV&4nF-GdU=WX diff --git a/platform/test_maps.pk3dir/maps/test_dlights.map b/platform/test_maps.pk3dir/maps/test_dlights.map index 50037176..04b69059 100644 --- a/platform/test_maps.pk3dir/maps/test_dlights.map +++ b/platform/test_maps.pk3dir/maps/test_dlights.map @@ -357,6 +357,8 @@ "OnPressed" "sky_cube,SpotlightTexture,textures/skies/yukongold/bg,0,-1" "OnPressed" "sky_cube,SpotlightTexture,textures/skies/dune_hdr/250th/bg,2.5,-1" "OnPressed" "sky_cube,SpotlightTexture,textures/skies/smudge/bg,5,-1" +"OnPressed" "sky_cube,SetPattern,zqmaamqzzqmaamqz,5,-1" +"OnPressed" "sky_cube,SetPattern,z,7.5,-1" // brush 0 { ( -16 -760 8 ) ( -16 -768 8 ) ( -32 -760 8 ) measure/counter [ 1 0 0 0 ] [ -0 -1 -0 0 ] -0 0.5 0.5 0 0 0 diff --git a/src/gs-entbase/shared/env_projectedtexture.cpp b/src/gs-entbase/shared/env_projectedtexture.cpp index 640c3c70..a3429f91 100644 --- a/src/gs-entbase/shared/env_projectedtexture.cpp +++ b/src/gs-entbase/shared/env_projectedtexture.cpp @@ -51,7 +51,8 @@ enumflags PRTEXFL_CHANGED_STYLE, PRTEXFL_CHANGED_STATE, PRTEXFL_CHANGED_TEXTURE, - PRTEXFL_CHANGED_FOV + PRTEXFL_CHANGED_FOV, + PRTEXFL_CHANGED_PATTERN }; #ifdef CLIENT @@ -68,6 +69,7 @@ class env_projectedtexture:CBaseTrigger float m_flNearZ; float m_flRadius; float m_flStyle; + string m_strPattern; string m_strTextureName; float m_flFOV; int m_iState; @@ -101,9 +103,7 @@ env_projectedtexture::predraw(void) dynamiclight_set(p, LFIELD_ANGLES, angles); dynamiclight_set(p, LFIELD_FLAGS, LFLAG_NORMALMODE | LFLAG_REALTIMEMODE | LFLAG_SHADOWMAP); dynamiclight_set(p, LFIELD_NEARCLIP, m_flNearZ); - - if (!m_flStyle) - dynamiclight_set(p, LFIELD_STYLESTRING, "z"); + dynamiclight_set(p, LFIELD_STYLESTRING, m_strPattern); addentity(this); return PREDRAW_NEXT; @@ -145,6 +145,8 @@ env_projectedtexture::ReceiveEntity(float flFlags) m_strTextureName = readstring(); if (flFlags & PRTEXFL_CHANGED_FOV) m_flFOV = readfloat(); + if (flFlags & PRTEXFL_CHANGED_PATTERN) + m_strPattern = readstring(); classname = "env_projectedtexture"; } @@ -227,6 +229,8 @@ env_projectedtexture::SendEntity(entity ePVSEnt, float flFlags) WriteString(MSG_ENTITY, m_strTextureName); if (flFlags & PRTEXFL_CHANGED_FOV) WriteFloat(MSG_ENTITY, m_flFOV); + if (flFlags & PRTEXFL_CHANGED_PATTERN) + WriteString(MSG_ENTITY, m_strPattern); return TRUE; } @@ -255,6 +259,10 @@ env_projectedtexture::Input(entity eAct, string strInput, string strData) m_strTextureName = strData; SendFlags |= PRTEXFL_CHANGED_TEXTURE; break; + case "SetPattern": + m_strPattern = strData; + SendFlags |= PRTEXFL_CHANGED_PATTERN; + break; case "TurnOn": Trigger(eAct, TRIG_ON); break; @@ -295,6 +303,9 @@ env_projectedtexture::SpawnKey(string strKey, string strValue) case "nearz": m_flNearZ = stof(strValue); break; + case "pattern": + m_strPattern = strValue; + break; default: CBaseTrigger::SpawnKey(strKey, strValue); } @@ -318,6 +329,7 @@ env_projectedtexture::env_projectedtexture(void) #ifdef CLIENT drawmask = MASK_ENGINE; #else + m_strPattern = "z"; m_vecLight = [255,255,255]; m_flIntensity = 512; m_flFarZ = 512; @@ -326,5 +338,8 @@ env_projectedtexture::env_projectedtexture(void) m_flFOV = 90; CBaseTrigger::CBaseTrigger(); + + if (m_flStyle > 0 && m_flStyle < 12) + m_strPattern = getlightstyle(m_flStyle); #endif }