Changeset 5
- Timestamp:
- 01/07/09 00:45:59 (3 years ago)
- Location:
- trunk
- Files:
-
- 9 modified
-
include/dreamforge/GameObjectManager.hh (modified) (1 diff)
-
src/LevelEditor.cc (modified) (19 diffs)
-
src/LevelEditor.hh (modified) (4 diffs)
-
src/Properties.cc (modified) (4 diffs)
-
src/Properties.hh (modified) (1 diff)
-
src/Workbench.cc (modified) (3 diffs)
-
src/Workbench.hh (modified) (3 diffs)
-
src/dreamforge/GameObjectManager.cc (modified) (1 diff)
-
src/dreamforge/objects/Object.cc (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/dreamforge/GameObjectManager.hh
r4 r5 61 61 // ACCESSORS 62 62 ObjectPtr getObjectById(const std::string &objectId); 63 ObjectPtr getObjectByName(const std::string &objectName); 63 64 /** 64 65 * getInstance -
trunk/src/LevelEditor.cc
r4 r5 10 10 #include "LevelEditor.hh" 11 11 #include "dreamforge/GameEngine.hh" 12 12 #include "Properties.hh" 13 13 14 #include "dreamforge/GameObjectManager.hh" 14 15 … … 31 32 mVp = 0; 32 33 33 34 34 mouseLeftPressed = false; 35 35 mouseRightPressed = false; … … 43 43 angleY = 0.0; // when I upgraded to Qt4.2, they were left undefined. 44 44 45 mCurentObject = 0; // Trace the curent selected object. 46 closestObject = 0; 47 45 //mCurentObject = 0; 46 closestObject = 0;// Trace the curent selected object. 47 mTempEnt = 0; 48 mTempObject = 0; 49 mAnimState = 0; 48 50 49 51 mInsertMode = false; … … 54 56 CEngineSystem::getInstance()->initEngine(); 55 57 mRoot = CEngineSystem::getInstance()->getRoot(); 56 58 59 // Create a tree widget 60 objProperties = new SelectedObjProp; 61 62 // Connect action 63 connect(objProperties->objectView, SIGNAL(clicked( const QModelIndex & )),this, SLOT(chooseObject())); 64 connect(objProperties->sObjInput, SIGNAL(editingFinished()),this, SLOT(changeObjectName())); 65 connect(objProperties->nodeXVal, SIGNAL(valueChanged ( double )),this, SLOT(changeObjectPositionX())); 66 connect(objProperties->nodeYVal, SIGNAL(valueChanged ( double )),this, SLOT(changeObjectPositionY())); 67 connect(objProperties->nodeZVal, SIGNAL(valueChanged ( double )),this, SLOT(changeObjectPositionZ())); 68 connect(objProperties->snodeXVal, SIGNAL(valueChanged ( double )),this, SLOT(changeObjectScaleX())); 69 connect(objProperties->snodeYVal, SIGNAL(valueChanged ( double )),this, SLOT(changeObjectScaleY())); 70 connect(objProperties->snodeZVal, SIGNAL(valueChanged ( double )),this, SLOT(changeObjectScaleZ())); 71 connect(objProperties->rnodeXVal, SIGNAL(valueChanged ( double )),this, SLOT(pitchSelectedObject())); 72 connect(objProperties->rnodeYVal, SIGNAL(valueChanged ( double )),this, SLOT(yawSelectedObject())); 73 connect(objProperties->rnodeZVal, SIGNAL(valueChanged ( double )),this, SLOT(rollSelectedObject())); 57 74 // Enable tracking mouse event even if we do not clic any buttons 58 75 setMouseTracking(true); … … 67 84 } 68 85 */ 69 // Destroy all object loaded in game 70 //CObjectManager::getInstance()->cleanAll(); 71 //CObjectManager::getInstance()->destroy(); 86 /*if(mTempEnt || mTempObject) 87 { 88 mSceneMgr->destroyEntity (mTempEnt); 89 mSceneMgr->destroySceneNode(mTempObject->getName()); 90 mAnimState = 0; 91 mTempEnt = 0; 92 mTempObject = 0; 93 }*/ 94 95 // Destroy all object loaded in game 96 CObjectManager::getInstance()->cleanAll(); 97 CObjectManager::getInstance()->destroy(); 72 98 // Destroy the factory 73 //CObjectFactory::getInstance()->destroy();99 CObjectFactory::getInstance()->destroy(); 74 100 75 101 // Stop and destroy the Graphic engine … … 77 103 CEngineSystem::getInstance()->destroy(); 78 104 mRoot = 0; 105 } 106 107 //------------------------------------------------------------------------------------------------ 108 ///////////////////////////////// ACTIONS ////////////////////////////////////////////////////// 109 //------------------------------------------------------------------------------------------------ 110 void LevelEdWidget::chooseObject( void ) 111 { 112 //QListWidgetItem* item = mObjectList->currentItem(); 113 QModelIndex item = objProperties->objectView->currentIndex(); 114 QModelIndex itemTmp = item.sibling( item.row(), item.column()+1); 115 116 if(!itemTmp.data().toString().isEmpty()) 117 { 118 QString name = item.data().toString(); 119 QString meshfile = itemTmp.data().toString(); 120 121 this->createTempObject(name.toStdString() , meshfile.toStdString()); 122 } 123 124 } 125 126 //------------------------------------------------------------------------------------------------ 127 void LevelEdWidget::changeObjectName( void ) 128 { 129 //Get the new text enter in the QLineEdit box 130 mCurentObject->setObjectName(objProperties->sObjInput->text().toStdString()); 131 132 } 133 134 //------------------------------------------------------------------------------------------------ 135 void LevelEdWidget::changeObjectPositionX( void) 136 { 137 float x = objProperties->nodeXVal->value(); 138 //Get the new text enter in the QLineEdit box 139 mCurentObject->getSceneNode()->setPosition(x, mCurentObject->getSceneNode()->getPosition().y, mCurentObject->getSceneNode()->getPosition().z); 140 } 141 //------------------------------------------------------------------------------------------------ 142 void LevelEdWidget::changeObjectPositionY( void) 143 { 144 float y = objProperties->nodeYVal->value(); 145 //Get the new text enter in the QLineEdit box 146 mCurentObject->getSceneNode()->setPosition(mCurentObject->getSceneNode()->getPosition().x, y, mCurentObject->getSceneNode()->getPosition().z); 147 } 148 //------------------------------------------------------------------------------------------------ 149 void LevelEdWidget::changeObjectPositionZ( void) 150 { 151 float z = objProperties->nodeZVal->value(); 152 //Get the new text enter in the QLineEdit box 153 mCurentObject->getSceneNode()->setPosition(mCurentObject->getSceneNode()->getPosition().x, mCurentObject->getSceneNode()->getPosition().y, z); 154 } 155 //------------------------------------------------------------------------------------------------ 156 //------------------------------------------------------------------------------------------------ 157 void LevelEdWidget::changeObjectScaleX( void) 158 { 159 float x = objProperties->snodeXVal->value(); 160 //Get the new text enter in the QLineEdit box 161 mCurentObject->getSceneNode()->setScale(x, mCurentObject->getSceneNode()->getScale().y, mCurentObject->getSceneNode()->getScale().z); 162 } 163 //------------------------------------------------------------------------------------------------ 164 void LevelEdWidget::changeObjectScaleY( void) 165 { 166 float y = objProperties->snodeYVal->value(); 167 //Get the new text enter in the QLineEdit box 168 mCurentObject->getSceneNode()->setScale(mCurentObject->getSceneNode()->getScale().x, y, mCurentObject->getSceneNode()->getScale().z); 169 } 170 //------------------------------------------------------------------------------------------------ 171 void LevelEdWidget::changeObjectScaleZ( void) 172 { 173 float z = objProperties->snodeZVal->value(); 174 //Get the new text enter in the QLineEdit box 175 mCurentObject->getSceneNode()->setScale(mCurentObject->getSceneNode()->getScale().x, mCurentObject->getSceneNode()->getScale().y, z); 176 } 177 //------------------------------------------------------------------------------------------------ 178 //------------------------------------------------------------------------------------------------ 179 void LevelEdWidget::pitchSelectedObject( void) 180 { 181 float x = objProperties->rnodeXVal->value(); 182 Ogre::Degree rX(x); 183 //Get the new text enter in the QLineEdit box 184 mCurentObject->getSceneNode()->pitch(rX); 185 } 186 //------------------------------------------------------------------------------------------------ 187 void LevelEdWidget::yawSelectedObject( void) 188 { 189 float y = objProperties->rnodeYVal->value(); 190 Ogre::Degree rY(y); 191 //Get the new text enter in the QLineEdit box 192 mCurentObject->getSceneNode()->yaw(rY); 193 } 194 //------------------------------------------------------------------------------------------------ 195 void LevelEdWidget::rollSelectedObject( void) 196 { 197 float z = objProperties->rnodeZVal->value(); 198 Ogre::Degree rZ(z); 199 //Get the new text enter in the QLineEdit box 200 mCurentObject->getSceneNode()->roll(rZ); 79 201 } 80 202 … … 214 336 void LevelEdWidget::changeInsertionMode(bool val) 215 337 { 216 if( val)338 if(true == val) 217 339 { 218 340 mInsertMode = true; 219 341 mEditionMode = false; 220 if(mCurentObject )342 if(mCurentObject.use_count()) 221 343 { 222 mCurentObject->showBoundingBox(false); 223 mCurentObject = 0; 344 mCurentObject->getSceneNode()->showBoundingBox(false); 345 mCurentObject.reset(); 346 347 this->resetSelectedObjectInfo(); 224 348 } 225 349 } … … 229 353 mEditionMode = true; 230 354 231 if(mTempObject .use_count())355 if(mTempObject) 232 356 { 233 mSceneMgr->destroyEntity (mTempObject->getEntity()); 234 mSceneMgr->destroySceneNode(mTempObject->getSceneNode()->getName()); 235 mTempObject.reset(); 357 mSceneMgr->destroyEntity (mTempEnt); 358 mSceneMgr->destroySceneNode(mTempObject->getName()); 359 mTempEnt = 0; 360 mTempObject = 0; 361 mAnimState = 0; 236 362 } 237 363 } … … 243 369 this->changeInsertionMode(true); 244 370 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(); 371 if(mTempEnt) 372 { 373 mSceneMgr->destroyEntity (mTempEnt); 374 mTempEnt = 0; 375 mAnimState = 0; 376 } 377 378 if(mTempObject) 379 { 380 mSceneMgr->destroySceneNode(mTempObject->getName()); 381 mTempObject = 0; 382 } 383 384 mTempEnt = mSceneMgr->createEntity("tempObject", file); 385 // Add entity to the root scene node 386 mTempObject = mSceneMgr->getRootSceneNode()->createChildSceneNode(); 387 mTempObject->attachObject(mTempEnt); 388 mTempObject->scale( 1, 1, 1 ); 389 390 if(mTempEnt->hasSkeleton()) 391 { 392 Ogre::AnimationStateIterator animIter = mTempEnt->getAllAnimationStates()->getAnimationStateIterator(); 393 mAnimState = mTempEnt->getAnimationState(animIter.getNext()->getAnimationName()); 394 mAnimState->setEnabled(true); 395 mAnimState->setLoop(true); 396 } 252 397 } 253 398 … … 267 412 //updateStats(); 268 413 // Update all object in Game 269 if(mTempObject .use_count())414 if(mTempObject && mAnimState) 270 415 { 271 m TempObject->update(mRenderWindow->getBestFPS()/100000);416 mAnimState->addTime(mRenderWindow->getBestFPS()/100000); 272 417 } 273 418 … … 329 474 } 330 475 331 if(mEditionMode && mCurentObject )476 if(mEditionMode && mCurentObject.use_count()) 332 477 { 333 mCurentObject->showBoundingBox(false); 334 mCurentObject = 0; 478 mCurentObject->getSceneNode()->showBoundingBox(false); 479 mCurentObject.reset(); 480 481 this->resetSelectedObjectInfo(); 335 482 } 336 483 } … … 340 487 bool LevelEdWidget::isHoverObjectSelected(void) const 341 488 { 342 if (mCurentObject == closestObject->getParentSceneNode())489 if (mCurentObject->getObjectID() == closestObject->getParentNode()->getName()) 343 490 { 344 491 return true; 345 492 } 346 493 return false; 494 } 495 496 //------------------------------------------------------------------------------------------------ 497 void LevelEdWidget::getSelectedObjectInfo(void) 498 { 499 QString str = mCurentObject->getObjectName().c_str(); 500 objProperties->sObjInput->setText( str ); 501 objProperties->nodeXVal->setValue ( mCurentObject->getSceneNode()->getPosition().x ); 502 objProperties->nodeYVal->setValue ( mCurentObject->getSceneNode()->getPosition().y ); 503 objProperties->nodeZVal->setValue ( mCurentObject->getSceneNode()->getPosition().z ); 504 505 objProperties->snodeXVal->setValue ( mCurentObject->getSceneNode()->getScale().x ); 506 objProperties->snodeYVal->setValue ( mCurentObject->getSceneNode()->getScale().y ); 507 objProperties->snodeZVal->setValue ( mCurentObject->getSceneNode()->getScale().z ); 508 509 } 510 511 //------------------------------------------------------------------------------------------------ 512 void LevelEdWidget::resetSelectedObjectInfo(void) 513 { 514 objProperties->sObjInput->clear(); 515 objProperties->nodeXVal->clear (); 516 objProperties->nodeYVal->clear (); 517 objProperties->nodeZVal->clear (); 518 519 objProperties->snodeXVal->clear(); 520 objProperties->snodeYVal->clear(); 521 objProperties->snodeZVal->clear(); 522 523 objProperties->rnodeXVal->clear(); 524 objProperties->rnodeYVal->clear(); 525 objProperties->rnodeZVal->clear(); 347 526 } 348 527 … … 388 567 if(closestObject) 389 568 { 390 if(mCurentObject ) // check if we do not have an object already selected569 if(mCurentObject.use_count()) // check if we do not have an object already selected 391 570 { 392 571 // if we are over it … … 395 574 if (!mSelectedObject) // if it is not the case, it is an other object 396 575 { 397 mCurentObject->showBoundingBox(false); 398 mCurentObject = closestObject->getParentSceneNode(); 399 mCurentObject->showBoundingBox(true); 576 mCurentObject->getSceneNode()->showBoundingBox(false); 577 mCurentObject.reset(); 578 mCurentObject = CObjectManager::getInstance()->getObjectById(closestObject->getParentNode()->getName()); 579 mCurentObject->getSceneNode()->showBoundingBox(true); 580 581 this->getSelectedObjectInfo(); 582 400 583 std::cout << "** objet trouve diff objet courant **" << std::endl; 401 584 } … … 407 590 else // We have no object selected, marked this one 408 591 { 409 mCurentObject = closestObject->getParentSceneNode(); 410 mCurentObject->showBoundingBox(true); 592 mCurentObject = CObjectManager::getInstance()->getObjectById(closestObject->getParentNode()->getName()); 593 mCurentObject->getSceneNode()->showBoundingBox(true); 594 595 this->getSelectedObjectInfo(); 596 411 597 std::cout << "** objet trouve mais objet courant inexistant **" << std::endl; 412 598 } … … 415 601 { 416 602 std::cout << "** pas objet trouve **" << std::endl; 417 if(mCurentObject ) // if an other object is selected so disable it603 if(mCurentObject.use_count()) // if an other object is selected so disable it 418 604 { 419 mCurentObject->showBoundingBox(false); 420 mCurentObject = 0; 605 mCurentObject->getSceneNode()->showBoundingBox(false); 606 mCurentObject.reset(); 607 608 this->resetSelectedObjectInfo(); 609 421 610 std::cout << "** deselection object courant **" << std::endl; 422 611 } … … 494 683 if(mEditionMode) 495 684 { 496 if (mouseLeftPressed && mCurentObject ) // If we have left click and we have an object selected685 if (mouseLeftPressed && mCurentObject.use_count()) // If we have left click and we have an object selected 497 686 { 498 687 Ogre::Ray mouseRay = mCamera->getCameraToViewportRay((double)evt->pos().x()/(double)width(), (double)evt->pos().y()/(double)height()); … … 505 694 Ogre::RaySceneQueryResult::iterator itr = result.begin(); 506 695 507 if (itr != result.end() && itr->worldFragment && mCurentObject)696 if (itr != result.end() && itr->worldFragment) 508 697 { 509 mCurentObject-> setPosition(itr->worldFragment->singleIntersection.x,itr->worldFragment->singleIntersection.y + 10, itr->worldFragment->singleIntersection.z);698 mCurentObject->getSceneNode()->setPosition(itr->worldFragment->singleIntersection.x,itr->worldFragment->singleIntersection.y + 10, itr->worldFragment->singleIntersection.z); 510 699 } 511 700 } 512 701 } 513 702 514 if(mInsertMode)// && mTempObject .use_count())703 if(mInsertMode)// && mTempObject) 515 704 { 516 705 Ogre::Ray mRay = mCamera->getCameraToViewportRay((double)evt->pos().x()/(double)width(), (double)evt->pos().y()/(double)height()); … … 525 714 if (it != reslt.end() && it->worldFragment) 526 715 { 527 mTempObject-> getSceneNode()->setPosition(it->worldFragment->singleIntersection.x,it->worldFragment->singleIntersection.y + 10, it->worldFragment->singleIntersection.z);716 mTempObject->setPosition(it->worldFragment->singleIntersection.x,it->worldFragment->singleIntersection.y + 10, it->worldFragment->singleIntersection.z); 528 717 } 529 718 } -
trunk/src/LevelEditor.hh
r4 r5 10 10 #endif 11 11 12 #include "Properties.hh" 12 13 #include "dreamforge/objects/Object.hh" 13 14 … … 34 35 inline Ogre::RenderWindow* getRenderWindow(void) { return mRenderWindow; } 35 36 inline Ogre::SceneManager* getSceneMgr(void) { return mSceneMgr; } 37 38 ObjectPtr mCurentObject; // Selected object 39 Ogre::MovableObject* closestObject; // Object use in the ray cast 40 Ogre::Entity* mTempEnt; 41 Ogre::SceneNode* mTempObject; // Object use to fallow the mouse cursor for insertion 42 Ogre::AnimationState* mAnimState; 36 43 44 /////////////////////// 45 SelectedObjProp* objProperties; 46 47 private slots: 48 void chooseObject(void); 49 void changeObjectName( void ); 50 void changeObjectPositionX( void); 51 void changeObjectPositionY( void); 52 void changeObjectPositionZ( void); 53 void changeObjectScaleX( void); 54 void changeObjectScaleY( void); 55 void changeObjectScaleZ( void); 56 void pitchSelectedObject(void); 57 void yawSelectedObject(void); 58 void rollSelectedObject(void); 59 37 60 protected: 38 61 void setupView(); … … 44 67 45 68 void createScene(); 69 void getSelectedObjectInfo(void); 70 void resetSelectedObjectInfo(void); 46 71 47 72 void keyPressEvent(QKeyEvent* evt); … … 74 99 bool mouseRightPressed; 75 100 bool mouseMiddleBtn; 76 77 Ogre::SceneNode* mCurentObject; // Selected object78 Ogre::MovableObject* closestObject; // Object use in the ray cast79 ObjectPtr mTempObject; // Object use to fallow the mouse cursor for insertion80 101 81 102 // Action mode -
trunk/src/Properties.cc
r4 r5 72 72 //******************************************** 73 73 QGroupBox* groupProp = new QGroupBox("Propriétés de l'objet"); 74 QGroupBox* groupRotObj = new QGroupBox("Rotation objet"); 74 75 75 76 QLabel* sObjSelec = new QLabel(tr("Nom :")); 76 QLineEdit*sObjInput = new QLineEdit;77 sObjInput = new QLineEdit; 77 78 78 79 // Object Postion 79 80 QGroupBox* groupNodePos = new QGroupBox("Node Position"); 80 81 QLabel* nodeXText = new QLabel(tr("X :")); 81 QSpinBox* nodeXVal = new QSpinBox;82 nodeXVal = new QDoubleSpinBox; 82 83 QLabel* nodeYText = new QLabel(tr("Y :")); 83 QSpinBox* nodeYVal = new QSpinBox;84 nodeYVal = new QDoubleSpinBox; 84 85 QLabel* nodeZText = new QLabel(tr("Z :")); 85 QSpinBox* nodeZVal = new QSpinBox; 86 87 // Grille 86 nodeZVal = new QDoubleSpinBox; 87 88 nodeXVal->setSingleStep ( 10.0 ); 89 nodeXVal->setMaximum ( 9999999.99 ); 90 nodeYVal->setSingleStep ( 10.0 ); 91 nodeYVal->setMaximum ( 9999999.99 ); 92 nodeZVal->setSingleStep ( 10.0 ); 93 nodeZVal->setMaximum ( 9999999.99 ); 94 95 // Grille position 88 96 QGridLayout* gridNodePosLayout = new QGridLayout; 89 97 gridNodePosLayout->addWidget(nodeXText, 0, 0); … … 99 107 QGroupBox* groupNodeScal = new QGroupBox("Node Scale"); 100 108 QLabel* snodeXText = new QLabel(tr("X :")); 101 QSpinBox* snodeXVal = new QSpinBox;109 snodeXVal = new QDoubleSpinBox; 102 110 QLabel* snodeYText = new QLabel(tr("Y :")); 103 QSpinBox* snodeYVal = new QSpinBox;111 snodeYVal = new QDoubleSpinBox; 104 112 QLabel* snodeZText = new QLabel(tr("Z :")); 105 QSpinBox* snodeZVal = new QSpinBox; 106 107 // Grille 113 snodeZVal = new QDoubleSpinBox; 114 115 snodeXVal->setSingleStep ( 0.1 ); 116 snodeXVal->setMaximum ( 9999.90 ); 117 snodeYVal->setSingleStep ( 0.1 ); 118 snodeYVal->setMaximum ( 10.0 ); 119 snodeZVal->setSingleStep ( 0.1 ); 120 snodeZVal->setMaximum ( 10.0 ); 121 122 123 // Grille scale 108 124 QGridLayout* gridNodeScalLayout = new QGridLayout; 109 125 gridNodeScalLayout->addWidget(snodeXText, 0, 0); … … 115 131 116 132 groupNodeScal->setLayout(gridNodeScalLayout); 117 118 // Grille 133 134 // Object Rotation 135 QGroupBox* groupNodeRot = new QGroupBox("Node Rotation"); 136 QLabel* rnodeXText = new QLabel(tr("Xaxis (pitch) :")); 137 rnodeXVal = new QDoubleSpinBox; 138 QLabel* rnodeYText = new QLabel(tr("Yaxis (yaw) :")); 139 rnodeYVal = new QDoubleSpinBox; 140 QLabel* rnodeZText = new QLabel(tr("Zaxis (roll) :")); 141 rnodeZVal = new QDoubleSpinBox; 142 143 rnodeXVal->setSingleStep ( 10.0 ); 144 rnodeXVal->setMaximum ( 360.0 ); 145 rnodeXVal->setMinimum ( -360.0 ); 146 rnodeYVal->setSingleStep ( 10.0 ); 147 rnodeYVal->setMaximum ( 360.0 ); 148 rnodeYVal->setMinimum ( -360.0 ); 149 rnodeZVal->setSingleStep ( 10.0 ); 150 rnodeZVal->setMaximum ( 360.0 ); 151 rnodeZVal->setMinimum ( -360.0 ); 152 153 // Grille Rotation 154 QGridLayout* gridNodeRotLayout = new QGridLayout; 155 gridNodeRotLayout->addWidget(rnodeXText, 0, 0); 156 gridNodeRotLayout->addWidget(rnodeXVal, 0, 1); 157 gridNodeRotLayout->addWidget(rnodeYText, 1, 0); 158 gridNodeRotLayout->addWidget(rnodeYVal, 1, 1); 159 gridNodeRotLayout->addWidget(rnodeZText, 2, 0); 160 gridNodeRotLayout->addWidget(rnodeZVal, 2, 1); 161 162 groupNodeRot->setLayout(gridNodeRotLayout); 163 164 165 // Grille global 119 166 QGridLayout* gridsObjLayout = new QGridLayout; 120 167 gridsObjLayout->addWidget(sObjSelec, 0, 0); … … 122 169 gridsObjLayout->addWidget(groupNodePos, 1, 0); 123 170 gridsObjLayout->addWidget(groupNodeScal, 1, 1); 124 171 172 // Grille special rotation 173 QGridLayout* gridsObjRotLayout = new QGridLayout; 174 gridsObjRotLayout->addWidget(groupNodeRot); 175 176 // add all our layout to a group box 125 177 groupProp->setLayout(gridsObjLayout); 178 groupRotObj->setLayout(gridsObjRotLayout); 126 179 127 180 //******************************************** 128 181 QVBoxLayout* regroupLayout = new QVBoxLayout; 129 //regroupLayout->addWidget(groupCombo);130 //regroupLayout->addWidget(mObjectList);131 182 regroupLayout->addWidget(objectView); 132 183 regroupLayout->addWidget(groupProp); 184 regroupLayout->addWidget(groupRotObj); 133 185 134 186 setLayout(regroupLayout); -
trunk/src/Properties.hh
r4 r5 18 18 SelectedObjProp(QWidget *parent = 0); 19 19 ~SelectedObjProp(); 20 20 21 QTreeView* objectView; 22 TreeModel *model; 23 QLineEdit* sObjInput; 24 // Postion 25 QDoubleSpinBox* nodeXVal; 26 QDoubleSpinBox* nodeYVal; 27 QDoubleSpinBox* nodeZVal; 28 // Scale 29 QDoubleSpinBox* snodeXVal; 30 QDoubleSpinBox* snodeYVal; 31 QDoubleSpinBox* snodeZVal; 32 // Rotation 33 QDoubleSpinBox* rnodeXVal; 34 QDoubleSpinBox* rnodeYVal; 35 QDoubleSpinBox* rnodeZVal; 36 21 37 protected: 22 38 void mousePressEvent(QMouseEvent* evt); 23 void mouseReleaseEvent(QMouseEvent* evt); 24 25 public: 26 QTreeView* objectView; 27 TreeModel *model; 28 // QListWidget *mObjectList; 29 // QString mCurSelect; 39 void mouseReleaseEvent(QMouseEvent* evt); 40 30 41 }; 31 42 -
trunk/src/Workbench.cc
r4 r5 29 29 tabWidget->addTab(mLevelEd, tr("Editeur de niveau")); 30 30 31 // Create a tree widget32 objProperties = new SelectedObjProp;33 31 34 32 // Create a widget we can drag around the workbench 35 33 QDockWidget *dock = new QDockWidget(tr("Propriétés"), this); 36 34 dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); 37 dock->setWidget( objProperties);35 dock->setWidget(mLevelEd->objProperties); 38 36 39 37 addDockWidget(Qt::RightDockWidgetArea, dock); 40 38 41 // Connect action42 connect(objProperties->objectView, SIGNAL(clicked( const QModelIndex & )),this, SLOT(chooseObject()));43 39 44 // Try to register the icon resources : Fix me does not work 40 // Try to register the icon resources : Fix me does not work 45 41 QResource::registerResource("application.rcc"); 46 42 … … 61 57 } 62 58 63 //------------------------------------------------------------------------------------------------64 // ACTIONS65 //------------------------------------------------------------------------------------------------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 59 80 }81 60 82 61 //------------------------------------------------------------------------------------------------ … … 185 164 Q_UNUSED(evt); 186 165 } 166 167 //------------------------------------------------------------------------------------------------ 168 void Workbench::timerEvent(QTimerEvent* evt) 169 { 170 Q_UNUSED(evt); 171 172 } -
trunk/src/Workbench.hh
r4 r5 7 7 8 8 #include "LevelEditor.hh" 9 #include "Properties.hh"9 10 10 11 11 //class QAction; … … 29 29 protected: 30 30 void closeEvent(QCloseEvent *event); 31 void timerEvent(QTimerEvent* evt); 31 32 32 33 private slots: 33 void about( );34 void chooseObject(); 34 void about(void); 35 35 36 36 37 private: … … 59 60 LevelEdWidget *mLevelEd; 60 61 61 SelectedObjProp* objProperties;62 62 }; 63 63 -
trunk/src/dreamforge/GameObjectManager.cc
r3 r5 111 111 112 112 //------------------------------------------------------------------------------------------------ 113 ObjectPtr CObjectManager::getObjectByName(const std::string &objectName) 114 { 115 ObjectPtr obj; 116 117 mObjectMap::const_iterator iter; 118 for(iter = mObjectList.begin(); iter != mObjectList.end(); ++iter) 119 { 120 if(iter->second->getObjectName() == objectName) 121 { 122 obj = iter->second; 123 return obj; 124 } 125 } 126 127 } 128 129 //------------------------------------------------------------------------------------------------ 113 130 // OBJECT FACTORY 114 131 //------------------------------------------------------------------------------------------------ -
trunk/src/dreamforge/objects/Object.cc
r3 r5 52 52 { 53 53 //TODO : Check the file and name if it empty 54 mObjectNode = CEngineSystem::getInstance()->getSceneMgr()->getRootSceneNode()->createChildSceneNode(mObject Name);54 mObjectNode = CEngineSystem::getInstance()->getSceneMgr()->getRootSceneNode()->createChildSceneNode(mObjectID); 55 55 mEntity = CEngineSystem::getInstance()->getSceneMgr( )->createEntity(mObjectID, mObjectMesh); 56 56 mEntity->setCastShadows(true); … … 65 65 //TODO : Check the file and name if it empty 66 66 mParentNode = parent; 67 mObjectNode = mParentNode->createChildSceneNode(mObject Name);67 mObjectNode = mParentNode->createChildSceneNode(mObjectID); 68 68 mEntity = CEngineSystem::getInstance()->getSceneMgr( )->createEntity(mObjectID, mObjectMesh); 69 69 mEntity->setCastShadows(true); … … 103 103 { 104 104 mParentNode = parent; 105 mObjectNode = static_cast<Ogre::SceneNode*>(CEngineSystem::getInstance()->getSceneMgr()->getRootSceneNode()->removeChild(mObject Name));105 mObjectNode = static_cast<Ogre::SceneNode*>(CEngineSystem::getInstance()->getSceneMgr()->getRootSceneNode()->removeChild(mObjectID)); 106 106 mParentNode->addChild(mObjectNode); 107 107 } 108 108 else // Otherwise detach it from its current parent 109 109 { 110 mObjectNode = static_cast<Ogre::SceneNode*>(mParentNode->removeChild(mObject Name));110 mObjectNode = static_cast<Ogre::SceneNode*>(mParentNode->removeChild(mObjectID)); 111 111 mParentNode = parent; 112 112 mParentNode->addChild(mObjectNode); … … 116 116 void CGameObject::detachToParent( void ) 117 117 { 118 mObjectNode = static_cast<Ogre::SceneNode*>(mParentNode->removeChild(mObject Name));118 mObjectNode = static_cast<Ogre::SceneNode*>(mParentNode->removeChild(mObjectID)); 119 119 } 120 120
