mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-31 14:56:38 +00:00 
			
		
		
		
	Merge branch 'master' of https://github.com/zinnschlag/openmw.git into objectRotationScaling
Conflicts: apps/openmw/mwscript/docs/vmformat.txt
This commit is contained in:
		
						commit
						01fefca0a3
					
				
					 53 changed files with 208 additions and 109 deletions
				
			
		|  | @ -8,7 +8,9 @@ | |||
| #include <algorithm> | ||||
| #include <sstream> | ||||
| 
 | ||||
| MwIniImporter::MwIniImporter() { | ||||
| MwIniImporter::MwIniImporter() | ||||
|     : mVerbose(false) | ||||
| { | ||||
|     const char *map[][2] = | ||||
|     { | ||||
|         { "fps", "General:Show FPS" }, | ||||
|  | @ -124,9 +126,9 @@ MwIniImporter::multistrmap MwIniImporter::loadCfgFile(std::string filename) { | |||
| void MwIniImporter::merge(multistrmap &cfg, multistrmap &ini) { | ||||
|     multistrmap::iterator cfgIt; | ||||
|     multistrmap::iterator iniIt; | ||||
|     for(strmap::iterator it=mMergeMap.begin(); it!=mMergeMap.end(); it++) { | ||||
|     for(strmap::iterator it=mMergeMap.begin(); it!=mMergeMap.end(); ++it) { | ||||
|         if((iniIt = ini.find(it->second)) != ini.end()) { | ||||
|             for(std::vector<std::string>::iterator vc = iniIt->second.begin(); vc != iniIt->second.end(); vc++) { | ||||
|             for(std::vector<std::string>::iterator vc = iniIt->second.begin(); vc != iniIt->second.end(); ++vc) { | ||||
|                 cfg.erase(it->first); | ||||
|                 insertMultistrmap(cfg, it->first, *vc); | ||||
|             } | ||||
|  | @ -139,9 +141,9 @@ void MwIniImporter::mergeFallback(multistrmap &cfg, multistrmap &ini) { | |||
| 
 | ||||
|     multistrmap::iterator cfgIt; | ||||
|     multistrmap::iterator iniIt; | ||||
|     for(std::vector<std::string>::iterator it=mMergeFallback.begin(); it!=mMergeFallback.end(); it++) { | ||||
|     for(std::vector<std::string>::iterator it=mMergeFallback.begin(); it!=mMergeFallback.end(); ++it) { | ||||
|         if((iniIt = ini.find(*it)) != ini.end()) { | ||||
|             for(std::vector<std::string>::iterator vc = iniIt->second.begin(); vc != iniIt->second.end(); vc++) { | ||||
|             for(std::vector<std::string>::iterator vc = iniIt->second.begin(); vc != iniIt->second.end(); ++vc) { | ||||
|                 std::string value(*it); | ||||
|                 std::replace( value.begin(), value.end(), ' ', '_' ); | ||||
|                 std::replace( value.begin(), value.end(), ':', '_' ); | ||||
|  | @ -176,7 +178,7 @@ void MwIniImporter::importGameFiles(multistrmap &cfg, multistrmap &ini) { | |||
|             break; | ||||
|         } | ||||
| 
 | ||||
|         for(std::vector<std::string>::iterator entry = it->second.begin(); entry!=it->second.end(); entry++) { | ||||
|         for(std::vector<std::string>::iterator entry = it->second.begin(); entry!=it->second.end(); ++entry) { | ||||
|             std::string filetype(entry->substr(entry->length()-4, 3)); | ||||
|             std::transform(filetype.begin(), filetype.end(), filetype.begin(), ::tolower); | ||||
| 
 | ||||
|  | @ -194,22 +196,22 @@ void MwIniImporter::importGameFiles(multistrmap &cfg, multistrmap &ini) { | |||
|     cfg.erase("master"); | ||||
|     cfg.insert( std::make_pair<std::string, std::vector<std::string> > ("master", std::vector<std::string>() ) ); | ||||
| 
 | ||||
|     for(std::vector<std::string>::iterator it=esmFiles.begin(); it!=esmFiles.end(); it++) { | ||||
|     for(std::vector<std::string>::iterator it=esmFiles.begin(); it!=esmFiles.end(); ++it) { | ||||
|         cfg["master"].push_back(*it); | ||||
|     } | ||||
| 
 | ||||
|     cfg.erase("plugin"); | ||||
|     cfg.insert( std::make_pair<std::string, std::vector<std::string> > ("plugin", std::vector<std::string>() ) ); | ||||
| 
 | ||||
|     for(std::vector<std::string>::iterator it=espFiles.begin(); it!=espFiles.end(); it++) { | ||||
|     for(std::vector<std::string>::iterator it=espFiles.begin(); it!=espFiles.end(); ++it) { | ||||
|         cfg["plugin"].push_back(*it); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| void MwIniImporter::writeToFile(boost::iostreams::stream<boost::iostreams::file_sink> &out, multistrmap &cfg) { | ||||
| 
 | ||||
|     for(multistrmap::iterator it=cfg.begin(); it != cfg.end(); it++) { | ||||
|         for(std::vector<std::string>::iterator entry=it->second.begin(); entry != it->second.end(); entry++) { | ||||
|     for(multistrmap::iterator it=cfg.begin(); it != cfg.end(); ++it) { | ||||
|         for(std::vector<std::string>::iterator entry=it->second.begin(); entry != it->second.end(); ++entry) { | ||||
|             out << (it->first) << "=" << (*entry) << std::endl; | ||||
|         } | ||||
|     } | ||||
|  |  | |||
|  | @ -9,6 +9,7 @@ | |||
| 
 | ||||
| #include "../mwworld/ptr.hpp" | ||||
| #include "../mwworld/actiontake.hpp" | ||||
| #include "../mwworld/actionequip.hpp" | ||||
| #include "../mwworld/nullaction.hpp" | ||||
| #include "../mwworld/inventorystore.hpp" | ||||
| #include "../mwworld/world.hpp" | ||||
|  | @ -176,4 +177,11 @@ namespace MWClass | |||
| 
 | ||||
|         return info; | ||||
|     } | ||||
| 
 | ||||
|     boost::shared_ptr<MWWorld::Action> Light::use (const MWWorld::Ptr& ptr) const | ||||
|     { | ||||
|         MWBase::Environment::get().getSoundManager()->playSound (getUpSoundId(ptr), 1.0, 1.0); | ||||
| 
 | ||||
|         return boost::shared_ptr<MWWorld::Action>(new MWWorld::ActionEquip(ptr)); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -48,6 +48,10 @@ namespace MWClass | |||
| 
 | ||||
|             virtual std::string getInventoryIcon (const MWWorld::Ptr& ptr) const; | ||||
|             ///< Return name of inventory icon.
 | ||||
| 
 | ||||
|             virtual boost::shared_ptr<MWWorld::Action> use (const MWWorld::Ptr& ptr) | ||||
|                 const; | ||||
|             ///< Generate action for using via inventory menu
 | ||||
|     }; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -9,6 +9,7 @@ | |||
| 
 | ||||
| #include "../mwworld/ptr.hpp" | ||||
| #include "../mwworld/actiontake.hpp" | ||||
| #include "../mwworld/actionequip.hpp" | ||||
| #include "../mwworld/inventorystore.hpp" | ||||
| #include "../mwworld/world.hpp" | ||||
| #include "../mwgui/window_manager.hpp" | ||||
|  | @ -155,4 +156,11 @@ namespace MWClass | |||
| 
 | ||||
|         return info; | ||||
|     } | ||||
| 
 | ||||
|     boost::shared_ptr<MWWorld::Action> Lockpick::use (const MWWorld::Ptr& ptr) const | ||||
|     { | ||||
|         MWBase::Environment::get().getSoundManager()->playSound (getUpSoundId(ptr), 1.0, 1.0); | ||||
| 
 | ||||
|         return boost::shared_ptr<MWWorld::Action>(new MWWorld::ActionEquip(ptr)); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -48,6 +48,10 @@ namespace MWClass | |||
| 
 | ||||
|             virtual std::string getInventoryIcon (const MWWorld::Ptr& ptr) const; | ||||
|             ///< Return name of inventory icon.
 | ||||
| 
 | ||||
|             virtual boost::shared_ptr<MWWorld::Action> use (const MWWorld::Ptr& ptr) | ||||
|                 const; | ||||
|             ///< Generate action for using via inventory menu
 | ||||
|     }; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -9,6 +9,7 @@ | |||
| 
 | ||||
| #include "../mwworld/ptr.hpp" | ||||
| #include "../mwworld/actiontake.hpp" | ||||
| #include "../mwworld/actionequip.hpp" | ||||
| #include "../mwworld/inventorystore.hpp" | ||||
| #include "../mwworld/world.hpp" | ||||
| #include "../mwgui/window_manager.hpp" | ||||
|  | @ -154,4 +155,11 @@ namespace MWClass | |||
| 
 | ||||
|         return info; | ||||
|     } | ||||
| 
 | ||||
|     boost::shared_ptr<MWWorld::Action> Probe::use (const MWWorld::Ptr& ptr) const | ||||
|     { | ||||
|         MWBase::Environment::get().getSoundManager()->playSound (getUpSoundId(ptr), 1.0, 1.0); | ||||
| 
 | ||||
|         return boost::shared_ptr<MWWorld::Action>(new MWWorld::ActionEquip(ptr)); | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -48,6 +48,10 @@ namespace MWClass | |||
| 
 | ||||
|             virtual std::string getInventoryIcon (const MWWorld::Ptr& ptr) const; | ||||
|             ///< Return name of inventory icon.
 | ||||
| 
 | ||||
|             virtual boost::shared_ptr<MWWorld::Action> use (const MWWorld::Ptr& ptr) | ||||
|                 const; | ||||
|             ///< Generate action for using via inventory menu
 | ||||
|     }; | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -607,7 +607,7 @@ namespace MWDialogue | |||
|     void DialogueManager::parseText(std::string text) | ||||
|     { | ||||
|         std::list<std::string>::iterator it; | ||||
|         for(it = actorKnownTopics.begin();it != actorKnownTopics.end();it++) | ||||
|         for(it = actorKnownTopics.begin();it != actorKnownTopics.end();++it) | ||||
|         { | ||||
|             size_t pos = find_str_ci(text,*it,0); | ||||
|             if(pos !=std::string::npos) | ||||
|  |  | |||
|  | @ -117,6 +117,7 @@ CharacterCreation::CharacterCreation(WindowManager* _wm) | |||
|     , mCreateClassDialog(0) | ||||
|     , mBirthSignDialog(0) | ||||
|     , mReviewDialog(0) | ||||
|     , mGenerateClassStep(0) | ||||
|     , mWM(_wm) | ||||
| { | ||||
|     mCreationStage = CSE_NotStarted; | ||||
|  |  | |||
|  | @ -581,8 +581,7 @@ void CreateClassDialog::onDialogCancel() | |||
| 
 | ||||
| void CreateClassDialog::onSpecializationClicked(MyGUI::WidgetPtr _sender) | ||||
| { | ||||
|     if (specDialog) | ||||
|         delete specDialog; | ||||
|     delete specDialog; | ||||
|     specDialog = new SelectSpecializationDialog(mWindowManager); | ||||
|     specDialog->eventCancel += MyGUI::newDelegate(this, &CreateClassDialog::onDialogCancel); | ||||
|     specDialog->eventItemSelected += MyGUI::newDelegate(this, &CreateClassDialog::onSpecializationSelected); | ||||
|  | @ -613,8 +612,7 @@ void CreateClassDialog::setSpecialization(int id) | |||
| 
 | ||||
| void CreateClassDialog::onAttributeClicked(Widgets::MWAttributePtr _sender) | ||||
| { | ||||
|     if (attribDialog) | ||||
|         delete attribDialog; | ||||
|     delete attribDialog; | ||||
|     attribDialog = new SelectAttributeDialog(mWindowManager); | ||||
|     attribDialog->setAffectedWidget(_sender); | ||||
|     attribDialog->eventCancel += MyGUI::newDelegate(this, &CreateClassDialog::onDialogCancel); | ||||
|  | @ -645,8 +643,7 @@ void CreateClassDialog::onAttributeSelected() | |||
| 
 | ||||
| void CreateClassDialog::onSkillClicked(Widgets::MWSkillPtr _sender) | ||||
| { | ||||
|     if (skillDialog) | ||||
|         delete skillDialog; | ||||
|     delete skillDialog; | ||||
|     skillDialog = new SelectSkillDialog(mWindowManager); | ||||
|     skillDialog->setAffectedWidget(_sender); | ||||
|     skillDialog->eventCancel += MyGUI::newDelegate(this, &CreateClassDialog::onDialogCancel); | ||||
|  |  | |||
|  | @ -268,7 +268,7 @@ namespace MWGui | |||
|         /* Are there quotation marks? */ | ||||
|         if( tmp.find('"') != string::npos ) { | ||||
|             int numquotes=0; | ||||
|             for(string::iterator it=tmp.begin(); it < tmp.end(); it++) { | ||||
|             for(string::iterator it=tmp.begin(); it < tmp.end(); ++it) { | ||||
|                 if( *it == '"' ) | ||||
|                     numquotes++; | ||||
|             } | ||||
|  | @ -311,7 +311,7 @@ namespace MWGui | |||
|         } | ||||
| 
 | ||||
|         /* Iterate through the vector. */ | ||||
|         for(vector<string>::iterator it=mNames.begin(); it < mNames.end();it++) { | ||||
|         for(vector<string>::iterator it=mNames.begin(); it < mNames.end();++it) { | ||||
|             bool string_different=false; | ||||
| 
 | ||||
|             /* Is the string shorter than the input string? If yes skip it. */ | ||||
|  | @ -359,7 +359,7 @@ namespace MWGui | |||
|         int i = tmp.length(); | ||||
| 
 | ||||
|         for(string::iterator iter=matches.front().begin()+tmp.length(); iter < matches.front().end(); iter++, i++) { | ||||
|             for(vector<string>::iterator it=matches.begin(); it < matches.end();it++) { | ||||
|             for(vector<string>::iterator it=matches.begin(); it < matches.end();++it) { | ||||
|                 if( tolower((*it)[i]) != tolower(*iter) ) { | ||||
|                     /* Append the longest match to the end of the output string*/ | ||||
|                     output.append(matches.front().substr( 0, i)); | ||||
|  | @ -384,6 +384,7 @@ namespace MWGui | |||
|             setTitle("#{sConsoleTitle} (" + mPtr.getCellRef().refID + ")"); | ||||
|         else | ||||
|             setTitle("#{sConsoleTitle}"); | ||||
|         MyGUI::InputManager::getInstance().setKeyFocusWidget(command); | ||||
|     } | ||||
| 
 | ||||
|     void Console::onReferenceUnavailable() | ||||
|  |  | |||
|  | @ -361,9 +361,6 @@ void ContainerBase::drawItems() | |||
|     int y = 0; | ||||
|     int maxHeight = mItemView->getSize().height - 58; | ||||
| 
 | ||||
|     int index = 0; | ||||
| 
 | ||||
| 
 | ||||
|     bool onlyMagic = false; | ||||
|     int categories; | ||||
|     if (mFilter == Filter_All) | ||||
|  | @ -384,7 +381,7 @@ void ContainerBase::drawItems() | |||
|         categories = MWWorld::ContainerStore::Type_Miscellaneous + MWWorld::ContainerStore::Type_Book | ||||
|                     + MWWorld::ContainerStore::Type_Ingredient + MWWorld::ContainerStore::Type_Repair | ||||
|                     + MWWorld::ContainerStore::Type_Lockpick + MWWorld::ContainerStore::Type_Light | ||||
|                     + MWWorld::ContainerStore::Type_Apparatus; | ||||
|                     + MWWorld::ContainerStore::Type_Apparatus + MWWorld::ContainerStore::Type_Probe; | ||||
|     } | ||||
|     else if (mFilter == Filter_Ingredients) | ||||
|         categories = MWWorld::ContainerStore::Type_Ingredient; | ||||
|  | @ -459,7 +456,6 @@ void ContainerBase::drawItems() | |||
|     for (std::vector< std::pair<MWWorld::Ptr, ItemState> >::const_iterator it=items.begin(); | ||||
|         it != items.end(); ++it) | ||||
|     { | ||||
|         index++; | ||||
|         const MWWorld::Ptr* iter = &((*it).first); | ||||
| 
 | ||||
|         int displayCount = iter->getRefData().getCount(); | ||||
|  |  | |||
|  | @ -140,7 +140,6 @@ void DialogueWindow::startDialogue(MWWorld::Ptr actor, std::string npcName) | |||
|     setTitle(npcName); | ||||
| 
 | ||||
|     topicsList->clear(); | ||||
|     pTopicsText.clear(); | ||||
|     history->eraseText(0,history->getTextLength()); | ||||
|     updateOptions(); | ||||
| } | ||||
|  | @ -157,7 +156,7 @@ void DialogueWindow::setKeywords(std::list<std::string> keyWords) | |||
|     if (anyService) | ||||
|         topicsList->addSeparator(); | ||||
| 
 | ||||
|     for(std::list<std::string>::iterator it = keyWords.begin(); it != keyWords.end(); it++) | ||||
|     for(std::list<std::string>::iterator it = keyWords.begin(); it != keyWords.end(); ++it) | ||||
|     { | ||||
|         topicsList->addItem(*it); | ||||
|     } | ||||
|  | @ -169,7 +168,6 @@ void DialogueWindow::removeKeyword(std::string keyWord) | |||
|     if(topicsList->hasItem(keyWord)) | ||||
|     { | ||||
|         topicsList->removeItem(keyWord); | ||||
|         pTopicsText.erase(keyWord); | ||||
|     } | ||||
|     topicsList->adjustSize(); | ||||
| } | ||||
|  | @ -245,7 +243,6 @@ void DialogueWindow::updateOptions() | |||
| { | ||||
|     //Clear the list of topics
 | ||||
|     topicsList->clear(); | ||||
|     pTopicsText.clear(); | ||||
|     history->eraseText(0,history->getTextLength()); | ||||
| 
 | ||||
|     pDispositionBar->setProgressRange(100); | ||||
|  |  | |||
|  | @ -77,7 +77,6 @@ namespace MWGui | |||
|         Widgets::MWList*      topicsList; | ||||
|         MyGUI::ProgressPtr pDispositionBar; | ||||
|         MyGUI::EditPtr pDispositionText; | ||||
|         std::map<std::string,std::string> pTopicsText;// this map links keyword and "real" text.
 | ||||
|     }; | ||||
| } | ||||
| #endif | ||||
|  |  | |||
|  | @ -303,6 +303,7 @@ namespace MWGui | |||
|             && (type != typeid(ESM::Tool).name()) | ||||
|             && (type != typeid(ESM::Probe).name()) | ||||
|             && (type != typeid(ESM::Repair).name()) | ||||
|             && (type != typeid(ESM::Weapon).name()) | ||||
|             && (type != typeid(ESM::Potion).name())) | ||||
|             return; | ||||
| 
 | ||||
|  | @ -311,17 +312,23 @@ namespace MWGui | |||
|         MWBase::Environment::get().getSoundManager()->playSound(sound, 1, 1); | ||||
| 
 | ||||
|         int count = object.getRefData().getCount(); | ||||
|         MWWorld::ActionTake action(object); | ||||
|         action.execute(); | ||||
| 
 | ||||
|         // add to player inventory
 | ||||
|         // can't use ActionTake here because we need an MWWorld::Ptr to the newly inserted object
 | ||||
|         MWWorld::Ptr player = MWBase::Environment::get().getWorld()->getPlayer().getPlayer(); | ||||
|         MWWorld::Ptr newObject = *MWWorld::Class::get (player).getContainerStore (player).add (object); | ||||
|         // remove from world
 | ||||
|         MWBase::Environment::get().getWorld()->deleteObject (object); | ||||
| 
 | ||||
|         mDragAndDrop->mIsOnDragAndDrop = true; | ||||
|         mDragAndDrop->mDraggedCount = count; | ||||
| 
 | ||||
|         std::string path = std::string("icons\\"); | ||||
|         path += MWWorld::Class::get(object).getInventoryIcon(object); | ||||
|         path += MWWorld::Class::get(newObject).getInventoryIcon(newObject); | ||||
|         MyGUI::ImageBox* baseWidget = mContainerWidget->createWidget<ImageBox>("ImageBox", MyGUI::IntCoord(0, 0, 42, 42), MyGUI::Align::Default); | ||||
|         baseWidget->detachFromWidget(); | ||||
|         baseWidget->attachToWidget(mDragAndDrop->mDragAndDropWidget); | ||||
|         baseWidget->setUserData(object); | ||||
|         baseWidget->setUserData(newObject); | ||||
|         mDragAndDrop->mDraggedWidget = baseWidget; | ||||
|         ImageBox* image = baseWidget->createWidget<ImageBox>("ImageBox", MyGUI::IntCoord(5, 5, 32, 32), MyGUI::Align::Default); | ||||
|         int pos = path.rfind("."); | ||||
|  |  | |||
|  | @ -131,7 +131,7 @@ void MWGui::JournalWindow::open() | |||
|         book journal; | ||||
|         journal.endLine = 0; | ||||
| 
 | ||||
|         for(std::deque<MWDialogue::StampedJournalEntry>::const_iterator it = MWBase::Environment::get().getJournal()->begin();it!=MWBase::Environment::get().getJournal()->end();it++) | ||||
|         for(std::deque<MWDialogue::StampedJournalEntry>::const_iterator it = MWBase::Environment::get().getJournal()->begin();it!=MWBase::Environment::get().getJournal()->end();++it) | ||||
|         { | ||||
|             std::string a = it->getText(MWBase::Environment::get().getWorld()->getStore()); | ||||
|             journal = formatText(a,journal,10,17); | ||||
|  | @ -141,7 +141,7 @@ void MWGui::JournalWindow::open() | |||
|         //std::string a = MWBase::Environment::get().getJournal()->begin()->getText(MWBase::Environment::get().getWorld()->getStore());
 | ||||
|         //std::list<std::string> journal = formatText(a,10,20,1);
 | ||||
|         bool left = true; | ||||
|         for(std::list<std::string>::iterator it = journal.pages.begin(); it != journal.pages.end();it++) | ||||
|         for(std::list<std::string>::iterator it = journal.pages.begin(); it != journal.pages.end();++it) | ||||
|         { | ||||
|             if(left) | ||||
|             { | ||||
|  |  | |||
|  | @ -257,7 +257,7 @@ void ReviewDialog::addGroup(const std::string &label, MyGUI::IntCoord &coord1, M | |||
|     coord2.top += lineHeight; | ||||
| } | ||||
| 
 | ||||
| MyGUI::TextBox* ReviewDialog::addValueItem(const std::string text, const std::string &value, const std::string& state, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2) | ||||
| MyGUI::TextBox* ReviewDialog::addValueItem(const std::string& text, const std::string &value, const std::string& state, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2) | ||||
| { | ||||
|     MyGUI::TextBox* skillNameWidget; | ||||
|     MyGUI::TextBox* skillValueWidget; | ||||
|  | @ -280,7 +280,7 @@ MyGUI::TextBox* ReviewDialog::addValueItem(const std::string text, const std::st | |||
|     return skillValueWidget; | ||||
| } | ||||
| 
 | ||||
| void ReviewDialog::addItem(const std::string text, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2) | ||||
| void ReviewDialog::addItem(const std::string& text, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2) | ||||
| { | ||||
|     MyGUI::TextBox* skillNameWidget; | ||||
| 
 | ||||
|  |  | |||
|  | @ -74,8 +74,8 @@ namespace MWGui | |||
|         void addSkills(const SkillList &skills, const std::string &titleId, const std::string &titleDefault, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2); | ||||
|         void addSeparator(MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2); | ||||
|         void addGroup(const std::string &label, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2); | ||||
|         MyGUI::TextBox* addValueItem(const std::string text, const std::string &value, const std::string& state, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2); | ||||
|         void addItem(const std::string text, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2); | ||||
|         MyGUI::TextBox* addValueItem(const std::string& text, const std::string &value, const std::string& state, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2); | ||||
|         void addItem(const std::string& text, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2); | ||||
|         void updateScroller(); | ||||
|         void updateSkillArea(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -340,7 +340,7 @@ MyGUI::TextBox* StatsWindow::addValueItem(const std::string& text, const std::st | |||
|     return skillValueWidget; | ||||
| } | ||||
| 
 | ||||
| MyGUI::Widget* StatsWindow::addItem(const std::string text, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2) | ||||
| MyGUI::Widget* StatsWindow::addItem(const std::string& text, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2) | ||||
| { | ||||
|     MyGUI::TextBox* skillNameWidget; | ||||
| 
 | ||||
|  |  | |||
|  | @ -47,7 +47,7 @@ namespace MWGui | |||
|             void addSeparator(MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2); | ||||
|             void addGroup(const std::string &label, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2); | ||||
|             MyGUI::TextBox* addValueItem(const std::string& text, const std::string &value, const std::string& state, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2); | ||||
|             MyGUI::Widget* addItem(const std::string text, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2); | ||||
|             MyGUI::Widget* addItem(const std::string& text, MyGUI::IntCoord &coord1, MyGUI::IntCoord &coord2); | ||||
|             void updateScroller(); | ||||
| 
 | ||||
|             void setFactions (const FactionList& factions); | ||||
|  |  | |||
|  | @ -142,7 +142,6 @@ void ToolTips::onFrame(float frameDuration) | |||
|             std::string type = focus->getUserString("ToolTipType"); | ||||
|             std::string text = focus->getUserString("ToolTipText"); | ||||
| 
 | ||||
|             ToolTipInfo info; | ||||
|             if (type == "") | ||||
|             { | ||||
|                 return; | ||||
|  |  | |||
|  | @ -767,7 +767,7 @@ void MWDynamicStat::setValue(int cur, int max_) | |||
|             static_cast<MyGUI::TextBox*>(barTextWidget)->setCaption(""); | ||||
|     } | ||||
| } | ||||
| void MWDynamicStat::setTitle(const std::string text) | ||||
| void MWDynamicStat::setTitle(const std::string& text) | ||||
| { | ||||
|     if (textWidget) | ||||
|         static_cast<MyGUI::TextBox*>(textWidget)->setCaption(text); | ||||
|  |  | |||
|  | @ -54,9 +54,20 @@ namespace MWGui | |||
| 
 | ||||
|             bool operator==(const SpellEffectParams& other) const | ||||
|             { | ||||
|                 return (other.mEffectID == mEffectID | ||||
|                         && other.mSkill == mSkill | ||||
|                         && other.mAttribute == mAttribute); | ||||
|                 if (mEffectID !=  other.mEffectID) | ||||
|                     return false; | ||||
| 
 | ||||
|                 bool involvesAttribute = (mEffectID == 74 // restore attribute
 | ||||
|                                         || mEffectID == 85 // absorb attribute
 | ||||
|                                         || mEffectID == 17 // drain attribute
 | ||||
|                                         || mEffectID == 79 // fortify attribute
 | ||||
|                                         || mEffectID == 22); // damage attribute
 | ||||
|                 bool involvesSkill = (mEffectID == 78 // restore skill
 | ||||
|                                         || mEffectID == 89 // absorb skill
 | ||||
|                                         || mEffectID == 21 // drain skill
 | ||||
|                                         || mEffectID == 83 // fortify skill
 | ||||
|                                         || mEffectID == 26); // damage skill
 | ||||
|                 return ((other.mSkill == mSkill) || !involvesSkill) && ((other.mAttribute == mAttribute) && !involvesAttribute); | ||||
|             } | ||||
|         }; | ||||
| 
 | ||||
|  | @ -271,7 +282,7 @@ namespace MWGui | |||
|             MWDynamicStat(); | ||||
| 
 | ||||
|             void setValue(int value, int max); | ||||
|             void setTitle(const std::string text); | ||||
|             void setTitle(const std::string& text); | ||||
| 
 | ||||
|             int getValue() const { return value; } | ||||
|             int getMax() const { return max; } | ||||
|  |  | |||
|  | @ -39,7 +39,7 @@ | |||
| using namespace MWGui; | ||||
| 
 | ||||
| WindowManager::WindowManager( | ||||
|     const Compiler::Extensions& extensions, int fpsLevel, bool newGame, OEngine::Render::OgreRenderer *mOgre, const std::string logpath) | ||||
|     const Compiler::Extensions& extensions, int fpsLevel, bool newGame, OEngine::Render::OgreRenderer *mOgre, const std::string& logpath) | ||||
|   : mGuiManager(NULL) | ||||
|   , hud(NULL) | ||||
|   , map(NULL) | ||||
|  | @ -657,7 +657,7 @@ void WindowManager::pushGuiMode(GuiMode mode) | |||
| 
 | ||||
| void WindowManager::popGuiMode() | ||||
| { | ||||
|     if (mGuiModes.size()) | ||||
|     if (!mGuiModes.empty()) | ||||
|         mGuiModes.pop_back(); | ||||
| 
 | ||||
|     bool gameMode = !isGuiMode(); | ||||
|  |  | |||
|  | @ -98,7 +98,7 @@ namespace MWGui | |||
|     typedef std::vector<Faction> FactionList; | ||||
|     typedef std::vector<int> SkillList; | ||||
| 
 | ||||
|     WindowManager(const Compiler::Extensions& extensions, int fpsLevel, bool newGame, OEngine::Render::OgreRenderer *mOgre, const std::string logpath); | ||||
|     WindowManager(const Compiler::Extensions& extensions, int fpsLevel, bool newGame, OEngine::Render::OgreRenderer *mOgre, const std::string& logpath); | ||||
|     virtual ~WindowManager(); | ||||
| 
 | ||||
|     /**
 | ||||
|  | @ -141,7 +141,7 @@ namespace MWGui | |||
|       updateVisible(); | ||||
|     } | ||||
| 
 | ||||
|     bool isAllowed(GuiWindow wnd) | ||||
|     bool isAllowed(GuiWindow wnd) const | ||||
|     { | ||||
|         return allowed & wnd; | ||||
|     } | ||||
|  |  | |||
|  | @ -68,7 +68,7 @@ ManualObject *Debugging::createPathgridLines(const ESM::Pathgrid *pathgrid) | |||
|     result->begin(PATHGRID_LINE_MATERIAL, RenderOperation::OT_LINE_LIST); | ||||
|     for(ESM::Pathgrid::EdgeList::const_iterator it = pathgrid->edges.begin(); | ||||
|         it != pathgrid->edges.end(); | ||||
|         it++) | ||||
|         ++it) | ||||
|     { | ||||
|         const ESM::Pathgrid::Edge &edge = *it; | ||||
|         const ESM::Pathgrid::Point &p1 = pathgrid->points[edge.v0], &p2 = pathgrid->points[edge.v1]; | ||||
|  | @ -197,7 +197,7 @@ void Debugging::togglePathgrid() | |||
| 
 | ||||
|         // add path grid meshes to already loaded cells
 | ||||
|         mPathGridRoot = mMwRoot->createChildSceneNode(); | ||||
|         for(CellList::iterator it = mActiveCells.begin(); it != mActiveCells.end(); it++) | ||||
|         for(CellList::iterator it = mActiveCells.begin(); it != mActiveCells.end(); ++it) | ||||
|         { | ||||
|             enableCellPathgrid(*it); | ||||
|         } | ||||
|  | @ -205,7 +205,7 @@ void Debugging::togglePathgrid() | |||
|     else | ||||
|     { | ||||
|         // remove path grid meshes from already loaded cells
 | ||||
|         for(CellList::iterator it = mActiveCells.begin(); it != mActiveCells.end(); it++) | ||||
|         for(CellList::iterator it = mActiveCells.begin(); it != mActiveCells.end(); ++it) | ||||
|         { | ||||
|             disableCellPathgrid(*it); | ||||
|         } | ||||
|  |  | |||
|  | @ -528,7 +528,7 @@ void NpcAnimation::insertFootPart(int type, const std::string &mesh){ | |||
| 
 | ||||
| 
 | ||||
| } | ||||
| std::pair<Ogre::Entity*, std::vector<Nif::NiTriShapeCopy>*> NpcAnimation::insertFreePart(const std::string &mesh, const std::string suffix){ | ||||
| std::pair<Ogre::Entity*, std::vector<Nif::NiTriShapeCopy>*> NpcAnimation::insertFreePart(const std::string &mesh, const std::string& suffix){ | ||||
| 
 | ||||
|     std::string meshNumbered = mesh + getUniqueID(mesh + suffix) + suffix; | ||||
|     NIFLoader::load(meshNumbered); | ||||
|  |  | |||
|  | @ -84,7 +84,7 @@ private: | |||
|      NpcAnimation(const MWWorld::Ptr& ptr, OEngine::Render::OgreRenderer& _rend, MWWorld::InventoryStore& _inv); | ||||
|      virtual ~NpcAnimation(); | ||||
|     Ogre::Entity* insertBoundedPart(const std::string &mesh, std::string bonename); | ||||
|      std::pair<Ogre::Entity*, std::vector<Nif::NiTriShapeCopy>*> insertFreePart(const std::string &mesh, const std::string suffix); | ||||
|      std::pair<Ogre::Entity*, std::vector<Nif::NiTriShapeCopy>*> insertFreePart(const std::string &mesh, const std::string& suffix); | ||||
|      void insertFootPart(int type, const std::string &mesh); | ||||
| 	virtual void runAnimation(float timepassed); | ||||
| 	void updateParts(); | ||||
|  |  | |||
|  | @ -39,7 +39,8 @@ struct LightInfo | |||
| 
 | ||||
|     LightInfo() : | ||||
|         flickerVariation(0), resetTime(0.5), | ||||
|         flickerSlowVariation(0), time(0), interior(true) | ||||
|         flickerSlowVariation(0), time(0), interior(true), | ||||
|         type(LT_Normal), radius(1.0) | ||||
|     { | ||||
|     } | ||||
| }; | ||||
|  | @ -68,7 +69,7 @@ class Objects{ | |||
|     ///< Remove all movable objects from \a node.
 | ||||
| 
 | ||||
| public: | ||||
|     Objects(OEngine::Render::OgreRenderer& renderer): mRenderer (renderer) {} | ||||
|     Objects(OEngine::Render::OgreRenderer& renderer): mRenderer (renderer), mIsStatic(false) {} | ||||
|     ~Objects(){} | ||||
|     void insertBegin (const MWWorld::Ptr& ptr, bool enabled, bool static_); | ||||
|     void insertMesh (const MWWorld::Ptr& ptr, const std::string& mesh); | ||||
|  |  | |||
|  | @ -97,7 +97,6 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const | |||
| 
 | ||||
|     mTerrainManager = new TerrainManager(mRendering.getScene(), this); | ||||
| 
 | ||||
|     //mSkyManager = 0;
 | ||||
|     mSkyManager = new SkyManager(mMwRoot, mRendering.getCamera()); | ||||
| 
 | ||||
|     mOcclusionQuery = new OcclusionQuery(&mRendering, mSkyManager->getSunNode()); | ||||
|  | @ -113,13 +112,18 @@ RenderingManager::RenderingManager (OEngine::Render::OgreRenderer& _rend, const | |||
| 
 | ||||
| RenderingManager::~RenderingManager () | ||||
| { | ||||
|     mRendering.removeWindowEventListener(this); | ||||
| 
 | ||||
|     delete mPlayer; | ||||
|     delete mSkyManager; | ||||
|     delete mDebugging; | ||||
|     delete mShaderHelper; | ||||
|     delete mShadows; | ||||
|     delete mTerrainManager; | ||||
|     delete mLocalMap; | ||||
|     delete mOcclusionQuery; | ||||
|     delete mCompositors; | ||||
|     delete mWater; | ||||
| } | ||||
| 
 | ||||
| MWRender::SkyManager* RenderingManager::getSkyManager() | ||||
|  |  | |||
|  | @ -167,7 +167,7 @@ namespace Ogre | |||
| 			class ShaderHelper : public TerrainAlloc | ||||
| 			{ | ||||
| 			public: | ||||
| 				ShaderHelper() {} | ||||
| 				ShaderHelper() : mShadowSamplerStartHi(0), mShadowSamplerStartLo(0) {} | ||||
| 				virtual ~ShaderHelper() {} | ||||
| 				virtual HighLevelGpuProgramPtr generateVertexProgram(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt); | ||||
| 				virtual HighLevelGpuProgramPtr generateFragmentProgram(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt); | ||||
|  |  | |||
|  | @ -114,6 +114,9 @@ Water::~Water() | |||
| { | ||||
|     MeshManager::getSingleton().remove("water"); | ||||
| 
 | ||||
|     if (mReflectionTarget) | ||||
|         mReflectionTexture->getBuffer()->getRenderTarget()->removeListener(this); | ||||
| 
 | ||||
|     mWaterNode->detachObject(mWater); | ||||
|     mSceneManager->destroyEntity(mWater); | ||||
|     mSceneManager->destroySceneNode(mWaterNode); | ||||
|  |  | |||
|  | @ -146,8 +146,10 @@ op 0x200014f: ForceGreeting | |||
| op 0x2000150: ForceGreeting, explicit reference | ||||
| op 0x2000151: ToggleFullHelp | ||||
| op 0x2000152: Goodbye | ||||
| op 0x2000153: SetScale | ||||
| op 0x2000154: SetScale, explicit reference | ||||
| op 0x2000155: SetAngle | ||||
| op 0x2000156: SetAngle, explicit reference | ||||
| opcodes 0x2000155-0x3ffffff unused | ||||
| op 0x2000153: DontSaveObject (left unimplemented) | ||||
| op 0x2000154: SetScale | ||||
| op 0x2000155: SetScale, explicit reference | ||||
| op 0x2000156: SetAngle | ||||
| op 0x2000157: SetAngle, explicit reference | ||||
| opcodes 0x2000158-0x3ffffff unused | ||||
| 
 | ||||
|  |  | |||
|  | @ -194,6 +194,17 @@ namespace MWScript | |||
|                 } | ||||
|         }; | ||||
| 
 | ||||
|         class OpDontSaveObject : public Interpreter::Opcode0 | ||||
|         { | ||||
|             public: | ||||
| 
 | ||||
|                 virtual void execute (Interpreter::Runtime& runtime) | ||||
|                 { | ||||
|                     // We are ignoring the DontSaveObject statement for now. Probably not worth
 | ||||
|                     /// bothering with. The incompatibility we are creating should be marginal at most.
 | ||||
|                 } | ||||
|         }; | ||||
| 
 | ||||
|         const int opcodeXBox = 0x200000c; | ||||
|         const int opcodeOnActivate = 0x200000d; | ||||
|         const int opcodeActivate = 0x2000075; | ||||
|  | @ -208,6 +219,7 @@ namespace MWScript | |||
|         const int opcodeFadeTo = 0x200013e; | ||||
|         const int opcodeToggleWater = 0x2000144; | ||||
|         const int opcodeTogglePathgrid = 0x2000146; | ||||
|         const int opcodeDontSaveObject = 0x2000153; | ||||
| 
 | ||||
|         void registerExtensions (Compiler::Extensions& extensions) | ||||
|         { | ||||
|  | @ -229,6 +241,7 @@ namespace MWScript | |||
|             extensions.registerInstruction ("twa", "", opcodeToggleWater); | ||||
|             extensions.registerInstruction ("togglepathgrid", "", opcodeTogglePathgrid); | ||||
|             extensions.registerInstruction ("tpg", "", opcodeTogglePathgrid); | ||||
|             extensions.registerInstruction ("dontsaveobject", "", opcodeDontSaveObject); | ||||
|         } | ||||
| 
 | ||||
|         void installOpcodes (Interpreter::Interpreter& interpreter) | ||||
|  | @ -247,6 +260,7 @@ namespace MWScript | |||
|             interpreter.installSegment5 (opcodeFadeTo, new OpFadeTo); | ||||
|             interpreter.installSegment5 (opcodeTogglePathgrid, new OpTogglePathgrid); | ||||
|             interpreter.installSegment5 (opcodeToggleWater, new OpToggleWater); | ||||
|             interpreter.installSegment5 (opcodeDontSaveObject, new OpDontSaveObject); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  |  | |||
|  | @ -591,10 +591,10 @@ namespace MWScript | |||
|         const int opcodeModDisposition = 0x200014d; | ||||
|         const int opcodeModDispositionExplicit = 0x200014e; | ||||
| 
 | ||||
|         const int opcodeSetScale = 0x2000153; | ||||
|         const int opcodeSetScaleExplicit = 0x2000154; | ||||
|         const int opcodeSetAngle = 0x2000155; | ||||
|         const int opcodeSetAngleExplicit = 0x2000156; | ||||
|         const int opcodeSetScale = 0x2000154; | ||||
|         const int opcodeSetScaleExplicit = 0x2000155; | ||||
|         const int opcodeSetAngle = 0x2000156; | ||||
|         const int opcodeSetAngleExplicit = 0x2000157; | ||||
| 
 | ||||
|         void registerExtensions (Compiler::Extensions& extensions) | ||||
|         { | ||||
|  |  | |||
|  | @ -46,7 +46,7 @@ namespace MWSound | |||
|     public: | ||||
|         virtual ~Sound_Output() { } | ||||
| 
 | ||||
|         bool isInitialized() { return mInitialized; } | ||||
|         bool isInitialized() const { return mInitialized; } | ||||
| 
 | ||||
|         friend class OpenAL_Output; | ||||
|         friend class SoundManager; | ||||
|  |  | |||
|  | @ -32,6 +32,7 @@ namespace MWWorld | |||
|     PhysicsSystem::~PhysicsSystem() | ||||
|     { | ||||
|         delete mEngine; | ||||
|         delete playerphysics; | ||||
| 
 | ||||
|     } | ||||
|     OEngine::Physic::PhysicEngine* PhysicsSystem::getEngine() | ||||
|  |  | |||
|  | @ -107,7 +107,7 @@ namespace MWWorld | |||
|             return *mClass; | ||||
|         } | ||||
| 
 | ||||
|         bool getAutoMove() | ||||
|         bool getAutoMove() const | ||||
|         { | ||||
|             return mAutoMove; | ||||
|         } | ||||
|  |  | |||
|  | @ -38,7 +38,8 @@ const float WeatherGlobals::mThunderSoundDelay = 0.25; | |||
| 
 | ||||
| WeatherManager::WeatherManager(MWRender::RenderingManager* rendering) : | ||||
|      mHour(14), mCurrentWeather("clear"), mFirstUpdate(true), mWeatherUpdateTime(0), | ||||
|      mThunderFlash(0), mThunderChance(0), mThunderChanceNeeded(50), mThunderSoundDelay(0) | ||||
|      mThunderFlash(0), mThunderChance(0), mThunderChanceNeeded(50), mThunderSoundDelay(0), | ||||
|      mRemainingTransitionTime(0), mMonth(0), mDay(0) | ||||
| { | ||||
|     mRendering = rendering; | ||||
| 
 | ||||
|  |  | |||
|  | @ -93,12 +93,12 @@ class DirArchive: public Ogre::FileSystemArchive | |||
|             return true; | ||||
| 
 | ||||
|         std::string folder; | ||||
|         int delimiter = 0; | ||||
|         //int delimiter = 0;
 | ||||
|         size_t lastSlash = copy.rfind('/'); | ||||
|         if (lastSlash != std::string::npos) | ||||
|         { | ||||
|             folder = copy.substr(0, lastSlash); | ||||
|             delimiter = lastSlash+1; | ||||
|             //delimiter = lastSlash+1;
 | ||||
|         } | ||||
| 
 | ||||
|         std::vector<std::string> current; | ||||
|  |  | |||
|  | @ -727,7 +727,7 @@ namespace Compiler | |||
|             opStopScript (code); | ||||
|         } | ||||
| 
 | ||||
|         void getDistance (CodeContainer& code, Literals& literals, const std::string id) | ||||
|         void getDistance (CodeContainer& code, Literals& literals, const std::string& id) | ||||
|         { | ||||
|             if (id.empty()) | ||||
|             { | ||||
|  | @ -746,7 +746,7 @@ namespace Compiler | |||
|             opGetSecondsPassed (code); | ||||
|         } | ||||
| 
 | ||||
|         void getDisabled (CodeContainer& code, Literals& literals, const std::string id) | ||||
|         void getDisabled (CodeContainer& code, Literals& literals, const std::string& id) | ||||
|         { | ||||
|             if (id.empty()) | ||||
|             { | ||||
|  | @ -760,7 +760,7 @@ namespace Compiler | |||
|             } | ||||
|         } | ||||
| 
 | ||||
|         void enable (CodeContainer& code, Literals& literals, const std::string id) | ||||
|         void enable (CodeContainer& code, Literals& literals, const std::string& id) | ||||
|         { | ||||
|             if (id.empty()) | ||||
|             { | ||||
|  | @ -774,7 +774,7 @@ namespace Compiler | |||
|             } | ||||
|         } | ||||
| 
 | ||||
|         void disable (CodeContainer& code, Literals& literals, const std::string id) | ||||
|         void disable (CodeContainer& code, Literals& literals, const std::string& id) | ||||
|         { | ||||
|             if (id.empty()) | ||||
|             { | ||||
|  |  | |||
|  | @ -109,15 +109,15 @@ namespace Compiler | |||
| 
 | ||||
|         void stopScript (CodeContainer& code); | ||||
| 
 | ||||
|         void getDistance (CodeContainer& code, Literals& literals, const std::string id); | ||||
|         void getDistance (CodeContainer& code, Literals& literals, const std::string& id); | ||||
| 
 | ||||
|         void getSecondsPassed (CodeContainer& code); | ||||
| 
 | ||||
|         void getDisabled (CodeContainer& code, Literals& literals, const std::string id); | ||||
|         void getDisabled (CodeContainer& code, Literals& literals, const std::string& id); | ||||
| 
 | ||||
|         void enable (CodeContainer& code, Literals& literals, const std::string id); | ||||
|         void enable (CodeContainer& code, Literals& literals, const std::string& id); | ||||
| 
 | ||||
|         void disable (CodeContainer& code, Literals& literals, const std::string id); | ||||
|         void disable (CodeContainer& code, Literals& literals, const std::string& id); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -368,8 +368,10 @@ namespace Compiler | |||
|                     special = S_cmpEQ; | ||||
|                 else | ||||
|                 { | ||||
|                     special = S_cmpEQ; | ||||
|                     putback (c); | ||||
|                     return false; | ||||
| //                    return false;
 | ||||
| // Allow = as synonym for ==. \todo optionally disable for post-1.0 scripting improvements.
 | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|  |  | |||
|  | @ -152,15 +152,15 @@ public: | |||
|    * | ||||
|    *************************************************************************/ | ||||
| 
 | ||||
|   int getVer() { return mCtx.header.version; } | ||||
|   int getVer() const { return mCtx.header.version; } | ||||
|   float getFVer() { if(mCtx.header.version == VER_12) return 1.2; else return 1.3; } | ||||
|   int getSpecial() { return mSpf; } | ||||
|   int getSpecial() const { return mSpf; } | ||||
|   const std::string getAuthor() { return mCtx.header.author.toString(); } | ||||
|   const std::string getDesc() { return mCtx.header.desc.toString(); } | ||||
|   const SaveData &getSaveData() { return mSaveData; } | ||||
|   const SaveData &getSaveData() const { return mSaveData; } | ||||
|   const MasterList &getMasters() { return mMasters; } | ||||
|   const NAME &retSubName() { return mCtx.subName; } | ||||
|   uint32_t getSubSize() { return mCtx.leftSub; } | ||||
|   uint32_t getSubSize() const { return mCtx.leftSub; } | ||||
| 
 | ||||
|   /*************************************************************************
 | ||||
|    * | ||||
|  | @ -323,8 +323,8 @@ public: | |||
|   void getRecHeader() { uint32_t u; getRecHeader(u); } | ||||
|   void getRecHeader(uint32_t &flags); | ||||
| 
 | ||||
|   bool hasMoreRecs() { return mCtx.leftFile > 0; } | ||||
|   bool hasMoreSubs() { return mCtx.leftRec > 0; } | ||||
|   bool hasMoreRecs() const { return mCtx.leftFile > 0; } | ||||
|   bool hasMoreSubs() const { return mCtx.leftRec > 0; } | ||||
| 
 | ||||
| 
 | ||||
|   /*************************************************************************
 | ||||
|  |  | |||
|  | @ -11,7 +11,7 @@ namespace Files | |||
|     bool containsVectorString(const StringVector& list, const std::string& str) | ||||
|     { | ||||
|         for (StringVector::const_iterator iter = list.begin(); | ||||
|              iter != list.end(); iter++) | ||||
|              iter != list.end(); ++iter) | ||||
|         { | ||||
|             if (*iter == str) | ||||
|                 return true; | ||||
|  | @ -112,7 +112,7 @@ namespace Files | |||
|     void FileLibrary::printSections() | ||||
|     { | ||||
|         for(StringPathContMap::const_iterator mapIter = mMap.begin(); | ||||
|              mapIter != mMap.end(); mapIter++) | ||||
|              mapIter != mMap.end(); ++mapIter) | ||||
|         { | ||||
|             std::cout << mapIter->first <<std::endl; | ||||
|         } | ||||
|  |  | |||
|  | @ -684,11 +684,11 @@ void NIFLoader::handleNiTriShape(NiTriShape *shape, int flags, BoundsFinder &bou | |||
|             Property *pr = &list[i]; | ||||
| 
 | ||||
|             if (pr->recType == RC_NiTexturingProperty) | ||||
|                 t = (NiTexturingProperty*)pr; | ||||
|                 t = static_cast<NiTexturingProperty*>(pr); | ||||
|             else if (pr->recType == RC_NiMaterialProperty) | ||||
|                 m = (NiMaterialProperty*)pr; | ||||
|                 m = static_cast<NiMaterialProperty*>(pr); | ||||
|             else if (pr->recType == RC_NiAlphaProperty) | ||||
|                 a = (NiAlphaProperty*)pr; | ||||
|                 a = static_cast<NiAlphaProperty*>(pr); | ||||
|         } | ||||
| 
 | ||||
|         // Texture
 | ||||
|  |  | |||
|  | @ -121,8 +121,7 @@ OISDriver::OISDriver(Ogre::RenderWindow *window, bool exclusive) | |||
| OISDriver::~OISDriver() | ||||
| { | ||||
|   // Delete the listener object
 | ||||
|   if(listener) | ||||
|     delete listener; | ||||
|   delete listener; | ||||
| 
 | ||||
|   if(inputMgr == NULL) return; | ||||
| 
 | ||||
|  |  | |||
|  | @ -11,6 +11,8 @@ namespace Physic | |||
| { | ||||
| 
 | ||||
|     CMotionState::CMotionState(PhysicEngine* eng,std::string name) | ||||
|         : isPC(false) | ||||
|         , isNPC(true) | ||||
|     { | ||||
|         pEng = eng; | ||||
|         tr.setIdentity(); | ||||
|  |  | |||
|  | @ -300,7 +300,13 @@ namespace Physic | |||
|         body->collide = true; | ||||
|         body->getWorldTransform().setOrigin(btVector3( (x+0.5)*triSize*(sqrtVerts-1), (y+0.5)*triSize*(sqrtVerts-1), (maxh+minh)/2.f)); | ||||
| 
 | ||||
|         addRigidBody(body); | ||||
|         HeightField hf; | ||||
|         hf.mBody = body; | ||||
|         hf.mShape = hfShape; | ||||
| 
 | ||||
|         mHeightFieldMap [name] = hf; | ||||
| 
 | ||||
|         dynamicsWorld->addRigidBody(body,COL_WORLD,COL_WORLD|COL_ACTOR_INTERNAL|COL_ACTOR_EXTERNAL); | ||||
|     } | ||||
| 
 | ||||
|     void PhysicEngine::removeHeightField(int x, int y) | ||||
|  | @ -309,8 +315,11 @@ namespace Physic | |||
|             + boost::lexical_cast<std::string>(x) + "_" | ||||
|             + boost::lexical_cast<std::string>(y); | ||||
| 
 | ||||
|         removeRigidBody(name); | ||||
|         deleteRigidBody(name); | ||||
|         HeightField hf = mHeightFieldMap [name]; | ||||
| 
 | ||||
|         dynamicsWorld->removeRigidBody(hf.mBody); | ||||
|         delete hf.mShape; | ||||
|         delete hf.mBody; | ||||
|     } | ||||
| 
 | ||||
|     RigidBody* PhysicEngine::createRigidBody(std::string mesh,std::string name,float scale) | ||||
|  |  | |||
|  | @ -15,6 +15,7 @@ class btSequentialImpulseConstraintSolver; | |||
| class btCollisionDispatcher; | ||||
| class btDiscreteDynamicsWorld; | ||||
| class btKinematicCharacterController; | ||||
| class btHeightfieldTerrainShape; | ||||
| 
 | ||||
| namespace BtOgre | ||||
| { | ||||
|  | @ -115,6 +116,12 @@ namespace Physic | |||
|         bool collide; | ||||
|     }; | ||||
| 
 | ||||
|     struct HeightField | ||||
|     { | ||||
|         btHeightfieldTerrainShape* mShape; | ||||
|         RigidBody* mBody; | ||||
|     }; | ||||
| 
 | ||||
|     /**
 | ||||
|      * The PhysicEngine class contain everything which is needed for Physic. | ||||
|      * It's needed that Ogre Resources are set up before the PhysicEngine is created. | ||||
|  | @ -240,6 +247,9 @@ namespace Physic | |||
|         //the NIF file loader.
 | ||||
|         BulletShapeLoader* mShapeLoader; | ||||
| 
 | ||||
|         typedef std::map<std::string, HeightField> HeightFieldContainer; | ||||
|         HeightFieldContainer mHeightFieldMap; | ||||
| 
 | ||||
|         typedef std::map<std::string,RigidBody*> RigidBodyContainer; | ||||
|         RigidBodyContainer RigidBodyMap; | ||||
| 
 | ||||
|  |  | |||
|  | @ -36,7 +36,7 @@ void MyGUIManager::setup(Ogre::RenderWindow *wnd, Ogre::SceneManager *mgr, bool | |||
| 
 | ||||
| void MyGUIManager::shutdown() | ||||
| { | ||||
|   if(mGui) delete mGui; | ||||
|   delete mGui; | ||||
|   if(mPlatform) | ||||
|     { | ||||
|       mPlatform->shutdown(); | ||||
|  |  | |||
|  | @ -17,11 +17,10 @@ using namespace OEngine::Render; | |||
| 
 | ||||
| void OgreRenderer::cleanup() | ||||
| { | ||||
|     if (mFader) | ||||
|         delete mFader; | ||||
|     delete mFader; | ||||
|     mFader = NULL; | ||||
| 
 | ||||
|     if(mRoot) | ||||
|         delete mRoot; | ||||
|     OGRE_DELETE mRoot; | ||||
|     mRoot = NULL; | ||||
| } | ||||
| 
 | ||||
|  | @ -30,7 +29,7 @@ void OgreRenderer::start() | |||
|     mRoot->startRendering(); | ||||
| } | ||||
| 
 | ||||
| bool OgreRenderer::loadPlugins() | ||||
| bool OgreRenderer::loadPlugins() const | ||||
| { | ||||
|     #ifdef ENABLE_PLUGIN_GL | ||||
|     mGLPlugin = new Ogre::GLPlugin(); | ||||
|  | @ -125,7 +124,7 @@ void OgreRenderer::createWindow(const std::string &title, const WindowSettings& | |||
|                     Ogre::TU_DYNAMIC_WRITE_ONLY_DISCARDABLE); | ||||
| } | ||||
| 
 | ||||
| void OgreRenderer::createScene(const std::string camName, float fov, float nearClip) | ||||
| void OgreRenderer::createScene(const std::string& camName, float fov, float nearClip) | ||||
| { | ||||
|     assert(mRoot); | ||||
|     assert(mWindow); | ||||
|  | @ -157,6 +156,11 @@ void OgreRenderer::setWindowEventListener(Ogre::WindowEventListener* listener) | |||
| 	Ogre::WindowEventUtilities::addWindowEventListener(mWindow, listener); | ||||
| } | ||||
| 
 | ||||
| void OgreRenderer::removeWindowEventListener(Ogre::WindowEventListener* listener) | ||||
| { | ||||
| 	Ogre::WindowEventUtilities::removeWindowEventListener(mWindow, listener); | ||||
| } | ||||
| 
 | ||||
| void OgreRenderer::setFov(float fov) | ||||
| { | ||||
|     mCamera->setFOVy(Degree(fov)); | ||||
|  |  | |||
|  | @ -106,6 +106,7 @@ namespace OEngine | |||
|             ~OgreRenderer() { cleanup(); } | ||||
| 
 | ||||
|             void setWindowEventListener(Ogre::WindowEventListener* listener); | ||||
|             void removeWindowEventListener(Ogre::WindowEventListener* listener); | ||||
| 
 | ||||
|             /** Configure the renderer. This will load configuration files and
 | ||||
|             set up the Root and logging classes. */ | ||||
|  | @ -119,7 +120,7 @@ namespace OEngine | |||
|             void createWindow(const std::string &title, const WindowSettings& settings); | ||||
| 
 | ||||
|             /// Set up the scene manager, camera and viewport
 | ||||
|             void createScene(const std::string camName="Camera",// Camera name
 | ||||
|             void createScene(const std::string& camName="Camera",// Camera name
 | ||||
|                 float fov=55,                      // Field of view angle
 | ||||
|                 float nearClip=5                   // Near clip distance
 | ||||
|             ); | ||||
|  | @ -132,7 +133,7 @@ namespace OEngine | |||
|             /// Start the main rendering loop
 | ||||
|             void start(); | ||||
| 
 | ||||
|             bool loadPlugins(); | ||||
|             bool loadPlugins() const; | ||||
| 
 | ||||
|             void update(float dt); | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue