diff --git a/HEADS b/HEADS index b6a8ec3c..37c95cf8 100644 --- a/HEADS +++ b/HEADS @@ -1 +1 @@ -{"engine": {"3.2": "07b24de868457c0a190c88771e99ff09e5451c3b", "master": "8c73e813134001e575b6f59e3b0100471c007410"}, "world_generator": {"master": "873a5f3e4a88bbebdc317c2bd82d1ec0d045c9b5"}, "entity_spell_system": {"master": "af1bd74fbf38d0ac42d3cf203feb3c7212d01849"}, "ui_extensions": {"master": "6fe4f69fea8d71043b08d959b8085404c9c4fe47"}, "voxelman": {"master": "18ad178b1e73a3814749e921f3115ed52dc78b99"}, "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"}} \ No newline at end of file +{"engine": {"3.2": "07b24de868457c0a190c88771e99ff09e5451c3b", "master": "8c73e813134001e575b6f59e3b0100471c007410"}, "world_generator": {"master": "882008ac7f0b6edf3a1de4481cd41b23f621d25b"}, "entity_spell_system": {"master": "af1bd74fbf38d0ac42d3cf203feb3c7212d01849"}, "ui_extensions": {"master": "6fe4f69fea8d71043b08d959b8085404c9c4fe47"}, "voxelman": {"master": "698f6083ea537374740998b4fd8629e6a68e4fc6"}, "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"}} \ No newline at end of file diff --git a/game/modules/planets/test_planet/biomes/simple_biome.gd b/game/modules/planets/test_planet/biomes/simple_biome.gd index f3021660..b3cf67a8 100644 --- a/game/modules/planets/test_planet/biomes/simple_biome.gd +++ b/game/modules/planets/test_planet/biomes/simple_biome.gd @@ -29,7 +29,7 @@ func _setup(): if !dd: continue - + var d : Dungeon = dd.instance() d.posx = 0 d.posz = 0 @@ -37,7 +37,6 @@ func _setup(): d.current_seed = current_seed d.setup() add_dungeon(d) - return func _generate_chunk(chunk: VoxelChunk, spawn_mobs: bool) -> void: # var chunk : VoxelChunk = chunk.get_chunk() diff --git a/game/modules/planets/test_planet/planets/dung_simple_planet.gd b/game/modules/planets/test_planet/planets/dung_simple_planet.gd index 061563d7..39541918 100644 --- a/game/modules/planets/test_planet/planets/dung_simple_planet.gd +++ b/game/modules/planets/test_planet/planets/dung_simple_planet.gd @@ -27,15 +27,17 @@ func _setup(): if data.get_biome_data_count() == 0: return - + var bdata : BiomeData = data.get_biome_data(0) + if !bdata: + return + var b : Biome = bdata.instance() - b.current_seed = current_seed b.setup() add_biome(b) - + # if bdata.get_dungeon_data_count() == 0: # return # diff --git a/game/project.godot b/game/project.godot index 6d7310c2..32e7954f 100644 --- a/game/project.godot +++ b/game/project.godot @@ -37,7 +37,7 @@ _global_script_classes=[ { "base": "VoxelMesherCubic", "class": "GDCubicVoxelMesher", "language": "GDScript", -"path": "res://voxelman/world/CubicVoxelMesher.gd" +"path": "res://voxelman/debug/CubicVoxelMesher.gd" }, { "base": "Resource", "class": "GameModule", @@ -127,7 +127,7 @@ _global_script_classes=[ { "base": "VoxelMesherMarchingCubes", "class": "TestVoxelMesher", "language": "GDScript", -"path": "res://voxelman/world/TestVoxelMesher.gd" +"path": "res://voxelman/debug/TestVoxelMesher.gd" } ] _global_script_class_icons={ "AuraGD": "", diff --git a/game/scripts/world_generators/MainPlanetGenerator.gd b/game/scripts/world_generators/MainPlanetGenerator.gd index ff01d9a2..e50d1fdc 100644 --- a/game/scripts/world_generators/MainPlanetGenerator.gd +++ b/game/scripts/world_generators/MainPlanetGenerator.gd @@ -39,11 +39,13 @@ func setup(world : VoxelWorld, level_seed : int, spawn_mobs : bool, library: Vox _spawn_mobs = spawn_mobs _library = library - if planet: + if planet != null: _planet = planet.instance() _planet.current_seed = _level_seed _planet.setup() - _planet.setup_library(_library) + +# This crashes, still need to figure out why +# _planet.setup_library(_library) # create_planet() diff --git a/game/voxelman/TestScene.tscn b/game/voxelman/TestScene.tscn deleted file mode 100644 index b9e2de83..00000000 --- a/game/voxelman/TestScene.tscn +++ /dev/null @@ -1,141 +0,0 @@ -[gd_scene load_steps=16 format=2] - -[ext_resource path="res://voxelman/debug/FreeLookCam.tscn" type="PackedScene" id=1] -[ext_resource path="res://modules/core/materials/voxelman.tres" type="Material" id=2] -[ext_resource path="res://voxelman/FPSCounter.gd" type="Script" id=3] -[ext_resource path="res://voxelman/cubic_mesher/CubicVoxelWorld.tscn" type="PackedScene" id=4] -[ext_resource path="res://modules/planets/test_planet/voxel_library/textures/grass_mossy_albedo.png" type="Texture" id=5] - - - - - - - - - -[sub_resource type="Environment" id=1] -ambient_light_color = Color( 1, 1, 1, 1 ) - -[sub_resource type="SpatialMaterial" id=2] -albedo_color = Color( 0.00392157, 0.105882, 0.0196078, 1 ) - -[sub_resource type="PlaneMesh" id=3] - -[sub_resource type="SphereMesh" id=4] - -[sub_resource type="SpatialMaterial" id=5] -albedo_color = Color( 1, 0.00392157, 0.00392157, 1 ) - -[sub_resource type="PrismMesh" id=6] - -[sub_resource type="PrismMesh" id=7] - -[sub_resource type="SpatialMaterial" id=8] -albedo_color = Color( 0.129412, 1, 0.0156863, 1 ) -albedo_texture = ExtResource( 5 ) - -[sub_resource type="PrismMesh" id=9] - -[sub_resource type="SpatialMaterial" id=10] -albedo_color = Color( 0.00784314, 0.0627451, 1, 1 ) -albedo_texture = ExtResource( 5 ) - -[node name="MC_Test" type="Spatial"] - -[node name="Camera" parent="." instance=ExtResource( 1 )] -transform = Transform( 0.844995, 0.247388, -0.474112, -0.0119927, 0.895109, 0.445686, 0.534639, -0.370917, 0.75933, -22.7583, 12.2082, 41.288 ) - -[node name="WorldEnvironment" type="WorldEnvironment" parent="."] -environment = SubResource( 1 ) - -[node name="DebugGeom" type="ImmediateGeometry" parent="."] - -[node name="VoxelWorld" parent="." instance=ExtResource( 4 )] - -[node name="DirectionalLight" type="DirectionalLight" parent="."] -transform = Transform( 1, 0, 0, 0, -0.236854, 0.971545, 0, -0.971545, -0.236854, 0, 41.8924, 0 ) - -[node name="DirectionalLight2" type="DirectionalLight" parent="."] -transform = Transform( -0.781917, -0.147651, 0.605645, -0.623383, 0.1852, -0.759667, 0, -0.971545, -0.236854, 0, 12.0807, 0 ) - -[node name="FPSCounter" type="Label" parent="."] -margin_right = 123.0 -margin_bottom = 41.0 -script = ExtResource( 3 ) -__meta__ = { -"_edit_use_anchors_": false -} - -[node name="MeshInstance" type="MeshInstance" parent="."] -transform = Transform( 20, 0, 0, 0, 20, 0, 0, 0, 20, 0, -5, 0 ) -material_override = SubResource( 2 ) -mesh = SubResource( 3 ) -material/0 = ExtResource( 2 ) - -[node name="gizmo" type="Spatial" parent="."] - -[node name="MeshInstance2" type="MeshInstance" parent="gizmo"] -transform = Transform( 0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 0, 0, 0 ) -mesh = SubResource( 4 ) -material/0 = ExtResource( 2 ) - -[node name="MeshInstance6" type="MeshInstance" parent="gizmo"] -transform = Transform( 0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 1, 1, 1 ) -mesh = SubResource( 4 ) -material/0 = ExtResource( 2 ) - -[node name="MeshInstance7" type="MeshInstance" parent="gizmo"] -transform = Transform( 0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 0, 1, 1 ) -mesh = SubResource( 4 ) -material/0 = ExtResource( 2 ) - -[node name="MeshInstance8" type="MeshInstance" parent="gizmo"] -transform = Transform( 0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 1, 1, 0 ) -mesh = SubResource( 4 ) -material/0 = ExtResource( 2 ) - -[node name="MeshInstance9" type="MeshInstance" parent="gizmo"] -transform = Transform( 0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 1, 0, 1 ) -mesh = SubResource( 4 ) -material/0 = ExtResource( 2 ) - -[node name="MeshInstance3" type="MeshInstance" parent="gizmo"] -transform = Transform( 5.96244e-10, 0.05, 0, -0.05, 5.96244e-10, 0, 0, 0, 0.05, 1, 0, 0 ) -material_override = SubResource( 5 ) -mesh = SubResource( 6 ) -material/0 = ExtResource( 2 ) - -[node name="MeshInstance4" type="MeshInstance" parent="gizmo"] -transform = Transform( 0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 0, 1, 0 ) -mesh = SubResource( 7 ) -material/0 = SubResource( 8 ) - -[node name="MeshInstance5" type="MeshInstance" parent="gizmo"] -transform = Transform( 0.05, 0, 0, 0, -2.18557e-09, -0.05, 0, 0.05, -2.18557e-09, 0, 0, 1 ) -mesh = SubResource( 9 ) -material/0 = SubResource( 10 ) - -[node name="gizmo2" type="Spatial" parent="."] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 53.2071, 8.56598, 59.3495 ) - -[node name="MeshInstance2" type="MeshInstance" parent="gizmo2"] -transform = Transform( 0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 0, 0, 0 ) -mesh = SubResource( 4 ) -material/0 = ExtResource( 2 ) - -[node name="MeshInstance3" type="MeshInstance" parent="gizmo2"] -transform = Transform( 5.96244e-10, 0.05, 0, -0.05, 5.96244e-10, 0, 0, 0, 0.05, 1, 0, 0 ) -material_override = SubResource( 5 ) -mesh = SubResource( 6 ) -material/0 = ExtResource( 2 ) - -[node name="MeshInstance4" type="MeshInstance" parent="gizmo2"] -transform = Transform( 0.05, 0, 0, 0, 0.05, 0, 0, 0, 0.05, 0, 1, 0 ) -mesh = SubResource( 7 ) -material/0 = SubResource( 8 ) - -[node name="MeshInstance5" type="MeshInstance" parent="gizmo2"] -transform = Transform( 0.05, 0, 0, 0, -2.18557e-09, -0.05, 0, 0.05, -2.18557e-09, 0, 0, 1 ) -mesh = SubResource( 9 ) -material/0 = SubResource( 10 ) diff --git a/game/voxelman/world/CubicVoxelMesher.gd b/game/voxelman/debug/CubicVoxelMesher.gd similarity index 100% rename from game/voxelman/world/CubicVoxelMesher.gd rename to game/voxelman/debug/CubicVoxelMesher.gd diff --git a/game/voxelman/world/TVTestScene.tscn b/game/voxelman/debug/TVTestScene.tscn similarity index 98% rename from game/voxelman/world/TVTestScene.tscn rename to game/voxelman/debug/TVTestScene.tscn index b5acd5bd..d2d514e3 100644 --- a/game/voxelman/world/TVTestScene.tscn +++ b/game/voxelman/debug/TVTestScene.tscn @@ -1,6 +1,6 @@ [gd_scene load_steps=18 format=2] -[ext_resource path="res://voxelman/world/TVVoxelWorld.tscn" type="PackedScene" id=1] +[ext_resource path="res://voxelman/debug/TVVoxelWorld.tscn" type="PackedScene" id=1] [ext_resource path="res://modules/core/materials/voxelman.tres" type="Material" id=2] [ext_resource path="res://voxelman/FPSCounter.gd" type="Script" id=3] [ext_resource path="res://voxelman/debug/FreeLookCam.tscn" type="PackedScene" id=4] @@ -19,6 +19,7 @@ + [sub_resource type="Environment" id=1] ambient_light_color = Color( 1, 1, 1, 1 ) diff --git a/game/voxelman/world/TVVoxelWorld.tscn b/game/voxelman/debug/TVVoxelWorld.tscn similarity index 88% rename from game/voxelman/world/TVVoxelWorld.tscn rename to game/voxelman/debug/TVVoxelWorld.tscn index f66897cd..e5702562 100644 --- a/game/voxelman/world/TVVoxelWorld.tscn +++ b/game/voxelman/debug/TVVoxelWorld.tscn @@ -3,11 +3,7 @@ [ext_resource path="res://modules/planets/test_planet/voxel_library/1_main_lib_merger_empty.tres" type="VoxelmanLibraryMerger" id=1] [ext_resource path="res://voxelman/world/TVVoxelWorld.gd" type="Script" id=2] - - - - -[node name="World" type="VoxelWorld"] +[node name="World" type="VoxelWorldDefault"] library = ExtResource( 1 ) voxel_scale = 2.0 player_path = NodePath("Camera") diff --git a/game/voxelman/world/TestVoxelMesher.gd b/game/voxelman/debug/TestVoxelMesher.gd similarity index 100% rename from game/voxelman/world/TestVoxelMesher.gd rename to game/voxelman/debug/TestVoxelMesher.gd diff --git a/game/voxelman/world/OldTVVoxelChunk.gd b/game/voxelman/world/OldTVVoxelChunk.gd deleted file mode 100644 index 2c07231a..00000000 --- a/game/voxelman/world/OldTVVoxelChunk.gd +++ /dev/null @@ -1,177 +0,0 @@ -extends VoxelChunkDefault -#class_name TVVoxelChunk - -var _prop_texture_packer : TexturePacker -var _textures : Array -var _prop_material : SpatialMaterial -var _entities_spawned : bool - -func _create_meshers(): - _prop_texture_packer = TexturePacker.new() - _prop_texture_packer.max_atlas_size = 1024 - _prop_texture_packer.margin = 1 - _prop_texture_packer.background_color = Color(0, 0, 0, 1) - _prop_texture_packer.texture_flags = Texture.FLAG_MIPMAPS - -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: - for i in range(get_mesher_count()): - get_mesher(i).reset() - - if get_prop_count() == 0: - next_phase() - return - -# if get_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(get_prop_mesh_instance_rid(), _prop_material.get_rid()) - - for i in range(get_mesher_count()): - get_mesher(i).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) - - for j in range(get_mesher_count()): - prop.prop.add_meshes_into(get_mesher(j), _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) - - for j in range(get_mesher_count()): - prop.prop.add_meshes_into(get_mesher(j), _prop_texture_packer, t, get_voxel_world()) - - for i in range(get_mesher_count()): - get_mesher(i).bake_colors(self) -# get_mesher(i).build_mesh(get_prop_mesh_rid()) - get_mesher(i).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 == VoxelChunk.BUILD_PHASE_PROP_MESH: - set_physics_process(true) - -func _physics_process(delta): - if current_build_phase == VoxelChunk.BUILD_PHASE_PROP_MESH: - build_phase_prop_mesh() - set_physics_process(false) - next_phase() - -#func visibility_changed() -> void: -# if get_prop_mesh_instance_rid() != RID(): -# VisualServer.instance_set_visible(get_prop_mesh_instance_rid(), visible) -# -# -#func _notification(what: int) -> void: -# if what == NOTIFICATION_TRANSFORM_CHANGED: -# if get_prop_mesh_instance_rid() != RID(): -# VisualServer.instance_set_transform(get_prop_mesh_instance_rid(), transform) -# -# if get_prop_body_rid() != RID(): -# PhysicsServer.body_set_state(get_prop_body_rid(), PhysicsServer.BODY_STATE_TRANSFORM, transform) - -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) diff --git a/game/voxelman/world/TVVoxelWorld.gd b/game/voxelman/world/TVVoxelWorld.gd index 71275d37..c17b4855 100644 --- a/game/voxelman/world/TVVoxelWorld.gd +++ b/game/voxelman/world/TVVoxelWorld.gd @@ -49,14 +49,16 @@ var rc : int = 0 func _enter_tree(): if generate_on_ready and not Engine.is_editor_hint(): +# This crases pretty reliably, when duplicatiog BiomeBase, not yet sure why exactly # call_deferred("generate") generate() func generate(): if level_generator != null: level_generator.setup(self, 80, false, library) - + spawn() + func _process(delta): if initial_generation: