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/Transformable.hpp>
00036 #include <SFML/Graphics/ConvexShape.hpp>
00037
00038
00039 namespace thor
00040 {
00041
00044
00048 class THOR_API Arrow : public sf::Drawable, public sf::Transformable
00049 {
00050
00051
00052 public:
00056 static void SetZeroVectorTolerance(float tolerance);
00057
00060 static float GetZeroVectorTolerance();
00061
00062
00063
00064
00065 public:
00071 explicit Arrow(sf::Vector2f position = sf::Vector2f(), sf::Vector2f direction = sf::Vector2f(),
00072 const sf::Color& color = sf::Color::White, float thickness = 3.f);
00073
00076 void SetDirection(sf::Vector2f direction);
00077
00080 void SetDirection(float dirX, float dirY);
00081
00084 sf::Vector2f GetDirection() const;
00085
00088 void SetThickness(float thickness);
00089
00092 float GetThickness() const;
00093
00096 void SetColor(const sf::Color& color);
00097
00100 sf::Color GetColor() const;
00101
00102
00103
00104
00105 private:
00106 float GetTriangleHeight() const;
00107 void AdaptLine() const;
00108 void AdaptTriangle() const;
00109 void Draw(sf::RenderTarget& target, sf::RenderStates states) const;
00110
00111
00112
00113
00114 private:
00115 float mThickness;
00116 float mLength;
00117 sf::Vector2f mDirection;
00118 sf::Color mColor;
00119
00120 mutable bool mNeedsShapeUpdate;
00121 mutable sf::ConvexShape mLine;
00122 mutable sf::ConvexShape mTriangle;
00123
00124 static float zeroVectorTolerance;
00125
00126 };
00127
00129
00130 }
00131
00132 #endif // THOR_ARROW_HPP