movement_utils.h 919 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #pragma once
  2. #include "game/core/component.h"
  3. #include "game/core/entity.h"
  4. namespace App {
  5. namespace Utils {
  6. inline void resetMovement(Engine::Core::Entity *entity) {
  7. if (!entity)
  8. return;
  9. auto *movement = entity->getComponent<Engine::Core::MovementComponent>();
  10. if (!movement)
  11. return;
  12. auto *transform = entity->getComponent<Engine::Core::TransformComponent>();
  13. movement->hasTarget = false;
  14. movement->path.clear();
  15. movement->pathPending = false;
  16. movement->pendingRequestId = 0;
  17. movement->repathCooldown = 0.0f;
  18. if (transform) {
  19. movement->targetX = transform->position.x;
  20. movement->targetY = transform->position.z;
  21. movement->goalX = transform->position.x;
  22. movement->goalY = transform->position.z;
  23. } else {
  24. movement->targetX = 0.0f;
  25. movement->targetY = 0.0f;
  26. movement->goalX = 0.0f;
  27. movement->goalY = 0.0f;
  28. }
  29. }
  30. } // namespace Utils
  31. } // namespace App