scene.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. //
  2. // scene.cpp
  3. // engine
  4. //
  5. // Created by Sam Jaffe on 9/2/16.
  6. //
  7. #include "game/engine/scene.hpp"
  8. #include "game/engine/entity.hpp"
  9. #include "game/engine/events.hpp"
  10. #include "game/engine/game_dispatch.hpp"
  11. #include "game/graphics/renderer.hpp"
  12. #include "game/math/common.hpp"
  13. using namespace engine;
  14. scene::scene(std::string const & str, std::shared_ptr<game_dispatch> dispatch)
  15. : identity<scene, std::string>(str), dispatch_(dispatch) {}
  16. scene::~scene() {}
  17. void scene::check_collisions(std::vector<collidable *> const & from,
  18. std::vector<collidable *> const & to) {
  19. for (auto & ent : from) {
  20. for (auto & hit : to) {
  21. if (math::intersects(ent->render_info().points,
  22. hit->render_info().points)) {
  23. ent->collide(*hit);
  24. }
  25. }
  26. }
  27. }
  28. void scene::check_collisions() {
  29. for (auto & pair : colliders) {
  30. check_collisions(pair.second, collidables[pair.first]);
  31. }
  32. }
  33. // void scene::update(float delta) {
  34. // for (auto & ent : entities) {
  35. // ent.update(delta);
  36. // }
  37. // check_collisions();
  38. //}
  39. //
  40. // void scene::render(graphics::renderer & renderer) {
  41. // for (auto & ent : entities) {
  42. // renderer.draw(ent.render_info());
  43. // }
  44. //}
  45. graphics::manager const & scene::graphics_manager() const {
  46. return dispatch_.lock()->graphics_manager();
  47. }
  48. void scene::handle_key_event(event::key_event evt) {
  49. if (evt.type & event::PRESSED_MASK && evt.key == keys::QUIT) {
  50. dispatch_.lock()->quit();
  51. }
  52. }
  53. void scene::handle_mouse_event(event::mouse_event evt) {}
  54. math::vec2 scene::size() const { return local_scene_dimension_; }
  55. key_binding const & scene::keys() const { return keys_; }