-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCollisionable.cpp
64 lines (49 loc) · 1.83 KB
/
Collisionable.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include "Collisionable.hpp"
Collisionable::Collisionable(sf::Vector2f position) : _pastPosition(position), _posOriginal(position) {
_sprite.setPosition(position);
// _pastPosition = position;
}
Collisionable::~Collisionable() {}
void Collisionable::update(float) {
}
void Collisionable::draw(sf::RenderTarget* window) {
window->draw(_sprite);
}
bool Collisionable::collisioning(Collisionable* c1, Collisionable* c2) {
sf::Vector2f pos1 = c1->getPosition(), pos2 = c2->getPosition();
sf::IntRect rec1 = c1->getBounds(), rec2 = c2->getBounds();
sf::FloatRect aux1(pos1.x+rec1.left, pos1.y+rec1.top, rec1.width, rec1.height);
sf::FloatRect aux2(pos2.x+rec2.left, pos2.y+rec2.top, rec2.width, rec2.height);
return aux1.intersects(aux2);
}
sf::Vector2f Collisionable::getPosition() {
return _sprite.getPosition();
}
sf::IntRect Collisionable::getGlobalBound() {
return sf::IntRect(_sprite.getPosition().x + _bounds.left, _sprite.getPosition().y + _bounds.top, _bounds.width, _bounds.height);
}
sf::IntRect Collisionable::getBounds() {
return _bounds;
}
sf::Vector2f Collisionable::getBotPosition() {
return sf::Vector2f(_sprite.getPosition().x+_bounds.left+_bounds.width/2, _sprite.getPosition().y + _bounds.top+_bounds.height);
}
void Collisionable::setPosition(sf::Vector2f pos) {
_sprite.setPosition(pos);
}
void Collisionable::cmove(sf::Vector2f movement) {
_pastPosition = _sprite.getPosition();
setPosition(_sprite.getPosition() + movement);
}
void Collisionable::resetMove() {
_sprite.setPosition(_pastPosition);
}
bool Collisionable::hasMoved() {
return _sprite.getPosition() != _pastPosition;
}
void Collisionable::intersectsWith(Collisionable*) {
// if (hasMoved()) resetMove();
}
void Collisionable::setIniCoord(sf::Vector2f coord) {
_sprite.setPosition(_posOriginal+coord);
}