Fix blocky game generator
parent
55fd0105db
commit
9069bfaaa6
|
@ -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 )
|
||||
|
|
|
@ -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))
|
||||
|
||||
|
||||
|
|
|
@ -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]
|
||||
|
||||
|
|
Loading…
Reference in New Issue