fixed a small potentially non-determinimistic tree problem

This commit is contained in:
Grimsace
2026-02-26 14:22:23 -06:00
parent 4925aab8bf
commit 505d9ebbdd
2 changed files with 23 additions and 1 deletions
+15
View File
@@ -624,6 +624,10 @@ func main() {
// Main generation button and logic
generateBtn = widget.NewButton("Generate", func() {
go func() {
var timedOutSteps []string
addTimeout := func(step string) {
timedOutSteps = append(timedOutSteps, step)
}
// Disable button and show progress bar during generation
fyne.Do(func() {
generateBtn.Disable()
@@ -670,6 +674,7 @@ func main() {
lakes = out.lks
} else {
log.Println("GenerateLakes timed out after 1 minute; continuing.")
addTimeout("Lakes")
lakes = nil
}
@@ -695,6 +700,7 @@ func main() {
finalImage = cloneToRGBA(out.img, settings.Width, settings.Height)
} else {
log.Println("GenerateRivers timed out after 1 minute; continuing.")
addTimeout("Rivers")
riverMask = NewPixelMask(settings.Width, settings.Height)
}
waterMask = BuildMaskFromLakes(settings.Width, settings.Height, lakes)
@@ -728,6 +734,7 @@ func main() {
finalImage = roadBase
} else {
log.Println("GenerateRoads timed out after 1 minute; continuing.")
addTimeout("Roads")
roadMask = NewPixelMask(settings.Width, settings.Height)
bridgeMask = NewPixelMask(settings.Width, settings.Height)
exitRoadMask = NewPixelMask(settings.Width, settings.Height)
@@ -755,6 +762,7 @@ func main() {
finalImage = buildingBase
} else {
log.Println("GenerateBuildings timed out after 1 minute; continuing.")
addTimeout("Buildings")
buildings = nil
buildingMask = NewPixelMask(settings.Width, settings.Height)
}
@@ -803,6 +811,7 @@ func main() {
finalImage = treeBase
} else {
log.Println("GenerateTrees timed out after 1 minute; continuing.")
addTimeout("Trees")
treeMask = NewPixelMask(settings.Width, settings.Height)
}
@@ -823,6 +832,12 @@ func main() {
bumpmapImg.Refresh()
canvasImg.Image = finalImage
canvasImg.Refresh()
if len(timedOutSteps) > 0 {
errorLabel.SetText("Generation timed out after 1 minute for: " + strings.Join(timedOutSteps, ", ") + ". Partial results were used.")
errorLabel.Show()
} else {
errorLabel.Hide()
}
})
}()
})
+8 -1
View File
@@ -261,7 +261,6 @@ func GenerateTrees(img *image.RGBA, waterMask, roadMask, buildingMask *PixelMask
}
if (math.Pow(float64(x-p.X), 2) + math.Pow(float64(y-p.Y), 2)) <= r*r {
img.Set(x, y, color.RGBA{R: 0, G: 100, B: 0, A: 255})
localTreePixels = append(localTreePixels, pt)
}
}
@@ -280,6 +279,14 @@ func GenerateTrees(img *image.RGBA, waterMask, roadMask, buildingMask *PixelMask
treeMask.SetPoint(p)
}
}
for y := 0; y < treeMask.Height; y++ {
row := y * treeMask.Width
for x := 0; x < treeMask.Width; x++ {
if treeMask.Data[row+x] != 0 {
img.Set(x, y, color.RGBA{R: 0, G: 100, B: 0, A: 255})
}
}
}
return treeMask
}