Changeset 7

Show
Ignore:
Timestamp:
01/09/09 01:50:22 (3 years ago)
Author:
nktug
Message:

END OF THE FIRST ALPHA VERSION
+ Save and load function is implemented
+ All object type is used in the editor (PC, NPC, MONSTER and BUILDING)

= > Just plan some small functionality like suppress an object or put logs for example.

Location:
trunk
Files:
6 added
12 modified

Legend:

Unmodified
Added
Removed
  • trunk/config/objects.txt

    r6 r7  
    55    Imperial             
    66        OgreHead        ogrehead.mesh           MSTR    Ogre3D head mesh use for test 
    7         Ninja           ninja.mesh              PJ      Ogre3D ninja mesh use for test 
     7        Ninja           ninja.mesh              NPC     Ogre3D ninja mesh use for test 
     8Flore                    
     9    Plantes              
     10        Mushroom        Mushroom1_1.mesh        BLD     Ogre3D ninja mesh use for test 
     11        Weed            Weed1_1.mesh            BLD     test 
     12        Twig            Twig1_1.mesh            BLD     test 
     13        Bush            Bush1_1.mesh            BLD     test 
     14        Fern            Fern1_1.mesh            BLD     test 
     15        WhiteFlower     WhiteFlower1_1.mesh     BLD     test 
     16    Arbres               
     17        Tropical        Tropical1_1.mesh        BLD     test 
     18Decors                   
     19    Elements             
     20        Rock            Rock1_1.mesh            BLD     test 
  • trunk/include/dreamforge/objects/Object.hh

    r4 r7  
    3636      CGameObject( void ); 
    3737      virtual ~CGameObject(void); 
     38       
     39      void destroy( void ); 
    3840 
    3941      // MANIPULATORS 
  • trunk/src/LevelEditor.cc

    r6 r7  
    1010#include "LevelEditor.hh" 
    1111#include "dreamforge/GameEngine.hh" 
    12  #include "Properties.hh" 
     12#include "Properties.hh" 
    1313  
    1414#include "dreamforge/GameObjectManager.hh" 
    15  
     15#include "dreamforge/GameSaveFile.hh" 
     16#include "dreamforge/XmlParser.hh" 
    1617 
    1718#if (OGRE_PLATFORM  == OGRE_PLATFORM_LINUX) 
     
    105106  CEngineSystem::getInstance()->destroy();     
    106107  mRoot = 0; 
     108} 
     109 
     110//------------------------------------------------------------------------------------------------  
     111void LevelEdWidget::saveObjectToFile(std::string& savefile) 
     112{ 
     113  CSaveFile::getInstance()->setFileName(savefile); 
     114  CSaveFile::getInstance()->writeBegin(); 
     115   
     116  // Write all objects to file 
     117  CSaveFile::getInstance()->write("<objects>"); 
     118  CObjectManager::getInstance()->saveToFile(); 
     119  CSaveFile::getInstance()->write("</objects>"); 
     120   
     121  CSaveFile::getInstance()->writeEnd(); 
     122  CSaveFile::getInstance()->saveFile(); 
     123  CSaveFile::getInstance()->destroy();   
     124} 
     125 
     126//------------------------------------------------------------------------------------------------  
     127void LevelEdWidget::loadObjectFromFile(std::string& loadfile) 
     128{ 
     129        // Destroy all object loaded in game 
     130        CObjectManager::getInstance()->cleanAll(); 
     131   
     132        boost::shared_ptr<XmlParser> gameLoader (new XmlParser()); 
     133  gameLoader->loadParser(loadfile);  
    107134} 
    108135 
     
    252279        headNode->showBoundingBox(false); 
    253280 */ 
    254   ObjectPtr tObj = CObjectFactory::getInstance()->createObject("PJ"); 
     281  ObjectPtr tObj = CObjectFactory::getInstance()->createObject("NPC"); 
    255282  tObj->setObjectName("toto"); 
    256283  tObj->setObjectMeshFile("ninja.mesh"); 
     
    302329        mCamera = mSceneMgr->createCamera("PlayerCam 1"); 
    303330 
    304         mCamera->setPosition(Ogre::Vector3(430,500,430)); 
     331        mCamera->setPosition(Ogre::Vector3(1479,709,1389)); 
    305332        mCamera->lookAt(Ogre::Vector3(100,0,100)); 
    306333        mCamera->setAutoAspectRatio(true); 
     
    535562 
    536563//------------------------------------------------------------------------------------------------  
     564void LevelEdWidget::mouveObjectFromRay(QMouseEvent* evt, Ogre::SceneNode* node) 
     565{ 
     566  Ogre::Ray mouseRay = mCamera->getCameraToViewportRay((double)evt->pos().x()/(double)width(), (double)evt->pos().y()/(double)height()); 
     567  Ogre::RaySceneQuery* mRaySceneQuery = mSceneMgr->createRayQuery(Ogre::Ray());; 
     568  mRaySceneQuery->setRay(mouseRay); 
     569  //mRaySceneQuery->setSortByDistance(true); 
     570  Ogre::RaySceneQueryResult &result = mRaySceneQuery->execute(); 
     571  Ogre::RaySceneQueryResult::iterator itr = result.begin(); 
     572 
     573  if (itr != result.end() && itr->worldFragment) 
     574  {  
     575    node->setPosition(itr->worldFragment->singleIntersection.x, itr->worldFragment->singleIntersection.y + 5, itr->worldFragment->singleIntersection.z); 
     576  }    
     577} 
     578 
     579//------------------------------------------------------------------------------------------------  
    537580void LevelEdWidget::mousePressEvent(QMouseEvent* evt) 
    538581{ 
     
    544587      // Create a Ogre ray from the 2D coordinate of the viewport   
    545588      Ogre::Ray mouseRay = mCamera->getCameraToViewportRay((double)evt->pos().x()/(double)width(), (double)evt->pos().y()/(double)height()); 
    546  
    547589      Ogre::RaySceneQuery* mRaySceneQuery = mSceneMgr->createRayQuery(Ogre::Ray());; 
    548590      mRaySceneQuery->setRay(mouseRay); 
     
    552594 
    553595      //Ogre::Real closestDistance = 100000; 
    554  
    555596      closestObject = 0; 
    556597      bool mSelectedObject = false; 
    557598       
    558599      Ogre::RaySceneQueryResult::iterator rayIterator; 
    559  
    560600      // Look if we have reach a Ogre movable object 
    561601      for(rayIterator = result.begin(); rayIterator != result.end(); rayIterator++ )  
     
    629669      iObj->initNodeObject(); 
    630670 
    631       Ogre::Ray mouseRay = mCamera->getCameraToViewportRay((double)evt->pos().x()/(double)width(), (double)evt->pos().y()/(double)height()); 
     671      /*Ogre::Ray mouseRay = mCamera->getCameraToViewportRay((double)evt->pos().x()/(double)width(), (double)evt->pos().y()/(double)height()); 
    632672      Ogre::RaySceneQuery* mRaySceneQuery = mSceneMgr->createRayQuery(Ogre::Ray());; 
    633673      mRaySceneQuery->setRay(mouseRay); 
     
    639679      {  
    640680        iObj->getSceneNode()->setPosition(itr->worldFragment->singleIntersection.x, itr->worldFragment->singleIntersection.y + 5, itr->worldFragment->singleIntersection.z); 
    641       }     
     681      }*/ 
     682      this->mouveObjectFromRay(evt, iObj->getSceneNode());  
     683     
    642684      iObj->getSceneNode()->showBoundingBox(false); 
    643685      iObj->init(); 
     
    713755    if (mouseLeftPressed && mCurentObject.use_count()) // If we have left click and we have an object selected 
    714756    {    
    715       Ogre::Ray mouseRay = mCamera->getCameraToViewportRay((double)evt->pos().x()/(double)width(), (double)evt->pos().y()/(double)height()); 
     757      /*Ogre::Ray mouseRay = mCamera->getCameraToViewportRay((double)evt->pos().x()/(double)width(), (double)evt->pos().y()/(double)height()); 
    716758 
    717759      Ogre::RaySceneQuery* mRaySceneQuery = mSceneMgr->createRayQuery(Ogre::Ray());; 
     
    725767      { 
    726768          mCurentObject->getSceneNode()->setPosition(itr->worldFragment->singleIntersection.x,itr->worldFragment->singleIntersection.y + 10, itr->worldFragment->singleIntersection.z); 
    727       } 
     769      }*/ 
     770      this->mouveObjectFromRay(evt, mCurentObject->getSceneNode());  
    728771    } 
    729772  } 
     
    731774  if(mInsertMode)// && mTempObject) 
    732775  { 
    733     Ogre::Ray mRay = mCamera->getCameraToViewportRay((double)evt->pos().x()/(double)width(), (double)evt->pos().y()/(double)height()); 
     776    /*Ogre::Ray mRay = mCamera->getCameraToViewportRay((double)evt->pos().x()/(double)width(), (double)evt->pos().y()/(double)height()); 
    734777 
    735778                Ogre::RaySceneQuery* mRayScQuery = mSceneMgr->createRayQuery(Ogre::Ray());; 
     
    743786                { 
    744787                                mTempObject->setPosition(it->worldFragment->singleIntersection.x,it->worldFragment->singleIntersection.y + 10, it->worldFragment->singleIntersection.z); 
    745                 }     
     788                }*/ 
     789    this->mouveObjectFromRay(evt, mTempObject); 
    746790  } 
    747791         
  • trunk/src/LevelEditor.hh

    r6 r7  
    3131  void createTempObject(std::string& name, std::string& file, std::string& type); 
    3232  void changeInsertionMode(bool val); 
     33  void saveObjectToFile(std::string& savefile); 
     34  void loadObjectFromFile(std::string& loadfile);   
    3335   
    3436  inline Ogre::Root* getRoot(void) { return mRoot; } 
    3537  inline Ogre::RenderWindow* getRenderWindow(void) { return mRenderWindow; } 
    3638  inline Ogre::SceneManager* getSceneMgr(void) { return mSceneMgr; }  
     39  inline Ogre::Camera* getCam(void) { return mCamera; }  
    3740   
    3841        ObjectPtr                               mCurentObject; // Selected object 
     
    6568        //Ogre::MovableObject* getSelectedNode(float mouseScreenX, float mouseScreenY); 
    6669        bool isHoverObjectSelected(void) const; 
    67  
    6870        void createScene(); 
     71   
    6972  void getSelectedObjectInfo(void); 
    7073  void resetSelectedObjectInfo(void); 
    71          
     74        void mouveObjectFromRay(QMouseEvent* evt, Ogre::SceneNode* node); 
     75   
    7276        void keyPressEvent(QKeyEvent* evt); 
    7377        void keyReleaseEvent(QKeyEvent* evt); 
  • trunk/src/Properties.cc

    r5 r7  
    114114 
    115115  snodeXVal->setSingleStep ( 0.1 ); 
    116   snodeXVal->setMaximum  ( 9999.90 ); 
     116  snodeXVal->setMaximum  ( 99999.99 ); 
    117117  snodeYVal->setSingleStep ( 0.1 ); 
    118   snodeYVal->setMaximum  ( 10.0 ); 
     118  snodeYVal->setMaximum  ( 99999.99 ); 
    119119  snodeZVal->setSingleStep ( 0.1 ); 
    120   snodeZVal->setMaximum  ( 10.0 );   
     120  snodeZVal->setMaximum  ( 99999.99 );   
    121121   
    122122   
  • trunk/src/SConscript

    r4 r7  
    77 
    88bin_files = [ 
     9        'dreamforge/objects/Structure.cc', 
     10        'dreamforge/objects/Character.cc', 
     11        'dreamforge/objects/Monster.cc', 
    912        'dreamforge/objects/Avatar.cc', 
    1013        'dreamforge/objects/ObjectStatistics.cc', 
  • trunk/src/Workbench.cc

    r5 r7  
    1818 
    1919//------------------------------------------------------------------------------------------------  
    20 Workbench::Workbench() 
    21 { 
     20Workbench::Workbench( void ) 
     21{ 
     22  // Set default file name 
     23  mExportFile = "export.save"; 
     24   
    2225  // Create the level editeur widget 
    2326  mLevelEd = new LevelEdWidget; 
     
    6770 
    6871//------------------------------------------------------------------------------------------------  
    69 void Workbench::about() 
     72void Workbench::about( void ) 
    7073{ 
    7174  QMessageBox::about(this, tr("About Application"), 
     
    7679 
    7780//------------------------------------------------------------------------------------------------  
    78 void Workbench::createActions() 
    79 { 
    80    newAct = new QAction(QIcon(":/icons/new.png"), tr("&New"), this); 
     81void Workbench::exportScene( void ) 
     82{ 
     83  QString fileName = QFileDialog::getSaveFileName(this); 
     84  if (false == fileName.isEmpty()) 
     85  { 
     86    QFile file(fileName); 
     87    if (false == file.open(QFile::WriteOnly | QFile::Text))  
     88    { 
     89       QMessageBox::warning(this, tr("Application"), 
     90                            tr("Cannot write file %1:\n%2.") 
     91                            .arg(fileName) 
     92                            .arg(file.errorString())); 
     93       return; 
     94    } 
     95     
     96    mExportFile = fileName; 
     97  } 
     98 
     99  QApplication::setOverrideCursor(Qt::WaitCursor); 
     100  mLevelEd->saveObjectToFile(mExportFile.toStdString()); 
     101  QApplication::restoreOverrideCursor(); 
     102 
     103  statusBar()->showMessage(tr("Export file saved"), 2000); 
     104} 
     105 
     106//------------------------------------------------------------------------------------------------  
     107void Workbench::importScene( void ) 
     108{ 
     109  QString fileName = QFileDialog::getOpenFileName(this); 
     110  if (false == fileName.isEmpty()) 
     111  { 
     112    QFile file(fileName); 
     113    if (!file.open(QFile::ReadOnly | QFile::Text))  
     114    { 
     115       QMessageBox::warning(this, tr("Application"), 
     116                            tr("Cannot read file %1:\n%2.") 
     117                            .arg(fileName) 
     118                            .arg(file.errorString())); 
     119       return; 
     120    } 
     121 
     122    QApplication::setOverrideCursor(Qt::WaitCursor); 
     123    mLevelEd->loadObjectFromFile(fileName.toStdString()); 
     124    QApplication::restoreOverrideCursor(); 
     125 
     126    statusBar()->showMessage(tr("File loaded"), 2000); 
     127  } 
     128   
     129 
     130 
     131} 
     132 
     133//------------------------------------------------------------------------------------------------  
     134void Workbench::createActions( void ) 
     135{ 
     136   newAct = new QAction(QIcon("../../data/icons/copy.png"), tr("&New"), this); 
    81137   newAct->setShortcut(tr("Ctrl+N")); 
    82138   newAct->setStatusTip(tr("Create a new file")); 
    83139 
    84    openAct = new QAction(QIcon(":/icons/open.png"), tr("&Open..."), this); 
     140   openAct = new QAction(QIcon("../../data/icons/open.png"), tr("&Open..."), this); 
    85141   openAct->setShortcut(tr("Ctrl+O")); 
    86142   openAct->setStatusTip(tr("Open an existing file"));; 
    87143 
    88    saveAct = new QAction(QIcon(":/icons/save.png"), tr("&Save"), this); 
     144   saveAct = new QAction(QIcon("../../data/icons/save.png"), tr("&Save"), this); 
    89145   saveAct->setShortcut(tr("Ctrl+S")); 
    90146   saveAct->setStatusTip(tr("Save the document to disk")); 
     
    92148   saveAsAct = new QAction(tr("Save &As..."), this); 
    93149   saveAsAct->setStatusTip(tr("Save the document under a new name")); 
    94  
     150    
     151   exportAct = new QAction(QIcon("../../data/icons/new.png"), tr("&Export scene..."), this); 
     152   exportAct->setStatusTip(tr("Export the scen objects in XML document")); 
     153   connect(exportAct, SIGNAL(triggered()), this, SLOT(exportScene())); 
     154 
     155   importAct = new QAction(QIcon("../../data/icons/cut.png"), tr("&Import scene..."), this); 
     156   importAct->setStatusTip(tr("Import the scene objects from XML document"));   
     157   connect(importAct, SIGNAL(triggered()), this, SLOT(importScene())); 
     158    
    95159   exitAct = new QAction(tr("E&xit"), this); 
    96160   exitAct->setShortcut(tr("Ctrl+Q")); 
     
    109173 
    110174//------------------------------------------------------------------------------------------------  
    111 void Workbench::createMenus() 
     175void Workbench::createMenus( void ) 
    112176{ 
    113177   fileMenu = menuBar()->addMenu(tr("&File")); 
     
    116180   fileMenu->addAction(saveAct); 
    117181   fileMenu->addAction(saveAsAct); 
     182   fileMenu->addAction(exportAct); 
     183   fileMenu->addAction(importAct);    
    118184   fileMenu->addSeparator(); 
    119185   fileMenu->addAction(exitAct); 
     
    127193 
    128194//------------------------------------------------------------------------------------------------  
    129 void Workbench::createToolBars() 
     195void Workbench::createToolBars( void ) 
    130196{ 
    131197   fileToolBar = addToolBar(tr("File")); 
     
    133199   fileToolBar->addAction(openAct); 
    134200   fileToolBar->addAction(saveAct); 
    135 } 
    136  
    137 //------------------------------------------------------------------------------------------------  
    138 void Workbench::createStatusBar() 
     201   fileToolBar->addAction(exportAct); 
     202   fileToolBar->addAction(importAct); 
     203} 
     204 
     205//------------------------------------------------------------------------------------------------  
     206void Workbench::createStatusBar( void ) 
    139207{ 
    140208   statusBar()->showMessage(tr("Ready")); 
     
    142210 
    143211//------------------------------------------------------------------------------------------------  
    144 void Workbench::readSettings() 
     212void Workbench::readSettings( void ) 
    145213{ 
    146214   QSettings settings("Trolltech", "Application Example"); 
     
    152220 
    153221//------------------------------------------------------------------------------------------------  
    154 void Workbench::writeSettings() 
     222void Workbench::writeSettings( void ) 
    155223{ 
    156224   QSettings settings("Trolltech", "Application Example"); 
     
    169237{ 
    170238        Q_UNUSED(evt); 
     239 
     240  statusBar()->clearMessage(); 
     241  
     242  QString fullMsg; 
     243  fullMsg += "FPS : "; 
     244 
     245  QString nbFPS; 
     246  nbFPS.setNum(mLevelEd->getRenderWindow()->getStatistics().lastFPS); 
     247  fullMsg += nbFPS; 
     248 
     249  fullMsg += "     "; 
     250  fullMsg += "Triangles : "; 
     251 
     252  QString nbTriangles; 
     253  nbTriangles.setNum(mLevelEd->getRenderWindow()->getStatistics().triangleCount); 
     254  fullMsg += nbTriangles; 
     255 
     256  //POSITION 
     257  fullMsg += "     "; 
     258  fullMsg += "Position : "; 
     259 
     260  QString camX; 
     261  camX.setNum(mLevelEd->getCam()->getPosition().x); 
     262  fullMsg += camX; 
     263  fullMsg += ", "; 
     264 
     265  QString camY; 
     266  camY.setNum(mLevelEd->getCam()->getPosition().y); 
     267  fullMsg += camY; 
     268  fullMsg += ", "; 
     269 
     270  QString camZ; 
     271  camZ.setNum(mLevelEd->getCam()->getPosition().z); 
     272  fullMsg += camZ; 
     273 
     274  //DIRECTION 
     275  fullMsg += "     "; 
     276  fullMsg += "Direction : "; 
     277 
     278  QString dirX; 
     279  dirX.setNum(mLevelEd->getCam()->getDirection().x); 
     280  fullMsg += dirX; 
     281  fullMsg += ", "; 
     282 
     283  QString dirY; 
     284  dirY.setNum(mLevelEd->getCam()->getDirection().y); 
     285  fullMsg += dirY; 
     286  fullMsg += ", "; 
     287 
     288  QString dirZ; 
     289  dirZ.setNum(mLevelEd->getCam()->getDirection().z); 
     290  fullMsg += dirZ; 
     291 
     292  statusBar()->showMessage(fullMsg);//Update stats 
    171293     
    172294} 
  • trunk/src/Workbench.hh

    r5 r7  
    2525 
    2626 public: 
    27     Workbench(); 
     27    Workbench( void ); 
    2828 
    2929 protected: 
     
    3333 private slots: 
    3434    void about(void); 
    35  
    36  
     35    void exportScene(void); 
     36    void importScene(void); 
     37     
    3738 private: 
    38     void createActions(); 
    39     void createMenus(); 
    40     void createToolBars(); 
    41     void createStatusBar(); 
    42     void readSettings(); 
    43     void writeSettings(); 
     39    void createActions( void ); 
     40    void createMenus( void ); 
     41    void createToolBars( void ); 
     42    void createStatusBar( void ); 
     43    void readSettings( void ); 
     44    void writeSettings( void ); 
    4445                         
    4546    void resizeEvent(QResizeEvent* evt); 
     
    5354    QAction *saveAct; 
    5455    QAction *saveAsAct; 
     56    QAction *exportAct; 
     57    QAction *importAct;     
    5558    QAction *exitAct; 
    5659    QAction *aboutAct; 
    5760    QAction *aboutQtAct; 
     61     
     62    QString mExportFile; 
    5863 
    5964    QTabWidget *tabWidget; 
  • trunk/src/dreamforge/GameEngine.cc

    r4 r7  
    126126                Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/models/mesh", "FileSystem", "General"); 
    127127                Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/models/textures", "FileSystem", "General"); 
    128                 Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/models/animation", "FileSystem", "General");     
     128                Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/models/animation", "FileSystem", "General"); 
     129                Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/models/scripts", "FileSystem", "General");     
    129130                Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/terrain", "FileSystem", "General"); 
     131                Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/terrain/ET", "FileSystem", "General");     
    130132                Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/world", "FileSystem", "General"); 
    131133                Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/OgreCore.zip", "Zip", "Bootstrap"); 
  • trunk/src/dreamforge/GameObjectManager.cc

    r5 r7  
    2323#include "dreamforge/GameObjectManager.hh" 
    2424#include "dreamforge/objects/Avatar.hh" 
    25  
    26  
     25#include "dreamforge/objects/Character.hh" 
     26#include "dreamforge/objects/Monster.hh" 
     27#include "dreamforge/objects/Structure.hh" 
     28  
     29  
     30  
    2731using namespace dreamforge; 
    2832 
     
    6771{ 
    6872        // Clear all objects within the map 
    69         /*mObjectMap::const_iterator iter; 
     73        mObjectMap::const_iterator iter; 
    7074        for(iter = mObjectList.begin(); iter != mObjectList.end(); ++iter) 
    7175        { 
    72                 delete iter->second; 
    73         }*/ 
     76    ObjectPtr obj; 
     77                obj = iter->second; 
     78    obj->destroy();    
     79    obj.reset(); 
     80        } 
    7481        // delete the map 
    7582        mObjectList.clear(); 
     
    153160ObjectPtr CObjectFactory::createObject(const std::string &type) 
    154161{ 
    155         //++mObjectUID; 
    156162         
    157   if(type == "PJ") 
     163  if(type == "PC") 
    158164  { 
    159     ObjectPtr obj (new CAvatar()); 
    160     return obj; 
     165    return ObjectPtr(new CAvatar()); 
    161166  } 
    162 /*  else if(type == "NPJ")boost::dynamic_pointer_cast<CAvatar> 
     167  else if(type == "NPC") 
    163168  { 
    164     return ObjectPtr(new Character); 
     169    return ObjectPtr(new CCharacter); 
    165170  }     
    166171  else if(type == "MSTR") 
    167172  { 
    168     return ObjectPtr(new Monster); 
     173    return ObjectPtr(new CMonster); 
    169174  }  
    170175  else if(type == "BLD") 
    171176  { 
    172     return ObjectPtr(new Building); 
    173   }*/ 
     177    return ObjectPtr(new CStructure); 
     178  } 
    174179  else 
    175180  { 
  • trunk/src/dreamforge/GameSaveFile.cc

    r3 r7  
    6464void CSaveFile::writeBegin( void ) 
    6565{ 
    66   mContentText << "<!-- Save file created in dreamforge Game version -->" << std::endl; 
    6766  mContentText << "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>" << std::endl; 
    6867  mContentText << "<scene>" << std::endl; 
     
    7372{ 
    7473  mContentText << "<scene>" << std::endl;  
    75   mContentText << "<!-- End -->"; 
    7674} 
    7775 
  • trunk/src/dreamforge/objects/Object.cc

    r5 r7  
    4646  mParentNode = 0; 
    4747  mObjectNode = 0; 
     48} 
     49 
     50//------------------------------------------------------------------------------------------------ 
     51void CGameObject::destroy( void ) 
     52{ 
     53  CEngineSystem::getInstance()->getSceneMgr()->destroyEntity (mEntity); 
     54  CEngineSystem::getInstance()->getSceneMgr()->destroySceneNode(mObjectNode->getName()); 
    4855} 
    4956