naev 0.10.4
collision.h
1/*
2 * See Licensing and Copyright notice in naev.h
3 */
4#pragma once
5
6#include "nxml.h"
7#include "opengl.h"
8#include "physics.h"
9
13typedef struct CollPoly_ {
14 float* x;
15 float* y;
16 float xmin;
17 float xmax;
18 float ymin;
19 float ymax;
20 int npt;
21} CollPoly;
22
23/* Loads a polygon data from xml. */
24void LoadPolygon( CollPoly* polygon, xmlNodePtr node );
25
26/* Rotates a polygon. */
27void RotatePolygon( CollPoly* rpolygon, CollPoly* ipolygon, float theta );
28
29/* Returns 1 if collision is detected */
30int CollideSprite( const glTexture* at, const int asx, const int asy, const vec2* ap,
31 const glTexture* bt, const int bsx, const int bsy, const vec2* bp,
32 vec2* crash);
33int CollideLineLine( double s1x, double s1y, double e1x, double e1y,
34 double s2x, double s2y, double e2x, double e2y, vec2* crash );
35int CollideLineSprite( const vec2* ap, double ad, double al,
36 const glTexture* bt, const int bsx, const int bsy, const vec2* bp,
37 vec2 crash[2]);
38int CollideLinePolygon( const vec2* ap, double ad, double al,
39 const CollPoly* bt, const vec2* bp, vec2 crash[2] );
40int CollideSpritePolygon( const CollPoly* at, const vec2* ap,
41 const glTexture* bt, const int bsx, const int bsy, const vec2* bp,
42 vec2* crash );
43int CollidePolygon( const CollPoly* at, const vec2* ap,
44 const CollPoly* bt, const vec2* bp, vec2* crash );
45int CollideLineCircle( const vec2* p1, const vec2* p2,
46 const vec2 *cc, double cr, vec2 crash[2] );
47
48/* Intersection area. */
49double CollideCircleIntersection( const vec2 *p1, double r1,
50 const vec2 *p2, double r2 );
void RotatePolygon(CollPoly *rpolygon, CollPoly *ipolygon, float theta)
Rotates a polygon.
Definition: collision.c:325
int CollideLineCircle(const vec2 *p1, const vec2 *p2, const vec2 *cc, double cr, vec2 crash[2])
Checks to see if a line collides with a circle.
Definition: collision.c:786
int CollideLinePolygon(const vec2 *ap, double ad, double al, const CollPoly *bt, const vec2 *bp, vec2 crash[2])
Checks to see if a line collides with a polygon.
Definition: collision.c:650
int CollideLineSprite(const vec2 *ap, double ad, double al, const glTexture *bt, const int bsx, const int bsy, const vec2 *bp, vec2 crash[2])
Checks to see if a line collides with a sprite.
Definition: collision.c:501
void LoadPolygon(CollPoly *polygon, xmlNodePtr node)
Loads a polygon from an xml node.
Definition: collision.c:32
int CollideLineLine(double s1x, double s1y, double e1x, double e1y, double s2x, double s2y, double e2x, double e2y, vec2 *crash)
Checks to see if two lines collide.
Definition: collision.c:448
int CollideSprite(const glTexture *at, const int asx, const int asy, const vec2 *ap, const glTexture *bt, const int bsx, const int bsy, const vec2 *bp, vec2 *crash)
Checks whether or not two sprites collide.
Definition: collision.c:97
int CollideSpritePolygon(const CollPoly *at, const vec2 *ap, const glTexture *bt, const int bsx, const int bsy, const vec2 *bp, vec2 *crash)
Checks whether or not a sprite collides with a polygon.
Definition: collision.c:179
int CollidePolygon(const CollPoly *at, const vec2 *ap, const CollPoly *bt, const vec2 *bp, vec2 *crash)
Checks whether or not two polygons collide. /!\ The function is not symmetric: the points of polygon ...
Definition: collision.c:254
Represents a polygon used for collision detection.
Definition: collision.h:13
float ymin
Definition: collision.h:18
float ymax
Definition: collision.h:19
float xmax
Definition: collision.h:17
float xmin
Definition: collision.h:16
float * x
Definition: collision.h:14
float * y
Definition: collision.h:15
int npt
Definition: collision.h:20
Abstraction for rendering sprite sheets.
Definition: opengl_tex.h:34
Represents a 2d vector.
Definition: vec2.h:32