From: <sv...@ww...> - 2005-06-06 05:36:13
|
Author: mkrose Date: 2005-06-05 22:36:05 -0700 (Sun, 05 Jun 2005) New Revision: 1548 Modified: trunk/CSP/CSPSim/CHANGES.current trunk/CSP/CSPSim/Include/ChunkLodTerrain.h trunk/CSP/CSPSim/Include/DemeterTerrain.h trunk/CSP/CSPSim/Include/TerrainObject.h trunk/CSP/CSPSim/Source/CSPSim.cpp trunk/CSP/CSPSim/Source/ChunkLodTerrain.cpp trunk/CSP/CSPSim/Source/DemeterTerrain.cpp trunk/CSP/CSPSim/Source/TerrainObject.cpp Log: Finally remove screen size globals. Add screen size hints to terrain classes. Also add an debug config flag to disable rendering, which is helpful when running multiple instances on the same machine to test networking. Browse at: https://www.zerobar.net/viewcvs/viewcvs.cgi?view=rev&rev=1548 Modified: trunk/CSP/CSPSim/CHANGES.current =================================================================== --- trunk/CSP/CSPSim/CHANGES.current 2005-05-15 08:13:23 UTC (rev 1547) +++ trunk/CSP/CSPSim/CHANGES.current 2005-06-06 05:36:05 UTC (rev 1548) @@ -1,6 +1,12 @@ Version 0.4.0 (in progress) =========================== +2005-06-05: onsight + * Finally remove screen size globals. Add screen size hints + to terrain classes. Also add an debug config flag to disable + rendering, which is helpful when running multiple instances + on the same machine to test networking. + 2005-05-14: onsight * Add a list of contacts to SimObject of nearby vehicles that is maintained by the Battlefield. The battlefield was already Modified: trunk/CSP/CSPSim/Include/ChunkLodTerrain.h =================================================================== --- trunk/CSP/CSPSim/Include/ChunkLodTerrain.h 2005-05-15 08:13:23 UTC (rev 1547) +++ trunk/CSP/CSPSim/Include/ChunkLodTerrain.h 2005-06-06 05:36:05 UTC (rev 1548) @@ -85,6 +85,7 @@ virtual float getGroundElevation(double x, double y, IntersectionHint &); void setCameraPosition(double, double, double); + virtual void setScreenSizeHint(int width, int height); int getTerrainPolygonsRendered() const; osg::Node *getNode(); @@ -106,7 +107,9 @@ float m_LatticeWidth; float m_LatticeHeight; simdata::Vector3 m_Origin; - + int m_ScreenWidth; + int m_ScreenHeight; + protected: virtual void postCreate(); Modified: trunk/CSP/CSPSim/Include/DemeterTerrain.h =================================================================== --- trunk/CSP/CSPSim/Include/DemeterTerrain.h 2005-05-15 08:13:23 UTC (rev 1547) +++ trunk/CSP/CSPSim/Include/DemeterTerrain.h 2005-06-06 05:36:05 UTC (rev 1548) @@ -100,8 +100,10 @@ simdata::Vector3 getOrigin(simdata::Vector3 const &) const; virtual void endDraw(); + virtual void setScreenSizeHint(int width, int height); + protected: - + bool m_DynamicTextures; bool m_TextureCompression; bool m_PreloadTextures; @@ -121,8 +123,10 @@ int m_LatticeHeight; simdata::Vector3 m_Offset; float m_CellWidth, m_CellHeight; + int m_ScreenWidth; + int m_ScreenHeight; - + protected: virtual void postCreate(); Modified: trunk/CSP/CSPSim/Include/TerrainObject.h =================================================================== --- trunk/CSP/CSPSim/Include/TerrainObject.h 2005-05-15 08:13:23 UTC (rev 1547) +++ trunk/CSP/CSPSim/Include/TerrainObject.h 2005-06-06 05:36:05 UTC (rev 1548) @@ -110,6 +110,7 @@ virtual void activate() = 0; virtual void deactivate() = 0; virtual bool isActive() = 0; + virtual void setScreenSizeHint(int, int) {} virtual void setCameraPosition(double, double, double) = 0; virtual void testLineOfSight(Intersection &, IntersectionHint &) = 0; virtual float getGroundElevation(double x, double y, simdata::Vector3 &normal, IntersectionHint &) = 0; Modified: trunk/CSP/CSPSim/Source/CSPSim.cpp =================================================================== --- trunk/CSP/CSPSim/Source/CSPSim.cpp 2005-05-15 08:13:23 UTC (rev 1547) +++ trunk/CSP/CSPSim/Source/CSPSim.cpp 2005-06-06 05:36:05 UTC (rev 1548) @@ -103,8 +103,9 @@ #endif -int g_ScreenWidth = 0; -int g_ScreenHeight = 0; +// For network testing on a single box it's convenient to disable rendering on +// one of the sims. Using a global here just because we're lazy. +bool g_DisableRender = false; struct SDLWave { @@ -142,6 +143,8 @@ std::string logfile = g_Config.getString("Debug", "LogFile", "CSPSim.log", true); csplog().setOutput(logfile); + g_DisableRender = g_Config.getBool("Debug", "DisableRender", false, false); + CSP_LOG(APP, INFO, "Constructing CSPSim Object..."); m_Clean = true; @@ -310,6 +313,7 @@ assert(m_Theater.valid()); m_Terrain = m_Theater->getTerrain(); assert(m_Terrain.valid()); + m_Terrain->setScreenSizeHint(m_ScreenWidth, m_ScreenHeight); m_Terrain->activate(); // configure the atmosphere for the theater location @@ -578,7 +582,9 @@ m_CurrentScreen->onUpdate(dt); PROF1(_screen_update, 60); PROF0(_screen_render); - m_CurrentScreen->onRender(); + if (!g_DisableRender) { + m_CurrentScreen->onRender(); + } PROF1(_screen_render, 60); } @@ -670,7 +676,7 @@ SDL_Event event; short doPoll = 10; while (doPoll-- && (*m_InputEvent)(event)) { - //while (doPoll-- && SDL_PollEvent(&event)) { + //while (doPoll-- && SDL_PollEvent(&event)) { bool handled = false; HID::translate(event); if (event.type == SDL_QUIT) { @@ -693,7 +699,7 @@ } } if (!handled && m_Interface.valid()) { - CSP_LOG(APP, DEBUG, "CSPSim::doInput()-Calling m_Interface->onEvent()"); + CSP_LOG(APP, DEBUG, "CSPSim::doInput()-Calling m_Interface->onEvent()"); handled = m_Interface->onEvent(event); } } @@ -733,9 +739,6 @@ m_ScreenHeight = height; m_ScreenWidth = width; - - g_ScreenHeight = height; - g_ScreenWidth = width; if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK | SDL_INIT_AUDIO) != 0) { std::cerr << "Unable to initialize SDL: " << SDL_GetError() << "\n"; Modified: trunk/CSP/CSPSim/Source/ChunkLodTerrain.cpp =================================================================== --- trunk/CSP/CSPSim/Source/ChunkLodTerrain.cpp 2005-05-15 08:13:23 UTC (rev 1547) +++ trunk/CSP/CSPSim/Source/ChunkLodTerrain.cpp 2005-06-06 05:36:05 UTC (rev 1548) @@ -43,10 +43,7 @@ * signal handler for screen size and fov changes */ -extern int g_ScreenWidth; -extern int g_ScreenHeight; - SIMDATA_REGISTER_INTERFACE(ChunkLodTerrain) @@ -85,6 +82,10 @@ //m_ElevationScale; m_LatticeWidth = 8000.0; m_LatticeHeight = 8000.0; + + // arbitrary default + m_ScreenWidth = 1280; + m_ScreenHeight = 1024; } ChunkLodTerrain::~ChunkLodTerrain() @@ -118,6 +119,14 @@ } } +void ChunkLodTerrain::setScreenSizeHint(int width, int height) { + m_ScreenWidth = width; + m_ScreenHeight = height; + if (m_Loaded) { + m_Terrain->setCameraParameters(width, 60.0); // XXX + } +} + void ChunkLodTerrain::load() { if (m_Loaded) return; std::string terrain_path = getDataPath("TerrainPath"); @@ -129,7 +138,7 @@ m_Terrain = new osgChunkLod::ChunkLodTree(chu_file.c_str(), m_Texture, m_ElevationMap.get(), scale); m_Terrain->loaderUseThread(m_UseLoaderThread); m_Terrain->setQuality(m_BaseScreenError, m_BaseTexelSize); - m_Terrain->setCameraParameters(g_ScreenWidth, 60.0); // XXX + m_Terrain->setCameraParameters(m_ScreenWidth, 60.0); // XXX m_Terrain->setLatticeDimensions(m_LatticeWidth, m_LatticeHeight); std::cout << "TERRAIN CREATED\n"; Modified: trunk/CSP/CSPSim/Source/DemeterTerrain.cpp =================================================================== --- trunk/CSP/CSPSim/Source/DemeterTerrain.cpp 2005-05-15 08:13:23 UTC (rev 1547) +++ trunk/CSP/CSPSim/Source/DemeterTerrain.cpp 2005-06-06 05:36:05 UTC (rev 1548) @@ -39,10 +39,6 @@ #include <osg/StateSet> -extern int g_ScreenWidth; -extern int g_ScreenHeight; - - SIMDATA_REGISTER_INTERFACE(DemeterTerrain) @@ -85,6 +81,10 @@ m_LatticeTexExt = ""; m_LatticeWidth = 0; m_LatticeHeight = 0; + + // arbitrary default + m_ScreenWidth = 1280; + m_ScreenHeight = 1024; } DemeterTerrain::~DemeterTerrain() @@ -376,14 +376,22 @@ } } +void DemeterTerrain::setScreenSizeHint(int width, int height) { + m_ScreenWidth = width; + m_ScreenHeight = height; + if (m_Loaded) { + Demeter::Settings::GetInstance()->SetScreenWidth(width); + Demeter::Settings::GetInstance()->SetScreenHeight(height); + } +} void DemeterTerrain::updateDemeterSettings() { std::string terrain_path = getDataPath("TerrainPath"); bool verbose = g_Config.getBool("Debug", "Demeter", false, true); Demeter::Settings::GetInstance()->SetMediaPath(terrain_path.c_str()); Demeter::Settings::GetInstance()->SetVerbose(verbose); - Demeter::Settings::GetInstance()->SetScreenWidth(g_ScreenWidth); - Demeter::Settings::GetInstance()->SetScreenHeight(g_ScreenHeight); + Demeter::Settings::GetInstance()->SetScreenWidth(m_ScreenWidth); + Demeter::Settings::GetInstance()->SetScreenHeight(m_ScreenHeight); Demeter::Settings::GetInstance()->SetPreloadTextures(m_PreloadTextures); Demeter::Settings::GetInstance()->SetTextureCompression(m_TextureCompression); Demeter::Settings::GetInstance()->SetUseDynamicTextures(m_DynamicTextures); Modified: trunk/CSP/CSPSim/Source/TerrainObject.cpp =================================================================== --- trunk/CSP/CSPSim/Source/TerrainObject.cpp 2005-05-15 08:13:23 UTC (rev 1547) +++ trunk/CSP/CSPSim/Source/TerrainObject.cpp 2005-06-06 05:36:05 UTC (rev 1548) @@ -26,20 +26,9 @@ #include "TerrainObject.h" #include "Config.h" -#include <SimCore/Util/Log.h> - #include <osg/LineSegment> -/*// -#include "Terrain.h" -#include "DemeterDrawable.h" -#include "TerrainTextureFactory.h" -#include <osg/Geode> -#include <osg/StateSet> -extern int g_ScreenWidth; -extern int g_ScreenHeight; -*/ - +#include <SimCore/Util/Log.h> #include <SimData/InterfaceRegistry.h> #include <SimData/osg.h> |