diff --git a/sim_scenes/tri_bodies/two_way_foil.py b/sim_scenes/tri_bodies/two_way_foil.py index 0f2e7e68fdbb7cde9daea8f53c452026e191d050..2aed45d237d0b19f4c7f1a2acb0d8f300c4ad6fc 100644 --- a/sim_scenes/tri_bodies/two_way_foil.py +++ b/sim_scenes/tri_bodies/two_way_foil.py @@ -6,6 +6,7 @@ # link :https://gitcode.net/pythoncr/ # python_version :3.9 # ============================================================================== +import threading import time import datetime @@ -165,15 +166,41 @@ class TwoWayFoilSim: for b in self.two_dim_bodies: b.planet.rotation_x = 90 + def flatten_animation(self, body, flatten_body): + def flatten_update(planet, flatten_planet): + def warp(): + planet.scale_y /= 1.05 + # time.sleep(0.2) + if planet.scale_y < 10: + planet.enabled = False + flatten_planet.enabled = True + + return warp + + body.planet.update = flatten_update(body.planet, flatten_body.planet) + + # for i in range(10): + # # body.planet.scale_y /= 2 + # body.init_scale = [body.init_scale[0], body.init_scale[1] / 2, body.init_scale[2]] + # time.sleep(0.2) + # body.planet.enabled = False + # flatten_body.planet.enabled = True + # flatten_body.planet.x += 100000 + def stage_01(self): """ 二向箔飞向太阳 @return: """ if two_bodies_colliding(self.two_way_foil, self.sun): - self.sun.planet.enabled = False - self.sun.two_dim.planet.enabled = True - self.sun.two_dim.planet.x += 100000 + # t = threading.Thread(target=self.flatten_animation, args=[self.sun, self.sun.two_dim]) + # t.start() + # for i in range(10): + # self.sun.planet.scale_y /= 0.5 + # time.sleep(1) + # self.sun.planet.enabled = False + # self.sun.two_dim.planet.enabled = True + # self.sun.two_dim.planet.x += 100000 # two_way_foil.explode(sun) self.two_way_foil.planet.enabled = False self.two_way_foil_circle.planet.alpha = 0.9 @@ -214,8 +241,10 @@ class TwoWayFoilSim: if hasattr(b, "two_way_time"): if b.two_way_time is not None: if time.time() - b.two_way_time > two_way_delay_times[idx]: - b.planet.enabled = False - b.two_dim.planet.enabled = True + t = threading.Thread(target=self.flatten_animation, args=[b, b.two_dim]) + t.start() + # b.planet.enabled = False + # b.two_dim.planet.enabled = True b.two_way_time = None elif two_bodies_colliding(self.two_way_foil_circle, b): b.two_way_time = time.time()