Corrected the spin behavior of the Redeemer Missile's outer reticle.
Added optional fancy screen shader to Redeemer.
This commit is contained in:
parent
f9629a70d2
commit
80ed7e0939
6 changed files with 65 additions and 15 deletions
|
|
@ -20,3 +20,4 @@ user float flak_statussize = 1.0; // 0.5 <-> 1.5 in steps of 0.1 (default 1.0)
|
|||
user bool flak_footsteps = true;
|
||||
server bool flak_translocator = false;
|
||||
user bool flak_noswitchdeemer = true; // don't switch to redeemer when out of ammo
|
||||
user bool flak_deemershader = false;
|
||||
|
|
|
|||
|
|
@ -573,3 +573,10 @@ Object "UTGoldKey"
|
|||
{
|
||||
Frame "UKEY" { light "UTGoldKeyLight" }
|
||||
}
|
||||
HardwareShader PostProcess scene
|
||||
{
|
||||
Name "RedeemerView"
|
||||
Shader "shaders/glsl/RedeemerView.fp" 330
|
||||
Texture StaticTexture "textures/static1.png"
|
||||
Uniform float Timer
|
||||
}
|
||||
|
|
|
|||
BIN
graphics/AroDup.png
Normal file
BIN
graphics/AroDup.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 261 B |
|
|
@ -23,6 +23,7 @@ OptionMenu "UTOptionMenu"
|
|||
Option "Enforcer Reloading", "flak_enforcerreload", "YesNo"
|
||||
Option "Pulsegun Reloading", "flak_pulsereload", "YesNo"
|
||||
Option "Redeemer Target Visuals", "flak_redeemerreadout", "YesNo"
|
||||
Option "Redeemer View Shader", "flak_deemershader", "YesNo"
|
||||
Option "No Redeemer Autoswitch", "flak_noswitchdeemer", "YesNo"
|
||||
StaticText " "
|
||||
Option "Enable Translocator", "flak_translocator", "YesNo"
|
||||
|
|
|
|||
24
shaders/glsl/RedeemerView.fp
Normal file
24
shaders/glsl/RedeemerView.fp
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
void main()
|
||||
{
|
||||
vec4 tinted = texture(InputTexture,TexCoord);
|
||||
vec2 nc;
|
||||
vec2 px = 1.0/textureSize(InputTexture,0);
|
||||
float cnt = 1.0;
|
||||
for ( int j=-5; j<=5; j++ ) for ( int i=-5; i<=5; i++ )
|
||||
{
|
||||
nc = TexCoord+px*vec2(i,j);
|
||||
tinted += texture(InputTexture,nc);
|
||||
cnt += 1.0;
|
||||
}
|
||||
tinted /= cnt;
|
||||
vec2 coord = TexCoord;
|
||||
coord *= 4.0;
|
||||
coord.y *= px.x/px.y;
|
||||
vec2 tc;
|
||||
tc.x = coord.x*cos(Timer)-coord.y*sin(Timer);
|
||||
tc.y = coord.x*sin(Timer)+coord.y*cos(Timer);
|
||||
tinted = mix(tinted,texture(StaticTexture,tc),0.3);
|
||||
tinted = pow(tinted,vec4(0.7,1.1,1.3,1.0));
|
||||
tinted *= vec4(1.2,0.6,0.5,1.0);
|
||||
FragColor = tinted;
|
||||
}
|
||||
|
|
@ -441,29 +441,30 @@ Class RedeemerHUD : HUDMessageBase
|
|||
Actor Camera;
|
||||
Vector3 ViewPos;
|
||||
double ViewAngle, ViewPitch, ViewRoll, LagRoll, LagRoll2;
|
||||
TextureID reticle1, reticle2, mark, readout;
|
||||
TextureID reticle1, reticle2, arrow, mark, readout;
|
||||
Font whfont;
|
||||
ThinkerIterator t;
|
||||
MidTracer tr;
|
||||
Array<TargetActor> ta;
|
||||
Shape2D rreticle;
|
||||
Shape2D sshape, darrow;
|
||||
|
||||
RedeemerHUD Init()
|
||||
{
|
||||
reticle1 = TexMan.CheckForTexture("GuidedX1",TexMan.Type_Any);
|
||||
reticle2 = TexMan.CheckForTexture("GuidedX2",TexMan.Type_Any);
|
||||
arrow = TexMan.CheckForTexture("AroDup",TexMan.Type_Any);
|
||||
mark = TexMan.CheckForTexture("Crosshr6",TexMan.Type_Any);
|
||||
readout = TexMan.CheckForTexture("Readout",TexMan.Type_Any);
|
||||
whfont = Font.GetFont('WHFONT');
|
||||
t = ThinkerIterator.Create("Actor");
|
||||
tr = new("MidTracer");
|
||||
rreticle = new("Shape2D");
|
||||
rreticle.PushCoord((0,0));
|
||||
rreticle.PushCoord((1,0));
|
||||
rreticle.PushCoord((0,1));
|
||||
rreticle.PushCoord((1,1));
|
||||
rreticle.PushTriangle(0,3,1);
|
||||
rreticle.PushTriangle(0,2,3);
|
||||
sshape = new("Shape2D");
|
||||
sshape.PushCoord((0,0));
|
||||
sshape.PushCoord((1,0));
|
||||
sshape.PushCoord((0,1));
|
||||
sshape.PushCoord((1,1));
|
||||
sshape.PushTriangle(0,3,1);
|
||||
sshape.PushTriangle(0,2,3);
|
||||
return self;
|
||||
}
|
||||
override bool Tick()
|
||||
|
|
@ -508,24 +509,34 @@ Class RedeemerHUD : HUDMessageBase
|
|||
}
|
||||
// reticle
|
||||
Vector2 vs = (640,640/Screen.GetAspectRatio());
|
||||
Vector2 mid, siz;
|
||||
Vector2 mid, siz, siz2;
|
||||
[mid, siz] = Screen.VirtualToRealCoords(vs*0.5,(128,128),vs,false,false);
|
||||
[mid, siz2] = Screen.VirtualToRealCoords(vs*0.5,(8,4),vs,false,false);
|
||||
Vector2 verts[4];
|
||||
verts[0] = (-siz.x,-siz.y);
|
||||
verts[1] = (siz.x,-siz.y);
|
||||
verts[2] = (-siz.x,siz.y);
|
||||
verts[3] = (siz.x,siz.y);
|
||||
rreticle.Clear(Shape2D.C_Verts);
|
||||
sshape.Clear(Shape2D.C_Verts);
|
||||
double rrot = -LagRoll2*2;
|
||||
for ( int i=0; i<4; i++ )
|
||||
rreticle.PushVertex(mid+(verts[i].x*cos(LagRoll2)-verts[i].y*sin(LagRoll2),verts[i].x*sin(LagRoll2)+verts[i].y*cos(LagRoll2)));
|
||||
Screen.DrawShape(reticle1,false,rreticle,DTA_RenderStyle,(1|2<<8|1<<16));
|
||||
sshape.PushVertex(mid+(verts[i].x*cos(rrot)-verts[i].y*sin(rrot),verts[i].x*sin(rrot)+verts[i].y*cos(rrot)));
|
||||
Screen.DrawShape(reticle1,false,sshape,DTA_RenderStyle,(1|2<<8|1<<16));
|
||||
sshape.Clear(Shape2D.C_Verts);
|
||||
verts[0] = (-siz2.x,siz.y+siz2.y);
|
||||
verts[1] = (siz2.x,siz.y+siz2.y);
|
||||
verts[2] = (-siz2.x,siz.y+3*siz2.y);
|
||||
verts[3] = (siz2.x,siz.y+3*siz2.y);
|
||||
for ( int i=0; i<4; i++ )
|
||||
sshape.PushVertex(mid+(verts[i].x*cos(rrot)-verts[i].y*sin(rrot),verts[i].x*sin(rrot)+verts[i].y*cos(rrot)));
|
||||
Screen.DrawShape(arrow,false,sshape,DTA_RenderStyle,(1|2<<8|1<<16));
|
||||
Screen.DrawTexture(reticle2,false,vs.x*0.5,vs.y*0.5,DTA_VirtualWidthF,vs.x,DTA_VirtualHeightF,vs.y,DTA_KeepRatio,true,DTA_RenderStyle,(1|2<<8|1<<16));
|
||||
// faux assembly readout
|
||||
int numreadouts = Screen.GetHeight()/128+2;
|
||||
int numreadouts = int(vs.y/128+2);
|
||||
for ( int i=0; i<numreadouts; i++ )
|
||||
{
|
||||
int scroll = (gametic*5)%128;
|
||||
Screen.DrawTexture(readout,false,0,i*128-scroll,DTA_RenderStyle,(1|2<<8|1<<16));
|
||||
Screen.DrawTexture(readout,false,0,i*128-scroll,DTA_VirtualWidthF,vs.x,DTA_VirtualHeightF,vs.y,DTA_KeepRatio,true,DTA_RenderStyle,(1|2<<8|1<<16));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -558,9 +569,11 @@ Class RedeemerHUDStatic : HUDMessageBase
|
|||
Class RedeemerHUDHandler : EventHandler
|
||||
{
|
||||
ui RedeemerHUD rhud;
|
||||
transient ui CVar deemershader;
|
||||
|
||||
override void RenderOverlay( RenderEvent e )
|
||||
{
|
||||
if ( !deemershader ) deemershader = CVar.GetCVar('flak_deemershader',players[consoleplayer]);
|
||||
if ( e.Camera is 'GuidedWarShell' )
|
||||
{
|
||||
if ( !rhud )
|
||||
|
|
@ -573,9 +586,12 @@ Class RedeemerHUDHandler : EventHandler
|
|||
rhud.ViewAngle = e.ViewAngle;
|
||||
rhud.ViewPitch = e.ViewPitch;
|
||||
rhud.ViewRoll = e.ViewRoll;
|
||||
Shader.SetEnabled(players[consoleplayer],"RedeemerView",deemershader.GetBool());
|
||||
Shader.SetUniform1f(players[consoleplayer],"RedeemerView","Timer",gametic+e.fractic);
|
||||
}
|
||||
else if ( rhud )
|
||||
{
|
||||
Shader.SetEnabled(players[consoleplayer],"RedeemerView",false);
|
||||
StatusBar.DetachMessage(rhud);
|
||||
rhud.Destroy();
|
||||
StatusBar.AttachMessage(new("RedeemerHUDStatic").Init(),0,StatusBar.HUDMSGLayer_UnderHUD);
|
||||
|
|
@ -732,3 +748,4 @@ Class WarheadLauncher : UTWeapon replaces BFG9000
|
|||
Wait;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue