1-6 player splitscreen multiplayer addon
add a manual scale override
| -rw-r--r-- | addons/splitter/package.json | 4 | ||||
| -rw-r--r-- | addons/splitter/screen.gd | 4 | ||||
| -rw-r--r-- | addons/splitter/viewport.gd | 6 | ||||
| -rw-r--r-- | project.godot | 4 |
4 files changed, 11 insertions, 7 deletions
diff --git a/addons/splitter/package.json b/addons/splitter/package.json index 4e0ec0c..86c248b 100644 --- a/addons/splitter/package.json +++ b/addons/splitter/package.json @@ -1,6 +1,6 @@ { "name": "@bendn/splitter", - "version": "1.0.6", + "version": "1.1.0", "description": "small addon for splitscreen multiplayer", "main": "screen.gd", "scripts": { @@ -22,4 +22,4 @@ "url": "https://github.com/bend-n/splitter/issues" }, "homepage": "https://github.com/bend-n/splitter#readme" -}
\ No newline at end of file +} diff --git a/addons/splitter/screen.gd b/addons/splitter/screen.gd index 6f05c4f..c39f5e4 100644 --- a/addons/splitter/screen.gd +++ b/addons/splitter/screen.gd @@ -3,6 +3,8 @@ class_name Splitscreen var players: Array[PlayerViewport] = [] +@export var scale := 1.0 + func _ready() -> void: set_process(false) get_window().size_changed.connect(set_process.bind(true)) @@ -24,7 +26,7 @@ func join() -> PlayerViewport: if len(players) > 5: push_error("no slots") return - var player := PlayerViewport.new(len(players) + 1) + var player := PlayerViewport.new(len(players) + 1, scale) player.name = "player %d" % (len(players) + 1) players.append(player) add_child(player) diff --git a/addons/splitter/viewport.gd b/addons/splitter/viewport.gd index 12db31f..803ce7b 100644 --- a/addons/splitter/viewport.gd +++ b/addons/splitter/viewport.gd @@ -4,17 +4,19 @@ class_name PlayerViewport var player_count: int var viewport: Viewport var id: int +var scal := 1.0 -func _init(_id: int) -> void: +func _init(_id: int, _scale: float) -> void: viewport = SubViewport.new() add_child(viewport) texture = viewport.get_texture() id = _id + scal = _scale player_count = _id # id should be count + 1 ## size this viewport func _size(to: Vector2) -> void: - viewport.size = to + viewport.size = to * scal size = to ## resize this viewport to fit over [param area], while calculating the best positions. diff --git a/project.godot b/project.godot index a9a8538..fefe392 100644 --- a/project.godot +++ b/project.godot @@ -13,11 +13,11 @@ config_version=5 config/name="splitter" config/description="smol addon to simplify creation of multiplayer splitscreen" run/main_scene="res://Main.tscn" -config/features=PackedStringArray("4.0") +config/features=PackedStringArray("4.1") [display] -window/stretch/scale=6.0 +window/stretch/aspect="ignore" [rendering] |