68 lines
1.5 KiB
GDScript
68 lines
1.5 KiB
GDScript
tool
|
|
extends Resource
|
|
class_name SummerDayDocument
|
|
|
|
|
|
signal resolution_changed(new_resolution)
|
|
signal track_added(track)
|
|
signal track_deleted(track) # Not used yet. Implement please.
|
|
|
|
|
|
export(Vector2) var resolution = Vector2(1920, 1080) setget _set_resolution
|
|
export(Array, Resource) var tracks
|
|
|
|
var raw_aspect_ratio setget , _get_raw_aspect_ratio
|
|
|
|
var selected_track
|
|
|
|
|
|
func setup():
|
|
for track in tracks:
|
|
selected_track = track
|
|
emit_signal("track_added", track)
|
|
update_interaction_hint()
|
|
|
|
|
|
func add_track(blueprint: SummerDayBlueprint):
|
|
var track = SummerDayTrack.new()
|
|
track.blueprint = blueprint
|
|
track.add_cell(0)
|
|
tracks.append(track)
|
|
selected_track = track
|
|
emit_signal("track_added", track)
|
|
|
|
|
|
func create_scene() -> SummerDayScene:
|
|
var _scene = SummerDayScene.new()
|
|
_scene.resource_path = "res://production/test/scene_001.tres"
|
|
_scene.resolution = Vector2(12.0, 9.0)
|
|
return _scene
|
|
|
|
|
|
func update_interaction_hint():
|
|
if selected_track:
|
|
selected_track.update_interaction_hint()
|
|
|
|
|
|
func _set_resolution(new_resolution):
|
|
var handled_resolution = Vector2()
|
|
|
|
# Don't let the components drop below 0.01!
|
|
if new_resolution.x <= 0.01:
|
|
handled_resolution.x = 0.01
|
|
else:
|
|
handled_resolution.x = new_resolution.x
|
|
|
|
if new_resolution.y <= 0.01:
|
|
handled_resolution.y = 0.01
|
|
else:
|
|
handled_resolution.y = new_resolution.y
|
|
|
|
resolution = handled_resolution
|
|
|
|
emit_signal("resolution_changed", resolution)
|
|
|
|
|
|
func _get_raw_aspect_ratio():
|
|
return resolution.x / resolution.y
|