Changeset 7
- Timestamp:
- 01/09/09 01:50:22 (3 years ago)
- Location:
- trunk
- Files:
-
- 6 added
- 12 modified
-
config/objects.txt (modified) (1 diff)
-
include/dreamforge/objects/Character.hh (added)
-
include/dreamforge/objects/Monster.hh (added)
-
include/dreamforge/objects/Object.hh (modified) (1 diff)
-
include/dreamforge/objects/Structure.hh (added)
-
src/LevelEditor.cc (modified) (13 diffs)
-
src/LevelEditor.hh (modified) (2 diffs)
-
src/Properties.cc (modified) (1 diff)
-
src/SConscript (modified) (1 diff)
-
src/Workbench.cc (modified) (11 diffs)
-
src/Workbench.hh (modified) (3 diffs)
-
src/dreamforge/GameEngine.cc (modified) (1 diff)
-
src/dreamforge/GameObjectManager.cc (modified) (3 diffs)
-
src/dreamforge/GameSaveFile.cc (modified) (2 diffs)
-
src/dreamforge/objects/Character.cc (added)
-
src/dreamforge/objects/Monster.cc (added)
-
src/dreamforge/objects/Object.cc (modified) (1 diff)
-
src/dreamforge/objects/Structure.cc (added)
Legend:
- Unmodified
- Added
- Removed
-
trunk/config/objects.txt
r6 r7 5 5 Imperial 6 6 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 8 Flore 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 18 Decors 19 Elements 20 Rock Rock1_1.mesh BLD test -
trunk/include/dreamforge/objects/Object.hh
r4 r7 36 36 CGameObject( void ); 37 37 virtual ~CGameObject(void); 38 39 void destroy( void ); 38 40 39 41 // MANIPULATORS -
trunk/src/LevelEditor.cc
r6 r7 10 10 #include "LevelEditor.hh" 11 11 #include "dreamforge/GameEngine.hh" 12 #include "Properties.hh"12 #include "Properties.hh" 13 13 14 14 #include "dreamforge/GameObjectManager.hh" 15 15 #include "dreamforge/GameSaveFile.hh" 16 #include "dreamforge/XmlParser.hh" 16 17 17 18 #if (OGRE_PLATFORM == OGRE_PLATFORM_LINUX) … … 105 106 CEngineSystem::getInstance()->destroy(); 106 107 mRoot = 0; 108 } 109 110 //------------------------------------------------------------------------------------------------ 111 void 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 //------------------------------------------------------------------------------------------------ 127 void 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); 107 134 } 108 135 … … 252 279 headNode->showBoundingBox(false); 253 280 */ 254 ObjectPtr tObj = CObjectFactory::getInstance()->createObject(" PJ");281 ObjectPtr tObj = CObjectFactory::getInstance()->createObject("NPC"); 255 282 tObj->setObjectName("toto"); 256 283 tObj->setObjectMeshFile("ninja.mesh"); … … 302 329 mCamera = mSceneMgr->createCamera("PlayerCam 1"); 303 330 304 mCamera->setPosition(Ogre::Vector3( 430,500,430));331 mCamera->setPosition(Ogre::Vector3(1479,709,1389)); 305 332 mCamera->lookAt(Ogre::Vector3(100,0,100)); 306 333 mCamera->setAutoAspectRatio(true); … … 535 562 536 563 //------------------------------------------------------------------------------------------------ 564 void 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 //------------------------------------------------------------------------------------------------ 537 580 void LevelEdWidget::mousePressEvent(QMouseEvent* evt) 538 581 { … … 544 587 // Create a Ogre ray from the 2D coordinate of the viewport 545 588 Ogre::Ray mouseRay = mCamera->getCameraToViewportRay((double)evt->pos().x()/(double)width(), (double)evt->pos().y()/(double)height()); 546 547 589 Ogre::RaySceneQuery* mRaySceneQuery = mSceneMgr->createRayQuery(Ogre::Ray());; 548 590 mRaySceneQuery->setRay(mouseRay); … … 552 594 553 595 //Ogre::Real closestDistance = 100000; 554 555 596 closestObject = 0; 556 597 bool mSelectedObject = false; 557 598 558 599 Ogre::RaySceneQueryResult::iterator rayIterator; 559 560 600 // Look if we have reach a Ogre movable object 561 601 for(rayIterator = result.begin(); rayIterator != result.end(); rayIterator++ ) … … 629 669 iObj->initNodeObject(); 630 670 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()); 632 672 Ogre::RaySceneQuery* mRaySceneQuery = mSceneMgr->createRayQuery(Ogre::Ray());; 633 673 mRaySceneQuery->setRay(mouseRay); … … 639 679 { 640 680 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 642 684 iObj->getSceneNode()->showBoundingBox(false); 643 685 iObj->init(); … … 713 755 if (mouseLeftPressed && mCurentObject.use_count()) // If we have left click and we have an object selected 714 756 { 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()); 716 758 717 759 Ogre::RaySceneQuery* mRaySceneQuery = mSceneMgr->createRayQuery(Ogre::Ray());; … … 725 767 { 726 768 mCurentObject->getSceneNode()->setPosition(itr->worldFragment->singleIntersection.x,itr->worldFragment->singleIntersection.y + 10, itr->worldFragment->singleIntersection.z); 727 } 769 }*/ 770 this->mouveObjectFromRay(evt, mCurentObject->getSceneNode()); 728 771 } 729 772 } … … 731 774 if(mInsertMode)// && mTempObject) 732 775 { 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()); 734 777 735 778 Ogre::RaySceneQuery* mRayScQuery = mSceneMgr->createRayQuery(Ogre::Ray());; … … 743 786 { 744 787 mTempObject->setPosition(it->worldFragment->singleIntersection.x,it->worldFragment->singleIntersection.y + 10, it->worldFragment->singleIntersection.z); 745 } 788 }*/ 789 this->mouveObjectFromRay(evt, mTempObject); 746 790 } 747 791 -
trunk/src/LevelEditor.hh
r6 r7 31 31 void createTempObject(std::string& name, std::string& file, std::string& type); 32 32 void changeInsertionMode(bool val); 33 void saveObjectToFile(std::string& savefile); 34 void loadObjectFromFile(std::string& loadfile); 33 35 34 36 inline Ogre::Root* getRoot(void) { return mRoot; } 35 37 inline Ogre::RenderWindow* getRenderWindow(void) { return mRenderWindow; } 36 38 inline Ogre::SceneManager* getSceneMgr(void) { return mSceneMgr; } 39 inline Ogre::Camera* getCam(void) { return mCamera; } 37 40 38 41 ObjectPtr mCurentObject; // Selected object … … 65 68 //Ogre::MovableObject* getSelectedNode(float mouseScreenX, float mouseScreenY); 66 69 bool isHoverObjectSelected(void) const; 67 68 70 void createScene(); 71 69 72 void getSelectedObjectInfo(void); 70 73 void resetSelectedObjectInfo(void); 71 74 void mouveObjectFromRay(QMouseEvent* evt, Ogre::SceneNode* node); 75 72 76 void keyPressEvent(QKeyEvent* evt); 73 77 void keyReleaseEvent(QKeyEvent* evt); -
trunk/src/Properties.cc
r5 r7 114 114 115 115 snodeXVal->setSingleStep ( 0.1 ); 116 snodeXVal->setMaximum ( 9999 .90);116 snodeXVal->setMaximum ( 99999.99 ); 117 117 snodeYVal->setSingleStep ( 0.1 ); 118 snodeYVal->setMaximum ( 10.0);118 snodeYVal->setMaximum ( 99999.99 ); 119 119 snodeZVal->setSingleStep ( 0.1 ); 120 snodeZVal->setMaximum ( 10.0);120 snodeZVal->setMaximum ( 99999.99 ); 121 121 122 122 -
trunk/src/SConscript
r4 r7 7 7 8 8 bin_files = [ 9 'dreamforge/objects/Structure.cc', 10 'dreamforge/objects/Character.cc', 11 'dreamforge/objects/Monster.cc', 9 12 'dreamforge/objects/Avatar.cc', 10 13 'dreamforge/objects/ObjectStatistics.cc', -
trunk/src/Workbench.cc
r5 r7 18 18 19 19 //------------------------------------------------------------------------------------------------ 20 Workbench::Workbench() 21 { 20 Workbench::Workbench( void ) 21 { 22 // Set default file name 23 mExportFile = "export.save"; 24 22 25 // Create the level editeur widget 23 26 mLevelEd = new LevelEdWidget; … … 67 70 68 71 //------------------------------------------------------------------------------------------------ 69 void Workbench::about( )72 void Workbench::about( void ) 70 73 { 71 74 QMessageBox::about(this, tr("About Application"), … … 76 79 77 80 //------------------------------------------------------------------------------------------------ 78 void Workbench::createActions() 79 { 80 newAct = new QAction(QIcon(":/icons/new.png"), tr("&New"), this); 81 void 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 //------------------------------------------------------------------------------------------------ 107 void 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 //------------------------------------------------------------------------------------------------ 134 void Workbench::createActions( void ) 135 { 136 newAct = new QAction(QIcon("../../data/icons/copy.png"), tr("&New"), this); 81 137 newAct->setShortcut(tr("Ctrl+N")); 82 138 newAct->setStatusTip(tr("Create a new file")); 83 139 84 openAct = new QAction(QIcon(" :/icons/open.png"), tr("&Open..."), this);140 openAct = new QAction(QIcon("../../data/icons/open.png"), tr("&Open..."), this); 85 141 openAct->setShortcut(tr("Ctrl+O")); 86 142 openAct->setStatusTip(tr("Open an existing file"));; 87 143 88 saveAct = new QAction(QIcon(" :/icons/save.png"), tr("&Save"), this);144 saveAct = new QAction(QIcon("../../data/icons/save.png"), tr("&Save"), this); 89 145 saveAct->setShortcut(tr("Ctrl+S")); 90 146 saveAct->setStatusTip(tr("Save the document to disk")); … … 92 148 saveAsAct = new QAction(tr("Save &As..."), this); 93 149 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 95 159 exitAct = new QAction(tr("E&xit"), this); 96 160 exitAct->setShortcut(tr("Ctrl+Q")); … … 109 173 110 174 //------------------------------------------------------------------------------------------------ 111 void Workbench::createMenus( )175 void Workbench::createMenus( void ) 112 176 { 113 177 fileMenu = menuBar()->addMenu(tr("&File")); … … 116 180 fileMenu->addAction(saveAct); 117 181 fileMenu->addAction(saveAsAct); 182 fileMenu->addAction(exportAct); 183 fileMenu->addAction(importAct); 118 184 fileMenu->addSeparator(); 119 185 fileMenu->addAction(exitAct); … … 127 193 128 194 //------------------------------------------------------------------------------------------------ 129 void Workbench::createToolBars( )195 void Workbench::createToolBars( void ) 130 196 { 131 197 fileToolBar = addToolBar(tr("File")); … … 133 199 fileToolBar->addAction(openAct); 134 200 fileToolBar->addAction(saveAct); 135 } 136 137 //------------------------------------------------------------------------------------------------ 138 void Workbench::createStatusBar() 201 fileToolBar->addAction(exportAct); 202 fileToolBar->addAction(importAct); 203 } 204 205 //------------------------------------------------------------------------------------------------ 206 void Workbench::createStatusBar( void ) 139 207 { 140 208 statusBar()->showMessage(tr("Ready")); … … 142 210 143 211 //------------------------------------------------------------------------------------------------ 144 void Workbench::readSettings( )212 void Workbench::readSettings( void ) 145 213 { 146 214 QSettings settings("Trolltech", "Application Example"); … … 152 220 153 221 //------------------------------------------------------------------------------------------------ 154 void Workbench::writeSettings( )222 void Workbench::writeSettings( void ) 155 223 { 156 224 QSettings settings("Trolltech", "Application Example"); … … 169 237 { 170 238 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 171 293 172 294 } -
trunk/src/Workbench.hh
r5 r7 25 25 26 26 public: 27 Workbench( );27 Workbench( void ); 28 28 29 29 protected: … … 33 33 private slots: 34 34 void about(void); 35 36 35 void exportScene(void); 36 void importScene(void); 37 37 38 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 ); 44 45 45 46 void resizeEvent(QResizeEvent* evt); … … 53 54 QAction *saveAct; 54 55 QAction *saveAsAct; 56 QAction *exportAct; 57 QAction *importAct; 55 58 QAction *exitAct; 56 59 QAction *aboutAct; 57 60 QAction *aboutQtAct; 61 62 QString mExportFile; 58 63 59 64 QTabWidget *tabWidget; -
trunk/src/dreamforge/GameEngine.cc
r4 r7 126 126 Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/models/mesh", "FileSystem", "General"); 127 127 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"); 129 130 Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/terrain", "FileSystem", "General"); 131 Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/terrain/ET", "FileSystem", "General"); 130 132 Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/world", "FileSystem", "General"); 131 133 Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/OgreCore.zip", "Zip", "Bootstrap"); -
trunk/src/dreamforge/GameObjectManager.cc
r5 r7 23 23 #include "dreamforge/GameObjectManager.hh" 24 24 #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 27 31 using namespace dreamforge; 28 32 … … 67 71 { 68 72 // Clear all objects within the map 69 /*mObjectMap::const_iterator iter;73 mObjectMap::const_iterator iter; 70 74 for(iter = mObjectList.begin(); iter != mObjectList.end(); ++iter) 71 75 { 72 delete iter->second; 73 }*/ 76 ObjectPtr obj; 77 obj = iter->second; 78 obj->destroy(); 79 obj.reset(); 80 } 74 81 // delete the map 75 82 mObjectList.clear(); … … 153 160 ObjectPtr CObjectFactory::createObject(const std::string &type) 154 161 { 155 //++mObjectUID;156 162 157 if(type == "P J")163 if(type == "PC") 158 164 { 159 ObjectPtr obj (new CAvatar()); 160 return obj; 165 return ObjectPtr(new CAvatar()); 161 166 } 162 /* else if(type == "NPJ")boost::dynamic_pointer_cast<CAvatar> 167 else if(type == "NPC") 163 168 { 164 return ObjectPtr(new C haracter);169 return ObjectPtr(new CCharacter); 165 170 } 166 171 else if(type == "MSTR") 167 172 { 168 return ObjectPtr(new Monster);173 return ObjectPtr(new CMonster); 169 174 } 170 175 else if(type == "BLD") 171 176 { 172 return ObjectPtr(new Building);173 } */177 return ObjectPtr(new CStructure); 178 } 174 179 else 175 180 { -
trunk/src/dreamforge/GameSaveFile.cc
r3 r7 64 64 void CSaveFile::writeBegin( void ) 65 65 { 66 mContentText << "<!-- Save file created in dreamforge Game version -->" << std::endl;67 66 mContentText << "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>" << std::endl; 68 67 mContentText << "<scene>" << std::endl; … … 73 72 { 74 73 mContentText << "<scene>" << std::endl; 75 mContentText << "<!-- End -->";76 74 } 77 75 -
trunk/src/dreamforge/objects/Object.cc
r5 r7 46 46 mParentNode = 0; 47 47 mObjectNode = 0; 48 } 49 50 //------------------------------------------------------------------------------------------------ 51 void CGameObject::destroy( void ) 52 { 53 CEngineSystem::getInstance()->getSceneMgr()->destroyEntity (mEntity); 54 CEngineSystem::getInstance()->getSceneMgr()->destroySceneNode(mObjectNode->getName()); 48 55 } 49 56
