ya2 · news · projects · code · about

optimization: creation of images
[pmachines.git] / pmachines / app.py
index f87bee384159904d193e4a82d8551250886db4e4..73d43a172beea857fed336e0ff1dd2d94cf5f2cd 100755 (executable)
@@ -59,7 +59,7 @@ class PmachinesApp:
                                 'pmachines',
                                 'assets/locale/')
         self._fsm = MainFsm(self)
-        if args.screenshots:
+        if args.screenshot:
             scene_classes = []
             for _file in glob('pmachines/scenes/*.py'):
                 _fn = _file.replace('.py', '').replace('/', '.')
@@ -67,10 +67,10 @@ class PmachinesApp:
                     if isclass(member) and issubclass(member, Scene) and \
                             member != Scene:
                         scene_classes += [member]
-            for cls in scene_classes:
-                scene = cls(BulletWorld(), None, True, False)
-                scene.screenshot()
-                scene.destroy()
+            cls = [cls for cls in scene_classes if cls.__name__ == args.screenshot][0]
+            scene = cls(BulletWorld(), None, True, False, lambda: None)
+            scene.screenshot()
+            scene.destroy()
             exit()
         elif self._options['development']['auto_start']:
             mod_name = 'pmachines.scenes.scene_' + self._options['development']['auto_start']
@@ -100,18 +100,23 @@ class PmachinesApp:
         self._scene = cls(
             self.world, self.on_home,
             self._options['development']['auto_close_instructions'],
-            self._options['development']['debug_items'])
+            self._options['development']['debug_items'],
+            self.reload)
 
     def on_scene_exit(self):
         self._unset_physics()
         self._scene.destroy()
 
+    def reload(self, cls):
+        self._fsm.demand('Scene', cls)
+
     def _configure(self, args):
         load_prc_file_data('', 'window-title pmachines')
         load_prc_file_data('', 'framebuffer-srgb true')
         load_prc_file_data('', 'sync-video true')
-        load_prc_file_data('', 'threading-model Cull/Draw')
-        if args.screenshots:
+        # load_prc_file_data('', 'threading-model Cull/Draw')
+        # it freezes when you go to the next scene
+        if args.screenshot:
             load_prc_file_data('', 'window-type offscreen')
             load_prc_file_data('', 'audio-library-name null')
 
@@ -120,7 +125,7 @@ class PmachinesApp:
         parser.add_argument('--update', action='store_true')
         parser.add_argument('--version', action='store_true')
         parser.add_argument('--optfile')
-        parser.add_argument('--screenshots', action='store_true')
+        parser.add_argument('--screenshot')
         cmd_line = [arg for arg in iter(argv[1:]) if not arg.startswith('-psn_')]
         args = parser.parse_args(cmd_line)
         return args
@@ -179,7 +184,7 @@ class PmachinesApp:
         props.set_size(res)
         props.set_fullscreen(self._options['settings']['fullscreen'])
         props.set_icon_filename('assets/icon/pmachines.ico')
-        if not args.screenshots:
+        if not args.screenshot:
             base.win.request_properties(props)
         gltf.patch_loader(base.loader)
         if self._options['development']['simplepbr']:
@@ -216,7 +221,7 @@ class PmachinesApp:
             self.world.set_debug_node(self._debug_np.node())
         def update(task):
             dt = globalClock.get_dt()
-            self.world.do_physics(dt)
+            self.world.do_physics(dt, 10, 1/180)
             return task.cont
         self._phys_tsk = taskMgr.add(update, 'update')