From 79ce0b491f58010ec40f546441500720b3c30558 Mon Sep 17 00:00:00 2001 From: Vulpovile Date: Mon, 15 Mar 2021 10:32:47 -0700 Subject: [PATCH] Made surface not crash, made surface release only on motor --- src/source/Tool/SurfaceTool.cpp | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/source/Tool/SurfaceTool.cpp b/src/source/Tool/SurfaceTool.cpp index 39d6990..48b39d8 100644 --- a/src/source/Tool/SurfaceTool.cpp +++ b/src/source/Tool/SurfaceTool.cpp @@ -37,26 +37,30 @@ void SurfaceTool::onButton1MouseDown(Mouse mouse) { AudioPlayer::playSound(dingSound); PartInstance * target = mouse.getTarget(); - G3D::Ray ray = mouse.getLastRay(); - std::vector surfacesHit = getSurfaces(target); - int closest; - float nearValue = G3D::inf(); - for(size_t i = 0; i < surfacesHit.size(); i++) + if(target != NULL) { - float newTime = ray.intersectionTime(surfacesHit[i]); - if(nearValue > newTime) + G3D::Ray ray = mouse.getLastRay(); + std::vector surfacesHit = getSurfaces(target); + int closest; + float nearValue = G3D::inf(); + for(size_t i = 0; i < surfacesHit.size(); i++) { - nearValue = newTime; - closest = (int)i; + float newTime = ray.intersectionTime(surfacesHit[i]); + if(nearValue > newTime) + { + nearValue = newTime; + closest = (int)i; + } + } + if(G3D::isFinite(nearValue)) + { + target->setSurface(closest, Enum::SurfaceType::Value(surface)); } } - if(G3D::isFinite(nearValue)) + if(surface == Enum::SurfaceType::Motor) { - - printf("\n%d\n", closest); - target->setSurface(closest, Enum::SurfaceType::Value(surface)); + g_usableApp->changeTool(NULL); } - g_usableApp->changeTool(NULL); } void SurfaceTool::onButton1MouseUp(Mouse mouse) {