9 #include <SFML/Graphics/RenderTarget.hpp> 10 #include <SFML/Graphics/Drawable.hpp> 11 #include <SFML/Graphics/Vertex.hpp> 12 #include "GameObject.hpp" 18 ,
public sf::Drawable {
23 std::vector<sf::Vertex> m_arr;
24 const sf::Texture *m_tx =
nullptr;
26 virtual void draw(sf::RenderTarget& window, sf::RenderStates states)
const {
27 states.transform *= getTransform();
28 states.texture = m_tx;
30 window.draw(m_arr.data(), 4, sf::TriangleFan, states);
36 void setTexture(
const sf::Texture& tex,
const std::vector<sf::Vector2f>& texCorrds);
38 void setColor(sf::Color c);
40 void setVertices(
const std::vector<sf::Vector2f>& vertices);
41 const std::vector<sf::Vertex>& getVertices()
const;
43 void setSampleCollider(
const Collider& c);
44 const Collider &getSampleCollider()
const;
45 const Collider &getTransformedCollider()
const;
46 Collider getDefaultSampleCollider()
const;
48 void updateCollider();
49 virtual void update(sf::Time);
51 bool contains(sf::Vector2f point)
const;
52 bool intersects(
Polygon& poly)
const;
53 bool collides(
Polygon& poly)
const;
55 sf::FloatRect getGlobalBounds()
const;
58 Polygon::Polygon(
size_t size) {
62 void Polygon::setTexture(
const sf::Texture& tex,
const std::vector<sf::Vector2f>& texCorrds) {
63 for(
auto i = 0u; i < texCorrds.size(); ++i) {
64 m_arr[i].texCoords = texCorrds[i];
70 void Polygon::setColor(sf::Color c) {
76 void Polygon::setVertices(
const std::vector<sf::Vector2f>& vertices) {
77 for(
auto i = 0u; i < vertices.size(); ++i) {
78 m_arr[i].position = vertices[i];
81 setSampleCollider(getDefaultSampleCollider());
83 const std::vector<sf::Vertex>& Polygon::getVertices()
const {
87 void Polygon::setSampleCollider(
const Collider& c) {
89 tranformed_collider = c;
91 const Collider& Polygon::getSampleCollider()
const {
92 return sample_collider;
94 const Collider& Polygon::getTransformedCollider()
const {
95 return tranformed_collider;
97 Collider Polygon::getDefaultSampleCollider()
const {
99 for(
const sf::Vertex& v: m_arr) {
106 void Polygon::updateCollider() {
107 tranformed_collider = sample_collider;
110 void Polygon::update(sf::Time) {
114 bool Polygon::intersects(
Polygon& poly)
const {
115 return tranformed_collider.
intersects(poly.getTransformedCollider());
117 bool Polygon::collides(
Polygon& poly)
const {
118 return tranformed_collider.
collides(poly.getTransformedCollider());
120 bool Polygon::contains(sf::Vector2f point)
const {
121 return tranformed_collider.
contains(point);
124 sf::FloatRect Polygon::getGlobalBounds()
const {
129 #endif // POLYGON_HPP Contains all SFGF classes.
Definition: GameObject.hpp:14
bool intersects(const Collider &poly) const
Check for intersection.
Definition: Collider.hpp:260
void applyTransform(const sf::Transform &t)
Applies transform.
Definition: Collider.hpp:239
bool collides(const Collider &poly) const
Check if two colliders collide.
Definition: Collider.hpp:304
Handles collisions.
Definition: Collider.hpp:37
Collider class implementation.
void pushBack(sf::Vector2f pt)
Adds point to internal array.
Definition: Collider.hpp:251
Definition: Polygon.hpp:16
sf::FloatRect getGlobalBounds() const
Returns global bounds.
Definition: Collider.hpp:151
bool contains(sf::Vector2f point) const
Check if point is inside of collider.
Definition: Collider.hpp:287