/** * BE AWARE that changing (not only insert) the NodeList requires a full information update * @param $position * @param RideNode $rideNode */ public function switchRideNodeAtPosition($position, RideNode $rideNode) { $switchNode = $this->rideNodes[$position]; $prev = $switchNode->previousNode; $next = $switchNode->nextNode; if ($prev) { $rideNode->setPreviousNode($prev); $prev->setNextNode($rideNode); } else { $rideNode->removePreviousNode(); } if ($next) { $rideNode->setNextNode($next); $next->setPreviousNode($rideNode); } else { $rideNode->removeNextNode(); } if ($this->lastNode === $switchNode) { $this->setLastNode($rideNode); } if ($this->firstNode === $switchNode) { $this->setFirstNode($rideNode); } $this->rideNodes[$position] = $rideNode; }