Update to match module changes

master
Marc Gilleron 2017-01-02 05:47:51 +01:00
parent 5c4a798892
commit d577f0c35d
6 changed files with 60 additions and 23 deletions

View File

@ -91,5 +91,3 @@ func _input(event):
if event.pressed and event.scancode == KEY_ESCAPE:
# Get the mouse back
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)

View File

@ -40,7 +40,13 @@ class Grid extends _Base:
class Heightmap extends _Base:
var _noise2 = OsnNoise.new()
func _init():
_noise2.set_seed(_noise.get_seed() + 1)
func generate(voxels, offset):
offset *= 16
var ox = offset.x
var oy = offset.y
var oz = offset.z
@ -50,31 +56,48 @@ class Heightmap extends _Base:
var dirt = 1
if oy < 0:
dirt = 2
var air = 0
if oy < 0:
air = 4
var bs = voxels.get_size_x()
var noise1 = OsnFractalNoise.new()
noise1.set_source_noise(_noise)
noise1.set_period(128)
noise1.set_octaves(4)
noise1.set_period(150)
noise1.set_octaves(5)
var noise2 = OsnFractalNoise.new()
noise2.set_source_noise(_noise2)
noise2.set_period(256)
noise2.set_octaves(5)
for z in range(0, bs):
for x in range(0, bs):
var h = floor(16.0 * noise1.get_noise_2d(ox+x, oz+z) - oy)
#var n2 = noise2.get_noise_2d(ox+x, oz+z)
# n2 = (n2+0.5)*8 - 1
# if n2 > 0.0:
# n2 = 0.0
var n1 = noise1.get_noise_2d(ox+x, oz+z)
var h = floor(64.0 * n1 - oy)
if h >= 0:
if h < bs:
voxels.fill_area(dirt, Vector3(x,0,z), Vector3(x+1,h,z+1))
voxels.fill_area(0, Vector3(x,h,z), Vector3(x+1,bs,z+1))
voxels.fill_area(air, Vector3(x,h,z), Vector3(x+1,bs,z+1))
else:
voxels.fill_area(dirt, Vector3(x,0,z), Vector3(x+1,bs,z+1))
else:
voxels.fill_area(0, Vector3(x,0,z), Vector3(x+1,bs,z+1))
voxels.fill_area(air, Vector3(x,0,z), Vector3(x+1,bs,z+1))
class Volume extends _Base:
func generate(voxels, offset):
offset *= 16
var ox = offset.x
var oy = offset.y
var oz = offset.z
@ -95,7 +118,7 @@ class Volume extends _Base:
for y in range(0, bs):
var gy = y+oy
var h = noise1.get_noise_3d(x+ox+2, gy, z+oz)
if h < 1-gy*0.01 - 1:
if h < 1-gy*0.005 - 1:
voxels.set_voxel(dirt, x, y, z)
empty = false
else:

View File

@ -13,6 +13,8 @@ margin/top = 116.0
margin/right = 394.0
margin/bottom = 156.0
toggle_mode = false
enabled_focus_mode = 2
shortcut = null
text = "Start"
flat = false
script/script = ExtResource( 1 )

View File

@ -93,7 +93,7 @@ background/energy = 1.0
background/scale = 1.0
background/glow = 0.0
background/canvas_max_layer = null
glow/enabled = true
glow/enabled = false
glow/blur_passes = 1
glow/blur_scale = 1
glow/blur_strength = 1
@ -114,10 +114,10 @@ hdr/min_luminance = 0.4
hdr/max_luminance = 8.0
hdr/exposure_adj_speed = 0.5
fog/enabled = true
fog/begin = 0.01
fog/begin = 32.0
fog/begin_color = Color( 0, 0, 0, 1 )
fog/end_color = Color( 0.443137, 0.643137, 0.670588, 1 )
fog/attenuation = 0.707107
fog/attenuation = 2.14355
fog/bg = true
bcs/enabled = false
bcs/brightness = 1.0
@ -129,6 +129,7 @@ srgb/enabled = false
[node name="Camera" type="Camera" parent="."]
editor/display_folded = true
_import_transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0 )
transform/local = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 4, 0 )
projection = 0
@ -142,7 +143,6 @@ environment = null
h_offset = 0.0
v_offset = 0.0
script/script = ExtResource( 1 )
__meta__ = { "_editor_collapsed":true }
sensitivity = 0.4
min_angle = -90
max_angle = 90

17
project/provider.gd Normal file
View File

@ -0,0 +1,17 @@
extends VoxelProvider
const Generators = preload("generator.gd")
var _generator = null
func _init():
_generator = Generators.Volume.new()
func emerge_block(out_buffer, block_pos):
_generator.generate(out_buffer, block_pos)
#func immerge_block(buffer, bock_pos):
# pass

View File

@ -1,6 +1,8 @@
extends VoxelTerrain
const CustomProvider = preload("provider.gd")
export(Material) var solid_material = null
export(Material) var transparent_material = null
@ -9,9 +11,6 @@ var _generator = null
func _ready():
var gen = preload("generator.gd")
_generator = gen.Heightmap.new()
_library.set_atlas_size(4)
_library.create_voxel(0, "air").set_transparent()
_library.create_voxel(1, "grass_dirt").set_cube_geometry().set_cube_uv_tbs_sides(Vector2(0,0), Vector2(0,1), Vector2(1,0))
@ -23,14 +22,12 @@ func _ready():
mesher.set_library(_library)
mesher.set_material(solid_material, 0)
mesher.set_material(transparent_material, 1)
set_provider(CustomProvider.new())
force_load_blocks(Vector3(0,0,0), Vector3(8,3,8))
# TODO option to execute this method in a thread
func _generate_block(voxels, block_pos):
#print("Generating block " + str(block_pos))
var offset = block_to_voxel(block_pos)
_generator.generate(voxels, offset)
force_load_blocks(Vector3(0,0,0), Vector3(12,4,12))
# var Testouille = preload("debug_camera.gd")
# var t = Testouille.new()
# t.lolance()