diff options
Diffstat (limited to 'src/systems/pondering.cpp')
-rw-r--r-- | src/systems/pondering.cpp | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/systems/pondering.cpp b/src/systems/pondering.cpp index ccfd66f..4aa47f2 100644 --- a/src/systems/pondering.cpp +++ b/src/systems/pondering.cpp | |||
@@ -655,7 +655,7 @@ void PonderingSystem::tick(double dt) | |||
655 | } | 655 | } |
656 | } | 656 | } |
657 | 657 | ||
658 | // Handle ferry passengers | 658 | // Ferry or unferry as necessary |
659 | if ((ponderable.type == PonderableComponent::Type::freefalling) && | 659 | if ((ponderable.type == PonderableComponent::Type::freefalling) && |
660 | (ponderable.grounded != oldGrounded)) | 660 | (ponderable.grounded != oldGrounded)) |
661 | { | 661 | { |
@@ -674,15 +674,11 @@ void PonderingSystem::tick(double dt) | |||
674 | } else if (ponderable.ferried) | 674 | } else if (ponderable.ferried) |
675 | { | 675 | { |
676 | // The body is no longer being ferried | 676 | // The body is no longer being ferried |
677 | ponderable.ferried = false; | 677 | unferry(entity); |
678 | |||
679 | auto& ferryPonder = game_.getEntityManager(). | ||
680 | getComponent<PonderableComponent>(ponderable.ferry); | ||
681 | |||
682 | ferryPonder.passengers.erase(entity); | ||
683 | } | 678 | } |
684 | } | 679 | } |
685 | 680 | ||
681 | // Update a ferry passenger's relative position | ||
686 | if (ponderable.ferried) | 682 | if (ponderable.ferried) |
687 | { | 683 | { |
688 | auto& ferryTrans = game_.getEntityManager(). | 684 | auto& ferryTrans = game_.getEntityManager(). |
@@ -768,6 +764,22 @@ void PonderingSystem::initPrototype(id_type prototype) | |||
768 | ponderable.passengers.clear(); | 764 | ponderable.passengers.clear(); |
769 | } | 765 | } |
770 | 766 | ||
767 | void PonderingSystem::unferry(id_type entity) | ||
768 | { | ||
769 | auto& ponderable = game_.getEntityManager(). | ||
770 | getComponent<PonderableComponent>(entity); | ||
771 | |||
772 | if (ponderable.ferried) | ||
773 | { | ||
774 | ponderable.ferried = false; | ||
775 | |||
776 | auto& ferryPonder = game_.getEntityManager(). | ||
777 | getComponent<PonderableComponent>(ponderable.ferry); | ||
778 | |||
779 | ferryPonder.passengers.erase(entity); | ||
780 | } | ||
781 | } | ||
782 | |||
771 | void PonderingSystem::processCollision( | 783 | void PonderingSystem::processCollision( |
772 | id_type entity, | 784 | id_type entity, |
773 | id_type collider, | 785 | id_type collider, |