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
89u8 collideRect(const Rect *a, const Rect *b);
90
108u8 collidePoint(s16 x, s16 y, const Rect *r);
109
138u8 collideRectEx(const Rect *a, const Rect *b, s16 *overlapX, s16 *overlapY);
139
140/*============================================================================
141 * Tile-Based Collision Functions
142 *============================================================================*/
143
176u8 collideTile(s16 px, s16 py, const u8 *tilemap, u16 mapWidth);
177
194u8 collideTileEx(s16 px, s16 py, const u8 *tilemap, u16 mapWidth, u8 tileSize);
195
222u8 collideRectTile(const Rect *r, const u8 *tilemap, u16 mapWidth);
223
224/*============================================================================
225 * Helper Functions
226 *============================================================================*/
227
237void rectInit(Rect *r, s16 x, s16 y, u16 w, u16 h);
238
246void rectSetPos(Rect *r, s16 x, s16 y);
247
255void rectGetCenter(const Rect *r, s16 *cx, s16 *cy);
256
264u8 rectContains(const Rect *inner, const Rect *outer);
265
266#endif /* OPENSNES_COLLISION_H */
static u8 px[64]
Definition main.c:52
static u8 cy
Definition main.c:75
static u8 cx
Definition main.c:75
static u8 py
Definition main.c:74
u8 collideRect(const Rect *a, const Rect *b)
Check rectangle vs rectangle collision (AABB).
u8 collidePoint(s16 x, s16 y, const 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.
u8 rectContains(const Rect *inner, const Rect *outer)
Check if rectangle is completely inside another.
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.
u8 collideRectEx(const Rect *a, const Rect *b, s16 *overlapX, s16 *overlapY)
Check if two rectangles overlap and return overlap amount.
void rectSetPos(Rect *r, s16 x, s16 y)
Set rectangle position.
u8 collideRectTile(const Rect *r, const u8 *tilemap, u16 mapWidth)
Check collision between rectangle and tilemap.
void rectGetCenter(const Rect *r, s16 *cx, s16 *cy)
Get rectangle center point.
static u16 tilemap[896]
Generated 32x28 tilemap (krom's fixed pattern — see buildTilemap).
Definition main.c:55
static u16 b
Definition main.c:156
static u16 a
Definition main.c:156
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.