mirror of https://github.com/tidwall/tile38.git
Stable sort roam notifications
This commit is contained in:
parent
a99df2892a
commit
5162ac5fd7
|
@ -405,7 +405,6 @@ func fenceMatchRoam(
|
||||||
) (nearbys, faraways []roamMatch) {
|
) (nearbys, faraways []roamMatch) {
|
||||||
oldNearbys := fenceMatchNearbys(s, fence, id, old)
|
oldNearbys := fenceMatchNearbys(s, fence, id, old)
|
||||||
newNearbys := fenceMatchNearbys(s, fence, id, obj)
|
newNearbys := fenceMatchNearbys(s, fence, id, obj)
|
||||||
|
|
||||||
// Go through all matching objects in new-nearbys and old-nearbys.
|
// Go through all matching objects in new-nearbys and old-nearbys.
|
||||||
for i := 0; i < len(oldNearbys); i++ {
|
for i := 0; i < len(oldNearbys); i++ {
|
||||||
var match bool
|
var match bool
|
||||||
|
@ -429,14 +428,24 @@ func fenceMatchRoam(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
faraways, nearbys = oldNearbys, newNearbys
|
faraways, nearbys = oldNearbys, newNearbys
|
||||||
|
// ensure the faraways distances are to the new object
|
||||||
for i := 0; i < len(faraways); i++ {
|
for i := 0; i < len(faraways); i++ {
|
||||||
faraways[i].meters = faraways[i].obj.Distance(obj)
|
faraways[i].meters = faraways[i].obj.Distance(obj)
|
||||||
}
|
}
|
||||||
sort.Slice(faraways, func(i, j int) bool {
|
sortRoamMatches(faraways)
|
||||||
return faraways[i].meters < faraways[j].meters
|
sortRoamMatches(nearbys)
|
||||||
})
|
|
||||||
sort.Slice(nearbys, func(i, j int) bool {
|
|
||||||
return nearbys[i].meters < nearbys[j].meters
|
|
||||||
})
|
|
||||||
return nearbys, faraways
|
return nearbys, faraways
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// sortRoamMatches stable sorts roam matches
|
||||||
|
func sortRoamMatches(matches []roamMatch) {
|
||||||
|
sort.Slice(matches, func(i, j int) bool {
|
||||||
|
if matches[i].meters < matches[j].meters {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
if matches[i].meters > matches[j].meters {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return matches[i].id < matches[j].id
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue