From 2725f6da5896f1a9932220d314c278c98b8c639c Mon Sep 17 00:00:00 2001 From: andreja6 Date: Sun, 21 Oct 2018 13:44:53 -0700 Subject: [PATCH] Removed terrible instance type check, added dynamic casting --- main.cpp | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/main.cpp b/main.cpp index 635e1de..15cddff 100644 --- a/main.cpp +++ b/main.cpp @@ -266,9 +266,8 @@ void RotateButtonListener::onButton1MouseClick(BaseButtonInstance* button) { Instance* selectedInstance = selectedInstances.at(0); AudioPlayer::playSound(clickSound); - if(selectedInstance->getClassName() == "Part") + if(PhysicalInstance* part = dynamic_cast(selectedInstance)) { - PhysicalInstance* part = (PhysicalInstance*) selectedInstance; if(button->name == "Tilt") part->setCFrame(part->getCFrame()*Matrix3::fromEulerAnglesXYZ(0,0,toRadians(90))); else if(button->name == "Rotate") @@ -889,9 +888,8 @@ void Demo::onUserInput(UserInput* ui) { std::vector instances = dataModel->getWorkspace()->getAllChildren(); for(size_t i = 0; i < instances.size(); i++) { - if(instances.at(i)->getClassName() == "Part") + if(PhysicalInstance* moveTo = dynamic_cast(instances.at(i))) { - PhysicalInstance* moveTo = (PhysicalInstance*)instances.at(i); float __time = testRay.intersectionTime(moveTo->getBox()); float __nearest=std::numeric_limits::infinity(); if (__time != inf()) @@ -1236,9 +1234,8 @@ void Demo::onMouseLeftPressed(HWND hwnd,int x,int y) std::vector instances_2D = dataModel->getGuiRoot()->getAllChildren(); for(size_t i = 0; i < instances_2D.size(); i++) { - if(instances_2D.at(i)->getClassName() == "TextButton" || instances_2D.at(i)->getClassName() == "ImageButton") + if(BaseButtonInstance* button = dynamic_cast(instances_2D.at(i))) { - BaseButtonInstance* button = (BaseButtonInstance*)instances_2D.at(i); if(button->mouseInButton(x,y, renderDevice)) { onGUI = true; @@ -1256,9 +1253,8 @@ void Demo::onMouseLeftPressed(HWND hwnd,int x,int y) std::vector instances = dataModel->getWorkspace()->getAllChildren(); for(size_t i = 0; i < instances.size(); i++) { - if(instances.at(i)->getClassName() == "Part") + if(PhysicalInstance* test = dynamic_cast(instances.at(i))) { - PhysicalInstance* test = (PhysicalInstance*)instances.at(i); float time = testRay.intersectionTime(test->getBox()); if (time != inf()) { @@ -1288,9 +1284,8 @@ void Demo::onMouseLeftUp(int x,int y) std::vector instances = dataModel->getWorkspace()->getAllChildren(); for(size_t i = 0; i < instances_2D.size(); i++) { - if(instances_2D.at(i)->getClassName() == "TextButton" || instances_2D.at(i)->getClassName() == "ImageButton") + if(BaseButtonInstance* button = dynamic_cast(instances_2D[i])) { - BaseButtonInstance* button = (BaseButtonInstance*)instances_2D.at(i); if(button->mouseInButton(x, y, renderDevice)) { button->onMouseClick();