R-Type
R-Type project
MouseDetector.hpp
1 /*
2 ** EPITECH PROJECT, 2022
3 ** engine
4 ** File description:
5 ** MouseDetector
6 */
7 
8 #ifndef MOUSEDETECTOR_HPP_
9 #define MOUSEDETECTOR_HPP_
10 
11 #include "KapEngine.hpp"
12 
13 namespace KapEngine {
14 
22  class MouseDetector : public Component {
23  public:
24  enum HoverType {
25  NONE,
26  JUSTE_HOVER,
27  STAY_HOVER,
28  LEAVE_HOVER
29  };
30 
31  MouseDetector(std::shared_ptr<GameObject> go);
32  ~MouseDetector();
33 
34  void onUpdate() override;
35 
42  PROFILER_FUNC_START();
43  _square = zone;
44  _setted = true;
45  PROFILER_FUNC_END();
46  }
47 
53  void detectMouseInCanvas(bool b) {
54  PROFILER_FUNC_START();
55  _inCanvas = b;
56  PROFILER_FUNC_END();
57  }
58 
59  private:
60  void __callMouses(HoverType const& type);
61  bool __checkNoCanvas(Tools::Vector2 const& pos);
62  bool __checkCanvas(Tools::Vector2 const& pos);
63 
64  Tools::Vector2 crossProductScreen(Tools::Vector2 value);
65  private:
66  bool _inCanvas;
67  Tools::Rectangle _square;
68  bool _inSquare = false;
69  bool _setted = false;
70  };
71 
72 }
73 
74 #endif /* !MOUSEDETECTOR_HPP_ */
KapEngine::MouseDetector::onUpdate
void onUpdate() override
call each frame
Definition: MouseDetector.cpp:23
KapEngine::MouseDetector
Definition: MouseDetector.hpp:22
KapEngine::Component
Definition: Component.hpp:38
KapEngine::MouseDetector::setCheckZone
void setCheckZone(Tools::Rectangle zone)
Define cursor area check.
Definition: MouseDetector.hpp:41
KapEngine::Tools::Vector2
Definition: Vectors.hpp:25
KapEngine
main namespace
Definition: Component.hpp:17
KapEngine::MouseDetector::detectMouseInCanvas
void detectMouseInCanvas(bool b)
set if check mouse is in canvas or not if mouse is in canvas, it gonna try to get canvas parent and m...
Definition: MouseDetector.hpp:53
KapEngine::Tools::Rectangle
Definition: Rectangle.hpp:23