From: <si...@us...> - 2010-01-24 12:51:30
|
Revision: 436 http://glestae.svn.sourceforge.net/glestae/?rev=436&view=rev Author: silnarm Date: 2010-01-24 12:51:23 +0000 (Sun, 24 Jan 2010) Log Message: ----------- * cleaned up Renderer/DebugRenderer * stripped out conditionally compiled code in keymap & gui (all debug stuff now invoked from Lua) * TransitionNodeStore sized according to map size. * Store GoalMaps deleted when unit dies Modified Paths: -------------- branches/search_engine/source/game/game/game.cpp branches/search_engine/source/game/graphics/debug_renderer.cpp branches/search_engine/source/game/graphics/debug_renderer.h branches/search_engine/source/game/graphics/renderer.cpp branches/search_engine/source/game/graphics/renderer.h branches/search_engine/source/game/graphics/scene_culler.h branches/search_engine/source/game/gui/gui.cpp branches/search_engine/source/game/gui/keymap.cpp branches/search_engine/source/game/gui/keymap.h branches/search_engine/source/game/path_finder/cartographer.cpp branches/search_engine/source/game/path_finder/cartographer.h branches/search_engine/source/game/path_finder/route_planner.cpp branches/search_engine/source/game/type_instances/unit.h Modified: branches/search_engine/source/game/game/game.cpp =================================================================== --- branches/search_engine/source/game/game/game.cpp 2010-01-24 09:26:35 UTC (rev 435) +++ branches/search_engine/source/game/game/game.cpp 2010-01-24 12:51:23 UTC (rev 436) @@ -803,12 +803,6 @@ //surface renderer.renderSurface(); - IF_DEBUG_EDITION( - if (renderer.showFrustum) { - renderer.renderFrustum(); - } - ) - //selection circles renderer.renderSelectionEffects(); Modified: branches/search_engine/source/game/graphics/debug_renderer.cpp =================================================================== --- branches/search_engine/source/game/graphics/debug_renderer.cpp 2010-01-24 09:26:35 UTC (rev 435) +++ branches/search_engine/source/game/graphics/debug_renderer.cpp 2010-01-24 12:51:23 UTC (rev 436) @@ -75,7 +75,8 @@ DebugRenderer::DebugRenderer() { gridTextures = AAStarTextures = HAAStarOverlay = showVisibleQuad = captureVisibleQuad = regionHilights = - teamSight = resourceMapOverlay = storeMapOverlay = false; + teamSight = resourceMapOverlay = storeMapOverlay = + showFrustum = captureFrustum = false; } bool findResourceMapRes(string &res) { @@ -130,6 +131,34 @@ } +void DebugRenderer::sceneEstablished(SceneCuller &culler) { + if (captureFrustum) { + captureFrustum = false; + for (int i=0; i < 8; ++i) { + frstmPoints[i] = culler.frstmPoints[i]; + } + + for (int i=0; i < culler.boundingPoints.size(); ++i) { + Vec2i pos(culler.boundingPoints[i].x, culler.boundingPoints[i].y); + RegionHilightCallback::blueCells.insert(pos); + } + + vector<Vec2f>::iterator it = culler.visiblePoly.begin(); + for ( ; it != culler.visiblePoly.end(); ++it) { + Vec2i pos(it->x, it->y); + RegionHilightCallback::greenCells.insert(pos); + } + for ( int i=0; i < culler.cellExtrema.spans.size(); ++i) { + int y = culler.cellExtrema.min_y + i; + int x1 = culler.cellExtrema.spans[i].first; + int x2 = culler.cellExtrema.spans[i].second; + RegionHilightCallback::greenCells.insert(Vec2i(x1,y)); + RegionHilightCallback::greenCells.insert(Vec2i(x2,y)); + } + showFrustum = true; + } +} + void DebugRenderer::commandLine(string &line) { string key, val; size_t n = line.find('='); @@ -188,6 +217,12 @@ } else { theConsole.addLine("Bad field: " + val); } + } else if (key == "Frustum") { + if (val == "capture" || val == "Capture") { + captureFrustum = true; + } else if (val == "off" || val == "Off") { + showFrustum = false; + } } else if (key == "ResourceMap") { if ( val == "" ) { // no val supplied, toggle resourceMapOverlay = !resourceMapOverlay; @@ -420,6 +455,42 @@ glPopAttrib(); } +void DebugRenderer::renderFrustum() const { + glPushAttrib( GL_LIGHTING_BIT | GL_ENABLE_BIT | GL_FOG_BIT | GL_TEXTURE_BIT ); + glEnable( GL_BLEND ); + glEnable( GL_COLOR_MATERIAL ); + glDisable( GL_ALPHA_TEST ); + glActiveTexture( GL_TEXTURE0 ); + glDisable( GL_TEXTURE_2D ); + + glPointSize(5); + glColor3f(1.f, 0.2f, 0.2f); + glBegin(GL_POINTS); + for (int i=0; i < 8; ++i) glVertex3fv(frstmPoints[i].ptr()); + glEnd(); + + glLineWidth(2); + glColor3f(0.1f, 0.5f, 0.1f); // near + glBegin(GL_LINE_LOOP); + for (int i=0; i < 4; ++i) glVertex3fv(frstmPoints[i].ptr()); + glEnd(); + + glColor3f(0.1f, 0.1f, 0.5f); // far + glBegin(GL_LINE_LOOP); + for (int i=4; i < 8; ++i) glVertex3fv(frstmPoints[i].ptr()); + glEnd(); + + glColor3f(0.1f, 0.5f, 0.5f); + glBegin(GL_LINES); + for (int i=0; i < 4; ++i) { + glVertex3fv(frstmPoints[i].ptr()); // near + glVertex3fv(frstmPoints[i+4].ptr()); // far + } + glEnd(); + + glPopAttrib(); +} + void DebugRenderer::renderEffects(SceneCuller &culler) { if (regionHilights) { renderRegionHilight(culler); @@ -447,6 +518,9 @@ if (storeMapOverlay) { renderStoreMapOverlay(culler); } + if (showFrustum) { + renderFrustum(); + } } }} // end namespace Glest::Game Modified: branches/search_engine/source/game/graphics/debug_renderer.h =================================================================== --- branches/search_engine/source/game/graphics/debug_renderer.h 2010-01-24 09:26:35 UTC (rev 435) +++ branches/search_engine/source/game/graphics/debug_renderer.h 2010-01-24 12:51:23 UTC (rev 436) @@ -183,6 +183,7 @@ private: set<Vec2i> clusterEdgesWest; set<Vec2i> clusterEdgesNorth; + Vec3f frstmPoints[8]; public: DebugRenderer(); @@ -191,6 +192,8 @@ bool gridTextures, AAStarTextures, HAAStarOverlay, showVisibleQuad, captureVisibleQuad, regionHilights, teamSight, resourceMapOverlay, storeMapOverlay; + bool captureFrustum; + bool showFrustum; private: template<typename CellTextureCallback> @@ -325,10 +328,13 @@ void renderPathOverlay(); void renderIntraClusterEdges(const Vec2i &cluster, CardinalDir dir = CardinalDir::COUNT); + void renderFrustum() const; + public: static void clearWaypoints() { waypoints.clear(); } static void addWaypoint(Vec3f v) { waypoints.push_back(v); } + void sceneEstablished(SceneCuller &culler); bool willRenderSurface() const { return AAStarTextures || gridTextures; } void renderSurface(SceneCuller &culler) { if (AAStarTextures) { Modified: branches/search_engine/source/game/graphics/renderer.cpp =================================================================== --- branches/search_engine/source/game/graphics/renderer.cpp 2010-01-24 09:26:35 UTC (rev 435) +++ branches/search_engine/source/game/graphics/renderer.cpp 2010-01-24 12:51:23 UTC (rev 436) @@ -144,9 +144,6 @@ // ==================== constructor and destructor ==================== Renderer::Renderer() { - IF_DEBUG_EDITION( captureFrustum = false; ) - IF_DEBUG_EDITION( showFrustum = false; ) - GraphicsInterface &gi= GraphicsInterface::getInstance(); FactoryRepository &fr= FactoryRepository::getInstance(); Config &config= Config::getInstance(); @@ -486,75 +483,10 @@ } void Renderer::computeVisibleArea() { - culler.establishScene(); - - IF_DEBUG_EDITION( - if (captureFrustum) { - captureFrustum = false; - for (int i=0; i < 8; ++i) { - frstmPoints[i] = culler.frstmPoints[i]; - } - - for (int i=0; i < culler.boundingPoints.size(); ++i) { - Vec2i pos(culler.boundingPoints[i].x, culler.boundingPoints[i].y); - RegionHilightCallback::blueCells.insert(pos); - } - - vector<Vec2f>::iterator it = culler.visiblePoly.begin(); - for ( ; it != culler.visiblePoly.end(); ++it) { - Vec2i pos(it->x, it->y); - RegionHilightCallback::greenCells.insert(pos); - } - for ( int i=0; i < culler.cellExtrema.spans.size(); ++i) { - int y = culler.cellExtrema.min_y + i; - int x1 = culler.cellExtrema.spans[i].first; - int x2 = culler.cellExtrema.spans[i].second; - RegionHilightCallback::greenCells.insert(Vec2i(x1,y)); - RegionHilightCallback::greenCells.insert(Vec2i(x2,y)); - } - } - ) + IF_DEBUG_EDITION( debugRenderer.sceneEstablished(culler); ) } -IF_DEBUG_EDITION( - void Renderer::renderFrustum() const { - glPushAttrib( GL_LIGHTING_BIT | GL_ENABLE_BIT | GL_FOG_BIT | GL_TEXTURE_BIT ); - glEnable( GL_BLEND ); - glEnable( GL_COLOR_MATERIAL ); - glDisable( GL_ALPHA_TEST ); - glActiveTexture( GL_TEXTURE0 ); - glDisable( GL_TEXTURE_2D ); - - glPointSize(5); - glColor3f(1.f, 0.2f, 0.2f); - glBegin(GL_POINTS); - for (int i=0; i < 8; ++i) glVertex3fv(frstmPoints[i].ptr()); - glEnd(); - - glLineWidth(2); - glColor3f(0.1f, 0.5f, 0.1f); // near - glBegin(GL_LINE_LOOP); - for (int i=0; i < 4; ++i) glVertex3fv(frstmPoints[i].ptr()); - glEnd(); - - glColor3f(0.1f, 0.1f, 0.5f); // far - glBegin(GL_LINE_LOOP); - for (int i=4; i < 8; ++i) glVertex3fv(frstmPoints[i].ptr()); - glEnd(); - - glColor3f(0.1f, 0.5f, 0.5f); - glBegin(GL_LINES); - for (int i=0; i < 4; ++i) { - glVertex3fv(frstmPoints[i].ptr()); // near - glVertex3fv(frstmPoints[i+4].ptr()); // far - } - glEnd(); - - glPopAttrib(); - } -) - // ======================================= // basic rendering // ======================================= @@ -1188,11 +1120,11 @@ // ==================== complex rendering ==================== void Renderer::renderSurface() { -# if _GAE_DEBUG_EDITION_ - if (debugRenderer.willRenderSurface()) { - debugRenderer.renderSurface(culler); - } else { -# endif + IF_DEBUG_EDITION( + if (debugRenderer.willRenderSurface()) { + debugRenderer.renderSurface(culler); + } else { + ) int lastTex=-1; @@ -1290,12 +1222,10 @@ glGetError(); //remove when first mtex problem solved assertGl(); -# if _GAE_DEBUG_EDITION_ - } // end else, if not renderering textures instead of terrain - - debugRenderer.renderEffects(culler); - -# endif + IF_DEBUG_EDITION( + } // end else, if not renderering textures instead of terrain + debugRenderer.renderEffects(culler); + ) } void Renderer::renderObjects(){ Modified: branches/search_engine/source/game/graphics/renderer.h =================================================================== --- branches/search_engine/source/game/graphics/renderer.h 2010-01-24 09:26:35 UTC (rev 435) +++ branches/search_engine/source/game/graphics/renderer.h 2010-01-24 12:51:23 UTC (rev 436) @@ -164,9 +164,6 @@ SceneCuller culler; - //DEBUG - IF_DEBUG_EDITION( Vec3f frstmPoints[8]; ) - private: Renderer(); ~Renderer(); @@ -216,11 +213,6 @@ void computeVisibleArea(); - //DEBUG - IF_DEBUG_EDITION( bool captureFrustum; bool showFrustum; ) - IF_DEBUG_EDITION( void renderFrustum() const; ) - - //basic rendering void renderMouse2d(int mouseX, int mouseY, int anim, float fade= 0.f); void renderMouse3d(); Modified: branches/search_engine/source/game/graphics/scene_culler.h =================================================================== --- branches/search_engine/source/game/graphics/scene_culler.h 2010-01-24 09:26:35 UTC (rev 435) +++ branches/search_engine/source/game/graphics/scene_culler.h 2010-01-24 12:51:23 UTC (rev 436) @@ -121,10 +121,10 @@ } }; -class Renderer; +class DebugRenderer; class SceneCuller { - friend class Renderer; + friend class DebugRenderer; private: enum { Left, Right, Top, Bottom, Near, Far }; Plane frstmPlanes[6]; Modified: branches/search_engine/source/game/gui/gui.cpp =================================================================== --- branches/search_engine/source/game/gui/gui.cpp 2010-01-24 09:26:35 UTC (rev 435) +++ branches/search_engine/source/game/gui/gui.cpp 2010-01-24 12:51:23 UTC (rev 436) @@ -429,12 +429,6 @@ void Gui::hotKey(UserCommand cmd) { int f = 0; switch(cmd) { -# if _GAE_DEBUG_EDITOIN_ - case ucCaptureFrustum: - Renderer::getInstance().captureFrustum = true; - Renderer::getInstance().showFrustum = true; - break; -# endif // goto selection case ucCameraGotoSelection: centerCameraOnSelection(); Modified: branches/search_engine/source/game/gui/keymap.cpp =================================================================== --- branches/search_engine/source/game/gui/keymap.cpp 2010-01-24 09:26:35 UTC (rev 435) +++ branches/search_engine/source/game/gui/keymap.cpp 2010-01-24 12:51:23 UTC (rev 436) @@ -188,9 +188,6 @@ {"Guard", keyG, 0, 0, 0}, {"Follow", 0, 0, 0, 0}, {"Patrol", 0, 0, 0, 0} -# if _GAE_DEBUG_EDITION_ - ,{"ucCaptureFrustum", keyF, 0, 0, 0} -# endif }; #pragma pack(pop) Modified: branches/search_engine/source/game/gui/keymap.h =================================================================== --- branches/search_engine/source/game/gui/keymap.h 2010-01-24 09:26:35 UTC (rev 435) +++ branches/search_engine/source/game/gui/keymap.h 2010-01-24 12:51:23 UTC (rev 436) @@ -83,9 +83,7 @@ ucGuard, ucFollow, ucPatrol, -# if _GAE_DEBUG_EDITION - ucCaptureFrustum, -# endif + ucCount }; Modified: branches/search_engine/source/game/path_finder/cartographer.cpp =================================================================== --- branches/search_engine/source/game/path_finder/cartographer.cpp 2010-01-24 09:26:35 UTC (rev 435) +++ branches/search_engine/source/game/path_finder/cartographer.cpp 2010-01-24 12:51:23 UTC (rev 436) @@ -139,6 +139,7 @@ for ( ; it != resourceLocations[rt].end(); ++it) { Resource *r = world->getMap()->getTile(*it)->getResource(); assert(r); + r->Depleted.connect(this, &Cartographer::onResourceDepleted); Vec2i pos = *it * Map::cellScale; @@ -183,7 +184,6 @@ void Cartographer::onResourceDepleted(Vec2i pos) { const ResourceType *rt = cellMap->getTile(pos/Map::cellScale)->getResource()->getType(); - //pos *= Map::cellScale; Vec2i tl = pos + OrdinalOffsets[OrdinalDir::NORTH_WEST]; Vec2i br = pos + OrdinalOffsets[OrdinalDir::SOUTH_EAST] * 2; resDirtyAreas[rt].push_back(pair<Vec2i,Vec2i>(tl,br)); @@ -207,8 +207,15 @@ } } -PatchMap<1>* Cartographer::buildStoreMap(const Unit *unit) { +void Cartographer::onStoreDestroyed(Unit *unit) { + delete storeMaps[unit]; + storeMaps.erase(unit); +} + +PatchMap<1>* Cartographer::buildStoreMap(Unit *unit) { const UnitType* const &ut = unit->getType(); + + unit->Died.connect(this, &Cartographer::onStoreDestroyed); Vec2i pos = unit->getPos(); const int sx = pos.x; const int sy = pos.y; @@ -217,9 +224,6 @@ PatchMap<1> *pMap = new PatchMap<1>(rect, 0); pMap->zeroMap(); - //debug - //int count = 0; - //cout << "building store map for " << unit->getType()->getName() << "\n\tSetting cells:"; for (int y = sy; y < sy + unit->getSize(); ++y) { for (int x = sx; x < sx + unit->getSize(); ++x) { if (!ut->hasCellMap() || ut->getCellMapCell(x-sx, y-sy)) { @@ -229,15 +233,11 @@ && !pMap->getInfluence(goalPos)) { pMap->setInfluence(goalPos, 1); assert(pMap->getInfluence(goalPos)); - //++count; - //cout << " " << goalPos; } } } } } - //cout << "\nMade store map for " << unit->getType()->getName() << " @ " - // << unit->getPos() << ", added " << count << " goal cells." << endl; storeMaps[unit] = pMap; return pMap; } Modified: branches/search_engine/source/game/path_finder/cartographer.h =================================================================== --- branches/search_engine/source/game/path_finder/cartographer.h 2010-01-24 09:26:35 UTC (rev 435) +++ branches/search_engine/source/game/path_finder/cartographer.h 2010-01-24 12:51:23 UTC (rev 436) @@ -101,10 +101,12 @@ void initResourceMap(const ResourceType *rt, PatchMap<1> *pMap); void fixupResourceMap(const ResourceType *rt, const Vec2i &tl, const Vec2i &br); - PatchMap<1>* buildStoreMap(const Unit *unit); + PatchMap<1>* buildStoreMap(Unit *unit); // slots void onResourceDepleted(Vec2i pos); + void onStoreDestroyed(Unit *unit); + void onUnitBorn(Unit *unit); void onUnitMoved(Unit *unit); void onUnitMorphed(Unit *unit, const UnitType *type); @@ -152,7 +154,7 @@ if (it != storeMaps.end()) { return it->second; } - return buildStoreMap(unit); + return buildStoreMap(const_cast<Unit*>(unit)); } ClusterMap* getClusterMap() const { return clusterMap; } Modified: branches/search_engine/source/game/path_finder/route_planner.cpp =================================================================== --- branches/search_engine/source/game/path_finder/route_planner.cpp 2010-01-24 09:26:35 UTC (rev 435) +++ branches/search_engine/source/game/path_finder/route_planner.cpp 2010-01-24 12:51:23 UTC (rev 436) @@ -114,14 +114,17 @@ , nsgSearchEngine(NULL) { theLogger.add( "Initialising SearchEngine", true ); + const int &w = world->getMap()->getW(); + const int &h = world->getMap()->getH(); //cout << "NodeStore SearchEngine\n"; - nodeStore = new NodeStore(world->getMap()->getW(), world->getMap()->getH()); + nodeStore = new NodeStore(w, h); nsgSearchEngine = new SearchEngine<NodeStore>(nodeStore, true); nsgSearchEngine->setInvalidKey(Vec2i(-1)); GridNeighbours::setSearchSpace(SearchSpace::CELLMAP); //cout << "Transition SearchEngine\n"; - tNodeStore = new TransitionNodeStore(2048); //FIXME (size) + int numNodes = w * h / 4096 * 250; // 250 nodes for every 16 clusters + tNodeStore = new TransitionNodeStore(numNodes); tSearchEngine = new TransitionSearchEngine(tNodeStore, true); tSearchEngine->setInvalidKey(NULL); } Modified: branches/search_engine/source/game/type_instances/unit.h =================================================================== --- branches/search_engine/source/game/type_instances/unit.h 2010-01-24 09:26:35 UTC (rev 435) +++ branches/search_engine/source/game/type_instances/unit.h 2010-01-24 12:51:23 UTC (rev 436) @@ -422,11 +422,11 @@ typedef sigslot::signal2<u_ptr, Vec2i> UnitPosSignal; typedef sigslot::signal2<u_ptr, ut_ptr> MorphSignal; - UnitSignal Created; /**< fires when a unit is created */ - UnitSignal Born; /**< fires when a unit is 'born' */ - UnitPosSignal Moving; /**< fires just before a unit is moved */ - UnitPosSignal Moved; /**< fires after a unit has moved */ - MorphSignal Morphed; /**< */ + //UnitSignal Created; /**< fires when a unit is created */ + //UnitSignal Born; /**< fires when a unit is 'born' */ + //UnitPosSignal Moving; /**< fires just before a unit is moved */ + //UnitPosSignal Moved; /**< fires after a unit has moved */ + //MorphSignal Morphed; /**< */ UnitSignal Died; /**< */ //other This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |