Take some debug render code out of main_loop.cpp, see #43
This commit is contained in:
parent
5bd6b5ee7a
commit
1ee82909c3
6 changed files with 601 additions and 495 deletions
|
@ -153,6 +153,7 @@
|
||||||
// pulled from main_loop.cpp
|
// pulled from main_loop.cpp
|
||||||
#include "ping.h"
|
#include "ping.h"
|
||||||
#include "profiling.h"
|
#include "profiling.h"
|
||||||
|
#include "main_loop_debug.h"
|
||||||
|
|
||||||
|
|
||||||
///////////
|
///////////
|
||||||
|
@ -178,7 +179,6 @@ static void viewportToScissor(const CViewport &vp, CScissor &scissor)
|
||||||
////////////
|
////////////
|
||||||
// EXTERN //
|
// EXTERN //
|
||||||
////////////
|
////////////
|
||||||
extern std::set<std::string> LodCharactersNotFound;
|
|
||||||
extern UDriver *Driver;
|
extern UDriver *Driver;
|
||||||
extern IMouseDevice *MouseDevice;
|
extern IMouseDevice *MouseDevice;
|
||||||
extern UScene *Scene;
|
extern UScene *Scene;
|
||||||
|
@ -193,13 +193,16 @@ extern TTime UniversalTime;
|
||||||
extern UMaterial GenericMat;
|
extern UMaterial GenericMat;
|
||||||
extern UCamera MainCam;
|
extern UCamera MainCam;
|
||||||
extern CEventsListener EventsListener;
|
extern CEventsListener EventsListener;
|
||||||
extern uint32 NbDatabaseChanges;
|
|
||||||
extern CMatrix MainSceneViewMatrix;
|
extern CMatrix MainSceneViewMatrix;
|
||||||
extern CMatrix InvMainSceneViewMatrix;
|
extern CMatrix InvMainSceneViewMatrix;
|
||||||
extern std::vector<UTextureFile*> LogoBitmaps;
|
extern std::vector<UTextureFile*> LogoBitmaps;
|
||||||
extern bool IsInRingSession;
|
extern bool IsInRingSession;
|
||||||
extern std::string UsedFSAddr;
|
extern std::string UsedFSAddr;
|
||||||
|
|
||||||
|
// temp
|
||||||
|
extern NLMISC::CValueSmoother smoothFPS;
|
||||||
|
extern NLMISC::CValueSmoother moreSmoothFPS;
|
||||||
|
|
||||||
void loadBackgroundBitmap (TBackground background);
|
void loadBackgroundBitmap (TBackground background);
|
||||||
void destroyLoadingBitmap ();
|
void destroyLoadingBitmap ();
|
||||||
void drawLoadingBitmap (float progress);
|
void drawLoadingBitmap (float progress);
|
||||||
|
@ -301,8 +304,6 @@ CGameContextMenu GameContextMenu;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
NLMISC::CValueSmoother smoothFPS;
|
|
||||||
NLMISC::CValueSmoother moreSmoothFPS(64);
|
|
||||||
|
|
||||||
|
|
||||||
// Profile
|
// Profile
|
||||||
|
@ -344,12 +345,6 @@ H_AUTO_DECL ( RZ_Client_Main_Loop_Net )
|
||||||
///////////////
|
///////////////
|
||||||
// FUNCTIONS //
|
// FUNCTIONS //
|
||||||
///////////////
|
///////////////
|
||||||
// Display some debug infos.
|
|
||||||
void displayDebug();
|
|
||||||
void displayDebugFps();
|
|
||||||
void displayDebugUIUnderMouse();
|
|
||||||
// Display an Help.
|
|
||||||
void displayHelp();
|
|
||||||
|
|
||||||
//update the sound manager (listener pos, user walk/run sound...)
|
//update the sound manager (listener pos, user walk/run sound...)
|
||||||
void updateSound();
|
void updateSound();
|
||||||
|
@ -3056,488 +3051,6 @@ class CHandlerDebugUiDumpElementUnderMouse : public IActionHandler
|
||||||
REGISTER_ACTION_HANDLER( CHandlerDebugUiDumpElementUnderMouse, "debug_ui_inspect_element_under_mouse");
|
REGISTER_ACTION_HANDLER( CHandlerDebugUiDumpElementUnderMouse, "debug_ui_inspect_element_under_mouse");
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------
|
|
||||||
// displayDebug :
|
|
||||||
// Display some debug infos.
|
|
||||||
//---------------------------------------------------
|
|
||||||
void displayDebug()
|
|
||||||
{
|
|
||||||
float lineStep = ClientCfg.DebugLineStep;
|
|
||||||
float line;
|
|
||||||
|
|
||||||
// Initialize Pen //
|
|
||||||
//----------------//
|
|
||||||
// Create a shadow when displaying a text.
|
|
||||||
TextContext->setShaded(true);
|
|
||||||
// Set the font size.
|
|
||||||
TextContext->setFontSize(ClientCfg.DebugFontSize);
|
|
||||||
// Set the text color
|
|
||||||
TextContext->setColor(ClientCfg.DebugFontColor);
|
|
||||||
|
|
||||||
// TOP LEFT //
|
|
||||||
//----------//
|
|
||||||
TextContext->setHotSpot(UTextContext::TopLeft);
|
|
||||||
line = 0.9f;
|
|
||||||
// FPS and Ms per frame
|
|
||||||
{
|
|
||||||
// smooth across frames.
|
|
||||||
double deltaTime = smoothFPS.getSmoothValue ();
|
|
||||||
// FPS and Ms per frame
|
|
||||||
if(deltaTime != 0.f)
|
|
||||||
TextContext->printfAt(0.f, line,"%.1f fps", 1.f/deltaTime);
|
|
||||||
else
|
|
||||||
TextContext->printfAt(0.f, line,"%.1f fps", 0.f);
|
|
||||||
TextContext->printfAt(0.1f, line, "%d ms", (uint)(deltaTime*1000));
|
|
||||||
}
|
|
||||||
line -= lineStep;
|
|
||||||
line -= lineStep;
|
|
||||||
|
|
||||||
// USER
|
|
||||||
// Front
|
|
||||||
TextContext->printfAt(0.0f, line, " %f (%f,%f,%f) front", atan2(UserEntity->front().y, UserEntity->front().x), UserEntity->front().x, UserEntity->front().y, UserEntity->front().z);
|
|
||||||
line -= lineStep;
|
|
||||||
// Dir
|
|
||||||
TextContext->printfAt(0.0f, line, " %f (%f,%f,%f) dir", atan2(UserEntity->dir().y, UserEntity->dir().x), UserEntity->dir().x, UserEntity->dir().y, UserEntity->dir().z);
|
|
||||||
line -= lineStep;
|
|
||||||
// NB Stage
|
|
||||||
TextContext->printfAt(0.0f, line, " NB Stage: %d", UserEntity->nbStage());
|
|
||||||
line -= lineStep;
|
|
||||||
// NB Animation FXs still remaining in the remove list.
|
|
||||||
TextContext->printfAt(0.0f, line, " NB FXs to remove: %d", UserEntity->nbAnimFXToRemove());
|
|
||||||
line -= lineStep;
|
|
||||||
// Mode.
|
|
||||||
TextContext->printfAt(0.0f, line, " Mode: %d (%s)", (sint)UserEntity->mode(), MBEHAV::modeToString(UserEntity->mode()).c_str());
|
|
||||||
line -= lineStep;
|
|
||||||
// Behaviour.
|
|
||||||
TextContext->printfAt(0.0f, line, " Behaviour: %d (%s)", (sint)UserEntity->behaviour(), MBEHAV::behaviourToString(UserEntity->behaviour()).c_str());
|
|
||||||
line -= lineStep;
|
|
||||||
// Display the target mount.
|
|
||||||
TextContext->printfAt(0.0f, line, " Mount: %d", UserEntity->mount());
|
|
||||||
line -= lineStep;
|
|
||||||
// Display the target rider.
|
|
||||||
TextContext->printfAt(0.0f, line, " Rider: %d", UserEntity->rider());
|
|
||||||
line -= lineStep;
|
|
||||||
// Display the current animation name.
|
|
||||||
TextContext->printfAt(0.0f, line, " Current Animation Name: %s", UserEntity->currentAnimationName().c_str());
|
|
||||||
line -= lineStep;
|
|
||||||
// Display the current move animation set name.
|
|
||||||
TextContext->printfAt(0.0f, line, " Current AnimationSet Name (MOVE): %s", UserEntity->currentAnimationSetName(MOVE).c_str());
|
|
||||||
line -= lineStep;
|
|
||||||
// Display Missing Animations
|
|
||||||
if(::CAnimation::MissingAnim.empty() == false)
|
|
||||||
{
|
|
||||||
TextContext->printfAt(0.0f, line, " '%u' Missing Animations, 1st: '%s'", ::CAnimation::MissingAnim.size(), (*(::CAnimation::MissingAnim.begin())).c_str());
|
|
||||||
line -= lineStep;
|
|
||||||
}
|
|
||||||
// Display Missing LoD
|
|
||||||
if(LodCharactersNotFound.empty() == false)
|
|
||||||
{
|
|
||||||
TextContext->printfAt(0.0f, line, " '%u' Missing LoD, 1st: '%s'", LodCharactersNotFound.size(), (*(LodCharactersNotFound.begin())).c_str());
|
|
||||||
line -= lineStep;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Watched Entity
|
|
||||||
line -= lineStep;
|
|
||||||
// Now Displaying the selection.
|
|
||||||
TextContext->printfAt(0.0f, line, "--*** Watched entity ***--");
|
|
||||||
line -= lineStep;
|
|
||||||
// Display information about the debug entity slot.
|
|
||||||
if(WatchedEntitySlot != CLFECOMMON::INVALID_SLOT)
|
|
||||||
{
|
|
||||||
// Get a pointer on the target.
|
|
||||||
CEntityCL *watchedEntity = EntitiesMngr.entity(WatchedEntitySlot);
|
|
||||||
if(watchedEntity)
|
|
||||||
{
|
|
||||||
// Display Debug Information about the Selection.
|
|
||||||
watchedEntity->displayDebug(0.0f, line, -lineStep);
|
|
||||||
|
|
||||||
// Distance of the target
|
|
||||||
CVectorD diffvector = UserEntity->pos() - watchedEntity->pos();
|
|
||||||
TextContext->printfAt(0.0f, line, " Distance: %10.2f (Manhattan: %.2f)", diffvector.norm(), fabs(diffvector.x) + fabs(diffvector.y) );
|
|
||||||
line -= lineStep;
|
|
||||||
}
|
|
||||||
// Target not allocated
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TextContext->printfAt(0.0f, line, "Not allocated (%d)", WatchedEntitySlot);
|
|
||||||
line -= lineStep;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// No Target
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TextContext->printfAt(0.0f, line, "None");
|
|
||||||
line -= lineStep;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Ca rame grave !
|
|
||||||
|
|
||||||
uint nMem = NLMEMORY::GetAllocatedMemory();
|
|
||||||
line -= lineStep;
|
|
||||||
TextContext->printfAt(0.0f, line, "Mem Used: %d",nMem);*/
|
|
||||||
|
|
||||||
// 3D Filters information:
|
|
||||||
#ifdef _PROFILE_ON_
|
|
||||||
line-= lineStep;
|
|
||||||
TextContext->printfAt(0.0f, line, "3D Filters:");
|
|
||||||
line-= lineStep;
|
|
||||||
TextContext->printfAt(0.0f, line, "MeshNoVP: %s", Filter3D[FilterMeshNoVP]?"Ok":"NOT RENDERED!");
|
|
||||||
line-= lineStep;
|
|
||||||
TextContext->printfAt(0.0f, line, "MeshVP: %s", Filter3D[FilterMeshVP]?"Ok":"NOT RENDERED!");
|
|
||||||
line-= lineStep;
|
|
||||||
TextContext->printfAt(0.0f, line, "FXs: %s", Filter3D[FilterFXs]?"Ok":"NOT RENDERED!");
|
|
||||||
line-= lineStep;
|
|
||||||
if (Landscape)
|
|
||||||
{
|
|
||||||
TextContext->printfAt(0.0f, line, "Landscape: %s", Filter3D[FilterLandscape]?"Ok":"NOT RENDERED!");
|
|
||||||
line-= lineStep;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TextContext->printfAt(0.0f, line, "Landscape not enabled");
|
|
||||||
}
|
|
||||||
TextContext->printfAt(0.0f, line, "Vegetable: %s", Filter3D[FilterVegetable]?"Ok":"NOT RENDERED!");
|
|
||||||
line-= lineStep;
|
|
||||||
TextContext->printfAt(0.0f, line, "Skeleton: %s", Filter3D[FilterSkeleton]?"Ok":"NOT RENDERED!");
|
|
||||||
line-= lineStep;
|
|
||||||
TextContext->printfAt(0.0f, line, "Water: %s", Filter3D[FilterWater]?"Ok":"NOT RENDERED!");
|
|
||||||
line-= lineStep;
|
|
||||||
TextContext->printfAt(0.0f, line, "Cloud: %s", Filter3D[FilterCloud]?"Ok":"NOT RENDERED!");
|
|
||||||
line-= lineStep;
|
|
||||||
TextContext->printfAt(0.0f, line, "CoarseMesh: %s", Filter3D[FilterCoarseMesh]?"Ok":"NOT RENDERED!");
|
|
||||||
line-= lineStep;
|
|
||||||
TextContext->printfAt(0.0f, line, "Sky: %s", Filter3D[FilterSky]?"Ok":"NOT RENDERED!");
|
|
||||||
line-= lineStep;
|
|
||||||
// Materials Infos
|
|
||||||
TextContext->printfAt(0.0f, line, "SetupedMatrix: %d", Driver->profileSetupedModelMatrix() );
|
|
||||||
line-= lineStep;
|
|
||||||
TextContext->printfAt(0.0f, line, "SetupedMaterials: %d", Driver->profileSetupedMaterials() );
|
|
||||||
line-= lineStep;
|
|
||||||
// Display camera cluster system
|
|
||||||
TextContext->printfAt(0.0f, line, "ClusterSystem: %p", MainCam.getClusterSystem() );
|
|
||||||
line-= 2 * lineStep;
|
|
||||||
// Lua stuffs
|
|
||||||
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
|
||||||
TextContext->printfAt(0.0f, line, "Lua mem (kb) : %d / %d", CLuaManager::getInstance().getLuaState()->getGCCount(), CLuaManager::getInstance().getLuaState()->getGCThreshold());
|
|
||||||
line-= lineStep;
|
|
||||||
TextContext->printfAt(0.0f, line, "Lua stack size = %d", CLuaManager::getInstance().getLuaState()->getTop());
|
|
||||||
line-= lineStep;
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// TOP LEFT //
|
|
||||||
//-----------//
|
|
||||||
TextContext->setHotSpot(UTextContext::TopLeft);
|
|
||||||
line = 1.f;
|
|
||||||
string str;
|
|
||||||
#if FINAL_VERSION
|
|
||||||
str = "FV";
|
|
||||||
#else
|
|
||||||
str = "DEV";
|
|
||||||
#endif
|
|
||||||
if(ClientCfg.ExtendedCommands)
|
|
||||||
str += "_E";
|
|
||||||
str += " "RYZOM_VERSION;
|
|
||||||
TextContext->printfAt(0.f, line, "Version %s", str.c_str());
|
|
||||||
|
|
||||||
// TOP MIDDLE //
|
|
||||||
//------------//
|
|
||||||
TextContext->setHotSpot(UTextContext::MiddleTop);
|
|
||||||
line = 1.f;
|
|
||||||
// Motion Mode
|
|
||||||
TextContext->printfAt(0.5f, line, "%s", UserControls.modeStr().c_str());
|
|
||||||
line -= lineStep;
|
|
||||||
|
|
||||||
// TOP RIGHT //
|
|
||||||
//-----------//
|
|
||||||
TextContext->setHotSpot(UTextContext::TopRight);
|
|
||||||
line = 1.f;
|
|
||||||
//// 3D Infos
|
|
||||||
// Video mem allocated.
|
|
||||||
TextContext->printfAt(1.f, line, "Video mem. : %f", Driver->profileAllocatedTextureMemory()/(1024.f*1024.f));
|
|
||||||
line -= lineStep;
|
|
||||||
// Video mem used since last swapBuffers().
|
|
||||||
TextContext->printfAt(1.f, line, "Video mem. since last swap buffer: %f", Driver->getUsedTextureMemory()/(1024.f*1024.f));
|
|
||||||
line -= lineStep;
|
|
||||||
// Get the last face count asked from the main scene before reduction.
|
|
||||||
TextContext->printfAt(1.f, line, "Nb Skin Face Asked: %f", Scene->getGroupNbFaceAsked("Skin"));
|
|
||||||
line -= lineStep;
|
|
||||||
TextContext->printfAt(1.f, line, "Nb Fx Face Asked: %f", Scene->getGroupNbFaceAsked("Fx"));
|
|
||||||
line -= lineStep;
|
|
||||||
// All Triangles In
|
|
||||||
CPrimitiveProfile pIn;
|
|
||||||
CPrimitiveProfile pOut;
|
|
||||||
Driver->profileRenderedPrimitives(pIn, pOut);
|
|
||||||
TextContext->printfAt(1.f, line, "Tri In : %d", pIn.NTriangles+2*pIn.NQuads);
|
|
||||||
line -= lineStep;
|
|
||||||
// All Triangles Out
|
|
||||||
TextContext->printfAt(1.f, line, "Tri Out : %d", pOut.NTriangles+2*pIn.NQuads);
|
|
||||||
line -= lineStep;
|
|
||||||
// Current Cluster
|
|
||||||
string strPos;
|
|
||||||
// Check there is a PACS Primitive before using it.
|
|
||||||
if(UserEntity->getPrimitive() && GR)
|
|
||||||
{
|
|
||||||
UGlobalPosition gPos;
|
|
||||||
UserEntity->getPrimitive()->getGlobalPosition(gPos, dynamicWI);
|
|
||||||
string strPos = GR->getIdentifier(gPos);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
strPos = "No Primitive";
|
|
||||||
TextContext->printfAt(1.f, line, "Cluster : %s", strPos.c_str());
|
|
||||||
line -= lineStep;
|
|
||||||
//// SOUND Infos
|
|
||||||
line -= lineStep;
|
|
||||||
if(SoundMngr)
|
|
||||||
{
|
|
||||||
TextContext->printfAt(1.f, line, "Sound source instance: %u", SoundMngr->getSourcesInstanceCount());
|
|
||||||
line -= lineStep;
|
|
||||||
TextContext->printfAt(1.f, line, "Logical playing SoundSource: %u", SoundMngr->getMixer()->getPlayingSourcesCount ());
|
|
||||||
line -= lineStep;
|
|
||||||
TextContext->printfAt(1.f, line, "Audio tracks: %u/%u", SoundMngr->getMixer()->getUsedTracksCount(), SoundMngr->getMixer()->getPolyphony());
|
|
||||||
line -= lineStep;
|
|
||||||
if (SoundMngr->getMixer()->getMutedPlayingSourcesCount() > 0)
|
|
||||||
{
|
|
||||||
TextContext->printfAt(1.f, line, "Source muted: %u !", SoundMngr->getMixer()->getMutedPlayingSourcesCount());
|
|
||||||
line -= lineStep;
|
|
||||||
}
|
|
||||||
TextContext->printfAt(1.f, line, "Samples in memory: %g MB", SoundMngr->getLoadingSamplesSize() / (1024.0f*1024.0f));
|
|
||||||
line -= lineStep;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
// BOTTOM RIGHT //
|
|
||||||
//--------------//
|
|
||||||
TextContext->setHotSpot(UTextContext::BottomRight);
|
|
||||||
line = 0.f;
|
|
||||||
//// POSITION
|
|
||||||
CVector postmp = View.viewPos();
|
|
||||||
// Pos
|
|
||||||
TextContext->printfAt(1.f, line, "Position : %d %d %d",(int)postmp.x,(int)postmp.y,(int)postmp.z);
|
|
||||||
line += lineStep;
|
|
||||||
// Body Heading
|
|
||||||
TextContext->printfAt(1.f, line, "Front : %.2f %.2f %.2f", UserEntity->front().x, UserEntity->front().y, UserEntity->front().z);
|
|
||||||
line += lineStep;
|
|
||||||
// Speed
|
|
||||||
TextContext->printfAt(1.f, line, "Speed : %.2f", (float) UserEntity->speed());
|
|
||||||
line += lineStep;
|
|
||||||
// Zone
|
|
||||||
if (!ClientCfg.Light)
|
|
||||||
{
|
|
||||||
if (Landscape)
|
|
||||||
{
|
|
||||||
TextContext->printfAt(1.f, line, "Zone: %s", Landscape->getZoneName(postmp).c_str());
|
|
||||||
line += lineStep;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Prim File
|
|
||||||
string primFile = PrimFiles.getCurrentPrimitive ();
|
|
||||||
if (!primFile.empty ())
|
|
||||||
{
|
|
||||||
TextContext->printfAt(1.f, line, "Prim File: %s", primFile.c_str ());
|
|
||||||
line += lineStep;
|
|
||||||
}
|
|
||||||
|
|
||||||
//// CONNECTION
|
|
||||||
line += lineStep;
|
|
||||||
// Ryzom Day.
|
|
||||||
TextContext->printfAt(1.f, line, "Ryzom Day : %d", RT.getRyzomDay());
|
|
||||||
line += lineStep;
|
|
||||||
// hour in the game
|
|
||||||
float dayNightCycleHour = (float)RT.getRyzomTime();
|
|
||||||
TextContext->printfAt(1.f, line, "Ryzom Time : %2u:%02u", int(dayNightCycleHour), int((dayNightCycleHour-int(dayNightCycleHour))*60.0f));
|
|
||||||
line += lineStep;
|
|
||||||
// light hour in the game, used to display te day/night
|
|
||||||
TextContext->printfAt(1.f, line, "Ryzom Light Time : %2u:%02u (%s)", int(DayNightCycleHour), int((DayNightCycleHour-int(DayNightCycleHour))*60.0f), LightCycleManager.getStateString().c_str());
|
|
||||||
line += lineStep;
|
|
||||||
// Server GameCycle
|
|
||||||
TextContext->printfAt(1.f, line, "Server GameCycle : %u", (uint)NetMngr.getCurrentServerTick());
|
|
||||||
line += lineStep;
|
|
||||||
// Current GameCycle
|
|
||||||
TextContext->printfAt(1.f, line, "Current GameCycle : %u", (uint)NetMngr.getCurrentClientTick());
|
|
||||||
line += lineStep;
|
|
||||||
// Current GameCycle
|
|
||||||
TextContext->printfAt(1.f, line, "Ms per Cycle : %d", NetMngr.getMsPerTick());
|
|
||||||
line += lineStep;
|
|
||||||
// Packet Loss
|
|
||||||
TextContext->printfAt(1.f, line, "Packet Loss : %.1f %%", NetMngr.getMeanPacketLoss()*100.0f);
|
|
||||||
line += lineStep;
|
|
||||||
// Packet Loss
|
|
||||||
TextContext->printfAt(1.f, line, "Packets Lost : %u", NetMngr.getTotalLostPackets());
|
|
||||||
line += lineStep;
|
|
||||||
// Mean Upload
|
|
||||||
TextContext->printfAt(1.f, line, "Mean Upld : %.3f kbps", NetMngr.getMeanUpload());
|
|
||||||
line += lineStep;
|
|
||||||
// Mean Download
|
|
||||||
TextContext->printfAt(1.f, line, "Mean Dnld : %.3f kbps", NetMngr.getMeanDownload());
|
|
||||||
line += lineStep;
|
|
||||||
|
|
||||||
// Mean Download
|
|
||||||
TextContext->printfAt(1.f, line, "Nb in Vision : %d(%d,%d,%d)",
|
|
||||||
EntitiesMngr.nbEntitiesAllocated(),
|
|
||||||
EntitiesMngr.nbUser(),
|
|
||||||
EntitiesMngr.nbPlayer(),
|
|
||||||
EntitiesMngr.nbChar());
|
|
||||||
line += lineStep;
|
|
||||||
|
|
||||||
// Number of database changes
|
|
||||||
TextContext->printfAt(1.f, line, "DB Changes : %u", NbDatabaseChanges );
|
|
||||||
line += lineStep;
|
|
||||||
|
|
||||||
// Ping
|
|
||||||
TextContext->printfAt(1.f, line, "DB Ping : %u ms", Ping.getValue());
|
|
||||||
line += lineStep;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Manual weather setup
|
|
||||||
{
|
|
||||||
if(ContinentMngr.cur()) // Only usable if there is a continent loaded.
|
|
||||||
{
|
|
||||||
if (!ForceTrueWeatherValue)
|
|
||||||
{
|
|
||||||
const CWeatherFunction &wf = ContinentMngr.cur()->WeatherFunction[CurrSeason];
|
|
||||||
float wv;
|
|
||||||
if (ClientCfg.ManualWeatherSetup)
|
|
||||||
{
|
|
||||||
wv = std::max(wf.getNumWeatherSetups() - 1, 0u) * ManualWeatherValue;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
wv = std::max(wf.getNumWeatherSetups() - 1, 0u) * ::getBlendedWeather(RT.getRyzomDay(), RT.getRyzomTime(), *WeatherFunctionParams, ContinentMngr.cur()->WeatherFunction);
|
|
||||||
}
|
|
||||||
const CWeatherSetup *ws = wf.getWeatherSetup((uint) floorf(wv));
|
|
||||||
std::string name0 = ws ? NLMISC::CStringMapper::unmap(ws->SetupName) : "???";
|
|
||||||
ws = wf.getWeatherSetup(std::min((uint) (floorf(wv) + 1), wf.getNumWeatherSetups() - 1));
|
|
||||||
std::string name1 = ws ? NLMISC::CStringMapper::unmap(ws->SetupName) : "???";
|
|
||||||
TextContext->printfAt(1.f, line, "Weather value : %.02f : %s -> %s", ws ? wv : 0.f, name0.c_str(), name1.c_str());
|
|
||||||
line += lineStep;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TextContext->printfAt(1.f, line, "Weather value : %.02f", WeatherManager.getWeatherValue() * std::max(ContinentMngr.cur()->WeatherFunction[CurrSeason].getNumWeatherSetups() - 1, 0u));
|
|
||||||
line += lineStep;
|
|
||||||
TextContext->printfAt(1.f, line, "TEST WEATHER FUNCTION");
|
|
||||||
line += lineStep;
|
|
||||||
}
|
|
||||||
// season
|
|
||||||
TextContext->printfAt(1.f, line, "Season : %s", EGSPD::CSeason::toString(CurrSeason).c_str());
|
|
||||||
line += lineStep;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// fog dist
|
|
||||||
if (ContinentMngr.cur())
|
|
||||||
{
|
|
||||||
TextContext->printfAt(1.f, line, "Continent fog min near = %.1f, max far = %.1f", ContinentMngr.cur()->FogStart, ContinentMngr.cur()->FogEnd);
|
|
||||||
line += lineStep;
|
|
||||||
CFogState tmpFog;
|
|
||||||
ContinentMngr.getFogState(MainFog, LightCycleManager.getLightLevel(), LightCycleManager.getLightDesc().DuskRatio, LightCycleManager.getState(), View.viewPos(), tmpFog);
|
|
||||||
TextContext->printfAt(1.f, line, "Continent fog curr near = %.1f, curr far = %.1f", tmpFog.FogStartDist, tmpFog.FogEndDist);
|
|
||||||
line += lineStep;
|
|
||||||
}
|
|
||||||
const CWeatherState &ws = WeatherManager.getCurrWeatherState();
|
|
||||||
TextContext->printfAt(1.f, line, "Weather fog near = %.1f, far = %.1f", ws.FogNear[MainFog], ws.FogFar[MainFog]);
|
|
||||||
line += lineStep;
|
|
||||||
TextContext->printfAt(1.f, line, "Final fog near = %.1f, far = %.1f", MainFogState.FogStartDist, MainFogState.FogEndDist);
|
|
||||||
line += lineStep;
|
|
||||||
float left, right, bottom, top, znear, zfar;
|
|
||||||
Scene->getCam().getFrustum(left, right, bottom, top, znear, zfar);
|
|
||||||
TextContext->printfAt(1.f, line, "Clip near = %.1f, far = %.1f", znear, zfar);
|
|
||||||
line += lineStep;
|
|
||||||
|
|
||||||
// Connection states
|
|
||||||
TextContext->printfAt(1.f, line, "State : %s", NetMngr.getConnectionStateCStr() );
|
|
||||||
line += lineStep;
|
|
||||||
|
|
||||||
// UGlobalPosition globalPos;
|
|
||||||
// UserEntity->getPrimitive()->getGlobalPosition(globalPos, dynamicWI);
|
|
||||||
// uint32 material = GR->getMaterial( globalPos );
|
|
||||||
// TextContext->printfAt(0.5f,0.5f,"Material : %d Gpos=(inst=%d,surf=%d,x=%.2f,y=%.2f",material, globalPos.InstanceId, globalPos.LocalPosition.Surface, globalPos.LocalPosition.Estimation.x, globalPos.LocalPosition.Estimation.y);
|
|
||||||
|
|
||||||
// No more shadow when displaying a text.
|
|
||||||
TextContext->setShaded(false);
|
|
||||||
}// displayDebug //
|
|
||||||
|
|
||||||
//-----------------------------------------------
|
|
||||||
// Macro to Display a Text
|
|
||||||
//-----------------------------------------------
|
|
||||||
#define DISP_TEXT(x, text) \
|
|
||||||
/* Display the text at the right place */ \
|
|
||||||
TextContext->printfAt(x, line, text); \
|
|
||||||
/* Change the line */ \
|
|
||||||
line += lineStep; \
|
|
||||||
|
|
||||||
//---------------------------------------------------
|
|
||||||
// displayHelp :
|
|
||||||
// Display an Help.
|
|
||||||
//---------------------------------------------------
|
|
||||||
void displayHelp()
|
|
||||||
{
|
|
||||||
float line = 1.f;
|
|
||||||
float lineStep = -ClientCfg.HelpLineStep;
|
|
||||||
|
|
||||||
// Create a shadow when displaying a text.
|
|
||||||
TextContext->setShaded(true);
|
|
||||||
// Set the font size.
|
|
||||||
TextContext->setFontSize(ClientCfg.HelpFontSize);
|
|
||||||
// Set the text color
|
|
||||||
TextContext->setColor(ClientCfg.HelpFontColor);
|
|
||||||
|
|
||||||
|
|
||||||
line = 1.f;
|
|
||||||
TextContext->setHotSpot(UTextContext::TopLeft);
|
|
||||||
DISP_TEXT(0.0f, "SHIFT + F1 : This Menu")
|
|
||||||
DISP_TEXT(0.0f, "SHIFT + F2 : Display Debug Infos")
|
|
||||||
DISP_TEXT(0.0f, "SHIFT + F3 : Wire mode");
|
|
||||||
DISP_TEXT(0.0f, "SHIFT + F4 : Do not Render the Scene");
|
|
||||||
DISP_TEXT(0.0f, "SHIFT + F5 : Toogle Display OSD interfaces");
|
|
||||||
// DISP_TEXT(0.0f, "SHIFT + F6 : Not used");
|
|
||||||
DISP_TEXT(0.0f, "SHIFT + F7 : Compass Mode (User/Camera)");
|
|
||||||
DISP_TEXT(0.0f, "SHIFT + F8 : Camera Mode (INSERT to change your position)");
|
|
||||||
DISP_TEXT(0.0f, "SHIFT + F9 : Free Mouse");
|
|
||||||
DISP_TEXT(0.0f, "SHIFT + F10 : Take a Screen Shot (+CTRL) for jpg");
|
|
||||||
// DISP_TEXT(0.0f, "SHIFT + F11 : Test");
|
|
||||||
DISP_TEXT(0.0f, "SHIFT + ESCAPE : Quit");
|
|
||||||
DISP_TEXT(0.0f, "SHIFT + C : First/Third Person View");
|
|
||||||
|
|
||||||
line = 1.f;
|
|
||||||
TextContext->setHotSpot(UTextContext::TopRight);
|
|
||||||
DISP_TEXT(1.0f, "UP : FORWARD");
|
|
||||||
DISP_TEXT(1.0f, "DOWN : BACKWARD");
|
|
||||||
DISP_TEXT(1.0f, "LEFT : ROTATE LEFT");
|
|
||||||
DISP_TEXT(1.0f, "RIGHT : ROTATE RIGHT");
|
|
||||||
DISP_TEXT(1.0f, "CTRL + LEFT : STRAFE LEFT");
|
|
||||||
DISP_TEXT(1.0f, "CTRL + RIGHT : STRAFE RIGHT");
|
|
||||||
DISP_TEXT(1.0f, "END : Auto Walk");
|
|
||||||
DISP_TEXT(1.0f, "DELETE : Walk/Run");
|
|
||||||
DISP_TEXT(1.0f, "PG UP : Look Up");
|
|
||||||
DISP_TEXT(1.0f, "PG DOWN : Look Down");
|
|
||||||
// DISP_TEXT(1.0f, "CTRL + I : Inventory");
|
|
||||||
// DISP_TEXT(1.0f, "CTRL + C : Spells composition interface");
|
|
||||||
// DISP_TEXT(1.0f, "CTRL + S : Memorized Spells interface");
|
|
||||||
DISP_TEXT(1.0f, "CTRL + B : Show/Hide PACS Borders");
|
|
||||||
DISP_TEXT(1.0f, "CTRL + P : Player target himself");
|
|
||||||
DISP_TEXT(1.0f, "CTRL + D : Unselect target");
|
|
||||||
DISP_TEXT(1.0f, "CTRL + TAB : Next Chat Mode (say/shout");
|
|
||||||
DISP_TEXT(1.0f, "CTRL + R : Reload Client.cfg File");
|
|
||||||
// DISP_TEXT(1.0f, "CTRL + N : Toggle Night / Day lighting");
|
|
||||||
DISP_TEXT(1.0f, "CTRL + F2 : Profile on / off");
|
|
||||||
DISP_TEXT(1.0f, "CTRL + F3 : Movie Shooter record / stop");
|
|
||||||
DISP_TEXT(1.0f, "CTRL + F4 : Movie Shooter replay");
|
|
||||||
DISP_TEXT(1.0f, "CTRL + F5 : Movie Shooter save");
|
|
||||||
#ifndef NL_USE_DEFAULT_MEMORY_MANAGER
|
|
||||||
DISP_TEXT(1.0f, "CTRL + F6 : Save memory stat report");
|
|
||||||
#endif // NL_USE_DEFAULT_MEMORY_MANAGER
|
|
||||||
DISP_TEXT(1.0f, "CTRL + F7 : Show / hide prim file");
|
|
||||||
DISP_TEXT(1.0f, "CTRL + F8 : Change prim file UP");
|
|
||||||
DISP_TEXT(1.0f, "CTRL + F9 : Change prim file DOWN");
|
|
||||||
|
|
||||||
// No more shadow when displaying a text.
|
|
||||||
TextContext->setShaded(false);
|
|
||||||
}// displayHelp //
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------
|
//---------------------------------------------------
|
||||||
|
|
560
code/ryzom/client/src/main_loop_debug.cpp
Normal file
560
code/ryzom/client/src/main_loop_debug.cpp
Normal file
|
@ -0,0 +1,560 @@
|
||||||
|
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||||
|
// Copyright (C) 2010 Winch Gate Property Limited
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Affero General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Affero General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#include <nel/misc/types_nl.h>
|
||||||
|
#include "main_loop_debug.h"
|
||||||
|
|
||||||
|
#include <nel/3d/u_text_context.h>
|
||||||
|
|
||||||
|
#include "game_share/ryzom_version.h"
|
||||||
|
|
||||||
|
#include "global.h"
|
||||||
|
#include "client_cfg.h"
|
||||||
|
#include "user_entity.h"
|
||||||
|
#include "debug_client.h"
|
||||||
|
#include "entities.h"
|
||||||
|
#include "motion/user_controls.h"
|
||||||
|
#include "pacs_client.h"
|
||||||
|
#include "sound_manager.h"
|
||||||
|
#include "view.h"
|
||||||
|
#include "prim_file.h"
|
||||||
|
#include "weather.h"
|
||||||
|
#include "light_cycle_manager.h"
|
||||||
|
#include "net_manager.h"
|
||||||
|
#include "ping.h"
|
||||||
|
#include "world_database_manager.h"
|
||||||
|
#include "continent_manager.h"
|
||||||
|
#include "client_sheets/weather_function_params_sheet.h"
|
||||||
|
#include "weather_manager_client.h"
|
||||||
|
#include "fog_map.h"
|
||||||
|
|
||||||
|
using namespace NLMISC;
|
||||||
|
using namespace NL3D;
|
||||||
|
|
||||||
|
// ********************************************************************
|
||||||
|
// ********************************************************************
|
||||||
|
// ********************************************************************
|
||||||
|
// ********************************************************************
|
||||||
|
// ********************************************************************
|
||||||
|
|
||||||
|
extern std::set<std::string> LodCharactersNotFound;
|
||||||
|
extern uint32 NbDatabaseChanges;
|
||||||
|
extern CFogState MainFogState;
|
||||||
|
extern CPing Ping;
|
||||||
|
|
||||||
|
//namespace /* anonymous */ {
|
||||||
|
|
||||||
|
NLMISC::CValueSmoother smoothFPS;
|
||||||
|
NLMISC::CValueSmoother moreSmoothFPS(64);
|
||||||
|
|
||||||
|
//} /* anonymous namespace */
|
||||||
|
|
||||||
|
//---------------------------------------------------
|
||||||
|
// displayDebug :
|
||||||
|
// Display some debug infos.
|
||||||
|
//---------------------------------------------------
|
||||||
|
void displayDebug()
|
||||||
|
{
|
||||||
|
float lineStep = ClientCfg.DebugLineStep;
|
||||||
|
float line;
|
||||||
|
|
||||||
|
// Initialize Pen //
|
||||||
|
//----------------//
|
||||||
|
// Create a shadow when displaying a text.
|
||||||
|
TextContext->setShaded(true);
|
||||||
|
// Set the font size.
|
||||||
|
TextContext->setFontSize(ClientCfg.DebugFontSize);
|
||||||
|
// Set the text color
|
||||||
|
TextContext->setColor(ClientCfg.DebugFontColor);
|
||||||
|
|
||||||
|
// TOP LEFT //
|
||||||
|
//----------//
|
||||||
|
TextContext->setHotSpot(UTextContext::TopLeft);
|
||||||
|
line = 0.9f;
|
||||||
|
// FPS and Ms per frame
|
||||||
|
{
|
||||||
|
// smooth across frames.
|
||||||
|
double deltaTime = smoothFPS.getSmoothValue ();
|
||||||
|
// FPS and Ms per frame
|
||||||
|
if(deltaTime != 0.f)
|
||||||
|
TextContext->printfAt(0.f, line,"%.1f fps", 1.f/deltaTime);
|
||||||
|
else
|
||||||
|
TextContext->printfAt(0.f, line,"%.1f fps", 0.f);
|
||||||
|
TextContext->printfAt(0.1f, line, "%d ms", (uint)(deltaTime*1000));
|
||||||
|
}
|
||||||
|
line -= lineStep;
|
||||||
|
line -= lineStep;
|
||||||
|
|
||||||
|
// USER
|
||||||
|
// Front
|
||||||
|
TextContext->printfAt(0.0f, line, " %f (%f,%f,%f) front", atan2(UserEntity->front().y, UserEntity->front().x), UserEntity->front().x, UserEntity->front().y, UserEntity->front().z);
|
||||||
|
line -= lineStep;
|
||||||
|
// Dir
|
||||||
|
TextContext->printfAt(0.0f, line, " %f (%f,%f,%f) dir", atan2(UserEntity->dir().y, UserEntity->dir().x), UserEntity->dir().x, UserEntity->dir().y, UserEntity->dir().z);
|
||||||
|
line -= lineStep;
|
||||||
|
// NB Stage
|
||||||
|
TextContext->printfAt(0.0f, line, " NB Stage: %d", UserEntity->nbStage());
|
||||||
|
line -= lineStep;
|
||||||
|
// NB Animation FXs still remaining in the remove list.
|
||||||
|
TextContext->printfAt(0.0f, line, " NB FXs to remove: %d", UserEntity->nbAnimFXToRemove());
|
||||||
|
line -= lineStep;
|
||||||
|
// Mode.
|
||||||
|
TextContext->printfAt(0.0f, line, " Mode: %d (%s)", (sint)UserEntity->mode(), MBEHAV::modeToString(UserEntity->mode()).c_str());
|
||||||
|
line -= lineStep;
|
||||||
|
// Behaviour.
|
||||||
|
TextContext->printfAt(0.0f, line, " Behaviour: %d (%s)", (sint)UserEntity->behaviour(), MBEHAV::behaviourToString(UserEntity->behaviour()).c_str());
|
||||||
|
line -= lineStep;
|
||||||
|
// Display the target mount.
|
||||||
|
TextContext->printfAt(0.0f, line, " Mount: %d", UserEntity->mount());
|
||||||
|
line -= lineStep;
|
||||||
|
// Display the target rider.
|
||||||
|
TextContext->printfAt(0.0f, line, " Rider: %d", UserEntity->rider());
|
||||||
|
line -= lineStep;
|
||||||
|
// Display the current animation name.
|
||||||
|
TextContext->printfAt(0.0f, line, " Current Animation Name: %s", UserEntity->currentAnimationName().c_str());
|
||||||
|
line -= lineStep;
|
||||||
|
// Display the current move animation set name.
|
||||||
|
TextContext->printfAt(0.0f, line, " Current AnimationSet Name (MOVE): %s", UserEntity->currentAnimationSetName(MOVE).c_str());
|
||||||
|
line -= lineStep;
|
||||||
|
// Display Missing Animations
|
||||||
|
if(::CAnimation::MissingAnim.empty() == false)
|
||||||
|
{
|
||||||
|
TextContext->printfAt(0.0f, line, " '%u' Missing Animations, 1st: '%s'", ::CAnimation::MissingAnim.size(), (*(::CAnimation::MissingAnim.begin())).c_str());
|
||||||
|
line -= lineStep;
|
||||||
|
}
|
||||||
|
// Display Missing LoD
|
||||||
|
if(LodCharactersNotFound.empty() == false)
|
||||||
|
{
|
||||||
|
TextContext->printfAt(0.0f, line, " '%u' Missing LoD, 1st: '%s'", LodCharactersNotFound.size(), (*(LodCharactersNotFound.begin())).c_str());
|
||||||
|
line -= lineStep;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Watched Entity
|
||||||
|
line -= lineStep;
|
||||||
|
// Now Displaying the selection.
|
||||||
|
TextContext->printfAt(0.0f, line, "--*** Watched entity ***--");
|
||||||
|
line -= lineStep;
|
||||||
|
// Display information about the debug entity slot.
|
||||||
|
if(WatchedEntitySlot != CLFECOMMON::INVALID_SLOT)
|
||||||
|
{
|
||||||
|
// Get a pointer on the target.
|
||||||
|
CEntityCL *watchedEntity = EntitiesMngr.entity(WatchedEntitySlot);
|
||||||
|
if(watchedEntity)
|
||||||
|
{
|
||||||
|
// Display Debug Information about the Selection.
|
||||||
|
watchedEntity->displayDebug(0.0f, line, -lineStep);
|
||||||
|
|
||||||
|
// Distance of the target
|
||||||
|
CVectorD diffvector = UserEntity->pos() - watchedEntity->pos();
|
||||||
|
TextContext->printfAt(0.0f, line, " Distance: %10.2f (Manhattan: %.2f)", diffvector.norm(), fabs(diffvector.x) + fabs(diffvector.y) );
|
||||||
|
line -= lineStep;
|
||||||
|
}
|
||||||
|
// Target not allocated
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TextContext->printfAt(0.0f, line, "Not allocated (%d)", WatchedEntitySlot);
|
||||||
|
line -= lineStep;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// No Target
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TextContext->printfAt(0.0f, line, "None");
|
||||||
|
line -= lineStep;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Ca rame grave !
|
||||||
|
|
||||||
|
uint nMem = NLMEMORY::GetAllocatedMemory();
|
||||||
|
line -= lineStep;
|
||||||
|
TextContext->printfAt(0.0f, line, "Mem Used: %d",nMem);*/
|
||||||
|
|
||||||
|
// 3D Filters information:
|
||||||
|
#ifdef _PROFILE_ON_
|
||||||
|
line-= lineStep;
|
||||||
|
TextContext->printfAt(0.0f, line, "3D Filters:");
|
||||||
|
line-= lineStep;
|
||||||
|
TextContext->printfAt(0.0f, line, "MeshNoVP: %s", Filter3D[FilterMeshNoVP]?"Ok":"NOT RENDERED!");
|
||||||
|
line-= lineStep;
|
||||||
|
TextContext->printfAt(0.0f, line, "MeshVP: %s", Filter3D[FilterMeshVP]?"Ok":"NOT RENDERED!");
|
||||||
|
line-= lineStep;
|
||||||
|
TextContext->printfAt(0.0f, line, "FXs: %s", Filter3D[FilterFXs]?"Ok":"NOT RENDERED!");
|
||||||
|
line-= lineStep;
|
||||||
|
if (Landscape)
|
||||||
|
{
|
||||||
|
TextContext->printfAt(0.0f, line, "Landscape: %s", Filter3D[FilterLandscape]?"Ok":"NOT RENDERED!");
|
||||||
|
line-= lineStep;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TextContext->printfAt(0.0f, line, "Landscape not enabled");
|
||||||
|
}
|
||||||
|
TextContext->printfAt(0.0f, line, "Vegetable: %s", Filter3D[FilterVegetable]?"Ok":"NOT RENDERED!");
|
||||||
|
line-= lineStep;
|
||||||
|
TextContext->printfAt(0.0f, line, "Skeleton: %s", Filter3D[FilterSkeleton]?"Ok":"NOT RENDERED!");
|
||||||
|
line-= lineStep;
|
||||||
|
TextContext->printfAt(0.0f, line, "Water: %s", Filter3D[FilterWater]?"Ok":"NOT RENDERED!");
|
||||||
|
line-= lineStep;
|
||||||
|
TextContext->printfAt(0.0f, line, "Cloud: %s", Filter3D[FilterCloud]?"Ok":"NOT RENDERED!");
|
||||||
|
line-= lineStep;
|
||||||
|
TextContext->printfAt(0.0f, line, "CoarseMesh: %s", Filter3D[FilterCoarseMesh]?"Ok":"NOT RENDERED!");
|
||||||
|
line-= lineStep;
|
||||||
|
TextContext->printfAt(0.0f, line, "Sky: %s", Filter3D[FilterSky]?"Ok":"NOT RENDERED!");
|
||||||
|
line-= lineStep;
|
||||||
|
// Materials Infos
|
||||||
|
TextContext->printfAt(0.0f, line, "SetupedMatrix: %d", Driver->profileSetupedModelMatrix() );
|
||||||
|
line-= lineStep;
|
||||||
|
TextContext->printfAt(0.0f, line, "SetupedMaterials: %d", Driver->profileSetupedMaterials() );
|
||||||
|
line-= lineStep;
|
||||||
|
// Display camera cluster system
|
||||||
|
TextContext->printfAt(0.0f, line, "ClusterSystem: %p", MainCam.getClusterSystem() );
|
||||||
|
line-= 2 * lineStep;
|
||||||
|
// Lua stuffs
|
||||||
|
CInterfaceManager *pIM = CInterfaceManager::getInstance();
|
||||||
|
TextContext->printfAt(0.0f, line, "Lua mem (kb) : %d / %d", CLuaManager::getInstance().getLuaState()->getGCCount(), CLuaManager::getInstance().getLuaState()->getGCThreshold());
|
||||||
|
line-= lineStep;
|
||||||
|
TextContext->printfAt(0.0f, line, "Lua stack size = %d", CLuaManager::getInstance().getLuaState()->getTop());
|
||||||
|
line-= lineStep;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// TOP LEFT //
|
||||||
|
//-----------//
|
||||||
|
TextContext->setHotSpot(UTextContext::TopLeft);
|
||||||
|
line = 1.f;
|
||||||
|
string str;
|
||||||
|
#if FINAL_VERSION
|
||||||
|
str = "FV";
|
||||||
|
#else
|
||||||
|
str = "DEV";
|
||||||
|
#endif
|
||||||
|
if(ClientCfg.ExtendedCommands)
|
||||||
|
str += "_E";
|
||||||
|
str += " "RYZOM_VERSION;
|
||||||
|
TextContext->printfAt(0.f, line, "Version %s", str.c_str());
|
||||||
|
|
||||||
|
// TOP MIDDLE //
|
||||||
|
//------------//
|
||||||
|
TextContext->setHotSpot(UTextContext::MiddleTop);
|
||||||
|
line = 1.f;
|
||||||
|
// Motion Mode
|
||||||
|
TextContext->printfAt(0.5f, line, "%s", UserControls.modeStr().c_str());
|
||||||
|
line -= lineStep;
|
||||||
|
|
||||||
|
// TOP RIGHT //
|
||||||
|
//-----------//
|
||||||
|
TextContext->setHotSpot(UTextContext::TopRight);
|
||||||
|
line = 1.f;
|
||||||
|
//// 3D Infos
|
||||||
|
// Video mem allocated.
|
||||||
|
TextContext->printfAt(1.f, line, "Video mem. : %f", Driver->profileAllocatedTextureMemory()/(1024.f*1024.f));
|
||||||
|
line -= lineStep;
|
||||||
|
// Video mem used since last swapBuffers().
|
||||||
|
TextContext->printfAt(1.f, line, "Video mem. since last swap buffer: %f", Driver->getUsedTextureMemory()/(1024.f*1024.f));
|
||||||
|
line -= lineStep;
|
||||||
|
// Get the last face count asked from the main scene before reduction.
|
||||||
|
TextContext->printfAt(1.f, line, "Nb Skin Face Asked: %f", Scene->getGroupNbFaceAsked("Skin"));
|
||||||
|
line -= lineStep;
|
||||||
|
TextContext->printfAt(1.f, line, "Nb Fx Face Asked: %f", Scene->getGroupNbFaceAsked("Fx"));
|
||||||
|
line -= lineStep;
|
||||||
|
// All Triangles In
|
||||||
|
CPrimitiveProfile pIn;
|
||||||
|
CPrimitiveProfile pOut;
|
||||||
|
Driver->profileRenderedPrimitives(pIn, pOut);
|
||||||
|
TextContext->printfAt(1.f, line, "Tri In : %d", pIn.NTriangles+2*pIn.NQuads);
|
||||||
|
line -= lineStep;
|
||||||
|
// All Triangles Out
|
||||||
|
TextContext->printfAt(1.f, line, "Tri Out : %d", pOut.NTriangles+2*pIn.NQuads);
|
||||||
|
line -= lineStep;
|
||||||
|
// Current Cluster
|
||||||
|
string strPos;
|
||||||
|
// Check there is a PACS Primitive before using it.
|
||||||
|
if(UserEntity->getPrimitive() && GR)
|
||||||
|
{
|
||||||
|
UGlobalPosition gPos;
|
||||||
|
UserEntity->getPrimitive()->getGlobalPosition(gPos, dynamicWI);
|
||||||
|
string strPos = GR->getIdentifier(gPos);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
strPos = "No Primitive";
|
||||||
|
TextContext->printfAt(1.f, line, "Cluster : %s", strPos.c_str());
|
||||||
|
line -= lineStep;
|
||||||
|
//// SOUND Infos
|
||||||
|
line -= lineStep;
|
||||||
|
if(SoundMngr)
|
||||||
|
{
|
||||||
|
TextContext->printfAt(1.f, line, "Sound source instance: %u", SoundMngr->getSourcesInstanceCount());
|
||||||
|
line -= lineStep;
|
||||||
|
TextContext->printfAt(1.f, line, "Logical playing SoundSource: %u", SoundMngr->getMixer()->getPlayingSourcesCount ());
|
||||||
|
line -= lineStep;
|
||||||
|
TextContext->printfAt(1.f, line, "Audio tracks: %u/%u", SoundMngr->getMixer()->getUsedTracksCount(), SoundMngr->getMixer()->getPolyphony());
|
||||||
|
line -= lineStep;
|
||||||
|
if (SoundMngr->getMixer()->getMutedPlayingSourcesCount() > 0)
|
||||||
|
{
|
||||||
|
TextContext->printfAt(1.f, line, "Source muted: %u !", SoundMngr->getMixer()->getMutedPlayingSourcesCount());
|
||||||
|
line -= lineStep;
|
||||||
|
}
|
||||||
|
TextContext->printfAt(1.f, line, "Samples in memory: %g MB", SoundMngr->getLoadingSamplesSize() / (1024.0f*1024.0f));
|
||||||
|
line -= lineStep;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// BOTTOM RIGHT //
|
||||||
|
//--------------//
|
||||||
|
TextContext->setHotSpot(UTextContext::BottomRight);
|
||||||
|
line = 0.f;
|
||||||
|
//// POSITION
|
||||||
|
CVector postmp = View.viewPos();
|
||||||
|
// Pos
|
||||||
|
TextContext->printfAt(1.f, line, "Position : %d %d %d",(int)postmp.x,(int)postmp.y,(int)postmp.z);
|
||||||
|
line += lineStep;
|
||||||
|
// Body Heading
|
||||||
|
TextContext->printfAt(1.f, line, "Front : %.2f %.2f %.2f", UserEntity->front().x, UserEntity->front().y, UserEntity->front().z);
|
||||||
|
line += lineStep;
|
||||||
|
// Speed
|
||||||
|
TextContext->printfAt(1.f, line, "Speed : %.2f", (float) UserEntity->speed());
|
||||||
|
line += lineStep;
|
||||||
|
// Zone
|
||||||
|
if (!ClientCfg.Light)
|
||||||
|
{
|
||||||
|
if (Landscape)
|
||||||
|
{
|
||||||
|
TextContext->printfAt(1.f, line, "Zone: %s", Landscape->getZoneName(postmp).c_str());
|
||||||
|
line += lineStep;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Prim File
|
||||||
|
string primFile = PrimFiles.getCurrentPrimitive ();
|
||||||
|
if (!primFile.empty ())
|
||||||
|
{
|
||||||
|
TextContext->printfAt(1.f, line, "Prim File: %s", primFile.c_str ());
|
||||||
|
line += lineStep;
|
||||||
|
}
|
||||||
|
|
||||||
|
//// CONNECTION
|
||||||
|
line += lineStep;
|
||||||
|
// Ryzom Day.
|
||||||
|
TextContext->printfAt(1.f, line, "Ryzom Day : %d", RT.getRyzomDay());
|
||||||
|
line += lineStep;
|
||||||
|
// hour in the game
|
||||||
|
float dayNightCycleHour = (float)RT.getRyzomTime();
|
||||||
|
TextContext->printfAt(1.f, line, "Ryzom Time : %2u:%02u", int(dayNightCycleHour), int((dayNightCycleHour-int(dayNightCycleHour))*60.0f));
|
||||||
|
line += lineStep;
|
||||||
|
// light hour in the game, used to display te day/night
|
||||||
|
TextContext->printfAt(1.f, line, "Ryzom Light Time : %2u:%02u (%s)", int(DayNightCycleHour), int((DayNightCycleHour-int(DayNightCycleHour))*60.0f), LightCycleManager.getStateString().c_str());
|
||||||
|
line += lineStep;
|
||||||
|
// Server GameCycle
|
||||||
|
TextContext->printfAt(1.f, line, "Server GameCycle : %u", (uint)NetMngr.getCurrentServerTick());
|
||||||
|
line += lineStep;
|
||||||
|
// Current GameCycle
|
||||||
|
TextContext->printfAt(1.f, line, "Current GameCycle : %u", (uint)NetMngr.getCurrentClientTick());
|
||||||
|
line += lineStep;
|
||||||
|
// Current GameCycle
|
||||||
|
TextContext->printfAt(1.f, line, "Ms per Cycle : %d", NetMngr.getMsPerTick());
|
||||||
|
line += lineStep;
|
||||||
|
// Packet Loss
|
||||||
|
TextContext->printfAt(1.f, line, "Packet Loss : %.1f %%", NetMngr.getMeanPacketLoss()*100.0f);
|
||||||
|
line += lineStep;
|
||||||
|
// Packet Loss
|
||||||
|
TextContext->printfAt(1.f, line, "Packets Lost : %u", NetMngr.getTotalLostPackets());
|
||||||
|
line += lineStep;
|
||||||
|
// Mean Upload
|
||||||
|
TextContext->printfAt(1.f, line, "Mean Upld : %.3f kbps", NetMngr.getMeanUpload());
|
||||||
|
line += lineStep;
|
||||||
|
// Mean Download
|
||||||
|
TextContext->printfAt(1.f, line, "Mean Dnld : %.3f kbps", NetMngr.getMeanDownload());
|
||||||
|
line += lineStep;
|
||||||
|
|
||||||
|
// Mean Download
|
||||||
|
TextContext->printfAt(1.f, line, "Nb in Vision : %d(%d,%d,%d)",
|
||||||
|
EntitiesMngr.nbEntitiesAllocated(),
|
||||||
|
EntitiesMngr.nbUser(),
|
||||||
|
EntitiesMngr.nbPlayer(),
|
||||||
|
EntitiesMngr.nbChar());
|
||||||
|
line += lineStep;
|
||||||
|
|
||||||
|
// Number of database changes
|
||||||
|
TextContext->printfAt(1.f, line, "DB Changes : %u", NbDatabaseChanges );
|
||||||
|
line += lineStep;
|
||||||
|
|
||||||
|
// Ping
|
||||||
|
TextContext->printfAt(1.f, line, "DB Ping : %u ms", Ping.getValue());
|
||||||
|
line += lineStep;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Manual weather setup
|
||||||
|
{
|
||||||
|
if(ContinentMngr.cur()) // Only usable if there is a continent loaded.
|
||||||
|
{
|
||||||
|
if (!ForceTrueWeatherValue)
|
||||||
|
{
|
||||||
|
const CWeatherFunction &wf = ContinentMngr.cur()->WeatherFunction[CurrSeason];
|
||||||
|
float wv;
|
||||||
|
if (ClientCfg.ManualWeatherSetup)
|
||||||
|
{
|
||||||
|
wv = std::max(wf.getNumWeatherSetups() - 1, 0u) * ManualWeatherValue;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
wv = std::max(wf.getNumWeatherSetups() - 1, 0u) * ::getBlendedWeather(RT.getRyzomDay(), RT.getRyzomTime(), *WeatherFunctionParams, ContinentMngr.cur()->WeatherFunction);
|
||||||
|
}
|
||||||
|
const CWeatherSetup *ws = wf.getWeatherSetup((uint) floorf(wv));
|
||||||
|
std::string name0 = ws ? NLMISC::CStringMapper::unmap(ws->SetupName) : "???";
|
||||||
|
ws = wf.getWeatherSetup(std::min((uint) (floorf(wv) + 1), wf.getNumWeatherSetups() - 1));
|
||||||
|
std::string name1 = ws ? NLMISC::CStringMapper::unmap(ws->SetupName) : "???";
|
||||||
|
TextContext->printfAt(1.f, line, "Weather value : %.02f : %s -> %s", ws ? wv : 0.f, name0.c_str(), name1.c_str());
|
||||||
|
line += lineStep;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TextContext->printfAt(1.f, line, "Weather value : %.02f", WeatherManager.getWeatherValue() * std::max(ContinentMngr.cur()->WeatherFunction[CurrSeason].getNumWeatherSetups() - 1, 0u));
|
||||||
|
line += lineStep;
|
||||||
|
TextContext->printfAt(1.f, line, "TEST WEATHER FUNCTION");
|
||||||
|
line += lineStep;
|
||||||
|
}
|
||||||
|
// season
|
||||||
|
TextContext->printfAt(1.f, line, "Season : %s", EGSPD::CSeason::toString(CurrSeason).c_str());
|
||||||
|
line += lineStep;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// fog dist
|
||||||
|
if (ContinentMngr.cur())
|
||||||
|
{
|
||||||
|
TextContext->printfAt(1.f, line, "Continent fog min near = %.1f, max far = %.1f", ContinentMngr.cur()->FogStart, ContinentMngr.cur()->FogEnd);
|
||||||
|
line += lineStep;
|
||||||
|
CFogState tmpFog;
|
||||||
|
ContinentMngr.getFogState(MainFog, LightCycleManager.getLightLevel(), LightCycleManager.getLightDesc().DuskRatio, LightCycleManager.getState(), View.viewPos(), tmpFog);
|
||||||
|
TextContext->printfAt(1.f, line, "Continent fog curr near = %.1f, curr far = %.1f", tmpFog.FogStartDist, tmpFog.FogEndDist);
|
||||||
|
line += lineStep;
|
||||||
|
}
|
||||||
|
const CWeatherState &ws = WeatherManager.getCurrWeatherState();
|
||||||
|
TextContext->printfAt(1.f, line, "Weather fog near = %.1f, far = %.1f", ws.FogNear[MainFog], ws.FogFar[MainFog]);
|
||||||
|
line += lineStep;
|
||||||
|
TextContext->printfAt(1.f, line, "Final fog near = %.1f, far = %.1f", MainFogState.FogStartDist, MainFogState.FogEndDist);
|
||||||
|
line += lineStep;
|
||||||
|
float left, right, bottom, top, znear, zfar;
|
||||||
|
Scene->getCam().getFrustum(left, right, bottom, top, znear, zfar);
|
||||||
|
TextContext->printfAt(1.f, line, "Clip near = %.1f, far = %.1f", znear, zfar);
|
||||||
|
line += lineStep;
|
||||||
|
|
||||||
|
// Connection states
|
||||||
|
TextContext->printfAt(1.f, line, "State : %s", NetMngr.getConnectionStateCStr() );
|
||||||
|
line += lineStep;
|
||||||
|
|
||||||
|
// UGlobalPosition globalPos;
|
||||||
|
// UserEntity->getPrimitive()->getGlobalPosition(globalPos, dynamicWI);
|
||||||
|
// uint32 material = GR->getMaterial( globalPos );
|
||||||
|
// TextContext->printfAt(0.5f,0.5f,"Material : %d Gpos=(inst=%d,surf=%d,x=%.2f,y=%.2f",material, globalPos.InstanceId, globalPos.LocalPosition.Surface, globalPos.LocalPosition.Estimation.x, globalPos.LocalPosition.Estimation.y);
|
||||||
|
|
||||||
|
// No more shadow when displaying a text.
|
||||||
|
TextContext->setShaded(false);
|
||||||
|
}// displayDebug //
|
||||||
|
|
||||||
|
// ********************************************************************
|
||||||
|
// ********************************************************************
|
||||||
|
// ********************************************************************
|
||||||
|
// ********************************************************************
|
||||||
|
// ********************************************************************
|
||||||
|
|
||||||
|
//-----------------------------------------------
|
||||||
|
// Macro to Display a Text
|
||||||
|
//-----------------------------------------------
|
||||||
|
#define DISP_TEXT(x, text) \
|
||||||
|
/* Display the text at the right place */ \
|
||||||
|
TextContext->printfAt(x, line, text); \
|
||||||
|
/* Change the line */ \
|
||||||
|
line += lineStep; \
|
||||||
|
|
||||||
|
//---------------------------------------------------
|
||||||
|
// displayHelp :
|
||||||
|
// Display an Help.
|
||||||
|
//---------------------------------------------------
|
||||||
|
void displayHelp()
|
||||||
|
{
|
||||||
|
float line = 1.f;
|
||||||
|
float lineStep = -ClientCfg.HelpLineStep;
|
||||||
|
|
||||||
|
// Create a shadow when displaying a text.
|
||||||
|
TextContext->setShaded(true);
|
||||||
|
// Set the font size.
|
||||||
|
TextContext->setFontSize(ClientCfg.HelpFontSize);
|
||||||
|
// Set the text color
|
||||||
|
TextContext->setColor(ClientCfg.HelpFontColor);
|
||||||
|
|
||||||
|
|
||||||
|
line = 1.f;
|
||||||
|
TextContext->setHotSpot(UTextContext::TopLeft);
|
||||||
|
DISP_TEXT(0.0f, "SHIFT + F1 : This Menu")
|
||||||
|
DISP_TEXT(0.0f, "SHIFT + F2 : Display Debug Infos")
|
||||||
|
DISP_TEXT(0.0f, "SHIFT + F3 : Wire mode");
|
||||||
|
DISP_TEXT(0.0f, "SHIFT + F4 : Do not Render the Scene");
|
||||||
|
DISP_TEXT(0.0f, "SHIFT + F5 : Toogle Display OSD interfaces");
|
||||||
|
// DISP_TEXT(0.0f, "SHIFT + F6 : Not used");
|
||||||
|
DISP_TEXT(0.0f, "SHIFT + F7 : Compass Mode (User/Camera)");
|
||||||
|
DISP_TEXT(0.0f, "SHIFT + F8 : Camera Mode (INSERT to change your position)");
|
||||||
|
DISP_TEXT(0.0f, "SHIFT + F9 : Free Mouse");
|
||||||
|
DISP_TEXT(0.0f, "SHIFT + F10 : Take a Screen Shot (+CTRL) for jpg");
|
||||||
|
// DISP_TEXT(0.0f, "SHIFT + F11 : Test");
|
||||||
|
DISP_TEXT(0.0f, "SHIFT + ESCAPE : Quit");
|
||||||
|
DISP_TEXT(0.0f, "SHIFT + C : First/Third Person View");
|
||||||
|
|
||||||
|
line = 1.f;
|
||||||
|
TextContext->setHotSpot(UTextContext::TopRight);
|
||||||
|
DISP_TEXT(1.0f, "UP : FORWARD");
|
||||||
|
DISP_TEXT(1.0f, "DOWN : BACKWARD");
|
||||||
|
DISP_TEXT(1.0f, "LEFT : ROTATE LEFT");
|
||||||
|
DISP_TEXT(1.0f, "RIGHT : ROTATE RIGHT");
|
||||||
|
DISP_TEXT(1.0f, "CTRL + LEFT : STRAFE LEFT");
|
||||||
|
DISP_TEXT(1.0f, "CTRL + RIGHT : STRAFE RIGHT");
|
||||||
|
DISP_TEXT(1.0f, "END : Auto Walk");
|
||||||
|
DISP_TEXT(1.0f, "DELETE : Walk/Run");
|
||||||
|
DISP_TEXT(1.0f, "PG UP : Look Up");
|
||||||
|
DISP_TEXT(1.0f, "PG DOWN : Look Down");
|
||||||
|
// DISP_TEXT(1.0f, "CTRL + I : Inventory");
|
||||||
|
// DISP_TEXT(1.0f, "CTRL + C : Spells composition interface");
|
||||||
|
// DISP_TEXT(1.0f, "CTRL + S : Memorized Spells interface");
|
||||||
|
DISP_TEXT(1.0f, "CTRL + B : Show/Hide PACS Borders");
|
||||||
|
DISP_TEXT(1.0f, "CTRL + P : Player target himself");
|
||||||
|
DISP_TEXT(1.0f, "CTRL + D : Unselect target");
|
||||||
|
DISP_TEXT(1.0f, "CTRL + TAB : Next Chat Mode (say/shout");
|
||||||
|
DISP_TEXT(1.0f, "CTRL + R : Reload Client.cfg File");
|
||||||
|
// DISP_TEXT(1.0f, "CTRL + N : Toggle Night / Day lighting");
|
||||||
|
DISP_TEXT(1.0f, "CTRL + F2 : Profile on / off");
|
||||||
|
DISP_TEXT(1.0f, "CTRL + F3 : Movie Shooter record / stop");
|
||||||
|
DISP_TEXT(1.0f, "CTRL + F4 : Movie Shooter replay");
|
||||||
|
DISP_TEXT(1.0f, "CTRL + F5 : Movie Shooter save");
|
||||||
|
#ifndef NL_USE_DEFAULT_MEMORY_MANAGER
|
||||||
|
DISP_TEXT(1.0f, "CTRL + F6 : Save memory stat report");
|
||||||
|
#endif // NL_USE_DEFAULT_MEMORY_MANAGER
|
||||||
|
DISP_TEXT(1.0f, "CTRL + F7 : Show / hide prim file");
|
||||||
|
DISP_TEXT(1.0f, "CTRL + F8 : Change prim file UP");
|
||||||
|
DISP_TEXT(1.0f, "CTRL + F9 : Change prim file DOWN");
|
||||||
|
|
||||||
|
// No more shadow when displaying a text.
|
||||||
|
TextContext->setShaded(false);
|
||||||
|
}// displayHelp //
|
||||||
|
|
||||||
|
// ********************************************************************
|
||||||
|
// ********************************************************************
|
||||||
|
// ********************************************************************
|
||||||
|
// ********************************************************************
|
||||||
|
// ********************************************************************
|
||||||
|
|
||||||
|
/* end of file */
|
31
code/ryzom/client/src/main_loop_debug.h
Normal file
31
code/ryzom/client/src/main_loop_debug.h
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
// Ryzom - MMORPG Framework <http://dev.ryzom.com/projects/ryzom/>
|
||||||
|
// Copyright (C) 2010 Winch Gate Property Limited
|
||||||
|
//
|
||||||
|
// This program is free software: you can redistribute it and/or modify
|
||||||
|
// it under the terms of the GNU Affero General Public License as
|
||||||
|
// published by the Free Software Foundation, either version 3 of the
|
||||||
|
// License, or (at your option) any later version.
|
||||||
|
//
|
||||||
|
// This program is distributed in the hope that it will be useful,
|
||||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
// GNU Affero General Public License for more details.
|
||||||
|
//
|
||||||
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#ifndef CL_MAIN_LOOP_DEBUG_H
|
||||||
|
#define CL_MAIN_LOOP_DEBUG_H
|
||||||
|
|
||||||
|
#include <nel/misc/types_nl.h>
|
||||||
|
|
||||||
|
// Display some debug infos.
|
||||||
|
void displayDebug();
|
||||||
|
void displayDebugFps();
|
||||||
|
void displayDebugUIUnderMouse();
|
||||||
|
// Display an Help.
|
||||||
|
void displayHelp();
|
||||||
|
|
||||||
|
#endif // CL_MAIN_LOOP_DEBUG_H
|
||||||
|
|
||||||
|
/* end of file */
|
|
@ -14,6 +14,7 @@
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#include <nel/misc/types_nl.h>
|
||||||
#include "ping.h"
|
#include "ping.h"
|
||||||
|
|
||||||
#include "interface_v3/interface_manager.h"
|
#include "interface_v3/interface_manager.h"
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#include <nel/misc/types_nl.h>
|
||||||
#include "profiling.h"
|
#include "profiling.h"
|
||||||
|
|
||||||
// NeL includes
|
// NeL includes
|
||||||
|
|
|
@ -14,8 +14,8 @@
|
||||||
// You should have received a copy of the GNU Affero General Public License
|
// You should have received a copy of the GNU Affero General Public License
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#ifndef CL_MAIN_LOOP_PROFILING_H
|
#ifndef CL_PROFILING_H
|
||||||
#define CL_MAIN_LOOP_PROFILING_H
|
#define CL_PROFILING_H
|
||||||
|
|
||||||
#include <nel/misc/types_nl.h>
|
#include <nel/misc/types_nl.h>
|
||||||
|
|
||||||
|
@ -31,6 +31,6 @@ void testLaunchProfile();
|
||||||
/// Test ProfilingVBLock and run?
|
/// Test ProfilingVBLock and run?
|
||||||
void testLaunchProfileVBLock();
|
void testLaunchProfileVBLock();
|
||||||
|
|
||||||
#endif // CL_MAIN_LOOP_PROFILING_H
|
#endif // CL_PROFILING_H
|
||||||
|
|
||||||
/* end of file */
|
/* end of file */
|
Loading…
Reference in a new issue