Blame heliantus/collider.c

8535a3
8535a3
#include "private.h"
8535a3
8535a3
int heliCheckCollision(HeliCollider *a, HeliCollider *b, double *normX, double *normY) {
8535a3
	// corner with side
8535a3
	// corner with circle
8535a3
	// circle with circle
8535a3
	#warning "TODO: heliCheckCollision: not implemented yet"
8535a3
	return FALSE;
8535a3
}
8535a3
8535a3
int heliPointCollision(HeliCollider *c, double x, double y) {
8535a3
	x -= c->x;
8535a3
	y -= c->y;
8535a3
	if (c->type == COLLIDER_CIRCLE) {
8535a3
		return x*x + y*y <= c->radius*c->radius;
8535a3
	} else
8535a3
	if (c->type == COLLIDER_RECTANGLE) {
8535a3
		double a = c->rotation*(PI/180);
8535a3
		double sn = sin(a);
8535a3
		double cn = cos(a);
8535a3
		return fabs(x*cn - y*sn) <= c->width*0.5
8535a3
			&& fabs(x*sn + y*cn) <= c->height*0.5;
8535a3
	}
8535a3
	return FALSE;
8535a3
}
8535a3