| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | /** AIPreviousNodeRule.cpp, part of VCMI engine** Authors: listed in file AUTHORS in main folder** License: GNU General Public License v2.0 or later* Full text of license available in license.txt file, in main folder**/#include "StdInc.h"#include "AIPreviousNodeRule.h"#include "../../../../lib/pathfinder/CPathfinder.h"namespace NKAI{namespace AIPathfinding{	AIPreviousNodeRule::AIPreviousNodeRule(std::shared_ptr<AINodeStorage> nodeStorage)		: nodeStorage(nodeStorage)	{	}	void AIPreviousNodeRule::process(		const PathNodeInfo & source,		CDestinationNodeInfo & destination,		const PathfinderConfig * pathfinderConfig,		CPathfinderHelper * pathfinderHelper) const	{		if(source.node->action == EPathNodeAction::BLOCKING_VISIT 			|| source.node->action == EPathNodeAction::VISIT)		{			if(source.nodeObject				&& isObjectPassable(source.nodeObject, pathfinderHelper->hero->tempOwner, source.objectRelations))			{				return;			}			// we can not directly bypass objects, we need to interact with them first			destination.node->theNodeBefore = source.node;#if NKAI_PATHFINDER_TRACE_LEVEL >= 1			logAi->trace(				"Link src node %s to destination node %s while bypassing visitable obj",				source.coord.toString(),				destination.coord.toString());#endif			return;		}	}}}
 |