/* Web64 SDK header printout: web64/collision.h * Generated by scripts/copy-web64-ide-source.mjs. * The IDE resolves this header as a read-only virtual SDK document. */ #ifndef WEB64_COLLISION_H #define WEB64_COLLISION_H #include #define WEB64_MATERIAL_SOLID 1 #define WEB64_MATERIAL_ONE_WAY 2 #define WEB64_MATERIAL_LADDER 4 #define WEB64_MATERIAL_HAZARD 8 #define WEB64_MATERIAL_TRIGGER 16 #define WEB64_MATERIAL_COLLECTIBLE 32 #define WEB64_MATERIAL_MODIFIER 64 #define WEB64_MATERIAL_USER 128 #define WEB64_CONTACT_LEFT 1 #define WEB64_CONTACT_RIGHT 2 #define WEB64_CONTACT_CEILING 4 #define WEB64_CONTACT_FLOOR 8 #define WEB64_CONTACT_LADDER 16 #define WEB64_CONTACT_HAZARD 32 #define WEB64_CONTACT_TRIGGER 64 #define WEB64_CONTACT_COLLECTIBLE 128 typedef struct { uint16_t materials; uint16_t properties; uint16_t width; uint16_t height; uint16_t row_stride; uint8_t tile_shift; uint8_t outside_material; } Web64CollisionMap; typedef struct { uint16_t x; uint16_t y; uint8_t width; uint8_t height; uint8_t category; uint8_t mask; } Web64Aabb; typedef struct { uint16_t previous_x; uint16_t desired_x; uint8_t material_mask; uint8_t contacts; uint8_t material; uint8_t properties; } Web64CollisionSweepX; typedef struct { uint16_t previous_y; uint16_t desired_y; uint8_t material_mask; uint8_t contacts; uint8_t material; uint8_t properties; } Web64CollisionSweepY; typedef struct { uint16_t cell; uint8_t column; uint8_t row; uint8_t material; uint8_t properties; uint8_t contacts; uint8_t actor; } Web64CollisionEvent; typedef struct { uint16_t events; uint8_t capacity; uint8_t count; uint8_t overflow; } Web64CollisionQueue; _web64_rt uint8_t web64_collision_material_at(const Web64CollisionMap *map, uint16_t pixel_x, uint16_t pixel_y); _web64_rt uint8_t web64_collision_material_flags(const Web64CollisionMap *map, uint8_t material); _web64_rt uint8_t web64_collision_probe_point(const Web64CollisionMap *map, uint16_t pixel_x, uint16_t pixel_y, uint8_t material_mask); _web64_rt uint8_t web64_collision_probe_edge(const Web64CollisionMap *map, uint16_t pixel_x, uint16_t pixel_y0, uint16_t pixel_y1, uint8_t material_mask); _web64_rt uint8_t web64_collision_probe_span(const Web64CollisionMap *map, uint16_t pixel_x0, uint16_t pixel_x1, uint16_t pixel_y, uint8_t material_mask); _web64_rt uint16_t web64_collision_find_material_rect(uint8_t *materials, uint8_t row_stride, uint8_t first_column, uint8_t last_column, uint8_t first_row, uint8_t last_row, uint8_t material); _web64_rt uint8_t web64_collision_sweep_x(const Web64CollisionMap *map, Web64Aabb *box, Web64CollisionSweepX *sweep); _web64_rt uint8_t web64_collision_sweep_y(const Web64CollisionMap *map, Web64Aabb *box, Web64CollisionSweepY *sweep); _web64_rt uint8_t web64_collision_aabb(const Web64Aabb *a, const Web64Aabb *b); _web64_rt uint8_t web64_collision_event_push(Web64CollisionQueue *queue, const Web64CollisionEvent *event); _web64_rt void web64_collision_map_write(uint8_t *plane, uint16_t row_stride, uint8_t column, uint8_t row, uint8_t value); #endif