Update the engine and Voxelman to grab the prop related changes.

This commit is contained in:
Relintai 2020-07-07 18:40:24 +02:00
parent 3baf2addec
commit 94a90d989c
6 changed files with 20 additions and 151 deletions

2
HEADS
View File

@ -1 +1 @@
{"engine": {"3.2": "d0fb6d69718e4a39d49feac41b28097a46f8b7ec", "master": "8c73e813134001e575b6f59e3b0100471c007410"}, "world_generator": {"master": "c10d7b7b8cb83e233cffd524f4931988208eb14a"}, "entity_spell_system": {"master": "64473375d7a17241a4400e734e192ff8f53ae65a"}, "ui_extensions": {"master": "6fe4f69fea8d71043b08d959b8085404c9c4fe47"}, "voxelman": {"master": "ff48f3738a71ae80f9fe4f4f2adecd2a2ca55a09"}, "texture_packer": {"master": "2993ed34f34cfa6a5e61b7913380231e9c55eda6"}, "fastnoise": {"master": "d0e3f1c759332cf0d9a5d7e0e71d0b0278310651"}, "mesh_data_resource": {"master": "85417ebee9198be3cd7cc643e0e0e934db64a620"}, "procedural_animations": {"master": "9226d21781ea05828570e592874aa319df0dc53d"}, "ess_data": {"master": "3bd637fdd3304b64a18287a49a6b7387acf2f5de"}, "props": {"master": "544654f49b13af2d25ac14152c8a5014474e6333"}, "mesh_utils": {"master": "4f69ec67b861ce4475cfd17946dfaa586c888d94"}, "broken_seals_module": {"master": "0e5c54a70f8e90f95cbf11419b959a5f67562d48"}, "thread_pool": {"master": "93320fe864128d706bcc47fc7ed0731e6e9bcf69"}}
{"engine": {"3.2": "07b24de868457c0a190c88771e99ff09e5451c3b", "master": "8c73e813134001e575b6f59e3b0100471c007410"}, "world_generator": {"master": "c10d7b7b8cb83e233cffd524f4931988208eb14a"}, "entity_spell_system": {"master": "64473375d7a17241a4400e734e192ff8f53ae65a"}, "ui_extensions": {"master": "6fe4f69fea8d71043b08d959b8085404c9c4fe47"}, "voxelman": {"master": "dee38b1588ef3224cf8022eaf227e1dcaead6277"}, "texture_packer": {"master": "2993ed34f34cfa6a5e61b7913380231e9c55eda6"}, "fastnoise": {"master": "d0e3f1c759332cf0d9a5d7e0e71d0b0278310651"}, "mesh_data_resource": {"master": "85417ebee9198be3cd7cc643e0e0e934db64a620"}, "procedural_animations": {"master": "9226d21781ea05828570e592874aa319df0dc53d"}, "ess_data": {"master": "3bd637fdd3304b64a18287a49a6b7387acf2f5de"}, "props": {"master": "544654f49b13af2d25ac14152c8a5014474e6333"}, "mesh_utils": {"master": "4f69ec67b861ce4475cfd17946dfaa586c888d94"}, "broken_seals_module": {"master": "0e5c54a70f8e90f95cbf11419b959a5f67562d48"}, "thread_pool": {"master": "93320fe864128d706bcc47fc7ed0731e6e9bcf69"}}

View File

@ -1,8 +1,9 @@
[gd_scene load_steps=8 format=2]
[gd_scene load_steps=9 format=2]
[ext_resource path="res://scripts/world_generators/MainPlanetGenerator.gd" type="Script" id=1]
[ext_resource path="res://modules/planets/test_planet/voxel_library/1_main_lib_merger_empty.tres" type="VoxelmanLibraryMerger" id=2]
[ext_resource path="res://scripts/settings/DirectionalLightSettings.gd" type="Script" id=3]
[ext_resource path="res://test_props/MeshDataInstance.tres" type="PropData" id=4]
[ext_resource path="res://voxelman/world/TVVoxelWorld.gd" type="Script" id=8]
[sub_resource type="VoxelmanLevelGenerator" id=1]
@ -67,6 +68,7 @@ voxel_scale = 3.0
build_flags = 511
lod_update_interval = 2.0
script = ExtResource( 8 )
test_prop = ExtResource( 4 )
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource( 3 )

View File

@ -23,11 +23,11 @@ light_color = Color( 0.643137, 0.376471, 0.376471, 1 )
light_size = 6
[sub_resource type="PropDataProp" id=4]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 5.55294, 0, 1.18272 )
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 5.55294, 0, 2.9085 )
prop = ExtResource( 5 )
[sub_resource type="PropDataScene" id=5]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.879526, 0, 1.18272 )
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 5.0194, 0, 1.18272 )
scene = ExtResource( 6 )
[resource]

File diff suppressed because one or more lines are too long

View File

