mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-25 07:56:37 +00:00 
			
		
		
		
	fix object moving
This commit is contained in:
		
							parent
							
								
									ee97a204f2
								
							
						
					
					
						commit
						d32a61b928
					
				
					 2 changed files with 27 additions and 22 deletions
				
			
		|  | @ -167,67 +167,71 @@ MWWorld::Ptr MWWorld::Cells::getPtr (const std::string& name, Ptr::CellStore& ce | |||
|         else | ||||
|             return Ptr(); | ||||
|     } | ||||
|     MWWorld::Ptr ptr; | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::Activator> *ref = cell.activators.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::Potion> *ref = cell.potions.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::Apparatus> *ref = cell.appas.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::Armor> *ref = cell.armors.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::Book> *ref = cell.books.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::Clothing> *ref = cell.clothes.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::Container> *ref = cell.containers.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::Creature> *ref = cell.creatures.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::Door> *ref = cell.doors.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::Ingredient> *ref = cell.ingreds.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::CreatureLevList> *ref = cell.creatureLists.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::ItemLevList> *ref = cell.itemLists.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::Light> *ref = cell.lights.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::Tool> *ref = cell.lockpicks.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::Miscellaneous> *ref = cell.miscItems.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::NPC> *ref = cell.npcs.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::Probe> *ref = cell.probes.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::Repair> *ref = cell.repairs.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::Static> *ref = cell.statics.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (MWWorld::LiveCellRef<ESM::Weapon> *ref = cell.weapons.find (name)) | ||||
|         return Ptr (ref, &cell); | ||||
|         ptr = Ptr (ref, &cell); | ||||
| 
 | ||||
|     if (!ptr.isEmpty() && ptr.getRefData().getCount() > 0) { | ||||
|         return ptr; | ||||
|     } | ||||
|     return Ptr(); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -545,7 +545,7 @@ namespace MWWorld | |||
| 
 | ||||
|     bool World::moveObjectImp (const Ptr& ptr, float x, float y, float z) | ||||
|     { | ||||
|         bool cellChanged = false, haveToMove = true; | ||||
|         bool cellChanged = false; | ||||
| 
 | ||||
|         ESM::Position &pos = ptr.getRefData().getPosition(); | ||||
|         pos.pos[0] = x, pos.pos[1] = y, pos.pos[2] = z; | ||||
|  | @ -558,6 +558,7 @@ namespace MWWorld | |||
|         } else { | ||||
|             currCell = ptr.getCell(); | ||||
|         } | ||||
|         bool haveToMove = mWorldScene->isCellActive(*currCell); | ||||
| 
 | ||||
|         if (currCell) { | ||||
|             if (!(currCell->cell->data.flags & ESM::Cell::Interior)) { | ||||
|  | @ -575,7 +576,7 @@ namespace MWWorld | |||
|                             MWBase::Environment::get().getWorld()->getExterior(cellX, cellY); | ||||
| 
 | ||||
|                         // placeObject() handles both target cell states
 | ||||
|                         // with active current cell
 | ||||
|                         // with inactive current cell
 | ||||
|                         if (!mWorldScene->isCellActive(*currCell)) { | ||||
|                             placeObject(ptr, *newCell, pos); | ||||
|                             haveToMove = false; | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue