예제 #1
0
 def switch_to(self, name):
     log.process('state switched to: %s', name)
     assert self.state_stack[-1] != name
     self._current().on_leave(name)
     last_name = self.state_stack[-1]
     self.state_stack[-1] = name
     self._current().on_enter(last_name)
예제 #2
0
 def push(self, name):
     log.process('state pushed: %s', self.state_stack[-1])
     assert name != self.state_stack[-1]
     self._current().on_pushed(name)
     last_name = self.state_stack[-1]
     self.state_stack.append(name)
     self._current().on_enter(last_name)
예제 #3
0
 def pop(self):
     assert self.state_stack
     log.process('state popped: %s', self.state_stack[-1])
     self._current().on_leave(self.state_stack[-2])
     last_name = self.state_stack[-1]
     self.state_stack.pop()
     self._current().on_popped(last_name)
예제 #4
0
    def switch_to_scene(self, scene_name):
        """
        进入到场景。
        :param scene_name: 场景名称,必须全局唯一
        :return:
        """
        scene_config = G.res_mgr.get_scene_config(scene_name)

        # 保存当前scene的数据
        if self.scene and self.hero:
            pos = self.hero.get_pos()
            self.scene.set('hero_pos', (pos[0], pos[1]))

        # 切换scene
        if not scene_name:
            scene_name = self.slot.get_current_scene()
            assert scene_name
        self.scene = self.slot.switch_to_scene(scene_name)
        if not self.scene:
            log.error('%s', self.slot.get_current_scene())
        assert self.scene
        self.slot.save()
        is_new_scene = not self.scene.load()

        # 地图生成器
        self.map_generator = G.config_mgr.get_map_config(scene_config['map_generator'])()

        # 载入英雄数据
        if self.hero:
            if is_new_scene:
                log.process('set hero to new position')
                r, c = self.map_generator.get_start_tile()
                self.hero.set_pos(c * self.chunk_tile_size, r * self.chunk_tile_size)
            else:
                log.process('set hero to old position')
                x, y = self.scene.get('hero_pos')
                self.hero.set_pos(x, y, 0)
        else:
            if is_new_scene:
                log.process("creating new hero")
                pos = self.map_generator.get_start_tile()
                self.hero = G.spawner.spawn_default('hero', pos[1] * self.chunk_tile_size,
                                                    pos[1] * self.chunk_tile_size)
            else:
                log.process('creating hero from storage data')
                hero_data = self.slot.get('hero')
                self.hero = G.spawner.spawn_from_storage(hero_data)
            assert self.hero
            G.operation.set_target(self.hero)

        # 换装
        self.equipment_models = HeroEquipmentModels(self.hero)

        # shader
        model = self.hero.get_component(ObjAnimator).get_actor_np()
        model.set_shader(G.res_mgr.get_shader('hero'))
예제 #5
0
    def on_enter(self, last_name):
        log.process("creating inventory & menu")
        G.gui_mgr.create_inventory()
        G.gui_mgr.create_game_menu()
        G.gui_mgr.set_game_menu_visible(self._main_menu_visible)
        G.gui_mgr.set_event_handler('game_menu.continue', self._handler_continue)
        G.gui_mgr.set_event_handler('game_menu.save', self._handler_save)
        G.gui_mgr.set_event_handler('game_menu.exit', self._handler_exit)

        log.process("creating game manager")
        G.game_mgr = game_manager.GameManager()

        log.process('creating camera manager')
        G.camera_mgr = camera.CameraManager()

        log.process('starting operation')
        G.operation.set_enabled(True)
        G.accept("escape", self._handler_escape)
