3 #include "autocvars.qh"
5 #include "../dpdefs/csprogsdefs.qh"
19 //Draw_CylindricLine(self.fx_start, self.fx_end, self.fx_with, self.fx_texture, 0, time * 3, '1 1 1', 0.7, DRAWFLAG_ADDITIVE, view_origin);
20 Draw_CylindricLine(self.fx_start, self.fx_end, self.fx_with, self.fx_texture, (self.fx_with/256), 0, '1 1 1', 1, DRAWFLAG_ADDITIVE, view_origin);
23 void b_make(vector s,vector e, string t,float l,float z)
32 b.nextthink = time + l;
35 //b.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_PLAYERCLIP;
39 void cl_effects_lightningarc(vector from, vector to,float seglength,float drifts,float drifte,float branchfactor,float branchfactor_add)
41 vector direction,dirnew, pos, pos_l;
42 float length, steps, steplength, i,drift;
44 length = vlen(from - to);
48 // Use at most 16 te_lightning1 segments, as these eat up beam list segments.
49 // TODO: Change this to R_BeginPolygon code, then we no longer have this limit.
50 steps = min(16, floor(length / seglength));
53 te_lightning1(world,from,to);
57 steplength = length / steps;
58 direction = normalize(to - from);
60 if(length > seglength)
62 for(i = 1; i < steps; i += 1)
64 drift = drifts * (1 - (i / steps)) + drifte * (i / steps);
65 dirnew = normalize(direction * (1 - drift) + randomvec() * drift);
66 pos = pos_l + dirnew * steplength;
67 te_lightning1(world,pos_l,pos);
68 // WTF endless recursion if branchfactor is 1.0 (possibly due to adding branchfactor_add). FIXME
69 // if(random() < branchfactor)
70 // cl_effects_lightningarc(pos, pos + (dirnew * length * 0.25),seglength,drifts,drifte,min(branchfactor + branchfactor_add,1),branchfactor_add);
74 te_lightning1(world,pos_l,to);
78 te_lightning1(world,from,to);
82 void Net_ReadLightningarc()
86 from.x = ReadCoord(); from.y = ReadCoord(); from.z = ReadCoord();
87 to.x = ReadCoord(); to.y = ReadCoord(); to.z = ReadCoord();
89 if(autocvar_cl_effects_lightningarc_simple)
91 te_lightning1(world,from,to);
95 float seglength, drifts, drifte, branchfactor, branchfactor_add;
97 seglength = autocvar_cl_effects_lightningarc_segmentlength;
98 drifts = autocvar_cl_effects_lightningarc_drift_start;
99 drifte = autocvar_cl_effects_lightningarc_drift_end;
100 branchfactor = autocvar_cl_effects_lightningarc_branchfactor_start;
101 branchfactor_add = autocvar_cl_effects_lightningarc_branchfactor_add;
103 cl_effects_lightningarc(from,to,seglength,drifts,drifte,branchfactor,branchfactor_add);
107 void Net_ReadArc() { Net_ReadLightningarc(); }