1
- use crate :: prelude :: * ;
1
+ use terrain_resources :: { Generator , TerrainGeneratorParams } ;
2
2
3
- pub struct Generator {
4
- pub seed : u32 ,
5
- perlin : Perlin ,
6
- params : TerrainGeneratorParams ,
7
- }
3
+ use crate :: prelude:: * ;
8
4
9
5
impl Generator {
10
- pub fn new ( seed : u32 , params : TerrainGeneratorParams ) -> Generator {
6
+ pub fn new ( seed : u32 ) -> Generator {
7
+ Self :: new_with_params ( seed, TerrainGeneratorParams :: default ( ) )
8
+ }
9
+
10
+ pub fn new_with_params ( seed : u32 , params : TerrainGeneratorParams ) -> Generator {
11
11
Generator {
12
12
seed,
13
13
perlin : Perlin :: new ( seed) ,
@@ -41,14 +41,13 @@ impl Generator {
41
41
x : position. x ,
42
42
y : position. z ,
43
43
} ,
44
- default_params
44
+ default_params,
45
45
) ;
46
46
47
47
if ( position. y as f64 ) < terrain_height + 20.0 {
48
48
return BlockId :: Stone ;
49
49
}
50
50
51
-
52
51
// density -= position.y as f64 * 0.02;
53
52
//
54
53
// let base_block = BlockId::Stone;
@@ -67,7 +66,7 @@ impl Generator {
67
66
// BlockId::Air
68
67
// }
69
68
70
- BlockId :: Air
69
+ BlockId :: Air
71
70
}
72
71
73
72
fn sample_3d ( & self , position : Vec3 , octaves : i32 ) -> f64 {
@@ -102,32 +101,29 @@ impl Generator {
102
101
return sample;
103
102
}
104
103
105
- sample + self . sample_2d ( position, & NoiseFunctionParams {
106
- octaves : params. octaves - 1 ,
107
- height : params. height + sample,
108
- lacuranity : params. lacuranity ,
109
- frequency : params. frequency ,
110
- amplitude : params. amplitude * params. persistence ,
111
- persistence : params. persistence * 0.5 ,
112
- } )
104
+ sample
105
+ + self . sample_2d (
106
+ position,
107
+ & NoiseFunctionParams {
108
+ octaves : params. octaves - 1 ,
109
+ height : params. height + sample,
110
+ lacuranity : params. lacuranity ,
111
+ frequency : params. frequency ,
112
+ amplitude : params. amplitude * params. persistence ,
113
+ persistence : params. persistence * 0.5 ,
114
+ } ,
115
+ )
113
116
}
114
117
}
115
118
116
119
#[ cfg( test) ]
117
120
mod tests {
118
121
use super :: * ;
119
-
120
- #[ test]
121
- fn test_generator_new ( ) {
122
- let seed = 42 ;
123
- let generator = Generator :: new ( seed) ;
124
- assert_eq ! ( generator. seed, seed) ;
125
- }
122
+ use terrain_resources:: Generator ;
126
123
127
124
#[ test]
128
125
fn test_generate_chunk ( ) {
129
- let seed = 42 ;
130
- let generator = Generator :: new ( seed) ;
126
+ let generator = Generator :: default ( ) ;
131
127
let mut chunk = Chunk :: new ( Vec3 :: new ( 0.0 , 0.0 , 0.0 ) ) ;
132
128
133
129
generator. generate_chunk ( & mut chunk) ;
@@ -137,8 +133,7 @@ mod tests {
137
133
138
134
#[ test]
139
135
fn test_sample_3d ( ) {
140
- let seed = 42 ;
141
- let generator = Generator :: new ( seed) ;
136
+ let generator = Generator :: default ( ) ;
142
137
143
138
let position = Vec3 :: new ( 0.0 , 0.0 , 0.0 ) ;
144
139
let density = generator. sample_3d ( position, 4 ) ;
0 commit comments