mirror of
				https://github.com/OpenMW/openmw.git
				synced 2025-10-25 11:26:37 +00:00 
			
		
		
		
	Fix getDistance not detecting references in inactive cells properly
This commit is contained in:
		
							parent
							
								
									47bd170d7e
								
							
						
					
					
						commit
						2ce8323a42
					
				
					 2 changed files with 11 additions and 2 deletions
				
			
		|  | @ -378,12 +378,20 @@ namespace MWScript | ||||||
| 
 | 
 | ||||||
|     float InterpreterContext::getDistance (const std::string& name, const std::string& id) const |     float InterpreterContext::getDistance (const std::string& name, const std::string& id) const | ||||||
|     { |     { | ||||||
|         const MWWorld::Ptr ref2 = getReference (id, false, false); |         // NOTE: id may be empty, indicating an implicit reference
 | ||||||
|  | 
 | ||||||
|  |         MWWorld::Ptr ref2; | ||||||
|  | 
 | ||||||
|  |         if (id.empty()) | ||||||
|  |             ref2 = getReference("", true, true); | ||||||
|  |         else | ||||||
|  |             ref2 = MWBase::Environment::get().getWorld()->searchPtr(id, true); | ||||||
|  | 
 | ||||||
|         // If either actor is in a non-active cell, return a large value (just like vanilla)
 |         // If either actor is in a non-active cell, return a large value (just like vanilla)
 | ||||||
|         if (ref2.isEmpty()) |         if (ref2.isEmpty()) | ||||||
|             return std::numeric_limits<float>().max(); |             return std::numeric_limits<float>().max(); | ||||||
| 
 | 
 | ||||||
|         const MWWorld::Ptr ref = getReference (name, false, false); |         const MWWorld::Ptr ref = MWBase::Environment::get().getWorld()->searchPtr(name, true); | ||||||
|         if (ref.isEmpty()) |         if (ref.isEmpty()) | ||||||
|             return std::numeric_limits<float>().max(); |             return std::numeric_limits<float>().max(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -118,6 +118,7 @@ namespace MWScript | ||||||
|             virtual void stopScript (const std::string& name); |             virtual void stopScript (const std::string& name); | ||||||
| 
 | 
 | ||||||
|             virtual float getDistance (const std::string& name, const std::string& id = "") const; |             virtual float getDistance (const std::string& name, const std::string& id = "") const; | ||||||
|  |             ///< @note if \a id is empty, assumes an implicit reference
 | ||||||
| 
 | 
 | ||||||
|             bool hasBeenActivated (const MWWorld::Ptr& ptr); |             bool hasBeenActivated (const MWWorld::Ptr& ptr); | ||||||
|             ///< \attention Calling this function for the right reference will mark the action as
 |             ///< \attention Calling this function for the right reference will mark the action as
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue