diff --git a/OpenTK/Math/Matrix4.cs b/OpenTK/Math/Matrix4.cs index c3ad601d3..fccdd62c2 100644 --- a/OpenTK/Math/Matrix4.cs +++ b/OpenTK/Math/Matrix4.cs @@ -228,5 +228,10 @@ namespace OpenTK { return Row0 == other.Row0 && Row1 == other.Row1 && Row2 == other.Row2 && Row3 == other.Row3; } + + public override string ToString() { + return string.Format("Row0={0},\r\n Row1={1},\r\n Row2={2},\r\n Row3={3}]", Row0, Row1, Row2, Row3); + } + } } diff --git a/src/Client/Entity.c b/src/Client/Entity.c index 64da7163c..82faa7370 100644 --- a/src/Client/Entity.c +++ b/src/Client/Entity.c @@ -26,6 +26,7 @@ const UInt8* ShadowMode_Names[SHADOW_MODE_COUNT] = { "None", "SnapToBlock", "Cir *-----------------------------------------------------LocationUpdate------------------------------------------------------* *#########################################################################################################################*/ Real32 LocationUpdate_Clamp(Real32 degrees) { + if (degrees == MATH_POS_INF) return MATH_POS_INF; degrees = Math_ModF(degrees, 360.0f); if (degrees < 0) degrees += 360.0f; return degrees; diff --git a/src/Client/Game.c b/src/Client/Game.c index b9f6c599f..32a967688 100644 --- a/src/Client/Game.c +++ b/src/Client/Game.c @@ -42,7 +42,7 @@ IGameComponent Game_Components[26]; Int32 Game_ComponentsCount; ScheduledTask Game_Tasks[6]; -Int32 Game_TasksCount; +Int32 Game_TasksCount, entTaskI; UInt8 Game_UsernameBuffer[String_BufferSize(STRING_SIZE)]; extern String Game_Username = String_FromEmptyArray(Game_UsernameBuffer); @@ -61,13 +61,13 @@ void Game_AddComponent(IGameComponent* comp) { Game_Components[Game_ComponentsCount++] = *comp; } -ScheduledTask ScheduledTask_Add(Real64 interval, ScheduledTaskCallback callback) { +Int32 ScheduledTask_Add(Real64 interval, ScheduledTaskCallback callback) { ScheduledTask task = { 0.0, interval, callback }; if (Game_TasksCount == Array_Elems(Game_Tasks)) { ErrorHandler_Fail("ScheduledTask_Add - hit max count"); } Game_Tasks[Game_TasksCount++] = task; - return task; + return Game_TasksCount - 1; } @@ -390,14 +390,13 @@ void Game_LoadGuiOptions(void) { /* TODO: Handle Arial font not working */ } -ScheduledTask entTask; void Game_InitScheduledTasks(void) { #define GAME_DEF_TICKS (1.0 / 20) #define GAME_NET_TICKS (1.0 / 60) ScheduledTask_Add(30, AsyncDownloader_PurgeOldEntriesTask); ScheduledTask_Add(GAME_NET_TICKS, ServerConnection_Tick); - entTask = ScheduledTask_Add(GAME_DEF_TICKS, Entities_Tick); + entTaskI = ScheduledTask_Add(GAME_DEF_TICKS, Entities_Tick); ScheduledTask_Add(GAME_DEF_TICKS, Particles_Tick); ScheduledTask_Add(GAME_DEF_TICKS, Animations_Tick); @@ -672,6 +671,7 @@ void Game_RenderFrame(Real64 delta) { } Game_DoScheduledTasks(delta); + ScheduledTask entTask = Game_Tasks[entTaskI]; Real32 t = (Real32)(entTask.Accumulator / entTask.Interval); LocalPlayer_SetInterpPosition(t); diff --git a/src/Client/GameStructs.h b/src/Client/GameStructs.h index b9e826288..bdd4a9b5b 100644 --- a/src/Client/GameStructs.h +++ b/src/Client/GameStructs.h @@ -35,5 +35,5 @@ typedef struct ScheduledTask_ { } ScheduledTask; typedef void (*ScheduledTaskCallback)(ScheduledTask* task); -ScheduledTask ScheduledTask_Add(Real64 interval, ScheduledTaskCallback callback); +Int32 ScheduledTask_Add(Real64 interval, ScheduledTaskCallback callback); #endif \ No newline at end of file diff --git a/src/Client/Vectors.c b/src/Client/Vectors.c index 05f12ccbd..19d05735e 100644 --- a/src/Client/Vectors.c +++ b/src/Client/Vectors.c @@ -257,6 +257,7 @@ void Matrix_PerspectiveFieldOfView(Matrix* result, Real32 fovy, Real32 aspect, R void Matrix_PerspectiveOffCenter(Matrix* result, Real32 left, Real32 right, Real32 bottom, Real32 top, Real32 zNear, Real32 zFar) { /* Transposed, source https://msdn.microsoft.com/en-us/library/dd373537(v=vs.85).aspx */ *result = Matrix_Identity; + result->Row3.W = 0.0f; result->Row0.X = (2.0f * zNear) / (right - left); result->Row1.Y = (2.0f * zNear) / (top - bottom); diff --git a/src/Client/WinWindow.c b/src/Client/WinWindow.c index 99afb98d4..2fde23588 100644 --- a/src/Client/WinWindow.c +++ b/src/Client/WinWindow.c @@ -293,7 +293,7 @@ LRESULT CALLBACK Window_Procedure(HWND handle, UINT message, WPARAM wParam, LPAR break; case WM_MOUSEWHEEL: - wheel_delta = HIWORD(wParam) / (Real32)WHEEL_DELTA; + wheel_delta = ((short)HIWORD(wParam)) / (Real32)WHEEL_DELTA; Mouse_SetWheel(Mouse_Wheel + wheel_delta); return 0;