Revision: 2688 http://rigsofrods.svn.sourceforge.net/rigsofrods/?rev=2688&view=rev Author: ulteq Date: 2012-05-26 03:52:34 +0000 (Sat, 26 May 2012) Log Message: ----------- Terrain WIP
Modified Paths: -------------- trunk/source/main/terrain/TerrainGeometryManager.cpp trunk/source/main/terrain/TerrainGeometryManager.h trunk/source/main/terrain/TerrainManager.cpp trunk/source/main/terrain/TerrainManager.h trunk/source/main/terrain/TerrainObjectManager.cpp trunk/source/main/terrain/TerrainObjectManager.h Modified: trunk/source/main/terrain/TerrainGeometryManager.cpp =================================================================== --- trunk/source/main/terrain/TerrainGeometryManager.cpp 2012-05-26 03:44:14 UTC (rev 2687) +++ trunk/source/main/terrain/TerrainGeometryManager.cpp 2012-05-26 03:52:34 UTC (rev 2688) @@ -26,9 +26,8 @@ using namespace Ogre; -TerrainGeometryManager::TerrainGeometryManager(Ogre::SceneManager *smgr, TerrainManager *terrainManager) : - mSceneMgr(smgr) - , terrainManager(terrainManager) +TerrainGeometryManager::TerrainGeometryManager(TerrainManager *terrainManager) : + terrainManager(terrainManager) , disableCaching(false) , mTerrainsImported(false) { Modified: trunk/source/main/terrain/TerrainGeometryManager.h =================================================================== --- trunk/source/main/terrain/TerrainGeometryManager.h 2012-05-26 03:44:14 UTC (rev 2687) +++ trunk/source/main/terrain/TerrainGeometryManager.h 2012-05-26 03:52:34 UTC (rev 2688) @@ -17,8 +17,8 @@ You should have received a copy of the GNU General Public License along with Rigs of Rods. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef TerrainGeometryManager_H__ -#define TerrainGeometryManager_H__ +#ifndef __TerrainGeometryManager_H_ +#define __TerrainGeometryManager_H_ #include "RoRPrerequisites.h" @@ -34,7 +34,8 @@ class TerrainGeometryManager { public: - TerrainGeometryManager(Ogre::SceneManager *smgr, TerrainManager *terrainManager); + + TerrainGeometryManager(TerrainManager *terrainManager); ~TerrainGeometryManager(); void loadOgreTerrainConfig(Ogre::String filename); @@ -57,16 +58,16 @@ } protected: + + Ogre::ConfigFile terrainConfig; + Ogre::String baseName; + TerrainManager *terrainManager; + TerrainObjectManager *objectManager; bool disableCaching; bool mTerrainsImported; - Ogre::SceneManager *mSceneMgr; - TerrainManager *terrainManager; int mapsizex, mapsizey, mapsizez, pageSize, terrainSize, worldSize; - Ogre::String baseName; - Ogre::ConfigFile terrainConfig; int pageMinX, pageMaxX, pageMinY, pageMaxY; int terrainLayers; - TerrainObjectManager *objectManager; // terrain engine specific Ogre::TerrainGroup *mTerrainGroup; @@ -88,6 +89,5 @@ void initBlendMaps( Ogre::Terrain* t ); void getTerrainImage(int x, int y, Ogre::Image& img); }; -#endif // TerrainGeometryManager_H__ - +#endif // __TerrainGeometryManager_H_ Modified: trunk/source/main/terrain/TerrainManager.cpp =================================================================== --- trunk/source/main/terrain/TerrainManager.cpp 2012-05-26 03:44:14 UTC (rev 2687) +++ trunk/source/main/terrain/TerrainManager.cpp 2012-05-26 03:52:34 UTC (rev 2688) @@ -19,23 +19,26 @@ */ #include "TerrainManager.h" +#include "BeamData.h" #include "BeamFactory.h" -#include "CameraManager.h" -#include "RoRFrameListener.h" -#include "SkyManager.h" -#include "TerrainObjectManager.h" -#include "TerrainGeometryManager.h" -#include "TerrainHeightFinder.h" - +#include "Character.h" +#include "DustManager.h" +#include "GlowMaterialListener.h" #include "ScriptEngine.h" - +#include "Settings.h" #include "ShadowManager.h" +#include "SkyManager.h" +#include "SoundScriptManager.h" +#include "TerrainGeometryManager.h" +#include "TerrainObjectManager.h" #include "dashboard.h" - +#include "envmap.h" +#include "errorutils.h" +#include "gui_friction.h" #include "Character.h" #include "hdrlistener.h" - +#include "language.h" #include "utils.h" using namespace Ogre; @@ -44,8 +47,9 @@ mSceneMgr(smgr) , mWindow(window) , mCamera(camera) - , waterLine(-9999) - , person(person) + , mCharacter(person) + , loading_state(NONE_LOADED) + , water_height(-9999) { } @@ -55,10 +59,10 @@ } -void TerrainManager::loadTerrain( Ogre::String filename ) +void TerrainManager::loadTerrain(String filename) { - char line[1024] = ""; DataStreamPtr ds; + try { ds = ResourceGroupManager::getSingleton().openResource(filename, ResourceGroupManager::AUTODETECT_RESOURCE_GROUP_NAME); @@ -72,51 +76,42 @@ // now generate the hash of it fileHash = generateHashFromDataStream(ds); - terrainConfig.load(ds, "\t:=", false); + mTerrainConfig.load(ds, "\t:=", false); // read in the settings - terrainName = terrainConfig.getSetting("Name"); - ogreTerrainConfigFilename = terrainConfig.getSetting("GeometryConfig"); + terrain_name = mTerrainConfig.getSetting("Name"); + + ogre_terrain_config_filename = mTerrainConfig.getSetting("GeometryConfig"); // otc = ogre terrain config - if (ogreTerrainConfigFilename.find(".otc") == String::npos) + if (ogre_terrain_config_filename.find(".otc") == String::npos) { showError(_L("Terrain loading error"), _L("the new terrain mode only supports .otc configurations")); exit(125); } - if(!terrainConfig.getSetting("WaterLine").empty()) - waterLine = StringConverter::parseReal(terrainConfig.getSetting("WaterLine")); + if (!mTerrainConfig.getSetting("WaterLine").empty()) + { + water_height = StringConverter::parseReal(mTerrainConfig.getSetting("WaterLine")); + } - ambientColor = StringConverter::parseColourValue(terrainConfig.getSetting("AmbientColor")); - startPosition = StringConverter::parseVector3(terrainConfig.getSetting("StartPosition")); + ambient_color = StringConverter::parseColourValue(mTerrainConfig.getSetting("AmbientColor")); + start_position = StringConverter::parseVector3(mTerrainConfig.getSetting("StartPosition")); // then, init the subsystems, order is important :) initSubSystems(); fixCompositorClearColor(); - - // fix the person starting position - /* - if (persostart.isZeroLength() && !spl.pos.isZeroLength()) - { - if (hfinder) - persostart = Vector3(spl.pos.x, hfinder->getHeightAt(spl.pos.x, spl.pos.z), spl.pos.z); - else - persostart = spl.pos; - } - */ - loadTerrainObjects(); collisions->printStats(); - loading_state=TERRAIN_LOADED; + loading_state = TERRAIN_LOADED; - if (debugCollisions) - collisions->createCollisionDebugVisualization(); + //if (debugCollisions) + //collisions->createCollisionDebugVisualization(); // bake the decals //finishTerrainDecal(); @@ -127,13 +122,10 @@ void TerrainManager::initSubSystems() { // objects - .odef support - objectManager = new TerrainObjectManager(mSceneMgr, this); + object_manager = new TerrainObjectManager(this); // geometry - ogre terrain things - geometryManager = new TerrainGeometryManager(mSceneMgr, this); - - // collision integration - initHeightFinder(); + geometry_manager = new TerrainGeometryManager(this); // shadows initShadows(); @@ -150,79 +142,74 @@ initVegetation(); if (BSETTING("HDR", false)) + { initHDR(); - + } if (BSETTING("Glow", false)) + { initGlow(); - + } if (BSETTING("Motion blur", false)) + { initMotionBlur(); - - + } if (BSETTING("Sunburn", false)) + { initSunburn(); - - if(waterLine != -9999) + } + if (water_height != -9999) + { initWater(); - - //environment map - if(!BSETTING("Envmapdisable", false)) + } + // environment map + if (!BSETTING("Envmapdisable", false)) + { initEnvironmentMap(); - - // map must be loaded before the script engine + } // init the map if (!BSETTING("disableOverViewMap", false)) + { initSurveyMap(); - - + } initDashboards(); } void TerrainManager::initCamera() { - mCamera->getViewport()->setBackgroundColour(ambientColor); + mCamera->getViewport()->setBackgroundColour(ambient_color); - // still required? - farclip = ISETTING("SightRange", 2000); - bool inifite_farclip = false; - if (farclip == 5000 && mRoot->getRenderSystem()->getCapabilities()->hasCapability(Ogre::RSC_INFINITE_FAR_PLANE)) - { - mCamera->setFarClipDistance(0); // enable infinite far clip distance if we can - inifite_farclip = true; - } else - { - farclip = std::min((float)farclip, terrainzsize * 1.8f); - mCamera->setFarClipDistance(farclip); - } + //mCamera->setFarClipDistance(0); - mCamera->setPosition(startPosition); + mCamera->setPosition(start_position); } void TerrainManager::initSkySubSystem() { #ifdef USE_CAELUM - //Caelum skies - useCaelum = SSETTING("Sky effects", "Caelum (best looking, slower)")=="Caelum (best looking, slower)"; + // Caelum skies + bool useCaelum = SSETTING("Sky effects", "Caelum (best looking, slower)")=="Caelum (best looking, slower)"; + if (useCaelum) { - skyManager = new SkyManager(mSceneMgr, mWindow, mCamera); + sky_manager = new SkyManager(mSceneMgr, mWindow, mCamera); // try to load caelum config - String caelumConfig = terrainConfig.getSetting("CaelumConfigFile"); - if(!caelumConfig.empty() && ResourceGroupManager::getSingleton().resourceExistsInAnyGroup(caelumConfig)) + String caelumConfig = mTerrainConfig.getSetting("CaelumConfigFile"); + + if (!caelumConfig.empty() && ResourceGroupManager::getSingleton().resourceExistsInAnyGroup(caelumConfig)) { // config provided and existing, use it :) - skyManager->loadScript(caelumConfig); + sky_manager->loadScript(caelumConfig); } else { // no config provided, fall back to the default one - skyManager->loadScript("ror_default_sky"); + sky_manager->loadScript("ror_default_sky"); } -#endif //USE_CAELUM } else -#endif //CAELUM +#endif //USE_CAELUM { - String sandStormConfig = terrainConfig.getSetting("SandStormCubeMap"); + String sandStormConfig = mTerrainConfig.getSetting("SandStormCubeMap"); + if (!sandStormConfig.empty()) { // use custom @@ -237,27 +224,27 @@ void TerrainManager::initLight() { - if(useCaelum) + if (use_caelum) { - mainLight = skyManager->getMainLight(); + main_light = sky_manager->getMainLight(); } else { // screw caelum, we will roll our own light // Create a light - mainLight = mSceneMgr->createLight("MainLight"); + main_light = mSceneMgr->createLight("MainLight"); //directional light for shadow - mainLight->setType(Light::LT_DIRECTIONAL); - mainLight->setDirection(0.785, -0.423, 0.453); + main_light->setType(Light::LT_DIRECTIONAL); + main_light->setDirection(0.785, -0.423, 0.453); - mainLight->setDiffuseColour(ambientColor); - mainLight->setSpecularColour(ambientColor); + main_light->setDiffuseColour(ambient_color); + main_light->setSpecularColour(ambient_color); } } void TerrainManager::initFog() { - mSceneMgr->setFog(FOG_LINEAR, ambientColor, 0, farclip * 0.7, farclip * 0.9); + mSceneMgr->setFog(FOG_LINEAR, ambient_color, 0, farclip * 0.7, farclip * 0.9); } void TerrainManager::initVegetation() @@ -291,14 +278,14 @@ void TerrainManager::initHDR() { Viewport *vp = mCamera->getViewport(); - Ogre::CompositorInstance *instance = Ogre::CompositorManager::getSingleton().addCompositor(vp, "HDR", 0); - Ogre::CompositorManager::getSingleton().setCompositorEnabled(vp, "HDR", true); + CompositorInstance *instance = CompositorManager::getSingleton().addCompositor(vp, "HDR", 0); + CompositorManager::getSingleton().setCompositorEnabled(vp, "HDR", true); // HDR needs a special listener - hdrListener = new HDRListener(); - instance->addListener(hdrListener); - hdrListener->notifyViewportSize(vp->getActualWidth(), vp->getActualHeight()); - hdrListener->notifyCompositor(instance); + hdr_listener = new HDRListener(); + instance->addListener(hdr_listener); + hdr_listener->notifyViewportSize(vp->getActualWidth(), vp->getActualHeight()); + hdr_listener->notifyCompositor(instance); } void TerrainManager::initGlow() @@ -306,7 +293,7 @@ CompositorManager::getSingleton().addCompositor(mCamera->getViewport(), "Glow"); CompositorManager::getSingleton().setCompositorEnabled(mCamera->getViewport(), "Glow", true); GlowMaterialListener *gml = new GlowMaterialListener(); - Ogre::MaterialManager::getSingleton().addListener(gml); + MaterialManager::getSingleton().addListener(gml); } void TerrainManager::initMotionBlur() @@ -410,7 +397,7 @@ // now with extensive error checking if (CompositorManager::getSingleton().hasCompositorChain(mCamera->getViewport())) { - // //CompositorManager::getSingleton().getCompositorChain(mCamera->getViewport())->getCompositor(0)->getTechnique()->getOutputTargetPass()->getPass(0)->setClearColour(fadeColour); + // //CompositorManager::getSingleton().getCompositorChain(mCamera->getViewport())->getCompositor(0)->getTechnique()->getOutputTargetPass()->getPass(0)->setClearColour(fade_color); CompositorInstance *co = CompositorManager::getSingleton().getCompositorChain(mCamera->getViewport())->_getOriginalSceneCompositor(); if (co) { @@ -422,7 +409,9 @@ { CompositionPass *p = ctp->getPass(0); if (p) - p->setClearColour(fadeColour); + { + p->setClearColour(fade_color); + } } } } @@ -432,7 +421,7 @@ void TerrainManager::initWater() { //water! - if (waterLine != -9999) + if (water_height != -9999) { bool usewaves=(BSETTING("Waves", false)); @@ -453,98 +442,67 @@ else if (waterSettingsString == "Reflection + refraction (quality optimized)") water = new WaterOld(WaterOld::WATER_FULL_QUALITY, mCamera, mSceneMgr, mWindow, waterline, &mapsizex, &mapsizez, usewaves); } - if (water) water->setFadeColour(ambientColor); - if (person) person->setWater(water); + if (water) water->setFadeColour(ambient_color); + if (mCharacter) mCharacter->setWater(water); BeamFactory::getSingleton().w = water; DustManager::getSingleton().setWater(water); } void TerrainManager::initEnvironmentMap() { - envmap = new Envmap(mSceneMgr, mWindow, mCamera, BSETTING("Envmap", false), ISETTING("EnvmapUpdateRate", 1)); + envmap = new Envmap(this); } void TerrainManager::initDashboards() { - dashboard = new Dashboard(mSceneMgr); + dashboard = new Dashboard(this); } -void TerrainManager::initHeightFinder() -{ - heightFinder = new TerrainHeightFinder(geometryManager); - collisions->setHfinder(heightFinder); - - if (person) - person->setHFinder(heightFinder); - - // update hfinder instance in factory - BeamFactory::getSingleton().mfinder = heightFinder; -} - void TerrainManager::initShadows() { - shadowManager = new ShadowManager(mSceneMgr, mWindow, mCamera); - shadowManager->loadConfiguration(); + shadow_manager = new ShadowManager(this); + shadow_manager->loadConfiguration(); } void TerrainManager::loadTerrainObjects() { - Ogre::ConfigFile::SettingsIterator objectsIterator = terrainConfig.getSettingsIterator("Objects"); - Ogre::String svalue, sname; + ConfigFile::SettingsIterator objectsIterator = mTerrainConfig.getSettingsIterator("Objects"); + String svalue, sname; while (objectsIterator.hasMoreElements()) { sname = objectsIterator.peekNextKey(); - Ogre::StringUtil::trim(sname); + StringUtil::trim(sname); svalue = objectsIterator.getNext(); - Ogre::StringUtil::trim(svalue); + StringUtil::trim(svalue); - objectManager->loadObjectConfigFile(sname); + object_manager->loadObjectConfigFile(sname); } } void TerrainManager::initCollisions() { - collisions = new Collisions(this, mSceneMgr, debugCollisions); - - // load AS -#ifdef USE_ANGELSCRIPT - ScriptEngine::getSingleton().setCollisions(collisions); - - // update icollisions instance in factory - BeamFactory::getSingleton().icollisions = collisions; - - if (person) person->setCollisions(collisions); -#ifdef USE_MYGUI - if (GUI_Friction::getSingletonPtr()) - GUI_Friction::getSingleton().setCollisions(collisions); -#endif //MYGUI - - // advanced camera collision tools - mCollisionTools = new MOC::CollisionTools(mSceneMgr); - // set how far we want the camera to be above ground - mCollisionTools->setHeightAdjust(0.2f); + collisions = new Collisions(this); + gEnv->collisions = collisions; } void TerrainManager::initScripting() { #ifdef USE_ANGELSCRIPT - if (!netmode) + if (!BSETTING("netmode", false)) { - Ogre::ConfigFile::SettingsIterator objectsIterator = terrainConfig.getSettingsIterator("scripts"); - Ogre::String svalue, sname; - int loaded = 0; + ConfigFile::SettingsIterator objectsIterator = mTerrainConfig.getSettingsIterator("scripts"); + bool loaded = false; while (objectsIterator.hasMoreElements()) { - sname = objectsIterator.peekNextKey(); - Ogre::StringUtil::trim(sname); - svalue = objectsIterator.getNext(); - Ogre::StringUtil::trim(svalue); + String sname = objectsIterator.peekNextKey(); + StringUtil::trim(sname); + String svalue = objectsIterator.getNext(); + StringUtil::trim(svalue); ScriptEngine::getSingleton().loadScript(sname); - loaded++; + loaded = true; } - - if(loaded == 0) + if (loaded) { // load a default script that does the most basic things ScriptEngine::getSingleton().loadScript("default.as"); @@ -566,12 +524,7 @@ BeamFactory::getSingleton().recalcGravityMasses(); } -float TerrainManager::getGravity() -{ - return gravity; -} - void TerrainManager::initSurveyMap() { - surveyMap = new MapControl(mapsizex, mapsizey, mapsizez); + //survey_map = new MapControl(mapsizex, mapsizey, mapsizez); } Modified: trunk/source/main/terrain/TerrainManager.h =================================================================== --- trunk/source/main/terrain/TerrainManager.h 2012-05-26 03:44:14 UTC (rev 2687) +++ trunk/source/main/terrain/TerrainManager.h 2012-05-26 03:52:34 UTC (rev 2688) @@ -17,8 +17,8 @@ You should have received a copy of the GNU General Public License along with Rigs of Rods. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef TERRAINMANAGER_H__ -#define TERRAINMANAGER_H__ +#ifndef __TerrainManager_H_ +#define __TerrainManager_H_ #include "RoRPrerequisites.h" #include <OgreConfigFile.h> @@ -26,82 +26,77 @@ class TerrainManager { public: - TerrainManager(Ogre::SceneManager *smgr, Ogre::RenderWindow *window, Ogre::Camera *camera, Character *person); + + TerrainManager(Ogre::SceneManager *smgr, Ogre::RenderWindow *window, Ogre::Camera *camera, Character *character); ~TerrainManager(); void loadTerrain(Ogre::String filename); - - void setGravity(float value); - float getGravity(); - - + inline Collisions *getCollisions() { return collisions; }; inline Water *getWater() { return water; }; inline Envmap *getEnvmap() { return envmap; }; + void setGravity(float value); + float getGravity() { return gravity; }; + protected: // members - Ogre::SceneManager *mSceneMgr; - Ogre::RenderWindow *mWindow; Ogre::Camera *mCamera; - Ogre::ConfigFile terrainConfig; - Character *person; + Ogre::ConfigFile mTerrainConfig; + Ogre::RenderWindow *mWindow; + Ogre::SceneManager *mSceneMgr; + Character *mCharacter; // subsystems - TerrainObjectManager *objectManager; - TerrainGeometryManager *geometryManager; - TerrainHeightFinder *heightFinder; - ShadowManager *shadowManager; - SkyManager *skyManager; - Envmap *envmap; - Dashboard *dashboard; + Character *character; Collisions *collisions; - Water *water; - MapControl *surveyMap; + Dashboard *dashboard; + Envmap *envmap; + HDRListener *hdr_listener; + MapControl *survey_map; + ShadowManager *shadow_manager; + SkyManager *sky_manager; + TerrainGeometryManager *geometry_manager; + TerrainHeightFinder *height_finder; + TerrainObjectManager *object_manager; + Water *water; - // subsystem properties - HDRListener *hdrListener; - - // properties + Ogre::ColourValue ambient_color; + Ogre::ColourValue fade_color; + Ogre::Light *main_light; Ogre::String fileHash; - Ogre::String terrainName; - Ogre::String ogreTerrainConfigFilename; - - float waterLine; - Ogre::ColourValue ambientColor; - Ogre::Vector3 startPosition; - bool useCaelum; - int farclip; + Ogre::String ogre_terrain_config_filename; + Ogre::String terrain_name; + Ogre::Vector3 start_position; + bool use_caelum; float gravity; + float water_height; + int farclip; + int loading_state; - - Ogre::Light *mainLight; - - // internal methods - void initSubSystems(); void initCamera(); - void initSkySubSystem(); - void initLight(); + void initCollisions(); + void initDashboards(); + void initEnvironmentMap(); void initFog(); - void initVegetation(); - void initHDR(); void initGlow(); + void initHDR(); + void initLight(); void initMotionBlur(); + void initScripting(); + void initShadows(); + void initSkySubSystem(); + void initSubSystems(); void initSunburn(); + void initVegetation(); void initWater(); - void initEnvironmentMap(); - void initDashboards(); - void initHeightFinder(); - void initShadows(); - void initCollisions(); - void initScripting(); void initSurveyMap(); void fixCompositorClearColor(); void loadTerrainObjects(); }; -#endif // TERRAINMANAGER_H__ +#endif // __TerrainManager_H_ Modified: trunk/source/main/terrain/TerrainObjectManager.cpp =================================================================== --- trunk/source/main/terrain/TerrainObjectManager.cpp 2012-05-26 03:44:14 UTC (rev 2687) +++ trunk/source/main/terrain/TerrainObjectManager.cpp 2012-05-26 03:52:34 UTC (rev 2688) @@ -26,9 +26,8 @@ using namespace Ogre; -TerrainObjectManager::TerrainObjectManager(Ogre::SceneManager *smgr, TerrainManager *terrainManager) : - mSceneMgr(smgr) - , terrainManager(terrainManager) +TerrainObjectManager::TerrainObjectManager(TerrainManager *terrainManager) : + terrainManager(terrainManager) { } Modified: trunk/source/main/terrain/TerrainObjectManager.h =================================================================== --- trunk/source/main/terrain/TerrainObjectManager.h 2012-05-26 03:44:14 UTC (rev 2687) +++ trunk/source/main/terrain/TerrainObjectManager.h 2012-05-26 03:52:34 UTC (rev 2688) @@ -17,22 +17,23 @@ You should have received a copy of the GNU General Public License along with Rigs of Rods. If not, see <http://www.gnu.org/licenses/>. */ -#ifndef TERRAINOBJECTMANAGER_H__ -#define TERRAINOBJECTMANAGER_H__ +#ifndef __TerrainObjectManager_H_ +#define __TerrainObjectManager_H_ #include "RoRPrerequisites.h" class TerrainObjectManager { public: - TerrainObjectManager(Ogre::SceneManager *smgr, TerrainManager *terrainManager); + + TerrainObjectManager(TerrainManager *terrainManager); ~TerrainObjectManager(); void loadObjectConfigFile(Ogre::String filename); protected: - Ogre::SceneManager *mSceneMgr; + TerrainManager *terrainManager; typedef struct { @@ -57,16 +58,11 @@ Road *road; - std::map< std::string, loaded_object_t > loadedObjects; - std::map< std::string, spawn_location_t > netSpawnPos; - std::vector< animated_object_t > animatedObjects; - localizer_t localizers[64]; void loadObject(const char* name, float px, float py, float pz, float rx, float ry, float rz, Ogre::SceneNode * bakeNode, const char* instancename, bool enable_collisions=true, int scripthandler=-1, const char *type=0, bool uniquifyMaterial=false); void unloadObject(const char* name); bool updateAnimatedObjects(float dt); }; -#endif // TERRAINOBJECTMANAGER_H__ - +#endif // __TerrainObjectManager_H_ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Rigsofrods-devel mailing list Rigsofrods-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/rigsofrods-devel