@@ -66,7 +66,13 @@ def beam(recipients, start, end, parent=False, **kwargs):
6666 :param kwargs:
6767 Additional attributes that will be send to the effect.
6868 """
69- entity = TempEntity ('BeamEntPoint' )
69+ _entity = kwargs .pop ('_entity' , None )
70+ if _entity is None :
71+ entity = TempEntity ('BeamEntPoint' )
72+ for attr , value in kwargs .items ():
73+ setattr (entity , attr , value )
74+ else :
75+ entity = _entity
7076
7177 def get_vec (value ):
7278 if isinstance (value , int ):
@@ -119,8 +125,15 @@ def polygon(recipients, points, parent=False, **kwargs):
119125
120126 start = points [0 ]
121127 points = dict (enumerate (points ))
128+
129+ entity = TempEntity ('BeamEntPoint' )
130+ for attr , value in kwargs .items ():
131+ setattr (entity , attr , value )
132+
122133 for index , point in points .items ():
123- beam (recipients , point , points .get (index + 1 , start ), parent , ** kwargs )
134+ beam (
135+ recipients , point , points .get (index + 1 , start ), parent ,
136+ _entity = entity , ** kwargs )
124137
125138
126139def square (recipients , start , end , ** kwargs ):
@@ -150,12 +163,13 @@ def square(recipients, start, end, **kwargs):
150163 (c , a ),
151164 )
152165
166+ entity = TempEntity ('BeamPoints' )
167+ for attr , value in kwargs .items ():
168+ setattr (entity , attr , value )
169+
153170 for p1 , p2 in lines :
154- entity = TempEntity ('BeamPoints' )
155171 entity .start_point = p1
156172 entity .end_point = p2
157- for attr , value in kwargs .items ():
158- setattr (entity , attr , value )
159173
160174 entity .create (recipients )
161175
@@ -204,12 +218,13 @@ def box(recipients, start, end, **kwargs):
204218 (d , h )
205219 )
206220
221+ entity = TempEntity ('BeamPoints' )
222+ for attr , value in kwargs .items ():
223+ setattr (entity , attr , value )
224+
207225 for p1 , p2 in lines :
208- entity = TempEntity ('BeamPoints' )
209226 entity .start_point = p1
210227 entity .end_point = p2
211- for attr , value in kwargs .items ():
212- setattr (entity , attr , value )
213228
214229 entity .create (recipients )
215230
@@ -239,6 +254,10 @@ def ball(recipients, center, radius, steps=15, upper_half=True, lower_half=True,
239254 # Make sure that at least one argument is True
240255 assert not (upper_half == lower_half == False )
241256
257+ entity = TempEntity ('BeamRingPoint' )
258+ for attr , value in kwargs .items ():
259+ setattr (entity , attr , value )
260+
242261 step = float (radius ) / steps
243262 for x in range (steps ):
244263 dist = step * x
@@ -247,22 +266,16 @@ def ball(recipients, center, radius, steps=15, upper_half=True, lower_half=True,
247266 rad = 2 * radius * (1 - (float (x ) / steps ) ** 2 ) ** 0.5
248267
249268 if upper_half :
250- entity = TempEntity ('BeamRingPoint' )
251269 entity .center = org
252270 entity .start_radius = rad
253271 entity .end_radius = rad - 0.1
254- for attr , value in kwargs .items ():
255- setattr (entity , attr , value )
256272
257273 entity .create (recipients )
258274
259275 if x and lower_half :
260276 org .z -= 2 * dist
261- entity = TempEntity ('BeamRingPoint' )
262277 entity .center = org
263278 entity .start_radius = rad
264279 entity .end_radius = rad - 0.1
265- for attr , value in kwargs .items ():
266- setattr (entity , attr , value )
267280
268281 entity .create (recipients )
0 commit comments