cave-of-dreams/examples_dd3d/DD3DDemoSubViewport.tscn
2026-05-19 22:18:33 -04:00

116 lines
4.3 KiB
Text

[gd_scene load_steps=9 format=3 uid="uid://4pqund3nukl7"]
[sub_resource type="GDScript" id="GDScript_y32ns"]
script/source = "@tool
extends Node3D
@export var frustum_enabled = true:
set(val):
frustum_enabled = val
DebugDraw3D.config.frustum_culling_mode = DebugDraw3DConfig.FRUSTUM_PRECISE if val else DebugDraw3DConfig.FRUSTUM_DISABLED
func _enter_tree() -> void:
DebugDraw3D.config.force_use_camera_from_scene = true
func _exit_tree() -> void:
DebugDraw3D.config.force_use_camera_from_scene = false
func _process(_delta: float) -> void:
var curve := $Path3D.curve as Curve3D
var points = curve.get_baked_points()
var ups = curve.get_baked_up_vectors()
var lines = PackedVector3Array()
lines.resize(points.size() * 2)
for i in range(points.size()):
lines[i * 2] = points[i]
lines[i * 2 + 1] = points[i] + ups[i]
DebugDraw3D.draw_lines(lines, Color.YELLOW)
func _on_check_box_toggled(toggled_on: bool) -> void:
self.frustum_enabled = toggled_on
"
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_wtcfe"]
sky_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1)
ground_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1)
[sub_resource type="Sky" id="Sky_0e48y"]
sky_material = SubResource("ProceduralSkyMaterial_wtcfe")
[sub_resource type="Environment" id="Environment_epypp"]
background_mode = 2
sky = SubResource("Sky_0e48y")
tonemap_mode = 2
glow_enabled = true
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_epypp"]
albedo_color = Color(0.3506754, 0.23276979, 0.12343951, 1)
[sub_resource type="PlaneMesh" id="PlaneMesh_0hol4"]
[sub_resource type="CapsuleMesh" id="CapsuleMesh_0e48y"]
[sub_resource type="Curve3D" id="Curve3D_q6r6c"]
bake_interval = 0.11
_data = {
"points": PackedVector3Array(0, 0, 0, 0, 0, 0, -5.531494, 0, -6.0880256, -5.817918, 0, -1.5365419, 5.817918, 0, 1.5365419, 2.5486827, 0, -8.88616, 0.8259964, 0, -2.056702, -0.8259964, 0, 2.056702, 8.37335, 0, -1.2475368, 4.7892456, 0, -0.3038473, -4.7892456, 0, 0.3038473, 0.88138366, 0, 2.1438887, -0.7307973, 0, -1.7408733, 0.7307973, 0, 1.7408733, -5.501097, 0, 8.557644, -2.1005936, 0, 0.22366333, 2.1005936, 0, -0.22366333, 0, 0, 11),
"tilts": PackedFloat32Array(0, 0.09319421, 0, 0, 0, 0)
}
point_count = 6
[node name="DD3D_SubViewportDemo" type="Node3D"]
script = SubResource("GDScript_y32ns")
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
transform = Transform3D(-0.8660254, -0.43301278, 0.25, 0, 0.49999997, 0.86602545, -0.50000006, 0.75, -0.43301266, 0, 0, 0)
shadow_enabled = true
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
environment = SubResource("Environment_epypp")
[node name="Floor" type="MeshInstance3D" parent="."]
transform = Transform3D(9.821215, 0, 0, 0, 1, 0, 0, 0, 11.795109, 0, 0, 0)
material_override = SubResource("StandardMaterial3D_epypp")
mesh = SubResource("PlaneMesh_0hol4")
metadata/_edit_lock_ = true
[node name="Player" type="MeshInstance3D" parent="."]
transform = Transform3D(0.9217549, 0, -0.387773, 0, 1, 0, 0.387773, 0, 0.9217549, 0, 1.1781173, 0)
mesh = SubResource("CapsuleMesh_0e48y")
skeleton = NodePath("")
[node name="Node3D" type="Node3D" parent="Player"]
transform = Transform3D(0.99999994, 0, 0, 0, 1, 0, 0, 0, 0.99999994, 0, 1.569, 2.551)
[node name="Camera3D" type="Camera3D" parent="Player/Node3D"]
transform = Transform3D(1, 0, 0, 0, 0.9277516, 0.37319833, 0, -0.37319833, 0.9277516, 0, 0, 0)
current = true
[node name="Path3D" type="Path3D" parent="."]
curve = SubResource("Curve3D_q6r6c")
[node name="SubViewportContainer" type="SubViewportContainer" parent="."]
offset_right = 356.0
offset_bottom = 335.0
stretch = true
[node name="MyViewport" type="SubViewport" parent="SubViewportContainer"]
handle_input_locally = false
size = Vector2i(356, 335)
render_target_update_mode = 4
[node name="Camera3D" type="Camera3D" parent="SubViewportContainer/MyViewport"]
transform = Transform3D(0.7890948, -0.46304747, 0.40362903, -1.3314483e-08, 0.65708584, 0.7538156, -0.6142715, -0.5948321, 0.51850295, 6.8549986, 9.895414, 9.748488)
[node name="CheckBox" type="CheckBox" parent="."]
offset_left = 104.0
offset_top = 305.0
offset_right = 252.0
offset_bottom = 336.0
button_pressed = true
text = "frustum culling"
[connection signal="toggled" from="CheckBox" to="." method="_on_check_box_toggled"]