39 hwlib.resolve("setup_current_gl_context")); |
39 hwlib.resolve("setup_current_gl_context")); |
40 render_frame = |
40 render_frame = |
41 reinterpret_cast<Engine::render_frame_t*>(hwlib.resolve("render_frame")); |
41 reinterpret_cast<Engine::render_frame_t*>(hwlib.resolve("render_frame")); |
42 advance_simulation = reinterpret_cast<Engine::advance_simulation_t*>( |
42 advance_simulation = reinterpret_cast<Engine::advance_simulation_t*>( |
43 hwlib.resolve("advance_simulation")); |
43 hwlib.resolve("advance_simulation")); |
|
44 move_camera = |
|
45 reinterpret_cast<Engine::move_camera_t*>(hwlib.resolve("move_camera")); |
44 |
46 |
45 m_isValid = hedgewars_engine_protocol_version && start_engine && |
47 m_isValid = hedgewars_engine_protocol_version && start_engine && |
46 generate_preview && dispose_preview && cleanup && send_ipc && |
48 generate_preview && dispose_preview && cleanup && send_ipc && |
47 read_ipc && setup_current_gl_context && render_frame && |
49 read_ipc && setup_current_gl_context && render_frame && |
48 advance_simulation; |
50 advance_simulation && move_camera; |
49 emit isValidChanged(m_isValid); |
51 emit isValidChanged(m_isValid); |
50 |
52 |
51 if (isValid()) { |
53 if (isValid()) { |
52 qDebug() << "Loaded engine library with protocol version" |
54 qDebug() << "Loaded engine library with protocol version" |
53 << hedgewars_engine_protocol_version(); |
55 << hedgewars_engine_protocol_version(); |
54 |
56 |
55 m_instance = start_engine(); |
57 m_instance = start_engine(); |
|
58 } else { |
|
59 qDebug("Engine library load failed"); |
56 } |
60 } |
57 } |
61 } |
58 |
62 |
59 EngineInstance::~EngineInstance() { |
63 EngineInstance::~EngineInstance() { |
60 if (m_isValid) cleanup(m_instance); |
64 if (m_isValid) cleanup(m_instance); |
67 } |
71 } |
68 } |
72 } |
69 |
73 |
70 void EngineInstance::advance(quint32 ticks) { |
74 void EngineInstance::advance(quint32 ticks) { |
71 advance_simulation(m_instance, ticks); |
75 advance_simulation(m_instance, ticks); |
|
76 } |
|
77 |
|
78 void EngineInstance::moveCamera(const QPoint& delta) { |
|
79 move_camera(m_instance, delta.x(), delta.y()); |
72 } |
80 } |
73 |
81 |
74 void EngineInstance::renderFrame() { render_frame(m_instance); } |
82 void EngineInstance::renderFrame() { render_frame(m_instance); } |
75 |
83 |
76 void EngineInstance::setOpenGLContext(QOpenGLContext* context) { |
84 void EngineInstance::setOpenGLContext(QOpenGLContext* context) { |