mirror of
https://github.com/mangosfour/server.git
synced 2025-12-18 01:37:01 +00:00
[11902] Import Recast Navigation
Import Recast Navigation as third party dependency Credits go to Mikko Mononen memon at inside dot org
This commit is contained in:
parent
97cb838de1
commit
136c0ba618
399 changed files with 142994 additions and 1 deletions
119
dep/recastnavigation/RecastDemo/Source/ValueHistory.cpp
Normal file
119
dep/recastnavigation/RecastDemo/Source/ValueHistory.cpp
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
#include "ValueHistory.h"
|
||||
#include "imgui.h"
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#ifdef WIN32
|
||||
# define snprintf _snprintf
|
||||
#endif
|
||||
|
||||
ValueHistory::ValueHistory() :
|
||||
m_hsamples(0)
|
||||
{
|
||||
for (int i = 0; i < MAX_HISTORY; ++i)
|
||||
m_samples[i] = 0;
|
||||
}
|
||||
|
||||
ValueHistory::~ValueHistory()
|
||||
{
|
||||
}
|
||||
|
||||
float ValueHistory::getSampleMin() const
|
||||
{
|
||||
float val = m_samples[0];
|
||||
for (int i = 1; i < MAX_HISTORY; ++i)
|
||||
if (m_samples[i] < val)
|
||||
val = m_samples[i];
|
||||
return val;
|
||||
}
|
||||
|
||||
float ValueHistory::getSampleMax() const
|
||||
{
|
||||
float val = m_samples[0];
|
||||
for (int i = 1; i < MAX_HISTORY; ++i)
|
||||
if (m_samples[i] > val)
|
||||
val = m_samples[i];
|
||||
return val;
|
||||
}
|
||||
|
||||
float ValueHistory::getAverage() const
|
||||
{
|
||||
float val = 0;
|
||||
for (int i = 0; i < MAX_HISTORY; ++i)
|
||||
val += m_samples[i];
|
||||
return val/(float)MAX_HISTORY;
|
||||
}
|
||||
|
||||
void GraphParams::setRect(int ix, int iy, int iw, int ih, int ipad)
|
||||
{
|
||||
x = ix;
|
||||
y = iy;
|
||||
w = iw;
|
||||
h = ih;
|
||||
pad = ipad;
|
||||
}
|
||||
|
||||
void GraphParams::setValueRange(float ivmin, float ivmax, int indiv, const char* iunits)
|
||||
{
|
||||
vmin = ivmin;
|
||||
vmax = ivmax;
|
||||
ndiv = indiv;
|
||||
strcpy(units, iunits);
|
||||
}
|
||||
|
||||
void drawGraphBackground(const GraphParams* p)
|
||||
{
|
||||
// BG
|
||||
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;
|
||||
|
||||
char text[64];
|
||||
|
||||
// Divider Lines
|
||||
for (int i = 0; i <= p->ndiv; ++i)
|
||||
{
|
||||
const float u = (float)i/(float)p->ndiv;
|
||||
const float v = p->vmin + (p->vmax-p->vmin)*u;
|
||||
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((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));
|
||||
}
|
||||
}
|
||||
|
||||
void drawGraph(const GraphParams* p, const ValueHistory* graph,
|
||||
int idx, const char* label, const unsigned int col)
|
||||
{
|
||||
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 = (float)p->x + (float)p->pad;
|
||||
const float oy = (float)p->y + (float)p->pad - p->vmin*sy;
|
||||
|
||||
// Values
|
||||
float px=0, py=0;
|
||||
for (int i = 0; i < graph->getSampleCount()-1; ++i)
|
||||
{
|
||||
const float x = ox + i*sx;
|
||||
const float y = oy + graph->getSample(i)*sy;
|
||||
if (i > 0)
|
||||
imguiDrawLine(px,py, x,y, 2.0f, col);
|
||||
px = x;
|
||||
py = y;
|
||||
}
|
||||
|
||||
// Label
|
||||
const int size = 15;
|
||||
const int spacing = 10;
|
||||
int ix = p->x + p->w + 5;
|
||||
int iy = p->y + p->h - (idx+1)*(size+spacing);
|
||||
|
||||
imguiDrawRoundedRect((float)ix, (float)iy, (float)size, (float)size, 2.0f, col);
|
||||
|
||||
char text[64];
|
||||
snprintf(text, 64, "%.2f %s", graph->getAverage(), p->units);
|
||||
imguiDrawText(ix+size+5, iy+3, IMGUI_ALIGN_LEFT, label, imguiRGBA(255,255,255,192));
|
||||
imguiDrawText(ix+size+150, iy+3, IMGUI_ALIGN_RIGHT, text, imguiRGBA(255,255,255,128));
|
||||
}
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue