@@ -37,7 +37,10 @@ mod visualizer {
37
37
use renet:: { DefaultChannel , RenetServer } ;
38
38
use rsmc:: { Chunk , ChunkManager , NetworkingMessage , CHUNK_SIZE } ;
39
39
40
- use super :: { terrain_events, terrain_resources:: { self , NoiseFunctionParams , NoiseTexture , TextureType } } ;
40
+ use super :: {
41
+ terrain_events,
42
+ terrain_resources:: { self , NoiseFunctionParams , TextureType } ,
43
+ } ;
41
44
42
45
fn map_range ( value : f64 , min : f64 , max : f64 , new_min : f64 , new_max : f64 ) -> f64 {
43
46
( ( value - min) / ( max - min) ) * ( new_max - new_min) + new_min
@@ -46,7 +49,6 @@ mod visualizer {
46
49
fn generate_terrain_heightmap (
47
50
generator : & terrain_resources:: Generator ,
48
51
texture_type : & TextureType ,
49
- origin : Vec3 ,
50
52
size : Vec3 ,
51
53
draw_chunk_border : bool ,
52
54
) -> ImageData {
@@ -59,31 +61,30 @@ mod visualizer {
59
61
for z in 0 ..height {
60
62
let index = x + z * width;
61
63
62
- if draw_chunk_border {
63
- if x % CHUNK_SIZE == 0 || z % CHUNK_SIZE == 0 {
64
- data[ index] = 255 ;
65
- continue ;
66
- }
64
+ if draw_chunk_border && ( x % CHUNK_SIZE == 0 || z % CHUNK_SIZE == 0 ) {
65
+ data[ index] = 255 ;
66
+ continue ;
67
67
}
68
68
69
69
match texture_type {
70
70
TextureType :: Height => {
71
- let sample_position = Vec2 :: new ( ( origin . x + x as f32 ) / 1.0 , ( origin . z + z as f32 ) / 1.0 ) ;
71
+ let sample_position = Vec2 :: new ( x as f32 , z as f32 ) ;
72
72
let value = generator. normalized_spline_terrain_sample ( sample_position) ;
73
- let value = ( value * size. y as f64 ) / 2.0 + 0.5 ;
73
+ let value = ( value * size. y as f64 ) / 2.0 + 0.5 ;
74
74
75
- data[ index] = value as u8 ;
75
+ data[ index] = value as u8 ;
76
76
}
77
77
TextureType :: HeightAdjust => {
78
- let sample_position = Vec2 :: new ( ( origin. x + x as f32 ) / 1.0 , ( origin. z + z as f32 ) / 1.0 ) ;
79
- let value = generator. sample_2d ( sample_position, & generator. params . height_adjust_params ) ;
78
+ let sample_position = Vec2 :: new ( x as f32 , z as f32 ) ;
79
+ let value = generator
80
+ . sample_2d ( sample_position, & generator. params . height_adjust_params ) ;
80
81
let value = map_range ( value, -1.0 , 1.0 , 0.0 , 255.0 ) ;
81
82
82
- data[ index] = value as u8 ;
83
+ data[ index] = value as u8 ;
83
84
}
84
85
TextureType :: Density => {
85
86
// TODO: change to sample3D
86
- let pos = Vec2 :: new ( origin . x + x as f32 , origin . z + z as f32 ) ;
87
+ let pos = Vec2 :: new ( x as f32 , z as f32 ) ;
87
88
let value = generator. sample_2d ( pos, & generator. params . density_params ) ;
88
89
let value = map_range ( value, -1.0 , 1.0 , 0.0 , 255.0 ) ;
89
90
@@ -124,7 +125,7 @@ mod visualizer {
124
125
generator. generate_chunk ( & mut chunk) ;
125
126
chunk
126
127
} )
127
- . collect ( ) ;
128
+ . collect ( ) ;
128
129
129
130
new_chunks. into_iter ( ) . for_each ( |chunk| {
130
131
chunk_manager. insert_chunk ( chunk) ;
@@ -161,17 +162,19 @@ mod visualizer {
161
162
let image_data = generate_terrain_heightmap (
162
163
& generator,
163
164
& texture_type,
164
- Vec3 :: ZERO ,
165
165
Vec3 :: new ( width as f32 , height as f32 , depth as f32 ) ,
166
- true
166
+ true ,
167
167
) ;
168
168
169
- let entry = noise_texture_list. noise_textures . get_mut ( & texture_type) . expect ( "Noise texture not loaded, please initialize the resource properly." ) ;
169
+ let entry = noise_texture_list
170
+ . noise_textures
171
+ . get_mut ( & texture_type)
172
+ . expect ( "Noise texture not loaded, please initialize the resource properly." ) ;
170
173
171
174
entry. texture = Some ( contexts. ctx_mut ( ) . load_texture (
172
- "terrain-texture" ,
173
- image_data,
174
- TextureOptions :: default ( ) ,
175
+ "terrain-texture" ,
176
+ image_data,
177
+ TextureOptions :: default ( ) ,
175
178
) ) ;
176
179
entry. size = Vec2 :: new ( width as f32 , height as f32 ) ;
177
180
}
@@ -180,28 +183,57 @@ mod visualizer {
180
183
pub fn prepare_visualizer_texture_system (
181
184
mut event_writer : EventWriter < terrain_events:: RegenerateHeightMapEvent > ,
182
185
) {
183
- event_writer. send ( terrain_events:: RegenerateHeightMapEvent ( TextureType :: Height ) ) ;
184
- event_writer. send ( terrain_events:: RegenerateHeightMapEvent ( TextureType :: HeightAdjust ) ) ;
185
- event_writer. send ( terrain_events:: RegenerateHeightMapEvent ( TextureType :: Density ) ) ;
186
+ event_writer. send ( terrain_events:: RegenerateHeightMapEvent (
187
+ TextureType :: Height ,
188
+ ) ) ;
189
+ event_writer. send ( terrain_events:: RegenerateHeightMapEvent (
190
+ TextureType :: HeightAdjust ,
191
+ ) ) ;
192
+ event_writer. send ( terrain_events:: RegenerateHeightMapEvent (
193
+ TextureType :: Density ,
194
+ ) ) ;
186
195
}
187
196
188
197
macro_rules! add_slider {
189
198
( $ui: expr, $changed: expr, $value: expr, $range: expr, $text: expr) => { {
190
- $changed = $changed || $ui
191
- . add( egui:: widgets:: Slider :: new( $value, $range) . text( $text) )
192
- . changed( ) ;
193
- } } ;
199
+ $changed = $changed
200
+ || $ui
201
+ . add( egui:: widgets:: Slider :: new( $value, $range) . text( $text) )
202
+ . changed( ) ;
203
+ } } ;
194
204
}
195
205
196
- fn add_sliders_for_noise_params ( ui : & mut egui:: Ui , changed : & mut bool , params : & mut NoiseFunctionParams ) {
206
+ fn add_sliders_for_noise_params (
207
+ ui : & mut egui:: Ui ,
208
+ changed : & mut bool ,
209
+ params : & mut NoiseFunctionParams ,
210
+ ) {
197
211
params. frequency = 1.0 / params. frequency ;
198
212
199
213
let mut loc_changed = false ;
200
214
201
215
add_slider ! ( ui, loc_changed, & mut params. octaves, 1 ..=8 , "octaves" ) ;
202
- add_slider ! ( ui, loc_changed, & mut params. lacuranity, 0.001 ..=4.0 , "lacuranity" ) ;
203
- add_slider ! ( ui, loc_changed, & mut params. frequency, 10.0 ..=800.0 , "frequency" ) ;
204
- add_slider ! ( ui, loc_changed, & mut params. persistence, 0.001 ..=1.0 , "persistence" ) ;
216
+ add_slider ! (
217
+ ui,
218
+ loc_changed,
219
+ & mut params. lacuranity,
220
+ 0.001 ..=4.0 ,
221
+ "lacuranity"
222
+ ) ;
223
+ add_slider ! (
224
+ ui,
225
+ loc_changed,
226
+ & mut params. frequency,
227
+ 10.0 ..=800.0 ,
228
+ "frequency"
229
+ ) ;
230
+ add_slider ! (
231
+ ui,
232
+ loc_changed,
233
+ & mut params. persistence,
234
+ 0.001 ..=1.0 ,
235
+ "persistence"
236
+ ) ;
205
237
206
238
params. frequency = 1.0 / params. frequency ;
207
239
0 commit comments