2 from os
.path
import dirname
, realpath
3 path
.append(dirname(realpath(__file__
)) + '/../thirdparty')
5 from lib
.lib
.builder
import LibBuilder
6 from lib
.engine
.pause
import PauseMgr
7 from lib
.engine
.profiler
import AbsProfiler
8 from lib
.engine
.shader
import ShaderMgr
9 from lib
.engine
.log
import LogMgr
10 from lib
.engine
.font
import FontMgr
11 from lib
.engine
.phys
import PhysMgr
12 from lib
.engine
.gfx
import EngineGfx
13 from lib
.engine
.network
.server
import Server
14 from lib
.engine
.network
.client
import Client
15 from lib
.engine
.gui
.gui
import EngineGui
16 from lib
.engine
.logic
import EngineLogic
17 from lib
.engine
.event
import EngineEvent
18 from lib
.engine
.audio
import EngineAudio
19 from lib
.engine
.lang
import LangMgr
20 from lib
.gameobject
import GameObject
, Colleague
21 from lib
.engine
.enginefacade
import EngineFacade
22 from lib
.engine
.configuration
import Cfg
23 from lib
.engine
.cbmux
import CallbackMux
24 from lib
.engine
.clock
import Clock
27 class Engine(GameObject
, EngineFacade
):
29 network_priority
= -39
31 def __init__(self
, cfg
=None, end_cb
=None, client_cls
=None):
32 self
.lib
= LibBuilder
.build()
34 self
.lib
.init(end_cb
=end_cb
)
35 Colleague
.eng
= GameObject
.eng
= self
36 cfg
= cfg
or Cfg() # use a default conf if not provided
37 self
.shader_mgr
= ShaderMgr(cfg
.dev_cfg
.shaders_dev
, cfg
.dev_cfg
.gamma
)
38 self
.profiler
= AbsProfiler
.build(cfg
.profiling_cfg
.pyprof_percall
)
39 self
.font_mgr
= FontMgr()
40 self
.server
= Server(cfg
.dev_cfg
.port
)
41 client_cls
= client_cls
or Client
42 self
.client
= client_cls(cfg
.dev_cfg
.port
, cfg
.dev_cfg
.server
)
43 self
.cb_mux
= CallbackMux()
44 self
.logic
= EngineLogic(self
, cfg
)
45 self
.log_mgr
= LogMgr
.init_cls()(self
)
46 self
.gfx
= EngineGfx(self
, cfg
.dev_cfg
.model_path
,
47 cfg
.gui_cfg
.antialiasing
,
49 cfg
.gui_cfg
.fixed_fps
,
51 self
.phys_mgr
= PhysMgr(self
)
52 self
.event
= EngineEvent(self
, cfg
.dev_cfg
.menu_joypad
,
53 cfg
.dev_cfg
.functional_test
)
54 self
.gui
= EngineGui
.init_cls()(self
)
55 self
.audio
= EngineAudio(self
, cfg
.gui_cfg
.volume
)
56 self
.pause
= PauseMgr(self
)
57 self
.lang_mgr
= LangMgr(cfg
.lang_cfg
.lang
,
58 cfg
.lang_cfg
.lang_domain
,
59 cfg
.lang_cfg
.lang_path
)
60 GameObject
.__init
__(self
)
61 self
.clock
= Clock(self
.pause
)
64 GameObject
.destroy(self
)
66 self
.shader_mgr
.destroy()
67 self
.profiler
.destroy()
68 self
.font_mgr
.destroy()
73 self
.log_mgr
.destroy()
75 self
.phys_mgr
.destroy()
80 self
.lang_mgr
.destroy()
81 self
.lib
= self
.shader_mgr
= self
.profiler
= self
.font_mgr
= \
82 self
.server
= self
.client
= None