├── .gitattributes ├── .gitignore ├── .vscode ├── launch.json ├── settings.json └── tasks.json ├── Doxyfile ├── LICENSE.txt ├── README.md ├── addons └── mattoha_lobby_system │ ├── core │ ├── autoload │ │ └── MattohaSystem.tscn │ ├── enums │ │ ├── ClientRpc.cs │ │ └── ServerRpc.cs │ ├── misc │ │ └── MattohaServerMiddleware.cs │ ├── nodes │ │ ├── MattohaClient.cs │ │ ├── MattohaGameHolder.cs │ │ ├── MattohaPickable.cs │ │ ├── MattohaPositionSynchronizer.cs │ │ ├── MattohaRotationSynchronizer.cs │ │ ├── MattohaServer.cs │ │ ├── MattohaSpawner.cs │ │ ├── MattohaSynchronizerModifier.cs │ │ └── MattohaSystem.cs │ └── utils │ │ ├── MattohaLobbyKeys.cs │ │ ├── MattohaPlayerKeys.cs │ │ ├── MattohaSpawnKeys.cs │ │ └── MattohaUtils.cs │ ├── gd_bind │ └── nodes │ │ ├── mattoha_client.gd │ │ ├── mattoha_server.gd │ │ └── mattoha_system.gd │ ├── mattoha_lobby_system.gd │ └── plugin.cfg ├── csharp_demo_example ├── scenes │ ├── coin.tscn │ ├── create_lobby.tscn │ ├── game.tscn │ ├── game_holder.tscn │ ├── lobbies.tscn │ ├── lobby.tscn │ ├── main_menu.tscn │ ├── player.tscn │ ├── projectile.tscn │ ├── slots │ │ └── lobby_slot.tscn │ └── user_dialog.tscn └── scripts │ ├── Coin.cs │ ├── CreateLobby.cs │ ├── Lobbies.cs │ ├── Lobby.cs │ ├── LobbySlot.cs │ ├── MainMenu.cs │ ├── Player.cs │ ├── UserDialog.cs │ └── game.cs ├── docs ├── annotated.html ├── annotated_dup.js ├── bc_s.png ├── bc_sd.png ├── class_mattoha_1_1_core_1_1_mattoha_utils-members.html ├── class_mattoha_1_1_core_1_1_mattoha_utils.html ├── class_mattoha_1_1_core_1_1_utils_1_1_mattoha_spawn_keys-members.html ├── class_mattoha_1_1_core_1_1_utils_1_1_mattoha_spawn_keys.html ├── class_mattoha_1_1_misc_1_1_mattoha_server_middleware-members.html ├── class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html ├── class_mattoha_1_1_misc_1_1_mattoha_server_middleware.js ├── class_mattoha_1_1_nodes_1_1_mattoha_client-members.html ├── class_mattoha_1_1_nodes_1_1_mattoha_client.html ├── class_mattoha_1_1_nodes_1_1_mattoha_client.js ├── class_mattoha_1_1_nodes_1_1_mattoha_game_holder-members.html ├── class_mattoha_1_1_nodes_1_1_mattoha_game_holder.html ├── class_mattoha_1_1_nodes_1_1_mattoha_game_holder.js ├── class_mattoha_1_1_nodes_1_1_mattoha_pickable-members.html ├── class_mattoha_1_1_nodes_1_1_mattoha_pickable.html ├── class_mattoha_1_1_nodes_1_1_mattoha_position_synchronizer-members.html ├── class_mattoha_1_1_nodes_1_1_mattoha_position_synchronizer.html ├── class_mattoha_1_1_nodes_1_1_mattoha_rotation_synchronizer-members.html ├── class_mattoha_1_1_nodes_1_1_mattoha_rotation_synchronizer.html ├── class_mattoha_1_1_nodes_1_1_mattoha_server-members.html ├── class_mattoha_1_1_nodes_1_1_mattoha_server.html ├── class_mattoha_1_1_nodes_1_1_mattoha_server.js ├── class_mattoha_1_1_nodes_1_1_mattoha_spawner-members.html ├── class_mattoha_1_1_nodes_1_1_mattoha_spawner.html ├── class_mattoha_1_1_nodes_1_1_mattoha_spawner.js ├── class_mattoha_1_1_nodes_1_1_mattoha_synchronizer_modifier-members.html ├── class_mattoha_1_1_nodes_1_1_mattoha_synchronizer_modifier.html ├── class_mattoha_1_1_nodes_1_1_mattoha_system-members.html ├── class_mattoha_1_1_nodes_1_1_mattoha_system.html ├── class_mattoha_1_1_nodes_1_1_mattoha_system.js ├── classes.html ├── clipboard.js ├── closed.png ├── cookie.js ├── dir_1233bc0a3e869c10318208e4553a4fcb.html ├── dir_36297c83ae5978a9304c4b762d87eb97.html ├── dir_49d5765286348fb7f1c9cf80cac193ac.html ├── dir_74692c01f9002aa62389637c1c9232ea.html ├── dir_7f419cdda9c6daa07ba2aaeece81858a.html ├── dir_cc749a7f66f4a92e949109e34944e902.html ├── dir_d42799d27da86c818c70090759027502.html ├── doc.svg ├── docd.svg ├── doxygen.css ├── doxygen.svg ├── doxygen_crawl.html ├── dynsections.js ├── folderclosed.svg ├── folderclosedd.svg ├── folderopen.svg ├── folderopend.svg ├── functions.html ├── functions_func.html ├── functions_prop.html ├── hierarchy.html ├── hierarchy.js ├── index.html ├── jquery.js ├── menu.js ├── menudata.js ├── minus.svg ├── minusd.svg ├── namespace_mattoha.html ├── namespace_mattoha.js ├── namespace_mattoha_1_1_core.html ├── namespace_mattoha_1_1_core.js ├── namespace_mattoha_1_1_core_1_1_demo.html ├── namespace_mattoha_1_1_core_1_1_utils.html ├── namespace_mattoha_1_1_core_1_1_utils.js ├── namespace_mattoha_1_1_misc.html ├── namespace_mattoha_1_1_misc.js ├── namespace_mattoha_1_1_nodes.html ├── namespace_mattoha_1_1_nodes.js ├── namespaces.html ├── namespaces_dup.js ├── nav_f.png ├── nav_fd.png ├── nav_g.png ├── nav_h.png ├── nav_hd.png ├── navtree.css ├── navtree.js ├── navtreedata.js ├── navtreeindex0.js ├── navtreeindex1.js ├── open.png ├── plus.svg ├── plusd.svg ├── resize.js ├── search │ ├── all_0.js │ ├── all_1.js │ ├── all_10.js │ ├── all_2.js │ ├── all_3.js │ ├── all_4.js │ ├── all_5.js │ ├── all_6.js │ ├── all_7.js │ ├── all_8.js │ ├── all_9.js │ ├── all_a.js │ ├── all_b.js │ ├── all_c.js │ ├── all_d.js │ ├── all_e.js │ ├── all_f.js │ ├── classes_0.js │ ├── close.svg │ ├── functions_0.js │ ├── functions_1.js │ ├── functions_2.js │ ├── functions_3.js │ ├── functions_4.js │ ├── functions_5.js │ ├── functions_6.js │ ├── functions_7.js │ ├── functions_8.js │ ├── functions_9.js │ ├── functions_a.js │ ├── functions_b.js │ ├── functions_c.js │ ├── functions_d.js │ ├── functions_e.js │ ├── mag.svg │ ├── mag_d.svg │ ├── mag_sel.svg │ ├── mag_seld.svg │ ├── namespaces_0.js │ ├── properties_0.js │ ├── properties_1.js │ ├── properties_2.js │ ├── properties_3.js │ ├── properties_4.js │ ├── properties_5.js │ ├── properties_6.js │ ├── properties_7.js │ ├── properties_8.js │ ├── search.css │ ├── search.js │ └── searchdata.js ├── splitbar.png ├── splitbard.png ├── sync_off.png ├── sync_on.png ├── tab_a.png ├── tab_ad.png ├── tab_b.png ├── tab_bd.png ├── tab_h.png ├── tab_hd.png ├── tab_s.png ├── tab_sd.png └── tabs.css ├── gd_demo_example ├── scenes │ ├── coin.tscn │ ├── create_lobby.tscn │ ├── game.tscn │ ├── game_holder.tscn │ ├── lobbies.tscn │ ├── lobby.gd │ ├── lobby.tscn │ ├── main_menu.tscn │ ├── player.tscn │ ├── projectile.tscn │ ├── slots │ │ └── lobby_slot.tscn │ └── user_dialog.tscn └── scripts │ ├── coin.gd │ ├── create_lobby.gd │ ├── game.gd │ ├── lobbies.gd │ ├── lobby_slot.gd │ ├── main_menu.gd │ ├── player.gd │ └── user_dialog.gd ├── icon.svg ├── icon.svg.import ├── main_icon.png ├── main_icon.png.import ├── mattoha_lobby_system.csproj ├── mattoha_lobby_system.csproj.user ├── mattoha_lobby_system.sln ├── pics ├── active_replication.png ├── active_replication.png.import ├── auto_load.png ├── auto_load.png.import ├── client_signals.png ├── client_signals.png.import ├── config.png ├── config.png.import ├── godot_instances.png ├── godot_instances.png.import ├── listener.png ├── listener.png.import ├── mattoha_nodes.png ├── mattoha_nodes.png.import ├── replicator_properties.png ├── replicator_properties.png.import ├── replicator_viewer.png └── replicator_viewer.png.import └── project.godot /.gitattributes: -------------------------------------------------------------------------------- 1 | # Normalize EOL for all files that Git considers text files. 2 | * text=auto eol=lf 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # ide ignores 2 | .vs 3 | # Godot 4+ specific ignores 4 | .godot/ 5 | 6 | #docs 7 | docs/**/*.import 8 | 9 | # Godot-specific ignores 10 | .import/ 11 | export.cfg 12 | export_presets.cfg 13 | 14 | # Imported translations (automatically generated from CSV files) 15 | *.translation 16 | 17 | # Mono-specific ignores 18 | .mono/ 19 | data_*/ 20 | mono_crash.*.json 21 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Use IntelliSense to learn about possible attributes. 3 | // Hover to view descriptions of existing attributes. 4 | // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "name": "Godot - Debug", 9 | "type": "coreclr", 10 | "request": "launch", 11 | "preLaunchTask": "build", 12 | "program": "C:\\Users\\me\\Documents\\Apps\\Godot\\Godot.exe", 13 | "cwd": "${workspaceFolder}", 14 | "console": "integratedTerminal", 15 | "stopAtEntry": false, 16 | "args": ["--path", "${workspaceRoot}", "--verbose"] 17 | } 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": true 3 | } -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "type": "dotnet", 6 | "task": "build", 7 | "group": { 8 | "kind": "build", 9 | "isDefault": true 10 | }, 11 | "problemMatcher": [], 12 | "label": "build" 13 | } 14 | ] 15 | } 16 | -------------------------------------------------------------------------------- /addons/mattoha_lobby_system/core/autoload/MattohaSystem.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=5 format=3 uid="uid://0pk7uurxseuh"] 2 | 3 | [ext_resource type="Script" path="res://addons/mattoha_lobby_system/core/nodes/MattohaSystem.cs" id="1_ii6u1"] 4 | [ext_resource type="Script" path="res://addons/mattoha_lobby_system/core/nodes/MattohaServer.cs" id="2_y71mf"] 5 | [ext_resource type="Script" path="res://addons/mattoha_lobby_system/core/nodes/MattohaClient.cs" id="3_emf05"] 6 | [ext_resource type="Script" path="res://addons/mattoha_lobby_system/core/misc/MattohaServerMiddleware.cs" id="3_uh60p"] 7 | 8 | [node name="MattohaSystem" type="Node" node_paths=PackedStringArray("Server", "Client")] 9 | script = ExtResource("1_ii6u1") 10 | Server = NodePath("MattohaServer") 11 | Client = NodePath("MattohaClient") 12 | 13 | [node name="MattohaServer" type="Node" parent="." node_paths=PackedStringArray("MiddlewareNode")] 14 | script = ExtResource("2_y71mf") 15 | MiddlewareNode = NodePath("ServerMiddleware") 16 | 17 | [node name="ServerMiddleware" type="Node" parent="MattohaServer"] 18 | script = ExtResource("3_uh60p") 19 | 20 | [node name="MattohaClient" type="Node" parent="."] 21 | script = ExtResource("3_emf05") 22 | -------------------------------------------------------------------------------- /addons/mattoha_lobby_system/core/enums/ClientRpc.cs: -------------------------------------------------------------------------------- 1 | namespace Mattoha.Core.Demo; 2 | 3 | internal enum ClientRpc 4 | { 5 | RegisterPlayer, 6 | 7 | SetPlayerData, 8 | SetPlayerDataFailed, 9 | 10 | CreateLobby, 11 | CreateLobbyFailed, 12 | 13 | LoadAvailableLobbies, 14 | LoadAvailableLobbiesFailed, 15 | 16 | NewPlayerJoined, 17 | PlayerLeft, 18 | 19 | JoinLobby, 20 | JoinLobbyFailed, 21 | 22 | StartGame, 23 | StartGameFailed, 24 | 25 | LoadLobbyPlayers, 26 | LoadLobbyPlayersFailed, 27 | 28 | SpawnNode, 29 | SpawnNodeFailed, 30 | 31 | SpawnLobbyNodes, 32 | SpawnLobbyNodesFailed, 33 | 34 | DespawnNode, 35 | DespawnNodeFailed, 36 | 37 | DespawnRemovedSceneNodes, 38 | DespawnRemovedSceneNodesFailed, 39 | 40 | JoinedPlayerUpdated, 41 | 42 | SetLobbyData, 43 | SetLobbyDataFailed, 44 | 45 | SetLobbyOwner, 46 | SetLobbyOwnerFailed, 47 | 48 | JoinTeam, 49 | JoinTeamFailed, 50 | 51 | SendTeamMessage, 52 | SendTeamMessageFailed, 53 | 54 | SendLobbyMessage, 55 | SendLobbyMessageFailed, 56 | 57 | SendGlobalMessage, 58 | SendGlobalMessageFailed, 59 | PlayerChangedHisTeam, 60 | 61 | LeaveLobby, 62 | EndGame, 63 | EndGameFailed, 64 | SetPlayerIsInGame, 65 | } 66 | -------------------------------------------------------------------------------- /addons/mattoha_lobby_system/core/enums/ServerRpc.cs: -------------------------------------------------------------------------------- 1 | namespace Mattoha.Core.Demo; 2 | 3 | internal enum ServerRpc 4 | { 5 | SetPlayerData, 6 | CreateLobby, 7 | LoadAvailableLobbies, 8 | JoinLobby, 9 | StartGame, 10 | LoadLobbyPlayers, 11 | SpawnNode, 12 | SpawnLobbyNodes, 13 | DespawnNode, 14 | DespawnRemovedSceneNodes, 15 | SetLobbyData, 16 | SetLobbyOwner, 17 | JoinTeam, 18 | SendTeamMessage, 19 | SendLobbyMessage, 20 | SendGlobalMessage, 21 | LeaveLobby, 22 | EndGame, 23 | SetPlayerIsInGame, 24 | } 25 | -------------------------------------------------------------------------------- /addons/mattoha_lobby_system/core/nodes/MattohaGameHolder.cs: -------------------------------------------------------------------------------- 1 | using Godot; 2 | using Mattoha.Core.Utils; 3 | 4 | namespace Mattoha.Nodes; 5 | public partial class MattohaGameHolder : Node 6 | { 7 | 8 | /// 9 | /// when false, spawning lobby nodes should be done manually by you, when true, it will be automatically when game scene entered tree, 10 | /// 11 | [Export] public bool AutoSpawnLobbyNodes { get; set; } = true; 12 | 13 | /// 14 | /// when false, despawning removed scene nodes should be done manually by you, when true, it will be automatically when game scene entered tree, 15 | /// 16 | [Export] public bool AutoDespawnRemovedSceneNodes { get; set; } = true; 17 | 18 | 19 | public override void _Ready() 20 | { 21 | if (Multiplayer.IsServer()) 22 | return; 23 | MattohaSystem.Instance.Client.LoadLobbyPlayers(); 24 | AddGameScene(); 25 | base._Ready(); 26 | } 27 | 28 | private void AddGameScene() 29 | { 30 | var sceneFile = MattohaSystem.Instance.Client.CurrentLobby[MattohaLobbyKeys.LobbySceneFile].ToString(); 31 | var gameScene = GD.Load(sceneFile).Instantiate(); 32 | gameScene.Name = $"Lobby{MattohaSystem.Instance.Client.CurrentLobby[MattohaLobbyKeys.Id].AsString()}"; 33 | gameScene.TreeEntered += OnGameSceneTreeEntered; 34 | AddChild(gameScene); 35 | } 36 | 37 | private void OnGameSceneTreeEntered() 38 | { 39 | if (AutoSpawnLobbyNodes) 40 | { 41 | MattohaSystem.Instance.Client.SpawnLobbyNodes(); 42 | } 43 | 44 | if (AutoDespawnRemovedSceneNodes) 45 | { 46 | MattohaSystem.Instance.Client.DespawnRemovedSceneNodes(); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /addons/mattoha_lobby_system/core/nodes/MattohaPickable.cs: -------------------------------------------------------------------------------- 1 | using Godot; 2 | using Godot.Collections; 3 | using Mattoha.Core.Utils; 4 | 5 | 6 | namespace Mattoha.Nodes; 7 | 8 | /// 9 | /// A script used to detect when an CharacterBody enter the Area2D, 10 | /// has a signal with a playerId, playerData, lobbyId and lobbyData, and a OnPickData dictionary. 11 | /// 12 | public partial class MattohaPickable : Node 13 | { 14 | [Export] public Area2D Area2DNode { get; set; } 15 | [Signal] public delegate void PickedEventHandler(long playerId, Dictionary playerData, int lobbyId, Dictionary lobbyData, Dictionary data); 16 | [Export] public Dictionary OnPickData { get; set; } = new(); 17 | [Export, ExportGroup("Server Side")] bool DetectOnServerOnly { get; set; } = true; 18 | [Export, ExportGroup("Client Side")] bool DetectForBodyOwnerOnly { get; set; } = false; 19 | 20 | 21 | 22 | 23 | public override void _Ready() 24 | { 25 | if (DetectOnServerOnly && Multiplayer.IsServer()) 26 | { 27 | Area2DNode.BodyEntered += OnBodyEntered; 28 | } 29 | else if (!DetectOnServerOnly && !Multiplayer.IsServer()) 30 | { 31 | Area2DNode.BodyEntered += OnBodyEntered; 32 | } 33 | } 34 | 35 | private void OnBodyEntered(Node2D body) 36 | { 37 | #if MATTOHA_SERVER 38 | if (Multiplayer.IsServer() && DetectOnServerOnly) 39 | { 40 | var playerId = body.GetMultiplayerAuthority(); 41 | var player = MattohaSystem.Instance.Server.GetPlayer(playerId); 42 | var lobby = MattohaSystem.Instance.Server.GetPlayerLobby(playerId); 43 | var lobbyId = lobby[MattohaLobbyKeys.Id].AsInt32(); 44 | 45 | EmitSignal(SignalName.Picked, playerId, player, lobbyId, lobby, OnPickData); 46 | } 47 | #endif 48 | 49 | #if MATTOHA_CLIENT 50 | if (!Multiplayer.IsServer() && ((DetectForBodyOwnerOnly && MattohaSystem.Instance.IsNodeOwner(body)) || !DetectForBodyOwnerOnly)) 51 | { 52 | var playerId = body.GetMultiplayerAuthority(); 53 | var player = MattohaSystem.Instance.Client.CurrentLobbyPlayers[playerId]; 54 | var lobby = MattohaSystem.Instance.Client.CurrentLobby; 55 | var lobbyId = lobby[MattohaLobbyKeys.Id].AsInt32(); 56 | 57 | EmitSignal(SignalName.Picked, playerId, player, lobbyId, lobby, OnPickData); 58 | } 59 | #endif 60 | } 61 | 62 | public override void _ExitTree() 63 | { 64 | Area2DNode.BodyEntered += OnBodyEntered; 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /addons/mattoha_lobby_system/core/nodes/MattohaPositionSynchronizer.cs: -------------------------------------------------------------------------------- 1 | using Godot; 2 | using System; 3 | 4 | namespace Mattoha.Nodes; 5 | public partial class MattohaPositionSynchronizer : Node 6 | { 7 | [Export] public float InterpolationTime { get; set; } = 0.05f; 8 | 9 | private Variant _destinationPosition; 10 | private Node _parent; 11 | 12 | 13 | public override void _EnterTree() 14 | { 15 | MattohaSystem.Instance.Client.SetPlayerIsInGameSucceed += OnPlayerInGame; 16 | _parent = GetParent(); 17 | _destinationPosition = _parent.Get("position"); 18 | base._EnterTree(); 19 | } 20 | 21 | private void OnPlayerInGame(bool value) 22 | { 23 | if (!value) 24 | return; 25 | if (!MattohaSystem.Instance.IsNodeOwner(this)) 26 | { 27 | // this will be called from unonwer players so they can sync intial position 28 | RequestPosition(); 29 | } 30 | } 31 | 32 | public override void _Process(double delta) 33 | { 34 | if (MattohaSystem.Instance.IsNodeOwner(this) && MattohaSystem.Instance.Client.CanReplicate) 35 | { 36 | if (!Equals(_destinationPosition, _parent.Get("position"))) 37 | { 38 | SendPosition(); 39 | } 40 | 41 | } 42 | else 43 | { 44 | if (_parent is Node2D) 45 | { 46 | var pos = _destinationPosition.AsVector2(); 47 | (_parent as Node2D).Position = (_parent as Node2D).Position.Lerp(pos, InterpolationTime); 48 | } 49 | else if (_parent is Node3D) 50 | { 51 | var pos = _destinationPosition.AsVector3(); 52 | (_parent as Node3D).Position = (_parent as Node3D).Position.Lerp(pos, InterpolationTime); 53 | } 54 | } 55 | base._Process(delta); 56 | } 57 | 58 | 59 | void RequestPosition() 60 | { 61 | RpcId(GetMultiplayerAuthority(), nameof(RpcRequestPosition)); 62 | } 63 | 64 | 65 | // todo: performance & packets issue, send for only player requested the position 66 | [Rpc(MultiplayerApi.RpcMode.AnyPeer)] 67 | void RpcRequestPosition() 68 | { 69 | SendPosition(Multiplayer.GetRemoteSenderId()); 70 | } 71 | 72 | 73 | public void SendPosition(long onlyFor = 0) 74 | { 75 | _destinationPosition = _parent.Get("position"); 76 | var playersIds = MattohaSystem.Instance.Client.GetLobbyPlayersIds(); 77 | if (onlyFor == 0) // 0 = send to all 78 | { 79 | foreach (var id in playersIds) 80 | { 81 | if (id != Multiplayer.GetUniqueId()) 82 | { 83 | RpcId(id, nameof(RpcSentPosition), _parent.Get("position")); 84 | } 85 | } 86 | } 87 | else 88 | { 89 | RpcId(onlyFor, nameof(RpcSentPosition), _parent.Get("position")); 90 | } 91 | } 92 | 93 | 94 | [Rpc(MultiplayerApi.RpcMode.AnyPeer)] 95 | void RpcSentPosition(Variant position) 96 | { 97 | _destinationPosition = position; 98 | } 99 | 100 | public override void _ExitTree() 101 | { 102 | MattohaSystem.Instance.Client.SetPlayerIsInGameSucceed -= OnPlayerInGame; 103 | base._ExitTree(); 104 | } 105 | } 106 | -------------------------------------------------------------------------------- /addons/mattoha_lobby_system/core/nodes/MattohaRotationSynchronizer.cs: -------------------------------------------------------------------------------- 1 | using Godot; 2 | 3 | 4 | namespace Mattoha.Nodes; 5 | public partial class MattohaRotationSynchronizer : Node 6 | { 7 | [Export] public float InterpolationTime { get; set; } = 0.05f; 8 | 9 | private Variant _rot; 10 | private Node _parent; 11 | 12 | 13 | public override void _EnterTree() 14 | { 15 | MattohaSystem.Instance.Client.SetPlayerIsInGameSucceed += OnPlayerInGame; 16 | _parent = GetParent(); 17 | _rot = _parent.Get("rotation"); 18 | base._EnterTree(); 19 | } 20 | 21 | 22 | private void OnPlayerInGame(bool value) 23 | { 24 | if (!value) 25 | return; 26 | if (!MattohaSystem.Instance.IsNodeOwner(this)) 27 | { 28 | // this will be called from unonwer players so they can sync intial rotation 29 | RequestRotation(); 30 | } 31 | } 32 | 33 | 34 | public override void _Process(double delta) 35 | { 36 | if (MattohaSystem.Instance.IsNodeOwner(this) && MattohaSystem.Instance.Client.CanReplicate) 37 | { 38 | if (!Equals(_rot, _parent.Get("position"))) 39 | { 40 | SendRotation(); 41 | } 42 | 43 | } 44 | else 45 | { 46 | if (_parent is Node2D) 47 | { 48 | var rot = _rot.As(); 49 | (_parent as Node2D).Rotation = Mathf.Lerp(rot, (_parent as Node2D).Rotation, InterpolationTime); 50 | } 51 | else if (_parent is Node3D) 52 | { 53 | var rot = _rot.AsVector3(); 54 | (_parent as Node3D).Rotation = (_parent as Node3D).Rotation.Lerp(rot, InterpolationTime); 55 | } 56 | } 57 | base._Process(delta); 58 | } 59 | 60 | 61 | void RequestRotation() 62 | { 63 | RpcId(GetMultiplayerAuthority(), nameof(RpcRequestRotation)); 64 | } 65 | 66 | 67 | [Rpc(MultiplayerApi.RpcMode.AnyPeer)] 68 | void RpcRequestRotation() 69 | { 70 | SendRotation(Multiplayer.GetRemoteSenderId()); 71 | } 72 | 73 | 74 | public void SendRotation(long onlyFor = 0) 75 | { 76 | _rot = _parent.Get("position"); 77 | var playersIds = MattohaSystem.Instance.Client.GetLobbyPlayersIds(); 78 | if (onlyFor == 0) // 0 = send to all 79 | { 80 | foreach (var id in playersIds) 81 | { 82 | if (id != Multiplayer.GetUniqueId()) 83 | { 84 | RpcId(id, nameof(RpcSendRotation), _parent.Get("position")); 85 | } 86 | } 87 | } 88 | else 89 | { 90 | RpcId(onlyFor, nameof(RpcSendRotation), _parent.Get("position")); 91 | } 92 | } 93 | 94 | 95 | [Rpc(MultiplayerApi.RpcMode.AnyPeer)] 96 | void RpcSendRotation(Variant position) 97 | { 98 | _rot = position; 99 | } 100 | 101 | public override void _ExitTree() 102 | { 103 | MattohaSystem.Instance.Client.SetPlayerIsInGameSucceed -= OnPlayerInGame; 104 | base._ExitTree(); 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /addons/mattoha_lobby_system/core/nodes/MattohaSpawner.cs: -------------------------------------------------------------------------------- 1 | using Godot; 2 | using Godot.Collections; 3 | namespace Mattoha.Nodes; 4 | 5 | public partial class MattohaSpawner : Node 6 | { 7 | /// 8 | /// when true, will spawn node for other players on _ready(). 9 | /// 10 | [Export] public bool AutoSpawn { get; set; } = true; 11 | 12 | /// 13 | /// when true, will despawn node for others when queue_free(). 14 | /// 15 | [Export] public bool AutoDespawn { get; set; } = true; 16 | 17 | /// 18 | /// when true, spawning the node will be only for team members. 19 | /// 20 | [Export] public bool SpawnForTeamOnly { get; set; } = false; 21 | 22 | /// 23 | /// when true, the spawning and despawning will be handled by server, and nodes authority will be the server too. 24 | /// 25 | [Export] public bool HandleByServer { get; set; } = false; 26 | 27 | /// 28 | /// A properties list that should be replicated for other players during spawning, eg: "velocity", "motion_mode" or "Child1/Child2/Sprite2D:self_modulate" for nested node and "Sprite2D:scale" for direct child node. 29 | /// 30 | [Export] public Array AdditionalProps { get; set; } = new(); 31 | 32 | public override void _Ready() 33 | { 34 | if (AutoSpawn && HandleByServer && Multiplayer.IsServer()) 35 | { 36 | #if MATTOHA_SERVER 37 | MattohaSystem.Instance.Server.SpawnNode( 38 | MattohaSystem.Instance.GenerateNodePayloadData(GetParent(), AdditionalProps), 39 | MattohaSystem.ExtractLobbyId(GetParent().GetPath()) 40 | ); 41 | #endif 42 | } 43 | else if (AutoSpawn && !HandleByServer && !Multiplayer.IsServer() && Multiplayer.GetUniqueId() == GetMultiplayerAuthority()) 44 | { 45 | #if MATTOHA_CLIENT 46 | MattohaSystem.Instance.Client.SpawnNode(GetParent(), SpawnForTeamOnly, AdditionalProps); 47 | #endif 48 | } 49 | base._Ready(); 50 | } 51 | 52 | public override void _ExitTree() 53 | { 54 | if (AutoDespawn) 55 | { 56 | if (HandleByServer && Multiplayer.IsServer()) 57 | { 58 | #if MATTOHA_SERVER 59 | MattohaSystem.Instance.Server.DespawnNode(MattohaSystem.Instance.GenerateNodePayloadData(GetParent())); 60 | #endif 61 | } 62 | else if (!HandleByServer && !Multiplayer.IsServer() && Multiplayer.GetUniqueId() == GetMultiplayerAuthority()) 63 | { 64 | #if MATTOHA_CLIENT 65 | MattohaSystem.Instance.Client.DespawnNode(GetParent()); 66 | #endif 67 | } 68 | } 69 | base._ExitTree(); 70 | } 71 | } -------------------------------------------------------------------------------- /addons/mattoha_lobby_system/core/utils/MattohaLobbyKeys.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Mattoha.Core.Utils; 4 | 5 | public static class MattohaLobbyKeys 6 | { 7 | public static string Id { get; private set; } = "Id"; 8 | public static string OwnerId { get; private set; } = "OwnerId"; 9 | public static string Name { get; private set; } = "Name"; 10 | public static string MaxPlayers { get; private set; } = "MaxPlayers"; 11 | public static string PlayersCount { get; private set; } = "PlayersCount"; 12 | public static string IsGameStarted { get; private set; } = "IsGameStarted"; 13 | public static string PrivateProps { get; private set; } = "PrivateProps"; 14 | public static string LobbySceneFile { get; private set; } = "LobbySceneFile"; 15 | 16 | public static List FreezedProperties { get; private set; } = new() { Id, OwnerId, PlayersCount, IsGameStarted }; 17 | 18 | } -------------------------------------------------------------------------------- /addons/mattoha_lobby_system/core/utils/MattohaPlayerKeys.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace Mattoha.Core.Utils; 4 | 5 | static class MattohaPlayerKeys 6 | { 7 | public static string Id { get; private set; } = "Id"; 8 | public static string Username { get; private set; } = "Username"; 9 | public static string JoinedLobbyId { get; private set; } = "JoinedLobbyId"; 10 | public static string TeamId { get; private set; } = "TeamId"; 11 | public static string IsInGame { get; private set; } = "IsInGame"; 12 | public static string PrivateProps { get; private set; } = "PrivateProps"; 13 | public static string ChatProps { get; private set; } = "ChatProps"; 14 | 15 | public static List FreezedProperties { get; private set; } = new() { Id, JoinedLobbyId, IsInGame }; 16 | 17 | } 18 | -------------------------------------------------------------------------------- /addons/mattoha_lobby_system/core/utils/MattohaSpawnKeys.cs: -------------------------------------------------------------------------------- 1 | namespace Mattoha.Core.Utils; 2 | 3 | public class MattohaSpawnKeys 4 | { 5 | public static string SceneFile { get; private set; } = "SceneFile"; 6 | public static string NodeName { get; private set; } = "NodeName"; 7 | public static string ParentPath { get; private set; } = "ParentPath"; 8 | public static string Position { get; private set; } = "Position"; 9 | public static string Rotation { get; private set; } = "Rotation"; 10 | public static string Owner { get; private set; } = "Owner"; 11 | public static string TeamOnly { get; private set; } = "TeamOnly"; 12 | public static string TeamId { get; private set; } = "TeamId"; 13 | public static string AdditionalProps { get; private set; } = "AdditionalProps"; 14 | } -------------------------------------------------------------------------------- /addons/mattoha_lobby_system/mattoha_lobby_system.gd: -------------------------------------------------------------------------------- 1 | @tool 2 | extends EditorPlugin 3 | 4 | func _enter_tree(): 5 | add_custom_type("MattohaGameHolder", "Node2D", preload ("res://addons/mattoha_lobby_system/core/nodes/MattohaGameHolder.cs"), null) 6 | add_custom_type("MattohaSpawner", "Node2D", preload ("res://addons/mattoha_lobby_system/core/nodes/MattohaSpawner.cs"), null) 7 | add_custom_type("MattohaServer", "Node2D", preload ("res://addons/mattoha_lobby_system/core/nodes/MattohaServer.cs"), null) 8 | add_custom_type("MattohaClient", "Node2D", preload ("res://addons/mattoha_lobby_system/core/nodes/MattohaClient.cs"), null) 9 | add_custom_type("MattohaPositionSynchronizer", "Node2D", preload ("res://addons/mattoha_lobby_system/core/nodes/MattohaPositionSynchronizer.cs"), null) 10 | add_custom_type("MattohaRotationSynchronizer", "Node2D", preload ("res://addons/mattoha_lobby_system/core/nodes/MattohaRotationSynchronizer.cs"), null) 11 | add_custom_type("MattohaPickable", "Node2D", preload ("res://addons/mattoha_lobby_system/core/nodes/MattohaPickable.cs"), null) 12 | 13 | add_autoload_singleton("MattohaSystem", "res://addons/mattoha_lobby_system/core/autoload/MattohaSystem.tscn") 14 | add_autoload_singleton("MattohaSystemGD", "res://addons/mattoha_lobby_system/gd_bind/nodes/mattoha_system.gd") 15 | 16 | func _exit_tree(): 17 | # Clean-up of the plugin goes here. 18 | remove_custom_type("MattohaGameHolder") 19 | remove_custom_type("MattohaSpawner") 20 | remove_custom_type("MattohaServer") 21 | remove_custom_type("MattohaClient") 22 | remove_custom_type("MattohaPositionSynchronizer") 23 | remove_custom_type("MattohaRotationSynchronizer") 24 | remove_custom_type("MattohaPickable") 25 | 26 | remove_autoload_singleton("MattohaSystem") 27 | remove_autoload_singleton("MattohaSystemGD") 28 | -------------------------------------------------------------------------------- /addons/mattoha_lobby_system/plugin.cfg: -------------------------------------------------------------------------------- 1 | [plugin] 2 | 3 | name="MattohaLobbySystem" 4 | description="" 5 | author="Zer0xTJ" 6 | version="0.2.4" 7 | script="mattoha_lobby_system.gd" 8 | -------------------------------------------------------------------------------- /csharp_demo_example/scenes/coin.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=5 format=3 uid="uid://hnnapidqk1th"] 2 | 3 | [ext_resource type="Texture2D" uid="uid://wcxowoxvkef7" path="res://icon.svg" id="1_2yae6"] 4 | [ext_resource type="Script" path="res://csharp_demo_example/scripts/Coin.cs" id="1_d1hfj"] 5 | [ext_resource type="Script" path="res://addons/mattoha_lobby_system/core/nodes/MattohaSpawner.cs" id="2_flket"] 6 | 7 | [sub_resource type="CircleShape2D" id="CircleShape2D_snnoe"] 8 | radius = 66.0 9 | 10 | [node name="Coin" type="Area2D"] 11 | modulate = Color(0.856132, 0.708794, 0, 1) 12 | position = Vector2(1, 1) 13 | scale = Vector2(0.329583, 0.317051) 14 | collision_layer = 2 15 | script = ExtResource("1_d1hfj") 16 | 17 | [node name="Sprite2D" type="Sprite2D" parent="."] 18 | texture = ExtResource("1_2yae6") 19 | 20 | [node name="CollisionShape2D" type="CollisionShape2D" parent="."] 21 | shape = SubResource("CircleShape2D_snnoe") 22 | debug_color = Color(0.851468, 0.000855187, 0.896501, 0.42) 23 | 24 | [node name="MattohaSpawner" type="Node2D" parent="."] 25 | script = ExtResource("2_flket") 26 | AutoSpawn = false 27 | HandleByServer = true 28 | 29 | [connection signal="body_entered" from="." to="." method="OnBodyEntered"] 30 | -------------------------------------------------------------------------------- /csharp_demo_example/scenes/create_lobby.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://najc1uun72o3"] 2 | 3 | [ext_resource type="Script" path="res://csharp_demo_example/scripts/CreateLobby.cs" id="1_4w86w"] 4 | 5 | [node name="CreateLobby" type="Control"] 6 | layout_mode = 3 7 | anchors_preset = 15 8 | anchor_right = 1.0 9 | anchor_bottom = 1.0 10 | grow_horizontal = 2 11 | grow_vertical = 2 12 | script = ExtResource("1_4w86w") 13 | 14 | [node name="PanelContainer" type="PanelContainer" parent="."] 15 | layout_mode = 1 16 | anchors_preset = 8 17 | anchor_left = 0.5 18 | anchor_top = 0.5 19 | anchor_right = 0.5 20 | anchor_bottom = 0.5 21 | offset_left = -288.0 22 | offset_top = -136.0 23 | offset_right = 288.0 24 | offset_bottom = 136.0 25 | grow_horizontal = 2 26 | grow_vertical = 2 27 | 28 | [node name="MarginContainer" type="MarginContainer" parent="PanelContainer"] 29 | layout_mode = 2 30 | theme_override_constants/margin_left = 10 31 | theme_override_constants/margin_top = 10 32 | theme_override_constants/margin_right = 10 33 | theme_override_constants/margin_bottom = 10 34 | 35 | [node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer"] 36 | layout_mode = 2 37 | 38 | [node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"] 39 | layout_mode = 2 40 | theme_type_variation = &"HeaderMedium" 41 | text = "Create New Lobby" 42 | 43 | [node name="Spacer" type="Control" parent="PanelContainer/MarginContainer/VBoxContainer"] 44 | custom_minimum_size = Vector2(0, 10) 45 | layout_mode = 2 46 | 47 | [node name="Label2" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"] 48 | layout_mode = 2 49 | text = "Lobby Name:" 50 | 51 | [node name="LobbyNameLineEdit" type="LineEdit" parent="PanelContainer/MarginContainer/VBoxContainer"] 52 | unique_name_in_owner = true 53 | layout_mode = 2 54 | placeholder_text = "Enter lobby name ..." 55 | 56 | [node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer"] 57 | layout_mode = 2 58 | size_flags_vertical = 10 59 | 60 | [node name="Spaceer" type="Control" parent="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"] 61 | layout_mode = 2 62 | size_flags_horizontal = 3 63 | 64 | [node name="CreateButton" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"] 65 | unique_name_in_owner = true 66 | layout_mode = 2 67 | text = "Continue" 68 | 69 | [connection signal="pressed" from="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/CreateButton" to="." method="OnCreateLobbyButtonPressed"] 70 | -------------------------------------------------------------------------------- /csharp_demo_example/scenes/game.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=3 uid="uid://bf5pnbm0fm7qi"] 2 | 3 | [ext_resource type="PackedScene" uid="uid://hnnapidqk1th" path="res://csharp_demo_example/scenes/coin.tscn" id="1_bcx0l"] 4 | [ext_resource type="Script" path="res://csharp_demo_example/scripts/Game.cs" id="1_l4exr"] 5 | 6 | [node name="Game" type="Node2D"] 7 | script = ExtResource("1_l4exr") 8 | 9 | [node name="Camera2D" type="Camera2D" parent="."] 10 | position = Vector2(74, 44) 11 | 12 | [node name="Coin" parent="." instance=ExtResource("1_bcx0l")] 13 | position = Vector2(290, 138) 14 | 15 | [node name="Coin2" parent="." instance=ExtResource("1_bcx0l")] 16 | position = Vector2(-239, 161) 17 | 18 | [node name="Coin3" parent="." instance=ExtResource("1_bcx0l")] 19 | position = Vector2(-132, -84) 20 | -------------------------------------------------------------------------------- /csharp_demo_example/scenes/game_holder.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://ddr2vmfusqyqg"] 2 | 3 | [ext_resource type="Script" path="res://addons/mattoha_lobby_system/core/nodes/MattohaGameHolder.cs" id="1_1gxij"] 4 | 5 | [node name="GameHolder" type="Node2D"] 6 | script = ExtResource("1_1gxij") 7 | -------------------------------------------------------------------------------- /csharp_demo_example/scenes/lobbies.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=3 uid="uid://db78nr00o2o"] 2 | 3 | [ext_resource type="Script" path="res://csharp_demo_example/scripts/Lobbies.cs" id="1_t2ss4"] 4 | [ext_resource type="PackedScene" uid="uid://dlcdjul4fk705" path="res://csharp_demo_example/scenes/slots/lobby_slot.tscn" id="2_kswa7"] 5 | 6 | [node name="Lobbies" type="Control"] 7 | layout_mode = 3 8 | anchors_preset = 15 9 | anchor_right = 1.0 10 | anchor_bottom = 1.0 11 | grow_horizontal = 2 12 | grow_vertical = 2 13 | script = ExtResource("1_t2ss4") 14 | LobbySlot = ExtResource("2_kswa7") 15 | 16 | [node name="PanelContainer" type="PanelContainer" parent="."] 17 | layout_mode = 1 18 | anchors_preset = 8 19 | anchor_left = 0.5 20 | anchor_top = 0.5 21 | anchor_right = 0.5 22 | anchor_bottom = 0.5 23 | offset_left = -360.0 24 | offset_top = -170.0 25 | offset_right = 360.0 26 | offset_bottom = 170.0 27 | grow_horizontal = 2 28 | grow_vertical = 2 29 | 30 | [node name="MarginContainer" type="MarginContainer" parent="PanelContainer"] 31 | layout_mode = 2 32 | theme_override_constants/margin_left = 10 33 | theme_override_constants/margin_top = 10 34 | theme_override_constants/margin_right = 10 35 | theme_override_constants/margin_bottom = 10 36 | 37 | [node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer"] 38 | layout_mode = 2 39 | 40 | [node name="HBoxContainer2" type="HBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer"] 41 | layout_mode = 2 42 | 43 | [node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer2"] 44 | layout_mode = 2 45 | size_flags_horizontal = 3 46 | theme_type_variation = &"HeaderMedium" 47 | text = "Lobbies List" 48 | 49 | [node name="CreateLobbyButton" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer2"] 50 | unique_name_in_owner = true 51 | layout_mode = 2 52 | text = "Create Lobby" 53 | 54 | [node name="Spacer" type="Control" parent="PanelContainer/MarginContainer/VBoxContainer"] 55 | custom_minimum_size = Vector2(0, 10) 56 | layout_mode = 2 57 | 58 | [node name="ScrollContainer" type="ScrollContainer" parent="PanelContainer/MarginContainer/VBoxContainer"] 59 | layout_mode = 2 60 | size_flags_vertical = 3 61 | 62 | [node name="LobbiesContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer/ScrollContainer"] 63 | unique_name_in_owner = true 64 | layout_mode = 2 65 | size_flags_horizontal = 3 66 | size_flags_vertical = 3 67 | 68 | [connection signal="pressed" from="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer2/CreateLobbyButton" to="." method="OpenCreateLobbyScene"] 69 | -------------------------------------------------------------------------------- /csharp_demo_example/scenes/main_menu.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://ejnt53rqx4td"] 2 | 3 | [ext_resource type="Script" path="res://csharp_demo_example/scripts/MainMenu.cs" id="1_40jr6"] 4 | 5 | [node name="MainMenu" type="Control"] 6 | layout_mode = 3 7 | anchors_preset = 15 8 | anchor_right = 1.0 9 | anchor_bottom = 1.0 10 | grow_horizontal = 2 11 | grow_vertical = 2 12 | script = ExtResource("1_40jr6") 13 | 14 | [node name="PanelContainer" type="PanelContainer" parent="."] 15 | layout_mode = 1 16 | anchors_preset = 8 17 | anchor_left = 0.5 18 | anchor_top = 0.5 19 | anchor_right = 0.5 20 | anchor_bottom = 0.5 21 | offset_left = -201.0 22 | offset_top = -33.0 23 | offset_right = 201.0 24 | offset_bottom = 33.0 25 | grow_horizontal = 2 26 | grow_vertical = 2 27 | 28 | [node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] 29 | layout_mode = 2 30 | size_flags_vertical = 0 31 | 32 | [node name="ServerButton" type="Button" parent="PanelContainer/VBoxContainer"] 33 | layout_mode = 2 34 | text = "SERVER" 35 | 36 | [node name="ClientButton" type="Button" parent="PanelContainer/VBoxContainer"] 37 | layout_mode = 2 38 | text = "CLIENT" 39 | 40 | [connection signal="pressed" from="PanelContainer/VBoxContainer/ServerButton" to="." method="StartServer"] 41 | [connection signal="pressed" from="PanelContainer/VBoxContainer/ClientButton" to="." method="StartClient"] 42 | -------------------------------------------------------------------------------- /csharp_demo_example/scenes/player.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=7 format=3 uid="uid://c1xsajn74al37"] 2 | 3 | [ext_resource type="Script" path="res://csharp_demo_example/scripts/Player.cs" id="1_14vrl"] 4 | [ext_resource type="Texture2D" uid="uid://wcxowoxvkef7" path="res://icon.svg" id="2_pxpn8"] 5 | [ext_resource type="Script" path="res://addons/mattoha_lobby_system/core/nodes/MattohaSynchronizerModifier.cs" id="3_n4xde"] 6 | [ext_resource type="Script" path="res://addons/mattoha_lobby_system/core/nodes/MattohaSpawner.cs" id="4_brh8d"] 7 | 8 | [sub_resource type="CircleShape2D" id="CircleShape2D_4d5lc"] 9 | 10 | [sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_ab1fq"] 11 | properties/0/path = NodePath(".:position") 12 | properties/0/spawn = true 13 | properties/0/replication_mode = 2 14 | 15 | [node name="Player" type="CharacterBody2D"] 16 | scale = Vector2(0.985431, 1.01452) 17 | collision_mask = 2 18 | script = ExtResource("1_14vrl") 19 | 20 | [node name="Sprite2D" type="Sprite2D" parent="."] 21 | scale = Vector2(0.4, 0.4) 22 | texture = ExtResource("2_pxpn8") 23 | 24 | [node name="CollisionShape2D" type="CollisionShape2D" parent="."] 25 | shape = SubResource("CircleShape2D_4d5lc") 26 | 27 | [node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."] 28 | replication_config = SubResource("SceneReplicationConfig_ab1fq") 29 | public_visibility = false 30 | script = ExtResource("3_n4xde") 31 | 32 | [node name="MattohaSpawner" type="Node2D" parent="."] 33 | script = ExtResource("4_brh8d") 34 | AdditionalProps = ["Foo", "Sprite2D:scale"] 35 | -------------------------------------------------------------------------------- /csharp_demo_example/scenes/projectile.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://7otegvmwvo74"] 2 | 3 | [ext_resource type="Texture2D" uid="uid://wcxowoxvkef7" path="res://icon.svg" id="1_6xgft"] 4 | 5 | [node name="Projectile" type="Node2D"] 6 | 7 | [node name="Sprite2D" type="Sprite2D" parent="."] 8 | modulate = Color(1, 0.392157, 1, 1) 9 | scale = Vector2(0.15, 0.15) 10 | texture = ExtResource("1_6xgft") 11 | -------------------------------------------------------------------------------- /csharp_demo_example/scenes/slots/lobby_slot.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://dlcdjul4fk705"] 2 | 3 | [ext_resource type="Script" path="res://csharp_demo_example/scripts/LobbySlot.cs" id="1_rmpdp"] 4 | 5 | [node name="LobbySlot" type="HBoxContainer"] 6 | scale = Vector2(-0.149272, 0.73052) 7 | script = ExtResource("1_rmpdp") 8 | 9 | [node name="LobbyNameLabel" type="Label" parent="."] 10 | unique_name_in_owner = true 11 | layout_mode = 2 12 | size_flags_horizontal = 3 13 | text = "Lobby Name" 14 | 15 | [node name="PlayersCountLabel" type="Label" parent="."] 16 | unique_name_in_owner = true 17 | layout_mode = 2 18 | size_flags_horizontal = 3 19 | size_flags_stretch_ratio = 1.5 20 | text = "Lobby Name" 21 | 22 | [node name="JoinButton" type="Button" parent="."] 23 | layout_mode = 2 24 | focus_mode = 0 25 | text = "JOIN" 26 | 27 | [connection signal="pressed" from="JoinButton" to="." method="JoinLobby"] 28 | -------------------------------------------------------------------------------- /csharp_demo_example/scenes/user_dialog.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://ckxna1a8ju0xy"] 2 | 3 | [ext_resource type="Script" path="res://csharp_demo_example/scripts/UserDialog.cs" id="1_v5uge"] 4 | 5 | [node name="UserDialog" type="Control"] 6 | layout_mode = 3 7 | anchors_preset = 15 8 | anchor_right = 1.0 9 | anchor_bottom = 1.0 10 | grow_horizontal = 2 11 | grow_vertical = 2 12 | script = ExtResource("1_v5uge") 13 | 14 | [node name="PanelContainer" type="PanelContainer" parent="."] 15 | layout_mode = 1 16 | anchors_preset = 8 17 | anchor_left = 0.5 18 | anchor_top = 0.5 19 | anchor_right = 0.5 20 | anchor_bottom = 0.5 21 | offset_left = -288.0 22 | offset_top = -136.0 23 | offset_right = 288.0 24 | offset_bottom = 136.0 25 | grow_horizontal = 2 26 | grow_vertical = 2 27 | 28 | [node name="MarginContainer" type="MarginContainer" parent="PanelContainer"] 29 | layout_mode = 2 30 | theme_override_constants/margin_left = 10 31 | theme_override_constants/margin_top = 10 32 | theme_override_constants/margin_right = 10 33 | theme_override_constants/margin_bottom = 10 34 | 35 | [node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer"] 36 | layout_mode = 2 37 | 38 | [node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"] 39 | layout_mode = 2 40 | theme_type_variation = &"HeaderMedium" 41 | text = "User info" 42 | 43 | [node name="Spacer" type="Control" parent="PanelContainer/MarginContainer/VBoxContainer"] 44 | custom_minimum_size = Vector2(0, 10) 45 | layout_mode = 2 46 | 47 | [node name="Label2" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"] 48 | layout_mode = 2 49 | text = "Username :" 50 | 51 | [node name="UsernameLineEdit" type="LineEdit" parent="PanelContainer/MarginContainer/VBoxContainer"] 52 | unique_name_in_owner = true 53 | layout_mode = 2 54 | placeholder_text = "Enter a susername" 55 | 56 | [node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer"] 57 | layout_mode = 2 58 | size_flags_vertical = 10 59 | 60 | [node name="Spaceer" type="Control" parent="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"] 61 | layout_mode = 2 62 | size_flags_horizontal = 3 63 | 64 | [node name="ContinueButton" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"] 65 | unique_name_in_owner = true 66 | layout_mode = 2 67 | focus_mode = 0 68 | text = "Continue" 69 | 70 | [connection signal="pressed" from="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/ContinueButton" to="." method="OnContinueButtonPressed"] 71 | -------------------------------------------------------------------------------- /csharp_demo_example/scripts/Coin.cs: -------------------------------------------------------------------------------- 1 | using Godot; 2 | 3 | namespace Mattoha.Demo; 4 | public partial class Coin : Area2D 5 | { 6 | 7 | public void OnBodyEntered(Node2D body) 8 | { 9 | if (Multiplayer.IsServer()) // despawn by server only 10 | { 11 | QueueFree(); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /csharp_demo_example/scripts/CreateLobby.cs: -------------------------------------------------------------------------------- 1 | using Godot; 2 | using Godot.Collections; 3 | using Mattoha.Nodes; 4 | 5 | namespace Mattoha.Demo; 6 | public partial class CreateLobby : Control 7 | { 8 | private LineEdit _lineEdit; 9 | public override void _Ready() 10 | { 11 | MattohaSystem.Instance.Client.CreateLobbySucceed += OnCreateLobby; 12 | _lineEdit = GetNode("%LobbyNameLineEdit"); 13 | base._Ready(); 14 | } 15 | 16 | private void OnCreateLobby(Dictionary lobbyData) 17 | { 18 | GetTree().ChangeSceneToFile("res://csharp_demo_example/scenes/lobby.tscn"); 19 | } 20 | 21 | public void OnCreateLobbyButtonPressed() 22 | { 23 | var lobbyData = new Dictionary 24 | { 25 | { "Password", "123123" }, 26 | { "Name", _lineEdit.Text }, 27 | { "PrivateProps", new Array { "Password" } } 28 | }; 29 | MattohaSystem.Instance.Client.CreateLobby(lobbyData, "res://csharp_demo_example/scenes/game.tscn"); 30 | } 31 | 32 | public override void _ExitTree() 33 | { 34 | 35 | MattohaSystem.Instance.Client.CreateLobbySucceed -= OnCreateLobby; 36 | base._ExitTree(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /csharp_demo_example/scripts/Lobbies.cs: -------------------------------------------------------------------------------- 1 | using Godot; 2 | using Godot.Collections; 3 | using Mattoha.Core.Utils; 4 | using Mattoha.Nodes; 5 | 6 | namespace Mattoha.Demo; 7 | public partial class Lobbies : Control 8 | { 9 | [Export] public PackedScene LobbySlot { get; set; } 10 | private VBoxContainer _lobbiesContainer; 11 | 12 | public override void _Ready() 13 | { 14 | _lobbiesContainer = GetNode("%LobbiesContainer"); 15 | MattohaSystem.Instance.Client.LoadAvailableLobbiesSucceed += OnLoadLobbies; 16 | MattohaSystem.Instance.Client.JoinLobbySucceed += OnJoinLobby; 17 | MattohaSystem.Instance.Client.LoadAvailableLobbies(); 18 | base._Ready(); 19 | } 20 | 21 | private void OnJoinLobby(Dictionary lobbyData) 22 | { 23 | if (lobbyData[MattohaLobbyKeys.IsGameStarted].AsBool()) 24 | { 25 | GetTree().ChangeSceneToFile("res://csharp_demo_example/scenes/game_holder.tscn"); 26 | } 27 | else 28 | { 29 | GetTree().ChangeSceneToFile("res://csharp_demo_example/scenes/lobby.tscn"); 30 | } 31 | } 32 | 33 | private void OnLoadLobbies(Array> lobbies) 34 | { 35 | foreach (var slot in _lobbiesContainer.GetChildren()) 36 | { 37 | slot.QueueFree(); 38 | } 39 | 40 | foreach (var lobby in lobbies) 41 | { 42 | var lobbySlot = LobbySlot.Instantiate(); 43 | lobbySlot.LobbyData = lobby; 44 | _lobbiesContainer.AddChild(lobbySlot); 45 | } 46 | } 47 | 48 | public void OpenCreateLobbyScene() 49 | { 50 | GetTree().ChangeSceneToFile("res://csharp_demo_example/scenes/create_lobby.tscn"); 51 | } 52 | 53 | public override void _ExitTree() 54 | { 55 | MattohaSystem.Instance.Client.LoadAvailableLobbiesSucceed -= OnLoadLobbies; 56 | MattohaSystem.Instance.Client.JoinLobbySucceed -= OnJoinLobby; 57 | base._ExitTree(); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /csharp_demo_example/scripts/LobbySlot.cs: -------------------------------------------------------------------------------- 1 | using Godot; 2 | using Godot.Collections; 3 | using Mattoha.Nodes; 4 | using Mattoha.Core.Utils; 5 | 6 | 7 | namespace Mattoha.Demo; 8 | public partial class LobbySlot : HBoxContainer 9 | { 10 | 11 | public Dictionary LobbyData { get; set; } 12 | 13 | private Label _lobbyNameLabel; 14 | private Label _playersCountLabel; 15 | 16 | public override void _Ready() 17 | { 18 | _lobbyNameLabel = GetNode("%LobbyNameLabel"); 19 | _playersCountLabel = GetNode("%PlayersCountLabel"); 20 | 21 | _lobbyNameLabel.Text = LobbyData["Name"].AsString(); 22 | _playersCountLabel.Text = $"{LobbyData[MattohaLobbyKeys.PlayersCount]} / {LobbyData[MattohaLobbyKeys.MaxPlayers]}"; 23 | base._Ready(); 24 | } 25 | 26 | public void JoinLobby() 27 | { 28 | MattohaSystem.Instance.Client.JoinLobby(LobbyData[MattohaLobbyKeys.Id].AsInt32()); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /csharp_demo_example/scripts/MainMenu.cs: -------------------------------------------------------------------------------- 1 | using Godot; 2 | using Godot.Collections; 3 | using Mattoha.Nodes; 4 | 5 | namespace Mattoha.Demo; 6 | public partial class MainMenu : Control 7 | { 8 | public override void _Ready() 9 | { 10 | MattohaSystem.Instance.Client.PlayerRegistered += OnRegistered; 11 | base._Ready(); 12 | } 13 | 14 | private void OnRegistered(Dictionary playerData) 15 | { 16 | GetTree().ChangeSceneToFile("res://csharp_demo_example/scenes/user_dialog.tscn"); 17 | } 18 | 19 | public void StartServer() 20 | { 21 | MattohaSystem.Instance.StartServer(); 22 | GetTree().ChangeSceneToFile("res://csharp_demo_example/scenes/game_holder.tscn"); 23 | } 24 | 25 | public void StartClient() 26 | { 27 | MattohaSystem.Instance.StartClient(); 28 | } 29 | 30 | 31 | 32 | public override void _ExitTree() 33 | { 34 | MattohaSystem.Instance.Client.PlayerRegistered -= OnRegistered; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /csharp_demo_example/scripts/Player.cs: -------------------------------------------------------------------------------- 1 | using Godot; 2 | using Mattoha.Nodes; 3 | 4 | namespace Mattoha.Demo; 5 | public partial class Player : CharacterBody2D 6 | { 7 | [Export] public string Foo { get; set; } 8 | [Export] public PackedScene ProjectileScene; 9 | [Export] public float Speed = 300; 10 | 11 | private Node _currentProjectile; 12 | 13 | public override void _EnterTree() 14 | { 15 | if (MattohaSystem.Instance.IsNodeOwner(this)) 16 | { 17 | Foo = $"FOO_{GD.Randi() % 100}"; 18 | base._EnterTree(); 19 | GetNode("Sprite2D").Scale = new Vector2(0.25f, 0.25f); 20 | } 21 | } 22 | 23 | public override void _Process(double delta) 24 | { 25 | // only owner can move node; 26 | if (GetMultiplayerAuthority() == Multiplayer.GetUniqueId()) 27 | { 28 | MovePlayer(); 29 | SpawnProjectile(); 30 | } 31 | base._Process(delta); 32 | } 33 | 34 | private void MovePlayer() 35 | { 36 | var direction = Input.GetVector("ui_left", "ui_right", "ui_up", "ui_down"); 37 | Velocity = direction.Normalized() * Speed; 38 | MoveAndSlide(); 39 | } 40 | 41 | private void SpawnProjectile() 42 | { 43 | if (Input.IsActionJustPressed("ui_jump")) 44 | { 45 | if (_currentProjectile == null) 46 | { 47 | // spawn projectile 48 | } 49 | else 50 | { 51 | _currentProjectile.QueueFree(); // projectile has "replicator node aith auto despawn enabled" 52 | _currentProjectile = null; 53 | } 54 | } 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /csharp_demo_example/scripts/UserDialog.cs: -------------------------------------------------------------------------------- 1 | using Godot; 2 | using Godot.Collections; 3 | using Mattoha.Nodes; 4 | 5 | namespace Mattoha.Core; 6 | public partial class UserDialog : Control 7 | { 8 | private LineEdit _usernameInput; 9 | public override void _Ready() 10 | { 11 | _usernameInput = GetNode("%UsernameLineEdit"); 12 | MattohaSystem.Instance.Client.SetPlayerDataSucceed += OnSetPlayerData; 13 | base._Ready(); 14 | } 15 | 16 | private void OnSetPlayerData(Dictionary playerData) 17 | { 18 | GetTree().ChangeSceneToFile("res://csharp_demo_example/scenes/lobbies.tscn"); 19 | } 20 | 21 | public void OnContinueButtonPressed() 22 | { 23 | var data = new Dictionary() 24 | { 25 | { "Username", _usernameInput.Text }, 26 | { "Health", 100 }, 27 | { "Coins", 30 }, 28 | }; 29 | MattohaSystem.Instance.Client.SetPlayerData(data); 30 | } 31 | 32 | public override void _ExitTree() 33 | { 34 | 35 | MattohaSystem.Instance.Client.SetPlayerDataSucceed -= OnSetPlayerData; 36 | base._ExitTree(); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /csharp_demo_example/scripts/game.cs: -------------------------------------------------------------------------------- 1 | using Godot; 2 | using Mattoha.Nodes; 3 | 4 | namespace Mattoha.Demo; 5 | public partial class Game : Node2D 6 | { 7 | public override void _Ready() 8 | { 9 | if (Multiplayer.IsServer()) return; 10 | SpawnPlayer(); 11 | base._Ready(); 12 | } 13 | 14 | 15 | private void SpawnPlayer() 16 | { 17 | var instance = MattohaSystem.Instance.CreateInstance("res://csharp_demo_example/scenes/player.tscn") as Node2D; 18 | instance.Rotation = 15; 19 | instance.Position = new Vector2(GD.Randi() % 100, GD.Randi() % 100); 20 | AddChild(instance); 21 | } 22 | 23 | } -------------------------------------------------------------------------------- /docs/annotated_dup.js: -------------------------------------------------------------------------------- 1 | var annotated_dup = 2 | [ 3 | [ "Mattoha", "namespace_mattoha.html", [ 4 | [ "Core", "namespace_mattoha_1_1_core.html", [ 5 | [ "Utils", "namespace_mattoha_1_1_core_1_1_utils.html", [ 6 | [ "MattohaSpawnKeys", "class_mattoha_1_1_core_1_1_utils_1_1_mattoha_spawn_keys.html", null ] 7 | ] ], 8 | [ "MattohaUtils", "class_mattoha_1_1_core_1_1_mattoha_utils.html", null ] 9 | ] ], 10 | [ "Misc", "namespace_mattoha_1_1_misc.html", [ 11 | [ "MattohaServerMiddleware", "class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html", "class_mattoha_1_1_misc_1_1_mattoha_server_middleware" ] 12 | ] ], 13 | [ "Nodes", "namespace_mattoha_1_1_nodes.html", [ 14 | [ "MattohaClient", "class_mattoha_1_1_nodes_1_1_mattoha_client.html", "class_mattoha_1_1_nodes_1_1_mattoha_client" ], 15 | [ "MattohaGameHolder", "class_mattoha_1_1_nodes_1_1_mattoha_game_holder.html", "class_mattoha_1_1_nodes_1_1_mattoha_game_holder" ], 16 | [ "MattohaPickable", "class_mattoha_1_1_nodes_1_1_mattoha_pickable.html", null ], 17 | [ "MattohaPositionSynchronizer", "class_mattoha_1_1_nodes_1_1_mattoha_position_synchronizer.html", null ], 18 | [ "MattohaRotationSynchronizer", "class_mattoha_1_1_nodes_1_1_mattoha_rotation_synchronizer.html", null ], 19 | [ "MattohaServer", "class_mattoha_1_1_nodes_1_1_mattoha_server.html", "class_mattoha_1_1_nodes_1_1_mattoha_server" ], 20 | [ "MattohaSpawner", "class_mattoha_1_1_nodes_1_1_mattoha_spawner.html", "class_mattoha_1_1_nodes_1_1_mattoha_spawner" ], 21 | [ "MattohaSynchronizerModifier", "class_mattoha_1_1_nodes_1_1_mattoha_synchronizer_modifier.html", null ], 22 | [ "MattohaSystem", "class_mattoha_1_1_nodes_1_1_mattoha_system.html", "class_mattoha_1_1_nodes_1_1_mattoha_system" ] 23 | ] ] 24 | ] ] 25 | ]; -------------------------------------------------------------------------------- /docs/bc_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/bc_s.png -------------------------------------------------------------------------------- /docs/bc_sd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/bc_sd.png -------------------------------------------------------------------------------- /docs/class_mattoha_1_1_nodes_1_1_mattoha_game_holder.js: -------------------------------------------------------------------------------- 1 | var class_mattoha_1_1_nodes_1_1_mattoha_game_holder = 2 | [ 3 | [ "AutoDespawnRemovedSceneNodes", "class_mattoha_1_1_nodes_1_1_mattoha_game_holder.html#a7ee22bafd536bd099b1a3d2b05034b1a", null ], 4 | [ "AutoSpawnLobbyNodes", "class_mattoha_1_1_nodes_1_1_mattoha_game_holder.html#ab3ffb1a39169f54f28a988390d3e084c", null ] 5 | ]; -------------------------------------------------------------------------------- /docs/class_mattoha_1_1_nodes_1_1_mattoha_server.js: -------------------------------------------------------------------------------- 1 | var class_mattoha_1_1_nodes_1_1_mattoha_server = 2 | [ 3 | [ "DespawnNode", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#af16579314df93c9f18139730ec005695", null ], 4 | [ "FindRemovedSceneNode", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#a6338efea87463be03eff181149a0e855", null ], 5 | [ "FindSpawnedNode", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#a8ca2140518706d8c48e6535ea82df10a", null ], 6 | [ "GetLobbyPlayers", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#a0664d2be9bc4152be5607144787bee79", null ], 7 | [ "GetLobbyPlayersSecured", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#adb3632b5ec3dcccd8645e156be7bad8c", null ], 8 | [ "GetPlayer", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#a14b39ba79b3b21a6c4cb2388188c8505", null ], 9 | [ "GetPlayerLobby", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#a033881dd16d3ebdb6ea031154e63278f", null ], 10 | [ "LoadLobbyPlayersForAll", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#a6825f39b2a7897c0f17a88fa77921bd1", null ], 11 | [ "LobbyGameEndedEventHandler", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#afaecf01ecdd50534f0915c200cad37a2", null ], 12 | [ "LobbyGameStartedEventHandler", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#ad05ab64db75f0e9ca0a8ac715af6a8b7", null ], 13 | [ "LobbyRemovedEventHandler", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#acef53b67ea5d356ab01dfd86fd086bc0", null ], 14 | [ "PlayerJoinedLobbyEventHandler", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#acfc37113f2ed8b788bb743a99b46d792", null ], 15 | [ "PlayerLeftLobbyEventHandler", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#a313891e337283266cf839cc8ee65a42a", null ], 16 | [ "RefreshAvailableLobbiesForAll", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#a10fb49c368ba74be0caa34340ed3d01c", null ], 17 | [ "RemovePlayerFromLobby", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#a02cd3319092d7a014388fc34c01bb67f", null ], 18 | [ "SendRpcForPlayersInLobby", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#a38a9eb918f8a76c43acf216813ff8999", null ], 19 | [ "SpawnNode", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#ae5b2615cc47013ef577df854364c02d1", null ], 20 | [ "GameHolder", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#a78b9fd33f27535d63b2b31c9a1ca7515", null ], 21 | [ "Lobbies", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#a358d72c2d26b62f290f5dbfd734abc77", null ], 22 | [ "MiddlewareNode", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#ac18e5630c547e3f592d4eddcb8be04b0", null ], 23 | [ "Players", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#a52ad49188584d8fc169f26855709f012", null ], 24 | [ "RemovedSceneNodes", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#a4e7d80e1c52e100f4eefe6016a4e0767", null ], 25 | [ "SpawnedNodes", "class_mattoha_1_1_nodes_1_1_mattoha_server.html#a22b013e96ba7ea326502b41ebc4cbca3", null ] 26 | ]; -------------------------------------------------------------------------------- /docs/class_mattoha_1_1_nodes_1_1_mattoha_spawner.js: -------------------------------------------------------------------------------- 1 | var class_mattoha_1_1_nodes_1_1_mattoha_spawner = 2 | [ 3 | [ "AdditionalProps", "class_mattoha_1_1_nodes_1_1_mattoha_spawner.html#ac6d121b890a3686cb745eadb07b59436", null ], 4 | [ "AutoDespawn", "class_mattoha_1_1_nodes_1_1_mattoha_spawner.html#abbef73f1dbb81ee9fc3504d1d2066088", null ], 5 | [ "AutoSpawn", "class_mattoha_1_1_nodes_1_1_mattoha_spawner.html#a449b5caa22bf74fa047d9f4dad5cff99", null ], 6 | [ "HandleByServer", "class_mattoha_1_1_nodes_1_1_mattoha_spawner.html#a067afac00bbec20dcc755326eee72c33", null ], 7 | [ "SpawnForTeamOnly", "class_mattoha_1_1_nodes_1_1_mattoha_spawner.html#a04db46bd2a6f67a0d16c1232ed31db3e", null ] 8 | ]; -------------------------------------------------------------------------------- /docs/class_mattoha_1_1_nodes_1_1_mattoha_system.js: -------------------------------------------------------------------------------- 1 | var class_mattoha_1_1_nodes_1_1_mattoha_system = 2 | [ 3 | [ "ClientRpcReceivedEventHandler", "class_mattoha_1_1_nodes_1_1_mattoha_system.html#a6413c68901a715d99fe4aec0152b659a", null ], 4 | [ "CreateInstance", "class_mattoha_1_1_nodes_1_1_mattoha_system.html#a451fb4e49bef46e00d0bd86e6292b501", null ], 5 | [ "CreateInstance", "class_mattoha_1_1_nodes_1_1_mattoha_system.html#ab74e58eb97c053a131e19fef4ca42a6d", null ], 6 | [ "DespawnNodeFromPayload", "class_mattoha_1_1_nodes_1_1_mattoha_system.html#a3f80b1f27269b65a39a1687ea7533693", null ], 7 | [ "GenerateNodePayloadData", "class_mattoha_1_1_nodes_1_1_mattoha_system.html#a4900f0d775a7af03911809e0c3d1264b", null ], 8 | [ "GetLobbyNodeFor", "class_mattoha_1_1_nodes_1_1_mattoha_system.html#a464bd1f5f7e429017cd921c91523624b", null ], 9 | [ "IsLobbyOwner", "class_mattoha_1_1_nodes_1_1_mattoha_system.html#a1180c017d90b525aab6a2d84b3603829", null ], 10 | [ "IsNodeOwner", "class_mattoha_1_1_nodes_1_1_mattoha_system.html#a37004354c863e1c6d0dff36bc3a20c3e", null ], 11 | [ "SendReliableClientRpc", "class_mattoha_1_1_nodes_1_1_mattoha_system.html#a9714f0524fa4e16d95a946e90b07994f", null ], 12 | [ "SendReliableServerRpc", "class_mattoha_1_1_nodes_1_1_mattoha_system.html#ac203dbb809fc9176c38d90cb7262bf8c", null ], 13 | [ "ServerRpcReceivedEventHandler", "class_mattoha_1_1_nodes_1_1_mattoha_system.html#a59205e882061dd51b34ca3ab60243b6d", null ], 14 | [ "SpawnNodeFromPayload", "class_mattoha_1_1_nodes_1_1_mattoha_system.html#a8df092c69202e6779420fae560ee3ec7", null ], 15 | [ "StartClient", "class_mattoha_1_1_nodes_1_1_mattoha_system.html#a1f741ebe1badc82285296a6f196a6db1", null ], 16 | [ "StartServer", "class_mattoha_1_1_nodes_1_1_mattoha_system.html#aedb5dce3bd0d2f59749f77c309ae86b7", null ], 17 | [ "AutoLoadAvailableLobbies", "class_mattoha_1_1_nodes_1_1_mattoha_system.html#ab0b8dfc0059cc4a9e6b3e8d5c379ae77", null ], 18 | [ "LobbySize", "class_mattoha_1_1_nodes_1_1_mattoha_system.html#a6a0b5096e0e76a4f976b5b1c66e1e318", null ] 19 | ]; -------------------------------------------------------------------------------- /docs/clipboard.js: -------------------------------------------------------------------------------- 1 | /** 2 | 3 | The code below is based on the Doxygen Awesome project, see 4 | https://github.com/jothepro/doxygen-awesome-css 5 | 6 | MIT License 7 | 8 | Copyright (c) 2021 - 2022 jothepro 9 | 10 | Permission is hereby granted, free of charge, to any person obtaining a copy 11 | of this software and associated documentation files (the "Software"), to deal 12 | in the Software without restriction, including without limitation the rights 13 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 14 | copies of the Software, and to permit persons to whom the Software is 15 | furnished to do so, subject to the following conditions: 16 | 17 | The above copyright notice and this permission notice shall be included in all 18 | copies or substantial portions of the Software. 19 | 20 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 21 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 22 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 23 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 24 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 25 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 26 | SOFTWARE. 27 | 28 | */ 29 | 30 | let clipboard_title = "Copy to clipboard" 31 | let clipboard_icon = `` 32 | let clipboard_successIcon = `` 33 | let clipboard_successDuration = 1000 34 | 35 | $(function() { 36 | if(navigator.clipboard) { 37 | const fragments = document.getElementsByClassName("fragment") 38 | for(const fragment of fragments) { 39 | const clipboard_div = document.createElement("div") 40 | clipboard_div.classList.add("clipboard") 41 | clipboard_div.innerHTML = clipboard_icon 42 | clipboard_div.title = clipboard_title 43 | $(clipboard_div).click(function() { 44 | const content = this.parentNode.cloneNode(true) 45 | // filter out line number and folded fragments from file listings 46 | content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) 47 | let text = content.textContent 48 | // remove trailing newlines and trailing spaces from empty lines 49 | text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') 50 | navigator.clipboard.writeText(text); 51 | this.classList.add("success") 52 | this.innerHTML = clipboard_successIcon 53 | window.setTimeout(() => { // switch back to normal icon after timeout 54 | this.classList.remove("success") 55 | this.innerHTML = clipboard_icon 56 | }, clipboard_successDuration); 57 | }) 58 | fragment.insertBefore(clipboard_div, fragment.firstChild) 59 | } 60 | } 61 | }) 62 | -------------------------------------------------------------------------------- /docs/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/closed.png -------------------------------------------------------------------------------- /docs/cookie.js: -------------------------------------------------------------------------------- 1 | /*! 2 | Cookie helper functions 3 | Copyright (c) 2023 Dimitri van Heesch 4 | Released under MIT license. 5 | */ 6 | let Cookie = { 7 | cookie_namespace: 'doxygen_', 8 | 9 | readSetting(cookie,defVal) { 10 | if (window.chrome) { 11 | const val = localStorage.getItem(this.cookie_namespace+cookie) || 12 | sessionStorage.getItem(this.cookie_namespace+cookie); 13 | if (val) return val; 14 | } else { 15 | let myCookie = this.cookie_namespace+cookie+"="; 16 | if (document.cookie) { 17 | const index = document.cookie.indexOf(myCookie); 18 | if (index != -1) { 19 | const valStart = index + myCookie.length; 20 | let valEnd = document.cookie.indexOf(";", valStart); 21 | if (valEnd == -1) { 22 | valEnd = document.cookie.length; 23 | } 24 | return document.cookie.substring(valStart, valEnd); 25 | } 26 | } 27 | } 28 | return defVal; 29 | }, 30 | 31 | writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete 32 | if (window.chrome) { 33 | if (days==0) { 34 | sessionStorage.setItem(this.cookie_namespace+cookie,val); 35 | } else { 36 | localStorage.setItem(this.cookie_namespace+cookie,val); 37 | } 38 | } else { 39 | let date = new Date(); 40 | date.setTime(date.getTime()+(days*24*60*60*1000)); 41 | const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; 42 | document.cookie = this.cookie_namespace + cookie + "=" + 43 | val + "; SameSite=Lax;" + expiration + "path=/"; 44 | } 45 | }, 46 | 47 | eraseSetting(cookie) { 48 | if (window.chrome) { 49 | if (localStorage.getItem(this.cookie_namespace+cookie)) { 50 | localStorage.removeItem(this.cookie_namespace+cookie); 51 | } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { 52 | sessionStorage.removeItem(this.cookie_namespace+cookie); 53 | } 54 | } else { 55 | this.writeSetting(cookie,'',-1); 56 | } 57 | }, 58 | } 59 | -------------------------------------------------------------------------------- /docs/dir_1233bc0a3e869c10318208e4553a4fcb.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | GodotMattohaLobbySystem: addons Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | GodotMattohaLobbySystem 0.2.4 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 44 | 49 | 50 | 51 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 69 | 70 | 71 | 76 | 77 | 78 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | Loading... 91 | Searching... 92 | No Matches 93 | 94 | 95 | 96 | 97 | 98 | 99 | addons Directory Reference 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | addons 108 | Generated by 1.11.0 109 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /docs/dir_74692c01f9002aa62389637c1c9232ea.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | GodotMattohaLobbySystem: addons/mattoha_lobby_system Directory Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | GodotMattohaLobbySystem 0.2.4 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 44 | 49 | 50 | 51 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 69 | 70 | 71 | 76 | 77 | 78 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | Loading... 91 | Searching... 92 | No Matches 93 | 94 | 95 | 96 | 97 | 98 | 99 | mattoha_lobby_system Directory Reference 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | addonsmattoha_lobby_system 108 | Generated by 1.11.0 109 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /docs/doc.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/docd.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/folderclosed.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/folderclosedd.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /docs/folderopen.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /docs/folderopend.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /docs/hierarchy.js: -------------------------------------------------------------------------------- 1 | var hierarchy = 2 | [ 3 | [ "Mattoha.Core.Utils.MattohaSpawnKeys", "class_mattoha_1_1_core_1_1_utils_1_1_mattoha_spawn_keys.html", null ], 4 | [ "Mattoha.Core.MattohaUtils", "class_mattoha_1_1_core_1_1_mattoha_utils.html", null ], 5 | [ "MultiplayerSynchronizer", null, [ 6 | [ "Mattoha.Nodes.MattohaSynchronizerModifier", "class_mattoha_1_1_nodes_1_1_mattoha_synchronizer_modifier.html", null ] 7 | ] ], 8 | [ "Node", null, [ 9 | [ "Mattoha.Misc.MattohaServerMiddleware", "class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html", null ], 10 | [ "Mattoha.Nodes.MattohaClient", "class_mattoha_1_1_nodes_1_1_mattoha_client.html", null ], 11 | [ "Mattoha.Nodes.MattohaGameHolder", "class_mattoha_1_1_nodes_1_1_mattoha_game_holder.html", null ], 12 | [ "Mattoha.Nodes.MattohaPickable", "class_mattoha_1_1_nodes_1_1_mattoha_pickable.html", null ], 13 | [ "Mattoha.Nodes.MattohaPositionSynchronizer", "class_mattoha_1_1_nodes_1_1_mattoha_position_synchronizer.html", null ], 14 | [ "Mattoha.Nodes.MattohaRotationSynchronizer", "class_mattoha_1_1_nodes_1_1_mattoha_rotation_synchronizer.html", null ], 15 | [ "Mattoha.Nodes.MattohaServer", "class_mattoha_1_1_nodes_1_1_mattoha_server.html", null ], 16 | [ "Mattoha.Nodes.MattohaSpawner", "class_mattoha_1_1_nodes_1_1_mattoha_spawner.html", null ], 17 | [ "Mattoha.Nodes.MattohaSystem", "class_mattoha_1_1_nodes_1_1_mattoha_system.html", null ] 18 | ] ] 19 | ]; -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | GodotMattohaLobbySystem: Main Page 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | GodotMattohaLobbySystem 0.2.4 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 44 | 49 | 50 | 51 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 69 | 70 | 71 | 76 | 77 | 78 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | Loading... 91 | Searching... 92 | No Matches 93 | 94 | 95 | 96 | 97 | 98 | 99 | GodotMattohaLobbySystem Documentation 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | Generated by 1.11.0 109 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /docs/menudata.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the JavaScript code in this file. 3 | 4 | The MIT License (MIT) 5 | 6 | Copyright (C) 1997-2020 by Dimitri van Heesch 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 9 | and associated documentation files (the "Software"), to deal in the Software without restriction, 10 | including without limitation the rights to use, copy, modify, merge, publish, distribute, 11 | sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all copies or 15 | substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 18 | BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | @licend The above is the entire license notice for the JavaScript code in this file 24 | */ 25 | var menudata={children:[ 26 | {text:"Main Page",url:"index.html"}, 27 | {text:"Packages",url:"namespaces.html",children:[ 28 | {text:"Package List",url:"namespaces.html"}]}, 29 | {text:"Classes",url:"annotated.html",children:[ 30 | {text:"Class List",url:"annotated.html"}, 31 | {text:"Class Index",url:"classes.html"}, 32 | {text:"Class Hierarchy",url:"hierarchy.html"}, 33 | {text:"Class Members",url:"functions.html",children:[ 34 | {text:"All",url:"functions.html",children:[ 35 | {text:"a",url:"functions.html#index_a"}, 36 | {text:"b",url:"functions.html#index_b"}, 37 | {text:"c",url:"functions.html#index_c"}, 38 | {text:"d",url:"functions.html#index_d"}, 39 | {text:"e",url:"functions.html#index_e"}, 40 | {text:"f",url:"functions.html#index_f"}, 41 | {text:"g",url:"functions.html#index_g"}, 42 | {text:"h",url:"functions.html#index_h"}, 43 | {text:"i",url:"functions.html#index_i"}, 44 | {text:"j",url:"functions.html#index_j"}, 45 | {text:"l",url:"functions.html#index_l"}, 46 | {text:"m",url:"functions.html#index_m"}, 47 | {text:"n",url:"functions.html#index_n"}, 48 | {text:"p",url:"functions.html#index_p"}, 49 | {text:"r",url:"functions.html#index_r"}, 50 | {text:"s",url:"functions.html#index_s"}, 51 | {text:"t",url:"functions.html#index_t"}]}, 52 | {text:"Functions",url:"functions_func.html",children:[ 53 | {text:"a",url:"functions_func.html#index_a"}, 54 | {text:"b",url:"functions_func.html#index_b"}, 55 | {text:"c",url:"functions_func.html#index_c"}, 56 | {text:"d",url:"functions_func.html#index_d"}, 57 | {text:"e",url:"functions_func.html#index_e"}, 58 | {text:"f",url:"functions_func.html#index_f"}, 59 | {text:"g",url:"functions_func.html#index_g"}, 60 | {text:"i",url:"functions_func.html#index_i"}, 61 | {text:"j",url:"functions_func.html#index_j"}, 62 | {text:"l",url:"functions_func.html#index_l"}, 63 | {text:"n",url:"functions_func.html#index_n"}, 64 | {text:"p",url:"functions_func.html#index_p"}, 65 | {text:"r",url:"functions_func.html#index_r"}, 66 | {text:"s",url:"functions_func.html#index_s"}, 67 | {text:"t",url:"functions_func.html#index_t"}]}, 68 | {text:"Properties",url:"functions_prop.html"}]}]}]} 69 | -------------------------------------------------------------------------------- /docs/minus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/minusd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /docs/namespace_mattoha.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | GodotMattohaLobbySystem: Mattoha Namespace Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | GodotMattohaLobbySystem 0.2.4 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 44 | 49 | 50 | 51 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 69 | 70 | 71 | 76 | 77 | 78 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | Loading... 91 | Searching... 92 | No Matches 93 | 94 | 95 | 96 | 97 | 98 | 99 | Mattoha Namespace Reference 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | Mattoha 108 | Generated by 1.11.0 109 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /docs/namespace_mattoha.js: -------------------------------------------------------------------------------- 1 | var namespace_mattoha = 2 | [ 3 | [ "Core", "namespace_mattoha_1_1_core.html", "namespace_mattoha_1_1_core" ], 4 | [ "Misc", "namespace_mattoha_1_1_misc.html", "namespace_mattoha_1_1_misc" ], 5 | [ "Nodes", "namespace_mattoha_1_1_nodes.html", "namespace_mattoha_1_1_nodes" ] 6 | ]; -------------------------------------------------------------------------------- /docs/namespace_mattoha_1_1_core.js: -------------------------------------------------------------------------------- 1 | var namespace_mattoha_1_1_core = 2 | [ 3 | [ "Demo", "namespace_mattoha_1_1_core_1_1_demo.html", null ], 4 | [ "Utils", "namespace_mattoha_1_1_core_1_1_utils.html", "namespace_mattoha_1_1_core_1_1_utils" ], 5 | [ "MattohaUtils", "class_mattoha_1_1_core_1_1_mattoha_utils.html", null ] 6 | ]; -------------------------------------------------------------------------------- /docs/namespace_mattoha_1_1_core_1_1_utils.js: -------------------------------------------------------------------------------- 1 | var namespace_mattoha_1_1_core_1_1_utils = 2 | [ 3 | [ "MattohaSpawnKeys", "class_mattoha_1_1_core_1_1_utils_1_1_mattoha_spawn_keys.html", null ] 4 | ]; -------------------------------------------------------------------------------- /docs/namespace_mattoha_1_1_misc.js: -------------------------------------------------------------------------------- 1 | var namespace_mattoha_1_1_misc = 2 | [ 3 | [ "MattohaServerMiddleware", "class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html", "class_mattoha_1_1_misc_1_1_mattoha_server_middleware" ] 4 | ]; -------------------------------------------------------------------------------- /docs/namespace_mattoha_1_1_nodes.js: -------------------------------------------------------------------------------- 1 | var namespace_mattoha_1_1_nodes = 2 | [ 3 | [ "MattohaClient", "class_mattoha_1_1_nodes_1_1_mattoha_client.html", "class_mattoha_1_1_nodes_1_1_mattoha_client" ], 4 | [ "MattohaGameHolder", "class_mattoha_1_1_nodes_1_1_mattoha_game_holder.html", "class_mattoha_1_1_nodes_1_1_mattoha_game_holder" ], 5 | [ "MattohaPickable", "class_mattoha_1_1_nodes_1_1_mattoha_pickable.html", null ], 6 | [ "MattohaPositionSynchronizer", "class_mattoha_1_1_nodes_1_1_mattoha_position_synchronizer.html", null ], 7 | [ "MattohaRotationSynchronizer", "class_mattoha_1_1_nodes_1_1_mattoha_rotation_synchronizer.html", null ], 8 | [ "MattohaServer", "class_mattoha_1_1_nodes_1_1_mattoha_server.html", "class_mattoha_1_1_nodes_1_1_mattoha_server" ], 9 | [ "MattohaSpawner", "class_mattoha_1_1_nodes_1_1_mattoha_spawner.html", "class_mattoha_1_1_nodes_1_1_mattoha_spawner" ], 10 | [ "MattohaSynchronizerModifier", "class_mattoha_1_1_nodes_1_1_mattoha_synchronizer_modifier.html", null ], 11 | [ "MattohaSystem", "class_mattoha_1_1_nodes_1_1_mattoha_system.html", "class_mattoha_1_1_nodes_1_1_mattoha_system" ] 12 | ]; -------------------------------------------------------------------------------- /docs/namespaces_dup.js: -------------------------------------------------------------------------------- 1 | var namespaces_dup = 2 | [ 3 | [ "Mattoha", "namespace_mattoha.html", "namespace_mattoha" ] 4 | ]; -------------------------------------------------------------------------------- /docs/nav_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/nav_f.png -------------------------------------------------------------------------------- /docs/nav_fd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/nav_fd.png -------------------------------------------------------------------------------- /docs/nav_g.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/nav_g.png -------------------------------------------------------------------------------- /docs/nav_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/nav_h.png -------------------------------------------------------------------------------- /docs/nav_hd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/nav_hd.png -------------------------------------------------------------------------------- /docs/navtree.css: -------------------------------------------------------------------------------- 1 | #nav-tree .children_ul { 2 | margin:0; 3 | padding:4px; 4 | } 5 | 6 | #nav-tree ul { 7 | list-style:none outside none; 8 | margin:0px; 9 | padding:0px; 10 | } 11 | 12 | #nav-tree li { 13 | white-space:nowrap; 14 | margin:0px; 15 | padding:0px; 16 | } 17 | 18 | #nav-tree .plus { 19 | margin:0px; 20 | } 21 | 22 | #nav-tree .selected { 23 | background-image: url('tab_a.png'); 24 | background-repeat:repeat-x; 25 | color: white; 26 | text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); 27 | } 28 | 29 | #nav-tree .selected .arrow { 30 | color: #A3A3A3; 31 | text-shadow: none; 32 | } 33 | 34 | #nav-tree img { 35 | margin:0px; 36 | padding:0px; 37 | border:0px; 38 | vertical-align: middle; 39 | } 40 | 41 | #nav-tree a { 42 | text-decoration:none; 43 | padding:0px; 44 | margin:0px; 45 | } 46 | 47 | #nav-tree .label { 48 | margin:0px; 49 | padding:0px; 50 | font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; 51 | } 52 | 53 | #nav-tree .label a { 54 | padding:2px; 55 | } 56 | 57 | #nav-tree .selected a { 58 | text-decoration:none; 59 | color:white; 60 | } 61 | 62 | #nav-tree .children_ul { 63 | margin:0px; 64 | padding:0px; 65 | } 66 | 67 | #nav-tree .item { 68 | margin:0px; 69 | padding:0px; 70 | } 71 | 72 | #nav-tree { 73 | padding: 0px 0px; 74 | font-size:14px; 75 | overflow:auto; 76 | } 77 | 78 | #doc-content { 79 | overflow:auto; 80 | display:block; 81 | padding:0px; 82 | margin:0px; 83 | -webkit-overflow-scrolling : touch; /* iOS 5+ */ 84 | } 85 | 86 | #side-nav { 87 | padding:0 6px 0 0; 88 | margin: 0px; 89 | display:block; 90 | position: absolute; 91 | left: 0px; 92 | width: $width; 93 | overflow : hidden; 94 | } 95 | 96 | .ui-resizable .ui-resizable-handle { 97 | display:block; 98 | } 99 | 100 | .ui-resizable-e { 101 | background-image:url('splitbar.png'); 102 | background-size:100%; 103 | background-repeat:repeat-y; 104 | background-attachment: scroll; 105 | cursor:ew-resize; 106 | height:100%; 107 | right:0; 108 | top:0; 109 | width:6px; 110 | } 111 | 112 | .ui-resizable-handle { 113 | display:none; 114 | font-size:0.1px; 115 | position:absolute; 116 | z-index:1; 117 | } 118 | 119 | #nav-tree-contents { 120 | margin: 6px 0px 0px 0px; 121 | } 122 | 123 | #nav-tree { 124 | background-repeat:repeat-x; 125 | background-color: #F9F9F9; 126 | -webkit-overflow-scrolling : touch; /* iOS 5+ */ 127 | } 128 | 129 | #nav-sync { 130 | position:absolute; 131 | top:5px; 132 | right:24px; 133 | z-index:0; 134 | } 135 | 136 | #nav-sync img { 137 | opacity:0.3; 138 | } 139 | 140 | #nav-sync img:hover { 141 | opacity:0.9; 142 | } 143 | 144 | @media print 145 | { 146 | #nav-tree { display: none; } 147 | div.ui-resizable-handle { display: none; position: relative; } 148 | } 149 | 150 | -------------------------------------------------------------------------------- /docs/navtreedata.js: -------------------------------------------------------------------------------- 1 | /* 2 | @licstart The following is the entire license notice for the JavaScript code in this file. 3 | 4 | The MIT License (MIT) 5 | 6 | Copyright (C) 1997-2020 by Dimitri van Heesch 7 | 8 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software 9 | and associated documentation files (the "Software"), to deal in the Software without restriction, 10 | including without limitation the rights to use, copy, modify, merge, publish, distribute, 11 | sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is 12 | furnished to do so, subject to the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be included in all copies or 15 | substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING 18 | BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 20 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 | 23 | @licend The above is the entire license notice for the JavaScript code in this file 24 | */ 25 | var NAVTREE = 26 | [ 27 | [ "GodotMattohaLobbySystem", "index.html", [ 28 | [ "Packages", "namespaces.html", [ 29 | [ "Package List", "namespaces.html", "namespaces_dup" ] 30 | ] ], 31 | [ "Classes", "annotated.html", [ 32 | [ "Class List", "annotated.html", "annotated_dup" ], 33 | [ "Class Index", "classes.html", null ], 34 | [ "Class Hierarchy", "hierarchy.html", "hierarchy" ], 35 | [ "Class Members", "functions.html", [ 36 | [ "All", "functions.html", null ], 37 | [ "Functions", "functions_func.html", null ], 38 | [ "Properties", "functions_prop.html", null ] 39 | ] ] 40 | ] ] 41 | ] ] 42 | ]; 43 | 44 | var NAVTREEINDEX = 45 | [ 46 | "annotated.html", 47 | "class_mattoha_1_1_nodes_1_1_mattoha_server.html#a10fb49c368ba74be0caa34340ed3d01c" 48 | ]; 49 | 50 | var SYNCONMSG = 'click to disable panel synchronisation'; 51 | var SYNCOFFMSG = 'click to enable panel synchronisation'; -------------------------------------------------------------------------------- /docs/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/open.png -------------------------------------------------------------------------------- /docs/plus.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/plusd.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /docs/search/all_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['additionalprops_0',['AdditionalProps',['../class_mattoha_1_1_nodes_1_1_mattoha_spawner.html#ac6d121b890a3686cb745eadb07b59436',1,'Mattoha::Nodes::MattohaSpawner']]], 4 | ['aftercreatelobby_1',['AfterCreateLobby',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a9b817bc4a0b299e60d791b176a165925',1,'Mattoha::Misc::MattohaServerMiddleware']]], 5 | ['afterdespawnnode_2',['AfterDespawnNode',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a293b15cbd846af28a4b22f8c589c8ba6',1,'Mattoha::Misc::MattohaServerMiddleware']]], 6 | ['afterdespawnremovedscenenodes_3',['AfterDespawnRemovedSceneNodes',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a08ab9ac5b73ec8d7a38d9b3085bbe630',1,'Mattoha::Misc::MattohaServerMiddleware']]], 7 | ['afterendgame_4',['AfterEndGame',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#ab95b9460bbc37bcf791d54d8c16f40b7',1,'Mattoha::Misc::MattohaServerMiddleware']]], 8 | ['afterjoinlobby_5',['AfterJoinLobby',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a6c4e2a840857b5f477e8947d17bdb727',1,'Mattoha::Misc::MattohaServerMiddleware']]], 9 | ['afterjointeam_6',['AfterJoinTeam',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a4d34db35cff0b8b02298975d7c470e80',1,'Mattoha::Misc::MattohaServerMiddleware']]], 10 | ['afterloadavailablelobbies_7',['AfterLoadAvailableLobbies',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#af576e2b50fcb926b901579c61d7b5e61',1,'Mattoha::Misc::MattohaServerMiddleware']]], 11 | ['afterregisterplayer_8',['AfterRegisterPlayer',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a03d6ba69688ea47245a7d92ca880a1db',1,'Mattoha::Misc::MattohaServerMiddleware']]], 12 | ['afterremoveplayerfromlobby_9',['AfterRemovePlayerFromLobby',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a499be9c69760a62e27ac32e1e591a61c',1,'Mattoha::Misc::MattohaServerMiddleware']]], 13 | ['aftersendglobalmessage_10',['AfterSendGlobalMessage',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#afe4d56a773835c1336e103285425a493',1,'Mattoha::Misc::MattohaServerMiddleware']]], 14 | ['aftersendlobbymessage_11',['AfterSendLobbyMessage',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a371323a5395c20250b5e4ea1b72d1bdc',1,'Mattoha::Misc::MattohaServerMiddleware']]], 15 | ['aftersendteammessage_12',['AfterSendTeamMessage',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a41f10cc5d5d17b6d664e5a92de60d74b',1,'Mattoha::Misc::MattohaServerMiddleware']]], 16 | ['aftersetlobbydata_13',['AfterSetLobbyData',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a6751255e4dfa0a53bfa89edf45f97617',1,'Mattoha::Misc::MattohaServerMiddleware']]], 17 | ['aftersetlobbyowner_14',['AfterSetLobbyOwner',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a998390c639d273a806e40596885ab343',1,'Mattoha::Misc::MattohaServerMiddleware']]], 18 | ['aftersetplayerdata_15',['AfterSetPlayerData',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a42fdb29fe3500b23e8f5ebf602412b7c',1,'Mattoha::Misc::MattohaServerMiddleware']]], 19 | ['afterspawnlobbynodes_16',['AfterSpawnLobbyNodes',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a78fdaf86d75d1a99554ade446972a1e0',1,'Mattoha::Misc::MattohaServerMiddleware']]], 20 | ['afterspawnnode_17',['AfterSpawnNode',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a806dbf9c16315802a5a933d5e53285ed',1,'Mattoha::Misc::MattohaServerMiddleware']]], 21 | ['afterstartgame_18',['AfterStartGame',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a51eea6644ec2f9e7b4e8ce91395274b9',1,'Mattoha::Misc::MattohaServerMiddleware']]], 22 | ['afterunregisterplayer_19',['AfterUnRegisterPlayer',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#afa35395d8daac842085fd15892554355',1,'Mattoha::Misc::MattohaServerMiddleware']]], 23 | ['autodespawn_20',['AutoDespawn',['../class_mattoha_1_1_nodes_1_1_mattoha_spawner.html#abbef73f1dbb81ee9fc3504d1d2066088',1,'Mattoha::Nodes::MattohaSpawner']]], 24 | ['autodespawnremovedscenenodes_21',['AutoDespawnRemovedSceneNodes',['../class_mattoha_1_1_nodes_1_1_mattoha_game_holder.html#a7ee22bafd536bd099b1a3d2b05034b1a',1,'Mattoha::Nodes::MattohaGameHolder']]], 25 | ['autoloadavailablelobbies_22',['AutoLoadAvailableLobbies',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#ab0b8dfc0059cc4a9e6b3e8d5c379ae77',1,'Mattoha::Nodes::MattohaSystem']]], 26 | ['autospawn_23',['AutoSpawn',['../class_mattoha_1_1_nodes_1_1_mattoha_spawner.html#a449b5caa22bf74fa047d9f4dad5cff99',1,'Mattoha::Nodes::MattohaSpawner']]], 27 | ['autospawnlobbynodes_24',['AutoSpawnLobbyNodes',['../class_mattoha_1_1_nodes_1_1_mattoha_game_holder.html#ab3ffb1a39169f54f28a988390d3e084c',1,'Mattoha::Nodes::MattohaGameHolder']]] 28 | ]; 29 | -------------------------------------------------------------------------------- /docs/search/all_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['beforecreatelobby_0',['BeforeCreateLobby',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a2830883b33ff6e3f61414d793ee862be',1,'Mattoha::Misc::MattohaServerMiddleware']]], 4 | ['beforedespawnnode_1',['BeforeDespawnNode',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a201bd51be3a852eaefd3c76698c68fed',1,'Mattoha::Misc::MattohaServerMiddleware']]], 5 | ['beforedespawnremovedscenenodes_2',['BeforeDespawnRemovedSceneNodes',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a901ae071e9a364bb7d954a41854d242e',1,'Mattoha::Misc::MattohaServerMiddleware']]], 6 | ['beforeendgame_3',['BeforeEndGame',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#af445eb9ad30621dffc716b713e2d5b3f',1,'Mattoha::Misc::MattohaServerMiddleware']]], 7 | ['beforejoinlobby_4',['BeforeJoinLobby',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a7d9625894e8ebc80f1f9d39b69bfa6e3',1,'Mattoha::Misc::MattohaServerMiddleware']]], 8 | ['beforejointeam_5',['BeforeJoinTeam',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a9eb9e6684292ed69442bdb82fbfb631e',1,'Mattoha::Misc::MattohaServerMiddleware']]], 9 | ['beforeloadavailablelobbies_6',['BeforeLoadAvailableLobbies',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#abd7258caaf727e5906115bf1c3a011f2',1,'Mattoha::Misc::MattohaServerMiddleware']]], 10 | ['beforeloadlobbyplayers_7',['BeforeLoadLobbyPlayers',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a5bb23e5afcde4d8783fa508af26fd987',1,'Mattoha::Misc::MattohaServerMiddleware']]], 11 | ['beforeregisterplayer_8',['BeforeRegisterPlayer',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#aebd2e77a875952d67c5570f5b3caf845',1,'Mattoha::Misc::MattohaServerMiddleware']]], 12 | ['beforeremoveplayerfromlobby_9',['BeforeRemovePlayerFromLobby',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#aa5b7e9b86fe5d55fbc5e3f31967fcf30',1,'Mattoha::Misc::MattohaServerMiddleware']]], 13 | ['beforesendglobalmessage_10',['BeforeSendGlobalMessage',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#aa901ac38d1345618ea7a85d509314905',1,'Mattoha::Misc::MattohaServerMiddleware']]], 14 | ['beforesendlobbymessage_11',['BeforeSendLobbyMessage',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#afefc6da2a1048cfeb31fbe9885f48c03',1,'Mattoha::Misc::MattohaServerMiddleware']]], 15 | ['beforesendteammessage_12',['BeforeSendTeamMessage',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a0bcf0fe49cdc6f55dfbd911eb545e118',1,'Mattoha::Misc::MattohaServerMiddleware']]], 16 | ['beforesetlobbydata_13',['BeforeSetLobbyData',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a55e9000f5ee5bc3d7fab8f0e548a4019',1,'Mattoha::Misc::MattohaServerMiddleware']]], 17 | ['beforesetlobbyowner_14',['BeforeSetLobbyOwner',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a8064d0dea6bd4d0e8d8552cbccec2bd6',1,'Mattoha::Misc::MattohaServerMiddleware']]], 18 | ['beforesetplayerdata_15',['BeforeSetPlayerData',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a5c118261b329dff3f75669994bf12be6',1,'Mattoha::Misc::MattohaServerMiddleware']]], 19 | ['beforespawnlobbynodes_16',['BeforeSpawnLobbyNodes',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a89117dcdc0c15e635048326ec8641af9',1,'Mattoha::Misc::MattohaServerMiddleware']]], 20 | ['beforespawnnode_17',['BeforeSpawnNode',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a0d9b2630bd9eb556351cbc105cf6f2f3',1,'Mattoha::Misc::MattohaServerMiddleware']]], 21 | ['beforestartgame_18',['BeforeStartGame',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a821734c9832ab616bf4af6f8a38130f5',1,'Mattoha::Misc::MattohaServerMiddleware']]], 22 | ['beforeunregisterplayer_19',['BeforeUnRegisterPlayer',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a62332ecac5bc4139be54b4d43900eca4',1,'Mattoha::Misc::MattohaServerMiddleware']]] 23 | ]; 24 | -------------------------------------------------------------------------------- /docs/search/all_10.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['teammessagefailedeventhandler_0',['TeamMessageFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ae707b77ef59a7e2d46f89923d9098ffa',1,'Mattoha::Nodes::MattohaClient']]], 4 | ['teammessagereceivedeventhandler_1',['TeamMessageReceivedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a2c4debccb2150d5976f8fcf5827d8f4f',1,'Mattoha::Nodes::MattohaClient']]], 5 | ['tochatdict_2',['ToChatDict',['../class_mattoha_1_1_core_1_1_mattoha_utils.html#a68adb08ae7d1b4f33e119f76eb2801c9',1,'Mattoha::Core::MattohaUtils']]], 6 | ['tosecureddict_3',['ToSecuredDict',['../class_mattoha_1_1_core_1_1_mattoha_utils.html#ab69fe1e2f90c1224938c20efcff9f288',1,'Mattoha::Core::MattohaUtils']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/search/all_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['canreplicate_0',['CanReplicate',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#aac839b4bdf1cf4ce1afbe7374635abe6',1,'Mattoha::Nodes::MattohaClient']]], 4 | ['clientrpcreceivedeventhandler_1',['ClientRpcReceivedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#a6413c68901a715d99fe4aec0152b659a',1,'Mattoha::Nodes::MattohaSystem']]], 5 | ['connectedtoservereventhandler_2',['ConnectedToServerEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ae3393874289107299677ff1d7f37e6db',1,'Mattoha::Nodes::MattohaClient']]], 6 | ['createinstance_3',['CreateInstance',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#ab74e58eb97c053a131e19fef4ca42a6d',1,'Mattoha.Nodes.MattohaSystem.CreateInstance(string sceneFile)'],['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#a451fb4e49bef46e00d0bd86e6292b501',1,'Mattoha.Nodes.MattohaSystem.CreateInstance(PackedScene scene)']]], 7 | ['createlobby_4',['CreateLobby',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#af6f9fc802c7830b82fea16974a8b6408',1,'Mattoha::Nodes::MattohaClient']]], 8 | ['createlobbyfailedeventhandler_5',['CreateLobbyFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a278f8505fdf453e287d8a7cc12e397b9',1,'Mattoha::Nodes::MattohaClient']]], 9 | ['createlobbysucceedeventhandler_6',['CreateLobbySucceedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a988382c4fac675d869513f9ab8ac08d1',1,'Mattoha::Nodes::MattohaClient']]], 10 | ['currentlobby_7',['CurrentLobby',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a1072d6a6c6e8a05690633e3ffa16dfb8',1,'Mattoha::Nodes::MattohaClient']]], 11 | ['currentlobbyplayers_8',['CurrentLobbyPlayers',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a08a73d1a50c621cec3d6d31ef085ea55',1,'Mattoha::Nodes::MattohaClient']]], 12 | ['currentplayer_9',['CurrentPlayer',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ac91ee7a84b386d6e40a324df17f6403d',1,'Mattoha::Nodes::MattohaClient']]] 13 | ]; 14 | -------------------------------------------------------------------------------- /docs/search/all_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['despawnnode_0',['DespawnNode',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#af47b88e6d704190c811e79a151d8cda5',1,'Mattoha.Nodes.MattohaClient.DespawnNode()'],['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#af16579314df93c9f18139730ec005695',1,'Mattoha.Nodes.MattohaServer.DespawnNode()']]], 4 | ['despawnnodefailedeventhandler_1',['DespawnNodeFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a38256f64cdebe726f968dd133d93db3b',1,'Mattoha::Nodes::MattohaClient']]], 5 | ['despawnnodefrompayload_2',['DespawnNodeFromPayload',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#a3f80b1f27269b65a39a1687ea7533693',1,'Mattoha::Nodes::MattohaSystem']]], 6 | ['despawnnoderequestedeventhandler_3',['DespawnNodeRequestedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#afe394832a072bca538d75e438ae77d1a',1,'Mattoha::Nodes::MattohaClient']]], 7 | ['despawnremovedscenenodes_4',['DespawnRemovedSceneNodes',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a607d29b4e423d5e6a4647d70ec199cf1',1,'Mattoha::Nodes::MattohaClient']]], 8 | ['despawnremovedscenenodesfailedeventhandler_5',['DespawnRemovedSceneNodesFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a3bb8c5243bc4cdaaab8f0b1d711fc25b',1,'Mattoha::Nodes::MattohaClient']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /docs/search/all_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['endgame_0',['EndGame',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ac1bce842ad981bf4be98ec840921a494',1,'Mattoha::Nodes::MattohaClient']]], 4 | ['endgamefailedeventhandler_1',['EndGameFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ae3b8d6877b251e63c10148e9f3dbb87d',1,'Mattoha::Nodes::MattohaClient']]], 5 | ['endgamesucceedeventhandler_2',['EndGameSucceedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#aef37a6c87bd5925c255a8a42921234a3',1,'Mattoha::Nodes::MattohaClient']]], 6 | ['extractlobbyid_3',['ExtractLobbyId',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#add9c77e03c4ad80f7327d1b3d9097fb1',1,'Mattoha::Nodes::MattohaSystem']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/search/all_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['findremovedscenenode_0',['FindRemovedSceneNode',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a6338efea87463be03eff181149a0e855',1,'Mattoha::Nodes::MattohaServer']]], 4 | ['findspawnednode_1',['FindSpawnedNode',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a8ca2140518706d8c48e6535ea82df10a',1,'Mattoha::Nodes::MattohaServer']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/all_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['gameholder_0',['GameHolder',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a8e102069527f727c06404b9ae0a753d0',1,'Mattoha.Nodes.MattohaClient.GameHolder'],['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a78b9fd33f27535d63b2b31c9a1ca7515',1,'Mattoha.Nodes.MattohaServer.GameHolder']]], 4 | ['generatenodepayloaddata_1',['GenerateNodePayloadData',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#a4900f0d775a7af03911809e0c3d1264b',1,'Mattoha::Nodes::MattohaSystem']]], 5 | ['getchatprops_2',['GetChatProps',['../class_mattoha_1_1_core_1_1_mattoha_utils.html#a6d20f014419a2d2c41adfde40e5641e6',1,'Mattoha::Core::MattohaUtils']]], 6 | ['getlobbynodefor_3',['GetLobbyNodeFor',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#a464bd1f5f7e429017cd921c91523624b',1,'Mattoha::Nodes::MattohaSystem']]], 7 | ['getlobbyplayers_4',['GetLobbyPlayers',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a0664d2be9bc4152be5607144787bee79',1,'Mattoha::Nodes::MattohaServer']]], 8 | ['getlobbyplayersids_5',['GetLobbyPlayersIds',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a309dce7ea1fc77280bcf53ed11ddb7cd',1,'Mattoha::Nodes::MattohaClient']]], 9 | ['getlobbyplayerssecured_6',['GetLobbyPlayersSecured',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#adb3632b5ec3dcccd8645e156be7bad8c',1,'Mattoha::Nodes::MattohaServer']]], 10 | ['getplayer_7',['GetPlayer',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a14b39ba79b3b21a6c4cb2388188c8505',1,'Mattoha::Nodes::MattohaServer']]], 11 | ['getplayerlobby_8',['GetPlayerLobby',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a033881dd16d3ebdb6ea031154e63278f',1,'Mattoha::Nodes::MattohaServer']]], 12 | ['getprivateprops_9',['GetPrivateProps',['../class_mattoha_1_1_core_1_1_mattoha_utils.html#a6e07896acbacec2e3551020962654f62',1,'Mattoha::Core::MattohaUtils']]], 13 | ['globalmessagefailedeventhandler_10',['GlobalMessageFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a1e07cf6dbaf58fa7422d0820c9832f8b',1,'Mattoha::Nodes::MattohaClient']]], 14 | ['globalmessagereceivedeventhandler_11',['GlobalMessageReceivedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a5e6c4dce84b3bcacd7bebe17af213a43',1,'Mattoha::Nodes::MattohaClient']]] 15 | ]; 16 | -------------------------------------------------------------------------------- /docs/search/all_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['handlebyserver_0',['HandleByServer',['../class_mattoha_1_1_nodes_1_1_mattoha_spawner.html#a067afac00bbec20dcc755326eee72c33',1,'Mattoha::Nodes::MattohaSpawner']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/all_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['isenumerable_0',['IsEnumerable',['../class_mattoha_1_1_core_1_1_mattoha_utils.html#a1b9853f32eddcd5daab2689d45679dfc',1,'Mattoha::Core::MattohaUtils']]], 4 | ['islobbyowner_1',['IsLobbyOwner',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#a1180c017d90b525aab6a2d84b3603829',1,'Mattoha::Nodes::MattohaSystem']]], 5 | ['isnodeowner_2',['IsNodeOwner',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#a37004354c863e1c6d0dff36bc3a20c3e',1,'Mattoha::Nodes::MattohaSystem']]], 6 | ['isplayeringame_3',['IsPlayerInGame',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a0d006cecee707215658aef8618d8f03b',1,'Mattoha::Nodes::MattohaClient']]], 7 | ['isplayerinlobby_4',['IsPlayerInLobby',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#add7a1189672f90bbdce4e2fdefdda219',1,'Mattoha::Nodes::MattohaClient']]], 8 | ['isplayerinmyteam_5',['IsPlayerInMyTeam',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ae28cfd0619536ea3eb61e6ed00864e6e',1,'Mattoha::Nodes::MattohaClient']]], 9 | ['isprimitive_6',['IsPrimitive',['../class_mattoha_1_1_core_1_1_mattoha_utils.html#a982e6bdcd6b1e903823ab16381a4becb',1,'Mattoha::Core::MattohaUtils']]] 10 | ]; 11 | -------------------------------------------------------------------------------- /docs/search/all_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['joinedplayerupdatedeventhandler_0',['JoinedPlayerUpdatedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a006babbce7bc84e9a19ae2fea0632509',1,'Mattoha::Nodes::MattohaClient']]], 4 | ['joinlobby_1',['JoinLobby',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a6726da12278602b6810b4470de45b007',1,'Mattoha::Nodes::MattohaClient']]], 5 | ['joinlobbyfailedeventhandler_2',['JoinLobbyFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ab954ac85462db97b3fd41ea2095ece3b',1,'Mattoha::Nodes::MattohaClient']]], 6 | ['joinlobbysucceedeventhandler_3',['JoinLobbySucceedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a15d919d3b483d380576c38c2d0121766',1,'Mattoha::Nodes::MattohaClient']]], 7 | ['jointeam_4',['JoinTeam',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a71d1be97ac920b676e8bb04a1b0322e7',1,'Mattoha::Nodes::MattohaClient']]], 8 | ['jointeamfailedeventhandler_5',['JoinTeamFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a9ac038584c29bca39a1141b5000345f0',1,'Mattoha::Nodes::MattohaClient']]], 9 | ['jointeamsucceedeventhandler_6',['JoinTeamSucceedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a6f795021bf25d46261e47467aafdbcc0',1,'Mattoha::Nodes::MattohaClient']]] 10 | ]; 11 | -------------------------------------------------------------------------------- /docs/search/all_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['leavelobby_0',['LeaveLobby',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a0f9b3b3cc2df7d6287318a5337445df0',1,'Mattoha::Nodes::MattohaClient']]], 4 | ['leavelobbysucceedeventhandler_1',['LeaveLobbySucceedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ad46b6bba62d37ae52a8f173c897afd02',1,'Mattoha::Nodes::MattohaClient']]], 5 | ['loadavailablelobbies_2',['LoadAvailableLobbies',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#aa2792dc0388004b2759e057b4d50eb2f',1,'Mattoha::Nodes::MattohaClient']]], 6 | ['loadavailablelobbiesfailedeventhandler_3',['LoadAvailableLobbiesFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a921d0273f8c83dae225cb1cbec1e4380',1,'Mattoha::Nodes::MattohaClient']]], 7 | ['loadavailablelobbiessucceedeventhandler_4',['LoadAvailableLobbiesSucceedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a86c2ec28c9e42fc08210bd918e8def6a',1,'Mattoha::Nodes::MattohaClient']]], 8 | ['loadlobbyplayers_5',['LoadLobbyPlayers',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a10c02e9641c1b105151cb94629cb8dda',1,'Mattoha::Nodes::MattohaClient']]], 9 | ['loadlobbyplayersfailedeventhandler_6',['LoadLobbyPlayersFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ae5cbc3fe9be53f5878089b00089313fd',1,'Mattoha::Nodes::MattohaClient']]], 10 | ['loadlobbyplayersforall_7',['LoadLobbyPlayersForAll',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a6825f39b2a7897c0f17a88fa77921bd1',1,'Mattoha::Nodes::MattohaServer']]], 11 | ['loadlobbyplayerssucceedeventhandler_8',['LoadLobbyPlayersSucceedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ac7b6c85092d8b75d18bd62ffc3e9e665',1,'Mattoha::Nodes::MattohaClient']]], 12 | ['lobbies_9',['Lobbies',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a358d72c2d26b62f290f5dbfd734abc77',1,'Mattoha::Nodes::MattohaServer']]], 13 | ['lobbygameendedeventhandler_10',['LobbyGameEndedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#afaecf01ecdd50534f0915c200cad37a2',1,'Mattoha::Nodes::MattohaServer']]], 14 | ['lobbygamestartedeventhandler_11',['LobbyGameStartedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#ad05ab64db75f0e9ca0a8ac715af6a8b7',1,'Mattoha::Nodes::MattohaServer']]], 15 | ['lobbymessagefailedeventhandler_12',['LobbyMessageFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a99c840b86f1c1382f99009fa13dc48ac',1,'Mattoha::Nodes::MattohaClient']]], 16 | ['lobbymessagereceivedeventhandler_13',['LobbyMessageReceivedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a6fb5d9776bcd06a33e5f0c92f2b87d44',1,'Mattoha::Nodes::MattohaClient']]], 17 | ['lobbynode_14',['LobbyNode',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a67dbcbe8dcd0e8382048eacbc6e6ec07',1,'Mattoha::Nodes::MattohaClient']]], 18 | ['lobbyremovedeventhandler_15',['LobbyRemovedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#acef53b67ea5d356ab01dfd86fd086bc0',1,'Mattoha::Nodes::MattohaServer']]], 19 | ['lobbysize_16',['LobbySize',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#a6a0b5096e0e76a4f976b5b1c66e1e318',1,'Mattoha::Nodes::MattohaSystem']]] 20 | ]; 21 | -------------------------------------------------------------------------------- /docs/search/all_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['mattoha_0',['Mattoha',['../namespace_mattoha.html',1,'']]], 4 | ['mattoha_3a_3acore_1',['Core',['../namespace_mattoha_1_1_core.html',1,'Mattoha']]], 5 | ['mattoha_3a_3acore_3a_3ademo_2',['Demo',['../namespace_mattoha_1_1_core_1_1_demo.html',1,'Mattoha::Core']]], 6 | ['mattoha_3a_3acore_3a_3autils_3',['Utils',['../namespace_mattoha_1_1_core_1_1_utils.html',1,'Mattoha::Core']]], 7 | ['mattoha_3a_3amisc_4',['Misc',['../namespace_mattoha_1_1_misc.html',1,'Mattoha']]], 8 | ['mattoha_3a_3anodes_5',['Nodes',['../namespace_mattoha_1_1_nodes.html',1,'Mattoha']]], 9 | ['mattohaclient_6',['MattohaClient',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html',1,'Mattoha::Nodes']]], 10 | ['mattohagameholder_7',['MattohaGameHolder',['../class_mattoha_1_1_nodes_1_1_mattoha_game_holder.html',1,'Mattoha::Nodes']]], 11 | ['mattohapickable_8',['MattohaPickable',['../class_mattoha_1_1_nodes_1_1_mattoha_pickable.html',1,'Mattoha::Nodes']]], 12 | ['mattohapositionsynchronizer_9',['MattohaPositionSynchronizer',['../class_mattoha_1_1_nodes_1_1_mattoha_position_synchronizer.html',1,'Mattoha::Nodes']]], 13 | ['mattoharotationsynchronizer_10',['MattohaRotationSynchronizer',['../class_mattoha_1_1_nodes_1_1_mattoha_rotation_synchronizer.html',1,'Mattoha::Nodes']]], 14 | ['mattohaserver_11',['MattohaServer',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html',1,'Mattoha::Nodes']]], 15 | ['mattohaservermiddleware_12',['MattohaServerMiddleware',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html',1,'Mattoha::Misc']]], 16 | ['mattohaspawner_13',['MattohaSpawner',['../class_mattoha_1_1_nodes_1_1_mattoha_spawner.html',1,'Mattoha::Nodes']]], 17 | ['mattohaspawnkeys_14',['MattohaSpawnKeys',['../class_mattoha_1_1_core_1_1_utils_1_1_mattoha_spawn_keys.html',1,'Mattoha::Core::Utils']]], 18 | ['mattohasynchronizermodifier_15',['MattohaSynchronizerModifier',['../class_mattoha_1_1_nodes_1_1_mattoha_synchronizer_modifier.html',1,'Mattoha::Nodes']]], 19 | ['mattohasystem_16',['MattohaSystem',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html',1,'Mattoha::Nodes']]], 20 | ['mattohautils_17',['MattohaUtils',['../class_mattoha_1_1_core_1_1_mattoha_utils.html',1,'Mattoha::Core']]], 21 | ['middlewarenode_18',['MiddlewareNode',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#ac18e5630c547e3f592d4eddcb8be04b0',1,'Mattoha::Nodes::MattohaServer']]] 22 | ]; 23 | -------------------------------------------------------------------------------- /docs/search/all_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['newplayerjoinedeventhandler_0',['NewPlayerJoinedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a00be855e67e3ac9653113e290d65389a',1,'Mattoha::Nodes::MattohaClient']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/all_d.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['playerchangedhisteameventhandler_0',['PlayerChangedHisTeamEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a776a0e0aeea394ab243b4f66f477038d',1,'Mattoha::Nodes::MattohaClient']]], 4 | ['playerjoinedeventhandler_1',['PlayerJoinedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a5d05f6a2e57bf8320f27c5fd65fd385c',1,'Mattoha::Nodes::MattohaClient']]], 5 | ['playerjoinedlobbyeventhandler_2',['PlayerJoinedLobbyEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#acfc37113f2ed8b788bb743a99b46d792',1,'Mattoha::Nodes::MattohaServer']]], 6 | ['playerlefteventhandler_3',['PlayerLeftEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a805661fdf9d6b07625488339ade36849',1,'Mattoha::Nodes::MattohaClient']]], 7 | ['playerleftlobbyeventhandler_4',['PlayerLeftLobbyEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a313891e337283266cf839cc8ee65a42a',1,'Mattoha::Nodes::MattohaServer']]], 8 | ['playerregisteredeventhandler_5',['PlayerRegisteredEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a2c1ef8cfcfa778e1f428766393a3d8ce',1,'Mattoha::Nodes::MattohaClient']]], 9 | ['players_6',['Players',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a52ad49188584d8fc169f26855709f012',1,'Mattoha::Nodes::MattohaServer']]] 10 | ]; 11 | -------------------------------------------------------------------------------- /docs/search/all_e.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['refreshavailablelobbiesforall_0',['RefreshAvailableLobbiesForAll',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a10fb49c368ba74be0caa34340ed3d01c',1,'Mattoha::Nodes::MattohaServer']]], 4 | ['removedscenenodes_1',['RemovedSceneNodes',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a4e7d80e1c52e100f4eefe6016a4e0767',1,'Mattoha::Nodes::MattohaServer']]], 5 | ['removeplayerfromlobby_2',['RemovePlayerFromLobby',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a02cd3319092d7a014388fc34c01bb67f',1,'Mattoha::Nodes::MattohaServer']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/search/classes_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['mattohaclient_0',['MattohaClient',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html',1,'Mattoha::Nodes']]], 4 | ['mattohagameholder_1',['MattohaGameHolder',['../class_mattoha_1_1_nodes_1_1_mattoha_game_holder.html',1,'Mattoha::Nodes']]], 5 | ['mattohapickable_2',['MattohaPickable',['../class_mattoha_1_1_nodes_1_1_mattoha_pickable.html',1,'Mattoha::Nodes']]], 6 | ['mattohapositionsynchronizer_3',['MattohaPositionSynchronizer',['../class_mattoha_1_1_nodes_1_1_mattoha_position_synchronizer.html',1,'Mattoha::Nodes']]], 7 | ['mattoharotationsynchronizer_4',['MattohaRotationSynchronizer',['../class_mattoha_1_1_nodes_1_1_mattoha_rotation_synchronizer.html',1,'Mattoha::Nodes']]], 8 | ['mattohaserver_5',['MattohaServer',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html',1,'Mattoha::Nodes']]], 9 | ['mattohaservermiddleware_6',['MattohaServerMiddleware',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html',1,'Mattoha::Misc']]], 10 | ['mattohaspawner_7',['MattohaSpawner',['../class_mattoha_1_1_nodes_1_1_mattoha_spawner.html',1,'Mattoha::Nodes']]], 11 | ['mattohaspawnkeys_8',['MattohaSpawnKeys',['../class_mattoha_1_1_core_1_1_utils_1_1_mattoha_spawn_keys.html',1,'Mattoha::Core::Utils']]], 12 | ['mattohasynchronizermodifier_9',['MattohaSynchronizerModifier',['../class_mattoha_1_1_nodes_1_1_mattoha_synchronizer_modifier.html',1,'Mattoha::Nodes']]], 13 | ['mattohasystem_10',['MattohaSystem',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html',1,'Mattoha::Nodes']]], 14 | ['mattohautils_11',['MattohaUtils',['../class_mattoha_1_1_core_1_1_mattoha_utils.html',1,'Mattoha::Core']]] 15 | ]; 16 | -------------------------------------------------------------------------------- /docs/search/close.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 12 | 14 | 18 | 19 | -------------------------------------------------------------------------------- /docs/search/functions_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['aftercreatelobby_0',['AfterCreateLobby',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a9b817bc4a0b299e60d791b176a165925',1,'Mattoha::Misc::MattohaServerMiddleware']]], 4 | ['afterdespawnnode_1',['AfterDespawnNode',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a293b15cbd846af28a4b22f8c589c8ba6',1,'Mattoha::Misc::MattohaServerMiddleware']]], 5 | ['afterdespawnremovedscenenodes_2',['AfterDespawnRemovedSceneNodes',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a08ab9ac5b73ec8d7a38d9b3085bbe630',1,'Mattoha::Misc::MattohaServerMiddleware']]], 6 | ['afterendgame_3',['AfterEndGame',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#ab95b9460bbc37bcf791d54d8c16f40b7',1,'Mattoha::Misc::MattohaServerMiddleware']]], 7 | ['afterjoinlobby_4',['AfterJoinLobby',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a6c4e2a840857b5f477e8947d17bdb727',1,'Mattoha::Misc::MattohaServerMiddleware']]], 8 | ['afterjointeam_5',['AfterJoinTeam',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a4d34db35cff0b8b02298975d7c470e80',1,'Mattoha::Misc::MattohaServerMiddleware']]], 9 | ['afterloadavailablelobbies_6',['AfterLoadAvailableLobbies',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#af576e2b50fcb926b901579c61d7b5e61',1,'Mattoha::Misc::MattohaServerMiddleware']]], 10 | ['afterregisterplayer_7',['AfterRegisterPlayer',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a03d6ba69688ea47245a7d92ca880a1db',1,'Mattoha::Misc::MattohaServerMiddleware']]], 11 | ['afterremoveplayerfromlobby_8',['AfterRemovePlayerFromLobby',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a499be9c69760a62e27ac32e1e591a61c',1,'Mattoha::Misc::MattohaServerMiddleware']]], 12 | ['aftersendglobalmessage_9',['AfterSendGlobalMessage',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#afe4d56a773835c1336e103285425a493',1,'Mattoha::Misc::MattohaServerMiddleware']]], 13 | ['aftersendlobbymessage_10',['AfterSendLobbyMessage',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a371323a5395c20250b5e4ea1b72d1bdc',1,'Mattoha::Misc::MattohaServerMiddleware']]], 14 | ['aftersendteammessage_11',['AfterSendTeamMessage',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a41f10cc5d5d17b6d664e5a92de60d74b',1,'Mattoha::Misc::MattohaServerMiddleware']]], 15 | ['aftersetlobbydata_12',['AfterSetLobbyData',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a6751255e4dfa0a53bfa89edf45f97617',1,'Mattoha::Misc::MattohaServerMiddleware']]], 16 | ['aftersetlobbyowner_13',['AfterSetLobbyOwner',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a998390c639d273a806e40596885ab343',1,'Mattoha::Misc::MattohaServerMiddleware']]], 17 | ['aftersetplayerdata_14',['AfterSetPlayerData',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a42fdb29fe3500b23e8f5ebf602412b7c',1,'Mattoha::Misc::MattohaServerMiddleware']]], 18 | ['afterspawnlobbynodes_15',['AfterSpawnLobbyNodes',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a78fdaf86d75d1a99554ade446972a1e0',1,'Mattoha::Misc::MattohaServerMiddleware']]], 19 | ['afterspawnnode_16',['AfterSpawnNode',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a806dbf9c16315802a5a933d5e53285ed',1,'Mattoha::Misc::MattohaServerMiddleware']]], 20 | ['afterstartgame_17',['AfterStartGame',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a51eea6644ec2f9e7b4e8ce91395274b9',1,'Mattoha::Misc::MattohaServerMiddleware']]], 21 | ['afterunregisterplayer_18',['AfterUnRegisterPlayer',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#afa35395d8daac842085fd15892554355',1,'Mattoha::Misc::MattohaServerMiddleware']]] 22 | ]; 23 | -------------------------------------------------------------------------------- /docs/search/functions_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['beforecreatelobby_0',['BeforeCreateLobby',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a2830883b33ff6e3f61414d793ee862be',1,'Mattoha::Misc::MattohaServerMiddleware']]], 4 | ['beforedespawnnode_1',['BeforeDespawnNode',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a201bd51be3a852eaefd3c76698c68fed',1,'Mattoha::Misc::MattohaServerMiddleware']]], 5 | ['beforedespawnremovedscenenodes_2',['BeforeDespawnRemovedSceneNodes',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a901ae071e9a364bb7d954a41854d242e',1,'Mattoha::Misc::MattohaServerMiddleware']]], 6 | ['beforeendgame_3',['BeforeEndGame',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#af445eb9ad30621dffc716b713e2d5b3f',1,'Mattoha::Misc::MattohaServerMiddleware']]], 7 | ['beforejoinlobby_4',['BeforeJoinLobby',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a7d9625894e8ebc80f1f9d39b69bfa6e3',1,'Mattoha::Misc::MattohaServerMiddleware']]], 8 | ['beforejointeam_5',['BeforeJoinTeam',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a9eb9e6684292ed69442bdb82fbfb631e',1,'Mattoha::Misc::MattohaServerMiddleware']]], 9 | ['beforeloadavailablelobbies_6',['BeforeLoadAvailableLobbies',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#abd7258caaf727e5906115bf1c3a011f2',1,'Mattoha::Misc::MattohaServerMiddleware']]], 10 | ['beforeloadlobbyplayers_7',['BeforeLoadLobbyPlayers',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a5bb23e5afcde4d8783fa508af26fd987',1,'Mattoha::Misc::MattohaServerMiddleware']]], 11 | ['beforeregisterplayer_8',['BeforeRegisterPlayer',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#aebd2e77a875952d67c5570f5b3caf845',1,'Mattoha::Misc::MattohaServerMiddleware']]], 12 | ['beforeremoveplayerfromlobby_9',['BeforeRemovePlayerFromLobby',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#aa5b7e9b86fe5d55fbc5e3f31967fcf30',1,'Mattoha::Misc::MattohaServerMiddleware']]], 13 | ['beforesendglobalmessage_10',['BeforeSendGlobalMessage',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#aa901ac38d1345618ea7a85d509314905',1,'Mattoha::Misc::MattohaServerMiddleware']]], 14 | ['beforesendlobbymessage_11',['BeforeSendLobbyMessage',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#afefc6da2a1048cfeb31fbe9885f48c03',1,'Mattoha::Misc::MattohaServerMiddleware']]], 15 | ['beforesendteammessage_12',['BeforeSendTeamMessage',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a0bcf0fe49cdc6f55dfbd911eb545e118',1,'Mattoha::Misc::MattohaServerMiddleware']]], 16 | ['beforesetlobbydata_13',['BeforeSetLobbyData',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a55e9000f5ee5bc3d7fab8f0e548a4019',1,'Mattoha::Misc::MattohaServerMiddleware']]], 17 | ['beforesetlobbyowner_14',['BeforeSetLobbyOwner',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a8064d0dea6bd4d0e8d8552cbccec2bd6',1,'Mattoha::Misc::MattohaServerMiddleware']]], 18 | ['beforesetplayerdata_15',['BeforeSetPlayerData',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a5c118261b329dff3f75669994bf12be6',1,'Mattoha::Misc::MattohaServerMiddleware']]], 19 | ['beforespawnlobbynodes_16',['BeforeSpawnLobbyNodes',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a89117dcdc0c15e635048326ec8641af9',1,'Mattoha::Misc::MattohaServerMiddleware']]], 20 | ['beforespawnnode_17',['BeforeSpawnNode',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a0d9b2630bd9eb556351cbc105cf6f2f3',1,'Mattoha::Misc::MattohaServerMiddleware']]], 21 | ['beforestartgame_18',['BeforeStartGame',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a821734c9832ab616bf4af6f8a38130f5',1,'Mattoha::Misc::MattohaServerMiddleware']]], 22 | ['beforeunregisterplayer_19',['BeforeUnRegisterPlayer',['../class_mattoha_1_1_misc_1_1_mattoha_server_middleware.html#a62332ecac5bc4139be54b4d43900eca4',1,'Mattoha::Misc::MattohaServerMiddleware']]] 23 | ]; 24 | -------------------------------------------------------------------------------- /docs/search/functions_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['clientrpcreceivedeventhandler_0',['ClientRpcReceivedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#a6413c68901a715d99fe4aec0152b659a',1,'Mattoha::Nodes::MattohaSystem']]], 4 | ['connectedtoservereventhandler_1',['ConnectedToServerEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ae3393874289107299677ff1d7f37e6db',1,'Mattoha::Nodes::MattohaClient']]], 5 | ['createinstance_2',['CreateInstance',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#ab74e58eb97c053a131e19fef4ca42a6d',1,'Mattoha.Nodes.MattohaSystem.CreateInstance(string sceneFile)'],['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#a451fb4e49bef46e00d0bd86e6292b501',1,'Mattoha.Nodes.MattohaSystem.CreateInstance(PackedScene scene)']]], 6 | ['createlobby_3',['CreateLobby',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#af6f9fc802c7830b82fea16974a8b6408',1,'Mattoha::Nodes::MattohaClient']]], 7 | ['createlobbyfailedeventhandler_4',['CreateLobbyFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a278f8505fdf453e287d8a7cc12e397b9',1,'Mattoha::Nodes::MattohaClient']]], 8 | ['createlobbysucceedeventhandler_5',['CreateLobbySucceedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a988382c4fac675d869513f9ab8ac08d1',1,'Mattoha::Nodes::MattohaClient']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /docs/search/functions_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['despawnnode_0',['DespawnNode',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#af47b88e6d704190c811e79a151d8cda5',1,'Mattoha.Nodes.MattohaClient.DespawnNode()'],['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#af16579314df93c9f18139730ec005695',1,'Mattoha.Nodes.MattohaServer.DespawnNode()']]], 4 | ['despawnnodefailedeventhandler_1',['DespawnNodeFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a38256f64cdebe726f968dd133d93db3b',1,'Mattoha::Nodes::MattohaClient']]], 5 | ['despawnnodefrompayload_2',['DespawnNodeFromPayload',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#a3f80b1f27269b65a39a1687ea7533693',1,'Mattoha::Nodes::MattohaSystem']]], 6 | ['despawnnoderequestedeventhandler_3',['DespawnNodeRequestedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#afe394832a072bca538d75e438ae77d1a',1,'Mattoha::Nodes::MattohaClient']]], 7 | ['despawnremovedscenenodes_4',['DespawnRemovedSceneNodes',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a607d29b4e423d5e6a4647d70ec199cf1',1,'Mattoha::Nodes::MattohaClient']]], 8 | ['despawnremovedscenenodesfailedeventhandler_5',['DespawnRemovedSceneNodesFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a3bb8c5243bc4cdaaab8f0b1d711fc25b',1,'Mattoha::Nodes::MattohaClient']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /docs/search/functions_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['endgame_0',['EndGame',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ac1bce842ad981bf4be98ec840921a494',1,'Mattoha::Nodes::MattohaClient']]], 4 | ['endgamefailedeventhandler_1',['EndGameFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ae3b8d6877b251e63c10148e9f3dbb87d',1,'Mattoha::Nodes::MattohaClient']]], 5 | ['endgamesucceedeventhandler_2',['EndGameSucceedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#aef37a6c87bd5925c255a8a42921234a3',1,'Mattoha::Nodes::MattohaClient']]], 6 | ['extractlobbyid_3',['ExtractLobbyId',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#add9c77e03c4ad80f7327d1b3d9097fb1',1,'Mattoha::Nodes::MattohaSystem']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/search/functions_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['findremovedscenenode_0',['FindRemovedSceneNode',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a6338efea87463be03eff181149a0e855',1,'Mattoha::Nodes::MattohaServer']]], 4 | ['findspawnednode_1',['FindSpawnedNode',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a8ca2140518706d8c48e6535ea82df10a',1,'Mattoha::Nodes::MattohaServer']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/functions_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['generatenodepayloaddata_0',['GenerateNodePayloadData',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#a4900f0d775a7af03911809e0c3d1264b',1,'Mattoha::Nodes::MattohaSystem']]], 4 | ['getchatprops_1',['GetChatProps',['../class_mattoha_1_1_core_1_1_mattoha_utils.html#a6d20f014419a2d2c41adfde40e5641e6',1,'Mattoha::Core::MattohaUtils']]], 5 | ['getlobbynodefor_2',['GetLobbyNodeFor',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#a464bd1f5f7e429017cd921c91523624b',1,'Mattoha::Nodes::MattohaSystem']]], 6 | ['getlobbyplayers_3',['GetLobbyPlayers',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a0664d2be9bc4152be5607144787bee79',1,'Mattoha::Nodes::MattohaServer']]], 7 | ['getlobbyplayersids_4',['GetLobbyPlayersIds',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a309dce7ea1fc77280bcf53ed11ddb7cd',1,'Mattoha::Nodes::MattohaClient']]], 8 | ['getlobbyplayerssecured_5',['GetLobbyPlayersSecured',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#adb3632b5ec3dcccd8645e156be7bad8c',1,'Mattoha::Nodes::MattohaServer']]], 9 | ['getplayer_6',['GetPlayer',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a14b39ba79b3b21a6c4cb2388188c8505',1,'Mattoha::Nodes::MattohaServer']]], 10 | ['getplayerlobby_7',['GetPlayerLobby',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a033881dd16d3ebdb6ea031154e63278f',1,'Mattoha::Nodes::MattohaServer']]], 11 | ['getprivateprops_8',['GetPrivateProps',['../class_mattoha_1_1_core_1_1_mattoha_utils.html#a6e07896acbacec2e3551020962654f62',1,'Mattoha::Core::MattohaUtils']]], 12 | ['globalmessagefailedeventhandler_9',['GlobalMessageFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a1e07cf6dbaf58fa7422d0820c9832f8b',1,'Mattoha::Nodes::MattohaClient']]], 13 | ['globalmessagereceivedeventhandler_10',['GlobalMessageReceivedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a5e6c4dce84b3bcacd7bebe17af213a43',1,'Mattoha::Nodes::MattohaClient']]] 14 | ]; 15 | -------------------------------------------------------------------------------- /docs/search/functions_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['isenumerable_0',['IsEnumerable',['../class_mattoha_1_1_core_1_1_mattoha_utils.html#a1b9853f32eddcd5daab2689d45679dfc',1,'Mattoha::Core::MattohaUtils']]], 4 | ['islobbyowner_1',['IsLobbyOwner',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#a1180c017d90b525aab6a2d84b3603829',1,'Mattoha::Nodes::MattohaSystem']]], 5 | ['isnodeowner_2',['IsNodeOwner',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#a37004354c863e1c6d0dff36bc3a20c3e',1,'Mattoha::Nodes::MattohaSystem']]], 6 | ['isplayeringame_3',['IsPlayerInGame',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a0d006cecee707215658aef8618d8f03b',1,'Mattoha::Nodes::MattohaClient']]], 7 | ['isplayerinlobby_4',['IsPlayerInLobby',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#add7a1189672f90bbdce4e2fdefdda219',1,'Mattoha::Nodes::MattohaClient']]], 8 | ['isplayerinmyteam_5',['IsPlayerInMyTeam',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ae28cfd0619536ea3eb61e6ed00864e6e',1,'Mattoha::Nodes::MattohaClient']]], 9 | ['isprimitive_6',['IsPrimitive',['../class_mattoha_1_1_core_1_1_mattoha_utils.html#a982e6bdcd6b1e903823ab16381a4becb',1,'Mattoha::Core::MattohaUtils']]] 10 | ]; 11 | -------------------------------------------------------------------------------- /docs/search/functions_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['joinedplayerupdatedeventhandler_0',['JoinedPlayerUpdatedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a006babbce7bc84e9a19ae2fea0632509',1,'Mattoha::Nodes::MattohaClient']]], 4 | ['joinlobby_1',['JoinLobby',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a6726da12278602b6810b4470de45b007',1,'Mattoha::Nodes::MattohaClient']]], 5 | ['joinlobbyfailedeventhandler_2',['JoinLobbyFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ab954ac85462db97b3fd41ea2095ece3b',1,'Mattoha::Nodes::MattohaClient']]], 6 | ['joinlobbysucceedeventhandler_3',['JoinLobbySucceedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a15d919d3b483d380576c38c2d0121766',1,'Mattoha::Nodes::MattohaClient']]], 7 | ['jointeam_4',['JoinTeam',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a71d1be97ac920b676e8bb04a1b0322e7',1,'Mattoha::Nodes::MattohaClient']]], 8 | ['jointeamfailedeventhandler_5',['JoinTeamFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a9ac038584c29bca39a1141b5000345f0',1,'Mattoha::Nodes::MattohaClient']]], 9 | ['jointeamsucceedeventhandler_6',['JoinTeamSucceedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a6f795021bf25d46261e47467aafdbcc0',1,'Mattoha::Nodes::MattohaClient']]] 10 | ]; 11 | -------------------------------------------------------------------------------- /docs/search/functions_9.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['leavelobby_0',['LeaveLobby',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a0f9b3b3cc2df7d6287318a5337445df0',1,'Mattoha::Nodes::MattohaClient']]], 4 | ['leavelobbysucceedeventhandler_1',['LeaveLobbySucceedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ad46b6bba62d37ae52a8f173c897afd02',1,'Mattoha::Nodes::MattohaClient']]], 5 | ['loadavailablelobbies_2',['LoadAvailableLobbies',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#aa2792dc0388004b2759e057b4d50eb2f',1,'Mattoha::Nodes::MattohaClient']]], 6 | ['loadavailablelobbiesfailedeventhandler_3',['LoadAvailableLobbiesFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a921d0273f8c83dae225cb1cbec1e4380',1,'Mattoha::Nodes::MattohaClient']]], 7 | ['loadavailablelobbiessucceedeventhandler_4',['LoadAvailableLobbiesSucceedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a86c2ec28c9e42fc08210bd918e8def6a',1,'Mattoha::Nodes::MattohaClient']]], 8 | ['loadlobbyplayers_5',['LoadLobbyPlayers',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a10c02e9641c1b105151cb94629cb8dda',1,'Mattoha::Nodes::MattohaClient']]], 9 | ['loadlobbyplayersfailedeventhandler_6',['LoadLobbyPlayersFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ae5cbc3fe9be53f5878089b00089313fd',1,'Mattoha::Nodes::MattohaClient']]], 10 | ['loadlobbyplayersforall_7',['LoadLobbyPlayersForAll',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a6825f39b2a7897c0f17a88fa77921bd1',1,'Mattoha::Nodes::MattohaServer']]], 11 | ['loadlobbyplayerssucceedeventhandler_8',['LoadLobbyPlayersSucceedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ac7b6c85092d8b75d18bd62ffc3e9e665',1,'Mattoha::Nodes::MattohaClient']]], 12 | ['lobbygameendedeventhandler_9',['LobbyGameEndedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#afaecf01ecdd50534f0915c200cad37a2',1,'Mattoha::Nodes::MattohaServer']]], 13 | ['lobbygamestartedeventhandler_10',['LobbyGameStartedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#ad05ab64db75f0e9ca0a8ac715af6a8b7',1,'Mattoha::Nodes::MattohaServer']]], 14 | ['lobbymessagefailedeventhandler_11',['LobbyMessageFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a99c840b86f1c1382f99009fa13dc48ac',1,'Mattoha::Nodes::MattohaClient']]], 15 | ['lobbymessagereceivedeventhandler_12',['LobbyMessageReceivedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a6fb5d9776bcd06a33e5f0c92f2b87d44',1,'Mattoha::Nodes::MattohaClient']]], 16 | ['lobbyremovedeventhandler_13',['LobbyRemovedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#acef53b67ea5d356ab01dfd86fd086bc0',1,'Mattoha::Nodes::MattohaServer']]] 17 | ]; 18 | -------------------------------------------------------------------------------- /docs/search/functions_a.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['newplayerjoinedeventhandler_0',['NewPlayerJoinedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a00be855e67e3ac9653113e290d65389a',1,'Mattoha::Nodes::MattohaClient']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/functions_b.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['playerchangedhisteameventhandler_0',['PlayerChangedHisTeamEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a776a0e0aeea394ab243b4f66f477038d',1,'Mattoha::Nodes::MattohaClient']]], 4 | ['playerjoinedeventhandler_1',['PlayerJoinedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a5d05f6a2e57bf8320f27c5fd65fd385c',1,'Mattoha::Nodes::MattohaClient']]], 5 | ['playerjoinedlobbyeventhandler_2',['PlayerJoinedLobbyEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#acfc37113f2ed8b788bb743a99b46d792',1,'Mattoha::Nodes::MattohaServer']]], 6 | ['playerlefteventhandler_3',['PlayerLeftEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a805661fdf9d6b07625488339ade36849',1,'Mattoha::Nodes::MattohaClient']]], 7 | ['playerleftlobbyeventhandler_4',['PlayerLeftLobbyEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a313891e337283266cf839cc8ee65a42a',1,'Mattoha::Nodes::MattohaServer']]], 8 | ['playerregisteredeventhandler_5',['PlayerRegisteredEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a2c1ef8cfcfa778e1f428766393a3d8ce',1,'Mattoha::Nodes::MattohaClient']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /docs/search/functions_c.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['refreshavailablelobbiesforall_0',['RefreshAvailableLobbiesForAll',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a10fb49c368ba74be0caa34340ed3d01c',1,'Mattoha::Nodes::MattohaServer']]], 4 | ['removeplayerfromlobby_1',['RemovePlayerFromLobby',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a02cd3319092d7a014388fc34c01bb67f',1,'Mattoha::Nodes::MattohaServer']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/functions_e.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['teammessagefailedeventhandler_0',['TeamMessageFailedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ae707b77ef59a7e2d46f89923d9098ffa',1,'Mattoha::Nodes::MattohaClient']]], 4 | ['teammessagereceivedeventhandler_1',['TeamMessageReceivedEventHandler',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a2c4debccb2150d5976f8fcf5827d8f4f',1,'Mattoha::Nodes::MattohaClient']]], 5 | ['tochatdict_2',['ToChatDict',['../class_mattoha_1_1_core_1_1_mattoha_utils.html#a68adb08ae7d1b4f33e119f76eb2801c9',1,'Mattoha::Core::MattohaUtils']]], 6 | ['tosecureddict_3',['ToSecuredDict',['../class_mattoha_1_1_core_1_1_mattoha_utils.html#ab69fe1e2f90c1224938c20efcff9f288',1,'Mattoha::Core::MattohaUtils']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/search/mag.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 12 | 14 | 20 | 24 | 25 | -------------------------------------------------------------------------------- /docs/search/mag_d.svg: -------------------------------------------------------------------------------- 1 | 2 | 4 | 12 | 14 | 20 | 24 | 25 | -------------------------------------------------------------------------------- /docs/search/mag_sel.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 13 | 15 | 21 | 26 | 31 | 32 | -------------------------------------------------------------------------------- /docs/search/mag_seld.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 13 | 15 | 21 | 26 | 31 | 32 | -------------------------------------------------------------------------------- /docs/search/namespaces_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['mattoha_0',['Mattoha',['../namespace_mattoha.html',1,'']]], 4 | ['mattoha_3a_3acore_1',['Core',['../namespace_mattoha_1_1_core.html',1,'Mattoha']]], 5 | ['mattoha_3a_3acore_3a_3ademo_2',['Demo',['../namespace_mattoha_1_1_core_1_1_demo.html',1,'Mattoha::Core']]], 6 | ['mattoha_3a_3acore_3a_3autils_3',['Utils',['../namespace_mattoha_1_1_core_1_1_utils.html',1,'Mattoha::Core']]], 7 | ['mattoha_3a_3amisc_4',['Misc',['../namespace_mattoha_1_1_misc.html',1,'Mattoha']]], 8 | ['mattoha_3a_3anodes_5',['Nodes',['../namespace_mattoha_1_1_nodes.html',1,'Mattoha']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /docs/search/properties_0.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['additionalprops_0',['AdditionalProps',['../class_mattoha_1_1_nodes_1_1_mattoha_spawner.html#ac6d121b890a3686cb745eadb07b59436',1,'Mattoha::Nodes::MattohaSpawner']]], 4 | ['autodespawn_1',['AutoDespawn',['../class_mattoha_1_1_nodes_1_1_mattoha_spawner.html#abbef73f1dbb81ee9fc3504d1d2066088',1,'Mattoha::Nodes::MattohaSpawner']]], 5 | ['autodespawnremovedscenenodes_2',['AutoDespawnRemovedSceneNodes',['../class_mattoha_1_1_nodes_1_1_mattoha_game_holder.html#a7ee22bafd536bd099b1a3d2b05034b1a',1,'Mattoha::Nodes::MattohaGameHolder']]], 6 | ['autoloadavailablelobbies_3',['AutoLoadAvailableLobbies',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#ab0b8dfc0059cc4a9e6b3e8d5c379ae77',1,'Mattoha::Nodes::MattohaSystem']]], 7 | ['autospawn_4',['AutoSpawn',['../class_mattoha_1_1_nodes_1_1_mattoha_spawner.html#a449b5caa22bf74fa047d9f4dad5cff99',1,'Mattoha::Nodes::MattohaSpawner']]], 8 | ['autospawnlobbynodes_5',['AutoSpawnLobbyNodes',['../class_mattoha_1_1_nodes_1_1_mattoha_game_holder.html#ab3ffb1a39169f54f28a988390d3e084c',1,'Mattoha::Nodes::MattohaGameHolder']]] 9 | ]; 10 | -------------------------------------------------------------------------------- /docs/search/properties_1.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['canreplicate_0',['CanReplicate',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#aac839b4bdf1cf4ce1afbe7374635abe6',1,'Mattoha::Nodes::MattohaClient']]], 4 | ['currentlobby_1',['CurrentLobby',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a1072d6a6c6e8a05690633e3ffa16dfb8',1,'Mattoha::Nodes::MattohaClient']]], 5 | ['currentlobbyplayers_2',['CurrentLobbyPlayers',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a08a73d1a50c621cec3d6d31ef085ea55',1,'Mattoha::Nodes::MattohaClient']]], 6 | ['currentplayer_3',['CurrentPlayer',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#ac91ee7a84b386d6e40a324df17f6403d',1,'Mattoha::Nodes::MattohaClient']]] 7 | ]; 8 | -------------------------------------------------------------------------------- /docs/search/properties_2.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['gameholder_0',['GameHolder',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a8e102069527f727c06404b9ae0a753d0',1,'Mattoha.Nodes.MattohaClient.GameHolder'],['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a78b9fd33f27535d63b2b31c9a1ca7515',1,'Mattoha.Nodes.MattohaServer.GameHolder']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/properties_3.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['handlebyserver_0',['HandleByServer',['../class_mattoha_1_1_nodes_1_1_mattoha_spawner.html#a067afac00bbec20dcc755326eee72c33',1,'Mattoha::Nodes::MattohaSpawner']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/properties_4.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['lobbies_0',['Lobbies',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a358d72c2d26b62f290f5dbfd734abc77',1,'Mattoha::Nodes::MattohaServer']]], 4 | ['lobbynode_1',['LobbyNode',['../class_mattoha_1_1_nodes_1_1_mattoha_client.html#a67dbcbe8dcd0e8382048eacbc6e6ec07',1,'Mattoha::Nodes::MattohaClient']]], 5 | ['lobbysize_2',['LobbySize',['../class_mattoha_1_1_nodes_1_1_mattoha_system.html#a6a0b5096e0e76a4f976b5b1c66e1e318',1,'Mattoha::Nodes::MattohaSystem']]] 6 | ]; 7 | -------------------------------------------------------------------------------- /docs/search/properties_5.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['middlewarenode_0',['MiddlewareNode',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#ac18e5630c547e3f592d4eddcb8be04b0',1,'Mattoha::Nodes::MattohaServer']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/properties_6.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['players_0',['Players',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a52ad49188584d8fc169f26855709f012',1,'Mattoha::Nodes::MattohaServer']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/properties_7.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['removedscenenodes_0',['RemovedSceneNodes',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a4e7d80e1c52e100f4eefe6016a4e0767',1,'Mattoha::Nodes::MattohaServer']]] 4 | ]; 5 | -------------------------------------------------------------------------------- /docs/search/properties_8.js: -------------------------------------------------------------------------------- 1 | var searchData= 2 | [ 3 | ['spawnednodes_0',['SpawnedNodes',['../class_mattoha_1_1_nodes_1_1_mattoha_server.html#a22b013e96ba7ea326502b41ebc4cbca3',1,'Mattoha::Nodes::MattohaServer']]], 4 | ['spawnforteamonly_1',['SpawnForTeamOnly',['../class_mattoha_1_1_nodes_1_1_mattoha_spawner.html#a04db46bd2a6f67a0d16c1232ed31db3e',1,'Mattoha::Nodes::MattohaSpawner']]] 5 | ]; 6 | -------------------------------------------------------------------------------- /docs/search/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = 2 | { 3 | 0: "abcdefghijlmnprst", 4 | 1: "m", 5 | 2: "m", 6 | 3: "abcdefgijlnprst", 7 | 4: "acghlmprs" 8 | }; 9 | 10 | var indexSectionNames = 11 | { 12 | 0: "all", 13 | 1: "classes", 14 | 2: "namespaces", 15 | 3: "functions", 16 | 4: "properties" 17 | }; 18 | 19 | var indexSectionLabels = 20 | { 21 | 0: "All", 22 | 1: "Classes", 23 | 2: "Namespaces", 24 | 3: "Functions", 25 | 4: "Properties" 26 | }; 27 | 28 | -------------------------------------------------------------------------------- /docs/splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/splitbar.png -------------------------------------------------------------------------------- /docs/splitbard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/splitbard.png -------------------------------------------------------------------------------- /docs/sync_off.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/sync_off.png -------------------------------------------------------------------------------- /docs/sync_on.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/sync_on.png -------------------------------------------------------------------------------- /docs/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/tab_a.png -------------------------------------------------------------------------------- /docs/tab_ad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/tab_ad.png -------------------------------------------------------------------------------- /docs/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/tab_b.png -------------------------------------------------------------------------------- /docs/tab_bd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/tab_bd.png -------------------------------------------------------------------------------- /docs/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/tab_h.png -------------------------------------------------------------------------------- /docs/tab_hd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/tab_hd.png -------------------------------------------------------------------------------- /docs/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/tab_s.png -------------------------------------------------------------------------------- /docs/tab_sd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/docs/tab_sd.png -------------------------------------------------------------------------------- /gd_demo_example/scenes/coin.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=5 format=3 uid="uid://ygga3sx03tvc"] 2 | 3 | [ext_resource type="Texture2D" uid="uid://wcxowoxvkef7" path="res://icon.svg" id="1_2yae6"] 4 | [ext_resource type="Script" path="res://gd_demo_example/scripts/coin.gd" id="1_5vqah"] 5 | [ext_resource type="Script" path="res://addons/mattoha_lobby_system/core/nodes/MattohaSpawner.cs" id="2_tbg5o"] 6 | 7 | [sub_resource type="CircleShape2D" id="CircleShape2D_snnoe"] 8 | radius = 66.0 9 | 10 | [node name="Coin" type="Area2D"] 11 | modulate = Color(0.856132, 0.708794, 0, 1) 12 | position = Vector2(1, 1) 13 | scale = Vector2(0.25, 0.25) 14 | collision_layer = 2 15 | script = ExtResource("1_5vqah") 16 | 17 | [node name="Sprite2D" type="Sprite2D" parent="."] 18 | texture = ExtResource("1_2yae6") 19 | 20 | [node name="CollisionShape2D" type="CollisionShape2D" parent="."] 21 | shape = SubResource("CircleShape2D_snnoe") 22 | debug_color = Color(0.851468, 0.000855187, 0.896501, 0.42) 23 | 24 | [node name="MattohaSpawner" type="Node2D" parent="."] 25 | script = ExtResource("2_tbg5o") 26 | AutoSpawn = false 27 | HandleByServer = true 28 | 29 | [connection signal="body_entered" from="." to="." method="_on_body_entered"] 30 | -------------------------------------------------------------------------------- /gd_demo_example/scenes/create_lobby.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://d3eq615lver5l"] 2 | 3 | [ext_resource type="Script" path="res://gd_demo_example/scripts/create_lobby.gd" id="1_q2pnx"] 4 | 5 | [node name="CreateLobby" type="Control" node_paths=PackedStringArray("lobbyNameInput")] 6 | layout_mode = 3 7 | anchors_preset = 15 8 | anchor_right = 1.0 9 | anchor_bottom = 1.0 10 | grow_horizontal = 2 11 | grow_vertical = 2 12 | script = ExtResource("1_q2pnx") 13 | lobbyNameInput = NodePath("PanelContainer/MarginContainer/VBoxContainer/LobbyNameLineEdit") 14 | 15 | [node name="PanelContainer" type="PanelContainer" parent="."] 16 | layout_mode = 1 17 | anchors_preset = 8 18 | anchor_left = 0.5 19 | anchor_top = 0.5 20 | anchor_right = 0.5 21 | anchor_bottom = 0.5 22 | offset_left = -288.0 23 | offset_top = -136.0 24 | offset_right = 288.0 25 | offset_bottom = 136.0 26 | grow_horizontal = 2 27 | grow_vertical = 2 28 | 29 | [node name="MarginContainer" type="MarginContainer" parent="PanelContainer"] 30 | layout_mode = 2 31 | theme_override_constants/margin_left = 10 32 | theme_override_constants/margin_top = 10 33 | theme_override_constants/margin_right = 10 34 | theme_override_constants/margin_bottom = 10 35 | 36 | [node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer"] 37 | layout_mode = 2 38 | 39 | [node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"] 40 | layout_mode = 2 41 | theme_type_variation = &"HeaderMedium" 42 | text = "Create New Lobby" 43 | 44 | [node name="Spacer" type="Control" parent="PanelContainer/MarginContainer/VBoxContainer"] 45 | custom_minimum_size = Vector2(0, 10) 46 | layout_mode = 2 47 | 48 | [node name="Label2" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"] 49 | layout_mode = 2 50 | text = "Lobby Name:" 51 | 52 | [node name="LobbyNameLineEdit" type="LineEdit" parent="PanelContainer/MarginContainer/VBoxContainer"] 53 | layout_mode = 2 54 | placeholder_text = "Enter lobby name ..." 55 | 56 | [node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer"] 57 | layout_mode = 2 58 | size_flags_vertical = 10 59 | 60 | [node name="Spaceer" type="Control" parent="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"] 61 | layout_mode = 2 62 | size_flags_horizontal = 3 63 | 64 | [node name="CreateButton" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"] 65 | layout_mode = 2 66 | text = "Continue" 67 | 68 | [connection signal="pressed" from="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/CreateButton" to="." method="_on_create_button_pressed"] 69 | -------------------------------------------------------------------------------- /gd_demo_example/scenes/game.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=3 uid="uid://cd65j8bhy2x2h"] 2 | 3 | [ext_resource type="PackedScene" uid="uid://ygga3sx03tvc" path="res://gd_demo_example/scenes/coin.tscn" id="1_dw144"] 4 | [ext_resource type="Script" path="res://gd_demo_example/scripts/game.gd" id="1_xmhaj"] 5 | 6 | [node name="Game" type="Node2D"] 7 | script = ExtResource("1_xmhaj") 8 | 9 | [node name="Camera2D" type="Camera2D" parent="."] 10 | position = Vector2(74, 44) 11 | 12 | [node name="Coin" parent="." instance=ExtResource("1_dw144")] 13 | position = Vector2(-128, -67) 14 | 15 | [node name="Coin2" parent="." instance=ExtResource("1_dw144")] 16 | position = Vector2(-153, 40) 17 | 18 | [node name="Coin3" parent="." instance=ExtResource("1_dw144")] 19 | position = Vector2(-137, 130) 20 | -------------------------------------------------------------------------------- /gd_demo_example/scenes/game_holder.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://lbi5pngog68b"] 2 | 3 | [ext_resource type="Script" path="res://addons/mattoha_lobby_system/core/nodes/MattohaGameHolder.cs" id="1_evb83"] 4 | 5 | [node name="GameHolder" type="Node2D"] 6 | script = ExtResource("1_evb83") 7 | -------------------------------------------------------------------------------- /gd_demo_example/scenes/lobbies.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=3 uid="uid://bdp2tx37ko74k"] 2 | 3 | [ext_resource type="Script" path="res://gd_demo_example/scripts/lobbies.gd" id="1_uba3j"] 4 | [ext_resource type="PackedScene" uid="uid://bmar0sccrq7y5" path="res://gd_demo_example/scenes/slots/lobby_slot.tscn" id="2_krk85"] 5 | 6 | [node name="Lobbies" type="Control" node_paths=PackedStringArray("LobbiesContainer")] 7 | layout_mode = 3 8 | anchors_preset = 15 9 | anchor_right = 1.0 10 | anchor_bottom = 1.0 11 | grow_horizontal = 2 12 | grow_vertical = 2 13 | script = ExtResource("1_uba3j") 14 | LobbiesContainer = NodePath("PanelContainer/MarginContainer/VBoxContainer/ScrollContainer/LobbiesContainer") 15 | LobbySlot = ExtResource("2_krk85") 16 | 17 | [node name="PanelContainer" type="PanelContainer" parent="."] 18 | layout_mode = 1 19 | anchors_preset = 8 20 | anchor_left = 0.5 21 | anchor_top = 0.5 22 | anchor_right = 0.5 23 | anchor_bottom = 0.5 24 | offset_left = -360.0 25 | offset_top = -170.0 26 | offset_right = 360.0 27 | offset_bottom = 170.0 28 | grow_horizontal = 2 29 | grow_vertical = 2 30 | 31 | [node name="MarginContainer" type="MarginContainer" parent="PanelContainer"] 32 | layout_mode = 2 33 | theme_override_constants/margin_left = 10 34 | theme_override_constants/margin_top = 10 35 | theme_override_constants/margin_right = 10 36 | theme_override_constants/margin_bottom = 10 37 | 38 | [node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer"] 39 | layout_mode = 2 40 | 41 | [node name="HBoxContainer2" type="HBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer"] 42 | layout_mode = 2 43 | 44 | [node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer2"] 45 | layout_mode = 2 46 | size_flags_horizontal = 3 47 | theme_type_variation = &"HeaderMedium" 48 | text = "Lobbies List" 49 | 50 | [node name="CreateLobbyButton" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer2"] 51 | unique_name_in_owner = true 52 | layout_mode = 2 53 | text = "Create Lobby" 54 | 55 | [node name="Spacer" type="Control" parent="PanelContainer/MarginContainer/VBoxContainer"] 56 | custom_minimum_size = Vector2(0, 10) 57 | layout_mode = 2 58 | 59 | [node name="ScrollContainer" type="ScrollContainer" parent="PanelContainer/MarginContainer/VBoxContainer"] 60 | layout_mode = 2 61 | size_flags_vertical = 3 62 | 63 | [node name="LobbiesContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer/ScrollContainer"] 64 | unique_name_in_owner = true 65 | layout_mode = 2 66 | size_flags_horizontal = 3 67 | size_flags_vertical = 3 68 | 69 | [connection signal="pressed" from="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer2/CreateLobbyButton" to="." method="_on_create_lobby_button_pressed"] 70 | -------------------------------------------------------------------------------- /gd_demo_example/scenes/lobby.gd: -------------------------------------------------------------------------------- 1 | extends Control 2 | 3 | @export var LobbyNameLabel: Label; 4 | @export var PlayersContainer: VBoxContainer; 5 | @export var MessagesContainer: VBoxContainer; 6 | @export var MessageInput: LineEdit; 7 | 8 | func _ready(): 9 | MattohaSystemGD.client.start_game_succeed.connect(_on_start_game) 10 | MattohaSystemGD.client.load_lobby_players_succeed.connect(_on_load_lobby_players) 11 | MattohaSystemGD.client.new_player_joined.connect(_on_new_player_joined) 12 | MattohaSystemGD.client.set_lobby_data_succeed.connect(_on_set_lobby_data_succeed) 13 | MattohaSystemGD.client.player_changed_his_team.connect(_on_player_changed_his_team) 14 | MattohaSystemGD.client.team_message_received.connect(_on_team_message) 15 | MattohaSystemGD.client.lobby_message_received.connect(_on_lobby_message) 16 | MattohaSystemGD.client.global_message_received.connect(_on_global_message) 17 | MattohaSystemGD.client.player_left.connect(_on_player_left) 18 | 19 | MattohaSystemGD.client.load_lobby_players() 20 | refresh_lobby_name() 21 | 22 | func _on_start_game(_lobby_data: Dictionary): 23 | get_tree().change_scene_to_file("res://gd_demo_example/scenes/game_holder.tscn") 24 | 25 | func refresh_lobby_name(): 26 | LobbyNameLabel.text = MattohaSystemGD.client.current_lobby["Name"] 27 | 28 | func update_joined_players(): 29 | var players = MattohaSystemGD.client.current_lobby_players.values() 30 | for slot in PlayersContainer.get_children(): 31 | slot.queue_free() 32 | for player in players: 33 | var player_label = Label.new() 34 | player_label.text = "Player(%d, %s, %d)" % [player["Id"],player["Username"],player["TeamId"]] 35 | PlayersContainer.add_child(player_label) 36 | 37 | func _on_load_lobby_players(_players: Array): 38 | update_joined_players() 39 | 40 | func _on_new_player_joined(_player: Dictionary): 41 | update_joined_players() 42 | 43 | func _on_set_lobby_data_succeed(_lobbyData: Dictionary): 44 | refresh_lobby_name() 45 | 46 | func _on_player_changed_his_team(_player: Dictionary): 47 | update_joined_players() 48 | 49 | func _on_team_message(_player: Dictionary, _message: String): 50 | var label = Label.new() 51 | label.text = "Team(%s, %s)" % [_player["Username"],_message] 52 | MessagesContainer.add_child(label) 53 | 54 | func _on_lobby_message(_player: Dictionary, _message: String): 55 | var label = Label.new() 56 | label.text = "Lobby(%s, %s)" % [_player["Username"],_message] 57 | MessagesContainer.add_child(label) 58 | 59 | func _on_global_message(_player: Dictionary, _message: String): 60 | var label = Label.new() 61 | label.text = "Global(%s)" % [_message] 62 | MessagesContainer.add_child(label) 63 | 64 | func _on_player_left(_player: Dictionary): 65 | update_joined_players() 66 | 67 | func _on_random_name_button_pressed(): 68 | MattohaSystemGD.client.set_lobby_data({"Name": "LOBB%d" % (randi() % 1000)}) 69 | 70 | func _on_team_1_button_pressed(): 71 | MattohaSystemGD.client.join_team(0) 72 | 73 | func _on_team_2_button_pressed(): 74 | MattohaSystemGD.client.join_team(1) 75 | 76 | func _on_team_message_button_pressed(): 77 | MattohaSystemGD.client.send_team_message(MessageInput.text) 78 | MessageInput.text = "" 79 | 80 | func _on_lobby_message_button_pressed(): 81 | MattohaSystemGD.client.send_lobby_message(MessageInput.text) 82 | MessageInput.text = "" 83 | 84 | func _on_global_message_button_pressed(): 85 | MattohaSystemGD.client.send_global_message(MessageInput.text) 86 | MessageInput.text = "" 87 | 88 | func _on_start_game_button_pressed(): 89 | MattohaSystemGD.client.start_game() 90 | 91 | func _on_leave_lobby_button_pressed(): 92 | MattohaSystemGD.client.leave_lobby() 93 | get_tree().change_scene_to_file("res://gd_demo_example/scenes/lobbies.tscn") 94 | -------------------------------------------------------------------------------- /gd_demo_example/scenes/main_menu.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://brljjiacgxh34"] 2 | 3 | [ext_resource type="Script" path="res://gd_demo_example/scripts/main_menu.gd" id="1_1g60c"] 4 | 5 | [node name="MainMenu" type="Control"] 6 | layout_mode = 3 7 | anchors_preset = 15 8 | anchor_right = 1.0 9 | anchor_bottom = 1.0 10 | grow_horizontal = 2 11 | grow_vertical = 2 12 | script = ExtResource("1_1g60c") 13 | 14 | [node name="PanelContainer" type="PanelContainer" parent="."] 15 | layout_mode = 1 16 | anchors_preset = 8 17 | anchor_left = 0.5 18 | anchor_top = 0.5 19 | anchor_right = 0.5 20 | anchor_bottom = 0.5 21 | offset_left = -201.0 22 | offset_top = -33.0 23 | offset_right = 201.0 24 | offset_bottom = 33.0 25 | grow_horizontal = 2 26 | grow_vertical = 2 27 | 28 | [node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer"] 29 | layout_mode = 2 30 | size_flags_vertical = 0 31 | 32 | [node name="ServerButton" type="Button" parent="PanelContainer/VBoxContainer"] 33 | layout_mode = 2 34 | text = "SERVER" 35 | 36 | [node name="ClientButton" type="Button" parent="PanelContainer/VBoxContainer"] 37 | layout_mode = 2 38 | text = "CLIENT" 39 | 40 | [connection signal="pressed" from="PanelContainer/VBoxContainer/ServerButton" to="." method="_on_server_button_pressed"] 41 | [connection signal="pressed" from="PanelContainer/VBoxContainer/ClientButton" to="." method="_on_client_button_pressed"] 42 | -------------------------------------------------------------------------------- /gd_demo_example/scenes/player.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=7 format=3 uid="uid://h7gvgkn0k2pd"] 2 | 3 | [ext_resource type="Script" path="res://gd_demo_example/scripts/player.gd" id="1_vca1k"] 4 | [ext_resource type="Texture2D" uid="uid://wcxowoxvkef7" path="res://icon.svg" id="2_pxpn8"] 5 | [ext_resource type="Script" path="res://addons/mattoha_lobby_system/core/nodes/MattohaSynchronizerModifier.cs" id="3_qje2h"] 6 | [ext_resource type="Script" path="res://addons/mattoha_lobby_system/core/nodes/MattohaSpawner.cs" id="4_w5xjx"] 7 | 8 | [sub_resource type="CircleShape2D" id="CircleShape2D_4d5lc"] 9 | 10 | [sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_tncm0"] 11 | properties/0/path = NodePath(".:position") 12 | properties/0/spawn = true 13 | properties/0/replication_mode = 2 14 | 15 | [node name="Player" type="CharacterBody2D"] 16 | collision_mask = 2 17 | script = ExtResource("1_vca1k") 18 | 19 | [node name="Sprite2D" type="Sprite2D" parent="."] 20 | scale = Vector2(0.4, 0.4) 21 | texture = ExtResource("2_pxpn8") 22 | 23 | [node name="CollisionShape2D" type="CollisionShape2D" parent="."] 24 | shape = SubResource("CircleShape2D_4d5lc") 25 | 26 | [node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."] 27 | replication_config = SubResource("SceneReplicationConfig_tncm0") 28 | public_visibility = false 29 | script = ExtResource("3_qje2h") 30 | 31 | [node name="MattohaSpawner" type="Node2D" parent="."] 32 | script = ExtResource("4_w5xjx") 33 | AdditionalProps = ["Foo", "Sprite2D:scale"] 34 | -------------------------------------------------------------------------------- /gd_demo_example/scenes/projectile.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://pok7mc7aut5"] 2 | 3 | [ext_resource type="Texture2D" uid="uid://wcxowoxvkef7" path="res://icon.svg" id="1_3as6q"] 4 | 5 | [node name="Projectile" type="Node2D"] 6 | 7 | [node name="Sprite2D" type="Sprite2D" parent="."] 8 | modulate = Color(1, 0.392157, 1, 1) 9 | scale = Vector2(0.15, 0.15) 10 | texture = ExtResource("1_3as6q") 11 | -------------------------------------------------------------------------------- /gd_demo_example/scenes/slots/lobby_slot.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://bmar0sccrq7y5"] 2 | 3 | [ext_resource type="Script" path="res://gd_demo_example/scripts/lobby_slot.gd" id="1_6hukj"] 4 | 5 | [node name="LobbySlot" type="HBoxContainer"] 6 | scale = Vector2(-0.149272, 0.73052) 7 | script = ExtResource("1_6hukj") 8 | 9 | [node name="LobbyNameLabel" type="Label" parent="."] 10 | unique_name_in_owner = true 11 | layout_mode = 2 12 | size_flags_horizontal = 3 13 | text = "Lobby Name" 14 | 15 | [node name="PlayersCountLabel" type="Label" parent="."] 16 | unique_name_in_owner = true 17 | layout_mode = 2 18 | size_flags_horizontal = 3 19 | size_flags_stretch_ratio = 1.5 20 | text = "Lobby Name" 21 | 22 | [node name="JoinButton" type="Button" parent="."] 23 | unique_name_in_owner = true 24 | layout_mode = 2 25 | focus_mode = 0 26 | text = "JOIN" 27 | 28 | [connection signal="pressed" from="JoinButton" to="." method="_on_join_button_pressed"] 29 | -------------------------------------------------------------------------------- /gd_demo_example/scenes/user_dialog.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://fd3plralld0p"] 2 | 3 | [ext_resource type="Script" path="res://gd_demo_example/scripts/user_dialog.gd" id="1_yl4wu"] 4 | 5 | [node name="UserDialog" type="Control" node_paths=PackedStringArray("usernameInput")] 6 | layout_mode = 3 7 | anchors_preset = 15 8 | anchor_right = 1.0 9 | anchor_bottom = 1.0 10 | grow_horizontal = 2 11 | grow_vertical = 2 12 | script = ExtResource("1_yl4wu") 13 | usernameInput = NodePath("PanelContainer/MarginContainer/VBoxContainer/UsernameLineEdit") 14 | 15 | [node name="PanelContainer" type="PanelContainer" parent="."] 16 | layout_mode = 1 17 | anchors_preset = 8 18 | anchor_left = 0.5 19 | anchor_top = 0.5 20 | anchor_right = 0.5 21 | anchor_bottom = 0.5 22 | offset_left = -288.0 23 | offset_top = -136.0 24 | offset_right = 288.0 25 | offset_bottom = 136.0 26 | grow_horizontal = 2 27 | grow_vertical = 2 28 | 29 | [node name="MarginContainer" type="MarginContainer" parent="PanelContainer"] 30 | layout_mode = 2 31 | theme_override_constants/margin_left = 10 32 | theme_override_constants/margin_top = 10 33 | theme_override_constants/margin_right = 10 34 | theme_override_constants/margin_bottom = 10 35 | 36 | [node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer"] 37 | layout_mode = 2 38 | 39 | [node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"] 40 | layout_mode = 2 41 | theme_type_variation = &"HeaderMedium" 42 | text = "User info" 43 | 44 | [node name="Spacer" type="Control" parent="PanelContainer/MarginContainer/VBoxContainer"] 45 | custom_minimum_size = Vector2(0, 10) 46 | layout_mode = 2 47 | 48 | [node name="Label2" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"] 49 | layout_mode = 2 50 | text = "Username :" 51 | 52 | [node name="UsernameLineEdit" type="LineEdit" parent="PanelContainer/MarginContainer/VBoxContainer"] 53 | unique_name_in_owner = true 54 | layout_mode = 2 55 | placeholder_text = "Enter a susername" 56 | 57 | [node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer"] 58 | layout_mode = 2 59 | size_flags_vertical = 10 60 | 61 | [node name="Spaceer" type="Control" parent="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"] 62 | layout_mode = 2 63 | size_flags_horizontal = 3 64 | 65 | [node name="ContinueButton" type="Button" parent="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer"] 66 | unique_name_in_owner = true 67 | layout_mode = 2 68 | focus_mode = 0 69 | text = "Continue" 70 | 71 | [connection signal="pressed" from="PanelContainer/MarginContainer/VBoxContainer/HBoxContainer/ContinueButton" to="." method="_on_continue_button_pressed"] 72 | -------------------------------------------------------------------------------- /gd_demo_example/scripts/coin.gd: -------------------------------------------------------------------------------- 1 | extends Area2D 2 | 3 | func _on_body_entered(_body: Node2D): 4 | if (multiplayer.is_server()): 5 | queue_free() 6 | -------------------------------------------------------------------------------- /gd_demo_example/scripts/create_lobby.gd: -------------------------------------------------------------------------------- 1 | extends Control 2 | 3 | @export var lobbyNameInput: LineEdit; 4 | 5 | func _ready(): 6 | MattohaSystemGD.client.create_lobby_succeed.connect(_on_create_lobby_succeed) 7 | 8 | func _on_create_lobby_succeed(_lobby_data: Dictionary): 9 | get_tree().change_scene_to_file("res://gd_demo_example/scenes/lobby.tscn") 10 | 11 | func _on_create_button_pressed(): 12 | var lobby: Dictionary = { 13 | "Name": lobbyNameInput.text, 14 | "MaxPlayers": 4, 15 | } 16 | MattohaSystemGD.client.create_lobby(lobby, "res://gd_demo_example/scenes/game.tscn") 17 | -------------------------------------------------------------------------------- /gd_demo_example/scripts/game.gd: -------------------------------------------------------------------------------- 1 | extends Node2D 2 | 3 | @export var PlayerScene: PackedScene 4 | 5 | func _ready(): 6 | if (multiplayer.is_server()): 7 | return 8 | spawn_player() 9 | 10 | func spawn_player(): 11 | var instance = MattohaSystemGD.create_instance("res://gd_demo_example/scenes/player.tscn") 12 | instance.rotation = 2.3 13 | instance.position = Vector2(randi() % 200, randi() % 100) 14 | add_child(instance) 15 | -------------------------------------------------------------------------------- /gd_demo_example/scripts/lobbies.gd: -------------------------------------------------------------------------------- 1 | extends Control 2 | 3 | @export var LobbiesContainer: VBoxContainer; 4 | @export var LobbySlot: PackedScene; 5 | 6 | func _ready(): 7 | MattohaSystemGD.client.load_available_lobbies_succeed.connect(_on_load_available_lobbies_succeed) 8 | MattohaSystemGD.client.join_lobby_succeed.connect(_on_join_lobby_succeed) 9 | MattohaSystemGD.client.load_available_lobbies() 10 | 11 | func _on_create_lobby_button_pressed(): 12 | get_tree().change_scene_to_file("res://gd_demo_example/scenes/create_lobby.tscn") 13 | 14 | func _on_load_available_lobbies_succeed(lobbies): 15 | for slot in LobbiesContainer.get_children(): 16 | slot.queue_free() 17 | for lobby in lobbies: 18 | var lobby_slot = LobbySlot.instantiate() 19 | lobby_slot.lobby_dict = lobby 20 | LobbiesContainer.add_child(lobby_slot) 21 | 22 | func _on_join_lobby_succeed(lobby_data: Dictionary): 23 | if (lobby_data['IsGameStarted']): 24 | get_tree().change_scene_to_file("res://gd_demo_example/scenes/game_holder.tscn") 25 | else: 26 | get_tree().change_scene_to_file("res://gd_demo_example/scenes/lobby.tscn") -------------------------------------------------------------------------------- /gd_demo_example/scripts/lobby_slot.gd: -------------------------------------------------------------------------------- 1 | extends HBoxContainer 2 | 3 | var lobby_dict: Dictionary 4 | 5 | func _ready(): 6 | %LobbyNameLabel.text = lobby_dict["Name"] 7 | %PlayersCountLabel.text = "%d / %d" % [lobby_dict["PlayersCount"],lobby_dict["MaxPlayers"]] 8 | 9 | func _on_join_button_pressed(): 10 | MattohaSystemGD.client.join_lobby(lobby_dict["Id"]) 11 | -------------------------------------------------------------------------------- /gd_demo_example/scripts/main_menu.gd: -------------------------------------------------------------------------------- 1 | extends Control 2 | 3 | func _ready(): 4 | MattohaSystemGD.client.connected_to_server.connect(_on_connected_to_server) 5 | 6 | func _on_connected_to_server(): 7 | get_tree().change_scene_to_file("res://gd_demo_example/scenes/user_dialog.tscn") 8 | 9 | func _on_client_button_pressed(): 10 | MattohaSystemGD.start_client() 11 | 12 | func _on_server_button_pressed(): 13 | MattohaSystemGD.start_server() 14 | get_tree().change_scene_to_file("res://gd_demo_example/scenes/game_holder.tscn") 15 | -------------------------------------------------------------------------------- /gd_demo_example/scripts/player.gd: -------------------------------------------------------------------------------- 1 | extends CharacterBody2D 2 | 3 | @export var speed = 300.0 4 | @export var Foo: String 5 | 6 | func _enter_tree(): 7 | if (MattohaSystemGD.is_node_owner(self)): 8 | Foo = "Foo_%d" % (randi() % 200) 9 | $Sprite2D.scale = Vector2(0.25, 0.25) 10 | 11 | func _process(_delta): 12 | if (multiplayer.get_unique_id() != get_multiplayer_authority()): 13 | return 14 | move_player() 15 | 16 | func move_player(): 17 | var direction = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down") 18 | if direction: 19 | velocity = direction * speed 20 | else: 21 | velocity = Vector2.ZERO 22 | move_and_slide() 23 | -------------------------------------------------------------------------------- /gd_demo_example/scripts/user_dialog.gd: -------------------------------------------------------------------------------- 1 | extends Control 2 | 3 | @export var usernameInput: LineEdit; 4 | 5 | func _ready(): 6 | MattohaSystemGD.client.set_player_data_succeed.connect(_on_set_player_data_succeed) 7 | 8 | func _on_continue_button_pressed(): 9 | MattohaSystemGD.client.set_player_data({"Username": usernameInput.text}) 10 | 11 | func _on_set_player_data_succeed(_player_data: Dictionary): 12 | get_tree().change_scene_to_file("res://gd_demo_example/scenes/lobbies.tscn") 13 | -------------------------------------------------------------------------------- /icon.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /icon.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://wcxowoxvkef7" 6 | path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://icon.svg" 14 | dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | svg/scale=1.0 36 | editor/scale_with_editor_scale=false 37 | editor/convert_colors_with_editor_theme=false 38 | -------------------------------------------------------------------------------- /main_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/main_icon.png -------------------------------------------------------------------------------- /main_icon.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://cyvngacsmova5" 6 | path="res://.godot/imported/main_icon.png-cc1ae01497c324c21ef14a7859debd2f.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://main_icon.png" 14 | dest_files=["res://.godot/imported/main_icon.png-cc1ae01497c324c21ef14a7859debd2f.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /mattoha_lobby_system.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | net6.0 4 | net7.0 5 | net8.0 6 | true 7 | 8 | 9 | $(DefineConstants);MATTOHA_SERVER;MATTOHA_CLIENT 10 | 11 | 12 | $(DefineConstants);MATTOHA_CLIENT,MATTOHA_SERVER 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /mattoha_lobby_system.csproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ProjectDebugger 5 | 6 | 7 | Profile 1 8 | 9 | -------------------------------------------------------------------------------- /mattoha_lobby_system.sln: -------------------------------------------------------------------------------- 1 | Microsoft Visual Studio Solution File, Format Version 12.00 2 | # Visual Studio 2012 3 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mattoha_lobby_system", "mattoha_lobby_system.csproj", "{DC4F13D0-A347-4C4E-8746-261B6279E9F4}" 4 | EndProject 5 | Global 6 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 7 | Debug|Any CPU = Debug|Any CPU 8 | ExportDebug|Any CPU = ExportDebug|Any CPU 9 | ExportRelease|Any CPU = ExportRelease|Any CPU 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {DC4F13D0-A347-4C4E-8746-261B6279E9F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 13 | {DC4F13D0-A347-4C4E-8746-261B6279E9F4}.Debug|Any CPU.Build.0 = Debug|Any CPU 14 | {DC4F13D0-A347-4C4E-8746-261B6279E9F4}.ExportDebug|Any CPU.ActiveCfg = ExportDebug|Any CPU 15 | {DC4F13D0-A347-4C4E-8746-261B6279E9F4}.ExportDebug|Any CPU.Build.0 = ExportDebug|Any CPU 16 | {DC4F13D0-A347-4C4E-8746-261B6279E9F4}.ExportRelease|Any CPU.ActiveCfg = ExportRelease|Any CPU 17 | {DC4F13D0-A347-4C4E-8746-261B6279E9F4}.ExportRelease|Any CPU.Build.0 = ExportRelease|Any CPU 18 | EndGlobalSection 19 | EndGlobal 20 | -------------------------------------------------------------------------------- /pics/active_replication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/pics/active_replication.png -------------------------------------------------------------------------------- /pics/active_replication.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dka47rwt776qo" 6 | path="res://.godot/imported/active_replication.png-a326d56e5aeeb22f85f9a34f2763cf39.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://pics/active_replication.png" 14 | dest_files=["res://.godot/imported/active_replication.png-a326d56e5aeeb22f85f9a34f2763cf39.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /pics/auto_load.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/pics/auto_load.png -------------------------------------------------------------------------------- /pics/auto_load.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://fqqiumnub0k0" 6 | path="res://.godot/imported/auto_load.png-cef2120b9304eab1d3dfcfed08be5c8b.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://pics/auto_load.png" 14 | dest_files=["res://.godot/imported/auto_load.png-cef2120b9304eab1d3dfcfed08be5c8b.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /pics/client_signals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/pics/client_signals.png -------------------------------------------------------------------------------- /pics/client_signals.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://c680bd2llep2c" 6 | path="res://.godot/imported/client_signals.png-833e7e37e29fb94eafa5398681f2a853.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://pics/client_signals.png" 14 | dest_files=["res://.godot/imported/client_signals.png-833e7e37e29fb94eafa5398681f2a853.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /pics/config.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/pics/config.png -------------------------------------------------------------------------------- /pics/config.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://ow1t4m5i36a4" 6 | path="res://.godot/imported/config.png-dc87d8af660bcfc724a6a449c91bbc6b.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://pics/config.png" 14 | dest_files=["res://.godot/imported/config.png-dc87d8af660bcfc724a6a449c91bbc6b.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /pics/godot_instances.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/pics/godot_instances.png -------------------------------------------------------------------------------- /pics/godot_instances.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bseb0lgtghnwa" 6 | path="res://.godot/imported/godot_instances.png-51eee1696d138f3859c7b1fa3f6ed5aa.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://pics/godot_instances.png" 14 | dest_files=["res://.godot/imported/godot_instances.png-51eee1696d138f3859c7b1fa3f6ed5aa.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /pics/listener.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/pics/listener.png -------------------------------------------------------------------------------- /pics/listener.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://rvsmj4dr8wh5" 6 | path="res://.godot/imported/listener.png-5eadd4378d72c32c341f3278ade9d320.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://pics/listener.png" 14 | dest_files=["res://.godot/imported/listener.png-5eadd4378d72c32c341f3278ade9d320.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /pics/mattoha_nodes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/pics/mattoha_nodes.png -------------------------------------------------------------------------------- /pics/mattoha_nodes.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dakdmlg3ox6ff" 6 | path="res://.godot/imported/mattoha_nodes.png-3fa5adb4e9641d856176bd3be1765ffb.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://pics/mattoha_nodes.png" 14 | dest_files=["res://.godot/imported/mattoha_nodes.png-3fa5adb4e9641d856176bd3be1765ffb.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /pics/replicator_properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/pics/replicator_properties.png -------------------------------------------------------------------------------- /pics/replicator_properties.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://b52uspct6tnue" 6 | path="res://.godot/imported/replicator_properties.png-d0b1bb78f00ca05786095fddf613eae5.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://pics/replicator_properties.png" 14 | dest_files=["res://.godot/imported/replicator_properties.png-d0b1bb78f00ca05786095fddf613eae5.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /pics/replicator_viewer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Zer0xTJ/GodotMattohaLobbySystem/268b88b5837b619a98e6103febfb41078cce6a80/pics/replicator_viewer.png -------------------------------------------------------------------------------- /pics/replicator_viewer.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dwtknfty0f6it" 6 | path="res://.godot/imported/replicator_viewer.png-c301dc041b03c68c1928da01d26f0814.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://pics/replicator_viewer.png" 14 | dest_files=["res://.godot/imported/replicator_viewer.png-c301dc041b03c68c1928da01d26f0814.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | --------------------------------------------------------------------------------