small racing game im working on
| -rw-r--r-- | godot.lock | 5 | ||||
| -rw-r--r-- | godot.package | 10 | ||||
| -rw-r--r-- | tracks.cfg | 4 | ||||
| -rw-r--r-- | ui/editor/propertys.gd | 1 | ||||
| -rw-r--r-- | ui/editor/propertys.tscn | 17 | ||||
| -rw-r--r-- | ui/editor/track_editor.gd | 13 |
6 files changed, 43 insertions, 7 deletions
@@ -13,5 +13,10 @@ "name": "@bendn/splitter", "tarball": "https://registry.npmjs.org/@bendn/splitter/-/splitter-1.1.0.tgz", "version": "1.1.0" + }, + { + "name": "@bendn/timecontrol", + "tarball": "https://registry.npmjs.org/@bendn/timecontrol/-/timecontrol-1.2.2.tgz", + "version": "1.2.2" } ]
\ No newline at end of file diff --git a/godot.package b/godot.package index c9b7804..b89b419 100644 --- a/godot.package +++ b/godot.package @@ -1,4 +1,6 @@ -[packages] -"@bendn/gizmo3d" = '1.0.4' -"@bendn/splitter" = '1.1.0' -"@bendn/enginesound" = '1.0.0' +packages: { + @bendn/gizmo3d: '1.0.4' + @bendn/splitter: '1.1.0' + @bendn/enginesound: '1.0.0' + @bendn/timecontrol: '1.2.2' +} @@ -189,7 +189,7 @@ "l": 1, "n": "swonk", "o": Vector3(0, 1, 0), -"x": -45, +"x": -15, "y": 0 }, { "b": Array[Dictionary]([{ @@ -1144,4 +1144,4 @@ "o": Vector3(0, 1, 0), "x": -90, "y": 0 -}]
\ No newline at end of file +}] diff --git a/ui/editor/propertys.gd b/ui/editor/propertys.gd index 30bb352..05a1dc7 100644 --- a/ui/editor/propertys.gd +++ b/ui/editor/propertys.gd @@ -2,3 +2,4 @@ extends VBoxContainer @onready var name_: LineEdit = %name @onready var laps_: SpinBox = %laps +@onready var time_: TimeButton = %time diff --git a/ui/editor/propertys.tscn b/ui/editor/propertys.tscn index 185a780..50d380c 100644 --- a/ui/editor/propertys.tscn +++ b/ui/editor/propertys.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=3 format=3 uid="uid://c4h850namjrn2"] +[gd_scene load_steps=4 format=3 uid="uid://c4h850namjrn2"] [ext_resource type="Script" path="res://ui/editor/propertys.gd" id="1_0vjdc"] +[ext_resource type="Script" path="res://addons/@bendn/timecontrol/timebutton.gd" id="2_bn54u"] [sub_resource type="GDScript" id="GDScript_ly6xd"] resource_name = "laps" @@ -50,4 +51,18 @@ rounded = true suffix = "lap" script = SubResource("GDScript_ly6xd") +[node name="time" type="HBoxContainer" parent="."] +layout_mode = 2 + +[node name="label" type="Label" parent="time"] +custom_minimum_size = Vector2(150, 0) +layout_mode = 2 +text = "time" + +[node name="time" type="Button" parent="time"] +unique_name_in_owner = true +layout_mode = 2 +text = "12:00 PM" +script = ExtResource("2_bn54u") + [connection signal="value_changed" from="laps/laps" to="laps/laps" method="_on_value_changed"] diff --git a/ui/editor/track_editor.gd b/ui/editor/track_editor.gd index 9b2a499..3bd1e78 100644 --- a/ui/editor/track_editor.gd +++ b/ui/editor/track_editor.gd @@ -20,6 +20,7 @@ var snapping := true var objects: Array[TrackObject] = [] var history := UndoRedo.new() var track: TrackResource +var sun: DirectionalLight3D signal make_gizmo(mode: Mode) signal selection_changed(objects: Array[TrackObject]) @@ -35,11 +36,16 @@ func _ready() -> void: for c in l.get_children(): l.remove_child(c) %port.add_child(c) + if c is DirectionalLight3D: + sun = c # the loader has loaded, get rid of it l.queue_free() + objects = track.blocks.duplicate() # duplicate: if not saved, will be lost %propertys.name_.text = track.name %propertys.laps_.value = track.laps + %propertys.time_.time = { hour = rot2hour(track.sun_x), minute = 00 } + %propertys.time_.time_changed.connect(func(t: Dictionary): sun.global_rotation.x = hour2rot(t.hour)) %cam.global_transform = IntroCam.get_origin(track) # put the camera up high, looking straight down if not FileAccess.file_exists(Globals.TRACKS % track.name) and not track.builtin: @@ -52,6 +58,12 @@ func _ready() -> void: obj.delete_live() ) +func rot2hour(rot: int) -> int: + return round(24.0 * float(posmod(90 - rot, 360)) / 360.0) + +func hour2rot(hour: int) -> float: + return (6.0 - hour) / 24.0 * TAU + func pressed(b: Button) -> void: mode = Mode[b.name.to_pascal_case()] make_gizmo.emit(mode) @@ -85,6 +97,7 @@ func get_trackdata() -> TrackResource: track.blocks = objects.duplicate() track.name = %propertys.name_.text track.laps = %propertys.laps_.value + track.sun_x = roundi(sun.global_rotation_degrees.x) return track func _on_item_created(object: TrackObject) -> void: |