From 680875b5afece00a5dce5562ffafeea757c9931d Mon Sep 17 00:00:00 2001 From: raven Date: Fri, 27 Mar 2026 18:31:55 -0500 Subject: split level gen functions into separate file --- server/gen.go | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 server/gen.go (limited to 'server/gen.go') diff --git a/server/gen.go b/server/gen.go new file mode 100644 index 0000000..68f9e5c --- /dev/null +++ b/server/gen.go @@ -0,0 +1,62 @@ +package server + +import "math" + +func generateFlat(v *blockVolume) { + v.syncSetAll(func(yield func(blockType) bool) { + var p blockPos + for p.Y = 0; p.Y < v.size.Y / 2; p.Y++ { + for p.X = 0; p.X < v.size.X; p.X++ { + for p.Z = 0; p.Z < v.size.Z; p.Z++ { + var block blockType + if p.Y == 0 { + block = 7 + } else if p.Y == v.size.Y/2 - 1 { + block = 2 + } else if p.Y > v.size.Y/2 - 15 { + block = 3 + } else if p.Y < v.size.Y/2 { + block = 1 + } + if !yield(block) { + return + } + } + } + } + }) +} + +func generateSphere(v *blockVolume) { + v.syncSetAll(func(yield func(blockType) bool) { + var (p blockPos; radius = float64(v.size.X) / 2) + for p.Y = 0; p.Y < v.size.Y; p.Y++ { + for p.X = 0; p.X < v.size.X; p.X++ { + for p.Z = 0; p.Z < v.size.Z; p.Z++ { + var block blockType + dist := math.Sqrt( + float64(v.size.X/2 - p.X)*float64(v.size.X/2 - p.X) + + float64(v.size.Y/2 - p.Y)*float64(v.size.Y/2 - p.Y) + + float64(v.size.Z/2 - p.Z)*float64(v.size.Z/2 - p.Z), + ) + if dist > radius - 2 && dist <= radius { + block = 25 + } + if !yield(block) { + return + } + } + } + } + }) +} + +func generateDebug(v *blockVolume) { + v.syncSetAll(func(yield func(blockType) bool) { + for i := 0; i < 256; i++ { + if !yield(blockType(i)) { + return + } + } + }) +} \ No newline at end of file -- cgit v1.2.3