r_glsl_deluxemapping 1
r_glsl_offsetmapping 1
r_glsl_offsetmapping_reliefmapping 1
-r_hdr 1
+r_hdr 2
r_motionblur 0.5
r_picmipworld 0
r_shadow_gloss 1
vo = '0 0 1' * getstati(STAT_VIEWHEIGHT);
warpzone_fixview_origin = pmove_org + vo;
- warpzone_fixview_angles = input_angles;
+ warpzone_fixview_cl_viewangles = input_angles;
+ warpzone_fixview_angles = view_angles;
WarpZone_FixView();
pmove_org = warpzone_fixview_origin - vo;
- input_angles = warpzone_fixview_angles;
+ input_angles = warpzone_fixview_cl_viewangles;
+ view_angles = warpzone_fixview_angles;
if(cvar("cl_lockview"))
{
- pmove_org = warpzone_fixview_origin = freeze_pmove_org;
- input_angles = freeze_input_angles;
+ pmove_org = freeze_pmove_org;
+ input_angles = view_angles = freeze_input_angles;
R_SetView(VF_ORIGIN, pmove_org + vo);
- R_SetView(VF_ANGLES, input_angles);
+ R_SetView(VF_ANGLES, view_angles);
//R_SetView(VF_CL_VIEWANGLES, input_angles);
}
freeze_pmove_org = pmove_org;
gentle_prefix = "";
else if(cvar("cl_gentle") == 3)
gentle_prefix = "happy_";
- else
+ else if(cvar("cl_gentle"))
gentle_prefix = "morphed_";
}
else if(cvar("cl_particlegibs"))
// direction is perpendicular to the view normal, and perpendicular to the axis
thickdir = normalize(cross(axis, view_origin - from));
+/*
+ print("from ", vtos(from), "\n");
+ print("to ", vtos(to), "\n");
+ print("org ", vtos(view_origin), "\n");
+ print("dir ", vtos(thickdir), "\n");
+*/
+
A = from - thickdir * (thickness / 2);
B = from + thickdir * (thickness / 2);
C = to + thickdir * (thickness / 2);
entity music_trigger;
.float state;
+.float lastvol;
void TargetMusic_Advance()
{
// run AFTER all the thinks!
entity best, e;
- float s0;
+ float vol, vol0;
best = music_default;
if(music_target && time < music_target.lifetime)
best = music_target;
best = music_trigger;
for(e = world; (e = findfloat(e, enttype, ENT_CLIENT_TRIGGER_MUSIC)); ) if(e.noise)
{
- s0 = e.state;
+ vol0 = e.lastvol;
if(getsoundtime(e, CHAN_VOICE) < 0)
{
- s0 = -1;
+ vol0 = -1;
}
if(e == best)
{
else
e.state = 0;
}
- if(e.state != s0)
+ vol = e.state * e.volume * cvar("bgmvolume");
+ if(vol != vol0)
{
- if(s0 < 0)
- sound(e, CHAN_VOICE, e.noise, e.volume * e.state * cvar("bgmvolume"), ATTN_NONE); // restart
+ if(vol0 < 0)
+ sound(e, CHAN_VOICE, e.noise, vol, ATTN_NONE); // restart
else
- sound(e, CHAN_VOICE, "", e.volume * e.state * cvar("bgmvolume"), ATTN_NONE);
+ sound(e, CHAN_VOICE, "", vol, ATTN_NONE);
+ e.lastvol = vol;
}
}
music_trigger = world;
void Net_TargetMusic()
{
float vol, fai, fao, tim, id;
- string noi, s;
+ string noi;
entity e;
id = ReadShort();
{
e = spawn();
e.enttype = ENT_CLIENT_TRIGGER_MUSIC;
+ e.count = id;
}
- s = e.noise;
- if(e.noise)
- strunzone(e.noise);
- e.noise = strzone(noi);
- if(e.noise != s)
+ if(e.noise != noi)
{
+ if(e.noise)
+ strunzone(e.noise);
+ e.noise = strzone(noi);
precache_sound(e.noise);
sound(e, CHAN_VOICE, e.noise, 0, ATTN_NONE);
if(getsoundtime(e, CHAN_VOICE) < 0)
me.TR(me);
me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_bloom", "Bloom"));
setDependent(e, "r_hdr", 0, 0);
- me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "r_hdr", "High Dynamic Range (HDR)"));
+ me.TD(me, 1, 2, e = makeXonoticCheckBoxEx(2, 0, "r_hdr", "High Dynamic Range (HDR)"));
me.TR(me);
s = makeXonoticSlider(0.1, 1, 0.1, "r_motionblur");
WriteCoord(MSG_ENTITY, hook_shotorigin_x);
WriteCoord(MSG_ENTITY, hook_shotorigin_y);
WriteCoord(MSG_ENTITY, hook_shotorigin_z);
-
if(sv_foginterval && world.fog != "")
WriteString(MSG_ENTITY, world.fog);
else
{
entity o;
entity e;
+ e = spawn();
e.classname = "clientinit";
e.think = ClientInit_CheckUpdate;
- e.nextthink = time;
Net_LinkEntity(e, FALSE, 0, ClientInit_SendEntity);
+
o = self;
self = e;
ClientInit_CheckUpdate();
float warpzone_saved;
vector warpzone_saved_origin;
vector warpzone_saved_angles;
+vector warpzone_saved_cl_viewangles;
#ifndef KEEP_ROLL
var float autocvar_cl_rollkillspeed = 10;
#endif
void WarpZone_FixView()
{
- float pd;
+ float pd, f;
entity e;
warpzone_saved = 0;
warpzone_saved_origin = warpzone_fixview_origin;
warpzone_saved_angles = warpzone_fixview_angles;
+ warpzone_saved_cl_viewangles = warpzone_fixview_cl_viewangles;
#ifndef KEEP_ROLL
- if(autocvar_cl_rollkillspeed)
- R_SetView(VF_CL_VIEWANGLES_Z, input_angles_z * max(0, (1 - frametime * autocvar_cl_rollkillspeed)));
- else
- R_SetView(VF_CL_VIEWANGLES_Z, 0);
+ if(warpzone_fixview_angles_z != 0 || warpzone_fixview_cl_viewangles_z != 0)
+ {
+ if(autocvar_cl_rollkillspeed)
+ f = max(0, (1 - frametime * autocvar_cl_rollkillspeed));
+ else
+ f = 0;
+ warpzone_fixview_angles_z *= f;
+ warpzone_fixview_cl_viewangles_z *= f;
+ warpzone_saved_angles_z *= f; // PERMANENTLY apply that change!
+ warpzone_saved_cl_viewangles_z *= f; // PERMANENTLY apply that change!
+ warpzone_saved = 2;
+ R_SetView(VF_CL_VIEWANGLES_Z, warpzone_fixview_angles_z);
+ }
#endif
e = WarpZone_Find(warpzone_fixview_origin, warpzone_fixview_origin);
warpzone_saved = 1;
warpzone_fixview_origin = WarpZone_TransformOrigin(e, warpzone_fixview_origin);
warpzone_fixview_angles = WarpZone_TransformVAngles(e, warpzone_fixview_angles);
+ warpzone_fixview_cl_viewangles = WarpZone_TransformVAngles(e, warpzone_fixview_cl_viewangles);
WarpZone_Inside();
}
else
}
}
- if(warpzone_saved)
+ if(warpzone_saved == 1)
{
R_SetView(VF_ORIGIN, warpzone_fixview_origin);
- R_SetView(VF_ANGLES, warpzone_fixview_angles);
+ R_SetView(VF_ANGLES, warpzone_fixview_cl_viewangles);
}
}
void WarpZone_UnFixView()
{
warpzone_fixview_origin = warpzone_saved_origin;
warpzone_fixview_angles = warpzone_saved_angles;
+ warpzone_fixview_cl_viewangles = warpzone_saved_cl_viewangles;
R_SetView(VF_ORIGIN, warpzone_fixview_origin);
R_SetView(VF_ANGLES, warpzone_fixview_angles);
+ R_SetView(VF_CL_VIEWANGLES, warpzone_fixview_cl_viewangles);
}
}
vector warpzone_fixview_origin;
vector warpzone_fixview_angles;
+vector warpzone_fixview_cl_viewangles;
void WarpZone_FixView(); // this saves the previous values
void WarpZone_UnFixView(); // and restores them