From 5d3fcce72596dddbaac3229b400bfc9023489e1c Mon Sep 17 00:00:00 2001 From: fonsinchen Date: Thu, 6 Mar 2014 21:19:41 +0000 Subject: (svn r26393) -Fix: Update distances between link graph nodes when station sign is moved --- src/linkgraph/linkgraph.cpp | 15 +++++++++++++++ src/linkgraph/linkgraph.h | 1 + 2 files changed, 16 insertions(+) (limited to 'src/linkgraph') diff --git a/src/linkgraph/linkgraph.cpp b/src/linkgraph/linkgraph.cpp index 6bd29c92d..e8c792c37 100644 --- a/src/linkgraph/linkgraph.cpp +++ b/src/linkgraph/linkgraph.cpp @@ -144,6 +144,21 @@ void LinkGraph::RemoveNode(NodeID id) * been copied around in the loop above. */ } +/** + * Update distances between the given node and all others. + * @param id Node that changed position. + * @param xy New position of the node. + */ +void LinkGraph::UpdateDistances(NodeID id, TileIndex xy) +{ + assert(id < this->Size()); + for (NodeID other = 0; other < this->Size(); ++other) { + if (other == id) continue; + this->edges[id][other].distance = this->edges[other][id].distance = + DistanceManhattan(xy, Station::Get(this->nodes[other].station)->xy); + } +} + /** * Add a node to the component and create empty edges associated with it. Set * the station's last_component to this component. Calculate the distances to all diff --git a/src/linkgraph/linkgraph.h b/src/linkgraph/linkgraph.h index 4bcc27b31..4306ad2b3 100644 --- a/src/linkgraph/linkgraph.h +++ b/src/linkgraph/linkgraph.h @@ -529,6 +529,7 @@ public: NodeID AddNode(const Station *st); void RemoveNode(NodeID id); + void UpdateDistances(NodeID id, TileIndex xy); protected: friend class LinkGraph::ConstNode; -- cgit v1.2.3-70-g09d2