From f40756bc4648c67cc389aef44f1913b72b171ffe Mon Sep 17 00:00:00 2001 From: tomangelo2 Date: Wed, 11 Oct 2017 18:50:57 +0200 Subject: [PATCH] Fix turn(1) doesn't draining energy Fix using @Melex750 example, thanks! Fix issue #136 --- src/object/task/taskturn.cpp | 14 ++++++++++++-- src/object/task/taskturn.h | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/object/task/taskturn.cpp b/src/object/task/taskturn.cpp index d07dfde1..69799b86 100644 --- a/src/object/task/taskturn.cpp +++ b/src/object/task/taskturn.cpp @@ -109,7 +109,7 @@ Error CTaskTurn::IsEnded() if ( m_bLeft ) { - if ( angle <= m_startAngle+m_angle ) + if ( angle <= m_finalAngle ) { m_physics->SetMotorSpeedZ(0.0f); //? m_physics->SetCirMotionY(MO_MOTSPEED, 0.0f); @@ -118,10 +118,15 @@ Error CTaskTurn::IsEnded() m_object->SetRotationY(m_finalAngle); return ERR_STOP; } + if ( !m_bDecel && angle <= m_startAngle+m_angle) + { + m_bDecel = true; + m_physics->SetMotorSpeedZ(-0.5f); + } } else { - if ( angle >= m_startAngle+m_angle ) + if ( angle >= m_finalAngle ) { m_physics->SetMotorSpeedZ(0.0f); //? m_physics->SetCirMotionY(MO_MOTSPEED, 0.0f); @@ -130,6 +135,11 @@ Error CTaskTurn::IsEnded() m_object->SetRotationY(m_finalAngle); return ERR_STOP; } + if ( !m_bDecel && angle >= m_startAngle+m_angle) + { + m_bDecel = true; + m_physics->SetMotorSpeedZ(0.5f); + } } return ERR_CONTINUE; diff --git a/src/object/task/taskturn.h b/src/object/task/taskturn.h index ddc696cb..4232950e 100644 --- a/src/object/task/taskturn.h +++ b/src/object/task/taskturn.h @@ -41,4 +41,5 @@ protected: float m_finalAngle = 0.0f; bool m_bLeft = false; bool m_bError = false; + bool m_bDecel = false; };