@@ -364,7 +364,7 @@ Shader::Shader(char const *vert, char const *frag) | |||||
glGetActiveAttrib(data->prog_id, i, max_len, &attrib_len, (GLint*)&attrib_size, (GLenum*)&attrib_type, name_buffer); | glGetActiveAttrib(data->prog_id, i, max_len, &attrib_len, (GLint*)&attrib_size, (GLenum*)&attrib_type, name_buffer); | ||||
String name(name_buffer); | String name(name_buffer); | ||||
int index = 0; | |||||
int index = -1; | |||||
VertexUsage usage = VertexUsage::Max; | VertexUsage usage = VertexUsage::Max; | ||||
for (int j = 0; j < VertexUsage::Max; ++j) | for (int j = 0; j < VertexUsage::Max; ++j) | ||||
{ | { | ||||
@@ -377,9 +377,10 @@ Shader::Shader(char const *vert, char const *frag) | |||||
} | } | ||||
} | } | ||||
if (usage == VertexUsage::Max || index == LONG_MIN || index == LONG_MAX) | |||||
if (usage == VertexUsage::Max || index == -1) | |||||
{ | { | ||||
Log::Error("unable to parse attribute sementic from name: %s", name_buffer); | |||||
Log::Error("unable to parse attribute semantic from name: %s", | |||||
name_buffer); | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
@@ -390,7 +391,7 @@ Shader::Shader(char const *vert, char const *frag) | |||||
#ifdef _DEBUG | #ifdef _DEBUG | ||||
if (data->attrib_locations.HasKey(flags)) | if (data->attrib_locations.HasKey(flags)) | ||||
{ | { | ||||
Log::Error("an error occured while parsing attribute sementics"); | |||||
Log::Error("an error occured while parsing attribute semantics"); | |||||
} | } | ||||
#endif | #endif | ||||
data->attrib_locations[flags] = location; | data->attrib_locations[flags] = location; | ||||
@@ -19,7 +19,12 @@ namespace lol | |||||
class KeyBinding | class KeyBinding | ||||
{ | { | ||||
public: | public: | ||||
KeyBinding() : m_device(nullptr), m_current(false), m_previous(false), m_keyindex(-1) {} | |||||
KeyBinding() | |||||
: m_device(nullptr), | |||||
m_keyindex(-1), | |||||
m_current(false), | |||||
m_previous(false) | |||||
{} | |||||
/** Indicate wheither the key is currently down */ | /** Indicate wheither the key is currently down */ | ||||
bool IsDown() const { return m_current; } | bool IsDown() const { return m_current; } | ||||
@@ -52,7 +57,14 @@ protected: | |||||
class AxisBinding | class AxisBinding | ||||
{ | { | ||||
public: | public: | ||||
AxisBinding() : m_device(nullptr), m_current(0.0f), m_previous(0.0f), m_axisindex(-1), m_minkeyindex(-1), m_maxkeyindex(-1) {} | |||||
AxisBinding() | |||||
: m_device(nullptr), | |||||
m_axisindex(-1), | |||||
m_minkeyindex(-1), | |||||
m_maxkeyindex(-1), | |||||
m_current(0.0f), | |||||
m_previous(0.0f) | |||||
{} | |||||
/** Gets the current absolute value of this axis */ | /** Gets the current absolute value of this axis */ | ||||
float GetValue() const { return m_current; } | float GetValue() const { return m_current; } | ||||
@@ -69,7 +81,8 @@ public: | |||||
void ClearBinding(); | void ClearBinding(); | ||||
/** Indicate wheither a physical device and axis has been bound */ | /** Indicate wheither a physical device and axis has been bound */ | ||||
bool IsBound() { return m_device && m_axisindex != -1 || m_maxkeyindex != -1; } | |||||
bool IsBound() { return m_device && | |||||
(m_axisindex != -1 || m_maxkeyindex != -1); } | |||||
protected: | protected: | ||||
void Update() { m_previous = m_current; m_current = IsBound() ? RetrieveCurrentValue() : 0.0f; } | void Update() { m_previous = m_current; m_current = IsBound() ? RetrieveCurrentValue() : 0.0f; } | ||||
@@ -171,20 +171,27 @@ static inline ldouble ceil(ldouble x) { return std::ceil(x); } | |||||
static inline T fract(T x) { return x - lol::floor(x); } \ | static inline T fract(T x) { return x - lol::floor(x); } \ | ||||
static inline T min(T x, T y) { return std::min(x, y); } \ | static inline T min(T x, T y) { return std::min(x, y); } \ | ||||
static inline T max(T x, T y) { return std::max(x, y); } \ | static inline T max(T x, T y) { return std::max(x, y); } \ | ||||
static inline T clamp(T x, T y, T z) { return min(max(x, y), z); } \ | |||||
static inline T clamp(T x, T y, T z) { return min(max(x, y), z); } | |||||
#define LOL_GENERIC_FUNC_SIGNED(T) \ | |||||
LOL_GENERIC_FUNC(T) \ | |||||
static inline T sign(T x) { return (T)(((T)0 < x) - (x < (T)0)); } | static inline T sign(T x) { return (T)(((T)0 < x) - (x < (T)0)); } | ||||
LOL_GENERIC_FUNC(uint8_t) | |||||
LOL_GENERIC_FUNC(int8_t) | |||||
LOL_GENERIC_FUNC(uint16_t) | |||||
LOL_GENERIC_FUNC(int16_t) | |||||
LOL_GENERIC_FUNC(uint32_t) | |||||
LOL_GENERIC_FUNC(int32_t) | |||||
LOL_GENERIC_FUNC(uint64_t) | |||||
LOL_GENERIC_FUNC(int64_t) | |||||
LOL_GENERIC_FUNC(float) | |||||
LOL_GENERIC_FUNC(double) | |||||
LOL_GENERIC_FUNC(ldouble) | |||||
#define LOL_GENERIC_FUNC_UNSIGNED(T) \ | |||||
LOL_GENERIC_FUNC(T) \ | |||||
static inline T sign(T x) { return (T)((T)0 < x); } | |||||
LOL_GENERIC_FUNC_UNSIGNED(uint8_t) | |||||
LOL_GENERIC_FUNC_SIGNED(int8_t) | |||||
LOL_GENERIC_FUNC_UNSIGNED(uint16_t) | |||||
LOL_GENERIC_FUNC_SIGNED(int16_t) | |||||
LOL_GENERIC_FUNC_UNSIGNED(uint32_t) | |||||
LOL_GENERIC_FUNC_SIGNED(int32_t) | |||||
LOL_GENERIC_FUNC_UNSIGNED(uint64_t) | |||||
LOL_GENERIC_FUNC_SIGNED(int64_t) | |||||
LOL_GENERIC_FUNC_SIGNED(float) | |||||
LOL_GENERIC_FUNC_SIGNED(double) | |||||
LOL_GENERIC_FUNC_SIGNED(ldouble) | |||||
#undef LOL_GENERIC_FUNC | #undef LOL_GENERIC_FUNC | ||||
} /* namespace lol */ | } /* namespace lol */ | ||||