clanDisplay Collision

Classes

struct  clan::CollidingContours
 Strurcture containing information about contours that collided. More...
 
class  clan::CollisionOutline
 Collision detection outline. More...
 
struct  clan::CollisionPoint
 Collision point information structure. More...
 
class  clan::Contour
 Collision detection contour. More...
 
class  clan::OutlineCircle
 Collision detection outline segmentation circle. More...
 
class  clan::OutlineMath
 Math operations on outlines. More...
 

Enumerations

enum  clan::OutlineAccuracy {
  clan::accuracy_raw, clan::accuracy_high, clan::accuracy_medium, clan::accuracy_low,
  clan::accuracy_poor
}
 Outline optimization accuracy. More...
 

Functions

 clan::CollidingContours::CollidingContours (const Contour *c1, const Contour *c2, bool in=false)
 Constructs a CollidingContours. More...
 

Variables

const Contour * clan::CollidingContours::contour1
 
Pointf clan::CollidingContours::contour1_deep_point
 
int clan::CollisionPoint::contour1_line_end
 
int clan::CollisionPoint::contour1_line_start
 Indexes of intersecting lines on the contours. More...
 
const Contour * clan::CollidingContours::contour2
 
Pointf clan::CollidingContours::contour2_deep_point
 
int clan::CollisionPoint::contour2_line_end
 
int clan::CollisionPoint::contour2_line_start
 
bool clan::CollidingContours::inside
 
bool clan::CollisionPoint::is_entry
 Every contour intersection has an entry and exit point. True, if this is an entry point. More...
 
Pointf clan::CollisionPoint::normal
 Normal vector at the point where the contours intersected. More...
 
float clan::CollidingContours::penetration_depth
 
Pointf clan::CollidingContours::penetration_normal
 
Pointf clan::CollisionPoint::point
 Coordinates of the point where the contours intersected. More...
 
std::vector< CollisionPoint > clan::CollidingContours::points
 

Construction

 clan::CollisionOutline::CollisionOutline ()
 Construct a collision outline. More...
 
 clan::CollisionOutline::CollisionOutline (const PixelBuffer &pbuf, int alpha_limit=128, OutlineAccuracy accuracy=accuracy_medium)
 Construct a collision outline. More...
 
 clan::CollisionOutline::CollisionOutline (const std::string &fullname, int alpha_limit=128, OutlineAccuracy accuracy=accuracy_medium, bool get_insides=true)
 Construct a collision outline. More...
 
 clan::CollisionOutline::CollisionOutline (IODevice &file, const std::string &file_extension, int alpha_limit=128, OutlineAccuracy accuracy=accuracy_medium, bool get_insides=true)
 Constructs a CollisionOutline. More...
 
 clan::CollisionOutline::CollisionOutline (const std::string &filename, const FileSystem &file_system, int alpha_limit=128, OutlineAccuracy accuracy=accuracy_medium, bool get_insides=true)
 Constructs a CollisionOutline. More...
 
 clan::CollisionOutline::CollisionOutline (const std::vector< Contour > &contours, const Size &size, OutlineAccuracy accuracy)
 Construct a collision outline. More...
 
 clan::CollisionOutline::~CollisionOutline ()
 

Resources

static Resource< CollisionOutline > clan::CollisionOutline::resource (const std::string &id, const ResourceManager &resources)
 Retrieves a CollisionOutline from the resource manager. More...
 
static CollisionOutline clan::CollisionOutline::load (const std::string &id, const XMLResourceDocument &doc)
 Loads a CollisionOutline from a XML resource definition. More...
 

Construction

 clan::Contour::Contour ()
 Construct a contour. More...
 
 clan::Contour::~Contour ()
 

Attributes

std::vector< Pointf > & clan::Contour::get_points ()
 
const std::vector< Pointf > & clan::Contour::get_points () const
 
bool clan::Contour::is_inside_contour () const
 
void clan::Contour::set_inside_contour (bool is_inside)
 Set inside contour. More...
 
std::vector< OutlineCircle > & clan::Contour::get_sub_circles ()
 
const std::vector
< OutlineCircle > & 
clan::Contour::get_sub_circles () const
 

Operators

bool clan::Contour::operator== (const Contour &other) const
 Equality operator. More...
 
bool clan::Contour::operator!= (const Contour &other) const
 Inequality operator. More...
 
bool clan::Contour::operator< (const Contour &other) const
 Less than operator. More...
 
Contour clan::Contour::clone () const
 Makes a copy of the contour. More...
 

Construction

 clan::OutlineCircle::OutlineCircle ()
 Construct a outline circle. More...
 

Operations

bool clan::OutlineCircle::collide (const OutlineCircle &other) const
 Construct a outline circle. More...
 

Attributes

Pointf clan::OutlineCircle::position
 
float clan::OutlineCircle::radius
 
unsigned int clan::OutlineCircle::start
 
unsigned int clan::OutlineCircle::end
 

Operations

static OutlineCircle clan::OutlineMath::minimum_enclosing_disc (const std::vector< Pointf > &points)
 Find minimum spanning circle for the set of points. More...
 
static void clan::OutlineMath::minimum_enclosing_disc (OutlineCircle &smalldisc, const std::vector< Pointf > &points)
 
static void clan::OutlineMath::minimum_enclosing_sub_circle (OutlineCircle &smalldisc, const std::vector< Pointf > &points, float maxradius)
 

Detailed Description

Enumeration Type Documentation

Outline optimization accuracy.

Enumerator
accuracy_raw 
accuracy_high 
accuracy_medium 
accuracy_low 
accuracy_poor 

