diff options
author | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
commit | 15740faf9fe9fe4be08965098bbf2947e096aeeb (patch) | |
tree | a730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/NavMesh/NavMeshProfiler.h |
Diffstat (limited to 'Runtime/NavMesh/NavMeshProfiler.h')
-rw-r--r-- | Runtime/NavMesh/NavMeshProfiler.h | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/Runtime/NavMesh/NavMeshProfiler.h b/Runtime/NavMesh/NavMeshProfiler.h new file mode 100644 index 0000000..122b224 --- /dev/null +++ b/Runtime/NavMesh/NavMeshProfiler.h @@ -0,0 +1,71 @@ +#ifndef NAVMESHPROFILER_H +#define NAVMESHPROFILER_H + +#include "Runtime/Profiler/Profiler.h" +#include "DetourContext.h" + +PROFILER_INFORMATION (gCrowdManagerPathFinding, "CrowdManager.PathFinding", kProfilerAI) +PROFILER_INFORMATION (gCrowdManagerPathFollowing, "CrowdManager.PathFollowing", kProfilerAI) +PROFILER_INFORMATION (gCrowdManagerPathFollowingLate, "CrowdManager.PathFollowing.Late", kProfilerAI) +PROFILER_INFORMATION (gCrowdManagerAvoidance, "CrowdManager.Avoidance", kProfilerAI) +PROFILER_INFORMATION (gCrowdManagerAvoidanceSampling, "CrowdManager.Avoidance.Sampling", kProfilerAI) +PROFILER_INFORMATION (gCrowdManagerProximity, "CrowdManager.Proximity", kProfilerAI) +PROFILER_INFORMATION (gCrowdManagerProximityInsert, "CrowdManager.Proximity.Insert", kProfilerAI) +PROFILER_INFORMATION (gCrowdManagerProximityCollect, "CrowdManager.Proximity.Collect", kProfilerAI) +PROFILER_INFORMATION (gCrowdManagerCollision, "CrowdManager.Collision", kProfilerAI) + +class CrowdProfiler : public dtContext +{ +public: + CrowdProfiler () + : dtContext (true) + { + } + virtual ~CrowdProfiler () + { + } + +protected: + virtual void doStartTimer (const dtTimerLabel label) + { + switch (label) + { + case DT_TIMER_UPDATE_PATHFINDING: + PROFILER_BEGIN (gCrowdManagerPathFinding, NULL); + break; + case DT_TIMER_UPDATE_PATHFOLLOWING: + PROFILER_BEGIN (gCrowdManagerPathFollowing, NULL); + break; + case DT_TIMER_UPDATE_PATHFOLLOWING_LATE: + PROFILER_BEGIN (gCrowdManagerPathFollowingLate, NULL); + break; + case DT_TIMER_UPDATE_AVOIDANCE: + PROFILER_BEGIN (gCrowdManagerAvoidance, NULL); + break; + case DT_TIMER_UPDATE_AVOIDANCE_SAMPLING: + PROFILER_BEGIN (gCrowdManagerAvoidanceSampling, NULL); + break; + case DT_TIMER_UPDATE_PROXIMITY: + PROFILER_BEGIN (gCrowdManagerProximity, NULL); + break; + case DT_TIMER_UPDATE_PROXIMITY_INSERT: + PROFILER_BEGIN (gCrowdManagerProximityInsert, NULL); + break; + case DT_TIMER_UPDATE_PROXIMITY_COLLECT: + PROFILER_BEGIN (gCrowdManagerProximityCollect, NULL); + break; + case DT_TIMER_UPDATE_COLLISION: + PROFILER_BEGIN (gCrowdManagerCollision, NULL); + break; + default: + break; + } + } + + virtual void doStopTimer (const dtTimerLabel /*label*/) + { + PROFILER_END + } +}; + +#endif |