OpenSNES
Modern Open-Source SNES Development SDK
Loading...
Searching...
No Matches
collision.h
Go to the documentation of this file.
1
38
39#ifndef OPENSNES_COLLISION_H
40#define OPENSNES_COLLISION_H
41
42#include <snes/types.h>
43
44/*============================================================================
45 * Types
46 *============================================================================*/
47
54typedef struct {
59} Rect;
60
61/*============================================================================
62 * Rectangle Collision Functions
63 *============================================================================*/
64
83
102
124u8 collideRectEx(Rect *a, Rect *b, s16 *overlapX, s16 *overlapY);
125
126/*============================================================================
127 * Tile-Based Collision Functions
128 *============================================================================*/
129
157u8 collideTile(s16 px, s16 py, const u8 *tilemap, u16 mapWidth);
158
171u8 collideTileEx(s16 px, s16 py, const u8 *tilemap, u16 mapWidth, u8 tileSize);
172
191u8 collideRectTile(Rect *r, const u8 *tilemap, u16 mapWidth);
192
193/*============================================================================
194 * Helper Functions
195 *============================================================================*/
196
206void rectInit(Rect *r, s16 x, s16 y, u16 w, u16 h);
207
215void rectSetPos(Rect *r, s16 x, s16 y);
216
225
233u8 rectContains(Rect *inner, Rect *outer);
234
235#endif /* OPENSNES_COLLISION_H */
static u8 px[64]
Definition main.c:51
u8 tilemap[]
static u8 cy
Definition main.c:74
static u8 cx
Definition main.c:74
static u8 py
Definition main.c:73
u8 collidePoint(s16 x, s16 y, Rect *r)
Check point vs rectangle collision.
u8 collideTile(s16 px, s16 py, const u8 *tilemap, u16 mapWidth)
Check collision with tile at pixel coordinates.
void rectInit(Rect *r, s16 x, s16 y, u16 w, u16 h)
Initialize a rectangle.
u8 collideTileEx(s16 px, s16 py, const u8 *tilemap, u16 mapWidth, u8 tileSize)
Check collision with tile using custom tile size.
void rectSetPos(Rect *r, s16 x, s16 y)
Set rectangle position.
u8 collideRectEx(Rect *a, Rect *b, s16 *overlapX, s16 *overlapY)
Check if two rectangles overlap and return overlap amount.
void rectGetCenter(Rect *r, s16 *cx, s16 *cy)
Get rectangle center point.
u8 collideRectTile(Rect *r, const u8 *tilemap, u16 mapWidth)
Check collision between rectangle and tilemap.
u8 collideRect(Rect *a, Rect *b)
Check rectangle vs rectangle collision (AABB).
u8 rectContains(Rect *inner, Rect *outer)
Check if rectangle is completely inside another.
static u16 b
Definition main.c:157
static u16 a
Definition main.c:157
signed short s16
16-bit signed integer (-32768 to 32767)
Definition types.h:50
unsigned short u16
16-bit unsigned integer (0 to 65535)
Definition types.h:53
unsigned char u8
8-bit unsigned integer (0 to 255)
Definition types.h:47
Axis-aligned bounding box (rectangle).
Definition collision.h:54
u16 height
Definition collision.h:58
s16 y
Definition collision.h:56
u16 width
Definition collision.h:57
s16 x
Definition collision.h:55
OpenSNES Standard Types.