提交 b87dce5e 编写于 作者: 三月三net's avatar 三月三net

Python超人-宇宙模拟器

上级 b409e880
...@@ -534,7 +534,8 @@ class Body(metaclass=ABCMeta): ...@@ -534,7 +534,8 @@ class Body(metaclass=ABCMeta):
def show_demo(self, size_scale=1000, def show_demo(self, size_scale=1000,
position=(0, 0, -5000000), position=(0, 0, -5000000),
on_ready_fun=None, on_ready_fun=None,
on_timer_changed_fun=None): on_timer_changed_fun=None,
directional_light_pos=None):
from sim_scenes.func import ursina_run from sim_scenes.func import ursina_run
from sim_scenes.func import camera_look_at from sim_scenes.func import camera_look_at
from simulators.ursina.ursina_event import UrsinaEvent from simulators.ursina.ursina_event import UrsinaEvent
...@@ -546,12 +547,18 @@ class Body(metaclass=ABCMeta): ...@@ -546,12 +547,18 @@ class Body(metaclass=ABCMeta):
def on_ready(): def on_ready():
camera_look_at(self) camera_look_at(self)
if directional_light_pos is not None:
from simulators.ursina.entities.entity_utils import create_directional_light
create_directional_light(position=directional_light_pos, light_num=3, target=self)
if callable(on_ready_fun):
on_ready_fun() on_ready_fun()
def on_timer_changed(time_data): def on_timer_changed(time_data):
on_timer_changed_fun(time_data) on_timer_changed_fun(time_data)
if callable(on_ready_fun): if callable(on_ready_fun) or directional_light_pos is not None:
UrsinaEvent.on_ready_subscription(on_ready) UrsinaEvent.on_ready_subscription(on_ready)
if callable(on_timer_changed_fun): if callable(on_timer_changed_fun):
......
...@@ -67,5 +67,5 @@ class Makemake(Body): ...@@ -67,5 +67,5 @@ class Makemake(Body):
if __name__ == '__main__': if __name__ == '__main__':
makemake = Makemake() makemake = Makemake()
makemake.show_demo() makemake.show_demo(directional_light_pos=(200, 0, -300))
print(makemake) print(makemake)
...@@ -487,7 +487,8 @@ class Obj(metaclass=ABCMeta): ...@@ -487,7 +487,8 @@ class Obj(metaclass=ABCMeta):
def show_demo(self, size_scale=10000, def show_demo(self, size_scale=10000,
position=(0, 3000000, -9000000), position=(0, 3000000, -9000000),
on_ready_fun=None, on_ready_fun=None,
on_timer_changed_fun=None): on_timer_changed_fun=None,
directional_light_pos=None):
from sim_scenes.func import ursina_run from sim_scenes.func import ursina_run
from sim_scenes.func import camera_look_at from sim_scenes.func import camera_look_at
from simulators.ursina.ursina_event import UrsinaEvent from simulators.ursina.ursina_event import UrsinaEvent
...@@ -498,12 +499,18 @@ class Obj(metaclass=ABCMeta): ...@@ -498,12 +499,18 @@ class Obj(metaclass=ABCMeta):
def on_ready(): def on_ready():
camera_look_at(self) camera_look_at(self)
if directional_light_pos is not None:
from simulators.ursina.entities.entity_utils import create_directional_light
create_directional_light(position=directional_light_pos, light_num=3, target=self)
if callable(on_ready_fun):
on_ready_fun() on_ready_fun()
def on_timer_changed(time_data): def on_timer_changed(time_data):
on_timer_changed_fun(time_data) on_timer_changed_fun(time_data)
if callable(on_ready_fun): if callable(on_ready_fun) or directional_light_pos is not None:
UrsinaEvent.on_ready_subscription(on_ready) UrsinaEvent.on_ready_subscription(on_ready)
if callable(on_timer_changed_fun): if callable(on_timer_changed_fun):
......
# -*- coding:utf-8 -*-
# title :空间站
# description :空间站
# author :Python超人
# date :2023-02-11
# link :https://gitcode.net/pythoncr/
# python_version :3.8
# ==============================================================================
from objs.obj import Obj
class ScifiSpaceStation(Obj):
"""
空间站
"""
def __init__(self, name="空间站", mass=5.97237e24,
init_position=[0, 0, 0],
init_velocity=[0, 0, 0],
texture="texture_space_station_02.jpg", size_scale=1.0, distance_scale=1.0,
ignore_mass=False, density=1e3, color=(7, 0, 162),
trail_color=None, show_name=False,
model="sci_fi_space_station.obj", rotation=(0, 0, 0),
parent=None, gravity_only_for=[]):
params = {
"name": name,
"mass": mass,
"init_position": init_position,
"init_velocity": init_velocity,
"density": density,
"color": color,
"texture": texture,
"size_scale": size_scale,
"distance_scale": distance_scale,
"ignore_mass": ignore_mass,
"trail_color": trail_color,
"show_name": show_name,
"parent": parent,
"rotation": rotation,
"gravity_only_for": gravity_only_for,
"model": model
}
super().__init__(**params)
if __name__ == '__main__':
sci_fi_space_station = ScifiSpaceStation(size_scale=1000)
print(sci_fi_space_station)
def on_timer_changed(time_data):
sci_fi_space_station.planet.rotation_z += 0.1
sci_fi_space_station.show_demo(size_scale=1000,
position=[0, 0, -10000000],
on_timer_changed_fun=on_timer_changed,
directional_light_pos=(200, 0, -300))
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册