diff --git a/DebugUtils/Source/DebugDraw.cpp b/DebugUtils/Source/DebugDraw.cpp index 070d797..5bd6043 100644 --- a/DebugUtils/Source/DebugDraw.cpp +++ b/DebugUtils/Source/DebugDraw.cpp @@ -322,11 +322,21 @@ inline void vsub(float* dest, const float* v1, const float* v2) dest[2] = v1[2]-v2[2]; } +inline float vdistSqr(const float* v1, const float* v2) +{ + const float x = v1[0]-v2[0]; + const float y = v1[1]-v2[1]; + const float z = v1[2]-v2[2]; + return x*x + y*y + z*z; +} + void appendArrowHead(struct duDebugDraw* dd, const float* p, const float* q, const float s, unsigned int col) { + const float eps = 0.001f; if (!dd) return; + if (vdistSqr(p,q) < eps*eps) return; float ax[3], ay[3] = {0,1,0}, az[3]; vsub(az, q, p); vnormalize(az); diff --git a/Detour/Include/DetourAssert.h b/Detour/Include/DetourAssert.h index d13ffb2..709ebd9 100644 --- a/Detour/Include/DetourAssert.h +++ b/Detour/Include/DetourAssert.h @@ -24,7 +24,7 @@ #ifdef NDEBUG // From http://cnicholson.net/2009/02/stupid-c-tricks-adventures-in-assert/ -# define dtAssert(x) do { (void)sizeof(x); } while(0) +# define dtAssert(x) do { (void)sizeof(x); } while(__LINE__==-1,false) #else # include # define dtAssert assert diff --git a/Recast/Include/RecastAssert.h b/Recast/Include/RecastAssert.h index d667830..b58b8fc 100644 --- a/Recast/Include/RecastAssert.h +++ b/Recast/Include/RecastAssert.h @@ -24,7 +24,7 @@ #ifdef NDEBUG // From http://cnicholson.net/2009/02/stupid-c-tricks-adventures-in-assert/ -# define rcAssert(x) do { (void)sizeof(x); } while(0) +# define rcAssert(x) do { (void)sizeof(x); } while(__LINE__==-1,false) #else # include # define rcAssert assert diff --git a/RecastDemo/Bin/Recast.exe b/RecastDemo/Bin/Recast.exe index d235d50..0c91904 100644 Binary files a/RecastDemo/Bin/Recast.exe and b/RecastDemo/Bin/Recast.exe differ diff --git a/RecastDemo/Build/VC9/Recast.vcproj b/RecastDemo/Build/VC9/Recast.vcproj index b1d0fc4..ab59983 100644 --- a/RecastDemo/Build/VC9/Recast.vcproj +++ b/RecastDemo/Build/VC9/Recast.vcproj @@ -271,6 +271,10 @@ RelativePath="..\..\..\Detour\Include\DetourNode.h" > + + + + + + @@ -387,6 +399,10 @@ RelativePath="..\..\Include\TestCase.h" > + + + + @@ -467,6 +487,10 @@ RelativePath="..\..\Source\TestCase.cpp" > + + #include +#ifdef WIN32 +# define snprintf _snprintf +#endif ValueHistory::ValueHistory() : m_hsamples(0) @@ -61,7 +64,7 @@ void GraphParams::setValueRange(float ivmin, float ivmax, int indiv, const char* void drawGraphBackground(const GraphParams* p) { // BG - imguiDrawRoundedRect(p->x, p->y, p->w, p->h, p->pad, imguiRGBA(64,64,64,128)); + imguiDrawRoundedRect((float)p->x, (float)p->y, (float)p->w, (float)p->h, (float)p->pad, imguiRGBA(64,64,64,128)); const float sy = (p->h-p->pad*2) / (p->vmax-p->vmin); const float oy = p->y+p->pad-p->vmin*sy; @@ -76,7 +79,7 @@ void drawGraphBackground(const GraphParams* p) snprintf(text, 64, "%.2f %s", v, p->units); const float fy = oy + v*sy; imguiDrawText(p->x + p->w - p->pad, (int)fy-4, IMGUI_ALIGN_RIGHT, text, imguiRGBA(0,0,0,255)); - imguiDrawLine(p->x + p->pad, fy, p->x + p->w - p->pad - 50, fy, 1.0f, imguiRGBA(0,0,0,64)); + imguiDrawLine((float)p->x + (float)p->pad, fy, (float)p->x + (float)p->w - (float)p->pad - 50, fy, 1.0f, imguiRGBA(0,0,0,64)); } } @@ -85,11 +88,11 @@ void drawGraph(const GraphParams* p, const ValueHistory* graph, { const float sx = (p->w - p->pad*2) / (float)graph->getSampleCount(); const float sy = (p->h - p->pad*2) / (p->vmax - p->vmin); - const float ox = p->x + p->pad; - const float oy = p->y + p->pad - p->vmin*sy; + const float ox = (float)p->x + (float)p->pad; + const float oy = (float)p->y + (float)p->pad - p->vmin*sy; // Values - float px, py; + float px=0, py=0; for (int i = 0; i < graph->getSampleCount()-1; ++i) { const float x = ox + i*sx; @@ -106,7 +109,7 @@ void drawGraph(const GraphParams* p, const ValueHistory* graph, int ix = p->x + p->w + 5; int iy = p->y + p->h - (idx+1)*(size+spacing); - imguiDrawRoundedRect(ix, iy, size, size, 2.0f, col); + imguiDrawRoundedRect((float)ix, (float)iy, (float)size, (float)size, 2.0f, col); char text[64]; snprintf(text, 64, "%.2f %s", graph->getAverage(), p->units); diff --git a/RecastDemo/Source/imgui.cpp b/RecastDemo/Source/imgui.cpp index edf7877..36bbffa 100644 --- a/RecastDemo/Source/imgui.cpp +++ b/RecastDemo/Source/imgui.cpp @@ -343,7 +343,7 @@ bool imguiBeginScrollArea(const char* name, int x, int y, int w, int h, int* scr g_insideScrollArea = inRect(x, y, w, h, false); g_state.insideCurrentScroll = g_insideScrollArea; - addGfxCmdRoundedRect(x, y, w, h, 6, imguiRGBA(0,0,0,192)); + addGfxCmdRoundedRect((float)x, (float)y, (float)w, (float)h, 6, imguiRGBA(0,0,0,192)); addGfxCmdText(x+AREA_HEADER/2, y+h-AREA_HEADER/2-TEXT_HEIGHT/2, IMGUI_ALIGN_LEFT, name, imguiRGBA(255,255,255,128)); @@ -403,12 +403,12 @@ void imguiEndScrollArea() } // BG - addGfxCmdRoundedRect(x, y, w, h, w/2-1, imguiRGBA(0,0,0,196)); + addGfxCmdRoundedRect((float)x, (float)y, (float)w, (float)h, (float)w/2-1, imguiRGBA(0,0,0,196)); // Bar if (isActive(hid)) - addGfxCmdRoundedRect(hx, hy, hw, hh, w/2-1, imguiRGBA(255,196,0,196)); + addGfxCmdRoundedRect((float)hx, (float)hy, (float)hw, (float)hh, (float)w/2-1, imguiRGBA(255,196,0,196)); else - addGfxCmdRoundedRect(hx, hy, hw, hh, w/2-1, isHot(hid) ? imguiRGBA(255,196,0,96) : imguiRGBA(255,255,255,64)); + addGfxCmdRoundedRect((float)hx, (float)hy, (float)hw, (float)hh, (float)w/2-1, isHot(hid) ? imguiRGBA(255,196,0,96) : imguiRGBA(255,255,255,64)); // Handle mouse scrolling. if (g_insideScrollArea) // && !anyActive()) @@ -438,7 +438,7 @@ bool imguiButton(const char* text, bool enabled) bool over = enabled && inRect(x, y, w, h); bool res = buttonLogic(id, over); - addGfxCmdRoundedRect(x, y, w, h, BUTTON_HEIGHT/2-1, imguiRGBA(128,128,128, isActive(id)?196:96)); + addGfxCmdRoundedRect((float)x, (float)y, (float)w, (float)h, (float)BUTTON_HEIGHT/2-1, imguiRGBA(128,128,128, isActive(id)?196:96)); if (enabled) addGfxCmdText(x+BUTTON_HEIGHT/2, y+BUTTON_HEIGHT/2-TEXT_HEIGHT/2, IMGUI_ALIGN_LEFT, text, isHot(id) ? imguiRGBA(255,196,0,255) : imguiRGBA(255,255,255,200)); else @@ -462,7 +462,7 @@ bool imguiItem(const char* text, bool enabled) bool res = buttonLogic(id, over); if (isHot(id)) - addGfxCmdRoundedRect(x, y, w, h, 2, imguiRGBA(255,196,0,isActive(id)?196:96)); + addGfxCmdRoundedRect((float)x, (float)y, (float)w, (float)h, 2.0f, imguiRGBA(255,196,0,isActive(id)?196:96)); if (enabled) addGfxCmdText(x+BUTTON_HEIGHT/2, y+BUTTON_HEIGHT/2-TEXT_HEIGHT/2, IMGUI_ALIGN_LEFT, text, imguiRGBA(255,255,255,200)); @@ -488,13 +488,13 @@ bool imguiCheck(const char* text, bool checked, bool enabled) const int cx = x+BUTTON_HEIGHT/2-CHECK_SIZE/2; const int cy = y+BUTTON_HEIGHT/2-CHECK_SIZE/2; - addGfxCmdRoundedRect(cx-3, cy-3, CHECK_SIZE+6, CHECK_SIZE+6, 4, imguiRGBA(128,128,128, isActive(id)?196:96)); + addGfxCmdRoundedRect((float)cx-3, (float)cy-3, (float)CHECK_SIZE+6, (float)CHECK_SIZE+6, 4, imguiRGBA(128,128,128, isActive(id)?196:96)); if (checked) { if (enabled) - addGfxCmdRoundedRect(cx, cy, CHECK_SIZE, CHECK_SIZE, CHECK_SIZE/2-1, imguiRGBA(255,255,255,isActive(id)?255:200)); + addGfxCmdRoundedRect((float)cx, (float)cy, (float)CHECK_SIZE, (float)CHECK_SIZE, (float)CHECK_SIZE/2-1, imguiRGBA(255,255,255,isActive(id)?255:200)); else - addGfxCmdRoundedRect(cx, cy, CHECK_SIZE, CHECK_SIZE, CHECK_SIZE/2-1, imguiRGBA(128,128,128,200)); + addGfxCmdRoundedRect((float)cx, (float)cy, (float)CHECK_SIZE, (float)CHECK_SIZE, (float)CHECK_SIZE/2-1, imguiRGBA(128,128,128,200)); } if (enabled) @@ -567,7 +567,7 @@ bool imguiSlider(const char* text, float* val, float vmin, float vmax, float vin int h = SLIDER_HEIGHT; g_state.widgetY -= SLIDER_HEIGHT + DEFAULT_SPACING; - addGfxCmdRoundedRect(x, y, w, h, 4, imguiRGBA(0,0,0,128)); + addGfxCmdRoundedRect((float)x, (float)y, (float)w, (float)h, 4.0f, imguiRGBA(0,0,0,128)); const int range = w - SLIDER_MARKER_WIDTH; @@ -600,9 +600,9 @@ bool imguiSlider(const char* text, float* val, float vmin, float vmax, float vin } if (isActive(id)) - addGfxCmdRoundedRect(x+m, y, SLIDER_MARKER_WIDTH, SLIDER_HEIGHT, 4, imguiRGBA(255,255,255,255)); + addGfxCmdRoundedRect((float)(x+m), (float)y, (float)SLIDER_MARKER_WIDTH, (float)SLIDER_HEIGHT, 4.0f, imguiRGBA(255,255,255,255)); else - addGfxCmdRoundedRect(x+m, y, SLIDER_MARKER_WIDTH, SLIDER_HEIGHT, 4, isHot(id) ? imguiRGBA(255,196,0,128) : imguiRGBA(255,255,255,64)); + addGfxCmdRoundedRect((float)(x+m), (float)y, (float)SLIDER_MARKER_WIDTH, (float)SLIDER_HEIGHT, 4.0f, isHot(id) ? imguiRGBA(255,196,0,128) : imguiRGBA(255,255,255,64)); // TODO: fix this, take a look at 'nicenum'. int digits = (int)(ceilf(log10f(vinc))); @@ -651,7 +651,7 @@ void imguiSeparatorLine() int h = 1; g_state.widgetY -= DEFAULT_SPACING*4; - addGfxCmdRect(x, y, w, h, imguiRGBA(255,255,255,32)); + addGfxCmdRect((float)x, (float)y, (float)w, (float)h, imguiRGBA(255,255,255,32)); } void imguiDrawText(int x, int y, int align, const char* text, unsigned int color)