From 130dff16d42ada3c176f49e5679b9d045dde1ea7 Mon Sep 17 00:00:00 2001 From: Lendemor Date: Sat, 26 Aug 2017 23:12:01 +0200 Subject: [PATCH] added drawline for raycast --- src/engine.h | 1 + src/scene/playercharacternode.cpp | 7 +++++++ src/tools/scenepicker.cpp | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/src/engine.h b/src/engine.h index df0c848..74b21f6 100644 --- a/src/engine.h +++ b/src/engine.h @@ -51,6 +51,7 @@ public: SparrowRenderer* getRenderer() const {return m_renderer;} btDiscreteDynamicsWorld* getPhysics() const {return m_world;} SparrowShell* getShell() const {return m_sparrowshell;} + PhysicsDebugNode* getPhysicsDebug() const {return m_physicsDebugNode;} GuiTools* getGuiTools() const {return m_guiTools;} SceneTree* getScene() const; diff --git a/src/scene/playercharacternode.cpp b/src/scene/playercharacternode.cpp index 7796ba8..cb87967 100644 --- a/src/scene/playercharacternode.cpp +++ b/src/scene/playercharacternode.cpp @@ -6,6 +6,8 @@ #include +#include "scene/physicsdebugnode.h" + #include "scenetree.h" #include "lightnode.h" #include @@ -222,6 +224,11 @@ void PlayerCharacterNode::update() getEngine().getPhysics()->rayTest(start_front, end_front, RayCallback_front); getEngine().getPhysics()->rayTest(start_back, end_back, RayCallback_back); + PhysicsDebugNode* pdnode= getEngine().getPhysicsDebug(); + if (pdnode != nullptr){ + pdnode->drawLine(start_front,end_front,btVector3(1,0,1)); + pdnode->drawLine(start_back,end_back,btVector3(1,0,1)); + } float controlRatio = 0.2f; // 1 = total control, 0 = no control, can be seen as a slipperiness factor if(RayCallback_back.hasHit()){ diff --git a/src/tools/scenepicker.cpp b/src/tools/scenepicker.cpp index d16b920..464b94d 100644 --- a/src/tools/scenepicker.cpp +++ b/src/tools/scenepicker.cpp @@ -4,6 +4,7 @@ #include "guitools.h" #include "scene/scenetree.h" #include "scene/playercharacternode.h" +#include "scene/physicsdebugnode.h" #include #include @@ -76,6 +77,9 @@ void ScenePicker::pick() btVector3 end = start; end += btVector3(start.x() + dir_cam.x, start.y() + dir_cam.y, start.z() + dir_cam.z); btCollisionWorld::ClosestRayResultCallback RayCallback(start, end); + PhysicsDebugNode* pdnode= getEngine().getPhysicsDebug(); + if (pdnode != nullptr) + pdnode->drawLine(start,end,btVector3(1,0,1)); getEngine().getPhysics()->rayTest(start,end,RayCallback); m_pickSucceeded = RayCallback.hasHit();