+#include "effects.qh"
+#include "_all.qh"
+
/*
.vector fx_start;
.vector fx_end;
.string fx_texture;
.float fx_lifetime;
-void SUB_Remove()
-{ remove(self); }
-
void b_draw()
{
//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);
}
*/
-void cl_effetcs_lightningarc(vector from, vector to,float seglength,float drifts,float drifte,float branchfactor,float branchfactor_add)
+void cl_effects_lightningarc(vector from, vector to,float seglength,float drifts,float drifte,float branchfactor,float branchfactor_add)
{
vector direction,dirnew, pos, pos_l;
float length, steps, steplength, i,drift;
if(length < 1)
return;
- steps = floor(length / seglength);
+ // Use at most 16 te_lightning1 segments, as these eat up beam list segments.
+ // TODO: Change this to R_BeginPolygon code, then we no longer have this limit.
+ steps = min(16, floor(length / seglength));
if(steps < 1)
{
te_lightning1(world,from,to);
dirnew = normalize(direction * (1 - drift) + randomvec() * drift);
pos = pos_l + dirnew * steplength;
te_lightning1(world,pos_l,pos);
- //b_make(pos_l, pos,"particles/lightning2",0.25,64);
- if(random() < branchfactor)
- cl_effetcs_lightningarc(pos, pos + (dirnew * length * 0.25),seglength,drifts,drifte,min(branchfactor + branchfactor_add,1),branchfactor_add);
+ // WTF endless recursion if branchfactor is 1.0 (possibly due to adding branchfactor_add). FIXME
+ // if(random() < branchfactor)
+ // cl_effects_lightningarc(pos, pos + (dirnew * length * 0.25),seglength,drifts,drifte,min(branchfactor + branchfactor_add,1),branchfactor_add);
pos_l = pos;
}
te_lightning1(world,pos_l,to);
- //b_make(pos_l, to,"particles/lightning2",0.25,64);
}
else
te_lightning1(world,from,to);
- //b_make(from, to,"particles/lightning2",0.25,64);
}
{
vector from, to;
- from_x = ReadCoord(); from_y = ReadCoord(); from_z = ReadCoord();
- to_x = ReadCoord(); to_y = ReadCoord(); to_z = ReadCoord();
+ from.x = ReadCoord(); from.y = ReadCoord(); from.z = ReadCoord();
+ to.x = ReadCoord(); to.y = ReadCoord(); to.z = ReadCoord();
if(autocvar_cl_effects_lightningarc_simple)
{
{
float seglength, drifts, drifte, branchfactor, branchfactor_add;
- seglength = autocvar_cl_effects_lightningarc_segmentlength;
- drifts = autocvar_cl_effects_lightningarc_drift_start;
- drifte = autocvar_cl_effects_lightningarc_drift_end;
- branchfactor = autocvar_cl_effects_lightningarc_branchfactor_start;
- branchfactor = autocvar_cl_effects_lightningarc_branchfactor_add;
+ seglength = autocvar_cl_effects_lightningarc_segmentlength;
+ drifts = autocvar_cl_effects_lightningarc_drift_start;
+ drifte = autocvar_cl_effects_lightningarc_drift_end;
+ branchfactor = autocvar_cl_effects_lightningarc_branchfactor_start;
+ branchfactor_add = autocvar_cl_effects_lightningarc_branchfactor_add;
- cl_effetcs_lightningarc(from,to,seglength,drifts,drifte,branchfactor,branchfactor_add);
+ cl_effects_lightningarc(from,to,seglength,drifts,drifte,branchfactor,branchfactor_add);
}
}
+void Net_ReadArc() { Net_ReadLightningarc(); }