@@ -66,7 +66,13 @@ def beam(recipients, start, end, parent=False, **kwargs):
66
66
:param kwargs:
67
67
Additional attributes that will be send to the effect.
68
68
"""
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
70
76
71
77
def get_vec (value ):
72
78
if isinstance (value , int ):
@@ -119,8 +125,15 @@ def polygon(recipients, points, parent=False, **kwargs):
119
125
120
126
start = points [0 ]
121
127
points = dict (enumerate (points ))
128
+
129
+ entity = TempEntity ('BeamEntPoint' )
130
+ for attr , value in kwargs .items ():
131
+ setattr (entity , attr , value )
132
+
122
133
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 )
124
137
125
138
126
139
def square (recipients , start , end , ** kwargs ):
@@ -150,12 +163,13 @@ def square(recipients, start, end, **kwargs):
150
163
(c , a ),
151
164
)
152
165
166
+ entity = TempEntity ('BeamPoints' )
167
+ for attr , value in kwargs .items ():
168
+ setattr (entity , attr , value )
169
+
153
170
for p1 , p2 in lines :
154
- entity = TempEntity ('BeamPoints' )
155
171
entity .start_point = p1
156
172
entity .end_point = p2
157
- for attr , value in kwargs .items ():
158
- setattr (entity , attr , value )
159
173
160
174
entity .create (recipients )
161
175
@@ -204,12 +218,13 @@ def box(recipients, start, end, **kwargs):
204
218
(d , h )
205
219
)
206
220
221
+ entity = TempEntity ('BeamPoints' )
222
+ for attr , value in kwargs .items ():
223
+ setattr (entity , attr , value )
224
+
207
225
for p1 , p2 in lines :
208
- entity = TempEntity ('BeamPoints' )
209
226
entity .start_point = p1
210
227
entity .end_point = p2
211
- for attr , value in kwargs .items ():
212
- setattr (entity , attr , value )
213
228
214
229
entity .create (recipients )
215
230
@@ -239,6 +254,10 @@ def ball(recipients, center, radius, steps=15, upper_half=True, lower_half=True,
239
254
# Make sure that at least one argument is True
240
255
assert not (upper_half == lower_half == False )
241
256
257
+ entity = TempEntity ('BeamRingPoint' )
258
+ for attr , value in kwargs .items ():
259
+ setattr (entity , attr , value )
260
+
242
261
step = float (radius ) / steps
243
262
for x in range (steps ):
244
263
dist = step * x
@@ -247,22 +266,16 @@ def ball(recipients, center, radius, steps=15, upper_half=True, lower_half=True,
247
266
rad = 2 * radius * (1 - (float (x ) / steps ) ** 2 ) ** 0.5
248
267
249
268
if upper_half :
250
- entity = TempEntity ('BeamRingPoint' )
251
269
entity .center = org
252
270
entity .start_radius = rad
253
271
entity .end_radius = rad - 0.1
254
- for attr , value in kwargs .items ():
255
- setattr (entity , attr , value )
256
272
257
273
entity .create (recipients )
258
274
259
275
if x and lower_half :
260
276
org .z -= 2 * dist
261
- entity = TempEntity ('BeamRingPoint' )
262
277
entity .center = org
263
278
entity .start_radius = rad
264
279
entity .end_radius = rad - 0.1
265
- for attr , value in kwargs .items ():
266
- setattr (entity , attr , value )
267
280
268
281
entity .create (recipients )
0 commit comments