From 41b75d545e3fbcfa761cc70b6ce02e3b8ffbc253 Mon Sep 17 00:00:00 2001 From: KUDr Date: Fri, 29 Jun 2007 23:50:42 +0000 Subject: [PATCH] (svn r10393) -Fix [YAPF]: Trackdir needs 4 bits to store (not 3). The cached segment key didn't use the highest trackdir bit. It could confuse YAPF on bi-directional track segments. --- src/yapf/yapf_node_rail.hpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/yapf/yapf_node_rail.hpp b/src/yapf/yapf_node_rail.hpp index 59aa696f74..3d112888d9 100644 --- a/src/yapf/yapf_node_rail.hpp +++ b/src/yapf/yapf_node_rail.hpp @@ -14,10 +14,11 @@ struct CYapfRailSegmentKey FORCEINLINE CYapfRailSegmentKey(const CYapfNodeKeyTrackDir& node_key) {Set(node_key);} FORCEINLINE void Set(const CYapfRailSegmentKey& src) {m_value = src.m_value;} - FORCEINLINE void Set(const CYapfNodeKeyTrackDir& node_key) {m_value = (((int)node_key.m_tile) << 3) | node_key.m_td;} + FORCEINLINE void Set(const CYapfNodeKeyTrackDir& node_key) {m_value = (((int)node_key.m_tile) << 4) | node_key.m_td;} FORCEINLINE int32 CalcHash() const {return m_value;} - FORCEINLINE TileIndex GetTile() const {return (TileIndex)(m_value >> 3);} + FORCEINLINE TileIndex GetTile() const {return (TileIndex)(m_value >> 4);} + FORCEINLINE Trackdir GetTrackdir() const {return (Trackdir)(m_value & 0x0F);} FORCEINLINE bool operator == (const CYapfRailSegmentKey& other) const {return m_value == other.m_value;} void Dump(DumpTarget &dmp) const