Skip to content
This repository was archived by the owner on Jan 25, 2025. It is now read-only.

Commit 28349af

Browse files
authored
Merge pull request #6 from jumpy-cat/dev
feat: new and improved physics (animation only for now)
2 parents 1440f8c + 8b2454f commit 28349af

21 files changed

Lines changed: 2197 additions & 337 deletions

Cargo.lock

Lines changed: 86 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

godot/Main.tscn

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[gd_scene load_steps=11 format=3 uid="uid://br738eihq2cus"]
1+
[gd_scene load_steps=13 format=3 uid="uid://br738eihq2cus"]
22

33
[ext_resource type="Script" path="res://main.gd" id="1_w5dqp"]
44
[ext_resource type="PackedScene" uid="uid://c3vuka4b0smhh" path="res://control_point.tscn" id="2_o72i1"]
@@ -20,6 +20,12 @@ LineEdit/colors/font_color = Color(0.875, 0.875, 0.875, 1)
2020

2121
[sub_resource type="Theme" id="Theme_b8h1k"]
2222

23+
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mwvwa"]
24+
shading_mode = 0
25+
vertex_color_use_as_albedo = true
26+
27+
[sub_resource type="ImmediateMesh" id="ImmediateMesh_oh57q"]
28+
2329
[node name="Main" type="Node3D"]
2430
script = ExtResource("1_w5dqp")
2531
control_point_scene = ExtResource("2_o72i1")
@@ -44,6 +50,7 @@ mesh = SubResource("ImmediateMesh_hneuq")
4450

4551
[node name="Anim" parent="." instance=ExtResource("4_s6s4g")]
4652
visible = false
53+
script = null
4754

4855
[node name="VBoxContainer" type="VBoxContainer" parent="."]
4956
offset_left = 40.0
@@ -69,6 +76,15 @@ text = "Optimizer"
6976
layout_mode = 2
7077
text = "-- iter/s"
7178

79+
[node name="CheckBox" type="CheckBox" parent="VBoxContainer"]
80+
layout_mode = 2
81+
text = "Manual Physics"
82+
83+
[node name="AnimStepEdit" parent="VBoxContainer" instance=ExtResource("5_svsvn")]
84+
layout_mode = 2
85+
_name = "Anim Step:"
86+
value = 0.01
87+
7288
[node name="LREdit" parent="VBoxContainer" instance=ExtResource("5_svsvn")]
7389
layout_mode = 2
7490
_name = "LR:"
@@ -125,10 +141,17 @@ use_native_dialog = true
125141

126142
[node name="SaveDialogue" type="FileDialog" parent="."]
127143
size = Vector2i(303, 180)
144+
ok_button_text = "Save"
128145
access = 2
129146
use_native_dialog = true
130147

148+
[node name="HLNormal" type="MeshInstance3D" parent="."]
149+
material_overlay = SubResource("StandardMaterial3D_mwvwa")
150+
mesh = SubResource("ImmediateMesh_oh57q")
151+
131152
[connection signal="toggled" from="VBoxContainer/CheckButton" to="." method="_on_check_button_toggled"]
153+
[connection signal="toggled" from="VBoxContainer/CheckBox" to="." method="_on_check_box_toggled"]
154+
[connection signal="value_changed" from="VBoxContainer/AnimStepEdit" to="." method="_on_anim_step_edit_value_changed"]
132155
[connection signal="value_changed" from="VBoxContainer/LREdit" to="." method="_on_lr_edit_value_changed"]
133156
[connection signal="value_changed" from="VBoxContainer/MassEdit" to="." method="_on_mass_edit_value_changed"]
134157
[connection signal="value_changed" from="VBoxContainer/GravityEdit" to="." method="_on_gravity_edit_value_changed"]

godot/anim.tscn

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
[gd_scene load_steps=4 format=3 uid="uid://dp1iulbnn6wvy"]
1+
[gd_scene load_steps=8 format=3 uid="uid://dp1iulbnn6wvy"]
2+
3+
[sub_resource type="GDScript" id="GDScript_gxknm"]
24

35
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_38yrt"]
46
diffuse_mode = 2
@@ -12,7 +14,17 @@ height = 2.0
1214
[sub_resource type="SphereShape3D" id="SphereShape3D_r0wmb"]
1315
radius = 1.0
1416

17+
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_q7vat"]
18+
diffuse_mode = 2
19+
20+
[sub_resource type="CapsuleMesh" id="CapsuleMesh_ncu23"]
21+
material = SubResource("StandardMaterial3D_q7vat")
22+
height = 5.0
23+
24+
[sub_resource type="ImmediateMesh" id="ImmediateMesh_teg0u"]
25+
1526
[node name="Anim" type="Node3D"]
27+
script = SubResource("GDScript_gxknm")
1628

1729
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
1830
mesh = SubResource("SphereMesh_su52i")
@@ -21,3 +33,10 @@ mesh = SubResource("SphereMesh_su52i")
2133