예제 #6
0
    def __init__(self):
        G.post_effects = post_effects.PostEffects()
        def f():
            G.post_effects.turn_on()
        G.accept('z', f)
        if False:
            model = G.loader.loadModel("assets/blender/box.egg")
            model.reparent_to(G.render)
            G.run()
            return

        log.process('setting font')

        log.process('creating managers')
        G.storage_mgr = storage_manager.StorageManager()
        G.storage_mgr.load()
        G.res_mgr = resource_manager.ResourceManager()
        G.spawner = spawner.Spawner()

        G.config_mgr = config_manager.ConfigManager()
        G.config_mgr.register_map_config('perlin', PerlinMapGenerator)
        G.config_mgr.register_tile_config('default', 'assets/images/tiles/tiles.json')

        G.state_mgr = states.StatesManager("menu.menu")
        G.state_mgr.add_state(game_states.MainMenuState())
        G.state_mgr.add_state(game_states.GamePlayState())
        G.state_mgr.add_state(game_states.GamePauseState())

        G.gui_mgr = gui_system.GUIManager()
        G.operation = operation.Operation(None)
        G.context = context.Context()

        log.process("entering main loop")
        G.accept('f1', self._render_analysis)

        G.taskMgr.add(self.physical_loop, name="physical loop")
        G.taskMgr.add(self.main_loop_task, name="main loop")

        self._target_framerate = 30.

        #self.main_loop()
        G.run()
        self.main_loop()
        log.process("main loop finished")
예제 #7
0
import numpy as np
import os, sys, time
import torch
import importlib

import options
from util import log

log.process(os.getpid())
log.title("[{}] (evaluate SDF-SRN)".format(sys.argv[0]))

opt_cmd = options.parse_arguments(sys.argv[1:])
opt = options.set(opt_cmd=opt_cmd)

with torch.cuda.device(opt.device):

    model = importlib.import_module("model.{}".format(opt.model))
    m = model.Model(opt)

    m.load_dataset(opt,eval_split="test" if opt.data.dataset=="shapenet" else \
                                  "val" if opt.data.dataset=="pascal3d" else None)
    m.build_networks(opt)
    m.restore_checkpoint(opt)
    m.setup_visualizer(opt)

    m.evaluate(opt)
예제 #8
0
    def __init__(self):
        self.filters = None
        self.scene = None
        self.map_generator = None
        self.hero = None
        self.equipment_models = None

        # 雾效
        f = .7
        self.fog = fog.LinearFog(f, f, f, 70, 140)
        #self.fog.switch()

        # 背包系统
        self.inventory = InventoryManager()
        self.give_hero_item_by_name("sapling", 3)

        def add_apples():
            self.give_hero_item_by_name('axe', 1)
            self.give_hero_item_by_name('sword', 1)
            self.give_hero_item_by_name('box', 1)
        debug.add_debug_key('c', add_apples)

        # 制造系统
        log.process('creating craft manager')
        self.craft_mgr = craft_manager.CraftManager()
        self.craft_mgr.register_recipes(json.loads(open('assets/json/recipes.json').read()))

        # 载入存档
        log.process('loading slot storage')
        self.slot = G.storage_mgr.get_or_create_slot_entry(G.context.slot_name)
        G.storage_mgr.save_slots_entry()
        if self.slot.load():
            log.process('slot storage loaded')
            self.switch_to_scene(None)
        else:
            log.process('slot storage not found, entering default scene')
            self.switch_to_scene('default')

        # 载入inventory
        self.inventory.on_load(self.slot)

        # 设置chunk manager的存档
        log.process('creating chunk manager')
        assert G.loader
        self.chunk_mgr = chunk_manager.ChunkManager(
            texture_config=G.config_mgr.get_tile_config('default'),
            spawner=G.spawner,
            map_generator= self.map_generator,
            storage_mgr=self.scene,
            chunk_title_count=10, chunk_tile_size=self.chunk_tile_size, chunk_count=36)

        log.process('creating ground collider')
        self._ground = ground.create()  # TODO remove it

        log.process('creating lights')
        lights.create()  # TODO remove it

        log.process('game manager initialized!')
예제 #9
0
 def on_enter(self, last_name):
     log.process("creating main menu")
     G.gui_mgr.create_main_menu()
     G.gui_mgr.set_event_handler('main_menu.new', self._start_new_game)