MoveComponent.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // ----------------------------------------------------------------
  2. // From Game Programming in C++ by Sanjay Madhav
  3. // Copyright (C) 2017 Sanjay Madhav. All rights reserved.
  4. //
  5. // Released under the BSD License
  6. // See LICENSE in root directory for full details.
  7. // ----------------------------------------------------------------
  8. #include "MoveComponent.h"
  9. #include "Actor.h"
  10. MoveComponent::MoveComponent(class Actor* owner, int updateOrder)
  11. :Component(owner, updateOrder)
  12. ,mAngularSpeed(0.0f)
  13. ,mForwardSpeed(0.0f)
  14. {
  15. }
  16. void MoveComponent::Update(float deltaTime)
  17. {
  18. if (!Math::NearZero(mAngularSpeed))
  19. {
  20. float rot = mOwner->GetRotation();
  21. rot += mAngularSpeed * deltaTime;
  22. mOwner->SetRotation(rot);
  23. }
  24. if (!Math::NearZero(mForwardSpeed))
  25. {
  26. Vector2 pos = mOwner->GetPosition();
  27. pos += mOwner->GetForward() * mForwardSpeed * deltaTime;
  28. // (Screen wrapping code only for asteroids)
  29. if (pos.x < 0.0f) { pos.x = 1022.0f; }
  30. else if (pos.x > 1024.0f) { pos.x = 2.0f; }
  31. if (pos.y < 0.0f) { pos.y = 766.0f; }
  32. else if (pos.y > 768.0f) { pos.y = 2.0f; }
  33. mOwner->SetPosition(pos);
  34. }
  35. }