Function Documentation

clan::CollidingContours::CollidingContours ( const Contour c1,
const Contour c2,
bool  in = false 
)
inline

Constructs a CollidingContours.

Parameters
c1= Contour
c2= Contour
in= bool

References clan::CollidingContours::points.

clan::CollisionOutline::CollisionOutline ( )

Construct a collision outline.

clan::CollisionOutline::CollisionOutline ( const PixelBuffer pbuf,
int  alpha_limit = 128,
OutlineAccuracy  accuracy = accuracy_medium 
)

Construct a collision outline.

Parameters
pbuf= Find alpha outline from a pixel buffer
alpha_limit= Alpha limit for pixels considered solid (collidable)
accuracy= Amount of optimization of the outline (default medium)
clan::CollisionOutline::CollisionOutline ( const std::string &  fullname,
int  alpha_limit = 128,
OutlineAccuracy  accuracy = accuracy_medium,
bool  get_insides = true 
)

Construct a collision outline.

Parameters
fullname= Full name
alpha_limit= value
accuracy= Outline Accuracy
get_insides= bool
clan::CollisionOutline::CollisionOutline ( IODevice file,
const std::string &  file_extension,
int  alpha_limit = 128,
OutlineAccuracy  accuracy = accuracy_medium,
bool  get_insides = true 
)

Constructs a CollisionOutline.

Parameters
file= IODevice
file_extension= String
alpha_limit= value
accuracy= Outline Accuracy
get_insides= bool
clan::CollisionOutline::CollisionOutline ( const std::string &  filename,
const FileSystem file_system,
int  alpha_limit = 128,
OutlineAccuracy  accuracy = accuracy_medium,
bool  get_insides = true 
)

Constructs a CollisionOutline.

Parameters
filename= String Ref
directory= Virtual Directory
alpha_limit= value
accuracy= Outline Accuracy
get_insides= bool
clan::CollisionOutline::CollisionOutline ( const std::vector< Contour > &  contours,
const Size size,
OutlineAccuracy  accuracy 
)

Construct a collision outline.

Parameters
contours= The contours
size= The size
accuracy= Outline Accuracy
clan::Contour::Contour ( )

Construct a contour.

clan::OutlineCircle::OutlineCircle ( )
inline

Construct a outline circle.

clan::CollisionOutline::~CollisionOutline ( )
clan::Contour::~Contour ( )
Contour clan::Contour::clone ( ) const

Makes a copy of the contour.

bool clan::OutlineCircle::collide ( const OutlineCircle other) const
inline

Construct a outline circle.

Parameters
otherOther circle to test.

References clan::OutlineCircle::position, clan::OutlineCircle::radius, clan::Vec2< Type >::x, and clan::Vec2< Type >::y.

std::vector<Pointf>& clan::Contour::get_points ( )
const std::vector<Pointf>& clan::Contour::get_points ( ) const
std::vector<OutlineCircle>& clan::Contour::get_sub_circles ( )
const std::vector<OutlineCircle>& clan::Contour::get_sub_circles ( ) const
bool clan::Contour::is_inside_contour ( ) const
static CollisionOutline clan::CollisionOutline::load ( const std::string &  id,
const XMLResourceDocument doc 
)
static

Loads a CollisionOutline from a XML resource definition.

static OutlineCircle clan::OutlineMath::minimum_enclosing_disc ( const std::vector< Pointf > &  points)
static

Find minimum spanning circle for the set of points.

Parameters
pointsthe points to calulate on
static void clan::OutlineMath::minimum_enclosing_disc ( OutlineCircle smalldisc,
const std::vector< Pointf > &  points 
)
static
static void clan::OutlineMath::minimum_enclosing_sub_circle ( OutlineCircle smalldisc,
const std::vector< Pointf > &  points,
float  maxradius 
)
static
bool clan::Contour::operator!= ( const Contour other) const

Inequality operator.

bool clan::Contour::operator< ( const Contour other) const

Less than operator.

bool clan::Contour::operator== ( const Contour other) const

Equality operator.

static Resource<CollisionOutline> clan::CollisionOutline::resource ( const std::string &  id,
const ResourceManager resources 
)
static

Retrieves a CollisionOutline from the resource manager.

Parameters
gc= Graphic Context
resources= Resource manager
id= id
void clan::Contour::set_inside_contour ( bool  is_inside)

Set inside contour.

Parameters
is_inside= bool

Variable Documentation

const Contour* clan::CollidingContours::contour1
Pointf clan::CollidingContours::contour1_deep_point
int clan::CollisionPoint::contour1_line_end
int clan::CollisionPoint::contour1_line_start

Indexes of intersecting lines on the contours.

const Contour* clan::CollidingContours::contour2
Pointf clan::CollidingContours::contour2_deep_point
int clan::CollisionPoint::contour2_line_end
int clan::CollisionPoint::contour2_line_start
unsigned int clan::OutlineCircle::end
bool clan::CollidingContours::inside
bool clan::CollisionPoint::is_entry

Every contour intersection has an entry and exit point. True, if this is an entry point.

Pointf clan::CollisionPoint::normal

Normal vector at the point where the contours intersected.

float clan::CollidingContours::penetration_depth
Pointf clan::CollidingContours::penetration_normal
Pointf clan::CollisionPoint::point

Coordinates of the point where the contours intersected.

std::vector<CollisionPoint> clan::CollidingContours::points
Pointf clan::OutlineCircle::position
float clan::OutlineCircle::radius
unsigned int clan::OutlineCircle::start