|
|
@@ -55,13 +55,11 @@ struct wave_helper {
|
|
|
|
|
|
level::level(Json::Value const & json,
|
|
|
std::shared_ptr<engine::game_dispatch> dispatch)
|
|
|
- : engine::scene(json["id"].asString(), dispatch),
|
|
|
- player_(), wave_timer_{json["timeBetweenWaves"].asFloat()},
|
|
|
- waves_(wave_helper{json, graphics_manager()}()) {}
|
|
|
+ : level(json["id"].asString(), json, dispatch) {}
|
|
|
|
|
|
level::level(std::string const & id, Json::Value const & json,
|
|
|
std::shared_ptr<engine::game_dispatch> dispatch)
|
|
|
- : engine::scene(id, dispatch),
|
|
|
+ : engine::scene(id, engine::to_vec2(json["bounds"]), dispatch),
|
|
|
player_(), wave_timer_{json["timeBetweenWaves"].asFloat()},
|
|
|
waves_(wave_helper{json, graphics_manager()}()) {}
|
|
|
|
|
|
@@ -97,6 +95,7 @@ void level::perform_oob_culling_impl(std::vector<std::unique_ptr<T>> & data) {
|
|
|
|
|
|
void level::perform_oob_culling() {
|
|
|
// perform_oob_culling_impl(actors_);
|
|
|
+ // Optimization, pre-compute TTL for bullets
|
|
|
perform_oob_culling_impl(bullets_);
|
|
|
}
|
|
|
|
|
|
@@ -140,12 +139,13 @@ void level::update_waves(float delta) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-void level::render(graphics::renderer & renderer) {
|
|
|
- renderer.draw(player_->render_info());
|
|
|
+void level::render() {
|
|
|
+ renderer->draw(player_->render_info());
|
|
|
for (auto & a : actors_) {
|
|
|
- renderer.draw(a->render_info());
|
|
|
+ renderer->draw(a->render_info());
|
|
|
}
|
|
|
for (auto & b : bullets_) {
|
|
|
- renderer.draw(b->render_info());
|
|
|
+ renderer->draw(b->render_info());
|
|
|
}
|
|
|
+ renderer->flush();
|
|
|
}
|