2234
[node name="CollisionShape3D" type="CollisionShape3D" parent="StaticBody3D"]
2335
shape = SubResource("SphereShape3D_r0wmb")
36+
37+
[node name="MeshInstance3D2" type="MeshInstance3D" parent="."]
38+
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.70093, 0)
39+
mesh = SubResource("CapsuleMesh_ncu23")
40+
41+
[node name="MeshInstance3D3" type="MeshInstance3D" parent="."]
42+
mesh = SubResource("ImmediateMesh_teg0u")

godot/control_point.gd

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -11,64 +11,64 @@ signal clicked(index)
1111

1212
# Called when the node enters the scene tree for the first time.
1313
func _ready() -> void:
14-
var mat: StandardMaterial3D = StandardMaterial3D.new()
15-
mat.vertex_color_use_as_albedo = true
16-
mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
17-
axes.material_override = mat
18-
var m: ImmediateMesh = axes.mesh
19-
m.clear_surfaces()
20-
#m.surface_begin(Mesh.PRIMITIVE_TRIANGLES)
14+
var mat: StandardMaterial3D = StandardMaterial3D.new()
15+
mat.vertex_color_use_as_albedo = true
16+
mat.shading_mode = BaseMaterial3D.SHADING_MODE_UNSHADED
17+
axes.material_override = mat
18+
var m: ImmediateMesh = axes.mesh
19+
m.clear_surfaces()
20+
#m.surface_begin(Mesh.PRIMITIVE_TRIANGLES)
2121

22-
m.surface_begin(Mesh.PRIMITIVE_LINES)
22+
m.surface_begin(Mesh.PRIMITIVE_LINES)
2323

24-
m.surface_set_color(Color.RED)
25-
m.surface_add_vertex(Vector3.ZERO)
26-
m.surface_set_color(Color.RED)
27-
m.surface_add_vertex(Vector3(100, 0, 0))
24+
m.surface_set_color(Color.RED)
25+
m.surface_add_vertex(Vector3.ZERO)
26+
m.surface_set_color(Color.RED)
27+
m.surface_add_vertex(Vector3(100, 0, 0))
2828

29-
m.surface_set_color(Color.GREEN)
30-
m.surface_add_vertex(Vector3.ZERO)
31-
m.surface_set_color(Color.GREEN)
32-
m.surface_add_vertex(Vector3(0, 100, 0))
29+
m.surface_set_color(Color.GREEN)
30+
m.surface_add_vertex(Vector3.ZERO)
31+
m.surface_set_color(Color.GREEN)
32+
m.surface_add_vertex(Vector3(0, 100, 0))
3333

34-
m.surface_set_color(Color.SKY_BLUE)
35-
m.surface_add_vertex(Vector3.ZERO)
36-
m.surface_set_color(Color.SKY_BLUE)
37-
m.surface_add_vertex(Vector3(0, 0, 100))
34+
m.surface_set_color(Color.SKY_BLUE)
35+
m.surface_add_vertex(Vector3.ZERO)
36+
m.surface_set_color(Color.SKY_BLUE)
37+
m.surface_add_vertex(Vector3(0, 0, 100))
3838

39-
m.surface_end()
39+
m.surface_end()
4040

4141
# Called every frame. 'delta' is the elapsed time since the previous frame.
4242
func _process(_delta: float) -> void:
43-
if selected or hovered:
44-
scale = Vector3(2.0, 2.0, 2.0)
45-
else:
46-
scale = Vector3.ONE
47-
axes.visible = selected
43+
if selected or hovered:
44+
scale = Vector3(2.0, 2.0, 2.0)
45+
else:
46+
scale = Vector3.ONE
47+
axes.visible = selected
4848

4949

5050
func initialize(pos: Vector3, index_: int) -> void:
51-
translate(pos)
52-
index = index_
51+
translate(pos)
52+
index = index_
5353

5454

5555
## Increase size when mouse hovering over control point
5656
func _on_static_body_3d_mouse_entered() -> void:
57-
hovered = true
57+
hovered = true
5858

5959

6060
## Reset size when mouse leaves control point
6161
func _on_static_body_3d_mouse_exited() -> void:
62-
hovered = false
62+
hovered = false
6363

6464

6565
## Handle mouse click on control point
6666
func _on_static_body_3d_input_event(
67-
_camera: Node,
68-
event: InputEvent,
69-
_event_position: Vector3,
70-
_normal: Vector3,
71-
_shape_idx: int
67+
_camera: Node,
68+
event: InputEvent,
69+
_event_position: Vector3,
70+
_normal: Vector3,
71+
_shape_idx: int
7272
) -> void:
73-
if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.is_pressed():
74-
clicked.emit(index)
73+
if event is InputEventMouseButton and event.button_index == MOUSE_BUTTON_LEFT and event.is_pressed():
74+
clicked.emit(index)

0 commit comments

Comments
 (0)