Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def destroy(entity, delay=0):
if delay == 0:
_destroy(entity)
return
s = Sequence(
Wait(delay),
Func(_destroy, entity)
)
s.start()
def invoke(function, *args, **kwargs):
delay = 0
if 'delay' in kwargs:
delay = kwargs['delay']
del kwargs['delay']
if not delay:
function(*args, **kwargs)
return function
s = Sequence(
Wait(delay),
Func(function, *args, **kwargs)
)
s.start()
return s
def shake(self, duration=.2, magnitude=1, speed=.05, direction=(1,1)):
import random
s = Sequence()
original_position = self.position
for i in range(int(duration / speed)):
s.append(Func(self.set_position,
Vec3(
original_position[0] + (random.uniform(-.1, .1) * magnitude * direction[0]),
original_position[1] + (random.uniform(-.1, .1) * magnitude * direction[1]),
original_position[2],
)))
s.append(Wait(speed))
s.append(Func(self.set_position, original_position))
s.start()
return s
setattr(self, animator_name, Sequence(time_step=time_step))
sequence = getattr(self, animator_name)
self.animations.append(sequence)
# sequence.append(Wait(delay))
if not resolution:
resolution = max(int(duration * 60), 1)
for i in range(resolution+1):
t = i / resolution
# if isinstance(curve, CubicBezier):
# t = curve.calculate(t)
# else:
t = curve(t)
sequence.append(Wait(duration / resolution))
sequence.append(Func(setattr, self, name, lerp(getattr(self, name), value, t)))
sequence.start()
return sequence
if __name__ == '__main__':
app = Ursina()
e = Entity(model='quad')
s = Sequence(
1,
Func(print, 'one'),
Func(e.fade_out, duration=1),
1,
Func(print, 'two'),
Func(e.fade_in, duration=1),
loop=True
)
s.append(
Func(print, 'appended to sequence')
)
def input(key):
actions = {'s' : s.start, 'f' : s.finish, 'p' : s.pause, 'r' : s.resume}
if key in actions:
actions[key]()
app.run()
def blink(self, value=color.clear, duration=.1, delay=0, curve=curve.in_expo, resolution=None, interrupt=False, time_step=None):
_original_color = self.color
if hasattr(self, 'blink_animator'):
self.blink_animator.finish()
self.blink_animator.kill()
# print('finish blink_animator')
self.blink_animator = Sequence(
Func(self.animate_color, value, duration*.4, 0, curve, resolution, interrupt),
Func(self.animate_color, _original_color, duration*.4, duration*.5, curve, resolution, interrupt, time_step)
)
self.blink_animator.start()
return self.blink_animator
application.sequences.remove(self)
del self
if __name__ == '__main__':
app = Ursina()
e = Entity(model='quad')
s = Sequence(
1,
Func(print, 'one'),
Func(e.fade_out, duration=1),
1,
Func(print, 'two'),
Func(e.fade_in, duration=1),
loop=True
)
s.append(
Func(print, 'appended to sequence')
)
def input(key):
actions = {'s' : s.start, 'f' : s.finish, 'p' : s.pause, 'r' : s.resume}
if key in actions:
actions[key]()
app.run()
def append(self, arg):
self.args.append(arg)
if isinstance(arg, Wait):
self.duration += arg.duration
elif isinstance(arg, (int, float)):
self.duration += arg
elif isinstance(arg, Func):
arg.delay = self.duration
self.funcs.append(arg)
return
if self.auto_destroy and self in application.sequences:
application.sequences.remove(self)
del self
if __name__ == '__main__':
app = Ursina()
e = Entity(model='quad')
s = Sequence(
1,
Func(print, 'one'),
Func(e.fade_out, duration=1),
1,
Func(print, 'two'),
Func(e.fade_in, duration=1),
loop=True
)
s.append(
Func(print, 'appended to sequence')
)
def input(key):
actions = {'s' : s.start, 'f' : s.finish, 'p' : s.pause, 'r' : s.resume}
if key in actions:
actions[key]()
app.run()