112 lines
3.1 KiB
C

#pragma once
#include <stdint.h>
#include <stddef.h>
#include "include/raylib.h"
typedef uint8_t u8;
typedef uint16_t u16;
typedef int16_t i16;
typedef int32_t i32;
typedef uint32_t u32;
typedef uint64_t u64;
typedef float f32;
typedef double f64;
typedef uintptr_t uptr;
typedef char sbyte;
typedef ptrdiff_t size;
typedef size_t usize;
typedef Vector2 Point;
typedef struct Size {
float width;
float height;
} Size;
typedef struct Rect {
Point position;
Size size;
} Rect;
typedef union {
Rect components;
Rectangle rect;
} RectU;
#define OPTION(type, typeName) \
struct { \
enum {NONE, SOME} tag; \
union { \
u8 none; \
type typeName; \
} some; \
}
typedef OPTION(Point, point) PointOption;
void D_DrawTextureRec(Texture2D texture, Rectangle source, Vector2 position, Color tint);
void D_DrawTexturePro(Texture2D texture, Rectangle source, Rectangle dest, Vector2 origin, float rotation, Color tint);
void D_DrawTextureV(Texture2D texture, Vector2 position, Color tint);
#ifdef ENNIX_LIB_IMPLEMENTATION
extern bool global_debug_mode;
inline void D_DrawTextureV(Texture2D texture, Vector2 position, Color tint) {
DrawTextureV(texture, position, tint);
#ifdef DEBUG_MODE_ENABLED
if (global_debug_mode) {
Rectangle debug = {position.x,position.y,texture.width,texture.height};
DrawRectangleLinesEx(debug, 1.0f, RED);
}
#endif
}
// Vector2 operations
#define v2_add Vector2Add
#define v2_sub Vector2Subtract
#define v2_mul Vector2Scale
#define v2_div Vector2Divide
#define v2_dot Vector2DotProduct
#define v2_len Vector2Length
#define v2_norm Vector2Normalize
#define v2_dist Vector2Distance
#define v2_lerp Vector2Lerp
// Vector3 operations
#define v3_add Vector3Add
#define v3_sub Vector3Subtract
#define v3_mul Vector3Scale
#define v3_div Vector3Divide
#define v3_dot Vector3DotProduct
#define v3_cross Vector3CrossProduct
#define v3_len Vector3Length
#define v3_norm Vector3Normalize
#define v3_dist Vector3Distance
#define v3_lerp Vector3Lerp
// Constructor-style macros
#define v2(x, y) ((Vector2){x, y})
#define v3(x, y, z) ((Vector3){x, y, z})
inline void D_DrawTextureRec(Texture2D texture, Rectangle source, Vector2 position, Color tint) {
DrawTextureRec(texture, source, position, tint);
#ifdef DEBUG_MODE_ENABLED
if (global_debug_mode) {
Rectangle debug = {position.x,position.y,source.width,source.height};
DrawRectangleLinesEx(debug, 1.0f, RED);
}
#endif
}
inline void D_DrawTexturePro(Texture2D texture, Rectangle source, Rectangle dest, Vector2 origin, float rotation, Color tint) {
DrawTexturePro(texture, source, dest, origin, rotation, tint);
#ifdef DEBUG_MODE_ENABLED
if (global_debug_mode) {
Rectangle debug = {dest.x-origin.x,dest.y-origin.y,dest.width,dest.height};
DrawRectangleLinesEx(debug, 1.0f, RED);
}
#endif
}
#endif