diff --git a/common/system.py b/common/system.py index bc10b68f51c36a1d5ab72ab780f5dfd38bfcc380..f2f32942a112d329a8e04ebada38d5e129b57198 100644 --- a/common/system.py +++ b/common/system.py @@ -165,16 +165,16 @@ class System(object): return True # self.bodies = list(filter(valid_body, self.bodies)) - - for body1 in self.bodies: - if body1.ignore_mass: - continue + valid_bodies = list(filter(lambda b:not b.ignore_mass, self.bodies)) + for body1 in valid_bodies: + # if body1.ignore_mass: + # continue if not valid_body(body1): continue acceleration = np.zeros(3) - for body2 in self.bodies: - if body2.ignore_mass: - continue + for body2 in valid_bodies: + # if body2.ignore_mass: + # continue if self.max_distance > 0: if calculate_distance(body1.position) > self.max_distance: # 超过了max_distance距离,则消失 body1.appeared = False diff --git a/sim_scenes/science/earth_seasons.py b/sim_scenes/science/earth_seasons.py index b9a99609f8b488477ae313aa2e476bed031c0d63..6d9c79df50bd39e31987e46d9a14a77379b79d9b 100644 --- a/sim_scenes/science/earth_seasons.py +++ b/sim_scenes/science/earth_seasons.py @@ -8,7 +8,7 @@ # ============================================================================== from bodies import Sun, Earth from common.consts import SECONDS_PER_WEEK, SECONDS_PER_DAY, AU -from sim_scenes.func import ursina_run +from sim_scenes.func import ursina_run, camera_look_at from simulators.ursina.entities.body_timer import TimeData from simulators.ursina.ursina_event import UrsinaEvent from ursina import camera @@ -77,15 +77,14 @@ if __name__ == '__main__': """ for e in [earth_1, earth_2, earth_3, earth_4]: if term_name == e.name: - e.planet.name_text.enabled = False + e.name_text.enabled = False else: - e.planet.name_text.enabled = True + e.name_text.enabled = True def on_timer_changed(time_data: TimeData): # 摄像机始终看向移动的地球 - camera.look_at(earth.planet) - camera.rotation_z = 0 + camera_look_at(earth, rotation_z=0) # 根据角度范围判断,显示中国农历24节气 for info in solar_terms_angles: if info[1] <= camera.rotation_y < info[2]: @@ -93,7 +92,7 @@ if __name__ == '__main__': # 控制4个透明地球文本是否显示,防止地球文字的叠加 earth_text_dispaly(term_name) # 地球名称文字显示为相应的节气 - earth.planet.name_text.text = term_name + earth.name_text.text = term_name # print(camera.rotation_y) diff --git a/simulators/ursina/entities/entity_utils.py b/simulators/ursina/entities/entity_utils.py index 152f3e0ec3f48560d8768783279fcf697c070ea0..617540a2142d05e9faab5b6ce184f993440f3e36 100644 --- a/simulators/ursina/entities/entity_utils.py +++ b/simulators/ursina/entities/entity_utils.py @@ -41,6 +41,7 @@ def create_name_text(parent): name_text.set_light_off() name_text.color = color.rgba(text_color[0], text_color[1], text_color[2], 1) parent.name_text = name_text + parent.body.name_text = name_text return name_text