@ -180,118 +180,6 @@ func _create_meshers():
# else:
# ._build_phase(phase)
func spawn_prop_entities(parent_transform : Transform, prop : PropData):
for i in range(prop.get_prop_count()):
var p : PropDataEntry = prop.get_prop(i)
if p is PropDataEntity:
var pentity : PropDataEntity = p as PropDataEntity
if pentity.entity_data_id != 0:
ESS.spawn_mob(pentity.entity_data_id, pentity.level, parent_transform.origin)
if p is PropDataProp and p.prop != null:
var vmanpp : PropDataProp = p as PropDataProp
spawn_prop_entities(get_prop_mesh_transform(parent_transform * p.transform, vmanpp.snap_to_mesh, vmanpp.snap_axis), p.prop)
func build_phase_prop_mesh() -> void:
if get_prop_count() == 0:
# next_phase()
return
if _prop_mesh_rid == RID():
allocate_prop_mesh()
if _prop_material == null:
_prop_material = SpatialMaterial.new()
_prop_material.flags_vertex_lighting = true
_prop_material.vertex_color_use_as_albedo = true
_prop_material.params_specular_mode = SpatialMaterial.SPECULAR_DISABLED
_prop_material.metallic = 0
VisualServer.instance_geometry_set_material_override(_prop_mesh_instance_rid, _prop_material.get_rid())
get_prop_mesher().material = _prop_material
for i in range(get_prop_count()):
var prop : VoxelChunkPropData = get_prop(i)
if prop.mesh != null and prop.mesh_texture != null:
var at : AtlasTexture = _prop_texture_packer.add_texture(prop.mesh_texture)
_textures.append(at)
if prop.prop != null:
prop.prop.add_textures_into(_prop_texture_packer)
if _prop_texture_packer.get_texture_count() > 0:
_prop_texture_packer.merge()
_prop_material.albedo_texture = _prop_texture_packer.get_generated_texture(0)
for i in range(get_prop_count()):
var prop : VoxelChunkPropData = get_prop(i)
if prop.mesh != null:
var t : Transform = get_prop_transform(prop, prop.snap_to_mesh, prop.snap_axis)
prop.prop.add_meshes_into(get_prop_mesher(), _prop_texture_packer, t, get_voxel_world())
if prop.prop != null:
var vmanpp : PropData = prop.prop as PropData
var t : Transform = get_prop_transform(prop, vmanpp.snap_to_mesh, vmanpp.snap_axis)
prop.prop.add_meshes_into(get_prop_mesher(), _prop_texture_packer, t, get_voxel_world())
get_prop_mesher().bake_colors(self)
get_prop_mesher().build_mesh_into(_prop_mesh_rid)
get_prop_mesher().material = null
if not _entities_spawned:
for i in range(get_prop_count()):
var prop : VoxelChunkPropData = get_prop(i)
if prop.prop != null:
spawn_prop_entities(get_prop_transform(prop, false, Vector3(0, -1, 0)), prop.prop)
# next_phase()
func get_prop_transform(prop : VoxelChunkPropData, snap_to_mesh: bool, snap_axis: Vector3) -> Transform:
var pos : Vector3 = Vector3(prop.x * voxel_scale, prop.y * voxel_scale, prop.z * voxel_scale)
var t : Transform = Transform(Basis(prop.rotation).scaled(prop.scale), pos)
if snap_to_mesh:
var global_pos : Vector3 = get_voxel_world().to_global(t.origin)
var world_snap_axis : Vector3 = get_voxel_world().to_global(t.xform(snap_axis))
var world_snap_dir : Vector3 = (world_snap_axis - global_pos) * 100
var space_state : PhysicsDirectSpaceState = get_voxel_world().get_world().direct_space_state
var result : Dictionary = space_state.intersect_ray(global_pos - world_snap_dir, global_pos + world_snap_dir, [], 1)
if result.size() > 0:
t.origin = get_voxel_world().to_local(result["position"])
return t
func get_prop_mesh_transform(base_transform : Transform, snap_to_mesh: bool, snap_axis: Vector3) -> Transform:
if snap_to_mesh:
var pos : Vector3 = get_voxel_world().to_global(base_transform.origin)
var world_snap_axis : Vector3 = get_voxel_world().to_global(base_transform.xform(snap_axis))
var world_snap_dir : Vector3 = (world_snap_axis - pos) * 100
var space_state : PhysicsDirectSpaceState = get_voxel_world().get_world().direct_space_state
var result : Dictionary = space_state.intersect_ray(pos - world_snap_dir, pos + world_snap_dir, [], 1)
if result.size() > 0:
base_transform.origin = get_voxel_world().to_local(result["position"])
return base_transform
#func _build_phase(phase):
# if phase == VoxelChunkDefault.BUILD_PHASE_COLLIDER:
# active_build_phase_type = VoxelChunkDefault.BUILD_PHASE_TYPE_PHYSICS_PROCESS
@ -313,29 +201,3 @@ func get_prop_mesh_transform(base_transform : Transform, snap_to_mesh: bool, sna
#
# ._build_phase_physics_process(phase)
#
func build_phase_lights() -> void:
var vl : VoxelLight = VoxelLight.new()
for i in range(get_prop_count()):
var prop : VoxelChunkPropData = get_prop(i)
if prop.light == null and prop.prop == null:
continue
var t : Transform = get_prop_transform(prop, prop.snap_to_mesh, prop.snap_axis)
if prop.light != null:
var pl : PropDataLight = prop.light
vl.set_world_position(prop.x + position_x * size_x, prop.y + position_y * size_y, prop.z + position_z * size_z)
vl.color = pl.light_color
vl.size = pl.light_size
bake_light(vl)
if prop.prop != null:
prop.prop.add_prop_lights_into(self, t, true)
func allocate_prop_mesh():
pass

View File

@ -30,6 +30,8 @@ export(bool) var editor_generate : bool = false setget set_editor_generate, get_
export(bool) var show_loading_screen : bool = true
export(bool) var generate_on_ready : bool = false
export(PropData) var test_prop : PropData
var initial_generation : bool = true
var spawned : bool = false
@ -175,6 +177,8 @@ func spawn() -> void:
for z in range(-chunk_spawn_range, chunk_spawn_range):
for y in range(-1, 2):
create_chunk(x, y, z)
# add_prop(Transform().translated(Vector3(0, 2, 0)), test_prop)
set_process(true)