naev 0.11.5
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 );
25void FreePolygon( CollPoly *polygon );
26
27/* Rotates a polygon. */
28void RotatePolygon( CollPoly *rpolygon, CollPoly *ipolygon, float theta );
29
30/* Returns 1 if collision is detected */
31int CollideSprite( const glTexture* at, const int asx, const int asy, const vec2* ap,
32 const glTexture* bt, const int bsx, const int bsy, const vec2* bp,
33 vec2* crash);
34int CollideLineLine( double s1x, double s1y, double e1x, double e1y,
35 double s2x, double s2y, double e2x, double e2y, vec2* crash );
36int CollideLineSprite( const vec2* ap, double ad, double al,
37 const glTexture* bt, const int bsx, const int bsy, const vec2* bp,
38 vec2 crash[2]);
39int CollideCirclePolygon( const vec2* ap, double ar,
40 const CollPoly* bt, const vec2* bp, vec2 crash[2] );
41int CollideCircleSprite( const vec2 *ap, double ar, const glTexture* bt,
42 const int bsx, const int bsy, const vec2* bp,vec2* crash );
43int CollideLinePolygon( const vec2* ap, double ad, double al,
44 const CollPoly* bt, const vec2* bp, vec2 crash[2] );
45int CollideSpritePolygon( const CollPoly* at, const vec2* ap,
46 const glTexture* bt, const int bsx, const int bsy, const vec2* bp,
47 vec2* crash );
48int CollidePolygon( const CollPoly* at, const vec2* ap,
49 const CollPoly* bt, const vec2* bp, vec2* crash );
50int CollideLineCircle( const vec2* p1, const vec2* p2,
51 const vec2 *cc, double cr, vec2 crash[2] );
52int CollideCircleCircle( const vec2 *p1, double r1,
53 const vec2 *p2, double r2, vec2 crash[2] );
54
55/* Intersection area. */
56double CollideCircleIntersection( const vec2 *p1, double r1,
57 const vec2 *p2, double r2 );
int CollideCircleCircle(const vec2 *p1, double r1, const vec2 *p2, double r2, vec2 crash[2])
Computes the collision between two circles.
Definition collision.c:1054
void RotatePolygon(CollPoly *rpolygon, CollPoly *ipolygon, float theta)
Rotates a polygon.
Definition collision.c:332
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:952
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:657
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:508
int CollideCircleSprite(const vec2 *ap, double ar, 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:868
void LoadPolygon(CollPoly *polygon, xmlNodePtr node)
Loads a polygon from an xml node.
Definition collision.c:35
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:455
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:103
int CollideCirclePolygon(const vec2 *ap, double ar, const CollPoly *bt, const vec2 *bp, vec2 crash[2])
Checks to see if a circle collides with a polygon.
Definition collision.c:790
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:185
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:260
double CollideCircleIntersection(const vec2 *p1, double r1, const vec2 *p2, double r2)
Calculates the area of intersection between two circles.
Definition collision.c:1071
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:36
Represents a 2d vector.
Definition vec2.h:32