fixed a small potentially non-determinimistic tree problem
This commit is contained in:
@@ -624,6 +624,10 @@ func main() {
|
|||||||
// Main generation button and logic
|
// Main generation button and logic
|
||||||
generateBtn = widget.NewButton("Generate", func() {
|
generateBtn = widget.NewButton("Generate", func() {
|
||||||
go func() {
|
go func() {
|
||||||
|
var timedOutSteps []string
|
||||||
|
addTimeout := func(step string) {
|
||||||
|
timedOutSteps = append(timedOutSteps, step)
|
||||||
|
}
|
||||||
// Disable button and show progress bar during generation
|
// Disable button and show progress bar during generation
|
||||||
fyne.Do(func() {
|
fyne.Do(func() {
|
||||||
generateBtn.Disable()
|
generateBtn.Disable()
|
||||||
@@ -670,6 +674,7 @@ func main() {
|
|||||||
lakes = out.lks
|
lakes = out.lks
|
||||||
} else {
|
} else {
|
||||||
log.Println("GenerateLakes timed out after 1 minute; continuing.")
|
log.Println("GenerateLakes timed out after 1 minute; continuing.")
|
||||||
|
addTimeout("Lakes")
|
||||||
lakes = nil
|
lakes = nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -695,6 +700,7 @@ func main() {
|
|||||||
finalImage = cloneToRGBA(out.img, settings.Width, settings.Height)
|
finalImage = cloneToRGBA(out.img, settings.Width, settings.Height)
|
||||||
} else {
|
} else {
|
||||||
log.Println("GenerateRivers timed out after 1 minute; continuing.")
|
log.Println("GenerateRivers timed out after 1 minute; continuing.")
|
||||||
|
addTimeout("Rivers")
|
||||||
riverMask = NewPixelMask(settings.Width, settings.Height)
|
riverMask = NewPixelMask(settings.Width, settings.Height)
|
||||||
}
|
}
|
||||||
waterMask = BuildMaskFromLakes(settings.Width, settings.Height, lakes)
|
waterMask = BuildMaskFromLakes(settings.Width, settings.Height, lakes)
|
||||||
@@ -728,6 +734,7 @@ func main() {
|
|||||||
finalImage = roadBase
|
finalImage = roadBase
|
||||||
} else {
|
} else {
|
||||||
log.Println("GenerateRoads timed out after 1 minute; continuing.")
|
log.Println("GenerateRoads timed out after 1 minute; continuing.")
|
||||||
|
addTimeout("Roads")
|
||||||
roadMask = NewPixelMask(settings.Width, settings.Height)
|
roadMask = NewPixelMask(settings.Width, settings.Height)
|
||||||
bridgeMask = NewPixelMask(settings.Width, settings.Height)
|
bridgeMask = NewPixelMask(settings.Width, settings.Height)
|
||||||
exitRoadMask = NewPixelMask(settings.Width, settings.Height)
|
exitRoadMask = NewPixelMask(settings.Width, settings.Height)
|
||||||
@@ -755,6 +762,7 @@ func main() {
|
|||||||
finalImage = buildingBase
|
finalImage = buildingBase
|
||||||
} else {
|
} else {
|
||||||
log.Println("GenerateBuildings timed out after 1 minute; continuing.")
|
log.Println("GenerateBuildings timed out after 1 minute; continuing.")
|
||||||
|
addTimeout("Buildings")
|
||||||
buildings = nil
|
buildings = nil
|
||||||
buildingMask = NewPixelMask(settings.Width, settings.Height)
|
buildingMask = NewPixelMask(settings.Width, settings.Height)
|
||||||
}
|
}
|
||||||
@@ -803,6 +811,7 @@ func main() {
|
|||||||
finalImage = treeBase
|
finalImage = treeBase
|
||||||
} else {
|
} else {
|
||||||
log.Println("GenerateTrees timed out after 1 minute; continuing.")
|
log.Println("GenerateTrees timed out after 1 minute; continuing.")
|
||||||
|
addTimeout("Trees")
|
||||||
treeMask = NewPixelMask(settings.Width, settings.Height)
|
treeMask = NewPixelMask(settings.Width, settings.Height)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -823,6 +832,12 @@ func main() {
|
|||||||
bumpmapImg.Refresh()
|
bumpmapImg.Refresh()
|
||||||
canvasImg.Image = finalImage
|
canvasImg.Image = finalImage
|
||||||
canvasImg.Refresh()
|
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
@@ -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 {
|
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)
|
localTreePixels = append(localTreePixels, pt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -280,6 +279,14 @@ func GenerateTrees(img *image.RGBA, waterMask, roadMask, buildingMask *PixelMask
|
|||||||
treeMask.SetPoint(p)
|
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
|
return treeMask
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user