Created
April 8, 2017 20:48
-
-
Save PoetaKodu/ea4c7ae1d1ab18693359e5e641c13b71 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class CSightSense | |
: public IAISense | |
{ | |
public: | |
/* Reszta kodu... */ | |
/* Ta metoda bedzie wyswietlala pole widzenia i postrzeganych aktorow. */ | |
virtual void DrawDebug() override; | |
}; | |
/* Plik zrodlowy */ | |
void CSightSense::DrawDebug() | |
{ | |
/* Musimy sprawdzic czy w ogole debugging jest wlaczony. | |
*/ | |
if (IAISense::DebugMode) | |
{ | |
/* Musimy utworzyc sobie ksztalt wycinka kola. | |
Potem ustawimy sobie jego kolor, grubosc i kolor obramowania. | |
Na koncu jeszcze tylko ustawiamy pozycje i obrot. | |
*/ | |
auto shape = SFMLShapes::GeneratePie(m_sightDistance, m_sightAngle, 50); | |
shape.setFillColor(sf::Color(255, 255, 255, 30)); | |
shape.setOutlineThickness(2); | |
shape.setOutlineColor(sf::Color::White); | |
shape.setRotation(m_owner.GetRotation()); | |
shape.setPosition(m_owner.GetLocation().x, m_owner.GetLocation().y); | |
// Wyswietlamy wycinek kola na oknie. | |
CGame::Instance().GetWindow().draw(shape); | |
/* Teraz trzeba wyswietlic postrzeganych aktorow. | |
Nie warto tworzyc oddzielnego ksztaltu kola dla kazdego aktora, | |
wiec zrobimy to w ten sposob, ze przygotujemy sobie kolo przed petla | |
a nastepnie bedziemy je wyswietlac po prostu ze zmieniona pozycja. | |
*/ | |
// Tworzymy kolo o promieniu np. 30px. | |
sf::CircleShape sensedActorShape(30); | |
// Wyrownujemy je do srodka (punkt 30px,30px) | |
sensedActorShape.setOrigin(30, 30); | |
// Ustawiamy kolor itp. | |
sensedActorShape.setFillColor(sf::Color(255, 0, 0, 30)); | |
sensedActorShape.setOutlineColor(sf::Color::Red); | |
sensedActorShape.setOutlineThickness(1); | |
// Dla kazdego postrzeganego aktora... | |
for (auto actor : m_sensedActors) | |
{ | |
// ustaw pozycje kola na pozycje aktora... | |
sensedActorShape.setPosition(actor->GetLocation().x, actor->GetLocation().y); | |
// i wyswietl kolo na ekranie. | |
CGame::Instance().GetWindow().draw(sensedActorShape); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment