2026-07-17 15:30:29 +01:00
|
|
|
#ifndef HYDRADEFINES
|
|
|
|
|
#define HYDRADEFINES
|
|
|
|
|
|
|
|
|
|
#include <bitset>
|
|
|
|
|
#include <cstdint>
|
|
|
|
|
#define GLFW_MANAGER 1
|
|
|
|
|
//#define GLEW_STATIC
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef __unix__ /* __unix__ is usually defined by compilers targeting Unix systems */
|
|
|
|
|
#define OS_Windows 0
|
|
|
|
|
#define CLASS_DEFINE
|
|
|
|
|
#elif defined(_WIN32) || defined(WIN32) /* _Win32 is usually defined by compilers targeting 32 or 64 bit Windows systems */
|
|
|
|
|
#include <windows.h>
|
|
|
|
|
#define WIN32_LEAN_AND_MEAN
|
|
|
|
|
|
|
|
|
|
#ifdef _EXPORTING
|
|
|
|
|
#define CLASS_DEFINE __declspec(dllexport)
|
|
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
#define CLASS_DEFINE __declspec(dllimport)
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef PROJECT_DIRS
|
|
|
|
|
char const * const texture_base = "C:/Code/HydraV3/Media/Textures/";
|
|
|
|
|
char const * const shader_base = "C:/Code/HydraV3/HydraEngine/source/ShaderFiles/";
|
|
|
|
|
#define PROJECT_DIRS = 1
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
using HydraID = uint32_t;
|
|
|
|
|
using byte = uint8_t;
|
|
|
|
|
using HydraSignature = std::bitset<64>;
|
|
|
|
|
|
|
|
|
|
const HydraID INVALID_HYDRA_ID = 4294967295;
|
|
|
|
|
const uint32_t MAX_TASKS = 10000;
|
|
|
|
|
const uint32_t MAX_MATERIALS = 1000;
|
|
|
|
|
const uint32_t MAX_TEXTURES = 1000;
|
|
|
|
|
const uint32_t MAX_ACTORS = 10000;
|
|
|
|
|
const uint32_t MAX_LIGHTS = 500;
|
2026-07-28 00:26:04 +01:00
|
|
|
const uint32_t MAX_SHADOWS = 10;
|
2026-08-03 22:34:52 +01:00
|
|
|
const uint32_t SHADOW_MAP_SIZE = 4096;
|
2026-07-17 15:30:29 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
enum class HYDRA_RENDERABLE_TYPE
|
|
|
|
|
{
|
|
|
|
|
HYDRA_COLOUR = 1,
|
|
|
|
|
HYDRA_SHADOW,
|
|
|
|
|
HYDRA_TRANSPARENT,
|
|
|
|
|
HYDRA_LIGHTING,
|
2026-08-03 22:34:52 +01:00
|
|
|
HYDRA_OUTPUT,
|
|
|
|
|
HYDRA_TEXTURE_DEBUG
|
2026-07-17 15:30:29 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum class HYDRA_BUFFER_TYPE
|
|
|
|
|
{
|
|
|
|
|
HYDRA_UKNOWN_BUFFER = 0,
|
|
|
|
|
HYDRA_UBO_BUFFER = 1,
|
|
|
|
|
HYDRA_SSBO_BUFFER = 2,
|
|
|
|
|
HYDRA_VERTEX_BUFFER = 3,
|
|
|
|
|
HYDRA_INDEX_BUFFER = 4
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum class HYDRA_ACTOR_STATE
|
|
|
|
|
{
|
|
|
|
|
WAITING_FOR_INIT = 0,
|
|
|
|
|
ACTIVE = 1,
|
|
|
|
|
WAITING_FOR_DELETE = 2
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum class HydraThreadAffinity
|
|
|
|
|
{
|
|
|
|
|
Unknown = 0,
|
|
|
|
|
General = 1,
|
|
|
|
|
Render = 2,
|
|
|
|
|
Physics = 3
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum class HYDRA_LIGHT_TYPE
|
|
|
|
|
{
|
|
|
|
|
HYDRA_LIGHT_DIRECTIONAL = 1,
|
|
|
|
|
HYDRA_LIGHT_POINT = 2,
|
|
|
|
|
HYDRA_LIGHT_SPOT = 3
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enum class HYDRA_STATE
|
|
|
|
|
{
|
|
|
|
|
Empty = 0,
|
|
|
|
|
Waiting = 1,
|
|
|
|
|
Ready = 2,
|
|
|
|
|
Deleted = 3
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum class KEY_PRESS_ACTIONS
|
|
|
|
|
{
|
|
|
|
|
HYDRA_KEY_PRESSED = 1,
|
|
|
|
|
HYDRA_KEY_RELEASED = 2
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
enum class HYDRA_KEY_CODES
|
|
|
|
|
{
|
|
|
|
|
HYDRA_KEY_UNKNOWN =-1,
|
|
|
|
|
HYDRA_KEY_SPACE =32,
|
|
|
|
|
HYDRA_KEY_APOSTROPHE =39,
|
|
|
|
|
HYDRA_KEY_COMMA =44,
|
|
|
|
|
HYDRA_KEY_MINUS =45,
|
|
|
|
|
HYDRA_KEY_PERIOD =46,
|
|
|
|
|
HYDRA_KEY_SLASH =47,
|
|
|
|
|
HYDRA_KEY_0 =48,
|
|
|
|
|
HYDRA_KEY_1 =49,
|
|
|
|
|
HYDRA_KEY_2 =50,
|
|
|
|
|
HYDRA_KEY_3 =51,
|
|
|
|
|
HYDRA_KEY_4 =52,
|
|
|
|
|
HYDRA_KEY_5 =53,
|
|
|
|
|
HYDRA_KEY_6 =54,
|
|
|
|
|
HYDRA_KEY_7 =55,
|
|
|
|
|
HYDRA_KEY_8 =56,
|
|
|
|
|
HYDRA_KEY_9 =57,
|
|
|
|
|
HYDRA_KEY_SEMICOLON =59,
|
|
|
|
|
HYDRA_KEY_EQUAL =61,
|
|
|
|
|
HYDRA_KEY_A =65,
|
|
|
|
|
HYDRA_KEY_B =66,
|
|
|
|
|
HYDRA_KEY_C =67,
|
|
|
|
|
HYDRA_KEY_D =68,
|
|
|
|
|
HYDRA_KEY_E =69,
|
|
|
|
|
HYDRA_KEY_F =70,
|
|
|
|
|
HYDRA_KEY_G =71,
|
|
|
|
|
HYDRA_KEY_H =72,
|
|
|
|
|
HYDRA_KEY_I =73,
|
|
|
|
|
HYDRA_KEY_J =74,
|
|
|
|
|
HYDRA_KEY_K =75,
|
|
|
|
|
HYDRA_KEY_L =76,
|
|
|
|
|
HYDRA_KEY_M =77,
|
|
|
|
|
HYDRA_KEY_N =78,
|
|
|
|
|
HYDRA_KEY_O =79,
|
|
|
|
|
HYDRA_KEY_P =80,
|
|
|
|
|
HYDRA_KEY_Q =81,
|
|
|
|
|
HYDRA_KEY_R =82,
|
|
|
|
|
HYDRA_KEY_S =83,
|
|
|
|
|
HYDRA_KEY_T =84,
|
|
|
|
|
HYDRA_KEY_U =85,
|
|
|
|
|
HYDRA_KEY_V =86,
|
|
|
|
|
HYDRA_KEY_W =87,
|
|
|
|
|
HYDRA_KEY_X =88,
|
|
|
|
|
HYDRA_KEY_Y =89,
|
|
|
|
|
HYDRA_KEY_Z =90,
|
|
|
|
|
HYDRA_KEY_LEFT_BRACKET =91,
|
|
|
|
|
HYDRA_KEY_BACKSLASH =92,
|
|
|
|
|
HYDRA_KEY_RIGHT_BRACKET =93,
|
|
|
|
|
HYDRA_KEY_GRAVE_ACCENT =96,
|
|
|
|
|
HYDRA_KEY_WORLD_1 =161,
|
|
|
|
|
HYDRA_KEY_WORLD_2 =162,
|
|
|
|
|
HYDRA_KEY_ESCAPE =256,
|
|
|
|
|
HYDRA_KEY_ENTER =257,
|
|
|
|
|
HYDRA_KEY_TAB =258,
|
|
|
|
|
HYDRA_KEY_BACKSPACE =259,
|
|
|
|
|
HYDRA_KEY_INSERT =260,
|
|
|
|
|
HYDRA_KEY_DELETE =261,
|
|
|
|
|
HYDRA_KEY_RIGHT =262,
|
|
|
|
|
HYDRA_KEY_LEFT =263,
|
|
|
|
|
HYDRA_KEY_DOWN =264,
|
|
|
|
|
HYDRA_KEY_UP =265,
|
|
|
|
|
HYDRA_KEY_PAGE_UP =266,
|
|
|
|
|
HYDRA_KEY_PAGE_DOWN =267,
|
|
|
|
|
HYDRA_KEY_HOME =268,
|
|
|
|
|
HYDRA_KEY_END =269,
|
|
|
|
|
HYDRA_KEY_CAPS_LOCK =280,
|
|
|
|
|
HYDRA_KEY_SCROLL_LOCK =281,
|
|
|
|
|
HYDRA_KEY_NUM_LOCK =282,
|
|
|
|
|
HYDRA_KEY_PRINT_SCREEN =283,
|
|
|
|
|
HYDRA_KEY_PAUSE =284,
|
|
|
|
|
HYDRA_KEY_F1 =290,
|
|
|
|
|
HYDRA_KEY_F2 =291,
|
|
|
|
|
HYDRA_KEY_F3 =292,
|
|
|
|
|
HYDRA_KEY_F4 =293,
|
|
|
|
|
HYDRA_KEY_F5 =294,
|
|
|
|
|
HYDRA_KEY_F6 =295,
|
|
|
|
|
HYDRA_KEY_F7 =296,
|
|
|
|
|
HYDRA_KEY_F8 =297,
|
|
|
|
|
HYDRA_KEY_F9 =298,
|
|
|
|
|
HYDRA_KEY_F10 =299,
|
|
|
|
|
HYDRA_KEY_F11 =300,
|
|
|
|
|
HYDRA_KEY_F12 =301,
|
|
|
|
|
HYDRA_KEY_F13 =302,
|
|
|
|
|
HYDRA_KEY_F14 =303,
|
|
|
|
|
HYDRA_KEY_F15 =304,
|
|
|
|
|
HYDRA_KEY_F16 =305,
|
|
|
|
|
HYDRA_KEY_F17 =306,
|
|
|
|
|
HYDRA_KEY_F18 =307,
|
|
|
|
|
HYDRA_KEY_F19 =308,
|
|
|
|
|
HYDRA_KEY_F20 =309,
|
|
|
|
|
HYDRA_KEY_F21 =310,
|
|
|
|
|
HYDRA_KEY_F22 =311,
|
|
|
|
|
HYDRA_KEY_F23 =312,
|
|
|
|
|
HYDRA_KEY_F24 =313,
|
|
|
|
|
HYDRA_KEY_F25 =314,
|
|
|
|
|
HYDRA_KEY_KP_0 =320,
|
|
|
|
|
HYDRA_KEY_KP_1 =321,
|
|
|
|
|
HYDRA_KEY_KP_2 =322,
|
|
|
|
|
HYDRA_KEY_KP_3 =323,
|
|
|
|
|
HYDRA_KEY_KP_4 =324,
|
|
|
|
|
HYDRA_KEY_KP_5 =325,
|
|
|
|
|
HYDRA_KEY_KP_6 =326,
|
|
|
|
|
HYDRA_KEY_KP_7 =327,
|
|
|
|
|
HYDRA_KEY_KP_8 =328,
|
|
|
|
|
HYDRA_KEY_KP_9 =329,
|
|
|
|
|
HYDRA_KEY_KP_DECIMAL =330,
|
|
|
|
|
HYDRA_KEY_KP_DIVIDE =331,
|
|
|
|
|
HYDRA_KEY_KP_MULTIPLY =332,
|
|
|
|
|
HYDRA_KEY_KP_SUBTRACT =333,
|
|
|
|
|
HYDRA_KEY_KP_ADD =334,
|
|
|
|
|
HYDRA_KEY_KP_ENTER =335,
|
|
|
|
|
HYDRA_KEY_KP_EQUAL =336,
|
|
|
|
|
HYDRA_KEY_LEFT_SHIFT =340,
|
|
|
|
|
HYDRA_KEY_LEFT_CONTROL =341,
|
|
|
|
|
HYDRA_KEY_LEFT_ALT =342,
|
|
|
|
|
HYDRA_KEY_LEFT_SUPER =343,
|
|
|
|
|
HYDRA_KEY_RIGHT_SHIFT =344,
|
|
|
|
|
HYDRA_KEY_RIGHT_CONTROL =345,
|
|
|
|
|
HYDRA_KEY_RIGHT_ALT =346,
|
|
|
|
|
HYDRA_KEY_RIGHT_SUPER =347,
|
|
|
|
|
HYDRA_KEY_MENU =348
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct HydraKeyPressStuct
|
|
|
|
|
{
|
|
|
|
|
HydraKeyPressStuct() {};
|
|
|
|
|
HydraKeyPressStuct(int key_code_in, KEY_PRESS_ACTIONS key_action_in) { key_code = key_code_in; key_action = key_action_in; }
|
|
|
|
|
int key_code = -1;
|
|
|
|
|
KEY_PRESS_ACTIONS key_action = KEY_PRESS_ACTIONS::HYDRA_KEY_PRESSED;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct HydraMouseMoveStruct
|
|
|
|
|
{
|
|
|
|
|
HydraMouseMoveStruct() {};
|
|
|
|
|
HydraMouseMoveStruct(int x_in, int y_in) { x = x_in; y = y_in; }
|
|
|
|
|
int x = 0;
|
|
|
|
|
int y = 0;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* HYDRADEFINES */
|