Changeset 4
- Timestamp:
- 01/05/09 00:17:57 (3 years ago)
- Location:
- trunk
- Files:
-
- 21 added
- 8 modified
-
config/demo.save (added)
-
config/objects.txt (added)
-
include (added)
-
include/dreamforge (added)
-
include/dreamforge/Exceptions.hh (added)
-
include/dreamforge/GameEngine.hh (added)
-
include/dreamforge/GameGlobalVars.hh (added)
-
include/dreamforge/GameObjectManager.hh (added)
-
include/dreamforge/GamePrerequisites.hh (added)
-
include/dreamforge/GameSaveFile.hh (added)
-
include/dreamforge/GameSerializer.hh (added)
-
include/dreamforge/XmlParser.hh (added)
-
include/dreamforge/objects (added)
-
include/dreamforge/objects/AnimeObject.hh (added)
-
include/dreamforge/objects/Avatar.hh (added)
-
include/dreamforge/objects/Object.hh (added)
-
include/dreamforge/objects/ObjectStatistics.hh (added)
-
src/LevelEditor.cc (modified) (16 diffs)
-
src/LevelEditor.hh (modified) (5 diffs)
-
src/Properties.cc (modified) (1 diff)
-
src/Properties.hh (modified) (1 diff)
-
src/SConscript (modified) (1 diff)
-
src/Workbench.cc (modified) (5 diffs)
-
src/Workbench.hh (modified) (3 diffs)
-
src/dreamforge/GameEngine.cc (modified) (1 diff)
-
src/treeitem.cpp (added)
-
src/treeitem.h (added)
-
src/treemodel.cpp (added)
-
src/treemodel.h (added)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/LevelEditor.cc
r3 r4 10 10 #include "LevelEditor.hh" 11 11 #include "dreamforge/GameEngine.hh" 12 13 #include "dreamforge/GameObjectManager.hh" 14 12 15 13 16 #if (OGRE_PLATFORM == OGRE_PLATFORM_LINUX) … … 42 45 mCurentObject = 0; // Trace the curent selected object. 43 46 closestObject = 0; 47 48 49 mInsertMode = false; 50 mEditionMode = true; // We must always enter on this screen with edition mode 44 51 45 52 //this->setupResources(); … … 47 54 CEngineSystem::getInstance()->initEngine(); 48 55 mRoot = CEngineSystem::getInstance()->getRoot(); 56 57 // Enable tracking mouse event even if we do not clic any buttons 58 setMouseTracking(true); 49 59 } 50 60 … … 57 67 } 58 68 */ 69 // Destroy all object loaded in game 70 //CObjectManager::getInstance()->cleanAll(); 71 //CObjectManager::getInstance()->destroy(); 72 // Destroy the factory 73 //CObjectFactory::getInstance()->destroy(); 74 75 // Stop and destroy the Graphic engine 59 76 CEngineSystem::getInstance()->stopEngine(); 60 77 CEngineSystem::getInstance()->destroy(); … … 63 80 64 81 //******************************Setup Ogre*********************************** 65 66 void LevelEdWidget::setupResources()67 {68 mRoot = new Ogre::Root();69 70 Ogre::ConfigFile cf;71 cf.load("resources.cfg");72 73 Ogre::ConfigFile::SectionIterator seci = cf.getSectionIterator();74 Ogre::String secName, typeName, archName;75 while(seci.hasMoreElements())76 {77 secName = seci.peekNextKey();78 Ogre::ConfigFile::SettingsMultiMap* settings = seci.getNext();79 Ogre::ConfigFile::SettingsMultiMap::iterator i;80 for(i=settings->begin(); i!=settings->end(); ++i){81 typeName = i->first;82 archName = i->second;83 Ogre::ResourceGroupManager::getSingleton().addResourceLocation(archName, typeName, secName);84 }85 }86 87 //mRoot->restoreConfig();88 89 QSettings settings;90 QString system;91 QString renderSysName;92 QMap<QString, QVariant> options;93 Ogre::RenderSystemList *list = Ogre::Root::getSingleton().getAvailableRenderers();94 95 if(settings.contains("General/RenderSystem"))96 {97 renderSysName = settings.value("General/RenderSystem").toString();98 }99 else100 {101 renderSysName = "OpenGL Rendering Subsystem";102 }103 104 for(Ogre::RenderSystemList::iterator it = list->begin(); it != list->end(); it++)105 {106 if( renderSysName == QString( (*it)->getName().c_str() ) )107 {108 mRoot->setRenderSystem(*it);109 break;110 }111 112 system = QString( (*it)->getName().c_str() );113 system.replace(" ", "");114 115 options.clear();116 options = settings.value(QString("%1/RenderOptions").arg(renderSysName), options).toMap();117 118 // Prevent DirectX from crashing119 if(options.contains("Full Screen"))120 options["Full Screen"] = "No";121 122 QMapIterator<QString, QVariant> i(options);123 while(i.hasNext())124 {125 i.next();126 (*it)->setConfigOption( Ogre::String(i.key().toLatin1().data()), Ogre::String(i.value().toString().toLatin1().data()) );127 }128 }129 130 mRoot->initialise(false);131 }132 82 133 83 //------------------------------------------------------------------------------------------------ … … 167 117 // Above the camera, facing down 168 118 plane.normal = -Ogre::Vector3::UNIT_Y; 169 119 /* 170 120 Ogre::Entity *ent = mSceneMgr->createEntity("head", "ogrehead.mesh"); 171 121 // Add entity to the root scene node 172 //mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(ent);173 122 Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode(); 174 123 headNode->attachObject(ent); … … 176 125 headNode->setPosition(500,600,600); 177 126 headNode->showBoundingBox(false); 178 179 clamToTerrain(headNode); 127 */ 128 ObjectPtr tObj = CObjectFactory::getInstance()->createObject("PJ"); 129 tObj->setObjectName("toto"); 130 tObj->setObjectMeshFile("ninja.mesh"); 131 tObj->initNodeObject(); 132 tObj->getSceneNode()->yaw(Ogre::Degree(-180)); 133 tObj->getSceneNode()->setPosition(500,600,600); 134 tObj->getSceneNode()->showBoundingBox(false); 135 tObj->init(); 136 137 clamToTerrain(tObj->getSceneNode()); 138 139 CObjectManager::getInstance()->addObject(tObj); 180 140 181 141 } … … 226 186 Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups(); 227 187 228 createScene();188 this->createScene(); 229 189 //createFog(); 230 190 //createLight(); … … 250 210 startTimer(5); 251 211 }; 212 213 //************************************************************************ 214 void LevelEdWidget::changeInsertionMode(bool val) 215 { 216 if(val) 217 { 218 mInsertMode = true; 219 mEditionMode = false; 220 if(mCurentObject) 221 { 222 mCurentObject->showBoundingBox(false); 223 mCurentObject = 0; 224 } 225 } 226 else 227 { 228 mInsertMode = false; 229 mEditionMode = true; 230 231 if(mTempObject.use_count()) 232 { 233 mSceneMgr->destroyEntity (mTempObject->getEntity()); 234 mSceneMgr->destroySceneNode(mTempObject->getSceneNode()->getName()); 235 mTempObject.reset(); 236 } 237 } 238 } 239 240 //------------------------------------------------------------------------------------------------ 241 void LevelEdWidget::createTempObject(std::string& name, std::string& file) 242 { 243 this->changeInsertionMode(true); 244 245 mTempObject = CObjectFactory::getInstance()->createObject("PJ"); 246 mTempObject->setObjectName(name); 247 mTempObject->setObjectMeshFile(file); 248 mTempObject->initNodeObject(); 249 mTempObject->getSceneNode()->setPosition(100,100,100); 250 //mTempObject->getSceneNode()->showBoundingBox(false); 251 mTempObject->init(); 252 } 253 252 254 253 255 //------------------------------------------------------------------------------------------------ … … 264 266 265 267 //updateStats(); 268 // Update all object in Game 269 if(mTempObject.use_count()) 270 { 271 mTempObject->update(mRenderWindow->getBestFPS()/100000); 272 } 273 274 CObjectManager::getInstance()->updateObject( mRenderWindow->getBestFPS()/100000 ); 266 275 mRoot->_fireFrameEnded(); 267 276 } … … 313 322 void LevelEdWidget::keyReleaseEvent(QKeyEvent* evt) 314 323 { 315 324 if(evt->key() == Qt::Key_Escape) 325 { 326 if(mInsertMode) 327 { 328 this->changeInsertionMode(false); 329 } 330 331 if(mEditionMode && mCurentObject) 332 { 333 mCurentObject->showBoundingBox(false); 334 mCurentObject = 0; 335 } 336 } 316 337 } 317 338 … … 331 352 if(evt->button() == Qt::LeftButton) 332 353 { 333 mouseLeftPressed = true; 334 335 Ogre::Ray mouseRay = mCamera->getCameraToViewportRay((double)evt->pos().x()/(double)width(), (double)evt->pos().y()/(double)height()); 336 337 Ogre::RaySceneQuery* mRaySceneQuery = mSceneMgr->createRayQuery(Ogre::Ray());; 338 mRaySceneQuery->setRay(mouseRay); 339 340 mRaySceneQuery->setSortByDistance(true); 341 Ogre::RaySceneQueryResult &result = mRaySceneQuery->execute(); 342 343 //Ogre::Real closestDistance = 100000; 344 345 closestObject = 0; 346 bool mSelectedObject = false; 347 348 Ogre::RaySceneQueryResult::iterator rayIterator; 349 350 for(rayIterator = result.begin(); rayIterator != result.end(); rayIterator++ ) 351 { 352 if (rayIterator->movable !=NULL && rayIterator->movable->getMovableType() == "Entity") 353 { 354 closestObject = rayIterator->movable; 355 std::cout << "** found **" << std::endl; 356 } 357 } 358 359 mRaySceneQuery->clearResults(); 360 361 362 if(closestObject) 363 { 364 if(mCurentObject) 365 { 366 mSelectedObject = isHoverObjectSelected(); 367 368 if (!mSelectedObject) 369 { 370 mCurentObject->showBoundingBox(false); 371 mCurentObject = closestObject->getParentSceneNode(); 372 mCurentObject->showBoundingBox(true); 373 std::cout << "** objet trouve diff objet courant **" << std::endl; 374 } 375 else{ 376 std::cout << "** objet deja selectionne **" << std::endl; 377 } 378 } 379 else{ 380 mCurentObject = closestObject->getParentSceneNode(); 381 mCurentObject->showBoundingBox(true); 382 std::cout << "** objet trouve mais objet courant inexistant **" << std::endl; 383 } 384 } 385 else 386 { 387 std::cout << "** pas objet trouve **" << std::endl; 388 if(mCurentObject) 389 { 390 mCurentObject->showBoundingBox(false); 391 mCurentObject = 0; 392 std::cout << "** deselection object courant **" << std::endl; 393 } 394 } 395 } 396 397 // Handle right clic button 354 if(mEditionMode) // Edition mode only select, move, change object settings 355 { 356 mouseLeftPressed = true; 357 // Create a Ogre ray from the 2D coordinate of the viewport 358 Ogre::Ray mouseRay = mCamera->getCameraToViewportRay((double)evt->pos().x()/(double)width(), (double)evt->pos().y()/(double)height()); 359 360 Ogre::RaySceneQuery* mRaySceneQuery = mSceneMgr->createRayQuery(Ogre::Ray());; 361 mRaySceneQuery->setRay(mouseRay); 362 363 mRaySceneQuery->setSortByDistance(true); 364 Ogre::RaySceneQueryResult &result = mRaySceneQuery->execute(); 365 366 //Ogre::Real closestDistance = 100000; 367 368 closestObject = 0; 369 bool mSelectedObject = false; 370 371 Ogre::RaySceneQueryResult::iterator rayIterator; 372 373 // Look if we have reach a Ogre movable object 374 for(rayIterator = result.begin(); rayIterator != result.end(); rayIterator++ ) 375 { 376 if (rayIterator->movable !=NULL && rayIterator->movable->getMovableType() == "Entity") 377 { 378 // get this movable object 379 closestObject = rayIterator->movable; 380 std::cout << "** found **" << std::endl; 381 } 382 } 383 384 // Clear the ray result 385 mRaySceneQuery->clearResults(); 386 387 // If we have found something from the ray 388 if(closestObject) 389 { 390 if(mCurentObject) // check if we do not have an object already selected 391 { 392 // if we are over it 393 mSelectedObject = isHoverObjectSelected(); 394 395 if (!mSelectedObject) // if it is not the case, it is an other object 396 { 397 mCurentObject->showBoundingBox(false); 398 mCurentObject = closestObject->getParentSceneNode(); 399 mCurentObject->showBoundingBox(true); 400 std::cout << "** objet trouve diff objet courant **" << std::endl; 401 } 402 else // if it is true, it is already selected so do nothing 403 { 404 std::cout << "** objet deja selectionne **" << std::endl; 405 } 406 } 407 else // We have no object selected, marked this one 408 { 409 mCurentObject = closestObject->getParentSceneNode(); 410 mCurentObject->showBoundingBox(true); 411 std::cout << "** objet trouve mais objet courant inexistant **" << std::endl; 412 } 413 } 414 else // We found nothing from our ray tracing, it means that we have clicked over the terrain 415 { 416 std::cout << "** pas objet trouve **" << std::endl; 417 if(mCurentObject) // if an other object is selected so disable it 418 { 419 mCurentObject->showBoundingBox(false); 420 mCurentObject = 0; 421 std::cout << "** deselection object courant **" << std::endl; 422 } 423 } 424 } // end Edition Mode 425 426 if(mInsertMode) // Insert new object in the map 427 { 428 // Next time handle multi insertion object 429 } 430 } // end LeftButton clic 431 432 // Handle right clic button to move the camera 398 433 if(evt->button() == Qt::RightButton) 399 434 { … … 402 437 } 403 438 404 // Handle mid clic button 439 // Handle mid clic button to zoom the camera 405 440 if(evt->button() == Qt::MidButton) 406 441 { … … 413 448 { 414 449 Q_UNUSED(evt); 450 451 if(mouseLeftPressed && mInsertMode) 452 { 453 454 } 455 415 456 mouseLeftPressed = false; 416 457 mouseRightPressed = false; … … 425 466 426 467 } 468 469 427 470 if(mouseRightPressed) 428 471 { … … 449 492 } 450 493 451 if (mouseLeftPressed) 452 { 453 Ogre::Ray mouseRay = mCamera->getCameraToViewportRay((double)evt->pos().x()/(double)width(), (double)evt->pos().y()/(double)height()); 454 455 Ogre::RaySceneQuery* mRaySceneQuery = mSceneMgr->createRayQuery(Ogre::Ray());; 456 mRaySceneQuery->setRay(mouseRay); 494 if(mEditionMode) 495 { 496 if (mouseLeftPressed && mCurentObject) // If we have left click and we have an object selected 497 { 498 Ogre::Ray mouseRay = mCamera->getCameraToViewportRay((double)evt->pos().x()/(double)width(), (double)evt->pos().y()/(double)height()); 499 500 Ogre::RaySceneQuery* mRaySceneQuery = mSceneMgr->createRayQuery(Ogre::Ray());; 501 mRaySceneQuery->setRay(mouseRay); 502 503 //mRaySceneQuery->setSortByDistance(true); 504 Ogre::RaySceneQueryResult &result = mRaySceneQuery->execute(); 505 Ogre::RaySceneQueryResult::iterator itr = result.begin(); 506 507 if (itr != result.end() && itr->worldFragment && mCurentObject) 508 { 509 mCurentObject->setPosition(itr->worldFragment->singleIntersection.x,itr->worldFragment->singleIntersection.y + 10, itr->worldFragment->singleIntersection.z); 510 } 511 } 512 } 513 514 if(mInsertMode)// && mTempObject.use_count()) 515 { 516 Ogre::Ray mRay = mCamera->getCameraToViewportRay((double)evt->pos().x()/(double)width(), (double)evt->pos().y()/(double)height()); 517 518 Ogre::RaySceneQuery* mRayScQuery = mSceneMgr->createRayQuery(Ogre::Ray());; 519 mRayScQuery->setRay(mRay); 457 520 458 521 //mRaySceneQuery->setSortByDistance(true); 459 Ogre::RaySceneQueryResult &res ult = mRaySceneQuery->execute();460 Ogre::RaySceneQueryResult::iterator it r = result.begin();461 462 if (it r != result.end() && itr->worldFragment && mCurentObject)522 Ogre::RaySceneQueryResult &reslt = mRayScQuery->execute(); 523 Ogre::RaySceneQueryResult::iterator it = reslt.begin(); 524 525 if (it != reslt.end() && it->worldFragment) 463 526 { 464 mCurentObject->setPosition(itr->worldFragment->singleIntersection.x,itr->worldFragment->singleIntersection.y + 10, itr->worldFragment->singleIntersection.z); 465 } 466 467 } 527 mTempObject->getSceneNode()->setPosition(it->worldFragment->singleIntersection.x,it->worldFragment->singleIntersection.y + 10, it->worldFragment->singleIntersection.z); 528 } 529 } 468 530 469 531 } -
trunk/src/LevelEditor.hh
r3 r4 10 10 #endif 11 11 12 // use for object global variables 13 #define GLOBAL 12 #include "dreamforge/objects/Object.hh" 14 13 14 15 15 namespace dreamforge 16 16 { … … 28 28 ~LevelEdWidget(); 29 29 30 void createTempObject(std::string& name, std::string& file); 31 void changeInsertionMode(bool val); 32 30 33 inline Ogre::Root* getRoot(void) { return mRoot; } 31 34 inline Ogre::RenderWindow* getRenderWindow(void) { return mRenderWindow; } … … 34 37 protected: 35 38 void setupView(); 36 37 39 void update(); 38 void setupResources();39 40 40 41 void clamToTerrain(Ogre::SceneNode* node); … … 64 65 ///// Deplacement Camera 65 66 Ogre::Vector3 mDirection; 66 //Ogre::Real mRotate;67 //Ogre::Real mMove;68 //bool isMoving;69 67 QPoint mousePressPos; 70 68 QPoint mousePos; … … 76 74 bool mouseRightPressed; 77 75 bool mouseMiddleBtn; 78 //bool isLoopOn; 79 //bool isAnimEnabled;80 Ogre:: SceneNode* mCurentObject;81 Ogre::MovableObject* closestObject; 76 77 Ogre::SceneNode* mCurentObject; // Selected object 78 Ogre::MovableObject* closestObject; // Object use in the ray cast 79 ObjectPtr mTempObject; // Object use to fallow the mouse cursor for insertion 82 80 83 //////// Rotation handler 84 //Ogre::SceneNode* mSceneNode; 85 //Ogre::SceneNode* mNode[3]; 86 //Ogre::Entity* mEnt[3]; 81 // Action mode 82 bool mInsertMode; 83 bool mEditionMode; 87 84 88 85 }; -
trunk/src/Properties.cc
r3 r4 9 9 using namespace dreamforge; 10 10 11 12 //------------------------------------------------------------------------------------------------ 13 SelectedObjProp::SelectedObjProp(QWidget* parent) : QWidget(parent) 14 { 15 /*QGroupBox* groupCombo = new QGroupBox("Sélection"); 16 17 QLabel* objCat = new QLabel(tr("Objet Catégorie :")); 18 QComboBox* objCatCombo = new QComboBox; 19 objCatCombo->addItem(tr("Faune")); 20 objCatCombo->addItem(tr("Flore")); 21 22 QLabel* objType = new QLabel(tr("Objet Type :")); 23 QComboBox* objTypeCombo = new QComboBox; 24 objTypeCombo->addItem(tr("Batiments")); 25 objTypeCombo->addItem(tr("Monstres")); 26 objTypeCombo->addItem(tr("NPJ")); 27 28 QGridLayout* gridObjLayout = new QGridLayout; 29 gridObjLayout->addWidget(objCat, 0, 0); 30 gridObjLayout->addWidget(objCatCombo, 0, 1); 31 gridObjLayout->addWidget(objType, 1, 0); 32 gridObjLayout->addWidget(objTypeCombo, 1, 1); 33 34 groupCombo->setLayout(gridObjLayout); 35 36 //******************************************** 37 mObjectList = new QListWidget; 38 new QListWidgetItem(tr("Chien"), mObjectList); 39 new QListWidgetItem(tr("Loup"), mObjectList); 40 new QListWidgetItem(tr("Loup sauvage"), mObjectList); 41 new QListWidgetItem(tr("Ogre"), mObjectList); 42 new QListWidgetItem(tr("Tigre"), mObjectList); 43 44 connect(mObjectList, SIGNAL(itemClicked ( QListWidgetItem * )), this, SLOT(chooseObject()));*/ 45 46 47 QStringList headers; 48 headers << tr("Nom") << tr("Fichier") << tr("Description"); 49 50 QFile file("../../config/objects.txt"); 51 file.open(QIODevice::ReadOnly); 52 model = new TreeModel(headers, file.readAll()); 53 file.close(); 54 55 objectView = new QTreeView; 56 objectView->setObjectName(QString::fromUtf8("view")); 57 objectView->setAlternatingRowColors(true); 58 objectView->setSelectionBehavior(QAbstractItemView::SelectItems); 59 objectView->setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); 60 objectView->setAnimated(false); 61 objectView->setAllColumnsShowFocus(true); 62 63 objectView->setModel(model); 64 /*for (int column = 0; column < model->columnCount(); ++column) 65 { 66 objectView->resizeColumnToContents(column); 67 }*/ 68 69 objectView->hideColumn (1); 70 objectView->hideColumn (2); 71 72 //******************************************** 73 QGroupBox* groupProp = new QGroupBox("Propriétés de l'objet"); 74 75 QLabel* sObjSelec = new QLabel(tr("Nom :")); 76 QLineEdit* sObjInput = new QLineEdit; 77 78 // Object Postion 79 QGroupBox* groupNodePos = new QGroupBox("Node Position"); 80 QLabel* nodeXText = new QLabel(tr("X :")); 81 QSpinBox* nodeXVal = new QSpinBox; 82 QLabel* nodeYText = new QLabel(tr("Y :")); 83 QSpinBox* nodeYVal = new QSpinBox; 84 QLabel* nodeZText = new QLabel(tr("Z :")); 85 QSpinBox* nodeZVal = new QSpinBox; 86 87 // Grille 88 QGridLayout* gridNodePosLayout = new QGridLayout; 89 gridNodePosLayout->addWidget(nodeXText, 0, 0); 90 gridNodePosLayout->addWidget(nodeXVal, 0, 1); 91 gridNodePosLayout->addWidget(nodeYText, 1, 0); 92 gridNodePosLayout->addWidget(nodeYVal, 1, 1); 93 gridNodePosLayout->addWidget(nodeZText, 2, 0); 94 gridNodePosLayout->addWidget(nodeZVal, 2, 1); 95 96 groupNodePos->setLayout(gridNodePosLayout); 97 98 // Object Scale 99 QGroupBox* groupNodeScal = new QGroupBox("Node Scale"); 100 QLabel* snodeXText = new QLabel(tr("X :")); 101 QSpinBox* snodeXVal = new QSpinBox; 102 QLabel* snodeYText = new QLabel(tr("Y :")); 103 QSpinBox* snodeYVal = new QSpinBox; 104 QLabel* snodeZText = new QLabel(tr("Z :")); 105 QSpinBox* snodeZVal = new QSpinBox; 106 107 // Grille 108 QGridLayout* gridNodeScalLayout = new QGridLayout; 109 gridNodeScalLayout->addWidget(snodeXText, 0, 0); 110 gridNodeScalLayout->addWidget(snodeXVal, 0, 1); 111 gridNodeScalLayout->addWidget(snodeYText, 1, 0); 112 gridNodeScalLayout->addWidget(snodeYVal, 1, 1); 113 gridNodeScalLayout->addWidget(snodeZText, 2, 0); 114 gridNodeScalLayout->addWidget(snodeZVal, 2, 1); 115 116 groupNodeScal->setLayout(gridNodeScalLayout); 117 118 // Grille 119 QGridLayout* gridsObjLayout = new QGridLayout; 120 gridsObjLayout->addWidget(sObjSelec, 0, 0); 121 gridsObjLayout->addWidget(sObjInput, 0, 1); 122 gridsObjLayout->addWidget(groupNodePos, 1, 0); 123 gridsObjLayout->addWidget(groupNodeScal, 1, 1); 124 125 groupProp->setLayout(gridsObjLayout); 126 127 //******************************************** 128 QVBoxLayout* regroupLayout = new QVBoxLayout; 129 //regroupLayout->addWidget(groupCombo); 130 //regroupLayout->addWidget(mObjectList); 131 regroupLayout->addWidget(objectView); 132 regroupLayout->addWidget(groupProp); 133 134 setLayout(regroupLayout); 135 } 136 137 //------------------------------------------------------------------------------------------------ 138 SelectedObjProp::~SelectedObjProp() 139 { 140 141 } 142 143 //------------------------------------------------------------------------------------------------ 144 void SelectedObjProp::mousePressEvent(QMouseEvent* evt) 145 { 146 } 147 148 //------------------------------------------------------------------------------------------------ 149 void SelectedObjProp::mouseReleaseEvent(QMouseEvent* evt) 150 { 151 } 152 153 //------------------------------------------------------------------------------------------------ 154 // 11 155 //------------------------------------------------------------------------------------------------ 12 156 EnvProperties::EnvProperties(QWidget* parent) : QWidget(parent) -
trunk/src/Properties.hh
r3 r4 6 6 7 7 #include <QtGui/QtGui> 8 #include "treemodel.h" 8 9 9 10 namespace dreamforge 10 11 { 12 13 class SelectedObjProp : public QWidget 14 { 15 Q_OBJECT 16 17 public: 18 SelectedObjProp(QWidget *parent = 0); 19 ~SelectedObjProp(); 20 21 protected: 22 void mousePressEvent(QMouseEvent* evt); 23 void mouseReleaseEvent(QMouseEvent* evt); 24 25 public: 26 QTreeView* objectView; 27 TreeModel *model; 28 // QListWidget *mObjectList; 29 // QString mCurSelect; 30 }; 11 31 12 32 class EnvProperties : public QWidget -
trunk/src/SConscript
r3 r4 15 15 'dreamforge/GameObjectManager.cc', 16 16 'dreamforge/GameEngine.cc', 17 'treemodel.cpp', 18 'treeitem.cpp', 17 19 'Properties.cc', 18 20 'LevelEditor.cc', -
trunk/src/Workbench.cc
r3 r4 3 3 #include "config.h" 4 4 #endif 5 6 // use for object global variables 7 #define GLOBAL 5 8 6 9 … … 10 13 11 14 #include "Workbench.hh" 15 12 16 13 17 using namespace dreamforge; … … 26 30 27 31 // Create a tree widget 28 envProperties = new EnvProperties; 29 //envProperties->show(); 32 objProperties = new SelectedObjProp; 30 33 31 34 // Create a widget we can drag around the workbench 32 35 QDockWidget *dock = new QDockWidget(tr("Propriétés"), this); 33 36 dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); 34 dock->setWidget( envProperties);37 dock->setWidget(objProperties); 35 38 36 39 addDockWidget(Qt::RightDockWidgetArea, dock); 40 41 // Connect action 42 connect(objProperties->objectView, SIGNAL(clicked( const QModelIndex & )),this, SLOT(chooseObject())); 37 43 38 44 // Try to register the icon resources : Fix me does not work … … 56 62 57 63 //------------------------------------------------------------------------------------------------ 64 // ACTIONS 65 //------------------------------------------------------------------------------------------------ 66 void Workbench::chooseObject() 67 { 68 //QListWidgetItem* item = mObjectList->currentItem(); 69 QModelIndex item = objProperties->objectView->currentIndex(); 70 QModelIndex itemTmp = item.sibling( item.row(), item.column()+1); 71 72 if(!itemTmp.data().toString().isEmpty()) 73 { 74 QString name = item.data().toString(); 75 QString meshfile = itemTmp.data().toString(); 76 77 mLevelEd->createTempObject(name.toStdString() , meshfile.toStdString()); 78 } 79 80 } 81 82 //------------------------------------------------------------------------------------------------ 58 83 void Workbench::closeEvent(QCloseEvent *event) 59 84 { … … 61 86 event->accept(); 62 87 } 63 64 65 88 66 89 //------------------------------------------------------------------------------------------------ -
trunk/src/Workbench.hh
r3 r4 4 4 #include <QtGui/QMainWindow> 5 5 #include <QtGui/QtGui> 6 6 7 7 8 #include "LevelEditor.hh" … … 31 32 private slots: 32 33 void about(); 34 void chooseObject(); 33 35 34 36 private: … … 57 59 LevelEdWidget *mLevelEd; 58 60 59 EnvProperties* envProperties;61 SelectedObjProp* objProperties; 60 62 }; 61 63 -
trunk/src/dreamforge/GameEngine.cc
r3 r4 123 123 Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data", "FileSystem", "General"); 124 124 Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/fonts", "FileSystem", "General"); 125 //Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/gui", "FileSystem", "General");126 125 Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/models", "FileSystem", "General"); 126 Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/models/mesh", "FileSystem", "General"); 127 Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/models/textures", "FileSystem", "General"); 128 Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/models/animation", "FileSystem", "General"); 127 129 Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/terrain", "FileSystem", "General"); 128 130 Ogre::ResourceGroupManager::getSingleton().addResourceLocation("../../data/world", "FileSystem", "General");
