61 lines
1.6 KiB
GDScript3
61 lines
1.6 KiB
GDScript3
|
|
extends SceneTree
|
||
|
|
|
||
|
|
const REGION := preload("res://world/regions/starter_island_region.tscn")
|
||
|
|
|
||
|
|
|
||
|
|
func _initialize() -> void:
|
||
|
|
call_deferred("_run")
|
||
|
|
|
||
|
|
|
||
|
|
func _run() -> void:
|
||
|
|
var region := REGION.instantiate()
|
||
|
|
root.add_child(region)
|
||
|
|
await process_frame
|
||
|
|
var terrain := region.get_node(
|
||
|
|
"Terrain/Visual/starter_island"
|
||
|
|
) as MeshInstance3D
|
||
|
|
assert(terrain != null)
|
||
|
|
assert(terrain.mesh.get_surface_count() == 5)
|
||
|
|
assert(terrain.mesh.surface_get_name(0) == "grass_lite")
|
||
|
|
assert(terrain.mesh.surface_get_name(1) == "dirt")
|
||
|
|
assert(terrain.mesh.surface_get_name(2) == "sand")
|
||
|
|
assert(terrain.mesh.surface_get_name(3) == "cliff_wall")
|
||
|
|
assert(terrain.mesh.surface_get_name(4) == "dirt_wall")
|
||
|
|
|
||
|
|
_validate_projected_material(terrain.get_surface_override_material(0))
|
||
|
|
_validate_projected_material(terrain.get_surface_override_material(2))
|
||
|
|
for surface: int in [1, 3, 4]:
|
||
|
|
assert(terrain.get_surface_override_material(surface) == null)
|
||
|
|
assert(terrain.mesh.surface_get_material(surface) is StandardMaterial3D)
|
||
|
|
|
||
|
|
print("Terrain projection validation: PASS")
|
||
|
|
region.free()
|
||
|
|
quit()
|
||
|
|
|
||
|
|
|
||
|
|
func _validate_projected_material(material: Material) -> void:
|
||
|
|
assert(material is ShaderMaterial)
|
||
|
|
var shader_material := material as ShaderMaterial
|
||
|
|
assert(
|
||
|
|
shader_material.shader.resource_path
|
||
|
|
== "res://world/materials/terrain_surface_projection.gdshader"
|
||
|
|
)
|
||
|
|
assert(
|
||
|
|
is_equal_approx(
|
||
|
|
float(shader_material.get_shader_parameter("tile_world_size")),
|
||
|
|
2.5
|
||
|
|
)
|
||
|
|
)
|
||
|
|
assert(
|
||
|
|
is_equal_approx(
|
||
|
|
float(shader_material.get_shader_parameter("blend_sharpness")),
|
||
|
|
6.0
|
||
|
|
)
|
||
|
|
)
|
||
|
|
assert(
|
||
|
|
is_equal_approx(
|
||
|
|
float(shader_material.get_shader_parameter("top_projection_bias")),
|
||
|
|
2.0
|
||
|
|
)
|
||
|
|
)
|