make each OSG debug HUD graph item a seperate widget

git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@7995 30fe4595-0a0c-4342-8851-515496e4dcbd

Former-commit-id: 015f7daad15c6c0908e111ccdba411ce8d8196d3
Former-commit-id: 999588eaecc67902f402a16526082633b787d3b2
This commit is contained in:
iobyte 2022-02-04 21:41:27 +00:00
parent 7bdb8c59f7
commit fa9b4b6f49
5 changed files with 112 additions and 37 deletions

View file

@ -169,9 +169,21 @@ void SDToggleHUDdashitems(void *vp)
screens->toggleHUDdashitems();
}
#ifdef HUDDEBUG
void SDToggleHUDgraph(void *vp)
void SDToggleHUDgraphFPS(void *vp)
{
screens->toggleHUDgraph();
screens->toggleHUDgraphFPS();
}
void SDToggleHUDgraphSpeed(void *vp)
{
screens->toggleHUDgraphSpeed();
}
void SDToggleHUDgraphFFB(void *vp)
{
screens->toggleHUDgraphFFB();
}
void SDToggleHUDgraphInputs(void *vp)
{
screens->toggleHUDgraphInputs();
}
#endif
/*Driver position change*/
@ -265,7 +277,10 @@ int initView(int x, int y, int width, int height, int /* flag */, void *screen)
GfuiAddKey(screen, '7', "Toggle HUD raceinfoWidget", (void*)0, SDToggleHUDraceinfo, NULL);
GfuiAddKey(screen, '8', "Toggle HUD", (void*)0, SDToggleHUD, NULL);
#ifdef HUDDEBUG
GfuiAddKey(screen, '0', "Toggle HUD graphWidget", (void*)0, SDToggleHUDgraph, NULL);
GfuiAddKey(screen, '!', "Toggle HUD graphFPSWidget", (void*)0, SDToggleHUDgraphFPS, NULL);
GfuiAddKey(screen, '@', "Toggle HUD graphSpeedWidget", (void*)0, SDToggleHUDgraphSpeed, NULL);
GfuiAddKey(screen, '#', "Toggle HUD graphFFBWidget", (void*)0, SDToggleHUDgraphFFB, NULL);
GfuiAddKey(screen, '$', "Toggle HUD graphInputsWidget", (void*)0, SDToggleHUDgraphInputs, NULL);
#endif
/*GfuiAddKey(screen, '5', "Debug Info", (void*)3, grSelectBoard, NULL);

View file

@ -250,12 +250,6 @@ OSGPLOT::~OSGPLOT()
{
}
void OSGPLOT::setNodeMask(int mask)
{
for (unsigned int i = 0; i < osgGroup->getNumChildren(); i++)
osgGroup->getChild(i)->setNodeMask(mask);
}
osg::ref_ptr <osg::Group> OSGPLOT::getGroup()
{
return (*osgGroup).asGroup();
@ -1413,7 +1407,10 @@ void SDHUD::ToggleHUD()
hudElementsVisibilityStatus["debugWidget"] = (int)hudWidgets["debugWidget"]->getNodeMask();
hudElementsVisibilityStatus["dashitemsWidget"] = (int)hudWidgets["dashitemsWidget"]->getNodeMask();
#ifdef HUDDEBUG
hudElementsVisibilityStatus["graphWidget"] = (int)hudWidgets["graphWidget"]->getNodeMask();
hudElementsVisibilityStatus["graphFPSWidget"] = (int)hudWidgets["graphFPSWidget"]->getNodeMask();
hudElementsVisibilityStatus["graphSpeedWidget"] = (int)hudWidgets["graphSpeedWidget"]->getNodeMask();
hudElementsVisibilityStatus["graphFFBWidget"] = (int)hudWidgets["graphFFBWidget"]->getNodeMask();
hudElementsVisibilityStatus["graphInputsWidget"] = (int)hudWidgets["graphInputsWidget"]->getNodeMask();
#endif
hudWidgets["boardWidget"]->setNodeMask(0);
@ -1427,8 +1424,10 @@ void SDHUD::ToggleHUD()
hudWidgets["debugWidget"]->setNodeMask(0);
hudWidgets["dashitemsWidget"]->setNodeMask(0);
#ifdef HUDDEBUG
hudWidgets["graphWidget"]->setNodeMask(0);
setGraphNodeMask(0);
hudWidgets["graphFPSWidget"]->setNodeMask(0);
hudWidgets["graphSpeedWidget"]->setNodeMask(0);
hudWidgets["graphFFBWidget"]->setNodeMask(0);
hudWidgets["graphInputsWidget"]->setNodeMask(0);
#endif
hudElementsVisibilityStatusEnabled = 0;
}else{
@ -1443,8 +1442,10 @@ void SDHUD::ToggleHUD()
hudWidgets["debugWidget"]->setNodeMask(hudElementsVisibilityStatus["debugWidget"]);
hudWidgets["dashitemsWidget"]->setNodeMask(hudElementsVisibilityStatus["dashitemsWidget"]);
#ifdef HUDDEBUG
hudWidgets["graphWidget"]->setNodeMask(hudElementsVisibilityStatus["graphWidget"]);
setGraphNodeMask(hudElementsVisibilityStatus["graphWidget"]);
hudWidgets["graphFPSWidget"]->setNodeMask(hudElementsVisibilityStatus["graphFPSWidget"]);
hudWidgets["graphSpeedWidget"]->setNodeMask(hudElementsVisibilityStatus["graphSpeedWidget"]);
hudWidgets["graphFFBWidget"]->setNodeMask(hudElementsVisibilityStatus["graphFFBWidget"]);
hudWidgets["graphInputsWidget"]->setNodeMask(hudElementsVisibilityStatus["graphInputsWidget"]);
#endif
hudElementsVisibilityStatusEnabled = 1;
}
@ -1587,33 +1588,77 @@ void SDHUD::ToggleHUDdashitems()
}
#ifdef HUDDEBUG
void SDHUD::setGraphNodeMask(int mask)
{
for (std::map<std::string, OSGPLOT *>::iterator it = hudGraphElements.begin(); it != hudGraphElements.end(); ++it)
{
it->second->setNodeMask(mask);
}
}
void SDHUD::ToggleHUDgraph()
void SDHUD::ToggleHUDgraphFPS()
{
//toggle the visibility
hudWidgets["graphWidget"]->setNodeMask(1 - hudWidgets["graphWidget"]->getNodeMask());
int value = hudWidgets["graphWidget"]->getNodeMask();
setGraphNodeMask(value);
hudWidgets["graphFPSWidget"]->setNodeMask(1 - hudWidgets["graphFPSWidget"]->getNodeMask());
//save the current status in the config file
std::string configFileUrl = GetLocalDir();
configFileUrl.append("config/osghudconfig.xml");
std::string path = "widgets/graphWidget";
std::string path = "widgets/graphFPSWidget";
std::string attribute = "enabled";
int value = hudWidgets["graphFPSWidget"]->getNodeMask();
//read the config file, update the value and write it back
void *paramHandle = GfParmReadFile(configFileUrl.c_str(), GFPARM_RMODE_STD);
GfParmSetNum(paramHandle, path.c_str(), attribute.c_str(), NULL, (int)value);
GfParmWriteFile(NULL, paramHandle, "osghudconfig");
}
}
void SDHUD::ToggleHUDgraphSpeed()
{
//toggle the visibility
hudWidgets["graphSpeedWidget"]->setNodeMask(1 - hudWidgets["graphSpeedWidget"]->getNodeMask());
//save the current status in the config file
std::string configFileUrl = GetLocalDir();
configFileUrl.append("config/osghudconfig.xml");
std::string path = "widgets/graphSpeedWidget";
std::string attribute = "enabled";
int value = hudWidgets["graphSpeedWidget"]->getNodeMask();
//read the config file, update the value and write it back
void *paramHandle = GfParmReadFile(configFileUrl.c_str(), GFPARM_RMODE_STD);
GfParmSetNum(paramHandle, path.c_str(), attribute.c_str(), NULL, (int)value);
GfParmWriteFile(NULL, paramHandle, "osghudconfig");
}
void SDHUD::ToggleHUDgraphFFB()
{
//toggle the visibility
hudWidgets["graphFFBWidget"]->setNodeMask(1 - hudWidgets["graphFFBWidget"]->getNodeMask());
//save the current status in the config file
std::string configFileUrl = GetLocalDir();
configFileUrl.append("config/osghudconfig.xml");
std::string path = "widgets/graphFFBWidget";
std::string attribute = "enabled";
int value = hudWidgets["graphFFBWidget"]->getNodeMask();
//read the config file, update the value and write it back
void *paramHandle = GfParmReadFile(configFileUrl.c_str(), GFPARM_RMODE_STD);
GfParmSetNum(paramHandle, path.c_str(), attribute.c_str(), NULL, (int)value);
GfParmWriteFile(NULL, paramHandle, "osghudconfig");
}
void SDHUD::ToggleHUDgraphInputs()
{
//toggle the visibility
hudWidgets["graphInputsWidget"]->setNodeMask(1 - hudWidgets["graphInputsWidget"]->getNodeMask());
//save the current status in the config file
std::string configFileUrl = GetLocalDir();
configFileUrl.append("config/osghudconfig.xml");
std::string path = "widgets/graphInputsWidget";
std::string attribute = "enabled";
int value = hudWidgets["graphInputsWidget"]->getNodeMask();
//read the config file, update the value and write it back
void *paramHandle = GfParmReadFile(configFileUrl.c_str(), GFPARM_RMODE_STD);
GfParmSetNum(paramHandle, path.c_str(), attribute.c_str(), NULL, (int)value);
GfParmWriteFile(NULL, paramHandle, "osghudconfig");
}
#endif
osg::ref_ptr <osg::Group> SDHUD::generateHudFromXmlFile(int scrH, int scrW)
@ -2034,8 +2079,7 @@ osg::ref_ptr <osg::Group> SDHUD::generateHudFromXmlFile(int scrH, int scrW)
//istantiate the graph
hudGraphElements[elementId] = new OSGPLOT(positionX, positionY, width, height, title, lines);
osgGroupHud->addChild(hudGraphElements[elementId]->getGroup());
hudGraphElements[elementId]->setNodeMask(widgetEnabled);
geode->addChild(hudGraphElements[elementId]->getGroup());
#endif
}
else

View file

@ -88,7 +88,6 @@ public:
osg::ref_ptr <osg::Group> getGroup();
void drawBackground();
void update(tSituation *s, const SDFrameInfo* frameInfo,const tCarElt *currCar);
void setNodeMask(int mask);
void clearDataPoints();
};
#endif
@ -127,7 +126,6 @@ class SDHUD
#ifdef HUDDEBUG
std::map<std::string,OSGPLOT* > hudGraphElements;
void setGraphNodeMask(int mask);
#endif
public:
@ -143,7 +141,10 @@ class SDHUD
void ToggleHUDdebug();
void ToggleHUDdashitems();
#ifdef HUDDEBUG
void ToggleHUDgraph();
void ToggleHUDgraphFPS();
void ToggleHUDgraphSpeed();
void ToggleHUDgraphFFB();
void ToggleHUDgraphInputs();
#endif
osg::ref_ptr<osg::Camera> camera;

View file

@ -254,9 +254,21 @@ void SDScreens::toggleHUDdashitems()
hud.ToggleHUDdashitems();
}
#ifdef HUDDEBUG
void SDScreens::toggleHUDgraph()
void SDScreens::toggleHUDgraphFPS()
{
hud.ToggleHUDgraph();
hud.ToggleHUDgraphFPS();
}
void SDScreens::toggleHUDgraphSpeed()
{
hud.ToggleHUDgraphSpeed();
}
void SDScreens::toggleHUDgraphFFB()
{
hud.ToggleHUDgraphFFB();
}
void SDScreens::toggleHUDgraphInputs()
{
hud.ToggleHUDgraphInputs();
}
#endif

View file

@ -65,7 +65,10 @@ public:
void toggleHUDdebug();
void toggleHUDdashitems();
#ifdef HUDDEBUG
void toggleHUDgraph();
void toggleHUDgraphFPS();
void toggleHUDgraphSpeed();
void toggleHUDgraphFFB();
void toggleHUDgraphInputs();
#endif
inline SDView * getActiveView(){return Screens[m_CurrentScreenIndex];}