From 9069bfaaa6699b1292dc62351dcc15379ba4de9a Mon Sep 17 00:00:00 2001 From: Marc Gilleron Date: Wed, 11 Nov 2020 20:29:25 +0000 Subject: [PATCH] Fix blocky game generator --- project/blocky_game/blocky_game.tscn | 3 +-- project/blocky_game/generator/generator.gd | 19 +++++++++---------- .../generator/world_generator.tres | 2 +- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/project/blocky_game/blocky_game.tscn b/project/blocky_game/blocky_game.tscn index 37928dd..f3cb6fc 100644 --- a/project/blocky_game/blocky_game.tscn +++ b/project/blocky_game/blocky_game.tscn @@ -3,7 +3,7 @@ [ext_resource path="res://blocky_game/blocks/voxel_library.tres" type="VoxelLibrary" id=1] [ext_resource path="res://blocky_game/blocks/terrain_material.tres" type="Material" id=2] [ext_resource path="res://blocky_game/blocks/terrain_material_transparent.tres" type="Material" id=3] -[ext_resource path="res://blocky_game/generator/world_generator.tres" type="VoxelGenerator" id=4] +[ext_resource path="res://blocky_game/generator/world_generator.tres" type="VoxelGeneratorScript" id=4] [ext_resource path="res://blocky_game/blocky_game.gd" type="Script" id=5] [ext_resource path="res://blocky_game/player/character_avatar.tscn" type="PackedScene" id=6] [ext_resource path="res://blocky_game/blocks/stairs/stairs_nx.obj" type="ArrayMesh" id=7] @@ -61,7 +61,6 @@ environment = SubResource( 2 ) [node name="VoxelTerrain" type="VoxelTerrain" parent="."] stream = SubResource( 3 ) voxel_library = ExtResource( 1 ) -viewer_path = NodePath("../CharacterAvatar") generate_collisions = false run_stream_in_editor = false material/0 = ExtResource( 2 ) diff --git a/project/blocky_game/generator/generator.gd b/project/blocky_game/generator/generator.gd index e0cf17a..a01adbb 100644 --- a/project/blocky_game/generator/generator.gd +++ b/project/blocky_game/generator/generator.gd @@ -1,5 +1,5 @@ #tool -extends VoxelGenerator +extends VoxelGeneratorScript const Structure = preload("./structure.gd") const TreeGenerator = preload("./tree_generator.gd") @@ -62,11 +62,11 @@ func _init(): _heightmap_noise.octaves = 4 -func get_used_channels_mask() -> int: +func _get_used_channels_mask() -> int: return 1 << _CHANNEL -func generate_block(buffer: VoxelBuffer, origin_in_voxels: Vector3, lod: int): +func _generate_block(buffer: VoxelBuffer, origin_in_voxels: Vector3, lod: int): # Assuming input is cubic in our use case (it doesn't have to be!) var block_size := int(buffer.get_size().x) var oy := int(origin_in_voxels.y) @@ -89,7 +89,7 @@ func generate_block(buffer: VoxelBuffer, origin_in_voxels: Vector3, lod: int): else: var rng := RandomNumberGenerator.new() - rng.seed = get_chunk_seed_2d(chunk_pos) + rng.seed = _get_chunk_seed_2d(chunk_pos) var gx : int var gz := int(origin_in_voxels.z) @@ -128,7 +128,6 @@ func generate_block(buffer: VoxelBuffer, origin_in_voxels: Vector3, lod: int): # Surface block buffer.set_voxel(WATER_TOP, x, block_size - 1, z, _CHANNEL) - gx += 1 gz += 1 @@ -139,14 +138,14 @@ func generate_block(buffer: VoxelBuffer, origin_in_voxels: Vector3, lod: int): var voxel_tool := buffer.get_voxel_tool() var structure_instances := [] - get_tree_instances_in_chunk(chunk_pos, origin_in_voxels, block_size, structure_instances) + _get_tree_instances_in_chunk(chunk_pos, origin_in_voxels, block_size, structure_instances) # Relative to current block var block_aabb := AABB(Vector3(), buffer.get_size() + Vector3(1, 1, 1)) for dir in _moore_dirs: var ncpos : Vector3 = (chunk_pos + dir).round() - get_tree_instances_in_chunk(ncpos, origin_in_voxels, block_size, structure_instances) + _get_tree_instances_in_chunk(ncpos, origin_in_voxels, block_size, structure_instances) for structure_instance in structure_instances: var pos : Vector3 = structure_instance[0] @@ -160,11 +159,11 @@ func generate_block(buffer: VoxelBuffer, origin_in_voxels: Vector3, lod: int): buffer.optimize() -func get_tree_instances_in_chunk( +func _get_tree_instances_in_chunk( cpos: Vector3, offset: Vector3, chunk_size: int, tree_instances: Array): var rng := RandomNumberGenerator.new() - rng.seed = get_chunk_seed_2d(cpos) + rng.seed = _get_chunk_seed_2d(cpos) for i in 4: var pos := Vector3(rng.randi() % chunk_size, 0, rng.randi() % chunk_size) @@ -182,7 +181,7 @@ func get_tree_instances_in_chunk( # return cpos.x ^ (13 * int(cpos.y)) ^ (31 * int(cpos.z)) -static func get_chunk_seed_2d(cpos: Vector3) -> int: +static func _get_chunk_seed_2d(cpos: Vector3) -> int: return int(cpos.x) ^ (31 * int(cpos.z)) diff --git a/project/blocky_game/generator/world_generator.tres b/project/blocky_game/generator/world_generator.tres index a2d4f14..d1d2838 100644 --- a/project/blocky_game/generator/world_generator.tres +++ b/project/blocky_game/generator/world_generator.tres @@ -1,4 +1,4 @@ -[gd_resource type="VoxelGenerator" load_steps=2 format=2] +[gd_resource type="VoxelGeneratorScript" load_steps=2 format=2] [ext_resource path="res://blocky_game/generator/generator.gd" type="Script" id=1]