1-6 player splitscreen multiplayer addon
add a manual scale override
bendn 2023-04-21
parent 07db6e1 · commit 9ca0cf5
-rw-r--r--addons/splitter/package.json4
-rw-r--r--addons/splitter/screen.gd4
-rw-r--r--addons/splitter/viewport.gd6
-rw-r--r--project.godot4
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]