// Copyright (c) 2023 Dominic Masters // // This software is released under the MIT License. // https://opensource.org/licenses/MIT #include "TriggerController2D.hpp" using namespace Dawn; TriggerController2D::TriggerController2D(SceneItem *i) : SceneItemComponent(i) { } std::vector TriggerController2D::getDependencies() { return { (this->collider = this->item->getComponent()) }; } bool_t TriggerController2D::getCollidingResult(Collider2D* movingObject) { assertNotNull(this->collider); assertNotNull(movingObject); switch(movingObject->getColliderType()) { case COLLIDER2D_TYPE_BOX: { auto box1 = dynamic_cast(movingObject); assertNotNull(box1); // Box VS ? switch(collider->getColliderType()) { case COLLIDER2D_TYPE_BOX: { auto box2 = dynamic_cast(collider); assertNotNull(box2); return boxIsBoxColliding( physics3Dto2D(box1->transform->getWorldPosition()), box1->min, box1->max, physics3Dto2D(box2->transform->getWorldPosition()), box2->min, box2->max ); } default: { assertUnreachable(); } } } default: { assertUnreachable(); } } }