Skip to content

Instantly share code, notes, and snippets.

@PoetaKodu
Created April 8, 2017 20:48
Show Gist options
  • Save PoetaKodu/ea4c7ae1d1ab18693359e5e641c13b71 to your computer and use it in GitHub Desktop.
Save PoetaKodu/ea4c7ae1d1ab18693359e5e641c13b71 to your computer and use it in GitHub Desktop.
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