Loading...
Searching...
No Matches
collision.h
Go to the documentation of this file.
1
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
150u8 collideTile(s16 px, s16 py, u8 *tilemap, u16 mapWidth);
151
164u8 collideTileEx(s16 px, s16 py, u8 *tilemap, u16 mapWidth, u8 tileSize);
165
185
186/*============================================================================
187 * Helper Functions
188 *============================================================================*/
189
199void rectInit(Rect *r, s16 x, s16 y, u16 w, u16 h);
200
208void rectSetPos(Rect *r, s16 x, s16 y);
209
217void rectGetCenter(Rect *r, s16 *cx, s16 *cy);
218
226u8 rectContains(Rect *inner, Rect *outer);
227
228#endif /* OPENSNES_COLLISION_H */
u8 collidePoint(s16 x, s16 y, Rect *r)
Check point vs rectangle collision.
void rectInit(Rect *r, s16 x, s16 y, u16 w, u16 h)
Initialize a rectangle.
u8 collideTile(s16 px, s16 py, u8 *tilemap, u16 mapWidth)
Check collision with tile at pixel coordinates.
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.
u8 collideTileEx(s16 px, s16 py, u8 *tilemap, u16 mapWidth, u8 tileSize)
Check collision with tile using custom tile size.
u8 collideRectTile(Rect *r, u8 *tilemap, u16 mapWidth)
Check collision between rectangle and tilemap.
void rectGetCenter(Rect *r, s16 *cx, s16 *cy)
Get rectangle center point.
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 px
Definition main.c:166
static u16 a
Definition main.c:157
u8 tilemap[]
Tilemap data mapping tile indices to BG1's 32x32 grid.
signed short s16
16-bit signed integer (-32768 to 32767)
Definition types.h:49
unsigned short u16
16-bit unsigned integer (0 to 65535)
Definition types.h:52
unsigned char u8
8-bit unsigned integer (0 to 255)
Definition types.h:46
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.