ArnieBoids  1.0.0
JOINT AI PROJECT
SwarmBoid Class Reference

#include <SwarmBoid.hpp>

Inheritance diagram for SwarmBoid:
Collaboration diagram for SwarmBoid:

Public Member Functions

 SwarmBoid (thor::ParticleSystem &particleSystem, sf::Vector2f position)
 
 ~SwarmBoid ()
 
void update () override
 Calls swarm() More...
 
void onCollide (Ship *other) override
 Takes one damage if other is the Player. More...
 
- Public Member Functions inherited from Ship
 Ship (thor::ParticleSystem &particleSystem, sf::Vector2f const &position, float maxSpeed, unsigned int health=1u)
 
 ~Ship ()
 
void takeDamage (unsigned int amount=1u)
 Reduces health by the specified amount. More...
 
bool isDead () const
 Returns true if health is zero. More...
 
void thrust ()
 Apply acceleration in direction of forward vector. More...
 
void brake ()
 Apply deceleration if thrust is present. More...
 
void turnLeft ()
 Turn ship left. More...
 
void turnRight ()
 Turn ship right. More...
 
bool trigger ()
 Attempt to fire, returns success. More...
 
void turnToward (sf::Vector2f const &direction)
 
sf::Vector2f getForward () const
 Returns forward direction of ship. More...
 
sf::Vector2f getVelocity () const
 Returns velocity. More...
 
void setRadarRange (float range)
 Radar radius accessors. More...
 
float getRadarRange () const
 
int getHealth () const
 Health accessors. More...
 
void addHealth (unsigned int health)
 
unsigned int getMaxHealth () const
 

Static Public Member Functions

static void setSwarmTarget (Ship *target)
 Sets the target for all swarm boids. They will tend toward this target. More...
 

Private Member Functions

void swarm ()
 
sf::Vector2f LenardJonesPotential (const Ship *const other, int &count) const
 
sf::Vector2f extrapolate (sf::Vector2f const &position, sf::Vector2f const &direction, float distance) const
 

Static Private Attributes

static std::list< SwarmBoid * > swarm_ = std::list<SwarmBoid*>()
 A list of all swarm boids. Boids add themselves in the ctor and remove themselves in the dtor. More...
 
static ShipswarmTarget_ = nullptr
 The ship that the swarm will tend toward, if any. More...
 
static float swarmThresholdRadius_ = 200.f
 How close boids need to be before they will swarm with eachother. More...
 

Additional Inherited Members

- Public Attributes inherited from Ship
sf::RectangleShape debug_rect_
 
- Protected Member Functions inherited from Ship
void clampToMaxSpeed ()
 Clamps the length of the velocity_ vector to MAX_SPEED_. More...
 
float tickToSec (unsigned int ticks) const
 Ticks to seconds. More...
 
virtual void updateParticleEmitter ()
 
- Protected Attributes inherited from Ship
const float MAX_SPEED_
 Maximum length of velocity vector. More...
 
const unsigned int MAX_HEALTH_
 
float refireTime_
 
float coolDown_
 
unsigned int ticks_
 
sf::Vector2f velocity_
 Delta position per update. More...
 
sf::Vector2f accel_
 Delta velocity after update !velocity_ += accel_ in update! More...
 
int health_
 Current health. More...
 
sf::Vector2f forward_
 Unit vector for ship's heading. More...
 
float thrust_
 How fast the ship accelerates. More...
 
float turnSpeed_
 How fast (in degrees) the ship can turn. More...
 
float radarRange_
 Ship's radar radius. More...
 
thor::UniversalEmitter particleEmitter_
 Does nothing on it's own. Derived classes should play with this. More...
 
float particleAngleVariance_
 

Constructor & Destructor Documentation

SwarmBoid::SwarmBoid ( thor::ParticleSystem &  particleSystem,
sf::Vector2f  position 
)
SwarmBoid::~SwarmBoid ( )

Member Function Documentation

sf::Vector2f SwarmBoid::extrapolate ( sf::Vector2f const &  position,
sf::Vector2f const &  direction,
float  distance 
) const
private

Here is the caller graph for this function:

sf::Vector2f SwarmBoid::LenardJonesPotential ( const Ship *const  other,
int &  count 
) const
private

Here is the call graph for this function:

Here is the caller graph for this function:

void SwarmBoid::onCollide ( Ship other)
overridevirtual

Takes one damage if other is the Player.

Implements Ship.

Here is the call graph for this function:

void SwarmBoid::setSwarmTarget ( Ship target)
static

Sets the target for all swarm boids. They will tend toward this target.

Here is the caller graph for this function:

void SwarmBoid::swarm ( )
private

Here is the call graph for this function:

Here is the caller graph for this function:

void SwarmBoid::update ( )
overridevirtual

Calls swarm()

Reimplemented from Ship.

Here is the call graph for this function:

Member Data Documentation

std::list< SwarmBoid * > SwarmBoid::swarm_ = std::list<SwarmBoid*>()
staticprivate

A list of all swarm boids. Boids add themselves in the ctor and remove themselves in the dtor.

Ship * SwarmBoid::swarmTarget_ = nullptr
staticprivate

The ship that the swarm will tend toward, if any.

float SwarmBoid::swarmThresholdRadius_ = 200.f
staticprivate

How close boids need to be before they will swarm with eachother.


The documentation for this class was generated from the following files: