/**
* @see \MetaborStd\Statemachine\Factory\TransitionSelectorInterface::selectTransition()
*/
public function selectTransition(\Traversable $transitions)
{
$bestTransitions = array();
$bestScore = -1;
foreach ($transitions as $transition) {
$score = $this->calculcateScore($transition);
if ($score > $bestScore) {
$bestScore = $score;
$bestTransitions = array($transition);
} elseif ($score == $bestScore) {
$bestTransitions[] = $transition;
}
}
$disctinctSelector = new OneOrNoneActiveTransition();
return $disctinctSelector->selectTransition(new \ArrayIterator($bestTransitions));
}