Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00025
00028
00029 #ifndef THOR_ARROW_HPP
00030 #define THOR_ARROW_HPP
00031
00032 #include <Thor/Config.hpp>
00033
00034 #include <SFML/Graphics/Drawable.hpp>
00035 #include <SFML/Graphics/Shape.hpp>
00036
00037
00038 namespace thor
00039 {
00040
00043
00046 class THOR_API Arrow : public sf::Drawable
00047 {
00048
00049
00050 public:
00054 static void SetZeroVectorTolerance(float tolerance);
00055
00058 static float GetZeroVectorTolerance();
00059
00060
00061
00062
00063 public:
00069 explicit Arrow(sf::Vector2f position = sf::Vector2f(), sf::Vector2f direction = sf::Vector2f(),
00070 const sf::Color& color = sf::Color::White, float thickness = 3.f);
00071
00074 void SetDirection(sf::Vector2f direction);
00075
00078 void SetDirection(float dirX, float dirY);
00079
00082 sf::Vector2f GetDirection() const;
00083
00086 void SetThickness(float thickness);
00087
00090 float GetThickness() const;
00091
00092
00093
00094
00095 private:
00096 float GetTriangleHeight() const;
00097 void AdaptLine() const;
00098 void AdaptTriangle() const;
00099 void Render(sf::RenderTarget& target, sf::Renderer& renderer) const;
00100
00101
00102
00103
00104 private:
00105 float mThickness;
00106 float mLength;
00107 sf::Vector2f mDirection;
00108
00109 mutable bool mNeedsShapeUpdate;
00110 mutable sf::Shape mLine;
00111 mutable sf::Shape mTriangle;
00112
00113 static float zeroVectorTolerance;
00114
00115 };
00116
00118
00119 }
00120
00121 #endif // THOR_ARROW_HPP