mirror of
https://github.com/godotengine/godot-demo-projects.git
synced 2026-01-02 21:48:23 +03:00
Compare commits
20 Commits
3.2
...
3.3-2d4d23
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2d4d23302a | ||
|
|
4456027f91 | ||
|
|
19312b2899 | ||
|
|
ca17967de1 | ||
|
|
491fb265b1 | ||
|
|
08be1b7f03 | ||
|
|
4ef90a836a | ||
|
|
bfd903a933 | ||
|
|
e0db0b8f6d | ||
|
|
4d21951b71 | ||
|
|
7656c08454 | ||
|
|
e894e4655a | ||
|
|
2ce76ff4e5 | ||
|
|
e5d829eb8f | ||
|
|
7f025e000e | ||
|
|
5132941a84 | ||
|
|
ef265cca0a | ||
|
|
31bb09233b | ||
|
|
57f5e0835d | ||
|
|
814909538f |
4
.github/workflows/export_html5.yml
vendored
4
.github/workflows/export_html5.yml
vendored
@@ -5,14 +5,14 @@ on:
|
||||
- master
|
||||
|
||||
env:
|
||||
GODOT_VERSION: 3.2.3
|
||||
GODOT_VERSION: 3.3
|
||||
|
||||
jobs:
|
||||
export-html5:
|
||||
name: Export projects to HTML5 and deploy to GitHub Pages
|
||||
runs-on: ubuntu-20.04
|
||||
container:
|
||||
image: barichello/godot-ci:3.2.3
|
||||
image: barichello/godot-ci:3.3
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2.3.4
|
||||
|
||||
@@ -29,5 +29,6 @@ frames = SubResource( 1 )
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="Player"]
|
||||
shape = SubResource( 2 )
|
||||
|
||||
[connection signal="body_shape_entered" from="Player" to="Player" method="_on_body_shape_entered"]
|
||||
[connection signal="body_shape_exited" from="Player" to="Player" method="_on_body_shape_exited"]
|
||||
|
||||
@@ -53,5 +53,6 @@ text = "Start"
|
||||
|
||||
[node name="MessageTimer" type="Timer" parent="."]
|
||||
one_shot = true
|
||||
|
||||
[connection signal="pressed" from="StartButton" to="." method="_on_StartButton_pressed"]
|
||||
[connection signal="timeout" from="MessageTimer" to="." method="_on_MessageTimer_timeout"]
|
||||
|
||||
@@ -47,6 +47,7 @@ stream = ExtResource( 5 )
|
||||
|
||||
[node name="DeathSound" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 6 )
|
||||
|
||||
[connection signal="hit" from="Player" to="." method="game_over"]
|
||||
[connection signal="timeout" from="MobTimer" to="." method="_on_MobTimer_timeout"]
|
||||
[connection signal="timeout" from="ScoreTimer" to="." method="_on_ScoreTimer_timeout"]
|
||||
|
||||
@@ -50,4 +50,5 @@ rotation = 1.5708
|
||||
shape = SubResource( 2 )
|
||||
|
||||
[node name="VisibilityNotifier2D" type="VisibilityNotifier2D" parent="."]
|
||||
|
||||
[connection signal="screen_exited" from="VisibilityNotifier2D" to="." method="_on_VisibilityNotifier2D_screen_exited"]
|
||||
|
||||
@@ -67,4 +67,5 @@ speed_scale = 2.0
|
||||
local_coords = false
|
||||
process_material = SubResource( 7 )
|
||||
texture = ExtResource( 2 )
|
||||
|
||||
[connection signal="body_entered" from="." to="." method="_on_Player_body_entered"]
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Dodge the Creeps"
|
||||
@@ -29,6 +24,8 @@ config/icon="res://icon.png"
|
||||
|
||||
window/size/width=480
|
||||
window/size/height=720
|
||||
window/stretch/mode="2d"
|
||||
window/stretch/aspect="keep"
|
||||
|
||||
[input]
|
||||
|
||||
|
||||
@@ -115,6 +115,7 @@ align = 1
|
||||
valign = 1
|
||||
uppercase = true
|
||||
script = ExtResource( 15 )
|
||||
|
||||
[connection signal="state_changed" from="StateMachine" to="BodyPivot/WeaponPivot/Offset/Sword" method="_on_StateMachine_state_changed"]
|
||||
[connection signal="state_changed" from="StateMachine" to="StateNameDisplayer" method="_on_StateMachine_state_changed"]
|
||||
[connection signal="animation_finished" from="AnimationPlayer" to="StateMachine" method="_on_animation_finished"]
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Hierarchical Finite State Machine"
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="GD Paint"
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="HDR for 2D"
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Hexagonal Game"
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Scene Instancing Demo"
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Isometric Game"
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Kinematic Character 2D"
|
||||
|
||||
@@ -266,4 +266,5 @@ shape = SubResource( 12 )
|
||||
[node name="Camera2D" type="Camera2D" parent="."]
|
||||
offset = Vector2( 265, 247 )
|
||||
current = true
|
||||
|
||||
[connection signal="body_entered" from="Princess" to="Princess" method="_on_body_entered"]
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="2D Lights as Mask"
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="2D Lights and Shadows"
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Navigation Polygon 2D"
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Grid-based Pathfinding with Astar"
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="2D Particles"
|
||||
|
||||
@@ -142,4 +142,5 @@ texture = ExtResource( 4 )
|
||||
[node name="Enabler" type="VisibilityEnabler2D" parent="."]
|
||||
rect = Rect2( -5, -5, 10, 10 )
|
||||
pause_particles = false
|
||||
|
||||
[connection signal="body_entered" from="." to="." method="_on_body_enter"]
|
||||
|
||||
@@ -83,4 +83,5 @@ one_shot = true
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
anims/shutdown = SubResource( 4 )
|
||||
|
||||
[connection signal="timeout" from="Timer" to="." method="disable"]
|
||||
|
||||
@@ -215,8 +215,8 @@ script = ExtResource( 1 )
|
||||
|
||||
[node name="Sprite" type="Sprite" parent="."]
|
||||
texture = ExtResource( 2 )
|
||||
vframes = 2
|
||||
hframes = 16
|
||||
vframes = 2
|
||||
|
||||
[node name="Smoke" type="Particles2D" parent="Sprite"]
|
||||
self_modulate = Color( 1, 1, 1, 0.26702 )
|
||||
|
||||
@@ -156,10 +156,11 @@ mipmap_policy=1
|
||||
|
||||
quality/intended_usage/framebuffer_allocation=0
|
||||
quality/intended_usage/framebuffer_allocation.mobile=1
|
||||
quality/2d/use_pixel_snap=true
|
||||
2d/snapping/use_gpu_pixel_snap=true
|
||||
quality/filters/anisotropic_filter_level=2
|
||||
quality/filters/use_nearest_mipmap_filter=true
|
||||
quality/depth/hdr=false
|
||||
quality/2d/use_pixel_snap=true
|
||||
|
||||
[texture_import]
|
||||
|
||||
|
||||
@@ -193,5 +193,6 @@ max_lines_visible = 5
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[connection signal="pressed" from="PanelLog/ButtonClear" to="PanelLog/ScrollLog/VBoxLog" method="clear"]
|
||||
[connection signal="toggled" from="PanelLog/CheckBoxScroll" to="PanelLog/ScrollLog" method="set_auto_scroll"]
|
||||
|
||||
@@ -83,23 +83,6 @@ func create_rigidbody(shape, pickable = false, transform = Transform.IDENTITY):
|
||||
return body
|
||||
|
||||
|
||||
func create_rigidbody_collision(collision, pickable = false, transform = Transform.IDENTITY):
|
||||
var collision_copy = collision.duplicate()
|
||||
collision_copy.transform = transform
|
||||
|
||||
if collision is CollisionShape2D:
|
||||
collision_copy.shape = collision.shape.duplicate()
|
||||
|
||||
var body = RigidBody2D.new()
|
||||
body.add_child(collision_copy)
|
||||
|
||||
if pickable:
|
||||
var script = load("res://utils/rigidbody_pick.gd")
|
||||
body.set_script(script)
|
||||
|
||||
return body
|
||||
|
||||
|
||||
func create_rigidbody_box(size, pickable = false, use_icon = false, transform = Transform.IDENTITY):
|
||||
var shape = RectangleShape2D.new()
|
||||
shape.extents = 0.5 * size
|
||||
|
||||
@@ -50,6 +50,10 @@ var _tests = [
|
||||
"id": "Performance Tests/Contacts",
|
||||
"path": "res://tests/performance/test_perf_contacts.tscn",
|
||||
},
|
||||
{
|
||||
"id" : "Performance Tests/Contact Islands",
|
||||
"path" : "res://tests/performance/test_perf_contact_islands.tscn",
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
|
||||
@@ -146,5 +146,6 @@ rect_min_size = Vector2( 120, 0 )
|
||||
min_value = -1.0
|
||||
max_value = 1.0
|
||||
step = 0.01
|
||||
|
||||
[connection signal="value_changed" from="Controls/OffsetH/HSlider" to="." method="set_h_offset"]
|
||||
[connection signal="value_changed" from="Controls/OffsetV/HSlider" to="." method="set_v_offset"]
|
||||
|
||||
@@ -17,13 +17,6 @@ extents = Vector2( 32, 32 )
|
||||
|
||||
[node name="Test" type="Node2D"]
|
||||
script = ExtResource( 1 )
|
||||
_enable_debug_collision = true
|
||||
_platform_size = 64.0
|
||||
_platform_angle = 0.0
|
||||
_platform_speed = 0.0
|
||||
_body_angle = 0.0
|
||||
_body_velocity = Vector2( 400, 0 )
|
||||
_use_kinematic_body = false
|
||||
|
||||
[node name="LabelTestType" type="Label" parent="."]
|
||||
margin_left = 14.0
|
||||
@@ -245,6 +238,7 @@ texture = ExtResource( 2 )
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="KinematicBody2D"]
|
||||
shape = SubResource( 3 )
|
||||
|
||||
[connection signal="value_changed" from="Controls/PlatformSize/HSlider" to="." method="_set_platform_size"]
|
||||
[connection signal="value_changed" from="Controls/PlatformAngle/HSlider" to="." method="_set_platform_angle"]
|
||||
[connection signal="value_changed" from="Controls/BodyAngle/HSlider" to="." method="_set_rigidbody_angle"]
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
[gd_scene load_steps=7 format=2]
|
||||
[gd_scene load_steps=8 format=2]
|
||||
|
||||
[ext_resource path="res://assets/texture/godot-head.png" type="Texture" id=1]
|
||||
[ext_resource path="res://test.gd" type="Script" id=2]
|
||||
[ext_resource path="res://utils/rigidbody_pick.gd" type="Script" id=3]
|
||||
[ext_resource path="res://tests/static_scene.tscn" type="PackedScene" id=6]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=1]
|
||||
@@ -21,6 +22,7 @@ script = ExtResource( 2 )
|
||||
|
||||
[node name="RigidBodyRectangle" type="RigidBody2D" parent="DynamicShapes"]
|
||||
position = Vector2( 96, 127 )
|
||||
script = ExtResource( 3 )
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="DynamicShapes/RigidBodyRectangle"]
|
||||
rotation = 0.675442
|
||||
@@ -28,6 +30,7 @@ shape = SubResource( 1 )
|
||||
|
||||
[node name="RigidBodyCapsule" type="RigidBody2D" parent="DynamicShapes"]
|
||||
position = Vector2( 270.165, 139.444 )
|
||||
script = ExtResource( 3 )
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="DynamicShapes/RigidBodyCapsule"]
|
||||
rotation = -0.202458
|
||||
@@ -35,6 +38,7 @@ shape = SubResource( 2 )
|
||||
|
||||
[node name="RigidBodyConcavePolygon" type="RigidBody2D" parent="DynamicShapes"]
|
||||
position = Vector2( 683.614, 132.749 )
|
||||
script = ExtResource( 3 )
|
||||
|
||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DynamicShapes/RigidBodyConcavePolygon"]
|
||||
scale = Vector2( 0.5, 0.5 )
|
||||
@@ -47,6 +51,7 @@ texture = ExtResource( 1 )
|
||||
|
||||
[node name="RigidBodyConvexPolygon" type="RigidBody2D" parent="DynamicShapes"]
|
||||
position = Vector2( 473.536, 134.336 )
|
||||
script = ExtResource( 3 )
|
||||
|
||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DynamicShapes/RigidBodyConvexPolygon"]
|
||||
scale = Vector2( 0.5, 0.5 )
|
||||
@@ -59,6 +64,7 @@ texture = ExtResource( 1 )
|
||||
|
||||
[node name="RigidBodySphere" type="RigidBody2D" parent="DynamicShapes"]
|
||||
position = Vector2( 919.968, 115.129 )
|
||||
script = ExtResource( 3 )
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="DynamicShapes/RigidBodySphere"]
|
||||
shape = SubResource( 3 )
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
[gd_scene load_steps=8 format=2]
|
||||
|
||||
[ext_resource path="res://tests/static_scene.tscn" type="PackedScene" id=1]
|
||||
[ext_resource path="res://tests/performance/test_perf_contacts.gd" type="Script" id=2]
|
||||
[ext_resource path="res://assets/texture/godot-head.png" type="Texture" id=3]
|
||||
[ext_resource path="res://tests/test_options.tscn" type="PackedScene" id=4]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=1]
|
||||
extents = Vector2( 5, 7 )
|
||||
|
||||
[sub_resource type="CircleShape2D" id=2]
|
||||
radius = 5.0
|
||||
|
||||
[sub_resource type="CapsuleShape2D" id=3]
|
||||
radius = 5.0
|
||||
height = 7.0
|
||||
|
||||
[node name="Test" type="Node2D"]
|
||||
script = ExtResource( 2 )
|
||||
_enable_debug_collision = false
|
||||
spawns = [ NodePath("SpawnTarget1"), NodePath("SpawnTarget2"), NodePath("SpawnTarget3"), NodePath("SpawnTarget4"), NodePath("SpawnTarget5"), NodePath("SpawnTarget6"), NodePath("SpawnTarget7"), NodePath("SpawnTarget8"), NodePath("SpawnTarget9") ]
|
||||
spawn_count = 300
|
||||
spawn_randomize = Vector2( 10, 10 )
|
||||
|
||||
[node name="Options" parent="." instance=ExtResource( 4 )]
|
||||
|
||||
[node name="SpawnTarget1" type="Node2D" parent="."]
|
||||
position = Vector2( 145.646, 109.462 )
|
||||
|
||||
[node name="SpawnTarget2" type="Node2D" parent="."]
|
||||
position = Vector2( 508.14, 109.113 )
|
||||
|
||||
[node name="SpawnTarget3" type="Node2D" parent="."]
|
||||
position = Vector2( 873.995, 110.042 )
|
||||
|
||||
[node name="SpawnTarget4" type="Node2D" parent="."]
|
||||
position = Vector2( 149.646, 301.462 )
|
||||
|
||||
[node name="SpawnTarget5" type="Node2D" parent="."]
|
||||
position = Vector2( 512.14, 301.113 )
|
||||
|
||||
[node name="SpawnTarget6" type="Node2D" parent="."]
|
||||
position = Vector2( 877.995, 302.042 )
|
||||
|
||||
[node name="SpawnTarget7" type="Node2D" parent="."]
|
||||
position = Vector2( 165.646, 507.462 )
|
||||
|
||||
[node name="SpawnTarget8" type="Node2D" parent="."]
|
||||
position = Vector2( 528.14, 507.113 )
|
||||
|
||||
[node name="SpawnTarget9" type="Node2D" parent="."]
|
||||
position = Vector2( 893.995, 508.042 )
|
||||
|
||||
[node name="StaticScene" parent="." instance=ExtResource( 1 )]
|
||||
visible = false
|
||||
position = Vector2( 0, 125.017 )
|
||||
|
||||
[node name="DynamicShapes" type="Node2D" parent="."]
|
||||
|
||||
[node name="RigidBodyRectangle" type="RigidBody2D" parent="DynamicShapes"]
|
||||
position = Vector2( 0, 1024 )
|
||||
gravity_scale = 0.0
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="DynamicShapes/RigidBodyRectangle"]
|
||||
shape = SubResource( 1 )
|
||||
|
||||
[node name="RigidBodySphere" type="RigidBody2D" parent="DynamicShapes"]
|
||||
position = Vector2( 100, 1024 )
|
||||
gravity_scale = 0.0
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="DynamicShapes/RigidBodySphere"]
|
||||
shape = SubResource( 2 )
|
||||
|
||||
[node name="RigidBodyCapsule" type="RigidBody2D" parent="DynamicShapes"]
|
||||
position = Vector2( 200, 1024 )
|
||||
gravity_scale = 0.0
|
||||
|
||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="DynamicShapes/RigidBodyCapsule"]
|
||||
shape = SubResource( 3 )
|
||||
|
||||
[node name="RigidBodyConvexPolygon" type="RigidBody2D" parent="DynamicShapes"]
|
||||
position = Vector2( 300, 1024 )
|
||||
gravity_scale = 0.0
|
||||
|
||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DynamicShapes/RigidBodyConvexPolygon"]
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
polygon = PoolVector2Array( 10.7, -54.5, 28.3596, -49.4067, 47.6282, -34.3806, 57.9717, -20.9447, 50.9869, 35.2694, 38.8, 47.5, 15.9852, 54.3613, -14.9507, 54.1845, -36.5, 48.1, -50.4828, 36.33, -58.0115, -20.515, -46.9473, -34.7342, -26.0876, -50.1138, -11.4152, -54.5332 )
|
||||
|
||||
[node name="GodotIcon" type="Sprite" parent="DynamicShapes/RigidBodyConvexPolygon"]
|
||||
self_modulate = Color( 1, 1, 1, 0.392157 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
texture = ExtResource( 3 )
|
||||
|
||||
[node name="RigidBodyConcavePolygon" type="RigidBody2D" parent="DynamicShapes"]
|
||||
position = Vector2( 400, 1024 )
|
||||
gravity_scale = 0.0
|
||||
|
||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DynamicShapes/RigidBodyConcavePolygon"]
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
polygon = PoolVector2Array( -5.93512, -43.2195, 6.44476, -42.9695, 11.127, -54.3941, 26.9528, -49.4309, 26.2037, -36.508, 37.5346, -28.1737, 47.6282, -34.3806, 58.0427, -20.9631, 51.113, -10.2876, 50.9869, 35.2694, 38.8, 47.5, 15.9852, 54.3613, -14.9507, 54.1845, -36.5, 48.1, -50.4828, 36.33, -51.3668, -9.98545, -57.8889, -20.5885, -46.9473, -34.7342, -37.4014, -28.547, -26.0876, -37.0323, -26.9862, -49.15, -11.4152, -54.5332 )
|
||||
|
||||
[node name="GodotIcon" type="Sprite" parent="DynamicShapes/RigidBodyConcavePolygon"]
|
||||
self_modulate = Color( 1, 1, 1, 0.392157 )
|
||||
scale = Vector2( 0.1, 0.1 )
|
||||
texture = ExtResource( 3 )
|
||||
@@ -8,8 +8,9 @@ const OPTION_TYPE_CAPSULE = "Shape type/Capsule"
|
||||
const OPTION_TYPE_CONVEX_POLYGON = "Shape type/Convex Polygon"
|
||||
const OPTION_TYPE_CONCAVE_POLYGON = "Shape type/Concave Polygon"
|
||||
|
||||
export(Array) var spawns = Array()
|
||||
export(Array, NodePath) var spawns = Array()
|
||||
export(int) var spawn_count = 100
|
||||
export(Vector2) var spawn_randomize
|
||||
|
||||
onready var options = $Options
|
||||
|
||||
@@ -152,31 +153,44 @@ func _start_all_types():
|
||||
|
||||
func _spawn_objects(type_index):
|
||||
var template_node = _object_templates[type_index]
|
||||
|
||||
Log.print_log("* Spawning: " + template_node.name)
|
||||
|
||||
for spawn in spawns:
|
||||
var spawn_parent = get_node(spawn)
|
||||
|
||||
Log.print_log("* Spawning: " + template_node.name)
|
||||
|
||||
for _node_index in range(spawn_count):
|
||||
# Create a new object and shape every time to avoid the overhead of connecting many bodies to the same shape.
|
||||
var collision = template_node.get_child(0)
|
||||
var body = create_rigidbody_collision(collision, false, collision.transform)
|
||||
var collision = template_node.get_child(0).duplicate()
|
||||
if collision is CollisionShape2D:
|
||||
collision.shape = collision.shape.duplicate()
|
||||
var body = template_node.duplicate()
|
||||
body.transform = Transform.IDENTITY
|
||||
if spawn_randomize != Vector2.ZERO:
|
||||
body.position.x = randf() * spawn_randomize.x
|
||||
body.position.y = randf() * spawn_randomize.y
|
||||
var prev_collision = body.get_child(0)
|
||||
body.remove_child(prev_collision)
|
||||
prev_collision.queue_free()
|
||||
body.add_child(collision)
|
||||
body.set_sleeping(true)
|
||||
spawn_parent.add_child(body)
|
||||
|
||||
|
||||
func _activate_objects():
|
||||
Log.print_log("* Activating")
|
||||
|
||||
for spawn in spawns:
|
||||
var spawn_parent = get_node(spawn)
|
||||
|
||||
Log.print_log("* Activating")
|
||||
|
||||
for node_index in range(spawn_parent.get_child_count()):
|
||||
var node = spawn_parent.get_child(node_index) as RigidBody2D
|
||||
node.set_sleeping(false)
|
||||
|
||||
|
||||
func _despawn_objects():
|
||||
Log.print_log("* Despawning")
|
||||
|
||||
for spawn in spawns:
|
||||
var spawn_parent = get_node(spawn)
|
||||
|
||||
@@ -184,8 +198,6 @@ func _despawn_objects():
|
||||
if object_count == 0:
|
||||
continue
|
||||
|
||||
Log.print_log("* Despawning")
|
||||
|
||||
# Remove objects in reversed order to avoid the overhead of changing children index in parent.
|
||||
for object_index in range(object_count):
|
||||
var node = spawn_parent.get_child(object_count - object_index - 1)
|
||||
|
||||
@@ -6,20 +6,20 @@
|
||||
[ext_resource path="res://tests/test_options.tscn" type="PackedScene" id=4]
|
||||
|
||||
[sub_resource type="RectangleShape2D" id=1]
|
||||
extents = Vector2( 20, 30 )
|
||||
extents = Vector2( 10, 15 )
|
||||
|
||||
[sub_resource type="CircleShape2D" id=2]
|
||||
radius = 30.0
|
||||
radius = 15.0
|
||||
|
||||
[sub_resource type="CapsuleShape2D" id=3]
|
||||
radius = 20.0
|
||||
height = 30.0
|
||||
height = 15.0
|
||||
|
||||
[node name="Test" type="Node2D"]
|
||||
script = ExtResource( 2 )
|
||||
_enable_debug_collision = false
|
||||
spawns = [ NodePath("SpawnTarget1") ]
|
||||
spawn_count = 200
|
||||
spawn_count = 500
|
||||
spawn_randomize = Vector2( 10, 10 )
|
||||
|
||||
[node name="Options" parent="." instance=ExtResource( 4 )]
|
||||
|
||||
@@ -53,22 +53,22 @@ shape = SubResource( 3 )
|
||||
position = Vector2( 300, 1024 )
|
||||
|
||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DynamicShapes/RigidBodyConvexPolygon"]
|
||||
scale = Vector2( 0.5, 0.5 )
|
||||
scale = Vector2( 0.25, 0.25 )
|
||||
polygon = PoolVector2Array( 10.7, -54.5, 28.3596, -49.4067, 47.6282, -34.3806, 57.9717, -20.9447, 50.9869, 35.2694, 38.8, 47.5, 15.9852, 54.3613, -14.9507, 54.1845, -36.5, 48.1, -50.4828, 36.33, -58.0115, -20.515, -46.9473, -34.7342, -26.0876, -50.1138, -11.4152, -54.5332 )
|
||||
|
||||
[node name="GodotIcon" type="Sprite" parent="DynamicShapes/RigidBodyConvexPolygon"]
|
||||
self_modulate = Color( 1, 1, 1, 0.392157 )
|
||||
scale = Vector2( 0.5, 0.5 )
|
||||
scale = Vector2( 0.25, 0.25 )
|
||||
texture = ExtResource( 3 )
|
||||
|
||||
[node name="RigidBodyConcavePolygon" type="RigidBody2D" parent="DynamicShapes"]
|
||||
position = Vector2( 400, 1024 )
|
||||
|
||||
[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="DynamicShapes/RigidBodyConcavePolygon"]
|
||||
scale = Vector2( 0.5, 0.5 )
|
||||
scale = Vector2( 0.25, 0.25 )
|
||||
polygon = PoolVector2Array( -5.93512, -43.2195, 6.44476, -42.9695, 11.127, -54.3941, 26.9528, -49.4309, 26.2037, -36.508, 37.5346, -28.1737, 47.6282, -34.3806, 58.0427, -20.9631, 51.113, -10.2876, 50.9869, 35.2694, 38.8, 47.5, 15.9852, 54.3613, -14.9507, 54.1845, -36.5, 48.1, -50.4828, 36.33, -51.3668, -9.98545, -57.8889, -20.5885, -46.9473, -34.7342, -37.4014, -28.547, -26.0876, -37.0323, -26.9862, -49.15, -11.4152, -54.5332 )
|
||||
|
||||
[node name="GodotIcon" type="Sprite" parent="DynamicShapes/RigidBodyConcavePolygon"]
|
||||
self_modulate = Color( 1, 1, 1, 0.392157 )
|
||||
scale = Vector2( 0.5, 0.5 )
|
||||
scale = Vector2( 0.25, 0.25 )
|
||||
texture = ExtResource( 3 )
|
||||
|
||||
@@ -242,10 +242,11 @@ mipmap_policy=1
|
||||
|
||||
quality/intended_usage/framebuffer_allocation=0
|
||||
quality/intended_usage/framebuffer_allocation.mobile=1
|
||||
quality/2d/use_pixel_snap=true
|
||||
2d/snapping/use_gpu_pixel_snap=true
|
||||
quality/filters/anisotropic_filter_level=2
|
||||
quality/filters/use_nearest_mipmap_filter=true
|
||||
quality/depth/hdr=false
|
||||
quality/2d/use_pixel_snap=true
|
||||
|
||||
[texture_import]
|
||||
|
||||
|
||||
@@ -203,8 +203,8 @@ collision_mask = 8
|
||||
[node name="Sprite" type="Sprite" parent="."]
|
||||
position = Vector2( 0, -14 )
|
||||
texture = ExtResource( 2 )
|
||||
vframes = 2
|
||||
hframes = 16
|
||||
vframes = 2
|
||||
frame = 16
|
||||
|
||||
[node name="Gun" type="Position2D" parent="Sprite"]
|
||||
|
||||
@@ -94,5 +94,6 @@ autostart = true
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]
|
||||
anims/destroy = SubResource( 6 )
|
||||
|
||||
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
||||
[connection signal="timeout" from="Timer" to="." method="destroy"]
|
||||
|
||||
@@ -160,4 +160,5 @@ shape = SubResource( 3 )
|
||||
|
||||
[node name="Pickup" type="AudioStreamPlayer2D" parent="."]
|
||||
stream = ExtResource( 3 )
|
||||
|
||||
[connection signal="body_entered" from="." to="." method="_on_body_entered"]
|
||||
|
||||
@@ -84,6 +84,7 @@ margin_right = 105.0
|
||||
margin_bottom = 50.0
|
||||
|
||||
[node name="Tween" type="Tween" parent="."]
|
||||
|
||||
[connection signal="pressed" from="ColorRect/CenterContainer/VBoxContainer/ResumeButton" to="." method="_on_ResumeButton_pressed"]
|
||||
[connection signal="pressed" from="ColorRect/CenterContainer/VBoxContainer/QuitButton" to="." method="_on_QuitButton_pressed"]
|
||||
[connection signal="tween_all_completed" from="Tween" to="." method="_on_Tween_all_completed"]
|
||||
|
||||
@@ -98,6 +98,7 @@ shape = SubResource( 4 )
|
||||
[node name="Camera2D" type="Camera2D" parent="."]
|
||||
offset = Vector2( 320, 200 )
|
||||
current = true
|
||||
|
||||
[connection signal="area_entered" from="Left" to="Left" method="_on_area_entered"]
|
||||
[connection signal="area_entered" from="Right" to="Right" method="_on_area_entered"]
|
||||
[connection signal="area_entered" from="LeftWall" to="LeftWall" method="_on_wall_area_entered"]
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Pong with GDScript"
|
||||
|
||||
@@ -34,4 +34,5 @@ margin_top = 32.0
|
||||
margin_right = 1264.0
|
||||
margin_bottom = 151.0
|
||||
text = "Next"
|
||||
|
||||
[connection signal="button_up" from="Button" to="." method="_on_Button_button_up"]
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="JRPG Demo"
|
||||
|
||||
@@ -78,6 +78,7 @@ margin_bottom = 242.0
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
text = "Flee"
|
||||
|
||||
[connection signal="button_up" from="UI/Buttons/GridContainer/Attack" to="UI" method="_on_Attack_button_up"]
|
||||
[connection signal="button_up" from="UI/Buttons/GridContainer/Defend" to="UI" method="_on_Defend_button_up"]
|
||||
[connection signal="button_up" from="UI/Buttons/GridContainer/Flee" to="UI" method="_on_Flee_button_up"]
|
||||
|
||||
@@ -99,5 +99,6 @@ size_flags_horizontal = 2
|
||||
size_flags_vertical = 4
|
||||
size_flags_stretch_ratio = 0.0
|
||||
text = "Add"
|
||||
|
||||
[connection signal="button_down" from="Panel/Button" to="Panel/VBoxContainer" method="_on_Button_button_down"]
|
||||
[connection signal="button_up" from="Panel/Button" to="Panel/VBoxContainer" method="_on_Button_button_up"]
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Screen Space Shaders"
|
||||
|
||||
@@ -262,5 +262,6 @@ margin_right = 260.0
|
||||
margin_bottom = 28.0
|
||||
size_flags_horizontal = 2
|
||||
size_flags_vertical = 2
|
||||
|
||||
[connection signal="item_selected" from="Picture" to="." method="_on_picture_item_selected"]
|
||||
[connection signal="item_selected" from="Effect" to="." method="_on_effect_item_selected"]
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="2D Shaders for Sprites"
|
||||
|
||||
@@ -381,6 +381,7 @@ size_flags_vertical = 2
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[connection signal="tween_step" from="Tween" to="." method="_on_Tween_tween_step"]
|
||||
[connection signal="value_changed" from="Top/Timeline" to="." method="_on_Timeline_value_changed"]
|
||||
[connection signal="color_changed" from="Controls/ColorFrom/ColorPicker" to="." method="_on_ColorPicker_color_changed"]
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Tween Demo"
|
||||
|
||||
@@ -596,5 +596,4 @@ material/0 = ExtResource( 12 )
|
||||
material/1 = ExtResource( 13 )
|
||||
|
||||
[editable path="KinematicBody/CameraHolder/Weapon/Pistol"]
|
||||
|
||||
[editable path="KinematicBody/GodotBattleBot"]
|
||||
|
||||
@@ -16,6 +16,7 @@ nodes/root_name="WeaponPistol"
|
||||
nodes/root_scale=1.0
|
||||
nodes/custom_script=""
|
||||
nodes/storage=0
|
||||
nodes/use_legacy_names=false
|
||||
materials/location=0
|
||||
materials/storage=0
|
||||
materials/keep_on_reimport=true
|
||||
|
||||
@@ -16,6 +16,7 @@ nodes/root_name="GodotBattleBot"
|
||||
nodes/root_scale=1.0
|
||||
nodes/custom_script=""
|
||||
nodes/storage=0
|
||||
nodes/use_legacy_names=false
|
||||
materials/location=0
|
||||
materials/storage=0
|
||||
materials/keep_on_reimport=true
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="3D Inverse Kinematics"
|
||||
|
||||
@@ -52,7 +52,6 @@ __meta__ = {
|
||||
[node name="GridMap" type="GridMap" parent="."]
|
||||
mesh_library = ExtResource( 1 )
|
||||
cell_size = Vector3( 1, 1, 1 )
|
||||
cell_octant_size = 4
|
||||
data = {
|
||||
"cells": PoolIntArray( 0, 0, 0, 1, 0, 0, 2, 0, 0, 3, 0, 0, 4, 0, 0, 65530, 0, 0, 65531, 0, 0, 65532, 0, 0, 65533, 0, 0, 65534, 0, 0, 65535, 0, 0, 196603, 0, 0, 196604, 0, 0, 524292, 0, 0, 589820, 0, 0, 786432, 0, 0, 851967, 0, 0, 0, 1, 0, 1, 1, 0, 2, 1, 0, 3, 1, 0, 4, 1, 0, 65530, 1, 0, 65531, 1, 0, 65532, 1, 0, 65533, 1, 0, 65534, 1, 0, 65535, 1, 0, 131075, 1, 0, 196603, 1, 0, 196604, 1, 0, 524292, 1, 0, 589820, 1, 0, 786432, 1, 0, 851967, 1, 0, 0, 2, 0, 1, 2, 0, 2, 2, 0, 3, 2, 0, 4, 2, 0, 65530, 2, 0, 65531, 2, 0, 65532, 2, 0, 65533, 2, 0, 65534, 2, 0, 65535, 2, 0, 131075, 2, 0, 196603, 2, 0, 196604, 2, 0, 524292, 2, 0, 589820, 2, 0, 786432, 2, 0, 786433, 2, 0, 851966, 2, 0, 851967, 2, 0, 0, 3, 0, 1, 3, 0, 2, 3, 0, 3, 3, 0, 4, 3, 0, 65530, 3, 0, 65531, 3, 0, 65532, 3, 0, 65533, 3, 0, 65534, 3, 0, 65535, 3, 0, 196603, 3, 0, 524291, 3, 0, 524292, 3, 0, 589820, 3, 0, 786432, 3, 0, 786433, 3, 0, 851966, 3, 0, 851967, 3, 0, 0, 4, 0, 1, 4, 0, 2, 4, 0, 3, 4, 0, 4, 4, 0, 65530, 4, 0, 65531, 4, 0, 65532, 4, 0, 65533, 4, 0, 65534, 4, 0, 65535, 4, 0, 196603, 4, 0, 786432, 4, 0, 851967, 4, 0, 0, 5, 0, 1, 5, 0, 2, 5, 0, 3, 5, 0, 4, 5, 0, 65530, 5, 0, 65531, 5, 0, 65532, 5, 0, 65533, 5, 0, 65534, 5, 0, 65535, 5, 0, 131075, 5, 0, 0, 6, 0, 1, 6, 0, 2, 6, 0, 3, 6, 0, 4, 6, 0, 65530, 6, 0, 65531, 6, 0, 65532, 6, 0, 65533, 6, 0, 65534, 6, 0, 65535, 6, 0, 131075, 6, 0, 196603, 6, 0, 0, 7, 0, 1, 7, 0, 2, 7, 0, 3, 7, 0, 4, 7, 0, 65530, 7, 0, 65531, 7, 0, 65532, 7, 0, 65533, 7, 0, 65534, 7, 0, 65535, 7, 0, 131075, 7, 0, 196603, 7, 0, 0, 8, 0, 1, 8, 0, 2, 8, 0, 3, 8, 0, 4, 8, 0, 65530, 8, 0, 65531, 8, 0, 65532, 8, 0, 65533, 8, 0, 65534, 8, 0, 65535, 8, 0, 131075, 8, 0, 196603, 8, 0, 196604, 8, 0, 0, 9, 0, 1, 9, 0, 2, 9, 0, 3, 9, 0, 4, 9, 0, 65530, 9, 0, 65531, 9, 0, 65532, 9, 0, 65533, 9, 0, 65534, 9, 0, 65535, 9, 0, 131073, 9, 0, 131074, 9, 0, 131075, 9, 0, 196603, 9, 0, 196604, 9, 0, 196605, 9, 0, 196608, 9, 0, 262142, 9, 0, 0, 10, 0, 1, 10, 0, 2, 10, 0, 3, 10, 0, 4, 10, 0, 65530, 10, 0, 65531, 10, 0, 65532, 10, 0, 65533, 10, 0, 65534, 10, 0, 65535, 10, 0, 0, 11, 0, 1, 11, 0, 2, 11, 0, 3, 11, 0, 4, 11, 0, 65530, 11, 0, 65531, 11, 0, 65532, 11, 0, 65533, 11, 0, 65534, 11, 0, 65535, 11, 0, 0, 65532, 0, 1, 65532, 0, 2, 65532, 0, 3, 65532, 0, 4, 65532, 0, 65530, 65532, 0, 65531, 65532, 0, 65532, 65532, 0, 65533, 65532, 0, 65534, 65532, 0, 65535, 65532, 0, 0, 65533, 0, 1, 65533, 0, 2, 65533, 0, 3, 65533, 0, 4, 65533, 0, 65530, 65533, 0, 65531, 65533, 0, 65532, 65533, 0, 65533, 65533, 0, 65534, 65533, 0, 65535, 65533, 0, 262145, 65533, 0, 262146, 65533, 0, 262147, 65533, 0, 589822, 65533, 0, 589823, 65533, 0, 655363, 65533, 0, 655364, 65533, 0, 720897, 65533, 0, 720898, 65533, 0, 786432, 65533, 0, 851967, 65533, 0, 0, 65534, 0, 1, 65534, 0, 2, 65534, 0, 3, 65534, 0, 4, 65534, 0, 65530, 65534, 0, 65531, 65534, 0, 65532, 65534, 0, 65533, 65534, 0, 65534, 65534, 0, 65535, 65534, 0, 65536, 65534, 0, 131071, 65534, 0, 196603, 65534, 0, 196604, 65534, 0, 196605, 65534, 0, 196606, 65534, 0, 196607, 65534, 0, 589822, 65534, 0, 589828, 65534, 0, 786432, 65534, 0, 851967, 65534, 0, 0, 65535, 0, 1, 65535, 0, 2, 65535, 0, 3, 65535, 0, 4, 65535, 0, 65530, 65535, 0, 65531, 65535, 0, 65532, 65535, 0, 65533, 65535, 0, 65534, 65535, 0, 65535, 65535, 0, 196603, 65535, 0, 196604, 65535, 0, 196611, 65535, 0, 589820, 65535, 0, 589821, 65535, 0, 589822, 65535, 0, 589828, 65535, 0, 786432, 65535, 0, 851967, 65535, 0 )
|
||||
}
|
||||
@@ -117,4 +116,5 @@ transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 13.25, 3 )
|
||||
[node name="CollisionShape" type="CollisionShape" parent="Princess"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0 )
|
||||
shape = SubResource( 4 )
|
||||
|
||||
[connection signal="body_entered" from="Princess" to="Cubio" method="_on_tcube_body_entered"]
|
||||
|
||||
@@ -16,6 +16,7 @@ nodes/root_name="Cube"
|
||||
nodes/root_scale=1.0
|
||||
nodes/custom_script=""
|
||||
nodes/storage=0
|
||||
nodes/use_legacy_names=true
|
||||
materials/location=1
|
||||
materials/storage=2
|
||||
materials/keep_on_reimport=true
|
||||
|
||||
@@ -16,6 +16,7 @@ nodes/root_name="Mushroom"
|
||||
nodes/root_scale=1.0
|
||||
nodes/custom_script=""
|
||||
nodes/storage=0
|
||||
nodes/use_legacy_names=true
|
||||
materials/location=1
|
||||
materials/storage=0
|
||||
materials/keep_on_reimport=true
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Kinematic Character 3D"
|
||||
|
||||
@@ -415,6 +415,7 @@ margin_top = -44.0
|
||||
margin_bottom = -30.0
|
||||
size_flags_vertical = 0
|
||||
align = 1
|
||||
|
||||
[connection signal="item_selected" from="UI/Background" to="." method="_on_bg_item_selected"]
|
||||
[connection signal="pressed" from="UI/Previous" to="." method="_on_Previous_pressed"]
|
||||
[connection signal="pressed" from="UI/Next" to="." method="_on_Next_pressed"]
|
||||
|
||||
@@ -16,6 +16,7 @@ nodes/root_name="Scene Root"
|
||||
nodes/root_scale=1.0
|
||||
nodes/custom_script=""
|
||||
nodes/storage=0
|
||||
nodes/use_legacy_names=false
|
||||
materials/location=1
|
||||
materials/storage=2
|
||||
materials/keep_on_reimport=true
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Material Testers"
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="3D Navigation Mesh"
|
||||
|
||||
@@ -192,5 +192,6 @@ max_lines_visible = 5
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[connection signal="pressed" from="PanelLog/ButtonClear" to="PanelLog/ScrollLog/VBoxLog" method="clear"]
|
||||
[connection signal="toggled" from="PanelLog/CheckBoxScroll" to="PanelLog/ScrollLog" method="set_auto_scroll"]
|
||||
|
||||
@@ -88,6 +88,24 @@ toggle_pause={
|
||||
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":80,"unicode":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
character_right={
|
||||
"deadzone": 0.5,
|
||||
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"unicode":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"unicode":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
character_left={
|
||||
"deadzone": 0.5,
|
||||
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"unicode":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"unicode":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
character_jump={
|
||||
"deadzone": 0.5,
|
||||
"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"unicode":0,"echo":false,"script":null)
|
||||
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
[rendering]
|
||||
|
||||
|
||||
@@ -46,23 +46,24 @@ func add_sphere(pos, radius, color):
|
||||
|
||||
|
||||
func add_shape(shape, transform, color):
|
||||
var collision = CollisionShape.new()
|
||||
collision.shape = shape
|
||||
var debug_mesh = shape.get_debug_mesh()
|
||||
|
||||
_drawn_nodes.push_back(collision)
|
||||
add_child(collision)
|
||||
var mesh_instance = MeshInstance.new()
|
||||
mesh_instance.transform = transform
|
||||
mesh_instance.mesh = debug_mesh
|
||||
|
||||
var mesh_instance = collision.get_child(0)
|
||||
var material = SpatialMaterial.new()
|
||||
material.flags_unshaded = true
|
||||
material.albedo_color = color
|
||||
mesh_instance.material_override = material
|
||||
|
||||
collision.global_transform = transform
|
||||
add_child(mesh_instance)
|
||||
_drawn_nodes.push_back(mesh_instance)
|
||||
|
||||
|
||||
func clear_drawn_nodes():
|
||||
for node in _drawn_nodes:
|
||||
remove_child(node)
|
||||
node.queue_free()
|
||||
_drawn_nodes.clear()
|
||||
|
||||
|
||||
@@ -34,6 +34,18 @@ var _tests = [
|
||||
"id": "Functional Tests/Raycasting",
|
||||
"path": "res://tests/functional/test_raycasting.tscn",
|
||||
},
|
||||
{
|
||||
"id": "Functional Tests/RigidBody Impact",
|
||||
"path": "res://tests/functional/test_rigidbody_impact.tscn",
|
||||
},
|
||||
{
|
||||
"id": "Functional Tests/RigidBody Ground Check",
|
||||
"path": "res://tests/functional/test_rigidbody_ground_check.tscn",
|
||||
},
|
||||
{
|
||||
"id": "Functional Tests/Moving Platform",
|
||||
"path": "res://tests/functional/test_moving_platform.tscn",
|
||||
},
|
||||
{
|
||||
"id": "Performance Tests/Broadphase",
|
||||
"path": "res://tests/performance/test_perf_broadphase.tscn",
|
||||
@@ -43,8 +55,8 @@ var _tests = [
|
||||
"path": "res://tests/performance/test_perf_contacts.tscn",
|
||||
},
|
||||
{
|
||||
"id" : "Performance Tests/Contacts Extended",
|
||||
"path" : "res://tests/performance/test_perf_contacts_extended.tscn",
|
||||
"id" : "Performance Tests/Contact Islands",
|
||||
"path" : "res://tests/performance/test_perf_contact_islands.tscn",
|
||||
},
|
||||
]
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
[gd_scene load_steps=11 format=2]
|
||||
[gd_scene load_steps=10 format=2]
|
||||
|
||||
[ext_resource path="res://assets/robot_head/godot3_robot_head_collision.tres" type="Shape" id=1]
|
||||
[ext_resource path="res://tests/functional/test_collision_pairs.gd" type="Script" id=2]
|
||||
[ext_resource path="res://utils/exception_cylinder.gd" type="Script" id=3]
|
||||
[ext_resource path="res://utils/camera_orbit.gd" type="Script" id=4]
|
||||
[ext_resource path="res://tests/test_options.tscn" type="PackedScene" id=5]
|
||||
|
||||
@@ -141,7 +140,6 @@ shape = SubResource( 3 )
|
||||
[node name="RigidBodyCylinder" type="RigidBody" parent="Shapes"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 0 )
|
||||
mode = 3
|
||||
script = ExtResource( 3 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="Shapes/RigidBodyCylinder"]
|
||||
transform = Transform( 0.772741, -0.258819, 2.59821e-08, 0.2, 0.933013, -0.207055, 0.0535898, 0.25, 0.772741, 0, 0, 0 )
|
||||
@@ -165,6 +163,7 @@ shape = ExtResource( 1 )
|
||||
[node name="Camera" type="Camera" parent="."]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 5.8667, 11.8164 )
|
||||
script = ExtResource( 4 )
|
||||
|
||||
[connection signal="value_changed" from="Controls/OffsetX/HSlider" to="." method="set_x_offset"]
|
||||
[connection signal="value_changed" from="Controls/OffsetY/HSlider" to="." method="set_y_offset"]
|
||||
[connection signal="value_changed" from="Controls/OffsetZ/HSlider" to="." method="set_z_offset"]
|
||||
|
||||
137
3d/physics_tests/tests/functional/test_moving_platform.gd
Normal file
137
3d/physics_tests/tests/functional/test_moving_platform.gd
Normal file
@@ -0,0 +1,137 @@
|
||||
extends Test
|
||||
|
||||
|
||||
const OPTION_BODY_TYPE = "Body Type/%s (%d)"
|
||||
|
||||
const OPTION_GRAVITY = "Physics options/Gravity on floor (Kinematic only)"
|
||||
const OPTION_SLOPE = "Physics options/Stop on slope (Kinematic only)"
|
||||
const OPTION_SNAP = "Physics options/Use snap (Kinematic only)"
|
||||
const OPTION_FRICTION = "Physics options/Friction (Rigid only)"
|
||||
const OPTION_ROUGH = "Physics options/Rough (Rigid only)"
|
||||
const OPTION_PROCESS_PHYSICS = "Physics options/AnimationPlayer physics process mode"
|
||||
|
||||
var _gravity = false
|
||||
var _slope = false
|
||||
var _snap = false
|
||||
var _friction = false
|
||||
var _rough = false
|
||||
var _animation_physics = false
|
||||
|
||||
var _body_scene = {}
|
||||
var _key_list = []
|
||||
var _current_body_index = 0
|
||||
var _current_body_key = ""
|
||||
var _current_body = null
|
||||
var _body_type = ["KinematicBody", "RigidBody"]
|
||||
|
||||
|
||||
func _ready():
|
||||
var options = $Options
|
||||
var bodies = $Bodies.get_children()
|
||||
for i in bodies.size():
|
||||
var body = bodies[i]
|
||||
var option_name = OPTION_BODY_TYPE % [body.name, i + 1]
|
||||
options.add_menu_item(option_name)
|
||||
_key_list.append(option_name)
|
||||
_body_scene[option_name] = get_packed_scene(body)
|
||||
body.queue_free()
|
||||
|
||||
options.add_menu_item(OPTION_GRAVITY, true, false)
|
||||
options.add_menu_item(OPTION_SLOPE, true, false)
|
||||
options.add_menu_item(OPTION_SNAP, true, false)
|
||||
options.add_menu_item(OPTION_FRICTION, true, false)
|
||||
options.add_menu_item(OPTION_ROUGH, true, false)
|
||||
options.add_menu_item(OPTION_PROCESS_PHYSICS, true, false)
|
||||
|
||||
options.connect("option_selected", self, "_on_option_selected")
|
||||
options.connect("option_changed", self, "_on_option_changed")
|
||||
|
||||
spawn_body_index(_current_body_index)
|
||||
|
||||
|
||||
func _input(event):
|
||||
var key_event = event as InputEventKey
|
||||
if key_event and not key_event.pressed:
|
||||
var _index = key_event.scancode - KEY_1
|
||||
if _index >= 0 and _index < _key_list.size():
|
||||
spawn_body_index(_index)
|
||||
|
||||
|
||||
func _on_option_selected(option):
|
||||
if _body_scene.has(option):
|
||||
spawn_body_key(option)
|
||||
|
||||
|
||||
func _on_option_changed(option, checked):
|
||||
match option:
|
||||
OPTION_GRAVITY:
|
||||
_gravity = checked
|
||||
spawn_body_index(_current_body_index)
|
||||
OPTION_SLOPE:
|
||||
_slope = checked
|
||||
spawn_body_index(_current_body_index)
|
||||
OPTION_SNAP:
|
||||
_snap = checked
|
||||
spawn_body_index(_current_body_index)
|
||||
OPTION_FRICTION:
|
||||
_friction = checked
|
||||
spawn_body_index(_current_body_index)
|
||||
OPTION_ROUGH:
|
||||
_rough = checked
|
||||
spawn_body_index(_current_body_index)
|
||||
OPTION_PROCESS_PHYSICS:
|
||||
_animation_physics = checked
|
||||
spawn_body_index(_current_body_index)
|
||||
|
||||
|
||||
func spawn_body_index(body_index):
|
||||
if _current_body:
|
||||
_current_body.queue_free()
|
||||
_current_body_index = body_index
|
||||
_current_body_key = _key_list[body_index]
|
||||
var body_parent = $Bodies
|
||||
var body = _body_scene[_key_list[body_index]].instance()
|
||||
body_parent.add_child(body)
|
||||
_current_body = body
|
||||
init_body()
|
||||
|
||||
|
||||
func spawn_body_key(body_key):
|
||||
if _current_body:
|
||||
_current_body.queue_free()
|
||||
_current_body_key = body_key
|
||||
_current_body_index = _key_list.find(body_key)
|
||||
var body_parent = $Bodies
|
||||
var body = _body_scene[body_key].instance()
|
||||
body_parent.add_child(body)
|
||||
_current_body = body
|
||||
init_body()
|
||||
|
||||
|
||||
func init_body():
|
||||
if _current_body is KinematicBody:
|
||||
_current_body._gravity_on_floor = _gravity
|
||||
_current_body._stop_on_slopes = _slope
|
||||
_current_body._use_snap = _snap
|
||||
elif _current_body is RigidBody:
|
||||
_current_body.physics_material_override.rough = _rough
|
||||
_current_body.physics_material_override.friction = 1.0 if _friction else 0.0
|
||||
|
||||
var animation_player = $Platforms/KinematicPlatform/AnimationPlayer
|
||||
animation_player.stop()
|
||||
if _animation_physics:
|
||||
animation_player.playback_process_mode = AnimationPlayer.ANIMATION_PROCESS_PHYSICS
|
||||
else:
|
||||
animation_player.playback_process_mode = AnimationPlayer.ANIMATION_PROCESS_IDLE
|
||||
animation_player.play("Move")
|
||||
|
||||
$LabelBodyType.text = "Body Type: " + _body_type[_current_body_index]
|
||||
|
||||
|
||||
func get_packed_scene(node):
|
||||
node.owner = self
|
||||
for child in node.get_children():
|
||||
child.owner = node
|
||||
var packed_scene = PackedScene.new()
|
||||
packed_scene.pack(node)
|
||||
return packed_scene
|
||||
86
3d/physics_tests/tests/functional/test_moving_platform.tscn
Normal file
86
3d/physics_tests/tests/functional/test_moving_platform.tscn
Normal file
@@ -0,0 +1,86 @@
|
||||
[gd_scene load_steps=9 format=2]
|
||||
|
||||
[ext_resource path="res://utils/camera_orbit.gd" type="Script" id=1]
|
||||
[ext_resource path="res://tests/functional/test_moving_platform.gd" type="Script" id=2]
|
||||
[ext_resource path="res://tests/test_options.tscn" type="PackedScene" id=3]
|
||||
[ext_resource path="res://utils/kinematicbody_physics.gd" type="Script" id=4]
|
||||
|
||||
[sub_resource type="CapsuleShape" id=1]
|
||||
radius = 0.3
|
||||
|
||||
[sub_resource type="PhysicsMaterial" id=2]
|
||||
|
||||
[sub_resource type="BoxShape" id=3]
|
||||
extents = Vector3( 2, 0.2, 1 )
|
||||
|
||||
[sub_resource type="Animation" id=4]
|
||||
length = 4.0
|
||||
tracks/0/type = "bezier"
|
||||
tracks/0/path = NodePath(".:translation:x")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/keys = {
|
||||
"points": PoolRealArray( -7, -0.25, 0, 0.25, 0, -7, -0.25, 0, 0.245766, 0.531658, 6, -0.132614, -0.374802, 0.25, 0 ),
|
||||
"times": PoolRealArray( 0, 0.5, 4 )
|
||||
}
|
||||
|
||||
[node name="Test" type="Spatial"]
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="LabelBodyType" type="Label" parent="."]
|
||||
margin_left = 14.0
|
||||
margin_top = 78.0
|
||||
margin_right = 171.0
|
||||
margin_bottom = 92.0
|
||||
text = "Body Type: "
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="Options" parent="." instance=ExtResource( 3 )]
|
||||
|
||||
[node name="Bodies" type="Spatial" parent="."]
|
||||
|
||||
[node name="KinematicBody" type="KinematicBody" parent="Bodies"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -7, -1.95, 0 )
|
||||
collision_layer = 2
|
||||
script = ExtResource( 4 )
|
||||
_stop_on_slopes = true
|
||||
_use_snap = true
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="Bodies/KinematicBody"]
|
||||
transform = Transform( 1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0.8, 0 )
|
||||
shape = SubResource( 1 )
|
||||
|
||||
[node name="RigidBody" type="RigidBody" parent="Bodies"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -7, -1.95, 0 )
|
||||
collision_layer = 4
|
||||
physics_material_override = SubResource( 2 )
|
||||
axis_lock_angular_x = true
|
||||
axis_lock_angular_y = true
|
||||
axis_lock_angular_z = true
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="Bodies/RigidBody"]
|
||||
transform = Transform( 1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0.8, 0 )
|
||||
shape = SubResource( 1 )
|
||||
|
||||
[node name="Platforms" type="Spatial" parent="."]
|
||||
|
||||
[node name="KinematicPlatform" type="KinematicBody" parent="Platforms"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -7, -2, 0 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="Platforms/KinematicPlatform"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.2, 0 )
|
||||
shape = SubResource( 3 )
|
||||
|
||||
[node name="AnimationPlayer" type="AnimationPlayer" parent="Platforms/KinematicPlatform"]
|
||||
anims/Move = SubResource( 4 )
|
||||
|
||||
[node name="Camera" type="Camera" parent="."]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 10 )
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="OmniLight" type="OmniLight" parent="Camera"]
|
||||
omni_range = 50.0
|
||||
@@ -1,8 +1,7 @@
|
||||
[gd_scene load_steps=10 format=2]
|
||||
[gd_scene load_steps=9 format=2]
|
||||
|
||||
[ext_resource path="res://assets/robot_head/godot3_robot_head_collision.tres" type="Shape" id=1]
|
||||
[ext_resource path="res://tests/functional/test_raycasting.gd" type="Script" id=2]
|
||||
[ext_resource path="res://utils/exception_cylinder.gd" type="Script" id=3]
|
||||
[ext_resource path="res://utils/camera_orbit.gd" type="Script" id=4]
|
||||
|
||||
[sub_resource type="BoxShape" id=1]
|
||||
@@ -48,7 +47,6 @@ shape = SubResource( 3 )
|
||||
[node name="RigidBodyCylinder" type="RigidBody" parent="Shapes"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 0 )
|
||||
mode = 3
|
||||
script = ExtResource( 3 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="Shapes/RigidBodyCylinder"]
|
||||
transform = Transform( 0.772741, -0.258819, 2.59821e-08, 0.2, 0.933013, -0.207055, 0.0535898, 0.25, 0.772741, 0, 0, 0 )
|
||||
|
||||
@@ -0,0 +1,159 @@
|
||||
[gd_scene load_steps=25 format=2]
|
||||
|
||||
[ext_resource path="res://utils/rigidbody_ground_check.gd" type="Script" id=1]
|
||||
[ext_resource path="res://test.gd" type="Script" id=2]
|
||||
[ext_resource path="res://tests/static_scene_plane.tscn" type="PackedScene" id=3]
|
||||
[ext_resource path="res://utils/camera_orbit.gd" type="Script" id=4]
|
||||
|
||||
[sub_resource type="PhysicsMaterial" id=1]
|
||||
friction = 0.0
|
||||
|
||||
[sub_resource type="BoxShape" id=2]
|
||||
|
||||
[sub_resource type="CubeMesh" id=3]
|
||||
|
||||
[sub_resource type="SpatialMaterial" id=4]
|
||||
|
||||
[sub_resource type="PhysicsMaterial" id=5]
|
||||
friction = 0.0
|
||||
|
||||
[sub_resource type="CapsuleShape" id=6]
|
||||
|
||||
[sub_resource type="CapsuleMesh" id=7]
|
||||
|
||||
[sub_resource type="SpatialMaterial" id=8]
|
||||
|
||||
[sub_resource type="PhysicsMaterial" id=9]
|
||||
friction = 0.0
|
||||
|
||||
[sub_resource type="CylinderShape" id=10]
|
||||
|
||||
[sub_resource type="CylinderMesh" id=11]
|
||||
|
||||
[sub_resource type="SpatialMaterial" id=12]
|
||||
|
||||
[sub_resource type="PhysicsMaterial" id=13]
|
||||
friction = 0.0
|
||||
|
||||
[sub_resource type="ConvexPolygonShape" id=14]
|
||||
points = PoolVector3Array( -0.7, 0, -0.7, -0.3, 0, 0.8, 0.8, 0, -0.3, 0, -1, 0 )
|
||||
|
||||
[sub_resource type="ArrayMesh" id=15]
|
||||
surfaces/0 = {
|
||||
"aabb": AABB( -0.7, -1, -0.7, 1.5, 1.00001, 1.5 ),
|
||||
"array_data": PoolByteArray( 51, 51, 51, 191, 0, 0, 0, 0, 51, 51, 51, 191, 167, 0, 167, 0, 154, 153, 153, 190, 0, 0, 0, 0, 205, 204, 76, 63, 212, 0, 118, 0, 205, 204, 76, 63, 0, 0, 0, 0, 154, 153, 153, 190, 118, 0, 212, 0, 0, 0, 0, 0, 0, 0, 128, 191, 0, 0, 0, 0, 0, 129, 0, 0 ),
|
||||
"array_index_data": PoolByteArray( 0, 0, 1, 0, 3, 0, 1, 0, 2, 0, 3, 0, 2, 0, 0, 0, 3, 0, 2, 0, 1, 0, 0, 0 ),
|
||||
"blend_shape_data": [ ],
|
||||
"format": 97539,
|
||||
"index_count": 12,
|
||||
"primitive": 4,
|
||||
"skeleton_aabb": [ ],
|
||||
"vertex_count": 4
|
||||
}
|
||||
|
||||
[sub_resource type="SpatialMaterial" id=16]
|
||||
|
||||
[sub_resource type="PhysicsMaterial" id=17]
|
||||
friction = 0.0
|
||||
|
||||
[sub_resource type="SphereShape" id=18]
|
||||
|
||||
[sub_resource type="SphereMesh" id=19]
|
||||
|
||||
[sub_resource type="SpatialMaterial" id=20]
|
||||
|
||||
[node name="Test" type="Spatial"]
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="DynamicShapes" type="Spatial" parent="."]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9.35591, 0 )
|
||||
|
||||
[node name="RigidBodyBox" type="RigidBody" parent="DynamicShapes"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 0 )
|
||||
physics_material_override = SubResource( 1 )
|
||||
axis_lock_angular_x = true
|
||||
axis_lock_angular_y = true
|
||||
axis_lock_angular_z = true
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyBox"]
|
||||
transform = Transform( 0.6, 0, 0, 0, 1, 0, 0, 0, 0.6, 0, 0, 0 )
|
||||
shape = SubResource( 2 )
|
||||
|
||||
[node name="MeshInstance" type="MeshInstance" parent="DynamicShapes/RigidBodyBox/CollisionShape"]
|
||||
mesh = SubResource( 3 )
|
||||
material/0 = SubResource( 4 )
|
||||
|
||||
[node name="RigidBodyCapsule" type="RigidBody" parent="DynamicShapes"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 0 )
|
||||
physics_material_override = SubResource( 5 )
|
||||
axis_lock_angular_x = true
|
||||
axis_lock_angular_y = true
|
||||
axis_lock_angular_z = true
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyCapsule"]
|
||||
transform = Transform( 0.8, 0, 0, 0, -3.49691e-08, -0.8, 0, 0.8, -3.49691e-08, 0, 0, 0 )
|
||||
shape = SubResource( 6 )
|
||||
|
||||
[node name="MeshInstance" type="MeshInstance" parent="DynamicShapes/RigidBodyCapsule/CollisionShape"]
|
||||
mesh = SubResource( 7 )
|
||||
material/0 = SubResource( 8 )
|
||||
|
||||
[node name="RigidBodyCylinder" type="RigidBody" parent="DynamicShapes"]
|
||||
physics_material_override = SubResource( 9 )
|
||||
axis_lock_angular_x = true
|
||||
axis_lock_angular_y = true
|
||||
axis_lock_angular_z = true
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyCylinder"]
|
||||
transform = Transform( 0.8, 0, 0, 0, 1, 0, 0, 0, 0.8, 0, 0, 0 )
|
||||
shape = SubResource( 10 )
|
||||
|
||||
[node name="MeshInstance" type="MeshInstance" parent="DynamicShapes/RigidBodyCylinder/CollisionShape"]
|
||||
mesh = SubResource( 11 )
|
||||
material/0 = SubResource( 12 )
|
||||
|
||||
[node name="RigidBodyConvex" type="RigidBody" parent="DynamicShapes"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0.974548, 0 )
|
||||
physics_material_override = SubResource( 13 )
|
||||
axis_lock_angular_x = true
|
||||
axis_lock_angular_y = true
|
||||
axis_lock_angular_z = true
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyConvex"]
|
||||
transform = Transform( 1.5, 0, 0, 0, 2, 0, 0, 0, 1.5, 0, 0, 0 )
|
||||
shape = SubResource( 14 )
|
||||
|
||||
[node name="MeshInstance" type="MeshInstance" parent="DynamicShapes/RigidBodyConvex/CollisionShape"]
|
||||
mesh = SubResource( 15 )
|
||||
material/0 = SubResource( 16 )
|
||||
|
||||
[node name="RigidBodySphere" type="RigidBody" parent="DynamicShapes"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 0 )
|
||||
physics_material_override = SubResource( 17 )
|
||||
axis_lock_angular_x = true
|
||||
axis_lock_angular_y = true
|
||||
axis_lock_angular_z = true
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodySphere"]
|
||||
transform = Transform( 0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 0, 0, 0 )
|
||||
shape = SubResource( 18 )
|
||||
|
||||
[node name="MeshInstance" type="MeshInstance" parent="DynamicShapes/RigidBodySphere/CollisionShape"]
|
||||
mesh = SubResource( 19 )
|
||||
material/0 = SubResource( 20 )
|
||||
|
||||
[node name="StaticBodyPlane" parent="." instance=ExtResource( 3 )]
|
||||
collision_layer = 2
|
||||
collision_mask = 3
|
||||
|
||||
[node name="Camera" type="Camera" parent="."]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.604, 22.124 )
|
||||
script = ExtResource( 4 )
|
||||
|
||||
[node name="OmniLight" type="OmniLight" parent="Camera"]
|
||||
omni_range = 50.0
|
||||
87
3d/physics_tests/tests/functional/test_rigidbody_impact.tscn
Normal file
87
3d/physics_tests/tests/functional/test_rigidbody_impact.tscn
Normal file
@@ -0,0 +1,87 @@
|
||||
[gd_scene load_steps=10 format=2]
|
||||
|
||||
[ext_resource path="res://utils/rigidbody_pick.gd" type="Script" id=1]
|
||||
[ext_resource path="res://test.gd" type="Script" id=2]
|
||||
[ext_resource path="res://tests/static_scene_plane.tscn" type="PackedScene" id=3]
|
||||
[ext_resource path="res://utils/camera_orbit.gd" type="Script" id=4]
|
||||
|
||||
[sub_resource type="BoxShape" id=1]
|
||||
|
||||
[sub_resource type="CapsuleShape" id=2]
|
||||
|
||||
[sub_resource type="CylinderShape" id=3]
|
||||
|
||||
[sub_resource type="ConvexPolygonShape" id=4]
|
||||
points = PoolVector3Array( -0.7, 0, -0.7, -0.3, 0, 0.8, 0.8, 0, -0.3, 0, -1, 0 )
|
||||
|
||||
[sub_resource type="SphereShape" id=5]
|
||||
|
||||
[node name="Test" type="Spatial"]
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="DynamicShapes" type="Spatial" parent="."]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9.35591, 0 )
|
||||
|
||||
[node name="RigidBodyBox" type="RigidBody" parent="DynamicShapes"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 0 )
|
||||
axis_lock_angular_x = true
|
||||
axis_lock_angular_y = true
|
||||
axis_lock_angular_z = true
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyBox"]
|
||||
transform = Transform( 0.6, 0, 0, 0, 1, 0, 0, 0, 0.6, 0, 0, 0 )
|
||||
shape = SubResource( 1 )
|
||||
|
||||
[node name="RigidBodyCapsule" type="RigidBody" parent="DynamicShapes"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 0 )
|
||||
axis_lock_angular_x = true
|
||||
axis_lock_angular_y = true
|
||||
axis_lock_angular_z = true
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyCapsule"]
|
||||
transform = Transform( 0.8, 0, 0, 0, -3.49691e-08, -0.8, 0, 0.8, -3.49691e-08, 0, 0, 0 )
|
||||
shape = SubResource( 2 )
|
||||
|
||||
[node name="RigidBodyCylinder" type="RigidBody" parent="DynamicShapes"]
|
||||
axis_lock_angular_x = true
|
||||
axis_lock_angular_y = true
|
||||
axis_lock_angular_z = true
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyCylinder"]
|
||||
transform = Transform( 0.8, 0, 0, 0, 1, 0, 0, 0, 0.8, 0, 0, 0 )
|
||||
shape = SubResource( 3 )
|
||||
|
||||
[node name="RigidBodyConvex" type="RigidBody" parent="DynamicShapes"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0.974548, 0 )
|
||||
axis_lock_angular_x = true
|
||||
axis_lock_angular_y = true
|
||||
axis_lock_angular_z = true
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyConvex"]
|
||||
transform = Transform( 1.5, 0, 0, 0, 2, 0, 0, 0, 1.5, 0, 0, 0 )
|
||||
shape = SubResource( 4 )
|
||||
|
||||
[node name="RigidBodySphere" type="RigidBody" parent="DynamicShapes"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 0 )
|
||||
axis_lock_angular_x = true
|
||||
axis_lock_angular_y = true
|
||||
axis_lock_angular_z = true
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodySphere"]
|
||||
transform = Transform( 0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 0, 0, 0 )
|
||||
shape = SubResource( 5 )
|
||||
|
||||
[node name="StaticBodyPlane" parent="." instance=ExtResource( 3 )]
|
||||
|
||||
[node name="Camera" type="Camera" parent="."]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3.604, 22.124 )
|
||||
fov = 35.0
|
||||
script = ExtResource( 4 )
|
||||
|
||||
[node name="OmniLight" type="OmniLight" parent="Camera"]
|
||||
omni_range = 50.0
|
||||
@@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=10 format=2]
|
||||
|
||||
[ext_resource path="res://utils/rigidbody_pick.gd" type="Script" id=1]
|
||||
[ext_resource path="res://test.gd" type="Script" id=2]
|
||||
[ext_resource path="res://utils/exception_cylinder.gd" type="Script" id=3]
|
||||
[ext_resource path="res://utils/camera_orbit.gd" type="Script" id=4]
|
||||
[ext_resource path="res://tests/static_scene.tscn" type="PackedScene" id=6]
|
||||
|
||||
@@ -24,6 +24,7 @@ transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9.35591, 0 )
|
||||
|
||||
[node name="RigidBodyBox" type="RigidBody" parent="DynamicShapes"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -6, 0, 0 )
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyBox"]
|
||||
transform = Transform( 0.579556, 0.0885213, 0.145926, 0, 0.939693, -0.205212, -0.155291, 0.330366, 0.544604, 0, 0, 0 )
|
||||
@@ -31,13 +32,14 @@ shape = SubResource( 1 )
|
||||
|
||||
[node name="RigidBodyCapsule" type="RigidBody" parent="DynamicShapes"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 0, 0 )
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyCapsule"]
|
||||
transform = Transform( 0.8, 0, 0, 0, -1.30337e-07, -0.8, 0, 0.8, -1.30337e-07, 0, 0, 0 )
|
||||
shape = SubResource( 2 )
|
||||
|
||||
[node name="RigidBodyCylinder" type="RigidBody" parent="DynamicShapes"]
|
||||
script = ExtResource( 3 )
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyCylinder"]
|
||||
transform = Transform( 0.772741, -0.258819, 2.59821e-08, 0.2, 0.933013, -0.207055, 0.0535898, 0.25, 0.772741, 0, 0, 0 )
|
||||
@@ -45,6 +47,7 @@ shape = SubResource( 3 )
|
||||
|
||||
[node name="RigidBodyConvex" type="RigidBody" parent="DynamicShapes"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 3, 0, 0 )
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyConvex"]
|
||||
transform = Transform( 1.5, 0, 0, 0, 1.93185, -0.388229, 0, 0.517638, 1.44889, 0, 0, 0 )
|
||||
@@ -52,6 +55,7 @@ shape = SubResource( 4 )
|
||||
|
||||
[node name="RigidBodySphere" type="RigidBody" parent="DynamicShapes"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 0 )
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodySphere"]
|
||||
transform = Transform( 0.8, 0, 0, 0, 0.8, 0, 0, 0, 0.8, 0, 0, 0 )
|
||||
|
||||
@@ -1,21 +1,26 @@
|
||||
[gd_scene load_steps=12 format=2]
|
||||
[gd_scene load_steps=11 format=2]
|
||||
|
||||
[ext_resource path="res://tests/performance/test_perf_contacts.gd" type="Script" id=1]
|
||||
[ext_resource path="res://utils/exception_cylinder.gd" type="Script" id=2]
|
||||
[ext_resource path="res://utils/camera_orbit.gd" type="Script" id=3]
|
||||
[ext_resource path="res://tests/test_options.tscn" type="PackedScene" id=4]
|
||||
[ext_resource path="res://tests/static_scene.tscn" type="PackedScene" id=5]
|
||||
|
||||
[sub_resource type="BoxShape" id=1]
|
||||
extents = Vector3( 0.5, 0.5, 0.5 )
|
||||
|
||||
[sub_resource type="CapsuleShape" id=2]
|
||||
radius = 0.5
|
||||
height = 0.5
|
||||
|
||||
[sub_resource type="CylinderShape" id=3]
|
||||
radius = 0.5
|
||||
height = 1.0
|
||||
|
||||
[sub_resource type="ConvexPolygonShape" id=4]
|
||||
points = PoolVector3Array( -0.7, 0, -0.7, -0.3, 0, 0.8, 0.8, 0, -0.3, 0, -1, 0 )
|
||||
|
||||
[sub_resource type="SphereShape" id=5]
|
||||
radius = 0.5
|
||||
|
||||
[sub_resource type="PlaneShape" id=6]
|
||||
|
||||
@@ -23,7 +28,8 @@ points = PoolVector3Array( -0.7, 0, -0.7, -0.3, 0, 0.8, 0.8, 0, -0.3, 0, -1, 0 )
|
||||
script = ExtResource( 1 )
|
||||
_enable_debug_collision = false
|
||||
spawns = [ "SpawnTarget1", "SpawnTarget2", "SpawnTarget3", "SpawnTarget4", "SpawnTarget5", "SpawnTarget6", "SpawnTarget7", "SpawnTarget8", "SpawnTarget9", "SpawnTarget10", "SpawnTarget11", "SpawnTarget12", "SpawnTarget13", "SpawnTarget14", "SpawnTarget15", "SpawnTarget16" ]
|
||||
spawn_count = 50
|
||||
spawn_count = 200
|
||||
spawn_randomize = Vector3( 0.2, 0.2, 0.2 )
|
||||
|
||||
[node name="Options" parent="." instance=ExtResource( 4 )]
|
||||
|
||||
@@ -91,7 +97,6 @@ shape = SubResource( 2 )
|
||||
|
||||
[node name="RigidBodyCylinder" type="RigidBody" parent="DynamicShapes"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 0 )
|
||||
script = ExtResource( 2 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyCylinder"]
|
||||
shape = SubResource( 3 )
|
||||
@@ -100,6 +105,7 @@ shape = SubResource( 3 )
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 6, 0, 0 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyConvex"]
|
||||
transform = Transform( 0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0 )
|
||||
shape = SubResource( 4 )
|
||||
|
||||
[node name="RigidBodySphere" type="RigidBody" parent="DynamicShapes"]
|
||||
@@ -8,8 +8,9 @@ const OPTION_TYPE_CAPSULE = "Shape type/Capsule"
|
||||
const OPTION_TYPE_CYLINDER = "Shape type/Cylinder"
|
||||
const OPTION_TYPE_CONVEX = "Shape type/Convex"
|
||||
|
||||
export(Array) var spawns = Array()
|
||||
export(Array, NodePath) var spawns = Array()
|
||||
export(int) var spawn_count = 100
|
||||
export(Vector3) var spawn_randomize
|
||||
|
||||
var _object_templates = []
|
||||
|
||||
@@ -148,37 +149,47 @@ func _start_all_types():
|
||||
|
||||
func _spawn_objects(type_index):
|
||||
var template_node = _object_templates[type_index]
|
||||
|
||||
Log.print_log("* Spawning: " + template_node.name)
|
||||
|
||||
for spawn in spawns:
|
||||
var spawn_parent = get_node(spawn)
|
||||
|
||||
Log.print_log("* Spawning: " + template_node.name)
|
||||
|
||||
for _node_index in range(spawn_count):
|
||||
# Create a new object and shape every time to avoid the overhead of connecting many bodies to the same shape.
|
||||
var collision = template_node.get_child(0) as CollisionShape
|
||||
var shape = collision.shape.duplicate()
|
||||
var body = create_rigidbody(shape, false, collision.transform)
|
||||
var collision = template_node.get_child(0).duplicate()
|
||||
collision.shape = collision.shape.duplicate()
|
||||
var body = template_node.duplicate()
|
||||
body.transform = Transform.IDENTITY
|
||||
if spawn_randomize != Vector3.ZERO:
|
||||
body.transform.origin.x = randf() * spawn_randomize.x
|
||||
body.transform.origin.y = randf() * spawn_randomize.y
|
||||
body.transform.origin.z = randf() * spawn_randomize.z
|
||||
var prev_collision = body.get_child(0)
|
||||
body.remove_child(prev_collision)
|
||||
prev_collision.queue_free()
|
||||
body.add_child(collision)
|
||||
body.set_sleeping(true)
|
||||
spawn_parent.add_child(body)
|
||||
|
||||
|
||||
func _activate_objects():
|
||||
Log.print_log("* Activating")
|
||||
|
||||
for spawn in spawns:
|
||||
var spawn_parent = get_node(spawn)
|
||||
|
||||
Log.print_log("* Activating")
|
||||
|
||||
for node_index in range(spawn_parent.get_child_count()):
|
||||
var node = spawn_parent.get_child(node_index) as RigidBody
|
||||
node.set_sleeping(false)
|
||||
|
||||
|
||||
func _despawn_objects():
|
||||
Log.print_log("* Despawning")
|
||||
|
||||
for spawn in spawns:
|
||||
var spawn_parent = get_node(spawn)
|
||||
|
||||
Log.print_log("* Despawning")
|
||||
|
||||
# Remove objects in reversed order to avoid the overhead of changing children index in parent.
|
||||
var object_count = spawn_parent.get_child_count()
|
||||
for object_index in range(object_count):
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
[gd_scene load_steps=12 format=2]
|
||||
[gd_scene load_steps=11 format=2]
|
||||
|
||||
[ext_resource path="res://tests/static_scene.tscn" type="PackedScene" id=1]
|
||||
[ext_resource path="res://tests/performance/test_perf_contacts.gd" type="Script" id=2]
|
||||
[ext_resource path="res://utils/exception_cylinder.gd" type="Script" id=3]
|
||||
[ext_resource path="res://tests/test_options.tscn" type="PackedScene" id=4]
|
||||
[ext_resource path="res://utils/camera_orbit.gd" type="Script" id=5]
|
||||
|
||||
@@ -24,6 +23,7 @@ script = ExtResource( 2 )
|
||||
_enable_debug_collision = false
|
||||
spawns = [ "SpawnTarget1" ]
|
||||
spawn_count = 500
|
||||
spawn_randomize = Vector3( 0.2, 0.2, 0.2 )
|
||||
|
||||
[node name="Options" parent="." instance=ExtResource( 4 )]
|
||||
|
||||
@@ -46,7 +46,6 @@ shape = SubResource( 2 )
|
||||
|
||||
[node name="RigidBodyCylinder" type="RigidBody" parent="DynamicShapes"]
|
||||
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0, 0 )
|
||||
script = ExtResource( 3 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="DynamicShapes/RigidBodyCylinder"]
|
||||
shape = SubResource( 3 )
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
extends Node
|
||||
|
||||
|
||||
func _enter_tree():
|
||||
if System.get_physics_engine() == System.PhysicsEngine.GODOT_PHYSICS:
|
||||
Log.print_error("Cylinder shapes not supported, removing '%s'." % name)
|
||||
get_parent().remove_child(self)
|
||||
queue_free()
|
||||
23
3d/physics_tests/utils/kinematicbody_physics.gd
Normal file
23
3d/physics_tests/utils/kinematicbody_physics.gd
Normal file
@@ -0,0 +1,23 @@
|
||||
extends KinematicBody
|
||||
|
||||
|
||||
export(bool) var _gravity_on_floor = true
|
||||
export(bool) var _stop_on_slopes = false
|
||||
export(bool) var _use_snap = false
|
||||
|
||||
var _gravity = 20.0
|
||||
var _velocity = Vector3.ZERO
|
||||
|
||||
|
||||
func _physics_process(delta):
|
||||
var snap = Vector3.DOWN * 0.2
|
||||
if is_on_floor() and _gravity_on_floor:
|
||||
_velocity += Vector3.DOWN * _gravity * delta
|
||||
else:
|
||||
_velocity += Vector3.DOWN * _gravity * delta
|
||||
snap = Vector3.ZERO
|
||||
|
||||
if _use_snap:
|
||||
_velocity = move_and_slide_with_snap(_velocity, snap, Vector3.UP, _stop_on_slopes)
|
||||
else:
|
||||
_velocity = move_and_slide(_velocity, Vector3.UP, _stop_on_slopes)
|
||||
46
3d/physics_tests/utils/rigidbody_ground_check.gd
Normal file
46
3d/physics_tests/utils/rigidbody_ground_check.gd
Normal file
@@ -0,0 +1,46 @@
|
||||
extends RigidBody
|
||||
|
||||
|
||||
onready var _forward = - transform.basis.z
|
||||
onready var _collision_shape = $CollisionShape
|
||||
onready var _material = $CollisionShape/MeshInstance.get_surface_material(0)
|
||||
|
||||
var _dir = 1.0
|
||||
var _distance = 10.0
|
||||
var _walk_spd = 100.0
|
||||
var _acceleration = 22.0
|
||||
var _gravity_impulse = 30.0
|
||||
var _is_on_floor = false
|
||||
|
||||
|
||||
func _process(_delta):
|
||||
if _is_on_floor:
|
||||
_material.albedo_color = Color.white
|
||||
else:
|
||||
_material.albedo_color = Color.red
|
||||
|
||||
|
||||
func _integrate_forces(state):
|
||||
var delta = state.step
|
||||
var velocity = (_forward * _dir * _walk_spd * delta) + (state.linear_velocity * Vector3.UP)
|
||||
state.linear_velocity = state.linear_velocity.move_toward(velocity, _acceleration * delta)
|
||||
|
||||
if state.transform.origin.z < -_distance:
|
||||
_dir = -1
|
||||
if state.transform.origin.z > _distance:
|
||||
_dir = 1
|
||||
|
||||
ground_check()
|
||||
|
||||
|
||||
func ground_check():
|
||||
var space_state = get_world().direct_space_state
|
||||
var shape = PhysicsShapeQueryParameters.new()
|
||||
shape.transform = _collision_shape.global_transform
|
||||
shape.shape_rid = _collision_shape.shape.get_rid()
|
||||
shape.collision_mask = 2
|
||||
var result = space_state.get_rest_info(shape)
|
||||
if result:
|
||||
_is_on_floor = true
|
||||
else:
|
||||
_is_on_floor = false
|
||||
@@ -47,7 +47,8 @@ func _physics_process(delta):
|
||||
world_delta = camera_basis * world_delta
|
||||
|
||||
var camera_dist = camera.global_transform.origin.distance_to(global_transform.origin)
|
||||
world_delta *= CAMERA_DISTANCE_COEFFICIENT * camera_dist
|
||||
var fov_coefficient = camera.fov / 70.0
|
||||
world_delta *= CAMERA_DISTANCE_COEFFICIENT * camera_dist * fov_coefficient
|
||||
|
||||
if mode == MODE_STATIC:
|
||||
global_transform.origin += world_delta
|
||||
|
||||
@@ -156,4 +156,5 @@ explosiveness = 1.0
|
||||
visibility_aabb = AABB( -4.12919, -4, -4, 8.25837, 8, 8 )
|
||||
process_material = SubResource( 8 )
|
||||
draw_pass_1 = SubResource( 10 )
|
||||
|
||||
[connection signal="body_entered" from="." to="." method="_on_coin_body_enter"]
|
||||
|
||||
@@ -7,7 +7,6 @@ room_size = 0.33
|
||||
damping = 0.32
|
||||
hipass = 0.9
|
||||
dry = 0.0
|
||||
wet = 1.0
|
||||
|
||||
[sub_resource type="AudioEffectAmplify" id=2]
|
||||
resource_name = "Amplify"
|
||||
@@ -19,7 +18,7 @@ room_size = 0.89
|
||||
damping = 0.17
|
||||
hipass = 0.08
|
||||
dry = 0.0
|
||||
wet = 0.36
|
||||
wet = 0.2
|
||||
|
||||
[resource]
|
||||
bus/1/name = "Reverb Small"
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Platformer 3D"
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -48,6 +48,7 @@ margin_bottom = 400.0
|
||||
size_flags_horizontal = 2
|
||||
size_flags_vertical = 2
|
||||
icon = ExtResource( 4 )
|
||||
|
||||
[connection signal="pressed" from="MiniVan" to="." method="_on_MiniVan_pressed"]
|
||||
[connection signal="pressed" from="TrailerTruck" to="." method="_on_TrailerTruck_pressed"]
|
||||
[connection signal="pressed" from="TowTruck" to="." method="_on_TowTruck_pressed"]
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Truck Town"
|
||||
|
||||
@@ -46,4 +46,5 @@ text = "<- Back!"
|
||||
[node name="DirectionalLight" type="DirectionalLight" parent="."]
|
||||
transform = Transform( 1, 0, 0, 0, -0.629475, 0.777021, 0, -0.777021, -0.629475, 0, 24.4076, 0 )
|
||||
shadow_enabled = true
|
||||
|
||||
[connection signal="pressed" from="InstancePos/Panel/Spedometer" to="InstancePos/Panel/Spedometer" method="_on_Spedometer_pressed"]
|
||||
|
||||
@@ -127,6 +127,7 @@ __meta__ = {
|
||||
}
|
||||
|
||||
[node name="Options" parent="." instance=ExtResource( 3 )]
|
||||
|
||||
[connection signal="pressed" from="Pause/ButtonHolder/MainButtons/Resume" to="." method="_on_Resume_pressed"]
|
||||
[connection signal="pressed" from="Pause/ButtonHolder/MainButtons/Options" to="." method="_on_Options_pressed"]
|
||||
[connection signal="pressed" from="Pause/ButtonHolder/MainButtons/MainMenu" to="." method="_on_MainMenu_pressed"]
|
||||
|
||||
@@ -228,6 +228,7 @@ __meta__ = {
|
||||
}
|
||||
|
||||
[node name="Options" parent="." instance=ExtResource( 5 )]
|
||||
|
||||
[connection signal="pressed" from="TitleScreen/ButtonHolder/MainButtons/Start" to="." method="_on_Start_pressed"]
|
||||
[connection signal="pressed" from="TitleScreen/ButtonHolder/MainButtons/Options" to="." method="_on_Options_pressed"]
|
||||
[connection signal="pressed" from="TitleScreen/ButtonHolder/MainButtons/Exit" to="." method="_on_Exit_pressed"]
|
||||
|
||||
@@ -107,6 +107,7 @@ valign = 1
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[connection signal="value_changed" from="VBoxContainer/OptionsBackground/OptionButtons/RenderDistanceSlider" to="VBoxContainer/OptionsBackground/OptionButtons" method="_on_RenderDistanceSlider_value_changed"]
|
||||
[connection signal="pressed" from="VBoxContainer/OptionsBackground/OptionButtons/FogCheckBox" to="VBoxContainer/OptionsBackground/OptionButtons" method="_on_FogCheckBox_pressed"]
|
||||
[connection signal="pressed" from="VBoxContainer/HBoxContainer/Back" to="." method="_on_Back_pressed"]
|
||||
|
||||
@@ -13,6 +13,7 @@ atlas = ExtResource( 2 )
|
||||
region = Rect2( 0, 0, 64, 64 )
|
||||
|
||||
[node name="Player" type="KinematicBody"]
|
||||
collision_layer = 0
|
||||
script = ExtResource( 1 )
|
||||
|
||||
[node name="CollisionShape" type="CollisionShape" parent="."]
|
||||
|
||||
@@ -160,8 +160,8 @@ common/physics_fps=120
|
||||
quality/driver/driver_name="GLES2"
|
||||
vram_compression/import_etc=true
|
||||
vram_compression/import_etc2=false
|
||||
quality/filters/anisotropic_filter_level=16
|
||||
quality/filters/msaa=2
|
||||
environment/default_environment="res://default_env.tres"
|
||||
quality/filters/anisotropic_filter_level=16
|
||||
gles2/debug/disable_half_float=true
|
||||
quality/filters/anisotropic_filter_level.mobile=4
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="3D Waypoints"
|
||||
|
||||
@@ -23,6 +23,9 @@ func _ready() -> void:
|
||||
|
||||
|
||||
func _process(_delta):
|
||||
if not camera.current:
|
||||
# If the camera we have isn't the current one, get the current camera.
|
||||
camera = get_viewport().get_camera()
|
||||
var parent_translation = parent.global_transform.origin
|
||||
var camera_transform = camera.global_transform
|
||||
var camera_translation = camera_transform.origin
|
||||
|
||||
@@ -55,5 +55,6 @@ margin_bottom = 311.158
|
||||
texture_normal = ExtResource( 2 )
|
||||
texture_pressed = ExtResource( 2 )
|
||||
texture_hover = ExtResource( 4 )
|
||||
|
||||
[connection signal="pressed" from="PlaySystem" to="." method="_on_PlaySystem_pressed"]
|
||||
[connection signal="pressed" from="PlaySound" to="." method="_on_PlaySound_pressed"]
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="BPM Sync Demo"
|
||||
|
||||
@@ -47,5 +47,6 @@ text = "Play Audio"
|
||||
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
|
||||
stream = ExtResource( 2 )
|
||||
volume_db = -6.0
|
||||
|
||||
[connection signal="button_down" from="SetDevice" to="." method="_on_Button_button_down"]
|
||||
[connection signal="button_down" from="PlayAudio" to="." method="_on_Play_Audio_button_down"]
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Audio Device Changer Demo"
|
||||
|
||||
@@ -8,11 +8,6 @@
|
||||
|
||||
config_version=4
|
||||
|
||||
_global_script_classes=[ ]
|
||||
_global_script_class_icons={
|
||||
|
||||
}
|
||||
|
||||
[application]
|
||||
|
||||
config/name="Audio Generator Demo"
|
||||
|
||||
@@ -74,6 +74,7 @@ margin_left = 120.0
|
||||
margin_top = 340.0
|
||||
margin_right = 520.0
|
||||
margin_bottom = 340.0
|
||||
|
||||
[connection signal="pressed" from="RecordButton" to="." method="_on_RecordButton_pressed"]
|
||||
[connection signal="pressed" from="SaveButton" to="." method="_on_SaveButton_pressed"]
|
||||
[connection signal="pressed" from="PlayButton" to="." method="_on_PlayButton_pressed"]
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user