From cab73304bfce10d1ccb1d6cc4ac96cf14ace5b6f Mon Sep 17 00:00:00 2001 From: Jack Yang Date: Sat, 13 May 2023 08:12:01 -0700 Subject: [PATCH 1/2] Update settings based on Oculus recommendation --- Assets/Plugins.meta | 8 ++++++++ Assets/Plugins/Android.meta | 8 ++++++++ Assets/Plugins/Android/AndroidManifest.xml | 16 ++++++++++++++++ Assets/Plugins/Android/AndroidManifest.xml.meta | 7 +++++++ ProjectSettings/ProjectSettings.asset | 2 +- 5 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 Assets/Plugins.meta create mode 100644 Assets/Plugins/Android.meta create mode 100644 Assets/Plugins/Android/AndroidManifest.xml create mode 100644 Assets/Plugins/Android/AndroidManifest.xml.meta diff --git a/Assets/Plugins.meta b/Assets/Plugins.meta new file mode 100644 index 00000000..56ed6fea --- /dev/null +++ b/Assets/Plugins.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ad22f1740ca254c41a7d9474edce7f51 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android.meta b/Assets/Plugins/Android.meta new file mode 100644 index 00000000..a8a3cb30 --- /dev/null +++ b/Assets/Plugins/Android.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6fee542dc96ea724e94709062e2f3b91 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Plugins/Android/AndroidManifest.xml b/Assets/Plugins/Android/AndroidManifest.xml new file mode 100644 index 00000000..7f3877fc --- /dev/null +++ b/Assets/Plugins/Android/AndroidManifest.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Plugins/Android/AndroidManifest.xml.meta b/Assets/Plugins/Android/AndroidManifest.xml.meta new file mode 100644 index 00000000..ce12917a --- /dev/null +++ b/Assets/Plugins/Android/AndroidManifest.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2e0beb468366a0a42b2c84f00a260e9f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 83c577fd..06fa613f 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -46,7 +46,7 @@ PlayerSettings: defaultScreenHeight: 1080 defaultScreenWidthWeb: 960 defaultScreenHeightWeb: 600 - m_StereoRenderingPath: 0 + m_StereoRenderingPath: 2 m_ActiveColorSpace: 1 m_SpriteBatchVertexThreshold: 300 m_MTRendering: 1 From 7305c268f1ee9c0b8d5b793dbdfc6e81f46d94cf Mon Sep 17 00:00:00 2001 From: Jack Yang Date: Sat, 13 May 2023 13:39:34 -0700 Subject: [PATCH 2/2] Add prototype from sample --- Assets/Photon.meta | 9 + Assets/Photon/PhotonChat.meta | 7 + Assets/Photon/PhotonChat/Code.meta | 9 + .../PhotonChat/Code/ChannelCreationOptions.cs | 22 + .../Code/ChannelCreationOptions.cs.meta | 12 + .../Code/ChannelWellKnownProperties.cs | 14 + .../Code/ChannelWellKnownProperties.cs.meta | 12 + .../Photon/PhotonChat/Code/ChatAppSettings.cs | 64 + .../PhotonChat/Code/ChatAppSettings.cs.meta | 11 + Assets/Photon/PhotonChat/Code/ChatChannel.cs | 255 + .../PhotonChat/Code/ChatChannel.cs.meta | 8 + Assets/Photon/PhotonChat/Code/ChatClient.cs | 1856 + .../Photon/PhotonChat/Code/ChatClient.cs.meta | 8 + .../PhotonChat/Code/ChatDisconnectCause.cs | 43 + .../Code/ChatDisconnectCause.cs.meta | 8 + .../Photon/PhotonChat/Code/ChatEventCode.cs | 39 + .../PhotonChat/Code/ChatEventCode.cs.meta | 8 + .../PhotonChat/Code/ChatOperationCode.cs | 38 + .../PhotonChat/Code/ChatOperationCode.cs.meta | 8 + .../PhotonChat/Code/ChatParameterCode.cs | 85 + .../PhotonChat/Code/ChatParameterCode.cs.meta | 8 + Assets/Photon/PhotonChat/Code/ChatPeer.cs | 454 + .../Photon/PhotonChat/Code/ChatPeer.cs.meta | 8 + Assets/Photon/PhotonChat/Code/ChatState.cs | 39 + .../Photon/PhotonChat/Code/ChatState.cs.meta | 8 + .../Photon/PhotonChat/Code/ChatUserStatus.cs | 35 + .../PhotonChat/Code/ChatUserStatus.cs.meta | 8 + .../PhotonChat/Code/IChatClientListener.cs | 148 + .../Code/IChatClientListener.cs.meta | 8 + .../Photon/PhotonChat/Code/PhotonChat.asmdef | 12 + .../PhotonChat/Code/PhotonChat.asmdef.meta | 8 + .../Photon/PhotonChat/Code/changes-chat.txt | 146 + .../PhotonChat/Code/changes-chat.txt.meta | 7 + Assets/Photon/PhotonChat/Demos.meta | 9 + Assets/Photon/PhotonChat/Demos/Common.meta | 9 + .../Demos/Common/EventSystemSpawner.cs | 40 + .../Demos/Common/EventSystemSpawner.cs.meta | 12 + .../PhotonChat/Demos/Common/OnStartDelete.cs | 24 + .../Demos/Common/OnStartDelete.cs.meta | 12 + .../Demos/Common/TextButtonTransition.cs | 70 + .../Demos/Common/TextButtonTransition.cs.meta | 12 + .../Demos/Common/TextToggleIsOnTransition.cs | 86 + .../Common/TextToggleIsOnTransition.cs.meta | 12 + Assets/Photon/PhotonChat/Demos/DemoChat.meta | 9 + .../Demos/DemoChat/AppSettingsExtensions.cs | 33 + .../DemoChat/AppSettingsExtensions.cs.meta | 11 + .../Demos/DemoChat/ChannelSelector.cs | 32 + .../Demos/DemoChat/ChannelSelector.cs.meta | 10 + .../Demos/DemoChat/ChatAppIdCheckerUI.cs | 60 + .../Demos/DemoChat/ChatAppIdCheckerUI.cs.meta | 10 + .../PhotonChat/Demos/DemoChat/ChatGui.cs | 665 + .../PhotonChat/Demos/DemoChat/ChatGui.cs.meta | 10 + .../Demos/DemoChat/DemoChat-Scene.unity | 6540 ++ .../Demos/DemoChat/DemoChat-Scene.unity.meta | 6 + .../PhotonChat/Demos/DemoChat/Editor.meta | 8 + .../Demos/DemoChat/Editor/ChatEditor.cs | 279 + .../Demos/DemoChat/Editor/ChatEditor.cs.meta | 8 + .../PhotonChat/Demos/DemoChat/Files.meta | 8 + .../Demos/DemoChat/Files/Gradient.png | Bin 0 -> 105386 bytes .../Demos/DemoChat/Files/Gradient.png.meta | 88 + .../Demos/DemoChat/Files/Jura-Medium.ttf | Bin 0 -> 345824 bytes .../Demos/DemoChat/Files/Jura-Medium.ttf.meta | 24 + .../DemoChat/Files/OutlinedSquaredBox.png | Bin 0 -> 1259 bytes .../Files/OutlinedSquaredBox.png.meta | 88 + .../DemoChat/Files/PunIcon-White-129.png | Bin 0 -> 15252 bytes .../DemoChat/Files/PunIcon-White-129.png.meta | 88 + .../Demos/DemoChat/Files/eurof35.ttf | Bin 0 -> 155088 bytes .../Demos/DemoChat/Files/eurof35.ttf.meta | 23 + .../Demos/DemoChat/Files/eurof_tt.txt | 21 + .../Demos/DemoChat/Files/eurof_tt.txt.meta | 7 + .../PhotonChat/Demos/DemoChat/FriendItem.cs | 84 + .../Demos/DemoChat/FriendItem.cs.meta | 10 + .../DemoChat/IgnoreUiRaycastWhenInactive.cs | 20 + .../IgnoreUiRaycastWhenInactive.cs.meta | 10 + .../PhotonChat/Demos/DemoChat/NamePickGui.cs | 55 + .../Demos/DemoChat/NamePickGui.cs.meta | 10 + Assets/Photon/PhotonLibs.meta | 7 + Assets/Photon/PhotonLibs/Metro.meta | 5 + .../PhotonLibs/Metro/Photon3Unity3D.dll | Bin 0 -> 174080 bytes .../PhotonLibs/Metro/Photon3Unity3D.dll.meta | 47 + .../PhotonLibs/Metro/Photon3Unity3D.pri | Bin 0 -> 680 bytes .../PhotonLibs/Metro/Photon3Unity3D.pri.meta | 8 + Assets/Photon/PhotonLibs/Photon3Unity3D.dll | Bin 0 -> 226304 bytes .../Photon/PhotonLibs/Photon3Unity3D.dll.meta | 38 + Assets/Photon/PhotonLibs/Photon3Unity3D.xml | 2767 + .../Photon/PhotonLibs/Photon3Unity3D.xml.meta | 9 + Assets/Photon/PhotonLibs/WebSocket.meta | 5 + .../PhotonLibs/WebSocket/SocketWebTcp.cs | 433 + .../PhotonLibs/WebSocket/SocketWebTcp.cs.meta | 8 + .../Photon/PhotonLibs/WebSocket/WebSocket.cs | 252 + .../PhotonLibs/WebSocket/WebSocket.cs.meta | 8 + .../PhotonLibs/WebSocket/WebSocket.jslib | 117 + .../PhotonLibs/WebSocket/WebSocket.jslib.meta | 21 + .../WebSocket/websocket-sharp.README | 5 + .../WebSocket/websocket-sharp.README.meta | 4 + .../PhotonLibs/WebSocket/websocket-sharp.dll | Bin 0 -> 244736 bytes .../WebSocket/websocket-sharp.dll.meta | 137 + Assets/Photon/PhotonLibs/changes-library.txt | 1847 + .../PhotonLibs/changes-library.txt.meta | 8 + Assets/Photon/PhotonLibs/netstandard2.0.meta | 8 + .../netstandard2.0/Photon3Unity3D.deps.json | 47 + .../Photon3Unity3D.deps.json.meta | 7 + .../netstandard2.0/Photon3Unity3D.dll | Bin 0 -> 232960 bytes .../netstandard2.0/Photon3Unity3D.dll.meta | 165 + .../netstandard2.0/Photon3Unity3D.xml | 2767 + .../netstandard2.0/Photon3Unity3D.xml.meta | 7 + .../Photon/PhotonNetworking-Documentation.chm | Bin 0 -> 1456565 bytes .../PhotonNetworking-Documentation.chm.meta | 8 + .../Photon/PhotonNetworking-Documentation.pdf | Bin 0 -> 4039077 bytes .../PhotonNetworking-Documentation.pdf.meta | 8 + Assets/Photon/PhotonRealtime.meta | 9 + Assets/Photon/PhotonRealtime/Code.meta | 9 + .../Photon/PhotonRealtime/Code/AppSettings.cs | 198 + .../PhotonRealtime/Code/AppSettings.cs.meta | 12 + .../PhotonRealtime/Code/ConnectionHandler.cs | 199 + .../Code/ConnectionHandler.cs.meta | 12 + .../PhotonRealtime/Code/CustomTypesUnity.cs | 167 + .../Code/CustomTypesUnity.cs.meta | 11 + .../Photon/PhotonRealtime/Code/Extensions.cs | 269 + .../PhotonRealtime/Code/Extensions.cs.meta | 12 + .../Photon/PhotonRealtime/Code/FriendInfo.cs | 48 + .../PhotonRealtime/Code/FriendInfo.cs.meta | 7 + .../Code/LoadBalancingClient.cs | 4469 + .../Code/LoadBalancingClient.cs.meta | 12 + .../PhotonRealtime/Code/LoadbalancingPeer.cs | 2242 + .../Code/LoadbalancingPeer.cs.meta | 12 + .../Photon/PhotonRealtime/Code/PhotonPing.cs | 481 + .../PhotonRealtime/Code/PhotonPing.cs.meta | 12 + .../PhotonRealtime/Code/PhotonPingClasses.cs | 1 + .../Code/PhotonPingClasses.cs.meta | 12 + .../PhotonRealtime/Code/PhotonRealtime.asmdef | 6 + .../Code/PhotonRealtime.asmdef.meta | 8 + Assets/Photon/PhotonRealtime/Code/Player.cs | 452 + .../Photon/PhotonRealtime/Code/Player.cs.meta | 12 + Assets/Photon/PhotonRealtime/Code/Region.cs | 95 + .../Photon/PhotonRealtime/Code/Region.cs.meta | 12 + .../PhotonRealtime/Code/RegionHandler.cs | 714 + .../PhotonRealtime/Code/RegionHandler.cs.meta | 7 + Assets/Photon/PhotonRealtime/Code/Room.cs | 630 + .../Photon/PhotonRealtime/Code/Room.cs.meta | 12 + Assets/Photon/PhotonRealtime/Code/RoomInfo.cs | 274 + .../PhotonRealtime/Code/RoomInfo.cs.meta | 12 + .../PhotonRealtime/Code/SupportLogger.cs | 434 + .../PhotonRealtime/Code/SupportLogger.cs.meta | 7 + Assets/Photon/PhotonRealtime/Code/Unity.meta | 8 + .../PhotonRealtime/Code/Unity/Editor.meta | 8 + .../Code/Unity/Editor/AccountService.cs | 260 + .../Code/Unity/Editor/AccountService.cs.meta | 12 + .../Code/Unity/Editor/PhotonEditorUtils.cs | 333 + .../Unity/Editor/PhotonEditorUtils.cs.meta | 8 + .../Code/Unity/PhotonAppSettings.cs | 116 + .../Code/Unity/PhotonAppSettings.cs.meta | 11 + Assets/Photon/PhotonRealtime/Code/WebRpc.cs | 187 + .../Photon/PhotonRealtime/Code/WebRpc.cs.meta | 12 + .../PhotonRealtime/Code/changes-realtime.txt | 401 + .../Code/changes-realtime.txt.meta | 8 + Assets/Photon/PhotonRealtime/Demos.meta | 9 + .../Demos/DemoLoadBalancing.meta | 9 + .../ConnectAndJoinRandomLb.cs | 145 + .../ConnectAndJoinRandomLb.cs.meta | 12 + .../DemoLoadBalancing-Scene.unity | 711 + .../DemoLoadBalancing-Scene.unity.meta | 8 + .../DemoLoadBalancing/Jura-Medium-LB.ttf | Bin 0 -> 345824 bytes .../DemoLoadBalancing/Jura-Medium-LB.ttf.meta | 20 + Assets/Photon/PhotonUnityNetworking.meta | 7 + Assets/Photon/PhotonUnityNetworking/Code.meta | 7 + .../PhotonUnityNetworking/Code/CustomTypes.cs | 74 + .../Code/CustomTypes.cs.meta | 12 + .../PhotonUnityNetworking/Code/Editor.meta | 7 + .../Code/Editor/CopyIcon.png | Bin 0 -> 131 bytes .../Code/Editor/CopyIcon.png.meta | 116 + .../Code/Editor/CopyIconPro.png | Bin 0 -> 3340 bytes .../Code/Editor/CopyIconPro.png.meta | 116 + .../Code/Editor/PhotonEditor.cs | 856 + .../Code/Editor/PhotonEditor.cs.meta | 12 + .../Code/Editor/PhotonGUI.cs | 363 + .../Code/Editor/PhotonGUI.cs.meta | 8 + .../PhotonUnityNetworking.Editor.asmdef | 13 + .../PhotonUnityNetworking.Editor.asmdef.meta | 8 + .../Code/Editor/PhotonViewHandler.cs | 191 + .../Code/Editor/PhotonViewHandler.cs.meta | 12 + .../Code/Editor/PhotonViewInspector.cs | 394 + .../Code/Editor/PhotonViewInspector.cs.meta | 12 + .../Code/Editor/PunGradient.png | Bin 0 -> 308 bytes .../Code/Editor/PunGradient.png.meta | 45 + .../Code/Editor/PunSceneSettings.cs | 178 + .../Code/Editor/PunSceneSettings.cs.meta | 7 + .../Code/Editor/PunSceneSettingsFile.asset | 21 + .../Editor/PunSceneSettingsFile.asset.meta | 2 + .../Code/Editor/PunSceneSettingsInspector.cs | 260 + .../Editor/PunSceneSettingsInspector.cs.meta | 11 + .../Code/Editor/ReordableList.meta | 8 + .../Code/Editor/ReordableList/LICENSE.txt | 26 + .../Editor/ReordableList/LICENSE.txt.meta | 7 + .../ReordableList/ReorderableListResources.cs | 237 + .../ReorderableListResources.cs.meta | 8 + .../Code/Editor/ServerSettingsInspector.cs | 322 + .../Editor/ServerSettingsInspector.cs.meta | 7 + .../Code/Editor/Views.meta | 7 + .../Editor/Views/MonoBehaviourPunEditor.cs | 40 + .../Views/MonoBehaviourPunEditor.cs.meta | 11 + .../Editor/Views/PhotonAnimatorViewEditor.cs | 295 + .../Views/PhotonAnimatorViewEditor.cs.meta | 8 + .../Views/PhotonRigidbody2DViewEditor.cs | 50 + .../Views/PhotonRigidbody2DViewEditor.cs.meta | 8 + .../Editor/Views/PhotonRigidbodyViewEditor.cs | 50 + .../Views/PhotonRigidbodyViewEditor.cs.meta | 8 + .../Views/PhotonTransformViewClassicEditor.cs | 412 + .../PhotonTransformViewClassicEditor.cs.meta | 8 + .../Editor/Views/PhotonTransformViewEditor.cs | 72 + .../Views/PhotonTransformViewEditor.cs.meta | 10 + .../Code/Editor/help.png | Bin 0 -> 3379 bytes .../Code/Editor/help.png.meta | 45 + .../PhotonUnityNetworking/Code/Enums.cs | 94 + .../PhotonUnityNetworking/Code/Enums.cs.meta | 12 + .../Code/Interfaces.meta | 8 + .../Code/Interfaces/IPhotonViewCallbacks.cs | 50 + .../Interfaces/IPhotonViewCallbacks.cs.meta | 11 + .../Code/Interfaces/IPunCallbacks.cs | 141 + .../Code/Interfaces/IPunCallbacks.cs.meta | 11 + .../Code/PhotonHandler.cs | 405 + .../Code/PhotonHandler.cs.meta | 12 + .../Code/PhotonNetwork.cs | 3312 + .../Code/PhotonNetwork.cs.meta | 12 + .../Code/PhotonNetworkPart.cs | 2559 + .../Code/PhotonNetworkPart.cs.meta | 8 + .../Code/PhotonStreamQueue.cs | 197 + .../Code/PhotonStreamQueue.cs.meta | 8 + .../Code/PhotonUnityNetworking.asmdef | 10 + .../Code/PhotonUnityNetworking.asmdef.meta | 8 + .../PhotonUnityNetworking/Code/PhotonView.cs | 826 + .../Code/PhotonView.cs.meta | 16 + .../PhotonUnityNetworking/Code/PunClasses.cs | 974 + .../Code/PunClasses.cs.meta | 12 + .../Code/ServerSettings.cs | 100 + .../Code/ServerSettings.cs.meta | 12 + .../PhotonUnityNetworking/Code/Utilities.meta | 8 + .../Utilities/NestedComponentUtilities.cs | 494 + .../NestedComponentUtilities.cs.meta | 11 + .../PhotonUnityNetworking/Code/Views.meta | 5 + .../Code/Views/PhotonAnimatorView.cs | 572 + .../Code/Views/PhotonAnimatorView.cs.meta | 8 + .../Code/Views/PhotonRigidbody2DView.cs | 111 + .../Code/Views/PhotonRigidbody2DView.cs.meta | 8 + .../Code/Views/PhotonRigidbodyView.cs | 112 + .../Code/Views/PhotonRigidbodyView.cs.meta | 8 + .../Code/Views/PhotonTransformView.cs | 194 + .../Code/Views/PhotonTransformView.cs.meta | 10 + .../Code/Views/PhotonTransformViewClassic.cs | 557 + .../Views/PhotonTransformViewClassic.cs.meta | 10 + .../Photon/PhotonUnityNetworking/Demos.meta | 7 + .../Demos/DemoAsteroids.meta | 9 + .../Demos/DemoAsteroids/Materials.meta | 9 + .../DemoAsteroids/Materials/FlyerAsteroid.mat | 153 + .../Materials/FlyerAsteroid.mat.meta | 8 + .../Materials/FlyerPlayership.mat | 149 + .../Materials/FlyerPlayership.mat.meta | 8 + .../Materials/ParticleAfterburner.mat | 40 + .../Materials/ParticleAfterburner.mat.meta | 8 + .../DemoAsteroids/Materials/WhiteSmooth.mat | 174 + .../Materials/WhiteSmooth.mat.meta | 8 + .../DemoAsteroids/Materials/WhiteUnlit.mat | 180 + .../Materials/WhiteUnlit.mat.meta | 8 + .../Demos/DemoAsteroids/Models.meta | 9 + .../Demos/DemoAsteroids/Models/Asteroid01.fbx | Bin 0 -> 23152 bytes .../DemoAsteroids/Models/Asteroid01.fbx.meta | 76 + .../DemoAsteroids/Models/FlyerAsteroidB.fbx | Bin 0 -> 25408 bytes .../Models/FlyerAsteroidB.fbx.meta | 76 + .../Demos/DemoAsteroids/Models/LaserBolt.fbx | Bin 0 -> 18560 bytes .../DemoAsteroids/Models/LaserBolt.fbx.meta | 76 + .../Demos/DemoAsteroids/Models/Materials.meta | 9 + .../Models/Materials/Asteroid.mat | 138 + .../Models/Materials/Asteroid.mat.meta | 8 + .../Models/Materials/FlyerAsteroid1.mat | 138 + .../Models/Materials/FlyerAsteroid1.mat.meta | 8 + .../Models/Materials/SpaceshipGlow.mat | 138 + .../Models/Materials/SpaceshipGlow.mat.meta | 8 + .../Models/Materials/SpaceshipHull.mat | 138 + .../Models/Materials/SpaceshipHull.mat.meta | 8 + .../Demos/DemoAsteroids/Models/Spaceship.fbx | Bin 0 -> 22848 bytes .../DemoAsteroids/Models/Spaceship.fbx.meta | 77 + .../Demos/DemoAsteroids/Prefabs.meta | 9 + .../Demos/DemoAsteroids/Prefabs/Bullet.prefab | 118 + .../DemoAsteroids/Prefabs/Bullet.prefab.meta | 8 + .../Prefabs/PlayerListEntry.prefab | 626 + .../Prefabs/PlayerListEntry.prefab.meta | 8 + .../Prefabs/PlayerOverviewEntry.prefab | 91 + .../Prefabs/PlayerOverviewEntry.prefab.meta | 8 + .../Prefabs/RoomListEntry.prefab | 543 + .../Prefabs/RoomListEntry.prefab.meta | 8 + .../Demos/DemoAsteroids/Resources.meta | 9 + .../Resources/BigAsteroid.prefab | 155 + .../Resources/BigAsteroid.prefab.meta | 8 + .../Resources/SmallAsteroid.prefab | 155 + .../Resources/SmallAsteroid.prefab.meta | 8 + .../DemoAsteroids/Resources/Spaceship.prefab | 3275 + .../Resources/Spaceship.prefab.meta | 8 + .../Demos/DemoAsteroids/Scenes.meta | 9 + .../Scenes/DemoAsteroids-GameScene.unity | 4053 + .../Scenes/DemoAsteroids-GameScene.unity.meta | 8 + .../Scenes/DemoAsteroids-LobbyScene.unity | 5045 ++ .../DemoAsteroids-LobbyScene.unity.meta | 8 + .../Demos/DemoAsteroids/Scripts.meta | 9 + .../DemoAsteroids/Scripts/AsteroidsGame.cs | 35 + .../Scripts/AsteroidsGame.cs.meta | 12 + .../Demos/DemoAsteroids/Scripts/Game.meta | 9 + .../DemoAsteroids/Scripts/Game/Asteroid.cs | 123 + .../Scripts/Game/Asteroid.cs.meta | 12 + .../Scripts/Game/AsteroidsGameManager.cs | 267 + .../Scripts/Game/AsteroidsGameManager.cs.meta | 12 + .../DemoAsteroids/Scripts/Game/Bullet.cs | 31 + .../DemoAsteroids/Scripts/Game/Bullet.cs.meta | 12 + .../Scripts/Game/PlayerOverviewPanel.cs | 71 + .../Scripts/Game/PlayerOverviewPanel.cs.meta | 12 + .../DemoAsteroids/Scripts/Game/Spaceship.cs | 220 + .../Scripts/Game/Spaceship.cs.meta | 12 + .../Demos/DemoAsteroids/Scripts/Lobby.meta | 9 + .../Scripts/Lobby/LobbyMainPanel.cs | 372 + .../Scripts/Lobby/LobbyMainPanel.cs.meta | 12 + .../Scripts/Lobby/LobbyTopPanel.cs | 22 + .../Scripts/Lobby/LobbyTopPanel.cs.meta | 12 + .../Scripts/Lobby/PlayerListEntry.cs | 97 + .../Scripts/Lobby/PlayerListEntry.cs.meta | 12 + .../Scripts/Lobby/RoomListEntry.cs | 35 + .../Scripts/Lobby/RoomListEntry.cs.meta | 12 + .../Demos/DemoAsteroids/Textures.meta | 9 + .../Textures/FlyerAsteroidEmissive.tif | Bin 0 -> 18876 bytes .../Textures/FlyerAsteroidEmissive.tif.meta | 57 + .../Textures/FlyerPlayershipAlbedo.tif | Bin 0 -> 19664 bytes .../Textures/FlyerPlayershipAlbedo.tif.meta | 57 + .../Textures/FlyerPlayershipEmission.tif | Bin 0 -> 22192 bytes .../Textures/FlyerPlayershipEmission.tif.meta | 57 + .../Textures/FlyerPlayershipOcclusion.tif | Bin 0 -> 179804 bytes .../FlyerPlayershipOcclusion.tif.meta | 57 + .../PhotonUnityNetworking/Demos/DemoHub.meta | 7 + .../Demos/DemoHub/DemoHub-Scene.unity | 10194 +++ .../Demos/DemoHub/DemoHub-Scene.unity.meta | 4 + .../Demos/DemoHub/Editor.meta | 7 + .../Editor/PunDemos.DemoHubEditor.asmdef | 11 + .../Editor/PunDemos.DemoHubEditor.asmdef.meta | 7 + .../Demos/DemoHub/Editor/PunStartup.cs | 166 + .../Demos/DemoHub/Editor/PunStartup.cs.meta | 7 + .../Demos/DemoHub/Scripts.meta | 7 + .../Demos/DemoHub/Scripts/DemoHubManager.cs | 311 + .../DemoHub/Scripts/DemoHubManager.cs.meta | 8 + .../Demos/DemoHub/Scripts/ToDemoHubButton.cs | 93 + .../DemoHub/Scripts/ToDemoHubButton.cs.meta | 8 + .../Demos/DemoHub/Sprites.meta | 7 + .../Demos/DemoHub/Sprites/Gradient.png | Bin 0 -> 105386 bytes .../Demos/DemoHub/Sprites/Gradient.png.meta | 88 + .../DemoHub/Sprites/OutlinedSquaredBox.png | Bin 0 -> 1259 bytes .../Sprites/OutlinedSquaredBox.png.meta | 88 + .../DemoHub/Sprites/PunIcon-White-129.png | Bin 0 -> 15252 bytes .../Sprites/PunIcon-White-129.png.meta | 88 + .../Demos/DemoHub/Sprites/toHub.png | Bin 0 -> 1871 bytes .../Demos/DemoHub/Sprites/toHub.png.meta | 88 + .../Demos/DemoHub/toHub.png | Bin 0 -> 1871 bytes .../Demos/DemoHub/toHub.png.meta | 33 + .../Demos/DemoProcedural.meta | 9 + .../Demos/DemoProcedural/Materials.meta | 9 + .../Demos/DemoProcedural/Materials/Black.mat | 138 + .../DemoProcedural/Materials/Black.mat.meta | 8 + .../DemoProcedural/Materials/LightGreen.mat | 138 + .../Materials/LightGreen.mat.meta | 8 + .../Demos/DemoProcedural/Materials/Orange.mat | 138 + .../DemoProcedural/Materials/Orange.mat.meta | 8 + .../Demos/DemoProcedural/Materials/Red.mat | 138 + .../DemoProcedural/Materials/Red.mat.meta | 8 + .../Demos/DemoProcedural/Materials/Yellow.mat | 138 + .../DemoProcedural/Materials/Yellow.mat.meta | 8 + .../DemoProcedural/Procedural-Scene.unity | 4439 + .../Procedural-Scene.unity.meta | 8 + .../Demos/DemoProcedural/Scripts.meta | 9 + .../Demos/DemoProcedural/Scripts/Block.cs | 14 + .../DemoProcedural/Scripts/Block.cs.meta | 12 + .../Demos/DemoProcedural/Scripts/Cluster.cs | 178 + .../DemoProcedural/Scripts/Cluster.cs.meta | 12 + .../Scripts/IngameControlPanel.cs | 269 + .../Scripts/IngameControlPanel.cs.meta | 12 + .../Demos/DemoProcedural/Scripts/Noise.cs | 393 + .../DemoProcedural/Scripts/Noise.cs.meta | 12 + .../Scripts/ProceduralController.cs | 83 + .../Scripts/ProceduralController.cs.meta | 12 + .../DemoProcedural/Scripts/WorldGenerator.cs | 289 + .../Scripts/WorldGenerator.cs.meta | 12 + .../Demos/DemoSlotRacer.meta | 9 + .../Demos/DemoSlotRacer/Kenney Assets.meta | 9 + .../Kenney Assets/Copyrights.txt | 1 + .../Kenney Assets/Copyrights.txt.meta | 8 + .../Kenney Assets/Racing Kit.meta | 9 + .../Kenney Assets/Racing Kit/Models.meta | 9 + .../Racing Kit/Models/Materials.meta | 9 + .../Models/Materials/_defaultMat.mat | 34 + .../Models/Materials/_defaultMat.mat.meta | 9 + .../Racing Kit/Models/Materials/bark.mat | 153 + .../Racing Kit/Models/Materials/bark.mat.meta | 9 + .../Racing Kit/Models/Materials/grass.mat | 153 + .../Models/Materials/grass.mat.meta | 9 + .../Racing Kit/Models/Materials/grey.mat | 153 + .../Racing Kit/Models/Materials/grey.mat.meta | 9 + .../Racing Kit/Models/Materials/red.mat | 153 + .../Racing Kit/Models/Materials/red.mat.meta | 9 + .../Racing Kit/Models/Materials/road.mat | 153 + .../Racing Kit/Models/Materials/road.mat.meta | 9 + .../Racing Kit/Models/Materials/tankco.mat | 153 + .../Models/Materials/tankco.mat.meta | 9 + .../Racing Kit/Models/Materials/wall.mat | 153 + .../Racing Kit/Models/Materials/wall.mat.meta | 9 + .../Racing Kit/Models/Materials/white.mat | 34 + .../Models/Materials/white.mat.meta | 9 + .../Racing Kit/Models/Textures.meta | 9 + .../Racing Kit/Models/Textures/tankco.png | Bin 0 -> 5516 bytes .../Models/Textures/tankco.png.meta | 57 + .../Racing Kit/Models/billboardLower.fbx | 410 + .../Racing Kit/Models/billboardLower.fbx.meta | 82 + .../Racing Kit/Models/flagGreen.fbx | 359 + .../Racing Kit/Models/flagGreen.fbx.meta | 82 + .../Kenney Assets/Racing Kit/Models/rail.fbx | 329 + .../Racing Kit/Models/rail.fbx.meta | 82 + .../Racing Kit/Models/roadCornerSmall.fbx | 359 + .../Models/roadCornerSmall.fbx.meta | 82 + .../Models/roadCornerSmallBorder.fbx | 344 + .../Models/roadCornerSmallBorder.fbx.meta | 82 + .../Models/roadRampLongCurvedWall.fbx | 359 + .../Models/roadRampLongCurvedWall.fbx.meta | 82 + .../Racing Kit/Models/roadStart.fbx | 359 + .../Racing Kit/Models/roadStart.fbx.meta | 82 + .../Racing Kit/Models/roadStartPositions.fbx | 359 + .../Models/roadStartPositions.fbx.meta | 82 + .../Racing Kit/Models/roadStraight.fbx | 359 + .../Racing Kit/Models/roadStraight.fbx.meta | 82 + .../Models/roadStraightBridgeStart.fbx | 359 + .../Models/roadStraightBridgeStart.fbx.meta | 82 + .../Kenney Assets/Stylized city.meta | 9 + .../Stylized city/Materials.meta | 9 + .../Stylized city/Materials/11 - Default.mat | 138 + .../Materials/11 - Default.mat.meta | 8 + .../Stylized city/Materials/13 - Default.mat | 138 + .../Materials/13 - Default.mat.meta | 8 + .../Materials/13 - Default22662.mat | 138 + .../Materials/13 - Default22662.mat.meta | 8 + .../Materials/13 - Default54.mat | 138 + .../Materials/13 - Default54.mat.meta | 8 + .../Stylized city/Materials/20 - Default.mat | 138 + .../Materials/20 - Default.mat.meta | 8 + .../Stylized city/Materials/22 - Default.mat | 138 + .../Materials/22 - Default.mat.meta | 8 + .../Stylized city/Materials/24 - Default.mat | 138 + .../Materials/24 - Default.mat.meta | 8 + .../Stylized city/Materials/No Name.mat | 138 + .../Stylized city/Materials/No Name.mat.meta | 8 + .../Stylized city/Materials/car.mat | 138 + .../Stylized city/Materials/car.mat.meta | 8 + .../Stylized city/Materials/ground_green.mat | 138 + .../Materials/ground_green.mat.meta | 8 + .../Materials/ground_green232.mat | 138 + .../Materials/ground_green232.mat.meta | 8 + .../Stylized city/Materials/insides_2.mat | 138 + .../Materials/insides_2.mat.meta | 8 + .../Stylized city/Materials/insides_3.mat | 138 + .../Materials/insides_3.mat.meta | 8 + .../Materials/leaves_palm_243.mat | 138 + .../Materials/leaves_palm_243.mat.meta | 8 + .../Stylized city/Materials/roof.mat | 138 + .../Stylized city/Materials/roof.mat.meta | 8 + .../Stylized city/Materials/tank.mat | 138 + .../Stylized city/Materials/tank.mat.meta | 8 + .../Stylized city/Materials/windows_2.mat | 138 + .../Materials/windows_2.mat.meta | 8 + .../Kenney Assets/Stylized city/Models.meta | 9 + .../Stylized city/Models/bush1.FBX | 587 + .../Stylized city/Models/bush1.FBX.meta | 81 + .../Stylized city/Models/car_1.FBX | 3579 + .../Stylized city/Models/car_1.FBX.meta | 402 + .../Stylized city/Models/car_3.FBX | 2243 + .../Stylized city/Models/car_3.FBX.meta | 350 + .../Stylized city/Models/car_4.FBX | 2112 + .../Stylized city/Models/car_4.FBX.meta | 339 + .../Stylized city/Models/hamvee.FBX | 1533 + .../Stylized city/Models/hamvee.FBX.meta | 244 + .../Stylized city/Models/tree_1.FBX | 802 + .../Stylized city/Models/tree_1.FBX.meta | 91 + .../Stylized city/Models/tree_6.FBX | 770 + .../Stylized city/Models/tree_6.FBX.meta | 91 + .../Demos/DemoSlotRacer/Prefabs.meta | 9 + .../DemoSlotRacer/Prefabs/SlotCar_A.prefab | 518 + .../Prefabs/SlotCar_A.prefab.meta | 8 + .../DemoSlotRacer/Prefabs/SlotCar_B.prefab | 1047 + .../Prefabs/SlotCar_B.prefab.meta | 8 + .../DemoSlotRacer/Prefabs/SlotCar_C.prefab | 983 + .../Prefabs/SlotCar_C.prefab.meta | 8 + .../DemoSlotRacer/Prefabs/SlotCar_D.prefab | 1379 + .../Prefabs/SlotCar_D.prefab.meta | 8 + .../Demos/DemoSlotRacer/Resources.meta | 9 + .../Resources/Player Controller.prefab | 100 + .../Resources/Player Controller.prefab.meta | 8 + .../Demos/DemoSlotRacer/Scripts.meta | 9 + .../DemoSlotRacer/Scripts/BezierCurve.meta | 9 + .../Scripts/BezierCurve/Bezier.cs | 56 + .../Scripts/BezierCurve/Bezier.cs.meta | 10 + .../BezierCurve/BezierControlPointMode.cs | 19 + .../BezierControlPointMode.cs.meta | 10 + .../Scripts/BezierCurve/BezierCurve.cs | 45 + .../Scripts/BezierCurve/BezierCurve.cs.meta | 10 + .../Scripts/BezierCurve/BezierSpline.cs | 332 + .../Scripts/BezierCurve/BezierSpline.cs.meta | 10 + .../Scripts/BezierCurve/Editor.meta | 9 + .../Editor/BezierCurveInspector.cs | 73 + .../Editor/BezierCurveInspector.cs.meta | 10 + .../Editor/BezierSplineInspector.cs | 154 + .../Editor/BezierSplineInspector.cs.meta | 10 + .../BezierCurve/Editor/LineInspector.cs | 47 + .../BezierCurve/Editor/LineInspector.cs.meta | 10 + .../Editor/PunDemos.DemoSlotcarEditor.asmdef | 10 + .../PunDemos.DemoSlotcarEditor.asmdef.meta | 7 + .../DemoSlotRacer/Scripts/BezierCurve/Line.cs | 19 + .../Scripts/BezierCurve/Line.cs.meta | 10 + .../Scripts/BezierCurve/SplinePosition.cs | 57 + .../BezierCurve/SplinePosition.cs.meta | 12 + .../Scripts/BezierCurve/SplineWalker.cs | 64 + .../Scripts/BezierCurve/SplineWalker.cs.meta | 10 + .../DemoSlotRacer/Scripts/PlayerControl.cs | 232 + .../Scripts/PlayerControl.cs.meta | 12 + .../Demos/DemoSlotRacer/Scripts/SlotLanes.cs | 38 + .../DemoSlotRacer/Scripts/SlotLanes.cs.meta | 12 + .../Scripts/SlotRacerSplashScreen.cs | 96 + .../Scripts/SlotRacerSplashScreen.cs.meta | 12 + .../Demos/DemoSlotRacer/SlotCar-Scene.meta | 9 + .../Demos/DemoSlotRacer/SlotCar-Scene.unity | 18974 ++++ .../DemoSlotRacer/SlotCar-Scene.unity.meta | 8 + .../SlotCar-Scene/LightingData.asset | Bin 0 -> 13200 bytes .../SlotCar-Scene/LightingData.asset.meta | 8 + .../SlotCar-Scene/ReflectionProbe-0.exr | Bin 0 -> 133553 bytes .../SlotCar-Scene/ReflectionProbe-0.exr.meta | 77 + .../Demos/PhotonUnityNetworking.Demos.asmdef | 10 + .../PhotonUnityNetworking.Demos.asmdef.meta | 7 + .../Demos/PunBasics-Tutorial.meta | 7 + .../Demos/PunBasics-Tutorial/Animator.meta | 7 + .../Animator/Kyle Robot.controller | 715 + .../Animator/Kyle Robot.controller.meta | 4 + .../Demos/PunBasics-Tutorial/Materials.meta | 7 + .../PunBasics-Tutorial/Materials/Red Beam.mat | 41 + .../Materials/Red Beam.mat.meta | 4 + .../Materials/UnitTextureGreen12x.mat | 30 + .../Materials/UnitTextureGreen12x.mat.meta | 4 + .../Materials/UnitTextureRed12x.mat | 30 + .../Materials/UnitTextureRed12x.mat.meta | 4 + .../Materials/UnitTextureYellow12x.mat | 30 + .../Materials/UnitTextureYellow12x.mat.meta | 4 + .../Demos/PunBasics-Tutorial/Prefabs.meta | 7 + .../Prefabs/Demo Intro UI.prefab | 291 + .../Prefabs/Demo Intro UI.prefab.meta | 4 + .../Prefabs/Game Manager.prefab | 54 + .../Prefabs/Game Manager.prefab.meta | 4 + .../Prefabs/Player UI.prefab | 487 + .../Prefabs/Player UI.prefab.meta | 4 + .../Prefabs/Quit Room Button.prefab | 209 + .../Prefabs/Quit Room Button.prefab.meta | 4 + .../Demos/PunBasics-Tutorial/Resources.meta | 7 + .../Resources/My Robot Kyle -done-.prefab | 1942 + .../My Robot Kyle -done-.prefab.meta | 4 + .../Demos/PunBasics-Tutorial/Scenes.meta | 7 + .../Scenes/PunBasics-Launcher.unity | 4644 + .../Scenes/PunBasics-Launcher.unity.meta | 4 + .../Scenes/PunBasics-Room for 1.unity | 1187 + .../Scenes/PunBasics-Room for 1.unity.meta | 4 + .../Scenes/PunBasics-Room for 2.unity | 1187 + .../Scenes/PunBasics-Room for 2.unity.meta | 4 + .../Scenes/PunBasics-Room for 3.unity | 1187 + .../Scenes/PunBasics-Room for 3.unity.meta | 4 + .../Scenes/PunBasics-Room for 4.unity | 1187 + .../Scenes/PunBasics-Room for 4.unity.meta | 4 + .../Demos/PunBasics-Tutorial/Scripts.meta | 7 + .../PunBasics-Tutorial/Scripts/CameraWork.cs | 130 + .../Scripts/CameraWork.cs.meta | 11 + .../PunBasics-Tutorial/Scripts/GameManager.cs | 174 + .../Scripts/GameManager.cs.meta | 8 + .../PunBasics-Tutorial/Scripts/Launcher.cs | 226 + .../Scripts/Launcher.cs.meta | 8 + .../PunBasics-Tutorial/Scripts/LoaderAnime.cs | 101 + .../Scripts/LoaderAnime.cs.meta | 8 + .../Scripts/PlayerAnimatorManager.cs | 81 + .../Scripts/PlayerAnimatorManager.cs.meta | 8 + .../Scripts/PlayerManager.cs | 295 + .../Scripts/PlayerManager.cs.meta | 8 + .../Scripts/PlayerNameInputField.cs | 74 + .../Scripts/PlayerNameInputField.cs.meta | 8 + .../PunBasics-Tutorial/Scripts/PlayerUI.cs | 147 + .../Scripts/PlayerUI.cs.meta | 8 + .../Demos/PunCockpit.meta | 9 + .../Demos/PunCockpit/Forms.meta | 9 + .../PunCockpit/Forms/ConnectToRegionUIForm.cs | 57 + .../Forms/ConnectToRegionUIForm.cs.meta | 12 + .../PunCockpit/Forms/CreateRoomUiForm.cs | 71 + .../PunCockpit/Forms/CreateRoomUiForm.cs.meta | 12 + .../Demos/PunCockpit/Forms/LoadLevelUIForm.cs | 47 + .../PunCockpit/Forms/LoadLevelUIForm.cs.meta | 12 + .../Forms/SetRoomCustomPropertyUIForm.cs | 47 + .../Forms/SetRoomCustomPropertyUIForm.cs.meta | 12 + .../Demos/PunCockpit/Forms/UserIdUiForm.cs | 54 + .../PunCockpit/Forms/UserIdUiForm.cs.meta | 12 + .../Demos/PunCockpit/Prefabs.meta | 9 + .../PunCockpit/Prefabs/Help Button.prefab | 252 + .../Prefabs/Help Button.prefab.meta | 8 + .../PunCockpit/Prefabs/Tab Toggle.prefab | 509 + .../PunCockpit/Prefabs/Tab Toggle.prefab.meta | 8 + .../Demos/PunCockpit/PunCockpit-Scene.unity | 72870 ++++++++++++++++ .../PunCockpit/PunCockpit-Scene.unity.meta | 8 + .../Demos/PunCockpit/PunCockpit.cs | 807 + .../Demos/PunCockpit/PunCockpit.cs.meta | 12 + .../Demos/PunCockpit/Scripts.meta | 9 + .../PunCockpit/Scripts/Autonomous UI.meta | 9 + .../Autonomous UI/AutoSyncSceneToggle.cs | 61 + .../Autonomous UI/AutoSyncSceneToggle.cs.meta | 12 + .../Autonomous UI/BackgroundTimeOutField.cs | 68 + .../BackgroundTimeOutField.cs.meta | 12 + .../Scripts/Autonomous UI/CrcCheckToggle.cs | 61 + .../Autonomous UI/CrcCheckToggle.cs.meta | 12 + .../Scripts/Autonomous UI/CurrentRoom.meta | 9 + .../CurrentRoom/CurrentRoomIsOpenToggle.cs | 66 + .../CurrentRoomIsOpenToggle.cs.meta | 12 + .../CurrentRoom/CurrentRoomIsVisibleToggle.cs | 65 + .../CurrentRoomIsVisibleToggle.cs.meta | 12 + .../Scripts/Autonomous UI/DocLinkButton.cs | 33 + .../Autonomous UI/DocLinkButton.cs.meta | 12 + .../Scripts/Autonomous UI/GameVersionField.cs | 68 + .../Autonomous UI/GameVersionField.cs.meta | 12 + .../Scripts/Autonomous UI/Generic.meta | 9 + .../Autonomous UI/Generic/BoolInputField.cs | 54 + .../Generic/BoolInputField.cs.meta | 12 + .../Autonomous UI/Generic/IntInputField.cs | 67 + .../Generic/IntInputField.cs.meta | 12 + .../Autonomous UI/Generic/StringInputField.cs | 65 + .../Generic/StringInputField.cs.meta | 12 + .../Autonomous UI/Generic/ToggleExpand.cs | 45 + .../Generic/ToggleExpand.cs.meta | 12 + .../Autonomous UI/LayoutElementMatchSize.cs | 40 + .../LayoutElementMatchSize.cs.meta | 12 + .../Scripts/Autonomous UI/NickNameField.cs | 68 + .../Autonomous UI/NickNameField.cs.meta | 12 + .../Scripts/Autonomous UI/OnlineDocButton.cs | 27 + .../Autonomous UI/OnlineDocButton.cs.meta | 12 + .../Scripts/Autonomous UI/SendRateField.cs | 70 + .../Autonomous UI/SendRateField.cs.meta | 12 + .../Autonomous UI/SendRateOnSerializeField.cs | 69 + .../SendRateOnSerializeField.cs.meta | 12 + .../Demos/PunCockpit/Scripts/Controllers.meta | 9 + .../Controllers/PlayerDetailsController.cs | 239 + .../PlayerDetailsController.cs.meta | 12 + .../Scripts/InfosPanelPlaceholder.cs | 24 + .../Scripts/InfosPanelPlaceholder.cs.meta | 12 + .../Demos/PunCockpit/Scripts/Lists.meta | 9 + .../Scripts/Lists/FriendListCell.cs | 63 + .../Scripts/Lists/FriendListCell.cs.meta | 12 + .../Scripts/Lists/FriendListView.cs | 162 + .../Scripts/Lists/FriendListView.cs.meta | 12 + .../Scripts/Lists/PlayerListCell.cs | 134 + .../Scripts/Lists/PlayerListCell.cs.meta | 12 + .../Scripts/Lists/PlayerListView.cs | 184 + .../Scripts/Lists/PlayerListView.cs.meta | 12 + .../PunCockpit/Scripts/Lists/PropertyCell.cs | 101 + .../Scripts/Lists/PropertyCell.cs.meta | 12 + .../Scripts/Lists/RegionListCell.cs | 81 + .../Scripts/Lists/RegionListCell.cs.meta | 12 + .../Scripts/Lists/RegionListView.cs | 64 + .../Scripts/Lists/RegionListView.cs.meta | 12 + .../PunCockpit/Scripts/Lists/RoomListCell.cs | 102 + .../Scripts/Lists/RoomListCell.cs.meta | 12 + .../PunCockpit/Scripts/Lists/RoomListView.cs | 147 + .../Scripts/Lists/RoomListView.cs.meta | 12 + .../PunCockpit/Scripts/PropertyFields.meta | 9 + .../Scripts/PropertyFields/UserIdField.cs | 71 + .../PropertyFields/UserIdField.cs.meta | 12 + .../Scripts/ReadOnlyProperties.meta | 9 + .../ReadOnlyProperties/AppVersionProperty.cs | 32 + .../AppVersionProperty.cs.meta | 12 + .../BestRegionInPrefsProperty.cs | 40 + .../BestRegionInPrefsProperty.cs.meta | 12 + .../ReadOnlyProperties/CloudRegionProperty.cs | 38 + .../CloudRegionProperty.cs.meta | 12 + .../CountOfPlayersInRoomProperty.cs | 44 + .../CountOfPlayersInRoomProperty.cs.meta | 12 + .../CountOfPlayersOnMasterProperty.cs | 44 + .../CountOfPlayersOnMasterProperty.cs.meta | 12 + .../CountOfPlayersProperty.cs | 44 + .../CountOfPlayersProperty.cs.meta | 12 + .../CountOfRoomsProperty.cs | 43 + .../CountOfRoomsProperty.cs.meta | 12 + .../CurrentRoomAutoCleanupProperty.cs | 44 + .../CurrentRoomAutoCleanupProperty.cs.meta | 12 + .../CurrentRoomEmptyRoomTtlProperty.cs | 43 + .../CurrentRoomEmptyRoomTtlProperty.cs.meta | 12 + .../CurrentRoomExpectedUsersProperty.cs | 58 + .../CurrentRoomExpectedUsersProperty.cs.meta | 12 + .../CurrentRoomIsOfflineProperty.cs | 44 + .../CurrentRoomIsOfflineProperty.cs.meta | 12 + .../CurrentRoomIsOpenProperty.cs | 42 + .../CurrentRoomIsOpenProperty.cs.meta | 12 + .../CurrentRoomIsVisibleProperty.cs | 44 + .../CurrentRoomIsVisibleProperty.cs.meta | 12 + .../CurrentRoomMasterClientIdProperty.cs | 42 + .../CurrentRoomMasterClientIdProperty.cs.meta | 12 + .../CurrentRoomMaxPlayersProperty.cs | 42 + .../CurrentRoomMaxPlayersProperty.cs.meta | 12 + .../CurrentRoomNameProperty.cs | 43 + .../CurrentRoomNameProperty.cs.meta | 12 + .../CurrentRoomPlayerCountProperty.cs | 42 + .../CurrentRoomPlayerCountProperty.cs.meta | 12 + .../CurrentRoomPlayerTtlProperty.cs | 43 + .../CurrentRoomPlayerTtlProperty.cs.meta | 12 + ...rentRoomPropertiesListedInLobbyProperty.cs | 47 + ...oomPropertiesListedInLobbyProperty.cs.meta | 12 + .../ReadOnlyProperties/GameVersionProperty.cs | 30 + .../GameVersionProperty.cs.meta | 12 + .../IsConnectedAndReadyProperty.cs | 33 + .../IsConnectedAndReadyProperty.cs.meta | 12 + .../ReadOnlyProperties/IsConnectedProperty.cs | 32 + .../IsConnectedProperty.cs.meta | 12 + .../ReadOnlyProperties/OfflineModeProperty.cs | 32 + .../OfflineModeProperty.cs.meta | 12 + .../ReadOnlyProperties/PingProperty.cs | 42 + .../ReadOnlyProperties/PingProperty.cs.meta | 12 + .../PropertyListenerBase.cs | 43 + .../PropertyListenerBase.cs.meta | 12 + .../ServerAddressProperty.cs | 42 + .../ServerAddressProperty.cs.meta | 12 + .../ReadOnlyProperties/ServerProperty.cs | 35 + .../ReadOnlyProperties/ServerProperty.cs.meta | 12 + .../Demos/PunCockpit/Scripts/ScoreHelper.cs | 41 + .../PunCockpit/Scripts/ScoreHelper.cs.meta | 12 + .../Demos/PunCockpit/Scripts/ThirdParty.meta | 9 + .../Scripts/ThirdParty/PunCockpitEmbed.cs | 102 + .../ThirdParty/PunCockpitEmbed.cs.meta | 12 + .../Demos/Shared Assets.meta | 7 + .../Demos/Shared Assets/Animations.meta | 7 + .../Animations/HumanoidCrouch.fbx | Bin 0 -> 5422240 bytes .../Animations/HumanoidCrouch.fbx.meta | 1147 + .../Shared Assets/Animations/HumanoidIdle.fbx | Bin 0 -> 1411008 bytes .../Animations/HumanoidIdle.fbx.meta | 1379 + .../Animations/HumanoidIdleJumpUp.fbx | Bin 0 -> 467824 bytes .../Animations/HumanoidIdleJumpUp.fbx.meta | 2578 + .../Animations/HumanoidJumpAndFall.fbx | Bin 0 -> 957744 bytes .../Animations/HumanoidJumpAndFall.fbx.meta | 1838 + .../Animations/HumanoidMidAir.fbx | Bin 0 -> 654976 bytes .../Animations/HumanoidMidAir.fbx.meta | 1646 + .../Shared Assets/Animations/HumanoidRun.fbx | Bin 0 -> 972704 bytes .../Animations/HumanoidRun.fbx.meta | 1534 + .../Animations/HumanoidRunTurn.fbx | Bin 0 -> 657424 bytes .../Animations/HumanoidRunTurn.fbx.meta | 1469 + .../Animations/HumanoidRunTurnSharp.fbx | Bin 0 -> 534944 bytes .../Animations/HumanoidRunTurnSharp.fbx.meta | 1404 + .../Animations/HumanoidStandTurn.fbx | Bin 0 -> 1130880 bytes .../Animations/HumanoidStandTurn.fbx.meta | 1610 + .../Shared Assets/Animations/HumanoidWalk.fbx | Bin 0 -> 732176 bytes .../Animations/HumanoidWalk.fbx.meta | 1382 + .../Animations/HumanoidWalkTurn.fbx | Bin 0 -> 657216 bytes .../Animations/HumanoidWalkTurn.fbx.meta | 1400 + .../Animations/HumanoidWalkTurnSharp.fbx | Bin 0 -> 630256 bytes .../Animations/HumanoidWalkTurnSharp.fbx.meta | 1400 + .../Shared Assets/Animations/Materials.meta | 7 + .../Animations/Materials/EyesMaterial.mat | 30 + .../Materials/EyesMaterial.mat.meta | 4 + .../Animations/Materials/SkinMaterial.mat | 30 + .../Materials/SkinMaterial.mat.meta | 4 + .../Animations/Materials/SuitMaterial.mat | 30 + .../Materials/SuitMaterial.mat.meta | 4 + .../Animations/Materials/TeethMaterial.mat | 30 + .../Materials/TeethMaterial.mat.meta | 4 + .../Animations/Materials/TongueMaterial.mat | 30 + .../Materials/TongueMaterial.mat.meta | 4 + .../Demos/Shared Assets/Animator.meta | 8 + .../ThirdPersonAnimatorController.controller | 806 + ...rdPersonAnimatorController.controller.meta | 5 + .../Demos/Shared Assets/Materials.meta | 7 + .../Shared Assets/Materials/Gradient.mat | 30 + .../Shared Assets/Materials/Gradient.mat.meta | 4 + .../Shared Assets/Materials/PlayerDiamond.mat | 41 + .../Materials/PlayerDiamond.mat.meta | 4 + .../Shared Assets/Materials/Robot_Color.mat | 37 + .../Materials/Robot_Color.mat.meta | 4 + .../Materials/UnitCircleMaterial.mat | 30 + .../Materials/UnitCircleMaterial.mat.meta | 4 + .../Materials/UnitCircleTexture.mat | 30 + .../Materials/UnitCircleTexture.mat.meta | 4 + .../Materials/UnitTextureBlue.mat | 30 + .../Materials/UnitTextureBlue.mat.meta | 4 + .../Materials/UnitTextureBlue12x.mat | 30 + .../Materials/UnitTextureBlue12x.mat.meta | 4 + .../Materials/UnitTextureRed.mat | 30 + .../Materials/UnitTextureRed.mat.meta | 4 + .../Demos/Shared Assets/Models.meta | 7 + .../Demos/Shared Assets/Models/Pointer.fbx | Bin 0 -> 11068 bytes .../Shared Assets/Models/Pointer.fbx.meta | 64 + .../Demos/Shared Assets/Models/Robot Kyle.fbx | Bin 0 -> 330704 bytes .../Shared Assets/Models/Robot Kyle.fbx.meta | 803 + .../Demos/Shared Assets/Prefabs.meta | 7 + .../Prefabs/PointerPrefab.prefab | 76 + .../Prefabs/PointerPrefab.prefab.meta | 4 + .../Demos/Shared Assets/Prefabs/UI.meta | 7 + .../Prefabs/UI/Button Regular.prefab | 250 + .../Prefabs/UI/Button Regular.prefab.meta | 4 + .../Prefabs/UI/Toggle Regular.prefab | 322 + .../Prefabs/UI/Toggle Regular.prefab.meta | 4 + .../Shared Assets/Prefabs/UI/Tooltip.prefab | 115 + .../Prefabs/UI/Tooltip.prefab.meta | 8 + .../Demos/Shared Assets/Scripts.meta | 7 + .../Demos/Shared Assets/Scripts/DocLinks.cs | 158 + .../Shared Assets/Scripts/DocLinks.cs.meta | 12 + .../Scripts/ThirdPersonCharacter.cs | 225 + .../Scripts/ThirdPersonCharacter.cs.meta | 11 + .../Scripts/ThirdPersonUserControl.cs | 74 + .../Scripts/ThirdPersonUserControl.cs.meta | 11 + .../Demos/Shared Assets/Skin.meta | 7 + .../Demos/Shared Assets/Skin/3dText.shader | 18 + .../Shared Assets/Skin/3dText.shader.meta | 2 + .../Demos/Shared Assets/Skin/BoxBright.png | Bin 0 -> 956 bytes .../Shared Assets/Skin/BoxBright.png.meta | 45 + .../Demos/Shared Assets/Skin/BoxOrange.png | Bin 0 -> 956 bytes .../Shared Assets/Skin/BoxOrange.png.meta | 45 + .../Demos/Shared Assets/Skin/BoxOrangeRed.png | Bin 0 -> 956 bytes .../Shared Assets/Skin/BoxOrangeRed.png.meta | 45 + .../Demos/Shared Assets/Skin/BoxText.png | Bin 0 -> 973 bytes .../Demos/Shared Assets/Skin/BoxText.png.meta | 45 + .../Demos/Shared Assets/Skin/BoxTextHover.png | Bin 0 -> 973 bytes .../Shared Assets/Skin/BoxTextHover.png.meta | 45 + .../Shared Assets/Skin/DropDown Arrow.png | Bin 0 -> 408 bytes .../Skin/DropDown Arrow.png.meta | 88 + .../Shared Assets/Skin/DropDown CheckMark.png | Bin 0 -> 677 bytes .../Skin/DropDown CheckMark.png.meta | 88 + .../Shared Assets/Skin/Jura-Flat-Material.mat | 30 + .../Skin/Jura-Flat-Material.mat.meta | 4 + .../Demos/Shared Assets/Skin/Jura-Medium.ttf | Bin 0 -> 345824 bytes .../Shared Assets/Skin/Jura-Medium.ttf.meta | 17 + .../Shared Assets/Skin/Orbitron Black.ttf | Bin 0 -> 47256 bytes .../Skin/Orbitron Black.ttf.meta | 14 + .../Demos/Shared Assets/Skin/RoundedBox.png | Bin 0 -> 1082 bytes .../Shared Assets/Skin/RoundedBox.png.meta | 45 + .../Demos/Shared Assets/Skin/Toggle.png | Bin 0 -> 996 bytes .../Demos/Shared Assets/Skin/Toggle.png.meta | 45 + .../Demos/Shared Assets/Skin/ToggleHover.png | Bin 0 -> 996 bytes .../Shared Assets/Skin/ToggleHover.png.meta | 45 + .../Demos/Shared Assets/Skin/ToggleOn.png | Bin 0 -> 1009 bytes .../Shared Assets/Skin/ToggleOn.png.meta | 45 + .../Shared Assets/Skin/ToggleOnHover.png | Bin 0 -> 1009 bytes .../Shared Assets/Skin/ToggleOnHover.png.meta | 45 + .../Demos/Shared Assets/Skin/eurof35.ttf | Bin 0 -> 155088 bytes .../Demos/Shared Assets/Skin/eurof35.ttf.meta | 13 + .../Demos/Shared Assets/Skin/eurof_tt.txt | 21 + .../Shared Assets/Skin/eurof_tt.txt.meta | 2 + .../Demos/Shared Assets/Textures.meta | 7 + .../Demos/Shared Assets/Textures/Gradient.png | Bin 0 -> 105386 bytes .../Shared Assets/Textures/Gradient.png.meta | 45 + .../Shared Assets/Textures/Robot_Color.png | Bin 0 -> 3139373 bytes .../Textures/Robot_Color.png.meta | 45 + .../Shared Assets/Textures/Robot_Normal.png | Bin 0 -> 3965125 bytes .../Textures/Robot_Normal.png.meta | 45 + .../Textures/UnitCircleTexture.png | Bin 0 -> 17729 bytes .../Textures/UnitCircleTexture.png.meta | 45 + .../Shared Assets/Textures/UnitTexture.png | Bin 0 -> 3304 bytes .../Textures/UnitTexture.png.meta | 45 + .../Textures/UnitTextureBlue.png | Bin 0 -> 17886 bytes .../Textures/UnitTextureBlue.png.meta | 45 + .../Shared Assets/Textures/UnitTextureRed.png | Bin 0 -> 17572 bytes .../Textures/UnitTextureRed.png.meta | 45 + .../Demos/WebRpcImplementationExample.cs | 111 + .../Demos/WebRpcImplementationExample.cs.meta | 11 + .../Photon/PhotonUnityNetworking/Icons.meta | 9 + .../Icons/PunIcon-128.png | Bin 0 -> 35046 bytes .../Icons/PunIcon-128.png.meta | 88 + .../Icons/PunIconApp128.png | Bin 0 -> 6645 bytes .../Icons/PunIconApp128.png.meta | 88 + .../Icons/PunIconApp32.png | Bin 0 -> 1691 bytes .../Icons/PunIconApp32.png.meta | 88 + .../Icons/PunIconApp48.png | Bin 0 -> 2464 bytes .../Icons/PunIconApp48.png.meta | 88 + .../Icons/PunIconApp512.png | Bin 0 -> 41877 bytes .../Icons/PunIconApp512.png.meta | 88 + .../PhotonUnityNetworking/Resources.meta | 8 + .../Resources/PhotonServerSettings.asset | 39 + .../Resources/PhotonServerSettings.asset.meta | 8 + .../PhotonUnityNetworking/UtilityScripts.meta | 7 + .../UtilityScripts/Culling.meta | 9 + .../UtilityScripts/Culling/CullArea.cs | 501 + .../UtilityScripts/Culling/CullArea.cs.meta | 8 + .../UtilityScripts/Culling/CullingHandler.cs | 254 + .../Culling/CullingHandler.cs.meta | 8 + .../UtilityScripts/Culling/Editor.meta | 9 + .../Culling/Editor/CullAreaEditor.cs | 265 + .../Culling/Editor/CullAreaEditor.cs.meta | 8 + ...Networking.Utilities.Culling.Editor.asmdef | 12 + ...rking.Utilities.Culling.Editor.asmdef.meta | 8 + .../UtilityScripts/Debugging.meta | 9 + .../Debugging/PhotonLagSimulationGui.cs | 109 + .../Debugging/PhotonLagSimulationGui.cs.meta | 12 + .../Debugging/PhotonStatsGui.cs | 170 + .../Debugging/PhotonStatsGui.cs.meta | 12 + .../Debugging/PointedAtGameObjectInfo.cs | 84 + .../Debugging/PointedAtGameObjectInfo.cs.meta | 7 + .../UtilityScripts/Debugging/StatesGui.cs | 212 + .../Debugging/StatesGui.cs.meta | 12 + .../UtilityScripts/PhotonPlayer.meta | 7 + .../UtilityScripts/PhotonPlayer/Editor.meta | 7 + .../Editor/PhotonTeamsManagerInspector.cs | 246 + .../PhotonTeamsManagerInspector.cs.meta | 11 + ...rking.Utilities.PhotonPlayer.Editor.asmdef | 15 + ....Utilities.PhotonPlayer.Editor.asmdef.meta | 8 + .../Editor/PlayerNumberingInspector.cs | 67 + .../Editor/PlayerNumberingInspector.cs.meta | 8 + .../PhotonPlayer/Editor/PunTeamsInspector.cs | 64 + .../Editor/PunTeamsInspector.cs.meta | 8 + .../PhotonPlayer/PhotonTeamsManager.cs | 628 + .../PhotonPlayer/PhotonTeamsManager.cs.meta | 11 + .../PhotonPlayer/PlayerNumbering.cs | 267 + .../PhotonPlayer/PlayerNumbering.cs.meta | 12 + .../PhotonPlayer/PunPlayerScores.cs | 62 + .../PhotonPlayer/PunPlayerScores.cs.meta | 7 + .../UtilityScripts/PhotonPlayer/PunTeams.cs | 156 + .../PhotonPlayer/PunTeams.cs.meta | 7 + .../PhotonUnityNetworking.Utilities.asmdef | 11 + ...hotonUnityNetworking.Utilities.asmdef.meta | 8 + .../UtilityScripts/PhotonView.meta | 9 + .../PhotonView/SmoothSyncMovement.cs | 72 + .../PhotonView/SmoothSyncMovement.cs.meta | 7 + .../UtilityScripts/Prototyping.meta | 9 + .../Prototyping/ConnectAndJoinRandom.cs | 136 + .../Prototyping/ConnectAndJoinRandom.cs.meta | 7 + .../UtilityScripts/Prototyping/MoveByKeys.cs | 111 + .../Prototyping/MoveByKeys.cs.meta | 7 + .../Prototyping/OnClickDestroy.cs | 72 + .../Prototyping/OnClickDestroy.cs.meta | 7 + .../Prototyping/OnClickInstantiate.cs | 56 + .../Prototyping/OnClickInstantiate.cs.meta | 7 + .../UtilityScripts/Prototyping/OnClickRpc.cs | 89 + .../Prototyping/OnClickRpc.cs.meta | 12 + .../Prototyping/OnEscapeQuit.cs | 32 + .../Prototyping/OnEscapeQuit.cs.meta | 7 + .../Prototyping/OnJoinedInstantiate.cs | 450 + .../Prototyping/OnJoinedInstantiate.cs.meta | 7 + .../Prototyping/OnStartDelete.cs | 24 + .../Prototyping/OnStartDelete.cs.meta | 7 + .../UtilityScripts/Room.meta | 9 + .../UtilityScripts/Room/CountdownTimer.cs | 176 + .../Room/CountdownTimer.cs.meta | 12 + .../UtilityScripts/TurnBased.meta | 9 + .../TurnBased/PunTurnManager.cs | 430 + .../TurnBased/PunTurnManager.cs.meta | 8 + .../UtilityScripts/UI.meta | 7 + .../UI/ButtonInsideScrollList.cs | 53 + .../UI/ButtonInsideScrollList.cs.meta | 8 + .../UtilityScripts/UI/EventSystemSpawner.cs | 40 + .../UI/EventSystemSpawner.cs.meta | 12 + .../UI/GraphicToggleIsOnTransition.cs | 64 + .../UI/GraphicToggleIsOnTransition.cs.meta | 12 + .../UtilityScripts/UI/OnPointerOverTooltip.cs | 45 + .../UI/OnPointerOverTooltip.cs.meta | 12 + .../UtilityScripts/UI/TabViewManager.cs | 123 + .../UtilityScripts/UI/TabViewManager.cs.meta | 12 + .../UtilityScripts/UI/TextButtonTransition.cs | 70 + .../UI/TextButtonTransition.cs.meta | 8 + .../UI/TextToggleIsOnTransition.cs | 86 + .../UI/TextToggleIsOnTransition.cs.meta | 8 + .../PhotonUnityNetworking/changelog.txt | 544 + .../PhotonUnityNetworking/changelog.txt.meta | 7 + Assets/Photon/PhotonUnityNetworking/link.xml | 14 + .../PhotonUnityNetworking/link.xml.meta | 4 + .../Photon/PhotonUnityNetworking/readme.txt | 76 + .../PhotonUnityNetworking/readme.txt.meta | 7 + Assets/Resources/OculusPlatformSettings.asset | 17 + .../OculusPlatformSettings.asset.meta | 8 + Assets/SharedSpatialAnchors.meta | 8 + Assets/SharedSpatialAnchors/Materials.meta | 8 + .../SharedSpatialAnchors/Materials/Blue.mat | 77 + .../Materials/Blue.mat.meta | 8 + .../Materials/BouncyCube.physicMaterial | 14 + .../Materials/BouncyCube.physicMaterial.meta | 8 + .../Materials/CubeMat.mat | 78 + .../Materials/CubeMat.mat.meta | 8 + .../SharedSpatialAnchors/Materials/Green.mat | 77 + .../Materials/Green.mat.meta | 8 + Assets/SharedSpatialAnchors/Materials/Red.mat | 77 + .../Materials/Red.mat.meta | 8 + .../Materials/Textures.meta | 8 + .../Materials/Textures/OCUI_24_Filled_2x.png | Bin 0 -> 196127 bytes .../Textures/OCUI_24_Filled_2x.png.meta | 9363 ++ .../Materials/UIPanelMat.mat | 78 + .../Materials/UIPanelMat.mat.meta | 8 + Assets/SharedSpatialAnchors/Prefabs.meta | 8 + .../Prefabs/ControlPanel.prefab | 8956 ++ .../Prefabs/ControlPanel.prefab.meta | 7 + .../Prefabs/OVRCameraRig.prefab | 2623 + .../Prefabs/OVRCameraRig.prefab.meta | 7 + .../Prefabs/Resources.meta | 8 + .../Resources/PhotonGrabbableCube.prefab | 1177 + .../Resources/PhotonGrabbableCube.prefab.meta | 7 + .../Resources/PhotonThrowableCube.prefab | 1177 + .../Resources/PhotonThrowableCube.prefab.meta | 7 + .../Prefabs/SpatialAnchorPlacement.prefab | 702 + .../SpatialAnchorPlacement.prefab.meta | 7 + .../Prefabs/SpatialAnchorPrefab.prefab | 5739 ++ .../Prefabs/SpatialAnchorPrefab.prefab.meta | 7 + Assets/SharedSpatialAnchors/Scenes.meta | 8 + .../Scenes/SharedSpatialAnchors.unity | 579 + .../Scenes/SharedSpatialAnchors.unity.meta | 7 + Assets/SharedSpatialAnchors/Scripts.meta | 8 + .../Scripts/AlignPlayer.cs | 138 + .../Scripts/AlignPlayer.cs.meta | 11 + .../Scripts/AvatarPassthrough.cs | 277 + .../Scripts/AvatarPassthrough.cs.meta | 11 + .../Scripts/CachedSharedAnchor.cs | 226 + .../Scripts/CachedSharedAnchor.cs.meta | 11 + .../Scripts/CoLocatedPassthroughManager.cs | 137 + .../CoLocatedPassthroughManager.cs.meta | 11 + .../Scripts/DirectionalPassthrough.cs | 75 + .../Scripts/DirectionalPassthrough.cs.meta | 11 + .../Scripts/PassthroughAvatarPhoton.cs | 85 + .../Scripts/PassthroughAvatarPhoton.cs.meta | 11 + .../Scripts/PhotonAnchorManager.cs | 552 + .../Scripts/PhotonAnchorManager.cs.meta | 11 + .../Scripts/PhotonGrabbableObject.cs | 76 + .../Scripts/PhotonGrabbableObject.cs.meta | 11 + .../Scripts/PhotonLobbyPanel.cs | 183 + .../Scripts/PhotonLobbyPanel.cs.meta | 11 + .../Scripts/PhotonLobbyRow.cs | 37 + .../Scripts/PhotonLobbyRow.cs.meta | 11 + .../Scripts/PhotonThowableObject.cs | 74 + .../Scripts/PhotonThowableObject.cs.meta | 11 + .../Scripts/SampleController.cs | 152 + .../Scripts/SampleController.cs.meta | 11 + Assets/SharedSpatialAnchors/Scripts/Scene.cs | 52 + .../Scripts/Scene.cs.meta | 11 + .../Scripts/SceneApiSceneCaptureStrategy.cs | 508 + .../SceneApiSceneCaptureStrategy.cs.meta | 11 + .../Scripts/SharedAnchor.cs | 283 + .../Scripts/SharedAnchor.cs.meta | 11 + .../Scripts/SharedAnchorControlPanel.cs | 162 + .../Scripts/SharedAnchorControlPanel.cs.meta | 11 + .../Scripts/SharedAnchorLoader.cs | 296 + .../Scripts/SharedAnchorLoader.cs.meta | 11 + .../Scripts/SimplePassthroughManager.cs | 100 + .../Scripts/SimplePassthroughManager.cs.meta | 11 + .../Scripts/SoftPassthroughDot.cs | 49 + .../Scripts/SoftPassthroughDot.cs.meta | 11 + .../Scripts/WorldGenerationController.cs | 166 + .../Scripts/WorldGenerationController.cs.meta | 11 + ProjectSettings/ProjectSettings.asset | 18 +- 1045 files changed, 289177 insertions(+), 1 deletion(-) create mode 100644 Assets/Photon.meta create mode 100644 Assets/Photon/PhotonChat.meta create mode 100644 Assets/Photon/PhotonChat/Code.meta create mode 100644 Assets/Photon/PhotonChat/Code/ChannelCreationOptions.cs create mode 100644 Assets/Photon/PhotonChat/Code/ChannelCreationOptions.cs.meta create mode 100644 Assets/Photon/PhotonChat/Code/ChannelWellKnownProperties.cs create mode 100644 Assets/Photon/PhotonChat/Code/ChannelWellKnownProperties.cs.meta create mode 100644 Assets/Photon/PhotonChat/Code/ChatAppSettings.cs create mode 100644 Assets/Photon/PhotonChat/Code/ChatAppSettings.cs.meta create mode 100644 Assets/Photon/PhotonChat/Code/ChatChannel.cs create mode 100644 Assets/Photon/PhotonChat/Code/ChatChannel.cs.meta create mode 100644 Assets/Photon/PhotonChat/Code/ChatClient.cs create mode 100644 Assets/Photon/PhotonChat/Code/ChatClient.cs.meta create mode 100644 Assets/Photon/PhotonChat/Code/ChatDisconnectCause.cs create mode 100644 Assets/Photon/PhotonChat/Code/ChatDisconnectCause.cs.meta create mode 100644 Assets/Photon/PhotonChat/Code/ChatEventCode.cs create mode 100644 Assets/Photon/PhotonChat/Code/ChatEventCode.cs.meta create mode 100644 Assets/Photon/PhotonChat/Code/ChatOperationCode.cs create mode 100644 Assets/Photon/PhotonChat/Code/ChatOperationCode.cs.meta create mode 100644 Assets/Photon/PhotonChat/Code/ChatParameterCode.cs create mode 100644 Assets/Photon/PhotonChat/Code/ChatParameterCode.cs.meta create mode 100644 Assets/Photon/PhotonChat/Code/ChatPeer.cs create mode 100644 Assets/Photon/PhotonChat/Code/ChatPeer.cs.meta create mode 100644 Assets/Photon/PhotonChat/Code/ChatState.cs create mode 100644 Assets/Photon/PhotonChat/Code/ChatState.cs.meta create mode 100644 Assets/Photon/PhotonChat/Code/ChatUserStatus.cs create mode 100644 Assets/Photon/PhotonChat/Code/ChatUserStatus.cs.meta create mode 100644 Assets/Photon/PhotonChat/Code/IChatClientListener.cs create mode 100644 Assets/Photon/PhotonChat/Code/IChatClientListener.cs.meta create mode 100644 Assets/Photon/PhotonChat/Code/PhotonChat.asmdef create mode 100644 Assets/Photon/PhotonChat/Code/PhotonChat.asmdef.meta create mode 100644 Assets/Photon/PhotonChat/Code/changes-chat.txt create mode 100644 Assets/Photon/PhotonChat/Code/changes-chat.txt.meta create mode 100644 Assets/Photon/PhotonChat/Demos.meta create mode 100644 Assets/Photon/PhotonChat/Demos/Common.meta create mode 100644 Assets/Photon/PhotonChat/Demos/Common/EventSystemSpawner.cs create mode 100644 Assets/Photon/PhotonChat/Demos/Common/EventSystemSpawner.cs.meta create mode 100644 Assets/Photon/PhotonChat/Demos/Common/OnStartDelete.cs create mode 100644 Assets/Photon/PhotonChat/Demos/Common/OnStartDelete.cs.meta create mode 100644 Assets/Photon/PhotonChat/Demos/Common/TextButtonTransition.cs create mode 100644 Assets/Photon/PhotonChat/Demos/Common/TextButtonTransition.cs.meta create mode 100644 Assets/Photon/PhotonChat/Demos/Common/TextToggleIsOnTransition.cs create mode 100644 Assets/Photon/PhotonChat/Demos/Common/TextToggleIsOnTransition.cs.meta create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat.meta create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/AppSettingsExtensions.cs create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/AppSettingsExtensions.cs.meta create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/ChannelSelector.cs create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/ChannelSelector.cs.meta create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/ChatAppIdCheckerUI.cs create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/ChatAppIdCheckerUI.cs.meta create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/ChatGui.cs create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/ChatGui.cs.meta create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/DemoChat-Scene.unity create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/DemoChat-Scene.unity.meta create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/Editor.meta create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/Editor/ChatEditor.cs create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/Editor/ChatEditor.cs.meta create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/Files.meta create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/Files/Gradient.png create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/Files/Gradient.png.meta create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/Files/Jura-Medium.ttf create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/Files/Jura-Medium.ttf.meta create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/Files/OutlinedSquaredBox.png create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/Files/OutlinedSquaredBox.png.meta create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/Files/PunIcon-White-129.png create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/Files/PunIcon-White-129.png.meta create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/Files/eurof35.ttf create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/Files/eurof35.ttf.meta create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/Files/eurof_tt.txt create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/Files/eurof_tt.txt.meta create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/FriendItem.cs create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/FriendItem.cs.meta create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/IgnoreUiRaycastWhenInactive.cs create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/IgnoreUiRaycastWhenInactive.cs.meta create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/NamePickGui.cs create mode 100644 Assets/Photon/PhotonChat/Demos/DemoChat/NamePickGui.cs.meta create mode 100644 Assets/Photon/PhotonLibs.meta create mode 100644 Assets/Photon/PhotonLibs/Metro.meta create mode 100644 Assets/Photon/PhotonLibs/Metro/Photon3Unity3D.dll create mode 100644 Assets/Photon/PhotonLibs/Metro/Photon3Unity3D.dll.meta create mode 100644 Assets/Photon/PhotonLibs/Metro/Photon3Unity3D.pri create mode 100644 Assets/Photon/PhotonLibs/Metro/Photon3Unity3D.pri.meta create mode 100644 Assets/Photon/PhotonLibs/Photon3Unity3D.dll create mode 100644 Assets/Photon/PhotonLibs/Photon3Unity3D.dll.meta create mode 100644 Assets/Photon/PhotonLibs/Photon3Unity3D.xml create mode 100644 Assets/Photon/PhotonLibs/Photon3Unity3D.xml.meta create mode 100644 Assets/Photon/PhotonLibs/WebSocket.meta create mode 100644 Assets/Photon/PhotonLibs/WebSocket/SocketWebTcp.cs create mode 100644 Assets/Photon/PhotonLibs/WebSocket/SocketWebTcp.cs.meta create mode 100644 Assets/Photon/PhotonLibs/WebSocket/WebSocket.cs create mode 100644 Assets/Photon/PhotonLibs/WebSocket/WebSocket.cs.meta create mode 100644 Assets/Photon/PhotonLibs/WebSocket/WebSocket.jslib create mode 100644 Assets/Photon/PhotonLibs/WebSocket/WebSocket.jslib.meta create mode 100644 Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.README create mode 100644 Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.README.meta create mode 100644 Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.dll create mode 100644 Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.dll.meta create mode 100644 Assets/Photon/PhotonLibs/changes-library.txt create mode 100644 Assets/Photon/PhotonLibs/changes-library.txt.meta create mode 100644 Assets/Photon/PhotonLibs/netstandard2.0.meta create mode 100644 Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.deps.json create mode 100644 Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.deps.json.meta create mode 100644 Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.dll create mode 100644 Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.dll.meta create mode 100644 Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.xml create mode 100644 Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.xml.meta create mode 100644 Assets/Photon/PhotonNetworking-Documentation.chm create mode 100644 Assets/Photon/PhotonNetworking-Documentation.chm.meta create mode 100644 Assets/Photon/PhotonNetworking-Documentation.pdf create mode 100644 Assets/Photon/PhotonNetworking-Documentation.pdf.meta create mode 100644 Assets/Photon/PhotonRealtime.meta create mode 100644 Assets/Photon/PhotonRealtime/Code.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/AppSettings.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/AppSettings.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/ConnectionHandler.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/ConnectionHandler.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/CustomTypesUnity.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/CustomTypesUnity.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/Extensions.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/Extensions.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/FriendInfo.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/FriendInfo.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/LoadBalancingClient.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/LoadBalancingClient.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/LoadbalancingPeer.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/LoadbalancingPeer.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/PhotonPing.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/PhotonPing.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/PhotonPingClasses.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/PhotonPingClasses.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/PhotonRealtime.asmdef create mode 100644 Assets/Photon/PhotonRealtime/Code/PhotonRealtime.asmdef.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/Player.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/Player.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/Region.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/Region.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/RegionHandler.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/RegionHandler.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/Room.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/Room.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/RoomInfo.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/RoomInfo.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/SupportLogger.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/SupportLogger.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/Unity.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/Unity/Editor.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/Unity/Editor/AccountService.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/Unity/Editor/AccountService.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/Unity/Editor/PhotonEditorUtils.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/Unity/Editor/PhotonEditorUtils.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/Unity/PhotonAppSettings.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/Unity/PhotonAppSettings.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/WebRpc.cs create mode 100644 Assets/Photon/PhotonRealtime/Code/WebRpc.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Code/changes-realtime.txt create mode 100644 Assets/Photon/PhotonRealtime/Code/changes-realtime.txt.meta create mode 100644 Assets/Photon/PhotonRealtime/Demos.meta create mode 100644 Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing.meta create mode 100644 Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/ConnectAndJoinRandomLb.cs create mode 100644 Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/ConnectAndJoinRandomLb.cs.meta create mode 100644 Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/DemoLoadBalancing-Scene.unity create mode 100644 Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/DemoLoadBalancing-Scene.unity.meta create mode 100644 Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/Jura-Medium-LB.ttf create mode 100644 Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/Jura-Medium-LB.ttf.meta create mode 100644 Assets/Photon/PhotonUnityNetworking.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/CustomTypes.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/CustomTypes.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/CopyIcon.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/CopyIcon.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/CopyIconPro.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/CopyIconPro.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonEditor.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonEditor.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonGUI.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonGUI.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonUnityNetworking.Editor.asmdef create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonUnityNetworking.Editor.asmdef.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonViewHandler.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonViewHandler.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonViewInspector.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonViewInspector.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/PunGradient.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/PunGradient.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettings.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettings.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettingsFile.asset create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettingsFile.asset.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettingsInspector.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettingsInspector.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList/LICENSE.txt create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList/LICENSE.txt.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList/ReorderableListResources.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList/ReorderableListResources.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/ServerSettingsInspector.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/ServerSettingsInspector.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/Views.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/MonoBehaviourPunEditor.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/MonoBehaviourPunEditor.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonAnimatorViewEditor.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonAnimatorViewEditor.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonRigidbody2DViewEditor.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonRigidbody2DViewEditor.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonRigidbodyViewEditor.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonRigidbodyViewEditor.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonTransformViewClassicEditor.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonTransformViewClassicEditor.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonTransformViewEditor.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonTransformViewEditor.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/help.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Editor/help.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Enums.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Enums.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Interfaces.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Interfaces/IPhotonViewCallbacks.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Interfaces/IPhotonViewCallbacks.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Interfaces/IPunCallbacks.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Interfaces/IPunCallbacks.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/PhotonHandler.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/PhotonHandler.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/PhotonNetwork.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/PhotonNetwork.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/PhotonNetworkPart.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/PhotonNetworkPart.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/PhotonStreamQueue.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/PhotonStreamQueue.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/PhotonUnityNetworking.asmdef create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/PhotonUnityNetworking.asmdef.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/PhotonView.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/PhotonView.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/PunClasses.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/PunClasses.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/ServerSettings.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/ServerSettings.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Utilities.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Utilities/NestedComponentUtilities.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Utilities/NestedComponentUtilities.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Views.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonAnimatorView.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonAnimatorView.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonRigidbody2DView.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonRigidbody2DView.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonRigidbodyView.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonRigidbodyView.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonTransformView.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonTransformView.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonTransformViewClassic.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonTransformViewClassic.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/FlyerAsteroid.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/FlyerAsteroid.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/FlyerPlayership.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/FlyerPlayership.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/ParticleAfterburner.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/ParticleAfterburner.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/WhiteSmooth.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/WhiteSmooth.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/WhiteUnlit.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/WhiteUnlit.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Asteroid01.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Asteroid01.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/FlyerAsteroidB.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/FlyerAsteroidB.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/LaserBolt.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/LaserBolt.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/Asteroid.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/Asteroid.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/FlyerAsteroid1.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/FlyerAsteroid1.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/SpaceshipGlow.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/SpaceshipGlow.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/SpaceshipHull.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/SpaceshipHull.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Spaceship.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Spaceship.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/Bullet.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/Bullet.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/PlayerListEntry.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/PlayerListEntry.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/PlayerOverviewEntry.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/PlayerOverviewEntry.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/RoomListEntry.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/RoomListEntry.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/BigAsteroid.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/BigAsteroid.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/SmallAsteroid.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/SmallAsteroid.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/Spaceship.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/Spaceship.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes/DemoAsteroids-GameScene.unity create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes/DemoAsteroids-GameScene.unity.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes/DemoAsteroids-LobbyScene.unity create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes/DemoAsteroids-LobbyScene.unity.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/AsteroidsGame.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/AsteroidsGame.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Asteroid.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Asteroid.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/AsteroidsGameManager.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/AsteroidsGameManager.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Bullet.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Bullet.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/PlayerOverviewPanel.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/PlayerOverviewPanel.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Spaceship.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Spaceship.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/LobbyMainPanel.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/LobbyMainPanel.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/LobbyTopPanel.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/LobbyTopPanel.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/PlayerListEntry.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/PlayerListEntry.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/RoomListEntry.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/RoomListEntry.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerAsteroidEmissive.tif create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerAsteroidEmissive.tif.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerPlayershipAlbedo.tif create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerPlayershipAlbedo.tif.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerPlayershipEmission.tif create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerPlayershipEmission.tif.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerPlayershipOcclusion.tif create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerPlayershipOcclusion.tif.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/DemoHub-Scene.unity create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/DemoHub-Scene.unity.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Editor.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Editor/PunDemos.DemoHubEditor.asmdef create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Editor/PunDemos.DemoHubEditor.asmdef.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Editor/PunStartup.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Editor/PunStartup.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Scripts.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Scripts/DemoHubManager.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Scripts/DemoHubManager.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Scripts/ToDemoHubButton.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Scripts/ToDemoHubButton.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Sprites.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Sprites/Gradient.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Sprites/Gradient.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Sprites/OutlinedSquaredBox.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Sprites/OutlinedSquaredBox.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Sprites/PunIcon-White-129.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Sprites/PunIcon-White-129.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Sprites/toHub.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/Sprites/toHub.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/toHub.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoHub/toHub.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Materials.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Materials/Black.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Materials/Black.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Materials/LightGreen.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Materials/LightGreen.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Materials/Orange.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Materials/Orange.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Materials/Red.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Materials/Red.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Materials/Yellow.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Materials/Yellow.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Procedural-Scene.unity create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Procedural-Scene.unity.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Scripts.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Scripts/Block.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Scripts/Block.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Scripts/Cluster.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Scripts/Cluster.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Scripts/IngameControlPanel.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Scripts/IngameControlPanel.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Scripts/Noise.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Scripts/Noise.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Scripts/ProceduralController.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Scripts/ProceduralController.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Scripts/WorldGenerator.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoProcedural/Scripts/WorldGenerator.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Copyrights.txt create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Copyrights.txt.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials/_defaultMat.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials/_defaultMat.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials/bark.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials/bark.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials/grass.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials/grass.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials/grey.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials/grey.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials/red.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials/red.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials/road.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials/road.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials/tankco.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials/tankco.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials/wall.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials/wall.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials/white.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Materials/white.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Textures.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Textures/tankco.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/Textures/tankco.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/billboardLower.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/billboardLower.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/flagGreen.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/flagGreen.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/rail.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/rail.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/roadCornerSmall.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/roadCornerSmall.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/roadCornerSmallBorder.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/roadCornerSmallBorder.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/roadRampLongCurvedWall.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/roadRampLongCurvedWall.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/roadStart.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/roadStart.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/roadStartPositions.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/roadStartPositions.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/roadStraight.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/roadStraight.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/roadStraightBridgeStart.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Racing Kit/Models/roadStraightBridgeStart.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/11 - Default.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/11 - Default.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/13 - Default.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/13 - Default.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/13 - Default22662.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/13 - Default22662.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/13 - Default54.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/13 - Default54.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/20 - Default.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/20 - Default.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/22 - Default.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/22 - Default.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/24 - Default.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/24 - Default.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/No Name.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/No Name.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/car.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/car.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/ground_green.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/ground_green.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/ground_green232.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/ground_green232.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/insides_2.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/insides_2.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/insides_3.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/insides_3.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/leaves_palm_243.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/leaves_palm_243.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/roof.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/roof.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/tank.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/tank.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/windows_2.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Materials/windows_2.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Models.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Models/bush1.FBX create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Models/bush1.FBX.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Models/car_1.FBX create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Models/car_1.FBX.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Models/car_3.FBX create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Models/car_3.FBX.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Models/car_4.FBX create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Models/car_4.FBX.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Models/hamvee.FBX create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Models/hamvee.FBX.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Models/tree_1.FBX create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Models/tree_1.FBX.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Models/tree_6.FBX create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Kenney Assets/Stylized city/Models/tree_6.FBX.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Prefabs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Prefabs/SlotCar_A.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Prefabs/SlotCar_A.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Prefabs/SlotCar_B.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Prefabs/SlotCar_B.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Prefabs/SlotCar_C.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Prefabs/SlotCar_C.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Prefabs/SlotCar_D.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Prefabs/SlotCar_D.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Resources.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Resources/Player Controller.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Resources/Player Controller.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/Bezier.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/Bezier.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/BezierControlPointMode.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/BezierControlPointMode.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/BezierCurve.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/BezierCurve.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/BezierSpline.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/BezierSpline.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/Editor.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/Editor/BezierCurveInspector.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/Editor/BezierCurveInspector.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/Editor/BezierSplineInspector.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/Editor/BezierSplineInspector.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/Editor/LineInspector.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/Editor/LineInspector.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/Editor/PunDemos.DemoSlotcarEditor.asmdef create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/Editor/PunDemos.DemoSlotcarEditor.asmdef.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/Line.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/Line.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/SplinePosition.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/SplinePosition.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/SplineWalker.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/BezierCurve/SplineWalker.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/PlayerControl.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/PlayerControl.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/SlotLanes.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/SlotLanes.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/SlotRacerSplashScreen.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/Scripts/SlotRacerSplashScreen.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/SlotCar-Scene.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/SlotCar-Scene.unity create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/SlotCar-Scene.unity.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/SlotCar-Scene/LightingData.asset create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/SlotCar-Scene/LightingData.asset.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/SlotCar-Scene/ReflectionProbe-0.exr create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/DemoSlotRacer/SlotCar-Scene/ReflectionProbe-0.exr.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PhotonUnityNetworking.Demos.asmdef create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PhotonUnityNetworking.Demos.asmdef.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Animator.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Animator/Kyle Robot.controller create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Animator/Kyle Robot.controller.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Materials.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Materials/Red Beam.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Materials/Red Beam.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Materials/UnitTextureGreen12x.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Materials/UnitTextureGreen12x.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Materials/UnitTextureRed12x.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Materials/UnitTextureRed12x.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Materials/UnitTextureYellow12x.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Materials/UnitTextureYellow12x.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Prefabs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Prefabs/Demo Intro UI.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Prefabs/Demo Intro UI.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Prefabs/Game Manager.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Prefabs/Game Manager.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Prefabs/Player UI.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Prefabs/Player UI.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Prefabs/Quit Room Button.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Prefabs/Quit Room Button.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Resources.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Resources/My Robot Kyle -done-.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Resources/My Robot Kyle -done-.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scenes.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scenes/PunBasics-Launcher.unity create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scenes/PunBasics-Launcher.unity.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scenes/PunBasics-Room for 1.unity create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scenes/PunBasics-Room for 1.unity.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scenes/PunBasics-Room for 2.unity create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scenes/PunBasics-Room for 2.unity.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scenes/PunBasics-Room for 3.unity create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scenes/PunBasics-Room for 3.unity.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scenes/PunBasics-Room for 4.unity create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scenes/PunBasics-Room for 4.unity.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scripts.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scripts/CameraWork.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scripts/CameraWork.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scripts/GameManager.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scripts/GameManager.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scripts/Launcher.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scripts/Launcher.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scripts/LoaderAnime.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scripts/LoaderAnime.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scripts/PlayerAnimatorManager.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scripts/PlayerAnimatorManager.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scripts/PlayerManager.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scripts/PlayerManager.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scripts/PlayerNameInputField.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scripts/PlayerNameInputField.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scripts/PlayerUI.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunBasics-Tutorial/Scripts/PlayerUI.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Forms.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Forms/ConnectToRegionUIForm.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Forms/ConnectToRegionUIForm.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Forms/CreateRoomUiForm.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Forms/CreateRoomUiForm.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Forms/LoadLevelUIForm.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Forms/LoadLevelUIForm.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Forms/SetRoomCustomPropertyUIForm.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Forms/SetRoomCustomPropertyUIForm.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Forms/UserIdUiForm.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Forms/UserIdUiForm.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Prefabs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Prefabs/Help Button.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Prefabs/Help Button.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Prefabs/Tab Toggle.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Prefabs/Tab Toggle.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/PunCockpit-Scene.unity create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/PunCockpit-Scene.unity.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/PunCockpit.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/PunCockpit.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/AutoSyncSceneToggle.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/AutoSyncSceneToggle.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/BackgroundTimeOutField.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/BackgroundTimeOutField.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/CrcCheckToggle.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/CrcCheckToggle.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/CurrentRoom.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/CurrentRoom/CurrentRoomIsOpenToggle.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/CurrentRoom/CurrentRoomIsOpenToggle.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/CurrentRoom/CurrentRoomIsVisibleToggle.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/CurrentRoom/CurrentRoomIsVisibleToggle.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/DocLinkButton.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/DocLinkButton.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/GameVersionField.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/GameVersionField.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/Generic.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/Generic/BoolInputField.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/Generic/BoolInputField.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/Generic/IntInputField.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/Generic/IntInputField.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/Generic/StringInputField.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/Generic/StringInputField.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/Generic/ToggleExpand.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/Generic/ToggleExpand.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/LayoutElementMatchSize.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/LayoutElementMatchSize.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/NickNameField.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/NickNameField.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/OnlineDocButton.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/OnlineDocButton.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/SendRateField.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/SendRateField.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/SendRateOnSerializeField.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Autonomous UI/SendRateOnSerializeField.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Controllers.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Controllers/PlayerDetailsController.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Controllers/PlayerDetailsController.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/InfosPanelPlaceholder.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/InfosPanelPlaceholder.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists/FriendListCell.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists/FriendListCell.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists/FriendListView.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists/FriendListView.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists/PlayerListCell.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists/PlayerListCell.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists/PlayerListView.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists/PlayerListView.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists/PropertyCell.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists/PropertyCell.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists/RegionListCell.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists/RegionListCell.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists/RegionListView.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists/RegionListView.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists/RoomListCell.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists/RoomListCell.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists/RoomListView.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/Lists/RoomListView.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/PropertyFields.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/PropertyFields/UserIdField.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/PropertyFields/UserIdField.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/AppVersionProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/AppVersionProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/BestRegionInPrefsProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/BestRegionInPrefsProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CloudRegionProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CloudRegionProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CountOfPlayersInRoomProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CountOfPlayersInRoomProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CountOfPlayersOnMasterProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CountOfPlayersOnMasterProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CountOfPlayersProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CountOfPlayersProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CountOfRoomsProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CountOfRoomsProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomAutoCleanupProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomAutoCleanupProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomEmptyRoomTtlProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomEmptyRoomTtlProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomExpectedUsersProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomExpectedUsersProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomIsOfflineProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomIsOfflineProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomIsOpenProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomIsOpenProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomIsVisibleProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomIsVisibleProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomMasterClientIdProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomMasterClientIdProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomMaxPlayersProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomMaxPlayersProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomNameProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomNameProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomPlayerCountProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomPlayerCountProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomPlayerTtlProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomPlayerTtlProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomPropertiesListedInLobbyProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/CurrentRoomPropertiesListedInLobbyProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/GameVersionProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/GameVersionProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/IsConnectedAndReadyProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/IsConnectedAndReadyProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/IsConnectedProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/IsConnectedProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/OfflineModeProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/OfflineModeProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/PingProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/PingProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/PropertyListenerBase.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/PropertyListenerBase.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/ServerAddressProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/ServerAddressProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/ServerProperty.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ReadOnlyProperties/ServerProperty.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ScoreHelper.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ScoreHelper.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ThirdParty.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ThirdParty/PunCockpitEmbed.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/PunCockpit/Scripts/ThirdParty/PunCockpitEmbed.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidCrouch.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidCrouch.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidIdle.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidIdle.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidIdleJumpUp.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidIdleJumpUp.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidJumpAndFall.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidJumpAndFall.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidMidAir.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidMidAir.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidRun.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidRun.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidRunTurn.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidRunTurn.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidRunTurnSharp.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidRunTurnSharp.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidStandTurn.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidStandTurn.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidWalk.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidWalk.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidWalkTurn.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidWalkTurn.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidWalkTurnSharp.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/HumanoidWalkTurnSharp.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/Materials.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/Materials/EyesMaterial.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/Materials/EyesMaterial.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/Materials/SkinMaterial.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/Materials/SkinMaterial.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/Materials/SuitMaterial.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/Materials/SuitMaterial.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/Materials/TeethMaterial.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/Materials/TeethMaterial.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/Materials/TongueMaterial.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animations/Materials/TongueMaterial.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animator.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animator/ThirdPersonAnimatorController.controller create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Animator/ThirdPersonAnimatorController.controller.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Materials.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Materials/Gradient.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Materials/Gradient.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Materials/PlayerDiamond.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Materials/PlayerDiamond.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Materials/Robot_Color.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Materials/Robot_Color.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Materials/UnitCircleMaterial.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Materials/UnitCircleMaterial.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Materials/UnitCircleTexture.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Materials/UnitCircleTexture.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Materials/UnitTextureBlue.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Materials/UnitTextureBlue.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Materials/UnitTextureBlue12x.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Materials/UnitTextureBlue12x.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Materials/UnitTextureRed.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Materials/UnitTextureRed.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Models.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Models/Pointer.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Models/Pointer.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Models/Robot Kyle.fbx create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Models/Robot Kyle.fbx.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Prefabs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Prefabs/PointerPrefab.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Prefabs/PointerPrefab.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Prefabs/UI.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Prefabs/UI/Button Regular.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Prefabs/UI/Button Regular.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Prefabs/UI/Toggle Regular.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Prefabs/UI/Toggle Regular.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Prefabs/UI/Tooltip.prefab create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Prefabs/UI/Tooltip.prefab.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Scripts.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Scripts/DocLinks.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Scripts/DocLinks.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Scripts/ThirdPersonCharacter.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Scripts/ThirdPersonCharacter.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Scripts/ThirdPersonUserControl.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Scripts/ThirdPersonUserControl.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/3dText.shader create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/3dText.shader.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/BoxBright.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/BoxBright.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/BoxOrange.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/BoxOrange.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/BoxOrangeRed.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/BoxOrangeRed.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/BoxText.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/BoxText.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/BoxTextHover.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/BoxTextHover.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/DropDown Arrow.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/DropDown Arrow.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/DropDown CheckMark.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/DropDown CheckMark.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/Jura-Flat-Material.mat create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/Jura-Flat-Material.mat.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/Jura-Medium.ttf create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/Jura-Medium.ttf.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/Orbitron Black.ttf create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/Orbitron Black.ttf.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/RoundedBox.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/RoundedBox.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/Toggle.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/Toggle.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/ToggleHover.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/ToggleHover.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/ToggleOn.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/ToggleOn.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/ToggleOnHover.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/ToggleOnHover.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/eurof35.ttf create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/eurof35.ttf.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/eurof_tt.txt create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Skin/eurof_tt.txt.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Textures.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Textures/Gradient.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Textures/Gradient.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Textures/Robot_Color.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Textures/Robot_Color.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Textures/Robot_Normal.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Textures/Robot_Normal.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Textures/UnitCircleTexture.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Textures/UnitCircleTexture.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Textures/UnitTexture.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Textures/UnitTexture.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Textures/UnitTextureBlue.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Textures/UnitTextureBlue.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Textures/UnitTextureRed.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/Shared Assets/Textures/UnitTextureRed.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/WebRpcImplementationExample.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/Demos/WebRpcImplementationExample.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Icons.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Icons/PunIcon-128.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Icons/PunIcon-128.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Icons/PunIconApp128.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Icons/PunIconApp128.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Icons/PunIconApp32.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Icons/PunIconApp32.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Icons/PunIconApp48.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Icons/PunIconApp48.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Icons/PunIconApp512.png create mode 100644 Assets/Photon/PhotonUnityNetworking/Icons/PunIconApp512.png.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Resources.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/Resources/PhotonServerSettings.asset create mode 100644 Assets/Photon/PhotonUnityNetworking/Resources/PhotonServerSettings.asset.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Culling.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Culling/CullArea.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Culling/CullArea.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Culling/CullingHandler.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Culling/CullingHandler.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Culling/Editor.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Culling/Editor/CullAreaEditor.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Culling/Editor/CullAreaEditor.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Culling/Editor/PhotonUnityNetworking.Utilities.Culling.Editor.asmdef create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Culling/Editor/PhotonUnityNetworking.Utilities.Culling.Editor.asmdef.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Debugging.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Debugging/PhotonLagSimulationGui.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Debugging/PhotonLagSimulationGui.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Debugging/PhotonStatsGui.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Debugging/PhotonStatsGui.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Debugging/PointedAtGameObjectInfo.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Debugging/PointedAtGameObjectInfo.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Debugging/StatesGui.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Debugging/StatesGui.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonPlayer.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonPlayer/Editor.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonPlayer/Editor/PhotonTeamsManagerInspector.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonPlayer/Editor/PhotonTeamsManagerInspector.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonPlayer/Editor/PhotonUnityNetworking.Utilities.PhotonPlayer.Editor.asmdef create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonPlayer/Editor/PhotonUnityNetworking.Utilities.PhotonPlayer.Editor.asmdef.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonPlayer/Editor/PlayerNumberingInspector.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonPlayer/Editor/PlayerNumberingInspector.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonPlayer/Editor/PunTeamsInspector.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonPlayer/Editor/PunTeamsInspector.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonPlayer/PhotonTeamsManager.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonPlayer/PhotonTeamsManager.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonPlayer/PlayerNumbering.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonPlayer/PlayerNumbering.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonPlayer/PunPlayerScores.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonPlayer/PunPlayerScores.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonPlayer/PunTeams.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonPlayer/PunTeams.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonUnityNetworking.Utilities.asmdef create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonUnityNetworking.Utilities.asmdef.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonView.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonView/SmoothSyncMovement.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/PhotonView/SmoothSyncMovement.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Prototyping.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Prototyping/ConnectAndJoinRandom.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Prototyping/ConnectAndJoinRandom.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Prototyping/MoveByKeys.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Prototyping/MoveByKeys.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Prototyping/OnClickDestroy.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Prototyping/OnClickDestroy.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Prototyping/OnClickInstantiate.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Prototyping/OnClickInstantiate.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Prototyping/OnClickRpc.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Prototyping/OnClickRpc.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Prototyping/OnEscapeQuit.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Prototyping/OnEscapeQuit.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Prototyping/OnJoinedInstantiate.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Prototyping/OnJoinedInstantiate.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Prototyping/OnStartDelete.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Prototyping/OnStartDelete.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Room.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Room/CountdownTimer.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/Room/CountdownTimer.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/TurnBased.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/TurnBased/PunTurnManager.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/TurnBased/PunTurnManager.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/UI.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/UI/ButtonInsideScrollList.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/UI/ButtonInsideScrollList.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/UI/EventSystemSpawner.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/UI/EventSystemSpawner.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/UI/GraphicToggleIsOnTransition.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/UI/GraphicToggleIsOnTransition.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/UI/OnPointerOverTooltip.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/UI/OnPointerOverTooltip.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/UI/TabViewManager.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/UI/TabViewManager.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/UI/TextButtonTransition.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/UI/TextButtonTransition.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/UI/TextToggleIsOnTransition.cs create mode 100644 Assets/Photon/PhotonUnityNetworking/UtilityScripts/UI/TextToggleIsOnTransition.cs.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/changelog.txt create mode 100644 Assets/Photon/PhotonUnityNetworking/changelog.txt.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/link.xml create mode 100644 Assets/Photon/PhotonUnityNetworking/link.xml.meta create mode 100644 Assets/Photon/PhotonUnityNetworking/readme.txt create mode 100644 Assets/Photon/PhotonUnityNetworking/readme.txt.meta create mode 100644 Assets/Resources/OculusPlatformSettings.asset create mode 100644 Assets/Resources/OculusPlatformSettings.asset.meta create mode 100644 Assets/SharedSpatialAnchors.meta create mode 100644 Assets/SharedSpatialAnchors/Materials.meta create mode 100644 Assets/SharedSpatialAnchors/Materials/Blue.mat create mode 100644 Assets/SharedSpatialAnchors/Materials/Blue.mat.meta create mode 100644 Assets/SharedSpatialAnchors/Materials/BouncyCube.physicMaterial create mode 100644 Assets/SharedSpatialAnchors/Materials/BouncyCube.physicMaterial.meta create mode 100644 Assets/SharedSpatialAnchors/Materials/CubeMat.mat create mode 100644 Assets/SharedSpatialAnchors/Materials/CubeMat.mat.meta create mode 100644 Assets/SharedSpatialAnchors/Materials/Green.mat create mode 100644 Assets/SharedSpatialAnchors/Materials/Green.mat.meta create mode 100644 Assets/SharedSpatialAnchors/Materials/Red.mat create mode 100644 Assets/SharedSpatialAnchors/Materials/Red.mat.meta create mode 100644 Assets/SharedSpatialAnchors/Materials/Textures.meta create mode 100644 Assets/SharedSpatialAnchors/Materials/Textures/OCUI_24_Filled_2x.png create mode 100644 Assets/SharedSpatialAnchors/Materials/Textures/OCUI_24_Filled_2x.png.meta create mode 100644 Assets/SharedSpatialAnchors/Materials/UIPanelMat.mat create mode 100644 Assets/SharedSpatialAnchors/Materials/UIPanelMat.mat.meta create mode 100644 Assets/SharedSpatialAnchors/Prefabs.meta create mode 100644 Assets/SharedSpatialAnchors/Prefabs/ControlPanel.prefab create mode 100644 Assets/SharedSpatialAnchors/Prefabs/ControlPanel.prefab.meta create mode 100644 Assets/SharedSpatialAnchors/Prefabs/OVRCameraRig.prefab create mode 100644 Assets/SharedSpatialAnchors/Prefabs/OVRCameraRig.prefab.meta create mode 100644 Assets/SharedSpatialAnchors/Prefabs/Resources.meta create mode 100644 Assets/SharedSpatialAnchors/Prefabs/Resources/PhotonGrabbableCube.prefab create mode 100644 Assets/SharedSpatialAnchors/Prefabs/Resources/PhotonGrabbableCube.prefab.meta create mode 100644 Assets/SharedSpatialAnchors/Prefabs/Resources/PhotonThrowableCube.prefab create mode 100644 Assets/SharedSpatialAnchors/Prefabs/Resources/PhotonThrowableCube.prefab.meta create mode 100644 Assets/SharedSpatialAnchors/Prefabs/SpatialAnchorPlacement.prefab create mode 100644 Assets/SharedSpatialAnchors/Prefabs/SpatialAnchorPlacement.prefab.meta create mode 100644 Assets/SharedSpatialAnchors/Prefabs/SpatialAnchorPrefab.prefab create mode 100644 Assets/SharedSpatialAnchors/Prefabs/SpatialAnchorPrefab.prefab.meta create mode 100644 Assets/SharedSpatialAnchors/Scenes.meta create mode 100644 Assets/SharedSpatialAnchors/Scenes/SharedSpatialAnchors.unity create mode 100644 Assets/SharedSpatialAnchors/Scenes/SharedSpatialAnchors.unity.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/AlignPlayer.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/AlignPlayer.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/AvatarPassthrough.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/AvatarPassthrough.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/CachedSharedAnchor.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/CachedSharedAnchor.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/CoLocatedPassthroughManager.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/CoLocatedPassthroughManager.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/DirectionalPassthrough.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/DirectionalPassthrough.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/PassthroughAvatarPhoton.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/PassthroughAvatarPhoton.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/PhotonAnchorManager.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/PhotonAnchorManager.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/PhotonGrabbableObject.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/PhotonGrabbableObject.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/PhotonLobbyPanel.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/PhotonLobbyPanel.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/PhotonLobbyRow.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/PhotonLobbyRow.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/PhotonThowableObject.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/PhotonThowableObject.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/SampleController.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/SampleController.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/Scene.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/Scene.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/SceneApiSceneCaptureStrategy.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/SceneApiSceneCaptureStrategy.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/SharedAnchor.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/SharedAnchor.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/SharedAnchorControlPanel.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/SharedAnchorControlPanel.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/SharedAnchorLoader.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/SharedAnchorLoader.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/SimplePassthroughManager.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/SimplePassthroughManager.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/SoftPassthroughDot.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/SoftPassthroughDot.cs.meta create mode 100644 Assets/SharedSpatialAnchors/Scripts/WorldGenerationController.cs create mode 100644 Assets/SharedSpatialAnchors/Scripts/WorldGenerationController.cs.meta diff --git a/Assets/Photon.meta b/Assets/Photon.meta new file mode 100644 index 00000000..06f81093 --- /dev/null +++ b/Assets/Photon.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 98951132346795f438babe7a3183da43 +folderAsset: yes +timeCreated: 1523536679 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat.meta b/Assets/Photon/PhotonChat.meta new file mode 100644 index 00000000..ba251119 --- /dev/null +++ b/Assets/Photon/PhotonChat.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ea05e6479d592944d955c2a5e1a6d6f1 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Code.meta b/Assets/Photon/PhotonChat/Code.meta new file mode 100644 index 00000000..514db0b5 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: af83a98aaa4f7b64eb7fcec95ee7b1ed +folderAsset: yes +timeCreated: 1523525757 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Code/ChannelCreationOptions.cs b/Assets/Photon/PhotonChat/Code/ChannelCreationOptions.cs new file mode 100644 index 00000000..50c791b5 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChannelCreationOptions.cs @@ -0,0 +1,22 @@ +// ---------------------------------------------------------------------------------------------------------------------- +// The Photon Chat Api enables clients to connect to a chat server and communicate with other clients. +// ChannelCreationOptions is a parameter used when subscribing to a public channel for the first time. +// Photon Chat Api - Copyright (C) 2018 Exit Games GmbH +// ---------------------------------------------------------------------------------------------------------------------- + +namespace Photon.Chat +{ + public class ChannelCreationOptions + { + /// Default values of channel creation options. + public static ChannelCreationOptions Default = new ChannelCreationOptions(); + /// Whether or not the channel to be created will allow client to keep a list of users. + public bool PublishSubscribers { get; set; } + /// Limit of the number of users subscribed to the channel to be created. + public int MaxSubscribers { get; set; } + + #if CHAT_EXTENDED + public System.Collections.Generic.Dictionary CustomProperties { get; set; } + #endif + } +} diff --git a/Assets/Photon/PhotonChat/Code/ChannelCreationOptions.cs.meta b/Assets/Photon/PhotonChat/Code/ChannelCreationOptions.cs.meta new file mode 100644 index 00000000..5650cd32 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChannelCreationOptions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6c1aa0fceaa2bc14eabdf85976f4e2c8 +timeCreated: 1549546375 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Code/ChannelWellKnownProperties.cs b/Assets/Photon/PhotonChat/Code/ChannelWellKnownProperties.cs new file mode 100644 index 00000000..2627e7ac --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChannelWellKnownProperties.cs @@ -0,0 +1,14 @@ +// ---------------------------------------------------------------------------------------------------------------------- +// The Photon Chat Api enables clients to connect to a chat server and communicate with other clients. +// ChannelWellKnownProperties contains the list of well-known channel properties. +// Photon Chat Api - Copyright (C) 2018 Exit Games GmbH +// ---------------------------------------------------------------------------------------------------------------------- + +namespace Photon.Chat +{ + public class ChannelWellKnownProperties + { + public const byte MaxSubscribers = 255; + public const byte PublishSubscribers = 254; + } +} diff --git a/Assets/Photon/PhotonChat/Code/ChannelWellKnownProperties.cs.meta b/Assets/Photon/PhotonChat/Code/ChannelWellKnownProperties.cs.meta new file mode 100644 index 00000000..2c88cb10 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChannelWellKnownProperties.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5eb508ffb7b7b0f47882f0087a668283 +timeCreated: 1547826678 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Code/ChatAppSettings.cs b/Assets/Photon/PhotonChat/Code/ChatAppSettings.cs new file mode 100644 index 00000000..a2255d54 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatAppSettings.cs @@ -0,0 +1,64 @@ +// ----------------------------------------------------------------------- +// +// Chat API for Photon - Copyright (C) 2018 Exit Games GmbH +// +// Settings for Photon Chat application and the server to connect to. +// developer@photonengine.com +// ---------------------------------------------------------------------------- + +#if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER +#define SUPPORTED_UNITY +#endif + + +namespace Photon.Chat +{ + using System; + using ExitGames.Client.Photon; + #if SUPPORTED_UNITY + using UnityEngine.Serialization; + #endif + + /// + /// Settings for Photon application(s) and the server to connect to. + /// + /// + /// This is Serializable for Unity, so it can be included in ScriptableObject instances. + /// + #if !NETFX_CORE || SUPPORTED_UNITY + [Serializable] + #endif + public class ChatAppSettings + { + /// AppId for the Chat Api. + public string AppIdChat; + + /// The AppVersion can be used to identify builds and will split the AppId distinct "Virtual AppIds" (important for the users to find each other). + public string AppVersion; + + /// Can be set to any of the Photon Cloud's region names to directly connect to that region. + public string FixedRegion; + + /// The address (hostname or IP) of the server to connect to. + public string Server; + + /// If not null, this sets the port of the first Photon server to connect to (that will "forward" the client as needed). + public ushort Port; + + /// The address (hostname or IP and port) of the proxy server. + public string ProxyServer; + + /// The network level protocol to use. + public ConnectionProtocol Protocol = ConnectionProtocol.Udp; + + /// Enables a fallback to another protocol in case a connect to the Name Server fails. + /// See: LoadBalancingClient.EnableProtocolFallback. + public bool EnableProtocolFallback = true; + + /// Log level for the network lib. + public DebugLevel NetworkLogging = DebugLevel.ERROR; + + /// If true, the default nameserver address for the Photon Cloud should be used. + public bool IsDefaultNameServer { get { return string.IsNullOrEmpty(this.Server); } } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Code/ChatAppSettings.cs.meta b/Assets/Photon/PhotonChat/Code/ChatAppSettings.cs.meta new file mode 100644 index 00000000..479680ba --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatAppSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 87776a9b1f405644abcc38ecd70c37fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Code/ChatChannel.cs b/Assets/Photon/PhotonChat/Code/ChatChannel.cs new file mode 100644 index 00000000..6d0885e8 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatChannel.cs @@ -0,0 +1,255 @@ +// ---------------------------------------------------------------------------------------------------------------------- +// The Photon Chat Api enables clients to connect to a chat server and communicate with other clients. +// ChatClient is the main class of this api. +// Photon Chat Api - Copyright (C) 2014 Exit Games GmbH +// ---------------------------------------------------------------------------------------------------------------------- + +#if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER +#define SUPPORTED_UNITY +#endif + +namespace Photon.Chat +{ + using System.Collections.Generic; + using System.Text; + + #if SUPPORTED_UNITY || NETFX_CORE + using Hashtable = ExitGames.Client.Photon.Hashtable; + using SupportClass = ExitGames.Client.Photon.SupportClass; + #endif + + + /// + /// A channel of communication in Photon Chat, updated by ChatClient and provided as READ ONLY. + /// + /// + /// Contains messages and senders to use (read!) and display by your GUI. + /// Access these by: + /// ChatClient.PublicChannels + /// ChatClient.PrivateChannels + /// + public class ChatChannel + { + /// Name of the channel (used to subscribe and unsubscribe). + public readonly string Name; + + /// Senders of messages in chronological order. Senders and Messages refer to each other by index. Senders[x] is the sender of Messages[x]. + public readonly List Senders = new List(); + + /// Messages in chronological order. Senders and Messages refer to each other by index. Senders[x] is the sender of Messages[x]. + public readonly List Messages = new List(); + + /// If greater than 0, this channel will limit the number of messages, that it caches locally. + public int MessageLimit; + + /// Unique channel ID. + public int ChannelID; + + /// Is this a private 1:1 channel? + public bool IsPrivate { get; protected internal set; } + + /// Count of messages this client still buffers/knows for this channel. + public int MessageCount { get { return this.Messages.Count; } } + + /// + /// ID of the last message received. + /// + public int LastMsgId { get; protected set; } + + private Dictionary properties; + + /// Whether or not this channel keeps track of the list of its subscribers. + public bool PublishSubscribers { get; protected set; } + + /// Maximum number of channel subscribers. 0 means infinite. + public int MaxSubscribers { get; protected set; } + + /// Subscribed users. + public readonly HashSet Subscribers = new HashSet(); + + /// Properties of subscribers + private Dictionary> usersProperties; + + /// Used internally to create new channels. This does NOT create a channel on the server! Use ChatClient.Subscribe. + public ChatChannel(string name) + { + this.Name = name; + } + + /// Used internally to add messages to this channel. + public void Add(string sender, object message, int msgId) + { + this.Senders.Add(sender); + this.Messages.Add(message); + this.LastMsgId = msgId; + this.TruncateMessages(); + } + + /// Used internally to add messages to this channel. + public void Add(string[] senders, object[] messages, int lastMsgId) + { + this.Senders.AddRange(senders); + this.Messages.AddRange(messages); + this.LastMsgId = lastMsgId; + this.TruncateMessages(); + } + + /// Reduces the number of locally cached messages in this channel to the MessageLimit (if set). + public void TruncateMessages() + { + if (this.MessageLimit <= 0 || this.Messages.Count <= this.MessageLimit) + { + return; + } + + int excessCount = this.Messages.Count - this.MessageLimit; + this.Senders.RemoveRange(0, excessCount); + this.Messages.RemoveRange(0, excessCount); + } + + /// Clear the local cache of messages currently stored. This frees memory but doesn't affect the server. + public void ClearMessages() + { + this.Senders.Clear(); + this.Messages.Clear(); + } + + /// Provides a string-representation of all messages in this channel. + /// All known messages in format "Sender: Message", line by line. + public string ToStringMessages() + { + StringBuilder txt = new StringBuilder(); + for (int i = 0; i < this.Messages.Count; i++) + { + txt.AppendLine(string.Format("{0}: {1}", this.Senders[i], this.Messages[i])); + } + return txt.ToString(); + } + + internal void ReadChannelProperties(Dictionary newProperties) + { + if (newProperties != null && newProperties.Count > 0) + { + if (this.properties == null) + { + this.properties = new Dictionary(newProperties.Count); + } + foreach (var pair in newProperties) + { + if (pair.Value == null) + { + this.properties.Remove(pair.Key); + } + else + { + this.properties[pair.Key] = pair.Value; + } + } + object temp; + if (this.properties.TryGetValue(ChannelWellKnownProperties.PublishSubscribers, out temp)) + { + this.PublishSubscribers = (bool)temp; + } + if (this.properties.TryGetValue(ChannelWellKnownProperties.MaxSubscribers, out temp)) + { + this.MaxSubscribers = (int)temp; + } + } + } + + internal bool AddSubscribers(string[] users) + { + if (users == null) + { + return false; + } + bool result = true; + for (int i = 0; i < users.Length; i++) + { + if (!this.Subscribers.Add(users[i])) + { + result = false; + } + } + return result; + } + + internal bool AddSubscriber(string userId) + { + return this.Subscribers.Add(userId); + } + + internal bool RemoveSubscriber(string userId) + { + if (this.usersProperties != null) + { + this.usersProperties.Remove(userId); + } + return this.Subscribers.Remove(userId); + } + + + #if CHAT_EXTENDED + internal void ReadUserProperties(string userId, Dictionary changedProperties) + { + if (this.usersProperties == null) + { + this.usersProperties = new Dictionary>(); + } + Dictionary userProperties; + if (!this.usersProperties.TryGetValue(userId, out userProperties)) + { + userProperties = new Dictionary(); + this.usersProperties.Add(userId, userProperties); + } + foreach (var property in changedProperties) + { + //UnityEngine.Debug.LogFormat("User {0} property {1} = {2}", userId, property.Key, property.Value); + if (property.Value == null) + { + userProperties.Remove(property.Key); + } + else + { + userProperties[property.Key] = property.Value; + } + } + } + + internal bool TryGetChannelProperty(object propertyKey, out T propertyValue) + { + propertyValue = default; + object temp; + if (properties != null && properties.TryGetValue(propertyKey, out temp) && temp is T) + { + propertyValue = (T)temp; + return true; + } + return false; + } + + internal bool TryGetUserProperty(string userId, object propertyKey, out T propertyValue) + { + propertyValue = default; + object temp; + Dictionary userProperties; + if (this.usersProperties != null && usersProperties.TryGetValue(userId, out userProperties) && userProperties.TryGetValue(propertyKey, out temp) && temp is T) + { + propertyValue = (T)temp; + return true; + } + return false; + } + + public bool TryGetCustomChannelProperty(string propertyKey, out T propertyValue) + { + return this.TryGetChannelProperty(propertyKey, out propertyValue); + } + + public bool TryGetCustomUserProperty(string userId, string propertyKey, out T propertyValue) + { + return this.TryGetUserProperty(userId, propertyKey, out propertyValue); + } + #endif + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Code/ChatChannel.cs.meta b/Assets/Photon/PhotonChat/Code/ChatChannel.cs.meta new file mode 100644 index 00000000..0d739656 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatChannel.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 35b2a4878e5e99e438c97fbe8dbbd863 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonChat/Code/ChatClient.cs b/Assets/Photon/PhotonChat/Code/ChatClient.cs new file mode 100644 index 00000000..c65cb3e0 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatClient.cs @@ -0,0 +1,1856 @@ +// ---------------------------------------------------------------------------------------------------------------------- +// The Photon Chat Api enables clients to connect to a chat server and communicate with other clients. +// ChatClient is the main class of this api. +// Photon Chat Api - Copyright (C) 2014 Exit Games GmbH +// ---------------------------------------------------------------------------------------------------------------------- + +#if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER +#define SUPPORTED_UNITY +#endif + +namespace Photon.Chat +{ + using System; + using System.Collections.Generic; + using System.Diagnostics; + using ExitGames.Client.Photon; + + #if SUPPORTED_UNITY || NETFX_CORE + using Hashtable = ExitGames.Client.Photon.Hashtable; + using SupportClass = ExitGames.Client.Photon.SupportClass; + #endif + + + /// Central class of the Photon Chat API to connect, handle channels and messages. + /// + /// This class must be instantiated with a IChatClientListener instance to get the callbacks. + /// Integrate it into your game loop by calling Service regularly. If the target platform supports Threads/Tasks, + /// set UseBackgroundWorkerForSending = true, to let the ChatClient keep the connection by sending from + /// an independent thread. + /// + /// Call Connect with an AppId that is setup as Photon Chat application. Note: Connect covers multiple + /// messages between this client and the servers. A short workflow will connect you to a chat server. + /// + /// Each ChatClient resembles a user in chat (set in Connect). Each user automatically subscribes a channel + /// for incoming private messages and can message any other user privately. + /// Before you publish messages in any non-private channel, that channel must be subscribed. + /// + /// PublicChannels is a list of subscribed channels, containing messages and senders. + /// PrivateChannels contains all incoming and sent private messages. + /// + public class ChatClient : IPhotonPeerListener + { + const int FriendRequestListMax = 1024; + + /// Default maximum value possible for when is enabled + public const int DefaultMaxSubscribers = 100; + + private const byte HttpForwardWebFlag = 0x01; + + /// Enables a fallback to another protocol in case a connect to the Name Server fails. + /// + /// When connecting to the Name Server fails for a first time, the client will select an alternative + /// network protocol and re-try to connect. + /// + /// The fallback will use the default Name Server port as defined by ProtocolToNameServerPort. + /// + /// The fallback for TCP is UDP. All other protocols fallback to TCP. + /// + public bool EnableProtocolFallback { get; set; } + + /// The address of last connected Name Server. + public string NameServerAddress { get; private set; } + + /// The address of the actual chat server assigned from NameServer. Public for read only. + public string FrontendAddress { get; private set; } + + /// Region used to connect to. Currently all chat is done in EU. It can make sense to use only one region for the whole game. + private string chatRegion = "EU"; + + /// Settable only before you connect! Defaults to "EU". + public string ChatRegion + { + get { return this.chatRegion; } + set { this.chatRegion = value; } + } + + /// + /// Defines a proxy URL for WebSocket connections. Can be the proxy or point to a .pac file. + /// + /// + /// This URL supports various definitions: + /// + /// "user:pass@proxyaddress:port"
+ /// "proxyaddress:port"
+ /// "system:"
+ /// "pac:"
+ /// "pac:http://host/path/pacfile.pac"
+ /// + /// Important: Don't define a protocol, except to point to a pac file. the proxy address should not begin with http:// or https://. + ///
+ public string ProxyServerAddress; + + /// Current state of the ChatClient. Also use CanChat. + public ChatState State { get; private set; } + + /// Disconnection cause. Check this inside . + public ChatDisconnectCause DisconnectedCause { get; private set; } + /// + /// Checks if this client is ready to send messages. + /// + public bool CanChat + { + get { return this.State == ChatState.ConnectedToFrontEnd && this.HasPeer; } + } + /// + /// Checks if this client is ready to publish messages inside a public channel. + /// + /// The channel to do the check with. + /// Whether or not this client is ready to publish messages inside the public channel with the specified channelName. + public bool CanChatInChannel(string channelName) + { + return this.CanChat && this.PublicChannels.ContainsKey(channelName) && !this.PublicChannelsUnsubscribing.Contains(channelName); + } + + private bool HasPeer + { + get { return this.chatPeer != null; } + } + + /// The version of your client. A new version also creates a new "virtual app" to separate players from older client versions. + public string AppVersion { get; private set; } + + /// The AppID as assigned from the Photon Cloud. + public string AppId { get; private set; } + + + /// Settable only before you connect! + public AuthenticationValues AuthValues { get; set; } + + /// The unique ID of a user/person, stored in AuthValues.UserId. Set it before you connect. + /// + /// This value wraps AuthValues.UserId. + /// It's not a nickname and we assume users with the same userID are the same person. + public string UserId + { + get + { + return (this.AuthValues != null) ? this.AuthValues.UserId : null; + } + private set + { + if (this.AuthValues == null) + { + this.AuthValues = new AuthenticationValues(); + } + this.AuthValues.UserId = value; + } + } + + /// If greater than 0, new channels will limit the number of messages they cache locally. + /// + /// This can be useful to limit the amount of memory used by chats. + /// You can set a MessageLimit per channel but this value gets applied to new ones. + /// + /// Note: + /// Changing this value, does not affect ChatChannels that are already in use! + /// + public int MessageLimit; + + /// Limits the number of messages from private channel histories. + /// + /// This is applied to all private channels on reconnect, as there is no explicit re-joining private channels.
+ /// Default is -1, which gets available messages up to a maximum set by the server.
+ /// A value of 0 gets you zero messages.
+ /// The server's limit of messages may be lower. If so, the server's value will overrule this.
+ ///
+ public int PrivateChatHistoryLength = -1; + + /// Public channels this client is subscribed to. + public readonly Dictionary PublicChannels; + /// Private channels in which this client has exchanged messages. + public readonly Dictionary PrivateChannels; + + // channels being in unsubscribing process + // items will be removed on successful unsubscription or subscription (the latter required after attempt to unsubscribe from not existing channel) + private readonly HashSet PublicChannelsUnsubscribing; + + private readonly IChatClientListener listener = null; + /// The Chat Peer used by this client. + public ChatPeer chatPeer = null; + private const string ChatAppName = "chat"; + private bool didAuthenticate; + + private int? statusToSetWhenConnected; + private object messageToSetWhenConnected; + + private int msDeltaForServiceCalls = 50; + private int msTimestampOfLastServiceCall; + + /// Defines if a background thread will call SendOutgoingCommands, while your code calls Service to dispatch received messages. + /// + /// The benefit of using a background thread to call SendOutgoingCommands is this: + /// + /// Even if your game logic is being paused, the background thread will keep the connection to the server up. + /// On a lower level, acknowledgements and pings will prevent a server-side timeout while (e.g.) Unity loads assets. + /// + /// Your game logic still has to call Service regularly, or else incoming messages are not dispatched. + /// As this typically triggers UI updates, it's easier to call Service from the main/UI thread. + /// + public bool UseBackgroundWorkerForSending { get; set; } + + /// Exposes the TransportProtocol of the used PhotonPeer. Settable while not connected. + public ConnectionProtocol TransportProtocol + { + get { return this.chatPeer.TransportProtocol; } + set + { + if (this.chatPeer == null || this.chatPeer.PeerState != PeerStateValue.Disconnected) + { + this.listener.DebugReturn(DebugLevel.WARNING, "Can't set TransportProtocol. Disconnect first! " + ((this.chatPeer != null) ? "PeerState: " + this.chatPeer.PeerState : "The chatPeer is null.")); + return; + } + this.chatPeer.TransportProtocol = value; + } + } + + /// Defines which IPhotonSocket class to use per ConnectionProtocol. + /// + /// Several platforms have special Socket implementations and slightly different APIs. + /// To accomodate this, switching the socket implementation for a network protocol was made available. + /// By default, UDP and TCP have socket implementations assigned. + /// + /// You only need to set the SocketImplementationConfig once, after creating a PhotonPeer + /// and before connecting. If you switch the TransportProtocol, the correct implementation is being used. + /// + public Dictionary SocketImplementationConfig + { + get { return this.chatPeer.SocketImplementationConfig; } + } + + /// + /// Chat client constructor. + /// + /// The chat listener implementation. + /// Connection protocol to be used by this client. Default is . + public ChatClient(IChatClientListener listener, ConnectionProtocol protocol = ConnectionProtocol.Udp) + { + this.listener = listener; + this.State = ChatState.Uninitialized; + + this.chatPeer = new ChatPeer(this, protocol); + this.chatPeer.SerializationProtocolType = SerializationProtocol.GpBinaryV18; + + this.PublicChannels = new Dictionary(); + this.PrivateChannels = new Dictionary(); + + this.PublicChannelsUnsubscribing = new HashSet(); + } + + + public bool ConnectUsingSettings(ChatAppSettings appSettings) + { + if (appSettings == null) + { + this.listener.DebugReturn(DebugLevel.ERROR, "ConnectUsingSettings failed. The appSettings can't be null.'"); + return false; + } + + if (!string.IsNullOrEmpty(appSettings.FixedRegion)) + { + this.ChatRegion = appSettings.FixedRegion; + } + + this.DebugOut = appSettings.NetworkLogging; + + this.TransportProtocol = appSettings.Protocol; + this.EnableProtocolFallback = appSettings.EnableProtocolFallback; + + if (!appSettings.IsDefaultNameServer) + { + this.chatPeer.NameServerHost = appSettings.Server; + this.chatPeer.NameServerPortOverride = appSettings.Port; + } + + this.ProxyServerAddress = appSettings.ProxyServer; + + return this.Connect(appSettings.AppIdChat, appSettings.AppVersion, this.AuthValues); + } + + /// + /// Connects this client to the Photon Chat Cloud service, which will also authenticate the user (and set a UserId). + /// + /// + /// The ProxyServerAddress is used to connect. Set it before calling this method or use ConnectUsingSettings. + /// + /// Get your Photon Chat AppId from the Dashboard. + /// Any version string you make up. Used to separate users and variants of your clients, which might be incompatible. + /// Values for authentication. You can leave this null, if you set a UserId before. If you set authValues, they will override any UserId set before. + /// + public bool Connect(string appId, string appVersion, AuthenticationValues authValues) + { + this.chatPeer.TimePingInterval = 3000; + this.DisconnectedCause = ChatDisconnectCause.None; + + if (authValues != null) + { + this.AuthValues = authValues; + } + + this.AppId = appId; + this.AppVersion = appVersion; + this.didAuthenticate = false; + this.chatPeer.QuickResendAttempts = 2; + this.chatPeer.SentCountAllowance = 7; + + // clean all channels + this.PublicChannels.Clear(); + this.PrivateChannels.Clear(); + this.PublicChannelsUnsubscribing.Clear(); + + #if UNITY_WEBGL + if (this.TransportProtocol == ConnectionProtocol.Tcp || this.TransportProtocol == ConnectionProtocol.Udp) + { + this.listener.DebugReturn(DebugLevel.WARNING, "WebGL requires WebSockets. Switching TransportProtocol to WebSocketSecure."); + this.TransportProtocol = ConnectionProtocol.WebSocketSecure; + } + #endif + + this.NameServerAddress = this.chatPeer.NameServerAddress; + + bool isConnecting = this.chatPeer.Connect(this.NameServerAddress, this.ProxyServerAddress, "NameServer", null); + if (isConnecting) + { + this.State = ChatState.ConnectingToNameServer; + } + + if (this.UseBackgroundWorkerForSending) + { + #if UNITY_SWITCH + SupportClass.StartBackgroundCalls(this.SendOutgoingInBackground, this.msDeltaForServiceCalls); // as workaround, we don't name the Thread. + #else + SupportClass.StartBackgroundCalls(this.SendOutgoingInBackground, this.msDeltaForServiceCalls, "ChatClient Service Thread"); + #endif + } + + return isConnecting; + } + + /// + /// Connects this client to the Photon Chat Cloud service, which will also authenticate the user (and set a UserId). + /// This also sets an online status once connected. By default it will set user status to . + /// See for more information. + /// + /// Get your Photon Chat AppId from the Dashboard. + /// Any version string you make up. Used to separate users and variants of your clients, which might be incompatible. + /// Values for authentication. You can leave this null, if you set a UserId before. If you set authValues, they will override any UserId set before. + /// User status to set when connected. Predefined states are in class . Other values can be used at will. + /// Optional status Also sets a status-message which your friends can get. + /// If the connection attempt could be sent at all. + public bool ConnectAndSetStatus(string appId, string appVersion, AuthenticationValues authValues, + int status = ChatUserStatus.Online, object message = null) + { + statusToSetWhenConnected = status; + messageToSetWhenConnected = message; + return Connect(appId, appVersion, authValues); + } + + /// + /// Must be called regularly to keep connection between client and server alive and to process incoming messages. + /// + /// + /// This method limits the effort it does automatically using the private variable msDeltaForServiceCalls. + /// That value is lower for connect and multiplied by 4 when chat-server connection is ready. + /// + public void Service() + { + // Dispatch until every already-received message got dispatched + while (this.HasPeer && this.chatPeer.DispatchIncomingCommands()) + { + } + + // if there is no background thread for sending, Service() will do that as well, in intervals + if (!this.UseBackgroundWorkerForSending) + { + if (Environment.TickCount - this.msTimestampOfLastServiceCall > this.msDeltaForServiceCalls || this.msTimestampOfLastServiceCall == 0) + { + this.msTimestampOfLastServiceCall = Environment.TickCount; + + while (this.HasPeer && this.chatPeer.SendOutgoingCommands()) + { + } + } + } + } + + /// + /// Called by a separate thread, this sends outgoing commands of this peer, as long as it's connected. + /// + /// True as long as the client is not disconnected. + private bool SendOutgoingInBackground() + { + while (this.HasPeer && this.chatPeer.SendOutgoingCommands()) + { + } + + return this.State != ChatState.Disconnected; + } + + /// Obsolete: Better use UseBackgroundWorkerForSending and Service(). + [Obsolete("Better use UseBackgroundWorkerForSending and Service().")] + public void SendAcksOnly() + { + if (this.HasPeer) this.chatPeer.SendAcksOnly(); + } + + + /// + /// Disconnects from the Chat Server by sending a "disconnect command", which prevents a timeout server-side. + /// + public void Disconnect(ChatDisconnectCause cause = ChatDisconnectCause.DisconnectByClientLogic) + { + if (this.HasPeer && this.chatPeer.PeerState != PeerStateValue.Disconnected) + { + this.State = ChatState.Disconnecting; + this.DisconnectedCause = cause; + this.chatPeer.Disconnect(); + } + } + + /// + /// Locally shuts down the connection to the Chat Server. This resets states locally but the server will have to timeout this peer. + /// + public void StopThread() + { + if (this.HasPeer) + { + this.chatPeer.StopThread(); + } + } + + /// Sends operation to subscribe to a list of channels by name. + /// List of channels to subscribe to. Avoid null or empty values. + /// If the operation could be sent at all (Example: Fails if not connected to Chat Server). + public bool Subscribe(string[] channels) + { + return this.Subscribe(channels, 0); + } + + /// + /// Sends operation to subscribe to a list of channels by name and possibly retrieve messages we did not receive while unsubscribed. + /// + /// List of channels to subscribe to. Avoid null or empty values. + /// ID of last message received per channel. Useful when re subscribing to receive only messages we missed. + /// If the operation could be sent at all (Example: Fails if not connected to Chat Server). + public bool Subscribe(string[] channels, int[] lastMsgIds) + { + if (!this.CanChat) + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, "Subscribe called while not connected to front end server."); + } + return false; + } + + if (channels == null || channels.Length == 0) + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, "Subscribe can't be called for empty or null channels-list."); + } + return false; + } + + for (int i = 0; i < channels.Length; i++) + { + if (string.IsNullOrEmpty(channels[i])) + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, string.Format("Subscribe can't be called with a null or empty channel name at index {0}.", i)); + } + return false; + } + } + + if (lastMsgIds == null || lastMsgIds.Length != channels.Length) + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, "Subscribe can't be called when \"lastMsgIds\" array is null or does not have the same length as \"channels\" array."); + } + return false; + } + + Dictionary opParameters = new Dictionary + { + { ChatParameterCode.Channels, channels }, + { ChatParameterCode.MsgIds, lastMsgIds}, + { ChatParameterCode.HistoryLength, -1 } // server will decide how many messages to send to client + }; + + return this.chatPeer.SendOperation(ChatOperationCode.Subscribe, opParameters, SendOptions.SendReliable); + } + + /// + /// Sends operation to subscribe client to channels, optionally fetching a number of messages from the cache. + /// + /// + /// Subscribes channels will forward new messages to this user. Use PublishMessage to do so. + /// The messages cache is limited but can be useful to get into ongoing conversations, if that's needed. + /// + /// List of channels to subscribe to. Avoid null or empty values. + /// 0: no history. 1 and higher: number of messages in history. -1: all available history. + /// If the operation could be sent at all (Example: Fails if not connected to Chat Server). + public bool Subscribe(string[] channels, int messagesFromHistory) + { + if (!this.CanChat) + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, "Subscribe called while not connected to front end server."); + } + return false; + } + + if (channels == null || channels.Length == 0) + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, "Subscribe can't be called for empty or null channels-list."); + } + return false; + } + + return this.SendChannelOperation(channels, (byte)ChatOperationCode.Subscribe, messagesFromHistory); + } + + /// Unsubscribes from a list of channels, which stops getting messages from those. + /// + /// The client will remove these channels from the PublicChannels dictionary once the server sent a response to this request. + /// + /// The request will be sent to the server and IChatClientListener.OnUnsubscribed gets called when the server + /// actually removed the channel subscriptions. + /// + /// Unsubscribe will fail if you include null or empty channel names. + /// + /// Names of channels to unsubscribe. + /// False, if not connected to a chat server. + public bool Unsubscribe(string[] channels) + { + if (!this.CanChat) + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, "Unsubscribe called while not connected to front end server."); + } + return false; + } + + if (channels == null || channels.Length == 0) + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, "Unsubscribe can't be called for empty or null channels-list."); + } + return false; + } + + foreach (string ch in channels) + { + this.PublicChannelsUnsubscribing.Add(ch); + } + return this.SendChannelOperation(channels, ChatOperationCode.Unsubscribe, 0); + } + + /// Sends a message to a public channel which this client subscribed to. + /// + /// Before you publish to a channel, you have to subscribe it. + /// Everyone in that channel will get the message. + /// + /// Name of the channel to publish to. + /// Your message (string or any serializable data). + /// Optionally, public messages can be forwarded as webhooks. Configure webhooks for your Chat app to use this. + /// False if the client is not yet ready to send messages. + public bool PublishMessage(string channelName, object message, bool forwardAsWebhook = false) + { + return this.publishMessage(channelName, message, true, forwardAsWebhook); + } + + internal bool PublishMessageUnreliable(string channelName, object message, bool forwardAsWebhook = false) + { + return this.publishMessage(channelName, message, false, forwardAsWebhook); + } + + private bool publishMessage(string channelName, object message, bool reliable, bool forwardAsWebhook = false) + { + if (!this.CanChat) + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, "PublishMessage called while not connected to front end server."); + } + return false; + } + + if (string.IsNullOrEmpty(channelName) || message == null) + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, "PublishMessage parameters must be non-null and not empty."); + } + return false; + } + + Dictionary parameters = new Dictionary + { + { (byte)ChatParameterCode.Channel, channelName }, + { (byte)ChatParameterCode.Message, message } + }; + if (forwardAsWebhook) + { + parameters.Add(ChatParameterCode.WebFlags, (byte)0x1); + } + + return this.chatPeer.SendOperation(ChatOperationCode.Publish, parameters, new SendOptions() { Reliability = reliable }); + } + + /// + /// Sends a private message to a single target user. Calls OnPrivateMessage on the receiving client. + /// + /// Username to send this message to. + /// The message you want to send. Can be a simple string or anything serializable. + /// Optionally, private messages can be forwarded as webhooks. Configure webhooks for your Chat app to use this. + /// True if this clients can send the message to the server. + public bool SendPrivateMessage(string target, object message, bool forwardAsWebhook = false) + { + return this.SendPrivateMessage(target, message, false, forwardAsWebhook); + } + + /// + /// Sends a private message to a single target user. Calls OnPrivateMessage on the receiving client. + /// + /// Username to send this message to. + /// The message you want to send. Can be a simple string or anything serializable. + /// Optionally, private messages can be encrypted. Encryption is not end-to-end as the server decrypts the message. + /// Optionally, private messages can be forwarded as webhooks. Configure webhooks for your Chat app to use this. + /// True if this clients can send the message to the server. + public bool SendPrivateMessage(string target, object message, bool encrypt, bool forwardAsWebhook) + { + return this.sendPrivateMessage(target, message, encrypt, true, forwardAsWebhook); + } + + internal bool SendPrivateMessageUnreliable(string target, object message, bool encrypt, bool forwardAsWebhook = false) + { + return this.sendPrivateMessage(target, message, encrypt, false, forwardAsWebhook); + } + + private bool sendPrivateMessage(string target, object message, bool encrypt, bool reliable, bool forwardAsWebhook = false) + { + if (!this.CanChat) + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, "SendPrivateMessage called while not connected to front end server."); + } + return false; + } + + if (string.IsNullOrEmpty(target) || message == null) + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, "SendPrivateMessage parameters must be non-null and not empty."); + } + return false; + } + + Dictionary parameters = new Dictionary + { + { ChatParameterCode.UserId, target }, + { ChatParameterCode.Message, message } + }; + if (forwardAsWebhook) + { + parameters.Add(ChatParameterCode.WebFlags, (byte)0x1); + } + + return this.chatPeer.SendOperation(ChatOperationCode.SendPrivate, parameters, new SendOptions() { Reliability = reliable, Encrypt = encrypt }); + } + + /// Sets the user's status (pre-defined or custom) and an optional message. + /// + /// The predefined status values can be found in class ChatUserStatus. + /// State ChatUserStatus.Invisible will make you offline for everyone and send no message. + /// + /// You can set custom values in the status integer. Aside from the pre-configured ones, + /// all states will be considered visible and online. Else, no one would see the custom state. + /// + /// The message object can be anything that Photon can serialize, including (but not limited to) + /// Hashtable, object[] and string. This value is defined by your own conventions. + /// + /// Predefined states are in class ChatUserStatus. Other values can be used at will. + /// Optional string message or null. + /// If true, the message gets ignored. It can be null but won't replace any current message. + /// True if the operation gets called on the server. + private bool SetOnlineStatus(int status, object message, bool skipMessage) + { + if (!this.CanChat) + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, "SetOnlineStatus called while not connected to front end server."); + } + return false; + } + + Dictionary parameters = new Dictionary + { + { ChatParameterCode.Status, status }, + }; + + if (skipMessage) + { + parameters[ChatParameterCode.SkipMessage] = true; + } + else + { + parameters[ChatParameterCode.Message] = message; + } + + return this.chatPeer.SendOperation(ChatOperationCode.UpdateStatus, parameters, SendOptions.SendReliable); + } + + /// Sets the user's status without changing your status-message. + /// + /// The predefined status values can be found in class ChatUserStatus. + /// State ChatUserStatus.Invisible will make you offline for everyone and send no message. + /// + /// You can set custom values in the status integer. Aside from the pre-configured ones, + /// all states will be considered visible and online. Else, no one would see the custom state. + /// + /// This overload does not change the set message. + /// + /// Predefined states are in class ChatUserStatus. Other values can be used at will. + /// True if the operation gets called on the server. + public bool SetOnlineStatus(int status) + { + return this.SetOnlineStatus(status, null, true); + } + + /// Sets the user's status without changing your status-message. + /// + /// The predefined status values can be found in class ChatUserStatus. + /// State ChatUserStatus.Invisible will make you offline for everyone and send no message. + /// + /// You can set custom values in the status integer. Aside from the pre-configured ones, + /// all states will be considered visible and online. Else, no one would see the custom state. + /// + /// The message object can be anything that Photon can serialize, including (but not limited to) + /// Hashtable, object[] and string. This value is defined by your own conventions. + /// + /// Predefined states are in class ChatUserStatus. Other values can be used at will. + /// Also sets a status-message which your friends can get. + /// True if the operation gets called on the server. + public bool SetOnlineStatus(int status, object message) + { + return this.SetOnlineStatus(status, message, false); + } + + /// + /// Adds friends to a list on the Chat Server which will send you status updates for those. + /// + /// + /// AddFriends and RemoveFriends enable clients to handle their friend list + /// in the Photon Chat server. Having users on your friends list gives you access + /// to their current online status (and whatever info your client sets in it). + /// + /// Each user can set an online status consisting of an integer and an arbitrary + /// (serializable) object. The object can be null, Hashtable, object[] or anything + /// else Photon can serialize. + /// + /// The status is published automatically to friends (anyone who set your user ID + /// with AddFriends). + /// + /// Photon flushes friends-list when a chat client disconnects, so it has to be + /// set each time. If your community API gives you access to online status already, + /// you could filter and set online friends in AddFriends. + /// + /// Actual friend relations are not persistent and have to be stored outside + /// of Photon. + /// + /// Array of friend userIds. + /// If the operation could be sent. + public bool AddFriends(string[] friends) + { + if (!this.CanChat) + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, "AddFriends called while not connected to front end server."); + } + return false; + } + + if (friends == null || friends.Length == 0) + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, "AddFriends can't be called for empty or null list."); + } + return false; + } + if (friends.Length > FriendRequestListMax) + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, "AddFriends max list size exceeded: " + friends.Length + " > " + FriendRequestListMax); + } + return false; + } + + Dictionary parameters = new Dictionary + { + { ChatParameterCode.Friends, friends }, + }; + + return this.chatPeer.SendOperation(ChatOperationCode.AddFriends, parameters, SendOptions.SendReliable); + } + + /// + /// Removes the provided entries from the list on the Chat Server and stops their status updates. + /// + /// + /// Photon flushes friends-list when a chat client disconnects. Unless you want to + /// remove individual entries, you don't have to RemoveFriends. + /// + /// AddFriends and RemoveFriends enable clients to handle their friend list + /// in the Photon Chat server. Having users on your friends list gives you access + /// to their current online status (and whatever info your client sets in it). + /// + /// Each user can set an online status consisting of an integer and an arbitratry + /// (serializable) object. The object can be null, Hashtable, object[] or anything + /// else Photon can serialize. + /// + /// The status is published automatically to friends (anyone who set your user ID + /// with AddFriends). + /// + /// Photon flushes friends-list when a chat client disconnects, so it has to be + /// set each time. If your community API gives you access to online status already, + /// you could filter and set online friends in AddFriends. + /// + /// Actual friend relations are not persistent and have to be stored outside + /// of Photon. + /// + /// AddFriends and RemoveFriends enable clients to handle their friend list + /// in the Photon Chat server. Having users on your friends list gives you access + /// to their current online status (and whatever info your client sets in it). + /// + /// Each user can set an online status consisting of an integer and an arbitratry + /// (serializable) object. The object can be null, Hashtable, object[] or anything + /// else Photon can serialize. + /// + /// The status is published automatically to friends (anyone who set your user ID + /// with AddFriends). + /// + /// + /// Actual friend relations are not persistent and have to be stored outside + /// of Photon. + /// + /// Array of friend userIds. + /// If the operation could be sent. + public bool RemoveFriends(string[] friends) + { + if (!this.CanChat) + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, "RemoveFriends called while not connected to front end server."); + } + return false; + } + + if (friends == null || friends.Length == 0) + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, "RemoveFriends can't be called for empty or null list."); + } + return false; + } + if (friends.Length > FriendRequestListMax) + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, "RemoveFriends max list size exceeded: " + friends.Length + " > " + FriendRequestListMax); + } + return false; + } + + Dictionary parameters = new Dictionary + { + { ChatParameterCode.Friends, friends }, + }; + + return this.chatPeer.SendOperation(ChatOperationCode.RemoveFriends, parameters, SendOptions.SendReliable); + } + + /// + /// Get you the (locally used) channel name for the chat between this client and another user. + /// + /// Remote user's name or UserId. + /// The (locally used) channel name for a private channel. + /// Do not subscribe to this channel. + /// Private channels do not need to be explicitly subscribed to. + /// Use this for debugging purposes mainly. + public string GetPrivateChannelNameByUser(string userName) + { + return string.Format("{0}:{1}", this.UserId, userName); + } + + /// + /// Simplified access to either private or public channels by name. + /// + /// Name of the channel to get. For private channels, the channel-name is composed of both user's names. + /// Define if you expect a private or public channel. + /// Out parameter gives you the found channel, if any. + /// True if the channel was found. + /// Public channels exist only when subscribed to them. + /// Private channels exist only when at least one message is exchanged with the target user privately. + public bool TryGetChannel(string channelName, bool isPrivate, out ChatChannel channel) + { + if (!isPrivate) + { + return this.PublicChannels.TryGetValue(channelName, out channel); + } + else + { + return this.PrivateChannels.TryGetValue(channelName, out channel); + } + } + + /// + /// Simplified access to all channels by name. Checks public channels first, then private ones. + /// + /// Name of the channel to get. + /// Out parameter gives you the found channel, if any. + /// True if the channel was found. + /// Public channels exist only when subscribed to them. + /// Private channels exist only when at least one message is exchanged with the target user privately. + public bool TryGetChannel(string channelName, out ChatChannel channel) + { + bool found = false; + found = this.PublicChannels.TryGetValue(channelName, out channel); + if (found) return true; + + found = this.PrivateChannels.TryGetValue(channelName, out channel); + return found; + } + + /// + /// Simplified access to private channels by target user. + /// + /// UserId of the target user in the private channel. + /// Out parameter gives you the found channel, if any. + /// True if the channel was found. + public bool TryGetPrivateChannelByUser(string userId, out ChatChannel channel) + { + channel = null; + if (string.IsNullOrEmpty(userId)) + { + return false; + } + string channelName = this.GetPrivateChannelNameByUser(userId); + return this.TryGetChannel(channelName, true, out channel); + } + + /// + /// Sets the level (and amount) of debug output provided by the library. + /// + /// + /// This affects the callbacks to IChatClientListener.DebugReturn. + /// Default Level: Error. + /// + public DebugLevel DebugOut + { + set { this.chatPeer.DebugOut = value; } + get { return this.chatPeer.DebugOut; } + } + + #region Private methods area + + #region IPhotonPeerListener implementation + + void IPhotonPeerListener.DebugReturn(DebugLevel level, string message) + { + this.listener.DebugReturn(level, message); + } + + void IPhotonPeerListener.OnEvent(EventData eventData) + { + switch (eventData.Code) + { + case ChatEventCode.ChatMessages: + this.HandleChatMessagesEvent(eventData); + break; + case ChatEventCode.PrivateMessage: + this.HandlePrivateMessageEvent(eventData); + break; + case ChatEventCode.StatusUpdate: + this.HandleStatusUpdate(eventData); + break; + case ChatEventCode.Subscribe: + this.HandleSubscribeEvent(eventData); + break; + case ChatEventCode.Unsubscribe: + this.HandleUnsubscribeEvent(eventData); + break; + case ChatEventCode.UserSubscribed: + this.HandleUserSubscribedEvent(eventData); + break; + case ChatEventCode.UserUnsubscribed: + this.HandleUserUnsubscribedEvent(eventData); + break; + #if CHAT_EXTENDED + case ChatEventCode.PropertiesChanged: + this.HandlePropertiesChanged(eventData); + break; + case ChatEventCode.ErrorInfo: + this.HandleErrorInfoEvent(eventData); + break; + #endif + } + } + + void IPhotonPeerListener.OnOperationResponse(OperationResponse operationResponse) + { + switch (operationResponse.OperationCode) + { + case (byte)ChatOperationCode.Authenticate: + this.HandleAuthResponse(operationResponse); + break; + + // the following operations usually don't return useful data and no error. + case (byte)ChatOperationCode.Subscribe: + case (byte)ChatOperationCode.Unsubscribe: + case (byte)ChatOperationCode.Publish: + case (byte)ChatOperationCode.SendPrivate: + default: + if ((operationResponse.ReturnCode != 0) && (this.DebugOut >= DebugLevel.ERROR)) + { + if (operationResponse.ReturnCode == -2) + { + this.listener.DebugReturn(DebugLevel.ERROR, string.Format("Chat Operation {0} unknown on server. Check your AppId and make sure it's for a Chat application.", operationResponse.OperationCode)); + } + else + { + this.listener.DebugReturn(DebugLevel.ERROR, string.Format("Chat Operation {0} failed (Code: {1}). Debug Message: {2}", operationResponse.OperationCode, operationResponse.ReturnCode, operationResponse.DebugMessage)); + } + } + break; + } + } + + void IPhotonPeerListener.OnStatusChanged(StatusCode statusCode) + { + switch (statusCode) + { + case StatusCode.Connect: + if (!this.chatPeer.IsProtocolSecure) + { + if (!this.chatPeer.EstablishEncryption()) + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, "Error establishing encryption"); + } + } + } + else + { + this.TryAuthenticateOnNameServer(); + } + + if (this.State == ChatState.ConnectingToNameServer) + { + this.State = ChatState.ConnectedToNameServer; + this.listener.OnChatStateChange(this.State); + } + else if (this.State == ChatState.ConnectingToFrontEnd) + { + if (!this.AuthenticateOnFrontEnd()) + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, string.Format("Error authenticating on frontend! Check log output, AuthValues and if you're connected. State: {0}", this.State)); + } + } + } + break; + case StatusCode.EncryptionEstablished: + // once encryption is available, the client should send one (secure) authenticate. it includes the AppId (which identifies your app on the Photon Cloud) + this.TryAuthenticateOnNameServer(); + break; + case StatusCode.Disconnect: + switch (this.State) + { + case ChatState.ConnectWithFallbackProtocol: + this.EnableProtocolFallback = false; // the client does a fallback only one time + this.chatPeer.NameServerPortOverride = 0; // resets a value in the peer only (as we change the protocol, the port has to change, too) + this.chatPeer.TransportProtocol = (this.chatPeer.TransportProtocol == ConnectionProtocol.Tcp) ? ConnectionProtocol.Udp : ConnectionProtocol.Tcp; + this.Connect(this.AppId, this.AppVersion, null); + + // the client now has to return, instead of break, to avoid further processing of the disconnect call + return; + + case ChatState.Authenticated: + this.ConnectToFrontEnd(); + // client disconnected from nameserver after authentication + // to switch to frontend + return; + case ChatState.Disconnecting: + // expected disconnect + break; + default: + // unexpected disconnect, we log warning and stacktrace + string stacktrace = string.Empty; + #if DEBUG && !NETFX_CORE + stacktrace = new System.Diagnostics.StackTrace(true).ToString(); + #endif + this.listener.DebugReturn(DebugLevel.WARNING, string.Format("Got a unexpected Disconnect in ChatState: {0}. Server: {1} Trace: {2}", this.State, this.chatPeer.ServerAddress, stacktrace)); + break; + } + if (this.AuthValues != null) + { + this.AuthValues.Token = null; // when leaving the server, invalidate the secret (but not the auth values) + } + this.State = ChatState.Disconnected; + this.listener.OnChatStateChange(ChatState.Disconnected); + this.listener.OnDisconnected(); + break; + case StatusCode.DisconnectByServerUserLimit: + this.listener.DebugReturn(DebugLevel.ERROR, "This connection was rejected due to the apps CCU limit."); + this.Disconnect(ChatDisconnectCause.MaxCcuReached); + break; + case StatusCode.ExceptionOnConnect: + case StatusCode.SecurityExceptionOnConnect: + case StatusCode.EncryptionFailedToEstablish: + this.DisconnectedCause = ChatDisconnectCause.ExceptionOnConnect; + + // if enabled, the client can attempt to connect with another networking-protocol to check if that connects + if (this.EnableProtocolFallback && this.State == ChatState.ConnectingToNameServer) + { + this.State = ChatState.ConnectWithFallbackProtocol; + } + else + { + this.Disconnect(ChatDisconnectCause.ExceptionOnConnect); + } + + break; + case StatusCode.Exception: + case StatusCode.ExceptionOnReceive: + this.Disconnect(ChatDisconnectCause.Exception); + break; + case StatusCode.DisconnectByServerTimeout: + this.Disconnect(ChatDisconnectCause.ServerTimeout); + break; + case StatusCode.DisconnectByServerLogic: + this.Disconnect(ChatDisconnectCause.DisconnectByServerLogic); + break; + case StatusCode.DisconnectByServerReasonUnknown: + this.Disconnect(ChatDisconnectCause.DisconnectByServerReasonUnknown); + break; + case StatusCode.TimeoutDisconnect: + this.DisconnectedCause = ChatDisconnectCause.ClientTimeout; + + // if enabled, the client can attempt to connect with another networking-protocol to check if that connects + if (this.EnableProtocolFallback && this.State == ChatState.ConnectingToNameServer) + { + this.State = ChatState.ConnectWithFallbackProtocol; + } + else + { + this.Disconnect(ChatDisconnectCause.ClientTimeout); + } + break; + } + } + + #if SDK_V4 + void IPhotonPeerListener.OnMessage(object msg) + { + string channelName = null; + var receivedBytes = (byte[])msg; + var channelId = BitConverter.ToInt32(receivedBytes, 0); + var messageBytes = new byte[receivedBytes.Length - 4]; + Array.Copy(receivedBytes, 4, messageBytes, 0, receivedBytes.Length - 4); + + foreach (var channel in this.PublicChannels) + { + if (channel.Value.ChannelID == channelId) + { + channelName = channel.Key; + break; + } + } + + if (channelName != null) + { + this.listener.DebugReturn(DebugLevel.ALL, string.Format("got OnMessage in channel {0}", channelName)); + } + else + { + this.listener.DebugReturn(DebugLevel.WARNING, string.Format("got OnMessage in unknown channel {0}", channelId)); + } + + this.listener.OnReceiveBroadcastMessage(channelName, messageBytes); + } + #endif + + #endregion + + private void TryAuthenticateOnNameServer() + { + if (!this.didAuthenticate) + { + this.didAuthenticate = this.chatPeer.AuthenticateOnNameServer(this.AppId, this.AppVersion, this.ChatRegion, this.AuthValues); + if (!this.didAuthenticate) + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, string.Format("Error calling OpAuthenticate! Did not work on NameServer. Check log output, AuthValues and if you're connected. State: {0}", this.State)); + } + } + } + } + + private bool SendChannelOperation(string[] channels, byte operation, int historyLength) + { + Dictionary opParameters = new Dictionary { { (byte)ChatParameterCode.Channels, channels } }; + + if (historyLength != 0) + { + opParameters.Add((byte)ChatParameterCode.HistoryLength, historyLength); + } + + return this.chatPeer.SendOperation(operation, opParameters, SendOptions.SendReliable); + } + + private void HandlePrivateMessageEvent(EventData eventData) + { + //Console.WriteLine(SupportClass.DictionaryToString(eventData.Parameters)); + + object message = (object)eventData.Parameters[(byte)ChatParameterCode.Message]; + string sender = (string)eventData.Parameters[(byte)ChatParameterCode.Sender]; + int msgId = (int)eventData.Parameters[ChatParameterCode.MsgId]; + + string channelName; + if (this.UserId != null && this.UserId.Equals(sender)) + { + string target = (string)eventData.Parameters[(byte)ChatParameterCode.UserId]; + channelName = this.GetPrivateChannelNameByUser(target); + } + else + { + channelName = this.GetPrivateChannelNameByUser(sender); + } + + ChatChannel channel; + if (!this.PrivateChannels.TryGetValue(channelName, out channel)) + { + channel = new ChatChannel(channelName); + channel.IsPrivate = true; + channel.MessageLimit = this.MessageLimit; + this.PrivateChannels.Add(channel.Name, channel); + } + + channel.Add(sender, message, msgId); + this.listener.OnPrivateMessage(sender, message, channelName); + } + + private void HandleChatMessagesEvent(EventData eventData) + { + object[] messages = (object[])eventData.Parameters[(byte)ChatParameterCode.Messages]; + string[] senders = (string[])eventData.Parameters[(byte)ChatParameterCode.Senders]; + string channelName = (string)eventData.Parameters[(byte)ChatParameterCode.Channel]; + int lastMsgId = (int)eventData.Parameters[ChatParameterCode.MsgId]; + + ChatChannel channel; + if (!this.PublicChannels.TryGetValue(channelName, out channel)) + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, "Channel " + channelName + " for incoming message event not found."); + } + return; + } + + channel.Add(senders, messages, lastMsgId); + this.listener.OnGetMessages(channelName, senders, messages); + } + + private void HandleSubscribeEvent(EventData eventData) + { + string[] channelsInResponse = (string[])eventData.Parameters[ChatParameterCode.Channels]; + bool[] results = (bool[])eventData.Parameters[ChatParameterCode.SubscribeResults]; + for (int i = 0; i < channelsInResponse.Length; i++) + { + if (results[i]) + { + string channelName = channelsInResponse[i]; + ChatChannel channel; + if (!this.PublicChannels.TryGetValue(channelName, out channel)) + { + channel = new ChatChannel(channelName); + channel.MessageLimit = this.MessageLimit; + this.PublicChannels.Add(channel.Name, channel); + } + object temp; + if (eventData.Parameters.TryGetValue(ChatParameterCode.Properties, out temp)) + { + Dictionary channelProperties = temp as Dictionary; + channel.ReadChannelProperties(channelProperties); + } + if (channel.PublishSubscribers) // or maybe remove check & always add anyway? + { + channel.AddSubscriber(this.UserId); + } + if (eventData.Parameters.TryGetValue(ChatParameterCode.ChannelSubscribers, out temp)) + { + string[] subscribers = temp as string[]; + channel.AddSubscribers(subscribers); + } + #if CHAT_EXTENDED + if (eventData.Parameters.TryGetValue(ChatParameterCode.UserProperties, out temp)) + { + //UnityEngine.Debug.LogFormat("temp = {0}", temp); + Dictionary userProperties = temp as Dictionary; + foreach (var pair in userProperties) + { + channel.ReadUserProperties(pair.Key, pair.Value as Dictionary); + } + } + #endif + } + } + + this.listener.OnSubscribed(channelsInResponse, results); + } + + + private void HandleUnsubscribeEvent(EventData eventData) + { + string[] channelsInRequest = (string[])eventData[ChatParameterCode.Channels]; + for (int i = 0; i < channelsInRequest.Length; i++) + { + string channelName = channelsInRequest[i]; + this.PublicChannels.Remove(channelName); + this.PublicChannelsUnsubscribing.Remove(channelName); + } + + this.listener.OnUnsubscribed(channelsInRequest); + } + + private void HandleAuthResponse(OperationResponse operationResponse) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.listener.DebugReturn(DebugLevel.INFO, operationResponse.ToStringFull() + " on: " + this.chatPeer.NameServerAddress); + } + + if (operationResponse.ReturnCode == 0) + { + if (this.State == ChatState.ConnectedToNameServer) + { + this.State = ChatState.Authenticated; + this.listener.OnChatStateChange(this.State); + + if (operationResponse.Parameters.ContainsKey(ParameterCode.Secret)) + { + if (this.AuthValues == null) + { + this.AuthValues = new AuthenticationValues(); + } + this.AuthValues.Token = operationResponse[ParameterCode.Secret] as string; + + this.FrontendAddress = (string)operationResponse[ParameterCode.Address]; + + // we disconnect and status handler starts to connect to front end + this.chatPeer.Disconnect(); + } + else + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, "No secret in authentication response."); + } + } + if (operationResponse.Parameters.ContainsKey(ParameterCode.UserId)) + { + string incomingId = operationResponse.Parameters[ParameterCode.UserId] as string; + if (!string.IsNullOrEmpty(incomingId)) + { + this.UserId = incomingId; + this.listener.DebugReturn(DebugLevel.INFO, string.Format("Received your UserID from server. Updating local value to: {0}", this.UserId)); + } + } + } + else if (this.State == ChatState.ConnectingToFrontEnd) + { + this.State = ChatState.ConnectedToFrontEnd; + this.listener.OnChatStateChange(this.State); + this.listener.OnConnected(); + if (statusToSetWhenConnected.HasValue) + { + SetOnlineStatus(statusToSetWhenConnected.Value, messageToSetWhenConnected); + statusToSetWhenConnected = null; + } + } + } + else + { + //this.listener.DebugReturn(DebugLevel.INFO, operationResponse.ToStringFull() + " NS: " + this.NameServerAddress + " FrontEnd: " + this.frontEndAddress); + + switch (operationResponse.ReturnCode) + { + case ErrorCode.InvalidAuthentication: + this.DisconnectedCause = ChatDisconnectCause.InvalidAuthentication; + break; + case ErrorCode.CustomAuthenticationFailed: + this.DisconnectedCause = ChatDisconnectCause.CustomAuthenticationFailed; + break; + case ErrorCode.InvalidRegion: + this.DisconnectedCause = ChatDisconnectCause.InvalidRegion; + break; + case ErrorCode.MaxCcuReached: + this.DisconnectedCause = ChatDisconnectCause.MaxCcuReached; + break; + case ErrorCode.OperationNotAllowedInCurrentState: + this.DisconnectedCause = ChatDisconnectCause.OperationNotAllowedInCurrentState; + break; + case ErrorCode.AuthenticationTicketExpired: + this.DisconnectedCause = ChatDisconnectCause.AuthenticationTicketExpired; + break; + } + + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, string.Format("{0} ClientState: {1} ServerAddress: {2}", operationResponse.ToStringFull(), this.State, this.chatPeer.ServerAddress)); + } + + + this.Disconnect(this.DisconnectedCause); + } + } + + private void HandleStatusUpdate(EventData eventData) + { + string user = (string)eventData.Parameters[ChatParameterCode.Sender]; + int status = (int)eventData.Parameters[ChatParameterCode.Status]; + + object message = null; + bool gotMessage = eventData.Parameters.ContainsKey(ChatParameterCode.Message); + if (gotMessage) + { + message = eventData.Parameters[ChatParameterCode.Message]; + } + + this.listener.OnStatusUpdate(user, status, gotMessage, message); + } + + private bool ConnectToFrontEnd() + { + this.State = ChatState.ConnectingToFrontEnd; + + if (this.DebugOut >= DebugLevel.INFO) + { + this.listener.DebugReturn(DebugLevel.INFO, "Connecting to frontend " + this.FrontendAddress); + } + + #if UNITY_WEBGL + if (this.TransportProtocol == ConnectionProtocol.Tcp || this.TransportProtocol == ConnectionProtocol.Udp) + { + this.listener.DebugReturn(DebugLevel.WARNING, "WebGL requires WebSockets. Switching TransportProtocol to WebSocketSecure."); + this.TransportProtocol = ConnectionProtocol.WebSocketSecure; + } + #endif + + if (!this.chatPeer.Connect(this.FrontendAddress, this.ProxyServerAddress, ChatAppName, null)) + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, string.Format("Connecting to frontend {0} failed.", this.FrontendAddress)); + } + return false; + } + + return true; + } + + private bool AuthenticateOnFrontEnd() + { + if (this.AuthValues != null) + { + if (this.AuthValues.Token == null) + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, "Can't authenticate on front end server. Secret (AuthValues.Token) is not set"); + } + return false; + } + else + { + Dictionary opParameters = new Dictionary { { (byte)ChatParameterCode.Secret, this.AuthValues.Token } }; + if (this.PrivateChatHistoryLength > -1) + { + opParameters[(byte)ChatParameterCode.HistoryLength] = this.PrivateChatHistoryLength; + } + + return this.chatPeer.SendOperation(ChatOperationCode.Authenticate, opParameters, SendOptions.SendReliable); + } + } + else + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, "Can't authenticate on front end server. Authentication Values are not set"); + } + return false; + } + } + + private void HandleUserUnsubscribedEvent(EventData eventData) + { + string channelName = eventData.Parameters[ChatParameterCode.Channel] as string; + string userId = eventData.Parameters[ChatParameterCode.UserId] as string; + ChatChannel channel; + if (this.PublicChannels.TryGetValue(channelName, out channel)) + { + if (!channel.PublishSubscribers) + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, string.Format("Channel \"{0}\" for incoming UserUnsubscribed (\"{1}\") event does not have PublishSubscribers enabled.", channelName, userId)); + } + } + if (!channel.RemoveSubscriber(userId)) // user not found! + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, string.Format("Channel \"{0}\" does not contain unsubscribed user \"{1}\".", channelName, userId)); + } + } + } + else + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, string.Format("Channel \"{0}\" not found for incoming UserUnsubscribed (\"{1}\") event.", channelName, userId)); + } + } + this.listener.OnUserUnsubscribed(channelName, userId); + } + + private void HandleUserSubscribedEvent(EventData eventData) + { + string channelName = eventData.Parameters[ChatParameterCode.Channel] as string; + string userId = eventData.Parameters[ChatParameterCode.UserId] as string; + ChatChannel channel; + if (this.PublicChannels.TryGetValue(channelName, out channel)) + { + if (!channel.PublishSubscribers) + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, string.Format("Channel \"{0}\" for incoming UserSubscribed (\"{1}\") event does not have PublishSubscribers enabled.", channelName, userId)); + } + } + if (!channel.AddSubscriber(userId)) // user came back from the dead ? + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, string.Format("Channel \"{0}\" already contains newly subscribed user \"{1}\".", channelName, userId)); + } + } + else if (channel.MaxSubscribers > 0 && channel.Subscribers.Count > channel.MaxSubscribers) + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, string.Format("Channel \"{0}\"'s MaxSubscribers exceeded. count={1} > MaxSubscribers={2}.", channelName, channel.Subscribers.Count, channel.MaxSubscribers)); + } + } + #if CHAT_EXTENDED + object temp; + if (eventData.Parameters.TryGetValue(ChatParameterCode.UserProperties, out temp)) + { + Dictionary userProperties = temp as Dictionary; + channel.ReadUserProperties(userId, userProperties); + } + #endif + } + else + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, string.Format("Channel \"{0}\" not found for incoming UserSubscribed (\"{1}\") event.", channelName, userId)); + } + } + this.listener.OnUserSubscribed(channelName, userId); + } + + #endregion + + /// + /// Subscribe to a single channel and optionally sets its well-know channel properties in case the channel is created. + /// + /// name of the channel to subscribe to + /// ID of the last received message from this channel when re subscribing to receive only missed messages, default is 0 + /// how many missed messages to receive from history, default is -1 (available history). 0 will get you no items. Positive values are capped by a server side limit. + /// options to be used in case the channel to subscribe to will be created. + /// + public bool Subscribe(string channel, int lastMsgId = 0, int messagesFromHistory = -1, ChannelCreationOptions creationOptions = null) + { + if (creationOptions == null) + { + creationOptions = ChannelCreationOptions.Default; + } + int maxSubscribers = creationOptions.MaxSubscribers; + bool publishSubscribers = creationOptions.PublishSubscribers; + if (maxSubscribers < 0) + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, "Cannot set MaxSubscribers < 0."); + } + return false; + } + if (lastMsgId < 0) + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, "lastMsgId cannot be < 0."); + } + return false; + } + if (messagesFromHistory < -1) + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, "messagesFromHistory < -1, setting it to -1"); + } + messagesFromHistory = -1; + } + if (lastMsgId > 0 && messagesFromHistory == 0) + { + if (this.DebugOut >= DebugLevel.WARNING) + { + this.listener.DebugReturn(DebugLevel.WARNING, "lastMsgId will be ignored because messagesFromHistory == 0"); + } + lastMsgId = 0; + } + Dictionary properties = null; + if (publishSubscribers) + { + if (maxSubscribers > DefaultMaxSubscribers) + { + if (this.DebugOut >= DebugLevel.ERROR) + { + this.listener.DebugReturn(DebugLevel.ERROR, + string.Format("Cannot set MaxSubscribers > {0} when PublishSubscribers == true.", DefaultMaxSubscribers)); + } + return false; + } + properties = new Dictionary(); + properties[ChannelWellKnownProperties.PublishSubscribers] = true; + } + if (maxSubscribers > 0) + { + if (properties == null) + { + properties = new Dictionary(); + } + properties[ChannelWellKnownProperties.MaxSubscribers] = maxSubscribers; + } + #if CHAT_EXTENDED + if (creationOptions.CustomProperties != null && creationOptions.CustomProperties.Count > 0) + { + foreach (var pair in creationOptions.CustomProperties) + { + properties.Add(pair.Key, pair.Value); + } + } + #endif + Dictionary opParameters = new Dictionary { { ChatParameterCode.Channels, new[] { channel } } }; + if (messagesFromHistory != 0) + { + opParameters.Add(ChatParameterCode.HistoryLength, messagesFromHistory); + } + if (lastMsgId > 0) + { + opParameters.Add(ChatParameterCode.MsgIds, new[] { lastMsgId }); + } + if (properties != null && properties.Count > 0) + { + opParameters.Add(ChatParameterCode.Properties, properties); + } + + return this.chatPeer.SendOperation(ChatOperationCode.Subscribe, opParameters, SendOptions.SendReliable); + } + + #if CHAT_EXTENDED + + internal bool SetChannelProperties(string channelName, Dictionary channelProperties, Dictionary expectedProperties = null, bool httpForward = false) + { + if (!this.CanChat) + { + this.listener.DebugReturn(DebugLevel.ERROR, "SetChannelProperties called while not connected to front end server."); + return false; + } + + if (string.IsNullOrEmpty(channelName) || channelProperties == null || channelProperties.Count == 0) + { + this.listener.DebugReturn(DebugLevel.WARNING, "SetChannelProperties parameters must be non-null and not empty."); + return false; + } + Dictionary parameters = new Dictionary + { + { ChatParameterCode.Channel, channelName }, + { ChatParameterCode.Properties, channelProperties }, + { ChatParameterCode.Broadcast, true } + }; + if (httpForward) + { + parameters.Add(ChatParameterCode.WebFlags, HttpForwardWebFlag); + } + if (expectedProperties != null && expectedProperties.Count > 0) + { + parameters.Add(ChatParameterCode.ExpectedValues, expectedProperties); + } + return this.chatPeer.SendOperation(ChatOperationCode.SetProperties, parameters, SendOptions.SendReliable); + } + + public bool SetCustomChannelProperties(string channelName, Dictionary channelProperties, Dictionary expectedProperties = null, bool httpForward = false) + { + if (channelProperties != null && channelProperties.Count > 0) + { + Dictionary properties = new Dictionary(channelProperties.Count); + foreach (var pair in channelProperties) + { + properties.Add(pair.Key, pair.Value); + } + Dictionary expected = null; + if (expectedProperties != null && expectedProperties.Count > 0) + { + expected = new Dictionary(expectedProperties.Count); + foreach (var pair in expectedProperties) + { + expected.Add(pair.Key, pair.Value); + } + } + return this.SetChannelProperties(channelName, properties, expected, httpForward); + } + return this.SetChannelProperties(channelName, null); + } + + public bool SetCustomUserProperties(string channelName, string userId, Dictionary userProperties, Dictionary expectedProperties = null, bool httpForward = false) + { + if (userProperties != null && userProperties.Count > 0) + { + Dictionary properties = new Dictionary(userProperties.Count); + foreach (var pair in userProperties) + { + properties.Add(pair.Key, pair.Value); + } + Dictionary expected = null; + if (expectedProperties != null && expectedProperties.Count > 0) + { + expected = new Dictionary(expectedProperties.Count); + foreach (var pair in expectedProperties) + { + expected.Add(pair.Key, pair.Value); + } + } + return this.SetUserProperties(channelName, userId, properties, expected, httpForward); + } + return this.SetUserProperties(channelName, userId, null); + } + + internal bool SetUserProperties(string channelName, string userId, Dictionary channelProperties, Dictionary expectedProperties = null, bool httpForward = false) + { + if (!this.CanChat) + { + this.listener.DebugReturn(DebugLevel.ERROR, "SetUserProperties called while not connected to front end server."); + return false; + } + if (string.IsNullOrEmpty(channelName)) + { + this.listener.DebugReturn(DebugLevel.WARNING, "SetUserProperties \"channelName\" parameter must be non-null and not empty."); + return false; + } + if (channelProperties == null || channelProperties.Count == 0) + { + this.listener.DebugReturn(DebugLevel.WARNING, "SetUserProperties \"channelProperties\" parameter must be non-null and not empty."); + return false; + } + if (string.IsNullOrEmpty(userId)) + { + this.listener.DebugReturn(DebugLevel.WARNING, "SetUserProperties \"userId\" parameter must be non-null and not empty."); + return false; + } + Dictionary parameters = new Dictionary + { + { ChatParameterCode.Channel, channelName }, + { ChatParameterCode.Properties, channelProperties }, + { ChatParameterCode.UserId, userId }, + { ChatParameterCode.Broadcast, true } + }; + if (httpForward) + { + parameters.Add(ChatParameterCode.WebFlags, HttpForwardWebFlag); + } + if (expectedProperties != null && expectedProperties.Count > 0) + { + parameters.Add(ChatParameterCode.ExpectedValues, expectedProperties); + } + return this.chatPeer.SendOperation(ChatOperationCode.SetProperties, parameters, SendOptions.SendReliable); + } + + private void HandlePropertiesChanged(EventData eventData) + { + string channelName = eventData.Parameters[ChatParameterCode.Channel] as string; + ChatChannel channel; + if (!this.PublicChannels.TryGetValue(channelName, out channel)) + { + this.listener.DebugReturn(DebugLevel.WARNING, string.Format("Channel {0} for incoming ChannelPropertiesUpdated event not found.", channelName)); + return; + } + string senderId = eventData.Parameters[ChatParameterCode.Sender] as string; + Dictionary changedProperties = eventData.Parameters[ChatParameterCode.Properties] as Dictionary; + object temp; + if (eventData.Parameters.TryGetValue(ChatParameterCode.UserId, out temp)) + { + string targetUserId = temp as string; + channel.ReadUserProperties(targetUserId, changedProperties); + this.listener.OnUserPropertiesChanged(channelName, targetUserId, senderId, changedProperties); + } + else + { + channel.ReadChannelProperties(changedProperties); + this.listener.OnChannelPropertiesChanged(channelName, senderId, changedProperties); + } + } + + private void HandleErrorInfoEvent(EventData eventData) + { + string channel = eventData.Parameters[ChatParameterCode.Channel] as string; + string msg = eventData.Parameters[ChatParameterCode.DebugMessage] as string; + object data = eventData.Parameters[ChatParameterCode.DebugData]; + this.listener.OnErrorInfo(channel, msg, data); + } + + #endif + } +} diff --git a/Assets/Photon/PhotonChat/Code/ChatClient.cs.meta b/Assets/Photon/PhotonChat/Code/ChatClient.cs.meta new file mode 100644 index 00000000..0a1bea9c --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatClient.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 692e391fa2a297c45b3d530aa85be610 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonChat/Code/ChatDisconnectCause.cs b/Assets/Photon/PhotonChat/Code/ChatDisconnectCause.cs new file mode 100644 index 00000000..47200cfd --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatDisconnectCause.cs @@ -0,0 +1,43 @@ +// ---------------------------------------------------------------------------------------------------------------------- +// The Photon Chat Api enables clients to connect to a chat server and communicate with other clients. +// ChatClient is the main class of this api. +// Photon Chat Api - Copyright (C) 2014 Exit Games GmbH +// ---------------------------------------------------------------------------------------------------------------------- + +namespace Photon.Chat +{ + /// Enumeration of causes for Disconnects (used in ). + /// Read the individual descriptions to find out what to do about this type of disconnect. + public enum ChatDisconnectCause + { + /// No error was tracked. + None, + /// OnStatusChanged: The server is not available or the address is wrong. Make sure the port is provided and the server is up. + ExceptionOnConnect, + /// OnStatusChanged: The server disconnected this client from within the room's logic (the C# code). + DisconnectByServerLogic, + /// OnStatusChanged: The server disconnected this client for unknown reasons. + DisconnectByServerReasonUnknown, + /// OnStatusChanged: The server disconnected this client due to timing out (missing acknowledgement from the client). + ServerTimeout, + + /// OnStatusChanged: This client detected that the server's responses are not received in due time. + ClientTimeout, + /// OnStatusChanged: Some internal exception caused the socket code to fail. Contact Exit Games. + Exception, + /// OnOperationResponse: Authenticate in the Photon Cloud with invalid AppId. Update your subscription or contact Exit Games. + InvalidAuthentication, + /// OnOperationResponse: Authenticate (temporarily) failed when using a Photon Cloud subscription without CCU Burst. Update your subscription. + MaxCcuReached, + /// OnOperationResponse: Authenticate when the app's Photon Cloud subscription is locked to some (other) region(s). Update your subscription or change region. + InvalidRegion, + /// OnOperationResponse: Operation that's (currently) not available for this client (not authorized usually). Only tracked for op Authenticate. + OperationNotAllowedInCurrentState, + /// OnOperationResponse: Authenticate in the Photon Cloud with invalid client values or custom authentication setup in Cloud Dashboard. + CustomAuthenticationFailed, + /// The authentication ticket should provide access to any Photon Cloud server without doing another authentication-service call. However, the ticket expired. + AuthenticationTicketExpired, + /// OnStatusChanged: The client disconnected from within the logic (the C# code). + DisconnectByClientLogic + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Code/ChatDisconnectCause.cs.meta b/Assets/Photon/PhotonChat/Code/ChatDisconnectCause.cs.meta new file mode 100644 index 00000000..c1f0c5bf --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatDisconnectCause.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b90b85043f1857f43b94fd00edfc1ef1 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonChat/Code/ChatEventCode.cs b/Assets/Photon/PhotonChat/Code/ChatEventCode.cs new file mode 100644 index 00000000..07e803e7 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatEventCode.cs @@ -0,0 +1,39 @@ +// ---------------------------------------------------------------------------------------------------------------------- +// The Photon Chat Api enables clients to connect to a chat server and communicate with other clients. +// ChatClient is the main class of this api. +// Photon Chat Api - Copyright (C) 2014 Exit Games GmbH +// ---------------------------------------------------------------------------------------------------------------------- + +namespace Photon.Chat +{ + /// + /// Wraps up internally used constants in Photon Chat events. You don't have to use them directly usually. + /// + public class ChatEventCode + { + /// (0) Event code for messages published in public channels. + public const byte ChatMessages = 0; + /// (1) Not Used. + public const byte Users = 1;// List of users or List of changes for List of users + /// (2) Event code for messages published in private channels + public const byte PrivateMessage = 2; + /// (3) Not Used. + public const byte FriendsList = 3; + /// (4) Event code for status updates. + public const byte StatusUpdate = 4; + /// (5) Event code for subscription acks. + public const byte Subscribe = 5; + /// (6) Event code for unsubscribe acks. + public const byte Unsubscribe = 6; + /// (7) Event code for properties update. + public const byte PropertiesChanged = 7; + + /// (8) Event code for new user subscription to a channel where is enabled. + public const byte UserSubscribed = 8; + /// (9) Event code for when user unsubscribes from a channel where is enabled. + public const byte UserUnsubscribed = 9; + /// (10) Event code for when the server sends an error to the client. + /// This is currently only used by Chat WebHooks. + public const byte ErrorInfo = 10; + } +} diff --git a/Assets/Photon/PhotonChat/Code/ChatEventCode.cs.meta b/Assets/Photon/PhotonChat/Code/ChatEventCode.cs.meta new file mode 100644 index 00000000..4c0b2e68 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatEventCode.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 188e4a680bce12d4cbad8d57a24f7d44 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonChat/Code/ChatOperationCode.cs b/Assets/Photon/PhotonChat/Code/ChatOperationCode.cs new file mode 100644 index 00000000..588bc2bb --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatOperationCode.cs @@ -0,0 +1,38 @@ +// ---------------------------------------------------------------------------------------------------------------------- +// The Photon Chat Api enables clients to connect to a chat server and communicate with other clients. +// ChatClient is the main class of this api. +// Photon Chat Api - Copyright (C) 2014 Exit Games GmbH +// ---------------------------------------------------------------------------------------------------------------------- + +namespace Photon.Chat +{ + /// + /// Wraps up codes for operations used internally in Photon Chat. You don't have to use them directly usually. + /// + public class ChatOperationCode + { + /// (230) Operation Authenticate. + public const byte Authenticate = 230; + + /// (0) Operation to subscribe to chat channels. + public const byte Subscribe = 0; + /// (1) Operation to unsubscribe from chat channels. + public const byte Unsubscribe = 1; + /// (2) Operation to publish a message in a chat channel. + public const byte Publish = 2; + /// (3) Operation to send a private message to some other user. + public const byte SendPrivate = 3; + + /// (4) Not used yet. + public const byte ChannelHistory = 4; + + /// (5) Set your (client's) status. + public const byte UpdateStatus = 5; + /// (6) Add friends the list of friends that should update you of their status. + public const byte AddFriends = 6; + /// (7) Remove friends from list of friends that should update you of their status. + public const byte RemoveFriends = 7; + /// (8) Operation to set properties of public chat channel or users in public chat channels. + public const byte SetProperties = 8; + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Code/ChatOperationCode.cs.meta b/Assets/Photon/PhotonChat/Code/ChatOperationCode.cs.meta new file mode 100644 index 00000000..03756886 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatOperationCode.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c90a2a73f3ce648409739c724d3e6cef +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonChat/Code/ChatParameterCode.cs b/Assets/Photon/PhotonChat/Code/ChatParameterCode.cs new file mode 100644 index 00000000..7a56e6bc --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatParameterCode.cs @@ -0,0 +1,85 @@ +// ---------------------------------------------------------------------------------------------------------------------- +// The Photon Chat Api enables clients to connect to a chat server and communicate with other clients. +// ChatClient is the main class of this api. +// Photon Chat Api - Copyright (C) 2014 Exit Games GmbH +// ---------------------------------------------------------------------------------------------------------------------- + +namespace Photon.Chat +{ + /// + /// Wraps up codes for parameters (in operations and events) used internally in Photon Chat. You don't have to use them directly usually. + /// + public class ChatParameterCode + { + /// (0) Array of chat channels. + public const byte Channels = 0; + /// (1) Name of a single chat channel. + public const byte Channel = 1; + /// (2) Array of chat messages. + public const byte Messages = 2; + /// (3) A single chat message. + public const byte Message = 3; + /// (4) Array of names of the users who sent the array of chat messages. + public const byte Senders = 4; + /// (5) Name of a the user who sent a chat message. + public const byte Sender = 5; + /// (6) Not used. + public const byte ChannelUserCount = 6; + /// (225) Name of user to send a (private) message to.The code is used in LoadBalancing and copied over here. + public const byte UserId = 225; + /// (8) Id of a message. + public const byte MsgId = 8; + /// (9) Not used. + public const byte MsgIds = 9; + /// (221) Secret token to identify an authorized user.The code is used in LoadBalancing and copied over here. + public const byte Secret = 221; + /// (15) Subscribe operation result parameter. A bool[] with result per channel. + public const byte SubscribeResults = 15; + + /// (10) Status + public const byte Status = 10; + /// (11) Friends + public const byte Friends = 11; + /// (12) SkipMessage is used in SetOnlineStatus and if true, the message is not being broadcast. + public const byte SkipMessage = 12; + + /// (14) Number of message to fetch from history. 0: no history. 1 and higher: number of messages in history. -1: all history. + public const byte HistoryLength = 14; + + public const byte DebugMessage = 17; + + /// (21) WebFlags object for changing behaviour of webhooks from client. + public const byte WebFlags = 21; + + /// (22) WellKnown or custom properties of channel or user. + /// + /// In event it's always channel properties, + /// in event it's always user properties, + /// in event it's channel properties unless parameter value is not null + /// + public const byte Properties = 22; + /// (23) Array of UserIds of users already subscribed to a channel. + /// Used in Subscribe event when PublishSubscribers is enabled. + /// Does not include local user who just subscribed. + /// Maximum length is ( - 1). + public const byte ChannelSubscribers = 23; + /// (24) Optional data sent in ErrorInfo event from Chat WebHooks. + public const byte DebugData = 24; + /// (25) Code for values to be used for "Check And Swap" (CAS) when changing properties. + public const byte ExpectedValues = 25; + /// (26) Code for broadcast parameter of method. + public const byte Broadcast = 26; + /// + /// WellKnown and custom user properties. + /// + /// + /// Used only in event + /// + public const byte UserProperties = 28; + + /// + /// Generated unique reusable room id + /// + public const byte UniqueRoomId = 29; + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Code/ChatParameterCode.cs.meta b/Assets/Photon/PhotonChat/Code/ChatParameterCode.cs.meta new file mode 100644 index 00000000..b0d8707e --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatParameterCode.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d7a17b60c85fb30448492e397c58c7ce +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonChat/Code/ChatPeer.cs b/Assets/Photon/PhotonChat/Code/ChatPeer.cs new file mode 100644 index 00000000..6f437718 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatPeer.cs @@ -0,0 +1,454 @@ +// ---------------------------------------------------------------------------------------------------------------------- +// The Photon Chat Api enables clients to connect to a chat server and communicate with other clients. +// ChatClient is the main class of this api. +// Photon Chat Api - Copyright (C) 2014 Exit Games GmbH +// ---------------------------------------------------------------------------------------------------------------------- + +#if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER +#define SUPPORTED_UNITY +#endif + +namespace Photon.Chat +{ + using System; + using System.Diagnostics; + using System.Collections.Generic; + using ExitGames.Client.Photon; + + #if SUPPORTED_UNITY || NETFX_CORE + using Hashtable = ExitGames.Client.Photon.Hashtable; + using SupportClass = ExitGames.Client.Photon.SupportClass; + #endif + + + /// + /// Provides basic operations of the Photon Chat server. This internal class is used by public ChatClient. + /// + public class ChatPeer : PhotonPeer + { + /// Name Server Host Name for Photon Cloud. Without port and without any prefix. + public string NameServerHost = "ns.photonengine.io"; + + /// Name Server port per protocol (the UDP port is different than TCP, etc). + private static readonly Dictionary ProtocolToNameServerPort = new Dictionary() { { ConnectionProtocol.Udp, 5058 }, { ConnectionProtocol.Tcp, 4533 }, { ConnectionProtocol.WebSocket, 9093 }, { ConnectionProtocol.WebSocketSecure, 19093 } }; //, { ConnectionProtocol.RHttp, 6063 } }; + + /// Name Server Address for Photon Cloud (based on current protocol). You can use the default values and usually won't have to set this value. + public string NameServerAddress { get { return this.GetNameServerAddress(); } } + + virtual internal bool IsProtocolSecure { get { return this.UsedProtocol == ConnectionProtocol.WebSocketSecure; } } + + /// Chat Peer constructor. + /// Chat listener implementation. + /// Protocol to be used by the peer. + public ChatPeer(IPhotonPeerListener listener, ConnectionProtocol protocol) : base(listener, protocol) + { + this.ConfigUnitySockets(); + } + + + + // Sets up the socket implementations to use, depending on platform + [System.Diagnostics.Conditional("SUPPORTED_UNITY")] + private void ConfigUnitySockets() + { + Type websocketType = null; + #if (UNITY_XBOXONE || UNITY_GAMECORE) && !UNITY_EDITOR + websocketType = Type.GetType("ExitGames.Client.Photon.SocketNativeSource, Assembly-CSharp", false); + if (websocketType == null) + { + websocketType = Type.GetType("ExitGames.Client.Photon.SocketNativeSource, Assembly-CSharp-firstpass", false); + } + if (websocketType == null) + { + websocketType = Type.GetType("ExitGames.Client.Photon.SocketNativeSource, PhotonRealtime", false); + } + if (websocketType != null) + { + this.SocketImplementationConfig[ConnectionProtocol.Udp] = websocketType; // on Xbox, the native socket plugin supports UDP as well + } + #else + // to support WebGL export in Unity, we find and assign the SocketWebTcp class (if it's in the project). + // alternatively class SocketWebTcp might be in the Photon3Unity3D.dll + websocketType = Type.GetType("ExitGames.Client.Photon.SocketWebTcp, PhotonWebSocket", false); + if (websocketType == null) + { + websocketType = Type.GetType("ExitGames.Client.Photon.SocketWebTcp, Assembly-CSharp-firstpass", false); + } + if (websocketType == null) + { + websocketType = Type.GetType("ExitGames.Client.Photon.SocketWebTcp, Assembly-CSharp", false); + } + #endif + + if (websocketType != null) + { + this.SocketImplementationConfig[ConnectionProtocol.WebSocket] = websocketType; + this.SocketImplementationConfig[ConnectionProtocol.WebSocketSecure] = websocketType; + } + + #if NET_4_6 && (UNITY_EDITOR || !ENABLE_IL2CPP) && !NETFX_CORE + this.SocketImplementationConfig[ConnectionProtocol.Udp] = typeof(SocketUdpAsync); + this.SocketImplementationConfig[ConnectionProtocol.Tcp] = typeof(SocketTcpAsync); + #endif + } + + /// If not zero, this is used for the name server port on connect. Independent of protocol (so this better matches). Set by ChatClient.ConnectUsingSettings. + /// This is reset when the protocol fallback is used. + public ushort NameServerPortOverride; + + /// + /// Gets the NameServer Address (with prefix and port), based on the set protocol (this.UsedProtocol). + /// + /// NameServer Address (with prefix and port). + private string GetNameServerAddress() + { + var protocolPort = 0; + ProtocolToNameServerPort.TryGetValue(this.TransportProtocol, out protocolPort); + + if (this.NameServerPortOverride != 0) + { + this.Listener.DebugReturn(DebugLevel.INFO, string.Format("Using NameServerPortInAppSettings as port for Name Server: {0}", this.NameServerPortOverride)); + protocolPort = this.NameServerPortOverride; + } + + switch (this.TransportProtocol) + { + case ConnectionProtocol.Udp: + case ConnectionProtocol.Tcp: + return string.Format("{0}:{1}", NameServerHost, protocolPort); + case ConnectionProtocol.WebSocket: + return string.Format("ws://{0}:{1}", NameServerHost, protocolPort); + case ConnectionProtocol.WebSocketSecure: + return string.Format("wss://{0}:{1}", NameServerHost, protocolPort); + default: + throw new ArgumentOutOfRangeException(); + } + } + + + /// Authenticates on NameServer. + /// If the authentication operation request could be sent. + public bool AuthenticateOnNameServer(string appId, string appVersion, string region, AuthenticationValues authValues) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpAuthenticate()"); + } + + var opParameters = new Dictionary(); + + opParameters[ParameterCode.AppVersion] = appVersion; + opParameters[ParameterCode.ApplicationId] = appId; + opParameters[ParameterCode.Region] = region; + + if (authValues != null) + { + if (!string.IsNullOrEmpty(authValues.UserId)) + { + opParameters[ParameterCode.UserId] = authValues.UserId; + } + + if (authValues.AuthType != CustomAuthenticationType.None) + { + opParameters[ParameterCode.ClientAuthenticationType] = (byte) authValues.AuthType; + if (authValues.Token != null) + { + opParameters[ParameterCode.Secret] = authValues.Token; + } + else + { + if (!string.IsNullOrEmpty(authValues.AuthGetParameters)) + { + opParameters[ParameterCode.ClientAuthenticationParams] = authValues.AuthGetParameters; + } + if (authValues.AuthPostData != null) + { + opParameters[ParameterCode.ClientAuthenticationData] = authValues.AuthPostData; + } + } + } + } + + return this.SendOperation(ChatOperationCode.Authenticate, opParameters, new SendOptions() { Reliability = true, Encrypt = this.IsEncryptionAvailable }); + } + } + + /// + /// Options for optional "Custom Authentication" services used with Photon. Used by OpAuthenticate after connecting to Photon. + /// + public enum CustomAuthenticationType : byte + { + /// Use a custom authentication service. Currently the only implemented option. + Custom = 0, + + /// Authenticates users by their Steam Account. Set Steam's ticket as "ticket" via AddAuthParameter(). + Steam = 1, + + /// Authenticates users by their Facebook Account. Set Facebooks's tocken as "token" via AddAuthParameter(). + Facebook = 2, + + /// Authenticates users by their Oculus Account and token. Set Oculus' userid as "userid" and nonce as "nonce" via AddAuthParameter(). + Oculus = 3, + + /// Authenticates users by their PSN Account and token on PS4. Set token as "token", env as "env" and userName as "userName" via AddAuthParameter(). + PlayStation4 = 4, + [Obsolete("Use PlayStation4 or PlayStation5 as needed")] + PlayStation = 4, + + /// Authenticates users by their Xbox Account. Pass the XSTS token via SetAuthPostData(). + Xbox = 5, + + /// Authenticates users by their HTC Viveport Account. Set userToken as "userToken" via AddAuthParameter(). + Viveport = 10, + + /// Authenticates users by their NSA ID. Set token as "token" and appversion as "appversion" via AddAuthParameter(). The appversion is optional. + NintendoSwitch = 11, + + /// Authenticates users by their PSN Account and token on PS5. Set token as "token", env as "env" and userName as "userName" via AddAuthParameter(). + PlayStation5 = 12, + [Obsolete("Use PlayStation4 or PlayStation5 as needed")] + Playstation5 = 12, + + /// Authenticates users with Epic Online Services (EOS). Set token as "token" and ownershipToken as "ownershipToken" via AddAuthParameter(). The ownershipToken is optional. + Epic = 13, + + /// Authenticates users with Facebook Gaming api. Set token as "token" via AddAuthParameter(). + FacebookGaming = 15, + + /// Disables custom authentication. Same as not providing any AuthenticationValues for connect (more precisely for: OpAuthenticate). + None = byte.MaxValue + } + + + /// + /// Container for user authentication in Photon. Set AuthValues before you connect - all else is handled. + /// + /// + /// On Photon, user authentication is optional but can be useful in many cases. + /// If you want to FindFriends, a unique ID per user is very practical. + /// + /// There are basically three options for user authentication: None at all, the client sets some UserId + /// or you can use some account web-service to authenticate a user (and set the UserId server-side). + /// + /// Custom Authentication lets you verify end-users by some kind of login or token. It sends those + /// values to Photon which will verify them before granting access or disconnecting the client. + /// + /// The AuthValues are sent in OpAuthenticate when you connect, so they must be set before you connect. + /// If the AuthValues.UserId is null or empty when it's sent to the server, then the Photon Server assigns a UserId! + /// + /// The Photon Cloud Dashboard will let you enable this feature and set important server values for it. + /// https://dashboard.photonengine.com + /// + public class AuthenticationValues + { + /// See AuthType. + private CustomAuthenticationType authType = CustomAuthenticationType.None; + + /// The type of authentication provider that should be used. Defaults to None (no auth whatsoever). + /// Several auth providers are available and CustomAuthenticationType.Custom can be used if you build your own service. + public CustomAuthenticationType AuthType + { + get { return authType; } + set { authType = value; } + } + + /// This string must contain any (http get) parameters expected by the used authentication service. By default, username and token. + /// + /// Maps to operation parameter 216. + /// Standard http get parameters are used here and passed on to the service that's defined in the server (Photon Cloud Dashboard). + /// + public string AuthGetParameters { get; set; } + + /// Data to be passed-on to the auth service via POST. Default: null (not sent). Either string or byte[] (see setters). + /// Maps to operation parameter 214. + public object AuthPostData { get; private set; } + + /// Internal Photon token. After initial authentication, Photon provides a token for this client, subsequently used as (cached) validation. + /// Any token for custom authentication should be set via SetAuthPostData or AddAuthParameter. + public object Token { get; protected internal set; } + + /// The UserId should be a unique identifier per user. This is for finding friends, etc.. + /// See remarks of AuthValues for info about how this is set and used. + public string UserId { get; set; } + + + /// Creates empty auth values without any info. + public AuthenticationValues() + { + } + + /// Creates minimal info about the user. If this is authenticated or not, depends on the set AuthType. + /// Some UserId to set in Photon. + public AuthenticationValues(string userId) + { + this.UserId = userId; + } + + /// Sets the data to be passed-on to the auth service via POST. + /// AuthPostData is just one value. Each SetAuthPostData replaces any previous value. It can be either a string, a byte[] or a dictionary. + /// String data to be used in the body of the POST request. Null or empty string will set AuthPostData to null. + public virtual void SetAuthPostData(string stringData) + { + this.AuthPostData = (string.IsNullOrEmpty(stringData)) ? null : stringData; + } + + /// Sets the data to be passed-on to the auth service via POST. + /// AuthPostData is just one value. Each SetAuthPostData replaces any previous value. It can be either a string, a byte[] or a dictionary. + /// Binary token / auth-data to pass on. + public virtual void SetAuthPostData(byte[] byteData) + { + this.AuthPostData = byteData; + } + + /// Sets data to be passed-on to the auth service as Json (Content-Type: "application/json") via Post. + /// AuthPostData is just one value. Each SetAuthPostData replaces any previous value. It can be either a string, a byte[] or a dictionary. + /// A authentication-data dictionary will be converted to Json and passed to the Auth webservice via HTTP Post. + public virtual void SetAuthPostData(Dictionary dictData) + { + this.AuthPostData = dictData; + } + + /// Adds a key-value pair to the get-parameters used for Custom Auth (AuthGetParameters). + /// This method does uri-encoding for you. + /// Key for the value to set. + /// Some value relevant for Custom Authentication. + public virtual void AddAuthParameter(string key, string value) + { + string ampersand = string.IsNullOrEmpty(this.AuthGetParameters) ? "" : "&"; + this.AuthGetParameters = string.Format("{0}{1}{2}={3}", this.AuthGetParameters, ampersand, System.Uri.EscapeDataString(key), System.Uri.EscapeDataString(value)); + } + + /// + /// Transform this object into string. + /// + /// string representation of this object. + public override string ToString() + { + return string.Format("AuthenticationValues Type: {3} UserId: {0}, GetParameters: {1} Token available: {2}", this.UserId, this.AuthGetParameters, this.Token != null, this.AuthType); + } + + /// + /// Make a copy of the current object. + /// + /// The object to be copied into. + /// The copied object. + public AuthenticationValues CopyTo(AuthenticationValues copy) + { + copy.AuthType = this.AuthType; + copy.AuthGetParameters = this.AuthGetParameters; + copy.AuthPostData = this.AuthPostData; + copy.UserId = this.UserId; + return copy; + } + } + + + /// Class for constants. Codes for parameters of Operations and Events. + public class ParameterCode + { + /// (224) Your application's ID: a name on your own Photon or a GUID on the Photon Cloud + public const byte ApplicationId = 224; + /// (221) Internally used to establish encryption + public const byte Secret = 221; + /// (220) Version of your application + public const byte AppVersion = 220; + /// (217) This key's (byte) value defines the target custom authentication type/service the client connects with. Used in OpAuthenticate + public const byte ClientAuthenticationType = 217; + /// (216) This key's (string) value provides parameters sent to the custom authentication type/service the client connects with. Used in OpAuthenticate + public const byte ClientAuthenticationParams = 216; + /// (214) This key's (string or byte[]) value provides parameters sent to the custom authentication service setup in Photon Dashboard. Used in OpAuthenticate + public const byte ClientAuthenticationData = 214; + /// (210) Used for region values in OpAuth and OpGetRegions. + public const byte Region = 210; + /// (230) Address of a (game) server to use. + public const byte Address = 230; + /// (225) User's ID + public const byte UserId = 225; + } + + /// + /// ErrorCode defines the default codes associated with Photon client/server communication. + /// + public class ErrorCode + { + /// (0) is always "OK", anything else an error or specific situation. + public const int Ok = 0; + + // server - Photon low(er) level: <= 0 + + /// + /// (-3) Operation can't be executed yet (e.g. OpJoin can't be called before being authenticated, RaiseEvent cant be used before getting into a room). + /// + /// + /// Before you call any operations on the Cloud servers, the automated client workflow must complete its authorization. + /// In PUN, wait until State is: JoinedLobby or ConnectedToMaster + /// + public const int OperationNotAllowedInCurrentState = -3; + + /// (-2) The operation you called is not implemented on the server (application) you connect to. Make sure you run the fitting applications. + public const int InvalidOperationCode = -2; + + /// (-1) Something went wrong in the server. Try to reproduce and contact Exit Games. + public const int InternalServerError = -1; + + // server - PhotonNetwork: 0x7FFF and down + // logic-level error codes start with short.max + + /// (32767) Authentication failed. Possible cause: AppId is unknown to Photon (in cloud service). + public const int InvalidAuthentication = 0x7FFF; + + /// (32766) GameId (name) already in use (can't create another). Change name. + public const int GameIdAlreadyExists = 0x7FFF - 1; + + /// (32765) Game is full. This rarely happens when some player joined the room before your join completed. + public const int GameFull = 0x7FFF - 2; + + /// (32764) Game is closed and can't be joined. Join another game. + public const int GameClosed = 0x7FFF - 3; + + /// (32762) Not in use currently. + public const int ServerFull = 0x7FFF - 5; + + /// (32761) Not in use currently. + public const int UserBlocked = 0x7FFF - 6; + + /// (32760) Random matchmaking only succeeds if a room exists that is neither closed nor full. Repeat in a few seconds or create a new room. + public const int NoRandomMatchFound = 0x7FFF - 7; + + /// (32758) Join can fail if the room (name) is not existing (anymore). This can happen when players leave while you join. + public const int GameDoesNotExist = 0x7FFF - 9; + + /// (32757) Authorization on the Photon Cloud failed because the concurrent users (CCU) limit of the app's subscription is reached. + /// + /// Unless you have a plan with "CCU Burst", clients might fail the authentication step during connect. + /// Affected client are unable to call operations. Please note that players who end a game and return + /// to the master server will disconnect and re-connect, which means that they just played and are rejected + /// in the next minute / re-connect. + /// This is a temporary measure. Once the CCU is below the limit, players will be able to connect an play again. + /// + /// OpAuthorize is part of connection workflow but only on the Photon Cloud, this error can happen. + /// Self-hosted Photon servers with a CCU limited license won't let a client connect at all. + /// + public const int MaxCcuReached = 0x7FFF - 10; + + /// (32756) Authorization on the Photon Cloud failed because the app's subscription does not allow to use a particular region's server. + /// + /// Some subscription plans for the Photon Cloud are region-bound. Servers of other regions can't be used then. + /// Check your master server address and compare it with your Photon Cloud Dashboard's info. + /// https://cloud.photonengine.com/dashboard + /// + /// OpAuthorize is part of connection workflow but only on the Photon Cloud, this error can happen. + /// Self-hosted Photon servers with a CCU limited license won't let a client connect at all. + /// + public const int InvalidRegion = 0x7FFF - 11; + + /// + /// (32755) Custom Authentication of the user failed due to setup reasons (see Cloud Dashboard) or the provided user data (like username or token). Check error message for details. + /// + public const int CustomAuthenticationFailed = 0x7FFF - 12; + + /// (32753) The Authentication ticket expired. Usually, this is refreshed behind the scenes. Connect (and authorize) again. + public const int AuthenticationTicketExpired = 0x7FF1; + } + +} diff --git a/Assets/Photon/PhotonChat/Code/ChatPeer.cs.meta b/Assets/Photon/PhotonChat/Code/ChatPeer.cs.meta new file mode 100644 index 00000000..a002c43c --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatPeer.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3f712805dec728943a668b3bf19dc422 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonChat/Code/ChatState.cs b/Assets/Photon/PhotonChat/Code/ChatState.cs new file mode 100644 index 00000000..2c879747 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatState.cs @@ -0,0 +1,39 @@ +// ---------------------------------------------------------------------------------------------------------------------- +// The Photon Chat Api enables clients to connect to a chat server and communicate with other clients. +// ChatClient is the main class of this api. +// Photon Chat Api - Copyright (C) 2014 Exit Games GmbH +// ---------------------------------------------------------------------------------------------------------------------- + +namespace Photon.Chat +{ + /// Possible states for a Chat Client. + public enum ChatState + { + /// Peer is created but not used yet. + Uninitialized, + /// Connecting to name server. + ConnectingToNameServer, + /// Connected to name server. + ConnectedToNameServer, + /// Authenticating on current server. + Authenticating, + /// Finished authentication on current server. + Authenticated, + /// Disconnecting from name server. This is usually a transition from name server to frontend server. + DisconnectingFromNameServer, + /// Connecting to frontend server. + ConnectingToFrontEnd, + /// Connected to frontend server. + ConnectedToFrontEnd, + /// Disconnecting from frontend server. + DisconnectingFromFrontEnd, + /// Currently not used. + QueuedComingFromFrontEnd, + /// The client disconnects (from any server). + Disconnecting, + /// The client is no longer connected (to any server). + Disconnected, + /// Client was unable to connect to Name Server and will attempt to connect with an alternative network protocol (TCP). + ConnectWithFallbackProtocol + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Code/ChatState.cs.meta b/Assets/Photon/PhotonChat/Code/ChatState.cs.meta new file mode 100644 index 00000000..e862818d --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatState.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8f482d8c4fe7ade4cbb08eb4a2d83b39 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonChat/Code/ChatUserStatus.cs b/Assets/Photon/PhotonChat/Code/ChatUserStatus.cs new file mode 100644 index 00000000..08d6ef12 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatUserStatus.cs @@ -0,0 +1,35 @@ +// ---------------------------------------------------------------------------------------------------------------------- +// The Photon Chat Api enables clients to connect to a chat server and communicate with other clients. +// ChatClient is the main class of this api. +// Photon Chat Api - Copyright (C) 2014 Exit Games GmbH +// ---------------------------------------------------------------------------------------------------------------------- + +namespace Photon.Chat +{ + /// Contains commonly used status values for SetOnlineStatus. You can define your own. + /// + /// While "online" (value 2 and up), the status message will be sent to anyone who has you on his friend list. + /// + /// Define custom online status values as you like with these rules: + /// 0: Means "offline". It will be used when you are not connected. In this status, there is no status message. + /// 1: Means "invisible" and is sent to friends as "offline". They see status 0, no message but you can chat. + /// 2: And any higher value will be treated as "online". Status can be set. + /// + public static class ChatUserStatus + { + /// (0) Offline. + public const int Offline = 0; + /// (1) Be invisible to everyone. Sends no message. + public const int Invisible = 1; + /// (2) Online and available. + public const int Online = 2; + /// (3) Online but not available. + public const int Away = 3; + /// (4) Do not disturb. + public const int DND = 4; + /// (5) Looking For Game/Group. Could be used when you want to be invited or do matchmaking. + public const int LFG = 5; + /// (6) Could be used when in a room, playing. + public const int Playing = 6; + } +} diff --git a/Assets/Photon/PhotonChat/Code/ChatUserStatus.cs.meta b/Assets/Photon/PhotonChat/Code/ChatUserStatus.cs.meta new file mode 100644 index 00000000..bfd0c529 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/ChatUserStatus.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7db67e7f5face2e42b6daafcaf4e6c82 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonChat/Code/IChatClientListener.cs b/Assets/Photon/PhotonChat/Code/IChatClientListener.cs new file mode 100644 index 00000000..c711e59e --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/IChatClientListener.cs @@ -0,0 +1,148 @@ +// ---------------------------------------------------------------------------------------------------------------------- +// The Photon Chat Api enables clients to connect to a chat server and communicate with other clients. +// ChatClient is the main class of this api. +// Photon Chat Api - Copyright (C) 2014 Exit Games GmbH +// ---------------------------------------------------------------------------------------------------------------------- + + +namespace Photon.Chat +{ + using System.Collections.Generic; + using ExitGames.Client.Photon; + + /// + /// Callback interface for Chat client side. Contains callback methods to notify your app about updates. + /// Must be provided to new ChatClient in constructor + /// + public interface IChatClientListener + { + /// + /// All debug output of the library will be reported through this method. Print it or put it in a + /// buffer to use it on-screen. + /// + /// DebugLevel (severity) of the message. + /// Debug text. Print to System.Console or screen. + void DebugReturn(DebugLevel level, string message); + + /// + /// Disconnection happened. + /// + void OnDisconnected(); + + /// + /// Client is connected now. + /// + /// + /// Clients have to be connected before they can send their state, subscribe to channels and send any messages. + /// + void OnConnected(); + + /// The ChatClient's state changed. Usually, OnConnected and OnDisconnected are the callbacks to react to. + /// The new state. + void OnChatStateChange(ChatState state); + + /// + /// Notifies app that client got new messages from server + /// Number of senders is equal to number of messages in 'messages'. Sender with number '0' corresponds to message with + /// number '0', sender with number '1' corresponds to message with number '1' and so on + /// + /// channel from where messages came + /// list of users who sent messages + /// list of messages it self + void OnGetMessages(string channelName, string[] senders, object[] messages); + + /// + /// Notifies client about private message + /// + /// user who sent this message + /// message it self + /// channelName for private messages (messages you sent yourself get added to a channel per target username) + void OnPrivateMessage(string sender, object message, string channelName); + + /// + /// Result of Subscribe operation. Returns subscription result for every requested channel name. + /// + /// + /// If multiple channels sent in Subscribe operation, OnSubscribed may be called several times, each call with part of sent array or with single channel in "channels" parameter. + /// Calls order and order of channels in "channels" parameter may differ from order of channels in "channels" parameter of Subscribe operation. + /// + /// Array of channel names. + /// Per channel result if subscribed. + void OnSubscribed(string[] channels, bool[] results); + + /// + /// Result of Unsubscribe operation. Returns for channel name if the channel is now unsubscribed. + /// + /// If multiple channels sent in Unsubscribe operation, OnUnsubscribed may be called several times, each call with part of sent array or with single channel in "channels" parameter. + /// Calls order and order of channels in "channels" parameter may differ from order of channels in "channels" parameter of Unsubscribe operation. + /// Array of channel names that are no longer subscribed. + void OnUnsubscribed(string[] channels); + + /// + /// New status of another user (you get updates for users set in your friends list). + /// + /// Name of the user. + /// New status of that user. + /// True if the status contains a message you should cache locally. False: This status update does not include a message (keep any you have). + /// Message that user set. + void OnStatusUpdate(string user, int status, bool gotMessage, object message); + + /// + /// A user has subscribed to a public chat channel + /// + /// Name of the chat channel + /// UserId of the user who subscribed + void OnUserSubscribed(string channel, string user); + + /// + /// A user has unsubscribed from a public chat channel + /// + /// Name of the chat channel + /// UserId of the user who unsubscribed + void OnUserUnsubscribed(string channel, string user); + + + #if CHAT_EXTENDED + + /// + /// Properties of a public channel has been changed + /// + /// Channel name in which the properties have changed + /// The UserID of the user who changed the properties + /// The properties that have changed + void OnChannelPropertiesChanged(string channel, string senderUserId, Dictionary properties); + + /// + /// Properties of a user in a public channel has been changed + /// + /// Channel name in which the properties have changed + /// The UserID whom properties have changed + /// The UserID of the user who changed the properties + /// The properties that have changed + void OnUserPropertiesChanged(string channel, string targetUserId, string senderUserId, Dictionary properties); + + /// + /// The server uses error events to make the client aware of some issues. + /// + /// + /// This is currently used only in Chat WebHooks. + /// + /// The name of the channel in which this error info has been received + /// The text message of the error info + /// Optional error data + void OnErrorInfo(string channel, string error, object data); + + #endif + + + #if SDK_V4 + /// + /// Received a broadcast message + /// + /// Name of the chat channel + /// Message data + void OnReceiveBroadcastMessage(string channel, byte[] message); + #endif + + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Code/IChatClientListener.cs.meta b/Assets/Photon/PhotonChat/Code/IChatClientListener.cs.meta new file mode 100644 index 00000000..797bdea7 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/IChatClientListener.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bab7c8053b486e34aa0d4ca99dcbec80 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonChat/Code/PhotonChat.asmdef b/Assets/Photon/PhotonChat/Code/PhotonChat.asmdef new file mode 100644 index 00000000..bcabffe9 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/PhotonChat.asmdef @@ -0,0 +1,12 @@ +{ + "name": "PhotonChat", + "references": [], + "optionalUnityReferences": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [] +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Code/PhotonChat.asmdef.meta b/Assets/Photon/PhotonChat/Code/PhotonChat.asmdef.meta new file mode 100644 index 00000000..99f00af5 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/PhotonChat.asmdef.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 08a110bd598f7604f9519c2d7e1fb3cc +timeCreated: 1537459565 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Code/changes-chat.txt b/Assets/Photon/PhotonChat/Code/changes-chat.txt new file mode 100644 index 00000000..0db7b6fe --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/changes-chat.txt @@ -0,0 +1,146 @@ + +Photon Chat C# Client - Changelog +Exit Games GmbH - www.photonengine.com - forum.photonengine.com + + +Version 4.1.6.17 (02. August 2022) + Note: No notable changes. + +Version 4.1.6.16 (20. June 2022) + Fixed: The ProxyServerAddress is also applied when connecting to the Frontend Server (was missing in previous update). + +Version 4.1.6.15 (02. June 2022) + Added: Proxy support (with WS/WSS) to Chat API. This can be used via ConnectUsingSettings() or by setting ChatClient.ProxyServerAddress before connecting. + +Version 4.1.6.11 (22. November 2021) + Added: CustomAuthenticationType.Epic to authenticate via Epic Online Services (EOS). + Added: CustomAuthenticationType.FacebookGaming to authenticate via Facebook Gaming services. + +Version 4.1.6.10 (21. October 2021 - rev6243) + Fixed: The ChatPeer.ConfigUnitySockets(), which used a surplus typeof() for Xbox configuration. + +Version 4.1.6.6 (21. September 2021 - rev6204) + Changed: For Xbox, order of checked assemblies when getting Type SocketNativeSource. It's more likely to be in Assembly-CSharp. + +Version 4.1.6.5 (24. August 2021 - rev6181) + Updated: The default name server host to "ns.photonengine.io". When using WSS on this, it expects TLS1.2 (Win 7 and old Unity versions may not support this). + +Version 4.1.6.2 (17. June 2021) + Changed: The enumeration CustomAuthenticationType was changed to fix naming inconsistencies. Use PlayStation4 and PlayStation5 respectively. Old variants are available as obsolete. + +Version 4.1.5.2 (12. March 2021) + ADDED: CustomAuthenticationType.Playstation5 (value 12). + +Version 4.1.5.0 (03. March 2021) + Updated: ChatPeer ConfigUnitySockets() to the analog of the Realtime API. + +Version 4.1.5.0 (3. February 2021) + Internal: AuthenticationValues.Token is now an object instead of a string (so some internal code changed). This enables the server to send a byte[], which is more effective than a string. + +Version 4.1.4.6 (16. November 2020) + Added: ChatClient.PrivateChatHistoryLength field. If set before you connect, this can be used to limit the number of private messages when the server (re)subscribes the client to (still alive) a private chat channel. + Added: Protocol Fallback option for Chat. Analog to the Realtime API, Chat can now try another protocol, if the initial connect to the Name Server fails. After the timeout or when an error happened, UDP will fallback to TCP. TCP will fallback to UDP. + Added: EnableProtocolFallback in ChatClient and ChatAppSettings. When using ConnectUsingSettings, the ChatClient's value gets set and used. + Changed: Connect(appid, appversion, authValues) will only apply the authvalues parameter, if that's non-null. + Changed: ChatAppSettings field AppId is now AppIdChat (matching the value in Realtime API AppSettings). The old name is currently just obsolete. + Added: ChatAppSettings.Port to override the Name Server Port if needed. Note: Chat does not support "Alternative Ports" yet (ports pre-defined per server). + Added: ChatPeer.NameServerPortOverride value to replace/override the default per-protocol port value (by the one in the AppSettings, e.g.). + +Version 4.1.4.5 (02. September 2020) + Added: Option for extended features: Channels may send a user list, channels and users can have custom properties and there are web-forwarding flags. Needs compile define CHAT_EXTENDED. This also adds new methods to the IChatClientListener. + Changed: AuthenticationValues has been refined, analog to the changes in the Realtime API. + +Version 4.1.4.2 (8. May 2020 - rev5519) + Added: Broadcast receive and read channel using UniqueRoomID UniqueRoomID read from SubscribeChannel response + +Version 4.1.2.20 + Changed: ChatDisconnectCause enum and OnDisconnected callback usage updated to be in sync. with Realtime. + Added: ChatClient.ConnectUsingSettings(ChatAppSettings appSettings). + Added: more error logs when something fails internally. + +Version 4.1.2.19 (12. November 2019 - rev5266) + Changed: ChatPeer now look for SocketNativeSource instead of SocketWebTcpNativeDynamic when the target platform is XB One. A new Xbox addon is coming up on our SDK page. + +Version 4.1.2.16 (25. June 2019 - rev5168) + Added: ChatClient.TryGetPrivateChannelByUser. + +Version 4.1.2.14 (6. May 2019 - rev5097) + Changed: Chat API changes are now listed in a separate changes file. + +Version 4.1.2.13 (3. May 2019 - rev5086) + Fixed: Properly add local client's UserId to public channels' Subscribers list when applicable. + +Version 4.1.2.11 (15. April 2019 - rev5043) + Added: Feature: PublishSubscribers. Per channel, you can now define if the server broadcasts users joining and leaving. + Fixed: proper way to handle Subscribe event when channel properties are returned. + Added: Viveport Auth Provider enum value. + Added: Switch-related workaround. Setting a Thread.Name was causing a crash in some exports on console. This affects Unity to Nintendo Switch exports. + Added: ChannelCreationOptions class to be used in the new Subscribe overload method. + Changed: Chat to use the same 1.8 serialization as Realtime/PUN. This also now matches the SocketWebTcp.SerializationProtocol default. + +Version 4.1.2.9 (13. February 2019 - rev4985) + Added: Client API for Max Subscribers and Publish Subscribers features inside public channels. + +Version 4.1.2.1 (31. July 2018 - rev4787) + Changed: Namespace from "ExitGames.Client.Photon.Chat" to "Photon.Chat". + Added: ConnectAndSetStatus method. + +Version 4.1.1.17 (11. October 2017 - rev4465) + Fixed: Unity "6" compile define is now UNITY_2017. + +Version 4.1.1.15 (17. July 2017 - rev4232) + Added: ChatClient.TransportProtocol as shortcut to the use PhotonPeer's TransportProtocol value. This enables setting the protocol easily while not connected. + Added: ChatClient.SocketImplementationConfig as shortcut to modify PhotonPeer's SocketImplementationConfig. This enables you to setup which IPhotonSocket implementation to use for which network protocol. + Changed: ChatPeer.ConfigUnitySockets() to try to find our websocket implementations in the assembly, making the SocketWebTcpCoroutine and SocketWebTcpThread classes optional. + Removed: Class "SocketWebTcp" is no longer found by ConfigUnitySockets(). + +Version 4.1.1.14 (5. July 2017 - rev4191) + Added: ChatClient can optionally run a thread to call SendOutgoingCommands in intervals. This makes sure the connection doesn't fail easily (e.g. when Unity is loading scenes, etc.). You still have to call Service to dispatch received messages. + Added: ChatClient.UseBackgroundWorkerForSending. Set this to true, to use the new background thread. Note: Do not use this in WebGL exports from Unity cause Threads are unavailable in them. + +Version 4.1.1.2 (13. September 2016 - rev3652) + Changed: GetNameServerAddress() is the same in Chat and LoadBalancing APIs now. + Changed: ChatPeer now has ConfigUnitySockets(), which defines the SocketImplementationConfig. It's only used in Unity (using UNITY define). + Changed: ChatClient is not setting socket implementations anymore. + Added: Hashtable definition to use Photon's own implementation for Windows Store builds (NETFX_CORE). This must be used but it means you to use the same Hashtable definition in all builds (no matter if 8.1 or 10). + Added: Support for WebGL export in Unity. + +Version 4.0.5.0 (3. December 2015 - rev3144) + Added: A MessageLimit field for ChatClient and ChatChannel to limit the number of messages the client keeps locally. It might be useful to limit memory usage in long running chats. Set ChatClient.MessageLimit to apply the limit to any channel subscribed afterwards or apply a limit individually. + +Version 4.0.0.11 (28. October 2015 - rev3093) + Added: More sanity checks on operations (empty userId or secret, max friends). + Added: Special debug logging when the server returns an error for "Operation Unknown". In this case, it's highly likely that you don't use a Chat AppId. + Added: More helpful error logging. + +Version 4.0.0.10 (14. July 2015 - rev2988) + Added: A Unity 4.6 demo with uGUI. It's missing a few features but should give you a good start to making your own. + Added: Unity/WebGL support (merged from PUN). + Added: Breaking! IChatClientListener.DebugReturn(). Photon lib and chat client log via this method (no logging to console by default). + Changed: ChatClient.CustomAuthenticationValues is now .AuthValues. You can use those values to identify a user, even if you don't setup an external, custom authentication service. + Changed: ChatClient.UserId no longer directly stores the id but puts it into AuthValues. This means, the UserId could also be set via setting AuthValues. + Changed: The API of AuthenticationValues. There is now the UserId and AddAuthParameter() replaces the less general SetAuthParameters() (which only set specific key/values). + Note: All users should have a UserId. You can set chatClient.UserId before you connect, or you can set the AuthenticationValues in Connect(..., authValues) to set a UserId. + Added: ChatChannel.ToStringMessages(), which gets all messages in a single string, line by line. The format is "Sender:Message". + Added: ChatClient.TryGetChannel() to find a channel only by name, no matter if public or private. + +Version 4.0.0.7 (12. January 2015 - rev2763) + Internal: Changed code for UserID from 7 to 225. The latter is used in LoadBalancing, too, so we want to re-use the code here. + +Version 4.0.0.1 (17. June 2014 - rev2663) + Changed: How the server responds to Subscribe and Unsubscribe. Events will now contain success/failure of those. This allows us to send the answer after calling a WebHook if needed and we can even send it to multiple clients (which authenticated with the same userID). + Changed: Handling of subscription responsed. This is done to allow web services to subscribe a client remotely and to be able to prevent joining some channel that a user should not join (the channel of some guild or another team, e.g.). + Changed: Debug loggging. In Unity we can't use Debug.Assert, etc. So we have to log more cleanly. This works in Editor and several platforms (but not all). + Changed: Folder for Chat API. It now begins with "Photon" which provides some context no matter where you copy the files. Easier to find in Unity projects. + Changed: Operation FriendList and method SendFriendList renamed to AddFriends + Added: Operation RemoveFriends and corresponding method in ChatClient.cs + Added: Console Demo has new command 'fr' to remove friends + +Version 4.0.0.0 (23. May 2014 - rev2614) + Added: SendPrivateMessage() overload that has option to encrypt private messages. Public messages don't need encryption. + Removed: lastId and LastMessageIndex from channels. Those were impractical and should be removed from the API. + Changed: UserStatus class to ChatUserStatus. + Changed: Most classes are defined in their own file now. + Removed: Folders "Shared" and their subfolders. This gives a much better overview. + Added: Handling for event SubscribeResponse. This is not actually a response but gives you info about channels that got subscribed (e.g. when you re-login quickly or when a user is logged in in multiple clients). + Added: HandleSubscriptionResults() method to handle the event and proper responses. \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Code/changes-chat.txt.meta b/Assets/Photon/PhotonChat/Code/changes-chat.txt.meta new file mode 100644 index 00000000..e18ac756 --- /dev/null +++ b/Assets/Photon/PhotonChat/Code/changes-chat.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e5c3dda6f11fe7845989297c8a603dc2 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos.meta b/Assets/Photon/PhotonChat/Demos.meta new file mode 100644 index 00000000..9d520456 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 801c62f7d03cb463ba20067deb330234 +folderAsset: yes +timeCreated: 1537874612 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/Common.meta b/Assets/Photon/PhotonChat/Demos/Common.meta new file mode 100644 index 00000000..9661d1ee --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/Common.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1aab6e4c105054f7e91af2cf027064d1 +folderAsset: yes +timeCreated: 1538395282 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/Common/EventSystemSpawner.cs b/Assets/Photon/PhotonChat/Demos/Common/EventSystemSpawner.cs new file mode 100644 index 00000000..d58b6cd8 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/Common/EventSystemSpawner.cs @@ -0,0 +1,40 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// +// +// For additive Scene Loading context, eventSystem can't be added to each scene and instead should be instantiated only if necessary. +// https://answers.unity.com/questions/1403002/multiple-eventsystem-in-scene-this-is-not-supporte.html +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.EventSystems; + +namespace Photon.Chat.UtilityScripts +{ + /// + /// Event system spawner. Will add an EventSystem GameObject with an EventSystem component and a StandaloneInputModule component. + /// Use this in additive scene loading context where you would otherwise get a "Multiple EventSystem in scene... this is not supported" error from Unity. + /// + public class EventSystemSpawner : MonoBehaviour + { + void OnEnable() + { + #if ENABLE_INPUT_SYSTEM && !ENABLE_LEGACY_INPUT_MANAGER + Debug.LogError("PUN Demos are not compatible with the New Input System, unless you enable \"Both\" in: Edit > Project Settings > Player > Active Input Handling. Pausing App."); + Debug.Break(); + return; + #endif + + EventSystem sceneEventSystem = FindObjectOfType(); + if (sceneEventSystem == null) + { + GameObject eventSystem = new GameObject("EventSystem"); + + eventSystem.AddComponent(); + eventSystem.AddComponent(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Demos/Common/EventSystemSpawner.cs.meta b/Assets/Photon/PhotonChat/Demos/Common/EventSystemSpawner.cs.meta new file mode 100644 index 00000000..1fcda3d6 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/Common/EventSystemSpawner.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bd5ff9965d0784cad8e07f5eb9cb9c06 +timeCreated: 1538396402 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/Common/OnStartDelete.cs b/Assets/Photon/PhotonChat/Demos/Common/OnStartDelete.cs new file mode 100644 index 00000000..46ee2a01 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/Common/OnStartDelete.cs @@ -0,0 +1,24 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Part of: Photon Unity Utilities, +// +// +// This component will destroy the GameObject it is attached to (in Start()). +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + +using UnityEngine; + +namespace Photon.Chat.UtilityScripts +{ + /// This component will destroy the GameObject it is attached to (in Start()). + public class OnStartDelete : MonoBehaviour + { + // Use this for initialization + private void Start() + { + Destroy(this.gameObject); + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Demos/Common/OnStartDelete.cs.meta b/Assets/Photon/PhotonChat/Demos/Common/OnStartDelete.cs.meta new file mode 100644 index 00000000..c1b54284 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/Common/OnStartDelete.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 0b1cdd4de66f84fa1af4cb197e5d901d +timeCreated: 1538396603 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/Common/TextButtonTransition.cs b/Assets/Photon/PhotonChat/Demos/Common/TextButtonTransition.cs new file mode 100644 index 00000000..a6fffebb --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/Common/TextButtonTransition.cs @@ -0,0 +1,70 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// +// +// Use this on Button texts to have some color transition on the text as well without corrupting button's behaviour. +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace Photon.Chat.UtilityScripts +{ + + /// + /// Use this on Button texts to have some color transition on the text as well without corrupting button's behaviour. + /// + [RequireComponent(typeof(Text))] + public class TextButtonTransition : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler + { + + Text _text; + + /// + /// The selectable Component. + /// + public Selectable Selectable; + + /// + /// The color of the normal of the transition state. + /// + public Color NormalColor= Color.white; + + /// + /// The color of the hover of the transition state. + /// + public Color HoverColor = Color.black; + + public void Awake() + { + _text = GetComponent(); + } + + public void OnEnable() + { + _text.color = NormalColor; + } + + public void OnDisable() + { + _text.color = NormalColor; + } + + public void OnPointerEnter(PointerEventData eventData) + { + if (Selectable == null || Selectable.IsInteractable()) { + _text.color = HoverColor; + } + } + + public void OnPointerExit(PointerEventData eventData) + { + if (Selectable == null || Selectable.IsInteractable()) { + _text.color = NormalColor; + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Demos/Common/TextButtonTransition.cs.meta b/Assets/Photon/PhotonChat/Demos/Common/TextButtonTransition.cs.meta new file mode 100644 index 00000000..460ca081 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/Common/TextButtonTransition.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 060fe8295761a47268586d33ef5673e0 +timeCreated: 1538395273 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/Common/TextToggleIsOnTransition.cs b/Assets/Photon/PhotonChat/Demos/Common/TextToggleIsOnTransition.cs new file mode 100644 index 00000000..dd2a4769 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/Common/TextToggleIsOnTransition.cs @@ -0,0 +1,86 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// +// +// Use this on Button texts to have some color transition on the text as well without corrupting button's behaviour. +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + +namespace Photon.Chat.UtilityScripts +{ + + /// + /// Use this on toggles texts to have some color transition on the text depending on the isOn State. + /// + [RequireComponent(typeof(Text))] + public class TextToggleIsOnTransition : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler + { + + /// + /// The toggle Component. + /// + public Toggle toggle; + + Text _text; + + /// + /// The color of the normal on transition state. + /// + public Color NormalOnColor= Color.white; + + /// + /// The color of the normal off transition state. + /// + public Color NormalOffColor = Color.black; + + /// + /// The color of the hover on transition state. + /// + public Color HoverOnColor= Color.black; + + /// + /// The color of the hover off transition state. + /// + public Color HoverOffColor = Color.black; + + bool isHover; + + public void OnEnable() + { + _text = GetComponent(); + + OnValueChanged (toggle.isOn); + + toggle.onValueChanged.AddListener(OnValueChanged); + + } + + public void OnDisable() + { + toggle.onValueChanged.RemoveListener(OnValueChanged); + } + + public void OnValueChanged(bool isOn) + { + _text.color = isOn? (isHover?HoverOnColor:HoverOnColor) : (isHover?NormalOffColor:NormalOffColor) ; + } + + public void OnPointerEnter(PointerEventData eventData) + { + isHover = true; + _text.color = toggle.isOn?HoverOnColor:HoverOffColor; + } + + public void OnPointerExit(PointerEventData eventData) + { + isHover = false; + _text.color = toggle.isOn?NormalOnColor:NormalOffColor; + } + + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Demos/Common/TextToggleIsOnTransition.cs.meta b/Assets/Photon/PhotonChat/Demos/Common/TextToggleIsOnTransition.cs.meta new file mode 100644 index 00000000..a97b21f7 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/Common/TextToggleIsOnTransition.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 1e808171e8963498bb1db072a977d750 +timeCreated: 1538395754 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat.meta b/Assets/Photon/PhotonChat/Demos/DemoChat.meta new file mode 100644 index 00000000..40682063 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 4e3a46219ebf94310a9f347733f88f31 +folderAsset: yes +timeCreated: 1537874626 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/AppSettingsExtensions.cs b/Assets/Photon/PhotonChat/Demos/DemoChat/AppSettingsExtensions.cs new file mode 100644 index 00000000..22c59f49 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/AppSettingsExtensions.cs @@ -0,0 +1,33 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Demo code for Photon Chat in Unity. +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + + +using Photon.Realtime; + + +namespace Photon.Chat.Demo +{ + public static class AppSettingsExtensions + { + public static ChatAppSettings GetChatSettings(this AppSettings appSettings) + { + return new ChatAppSettings + { + AppIdChat = appSettings.AppIdChat, + AppVersion = appSettings.AppVersion, + FixedRegion = appSettings.IsBestRegion ? null : appSettings.FixedRegion, + NetworkLogging = appSettings.NetworkLogging, + Protocol = appSettings.Protocol, + EnableProtocolFallback = appSettings.EnableProtocolFallback, + Server = appSettings.IsDefaultNameServer ? null : appSettings.Server, + Port = (ushort)appSettings.Port, + ProxyServer = appSettings.ProxyServer + // values not copied from AppSettings class: AuthMode + // values not needed from AppSettings class: EnableLobbyStatistics + }; + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/AppSettingsExtensions.cs.meta b/Assets/Photon/PhotonChat/Demos/DemoChat/AppSettingsExtensions.cs.meta new file mode 100644 index 00000000..27b14079 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/AppSettingsExtensions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4fcf4818ecc9abf4e9b7e0c37af9b851 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/ChannelSelector.cs b/Assets/Photon/PhotonChat/Demos/DemoChat/ChannelSelector.cs new file mode 100644 index 00000000..4bf9644a --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/ChannelSelector.cs @@ -0,0 +1,32 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Demo code for Photon Chat in Unity. +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + + +using UnityEngine; +using UnityEngine.EventSystems; +using UnityEngine.UI; + + +namespace Photon.Chat.Demo +{ + public class ChannelSelector : MonoBehaviour, IPointerClickHandler + { + public string Channel; + + public void SetChannel(string channel) + { + this.Channel = channel; + Text t = this.GetComponentInChildren(); + t.text = this.Channel; + } + + public void OnPointerClick(PointerEventData eventData) + { + ChatGui handler = FindObjectOfType(); + handler.ShowChannel(this.Channel); + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/ChannelSelector.cs.meta b/Assets/Photon/PhotonChat/Demos/DemoChat/ChannelSelector.cs.meta new file mode 100644 index 00000000..f2739cdb --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/ChannelSelector.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 48caa72710147fc4f9389b0b5ec6137d +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/ChatAppIdCheckerUI.cs b/Assets/Photon/PhotonChat/Demos/DemoChat/ChatAppIdCheckerUI.cs new file mode 100644 index 00000000..0bef6116 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/ChatAppIdCheckerUI.cs @@ -0,0 +1,60 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Demo code for Photon Chat in Unity. +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + + +using UnityEngine; + + +using UnityEngine.UI; +#if PHOTON_UNITY_NETWORKING +using Photon.Pun; +#endif + +namespace Photon.Chat.Demo +{ + /// + /// This is used in the Editor Splash to properly inform the developer about the chat AppId requirement. + /// + [ExecuteInEditMode] + public class ChatAppIdCheckerUI : MonoBehaviour + { + public Text Description; + public bool WizardOpenedOnce; // avoid opening the wizard again and again + + // TODO: maybe this can run on Start(), not on Update()?! + public void Update() + { + bool showWarning = false; + string descriptionText = string.Empty; + + #if PHOTON_UNITY_NETWORKING + showWarning = string.IsNullOrEmpty(PhotonNetwork.PhotonServerSettings.AppSettings.AppIdChat); + if (showWarning) + { + descriptionText = "WARNING:\nPlease setup a Chat AppId in the PhotonServerSettings file."; + } + #else + ChatGui cGui = FindObjectOfType(); // TODO: this could be a serialized reference instead of finding this each time + + showWarning = cGui == null || string.IsNullOrEmpty(cGui.chatAppSettings.AppIdChat); + if (showWarning) + { + descriptionText = "Please setup the Chat AppId.\nOpen the setup panel: Window, Photon Chat, Setup."; + + #if UNITY_EDITOR + if (!WizardOpenedOnce) + { + WizardOpenedOnce = true; + UnityEditor.EditorApplication.ExecuteMenuItem("Window/Photon Chat/Setup"); + } + #endif + } + #endif + + this.Description.text = descriptionText; + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/ChatAppIdCheckerUI.cs.meta b/Assets/Photon/PhotonChat/Demos/DemoChat/ChatAppIdCheckerUI.cs.meta new file mode 100644 index 00000000..a4a8033b --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/ChatAppIdCheckerUI.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 4eb1284704a754507acb17b07b888086 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/ChatGui.cs b/Assets/Photon/PhotonChat/Demos/DemoChat/ChatGui.cs new file mode 100644 index 00000000..6eb444c6 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/ChatGui.cs @@ -0,0 +1,665 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Demo code for Photon Chat in Unity. +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; + +using UnityEngine; +using UnityEngine.UI; + +using Photon.Chat; +using Photon.Realtime; +using AuthenticationValues = Photon.Chat.AuthenticationValues; +#if PHOTON_UNITY_NETWORKING +using Photon.Pun; +#endif + + +namespace Photon.Chat.Demo +{ + /// + /// This simple Chat UI demonstrate basics usages of the Chat Api + /// + /// + /// The ChatClient basically lets you create any number of channels. + /// + /// some friends are already set in the Chat demo "DemoChat-Scene", 'Joe', 'Jane' and 'Bob', simply log with them so that you can see the status changes in the Interface + /// + /// Workflow: + /// Create ChatClient, Connect to a server with your AppID, Authenticate the user (apply a unique name,) + /// and subscribe to some channels. + /// Subscribe a channel before you publish to that channel! + /// + /// + /// Note: + /// Don't forget to call ChatClient.Service() on Update to keep the Chatclient operational. + /// + public class ChatGui : MonoBehaviour, IChatClientListener + { + + public string[] ChannelsToJoinOnConnect; // set in inspector. Demo channels to join automatically. + + public string[] FriendsList; + + public int HistoryLengthToFetch; // set in inspector. Up to a certain degree, previously sent messages can be fetched for context + + public string UserName { get; set; } + + private string selectedChannelName; // mainly used for GUI/input + + public ChatClient chatClient; + + #if !PHOTON_UNITY_NETWORKING + public ChatAppSettings ChatAppSettings + { + get { return this.chatAppSettings; } + } + + [SerializeField] + #endif + protected internal ChatAppSettings chatAppSettings; + + + public GameObject missingAppIdErrorPanel; + public GameObject ConnectingLabel; + + public RectTransform ChatPanel; // set in inspector (to enable/disable panel) + public GameObject UserIdFormPanel; + public InputField InputFieldChat; // set in inspector + public Text CurrentChannelText; // set in inspector + public Toggle ChannelToggleToInstantiate; // set in inspector + + + public GameObject FriendListUiItemtoInstantiate; + + private readonly Dictionary channelToggles = new Dictionary(); + + private readonly Dictionary friendListItemLUT = new Dictionary(); + + public bool ShowState = true; + public GameObject Title; + public Text StateText; // set in inspector + public Text UserIdText; // set in inspector + + // private static string WelcomeText = "Welcome to chat. Type \\help to list commands."; + private static string HelpText = "\n -- HELP --\n" + + "To subscribe to channel(s) (channelnames are case sensitive) : \n" + + "\t\\subscribe \n" + + "\tor\n" + + "\t\\s \n" + + "\n" + + "To leave channel(s):\n" + + "\t\\unsubscribe \n" + + "\tor\n" + + "\t\\u \n" + + "\n" + + "To switch the active channel\n" + + "\t\\join \n" + + "\tor\n" + + "\t\\j \n" + + "\n" + + "To send a private message: (username are case sensitive)\n" + + "\t\\msg \n" + + "\n" + + "To change status:\n" + + "\t\\state \n" + + "0 = Offline " + + "1 = Invisible " + + "2 = Online " + + "3 = Away \n" + + "4 = Do not disturb " + + "5 = Looking For Group " + + "6 = Playing" + + "\n\n" + + "To clear the current chat tab (private chats get closed):\n" + + "\t\\clear"; + + + public void Start() + { + DontDestroyOnLoad(this.gameObject); + + this.UserIdText.text = ""; + this.StateText.text = ""; + this.StateText.gameObject.SetActive(true); + this.UserIdText.gameObject.SetActive(true); + this.Title.SetActive(true); + this.ChatPanel.gameObject.SetActive(false); + this.ConnectingLabel.SetActive(false); + + if (string.IsNullOrEmpty(this.UserName)) + { + this.UserName = "user" + Environment.TickCount%99; //made-up username + } + + #if PHOTON_UNITY_NETWORKING + this.chatAppSettings = PhotonNetwork.PhotonServerSettings.AppSettings.GetChatSettings(); + #endif + + bool appIdPresent = !string.IsNullOrEmpty(this.chatAppSettings.AppIdChat); + + this.missingAppIdErrorPanel.SetActive(!appIdPresent); + this.UserIdFormPanel.gameObject.SetActive(appIdPresent); + + if (!appIdPresent) + { + Debug.LogError("You need to set the chat app ID in the PhotonServerSettings file in order to continue."); + } + } + + public void Connect() + { + this.UserIdFormPanel.gameObject.SetActive(false); + + this.chatClient = new ChatClient(this); + #if !UNITY_WEBGL + this.chatClient.UseBackgroundWorkerForSending = true; + #endif + this.chatClient.AuthValues = new AuthenticationValues(this.UserName); + this.chatClient.ConnectUsingSettings(this.chatAppSettings); + + this.ChannelToggleToInstantiate.gameObject.SetActive(false); + Debug.Log("Connecting as: " + this.UserName); + + this.ConnectingLabel.SetActive(true); + } + + /// To avoid that the Editor becomes unresponsive, disconnect all Photon connections in OnDestroy. + public void OnDestroy() + { + if (this.chatClient != null) + { + this.chatClient.Disconnect(); + } + } + + /// To avoid that the Editor becomes unresponsive, disconnect all Photon connections in OnApplicationQuit. + public void OnApplicationQuit() + { + if (this.chatClient != null) + { + this.chatClient.Disconnect(); + } + } + + public void Update() + { + if (this.chatClient != null) + { + this.chatClient.Service(); // make sure to call this regularly! it limits effort internally, so calling often is ok! + } + + // check if we are missing context, which means we got kicked out to get back to the Photon Demo hub. + if ( this.StateText == null) + { + Destroy(this.gameObject); + return; + } + + this.StateText.gameObject.SetActive(this.ShowState); // this could be handled more elegantly, but for the demo it's ok. + } + + + public void OnEnterSend() + { + if (Input.GetKey(KeyCode.Return) || Input.GetKey(KeyCode.KeypadEnter)) + { + this.SendChatMessage(this.InputFieldChat.text); + this.InputFieldChat.text = ""; + } + } + + public void OnClickSend() + { + if (this.InputFieldChat != null) + { + this.SendChatMessage(this.InputFieldChat.text); + this.InputFieldChat.text = ""; + } + } + + + public int TestLength = 2048; + private byte[] testBytes = new byte[2048]; + + private void SendChatMessage(string inputLine) + { + if (string.IsNullOrEmpty(inputLine)) + { + return; + } + if ("test".Equals(inputLine)) + { + if (this.TestLength != this.testBytes.Length) + { + this.testBytes = new byte[this.TestLength]; + } + + this.chatClient.SendPrivateMessage(this.chatClient.AuthValues.UserId, this.testBytes, true); + } + + + bool doingPrivateChat = this.chatClient.PrivateChannels.ContainsKey(this.selectedChannelName); + string privateChatTarget = string.Empty; + if (doingPrivateChat) + { + // the channel name for a private conversation is (on the client!!) always composed of both user's IDs: "this:remote" + // so the remote ID is simple to figure out + + string[] splitNames = this.selectedChannelName.Split(new char[] { ':' }); + privateChatTarget = splitNames[1]; + } + //UnityEngine.Debug.Log("selectedChannelName: " + selectedChannelName + " doingPrivateChat: " + doingPrivateChat + " privateChatTarget: " + privateChatTarget); + + + if (inputLine[0].Equals('\\')) + { + string[] tokens = inputLine.Split(new char[] {' '}, 2); + if (tokens[0].Equals("\\help")) + { + this.PostHelpToCurrentChannel(); + } + if (tokens[0].Equals("\\state")) + { + int newState = 0; + + + List messages = new List(); + messages.Add ("i am state " + newState); + string[] subtokens = tokens[1].Split(new char[] {' ', ','}); + + if (subtokens.Length > 0) + { + newState = int.Parse(subtokens[0]); + } + + if (subtokens.Length > 1) + { + messages.Add(subtokens[1]); + } + + this.chatClient.SetOnlineStatus(newState,messages.ToArray()); // this is how you set your own state and (any) message + } + else if ((tokens[0].Equals("\\subscribe") || tokens[0].Equals("\\s")) && !string.IsNullOrEmpty(tokens[1])) + { + this.chatClient.Subscribe(tokens[1].Split(new char[] {' ', ','})); + } + else if ((tokens[0].Equals("\\unsubscribe") || tokens[0].Equals("\\u")) && !string.IsNullOrEmpty(tokens[1])) + { + this.chatClient.Unsubscribe(tokens[1].Split(new char[] {' ', ','})); + } + else if (tokens[0].Equals("\\clear")) + { + if (doingPrivateChat) + { + this.chatClient.PrivateChannels.Remove(this.selectedChannelName); + } + else + { + ChatChannel channel; + if (this.chatClient.TryGetChannel(this.selectedChannelName, doingPrivateChat, out channel)) + { + channel.ClearMessages(); + } + } + } + else if (tokens[0].Equals("\\msg") && !string.IsNullOrEmpty(tokens[1])) + { + string[] subtokens = tokens[1].Split(new char[] {' ', ','}, 2); + if (subtokens.Length < 2) return; + + string targetUser = subtokens[0]; + string message = subtokens[1]; + this.chatClient.SendPrivateMessage(targetUser, message); + } + else if ((tokens[0].Equals("\\join") || tokens[0].Equals("\\j")) && !string.IsNullOrEmpty(tokens[1])) + { + string[] subtokens = tokens[1].Split(new char[] { ' ', ',' }, 2); + + // If we are already subscribed to the channel we directly switch to it, otherwise we subscribe to it first and then switch to it implicitly + if (this.channelToggles.ContainsKey(subtokens[0])) + { + this.ShowChannel(subtokens[0]); + } + else + { + this.chatClient.Subscribe(new string[] { subtokens[0] }); + } + } + #if CHAT_EXTENDED + else if ((tokens[0].Equals("\\nickname") || tokens[0].Equals("\\nick") ||tokens[0].Equals("\\n")) && !string.IsNullOrEmpty(tokens[1])) + { + if (!doingPrivateChat) + { + this.chatClient.SetCustomUserProperties(this.selectedChannelName, this.chatClient.UserId, new Dictionary {{"Nickname", tokens[1]}}); + } + + } + #endif + else + { + Debug.Log("The command '" + tokens[0] + "' is invalid."); + } + } + else + { + if (doingPrivateChat) + { + this.chatClient.SendPrivateMessage(privateChatTarget, inputLine); + } + else + { + this.chatClient.PublishMessage(this.selectedChannelName, inputLine); + } + } + } + + public void PostHelpToCurrentChannel() + { + this.CurrentChannelText.text += HelpText; + } + + public void DebugReturn(ExitGames.Client.Photon.DebugLevel level, string message) + { + if (level == ExitGames.Client.Photon.DebugLevel.ERROR) + { + Debug.LogError(message); + } + else if (level == ExitGames.Client.Photon.DebugLevel.WARNING) + { + Debug.LogWarning(message); + } + else + { + Debug.Log(message); + } + } + + public void OnConnected() + { + if (this.ChannelsToJoinOnConnect != null && this.ChannelsToJoinOnConnect.Length > 0) + { + this.chatClient.Subscribe(this.ChannelsToJoinOnConnect, this.HistoryLengthToFetch); + } + + this.ConnectingLabel.SetActive(false); + + this.UserIdText.text = "Connected as "+ this.UserName; + + this.ChatPanel.gameObject.SetActive(true); + + if (this.FriendsList!=null && this.FriendsList.Length>0) + { + this.chatClient.AddFriends(this.FriendsList); // Add some users to the server-list to get their status updates + + // add to the UI as well + foreach(string _friend in this.FriendsList) + { + if (this.FriendListUiItemtoInstantiate != null && _friend!= this.UserName) + { + this.InstantiateFriendButton(_friend); + } + + } + + } + + if (this.FriendListUiItemtoInstantiate != null) + { + this.FriendListUiItemtoInstantiate.SetActive(false); + } + + + this.chatClient.SetOnlineStatus(ChatUserStatus.Online); // You can set your online state (without a mesage). + } + + public void OnDisconnected() + { + Debug.Log("OnDisconnected()"); + this.ConnectingLabel.SetActive(false); + } + + public void OnChatStateChange(ChatState state) + { + // use OnConnected() and OnDisconnected() + // this method might become more useful in the future, when more complex states are being used. + + this.StateText.text = state.ToString(); + } + + public void OnSubscribed(string[] channels, bool[] results) + { + // in this demo, we simply send a message into each channel. This is NOT a must have! + foreach (string channel in channels) + { + this.chatClient.PublishMessage(channel, "says 'hi'."); // you don't HAVE to send a msg on join but you could. + + if (this.ChannelToggleToInstantiate != null) + { + this.InstantiateChannelButton(channel); + + } + } + + Debug.Log("OnSubscribed: " + string.Join(", ", channels)); + + /* + // select first subscribed channel in alphabetical order + if (this.chatClient.PublicChannels.Count > 0) + { + var l = new List(this.chatClient.PublicChannels.Keys); + l.Sort(); + string selected = l[0]; + if (this.channelToggles.ContainsKey(selected)) + { + ShowChannel(selected); + foreach (var c in this.channelToggles) + { + c.Value.isOn = false; + } + this.channelToggles[selected].isOn = true; + AddMessageToSelectedChannel(WelcomeText); + } + } + */ + + // Switch to the first newly created channel + this.ShowChannel(channels[0]); + } + + /// + public void OnSubscribed(string channel, string[] users, Dictionary properties) + { + Debug.LogFormat("OnSubscribed: {0}, users.Count: {1} Channel-props: {2}.", channel, users.Length, properties.ToStringFull()); + } + + private void InstantiateChannelButton(string channelName) + { + if (this.channelToggles.ContainsKey(channelName)) + { + Debug.Log("Skipping creation for an existing channel toggle."); + return; + } + + Toggle cbtn = (Toggle)Instantiate(this.ChannelToggleToInstantiate); + cbtn.gameObject.SetActive(true); + cbtn.GetComponentInChildren().SetChannel(channelName); + cbtn.transform.SetParent(this.ChannelToggleToInstantiate.transform.parent, false); + + this.channelToggles.Add(channelName, cbtn); + } + + private void InstantiateFriendButton(string friendId) + { + GameObject fbtn = (GameObject)Instantiate(this.FriendListUiItemtoInstantiate); + fbtn.gameObject.SetActive(true); + FriendItem _friendItem = fbtn.GetComponent(); + + _friendItem.FriendId = friendId; + + fbtn.transform.SetParent(this.FriendListUiItemtoInstantiate.transform.parent, false); + + this.friendListItemLUT[friendId] = _friendItem; + } + + + public void OnUnsubscribed(string[] channels) + { + foreach (string channelName in channels) + { + if (this.channelToggles.ContainsKey(channelName)) + { + Toggle t = this.channelToggles[channelName]; + Destroy(t.gameObject); + + this.channelToggles.Remove(channelName); + + Debug.Log("Unsubscribed from channel '" + channelName + "'."); + + // Showing another channel if the active channel is the one we unsubscribed from before + if (channelName == this.selectedChannelName && this.channelToggles.Count > 0) + { + IEnumerator> firstEntry = this.channelToggles.GetEnumerator(); + firstEntry.MoveNext(); + + this.ShowChannel(firstEntry.Current.Key); + + firstEntry.Current.Value.isOn = true; + } + } + else + { + Debug.Log("Can't unsubscribe from channel '" + channelName + "' because you are currently not subscribed to it."); + } + } + } + + public void OnGetMessages(string channelName, string[] senders, object[] messages) + { + if (channelName.Equals(this.selectedChannelName)) + { + // update text + this.ShowChannel(this.selectedChannelName); + } + } + + public void OnPrivateMessage(string sender, object message, string channelName) + { + // as the ChatClient is buffering the messages for you, this GUI doesn't need to do anything here + // you also get messages that you sent yourself. in that case, the channelName is determinded by the target of your msg + this.InstantiateChannelButton(channelName); + + byte[] msgBytes = message as byte[]; + if (msgBytes != null) + { + Debug.Log("Message with byte[].Length: "+ msgBytes.Length); + } + if (this.selectedChannelName.Equals(channelName)) + { + this.ShowChannel(channelName); + } + } + + /// + /// New status of another user (you get updates for users set in your friends list). + /// + /// Name of the user. + /// New status of that user. + /// True if the status contains a message you should cache locally. False: This status update does not include a + /// message (keep any you have). + /// Message that user set. + public void OnStatusUpdate(string user, int status, bool gotMessage, object message) + { + + Debug.LogWarning("status: " + string.Format("{0} is {1}. Msg:{2}", user, status, message)); + + if (this.friendListItemLUT.ContainsKey(user)) + { + FriendItem _friendItem = this.friendListItemLUT[user]; + if ( _friendItem!=null) _friendItem.OnFriendStatusUpdate(status,gotMessage,message); + } + } + + public void OnUserSubscribed(string channel, string user) + { + Debug.LogFormat("OnUserSubscribed: channel=\"{0}\" userId=\"{1}\"", channel, user); + } + + public void OnUserUnsubscribed(string channel, string user) + { + Debug.LogFormat("OnUserUnsubscribed: channel=\"{0}\" userId=\"{1}\"", channel, user); + } + + /// + public void OnChannelPropertiesChanged(string channel, string userId, Dictionary properties) + { + Debug.LogFormat("OnChannelPropertiesChanged: {0} by {1}. Props: {2}.", channel, userId, Extensions.ToStringFull(properties)); + } + + public void OnUserPropertiesChanged(string channel, string targetUserId, string senderUserId, Dictionary properties) + { + Debug.LogFormat("OnUserPropertiesChanged: (channel:{0} user:{1}) by {2}. Props: {3}.", channel, targetUserId, senderUserId, Extensions.ToStringFull(properties)); + } + + /// + public void OnErrorInfo(string channel, string error, object data) + { + Debug.LogFormat("OnErrorInfo for channel {0}. Error: {1} Data: {2}", channel, error, data); + } + + public void AddMessageToSelectedChannel(string msg) + { + ChatChannel channel = null; + bool found = this.chatClient.TryGetChannel(this.selectedChannelName, out channel); + if (!found) + { + Debug.Log("AddMessageToSelectedChannel failed to find channel: " + this.selectedChannelName); + return; + } + + if (channel != null) + { + channel.Add("Bot", msg,0); //TODO: how to use msgID? + } + } + + + + public void ShowChannel(string channelName) + { + if (string.IsNullOrEmpty(channelName)) + { + return; + } + + ChatChannel channel = null; + bool found = this.chatClient.TryGetChannel(channelName, out channel); + if (!found) + { + Debug.Log("ShowChannel failed to find channel: " + channelName); + return; + } + + this.selectedChannelName = channelName; + this.CurrentChannelText.text = channel.ToStringMessages(); + Debug.Log("ShowChannel: " + this.selectedChannelName); + + foreach (KeyValuePair pair in this.channelToggles) + { + pair.Value.isOn = pair.Key == channelName ? true : false; + } + } + + public void OpenDashboard() + { + Application.OpenURL("https://dashboard.photonengine.com"); + } + + + + + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/ChatGui.cs.meta b/Assets/Photon/PhotonChat/Demos/DemoChat/ChatGui.cs.meta new file mode 100644 index 00000000..fb899d85 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/ChatGui.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 02d148d0890b2d44dbdf7f1c1b39a499 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/DemoChat-Scene.unity b/Assets/Photon/PhotonChat/Demos/DemoChat/DemoChat-Scene.unity new file mode 100644 index 00000000..574bd7cd --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/DemoChat-Scene.unity @@ -0,0 +1,6540 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientEquatorColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientGroundColor: {r: 0.2, g: 0.2, b: 0.2, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 3 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &4 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 10 + m_Resolution: 1 + m_BakeResolution: 50 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 0 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 0 +--- !u!196 &5 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666666 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &48879805 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 194772, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 48879806} + - component: {fileID: 48879810} + - component: {fileID: 48879809} + - component: {fileID: 48879808} + m_Layer: 5 + m_Name: Button Regular + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &48879806 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22494772, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 48879805} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1127833552} + m_Father: {fileID: 726519996} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &48879808 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11494768, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 48879805} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 1} + m_HighlightedColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_PressedColor: {r: 0.8784314, g: 0, b: 0, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 48879809} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 192561278} + m_MethodName: OpenDashboard + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &48879809 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11494766, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 48879805} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &48879810 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22294772, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 48879805} + m_CullTransparentMesh: 0 +--- !u!1 &64425121 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 160816, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 64425122} + - component: {fileID: 64425125} + - component: {fileID: 64425124} + - component: {fileID: 64425123} + m_Layer: 5 + m_Name: Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &64425122 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22460816, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 64425121} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1989416849} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &64425123 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11460816, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 64425121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &64425124 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11460818, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 64425121} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.39215687} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: ea7134547a5488b41a6bb5243b4ec2f1, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &64425125 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22260816, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 64425121} + m_CullTransparentMesh: 0 +--- !u!1 &141587190 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 194774, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 141587195} + - component: {fileID: 141587194} + - component: {fileID: 141587193} + - component: {fileID: 141587191} + - component: {fileID: 141587192} + m_Layer: 5 + m_Name: Health + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &141587191 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11490564, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141587190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1573420865, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &141587192 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141587190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 060fe8295761a47268586d33ef5673e0, type: 3} + m_Name: + m_EditorClassIdentifier: + Selectable: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!114 &141587193 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11494770, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141587190} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 16 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 100% +--- !u!222 &141587194 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22294774, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141587190} + m_CullTransparentMesh: 0 +--- !u!224 &141587195 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22494774, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 141587190} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 328181931} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: 60, y: 0} + m_Pivot: {x: 1, y: 0.5} +--- !u!1 &153676942 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 153676943} + - component: {fileID: 153676945} + - component: {fileID: 153676944} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &153676943 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 153676942} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 770857990} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &153676944 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 153676942} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 2fb83ea89df639b43a22d707d3c22af1, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &153676945 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 153676942} + m_CullTransparentMesh: 0 +--- !u!1 &160598229 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 160598230} + - component: {fileID: 160598233} + - component: {fileID: 160598232} + - component: {fileID: 160598231} + m_Layer: 5 + m_Name: Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &160598230 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 160598229} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 814826292} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &160598231 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 160598229} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &160598232 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 160598229} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: ea7134547a5488b41a6bb5243b4ec2f1, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &160598233 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 160598229} + m_CullTransparentMesh: 0 +--- !u!1 &162519640 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 162519641} + - component: {fileID: 162519643} + - component: {fileID: 162519642} + m_Layer: 5 + m_Name: username Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &162519641 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162519640} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.99999994, y: 0.99999994, z: 0.99999994} + m_Children: [] + m_Father: {fileID: 770857990} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 5, y: 0} + m_SizeDelta: {x: 250, y: 35} + m_Pivot: {x: 0, y: 1} +--- !u!114 &162519642 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162519640} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 4345225956e176043b2f73b9ee1b0f2b, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Username +--- !u!222 &162519643 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 162519640} + m_CullTransparentMesh: 0 +--- !u!1 &192561276 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 192561277} + - component: {fileID: 192561278} + - component: {fileID: 192561279} + m_Layer: 0 + m_Name: Scripts + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &192561277 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 192561276} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &192561278 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 192561276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 02d148d0890b2d44dbdf7f1c1b39a499, type: 3} + m_Name: + m_EditorClassIdentifier: + ChannelsToJoinOnConnect: + - Region + - Guild + FriendsList: + - Joe + - Jane + - Bob + HistoryLengthToFetch: 0 + missingAppIdErrorPanel: {fileID: 1860384066} + ConnectingLabel: {fileID: 1323013538} + ChatPanel: {fileID: 1507568401} + UserIdFormPanel: {fileID: 814826291} + InputFieldChat: {fileID: 1989416850} + CurrentChannelText: {fileID: 1641022483} + ChannelToggleToInstantiate: {fileID: 342400385} + FriendListUiItemtoInstantiate: {fileID: 328181930} + ShowState: 1 + Title: {fileID: 938244445} + StateText: {fileID: 2126670842} + UserIdText: {fileID: 162519642} + TestLength: 2048 +--- !u!114 &192561279 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 192561276} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 696a5174ff5e707479b3540eb56d14b7, type: 3} + m_Name: + m_EditorClassIdentifier: + chatNewComponent: {fileID: 192561278} + idInput: {fileID: 1320934697} +--- !u!1 &193452638 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 187090, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 193452639} + - component: {fileID: 193452641} + - component: {fileID: 193452640} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &193452639 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22487090, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193452638} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1989416849} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &193452640 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11487088, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193452638} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.5019608} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 12 + m_FontStyle: 2 + m_BestFit: 1 + m_MinSize: 8 + m_MaxSize: 16 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Enter Chat Message... +--- !u!222 &193452641 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22287090, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 193452638} + m_CullTransparentMesh: 0 +--- !u!1 &217679864 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 217679865} + - component: {fileID: 217679867} + - component: {fileID: 217679866} + m_Layer: 5 + m_Name: Editor SplashScreen Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &217679865 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 217679864} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 517645106} + - {fileID: 241317248} + - {fileID: 915497946} + m_Father: {fileID: 770857990} + m_RootOrder: 8 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &217679866 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 217679864} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0b1cdd4de66f84fa1af4cb197e5d901d, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!225 &217679867 +CanvasGroup: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 217679864} + m_Enabled: 1 + m_Alpha: 1 + m_Interactable: 1 + m_BlocksRaycasts: 1 + m_IgnoreParentGroups: 0 +--- !u!1 &239533971 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 194772, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 239533972} + - component: {fileID: 239533976} + - component: {fileID: 239533975} + - component: {fileID: 239533974} + m_Layer: 5 + m_Name: Button Regular + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &239533972 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22494772, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 239533971} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1880491503} + m_Father: {fileID: 814826292} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 125, y: -75} + m_SizeDelta: {x: 240, y: 40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &239533974 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11494768, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 239533971} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 1} + m_HighlightedColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_PressedColor: {r: 0.8784314, g: 0, b: 0, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 239533975} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 192561279} + m_MethodName: StartChat + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &239533975 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11494766, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 239533971} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &239533976 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22294772, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 239533971} + m_CullTransparentMesh: 0 +--- !u!1 &241317247 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 241317248} + - component: {fileID: 241317251} + - component: {fileID: 241317250} + - component: {fileID: 241317249} + - component: {fileID: 241317252} + m_Layer: 5 + m_Name: Chat App Id Feedback + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &241317248 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 241317247} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 217679865} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 100} + m_SizeDelta: {x: -20, y: 75} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &241317249 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 241317247} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1573420865, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 1} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &241317250 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 241317247} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.69411767} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &241317251 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 241317247} + m_CullTransparentMesh: 0 +--- !u!114 &241317252 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 241317247} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4eb1284704a754507acb17b07b888086, type: 3} + m_Name: + m_EditorClassIdentifier: + Description: {fileID: 241317250} + WizardOpenedOnce: 1 +--- !u!1 &247629931 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 160816, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 247629932} + - component: {fileID: 247629935} + - component: {fileID: 247629934} + - component: {fileID: 247629933} + m_Layer: 5 + m_Name: Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &247629932 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22460816, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 247629931} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1320934696} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &247629933 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11460816, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 247629931} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &247629934 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11460818, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 247629931} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.39215687} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: ea7134547a5488b41a6bb5243b4ec2f1, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &247629935 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22260816, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 247629931} + m_CullTransparentMesh: 0 +--- !u!1 &276589553 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 148466, guid: 5d91df74039db4d67a68595d5b9bbf4f, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 276589554} + - component: {fileID: 276589556} + - component: {fileID: 276589555} + m_Layer: 5 + m_Name: OnToggle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &276589554 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22448466, guid: 5d91df74039db4d67a68595d5b9bbf4f, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 276589553} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 342400384} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &276589555 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11448464, guid: 5d91df74039db4d67a68595d5b9bbf4f, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 276589553} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &276589556 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22248466, guid: 5d91df74039db4d67a68595d5b9bbf4f, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 276589553} + m_CullTransparentMesh: 0 +--- !u!1 &328181930 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 194772, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 328181931} + - component: {fileID: 328181937} + - component: {fileID: 328181936} + - component: {fileID: 328181935} + - component: {fileID: 328181933} + - component: {fileID: 328181932} + m_Layer: 5 + m_Name: Friends List Item + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &328181931 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22494772, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 328181930} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1520067144} + - {fileID: 1754144655} + - {fileID: 141587195} + m_Father: {fileID: 1366707550} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 5, y: -35} + m_SizeDelta: {x: 240, y: 30} + m_Pivot: {x: 0, y: 0} +--- !u!114 &328181932 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11447548, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 328181930} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 660b16ba396d0465b98be14947420288, type: 3} + m_Name: + m_EditorClassIdentifier: + NameLabel: {fileID: 1520067145} + StatusLabel: {fileID: 1754144658} + Health: {fileID: 141587193} +--- !u!114 &328181933 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11465746, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 328181930} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 30 + m_PreferredWidth: -1 + m_PreferredHeight: 30 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &328181935 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11494768, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 328181930} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 1} + m_HighlightedColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_PressedColor: {r: 0.8784314, g: 0, b: 0, a: 1} + m_DisabledColor: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 1} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 0 + m_TargetGraphic: {fileID: 328181936} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: JoinRandomRoom + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &328181936 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11494766, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 328181930} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &328181937 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22294772, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 328181930} + m_CullTransparentMesh: 0 +--- !u!1 &330710524 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 330710525} + - component: {fileID: 330710528} + - component: {fileID: 330710527} + - component: {fileID: 330710526} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &330710525 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330710524} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 814826292} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 35} + m_SizeDelta: {x: 230, y: 40} + m_Pivot: {x: 0, y: 1} +--- !u!114 &330710526 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330710524} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 0 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &330710527 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330710524} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 22 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 22 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: User Id +--- !u!222 &330710528 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 330710524} + m_CullTransparentMesh: 0 +--- !u!1 &342400383 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 148462, guid: 5d91df74039db4d67a68595d5b9bbf4f, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 342400384} + - component: {fileID: 342400388} + - component: {fileID: 342400387} + - component: {fileID: 342400386} + - component: {fileID: 342400385} + - component: {fileID: 342400389} + m_Layer: 5 + m_Name: Toggle Regular + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &342400384 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22448462, guid: 5d91df74039db4d67a68595d5b9bbf4f, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 342400383} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 276589554} + - {fileID: 384316751} + m_Father: {fileID: 1427448790} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 125, y: -20} + m_SizeDelta: {x: 240, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &342400385 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11448462, guid: 5d91df74039db4d67a68595d5b9bbf4f, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 342400383} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 2109663825, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 1} + m_HighlightedColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_PressedColor: {r: 0.8784314, g: 0, b: 0, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 342400387} + toggleTransition: 1 + graphic: {fileID: 276589555} + m_Group: {fileID: 1427448795} + onValueChanged: + m_PersistentCalls: + m_Calls: [] + m_IsOn: 0 +--- !u!114 &342400386 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11448460, guid: 5d91df74039db4d67a68595d5b9bbf4f, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 342400383} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 30 + m_PreferredWidth: -1 + m_PreferredHeight: 30 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &342400387 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11448454, guid: 5d91df74039db4d67a68595d5b9bbf4f, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 342400383} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &342400388 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22248462, guid: 5d91df74039db4d67a68595d5b9bbf4f, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 342400383} + m_CullTransparentMesh: 0 +--- !u!114 &342400389 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 342400383} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 48caa72710147fc4f9389b0b5ec6137d, type: 3} + m_Name: + m_EditorClassIdentifier: + Channel: +--- !u!1 &384316750 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 148464, guid: 5d91df74039db4d67a68595d5b9bbf4f, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 384316751} + - component: {fileID: 384316755} + - component: {fileID: 384316754} + - component: {fileID: 384316752} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &384316751 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22448464, guid: 5d91df74039db4d67a68595d5b9bbf4f, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 384316750} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 342400384} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &384316752 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 384316750} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1e808171e8963498bb1db072a977d750, type: 3} + m_Name: + m_EditorClassIdentifier: + toggle: {fileID: 342400385} + NormalOnColor: {r: 0, g: 0, b: 0, a: 1} + NormalOffColor: {r: 1, g: 1, b: 1, a: 1} + HoverOnColor: {r: 0, g: 0, b: 0, a: 1} + HoverOffColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!114 &384316754 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11448458, guid: 5d91df74039db4d67a68595d5b9bbf4f, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 384316750} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 24 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Channel +--- !u!222 &384316755 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22248464, guid: 5d91df74039db4d67a68595d5b9bbf4f, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 384316750} + m_CullTransparentMesh: 0 +--- !u!1 &517645105 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 517645106} + - component: {fileID: 517645110} + - component: {fileID: 517645109} + - component: {fileID: 517645108} + - component: {fileID: 517645107} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &517645106 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 517645105} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 217679865} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: 190.68} + m_SizeDelta: {x: -20, y: 81.37} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &517645107 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 517645105} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1573420865, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 1} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &517645108 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 517645105} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: -900027084, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 1} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &517645109 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 517645105} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.69411767} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 4345225956e176043b2f73b9ee1b0f2b, type: 3} + m_FontSize: 87 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 100 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Chat Demo +--- !u!222 &517645110 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 517645105} + m_CullTransparentMesh: 0 +--- !u!1 &523050027 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 194774, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 523050028} + - component: {fileID: 523050032} + - component: {fileID: 523050031} + - component: {fileID: 523050029} + - component: {fileID: 523050030} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &523050028 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22494774, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 523050027} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 970871620} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &523050029 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11490564, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 523050027} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1573420865, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &523050030 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 523050027} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 060fe8295761a47268586d33ef5673e0, type: 3} + m_Name: + m_EditorClassIdentifier: + Selectable: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!114 &523050031 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11494770, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 523050027} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 24 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: '?' +--- !u!222 &523050032 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22294774, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 523050027} + m_CullTransparentMesh: 0 +--- !u!1 &578492557 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 578492558} + - component: {fileID: 578492561} + - component: {fileID: 578492560} + - component: {fileID: 578492559} + m_Layer: 5 + m_Name: Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &578492558 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 578492557} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1989416849} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &578492559 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 578492557} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &578492560 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 578492557} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: ea7134547a5488b41a6bb5243b4ec2f1, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &578492561 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 578492557} + m_CullTransparentMesh: 0 +--- !u!1 &589294878 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 187088, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 589294879} + - component: {fileID: 589294881} + - component: {fileID: 589294880} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &589294879 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22487088, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 589294878} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1320934696} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &589294880 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11487086, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 589294878} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 22 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 22 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &589294881 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22287088, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 589294878} + m_CullTransparentMesh: 0 +--- !u!1 &726519995 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 726519996} + - component: {fileID: 726519997} + m_Layer: 5 + m_Name: Button Layout + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &726519996 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 726519995} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 48879806} + m_Father: {fileID: 1014753128} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 100, y: -180} + m_SizeDelta: {x: 190, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &726519997 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 726519995} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 30 + m_PreferredWidth: -1 + m_PreferredHeight: 30 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &742235968 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 742235969} + - component: {fileID: 742235972} + - component: {fileID: 742235971} + - component: {fileID: 742235970} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &742235969 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 742235968} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 814826292} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: -220} + m_SizeDelta: {x: 250, y: 200} + m_Pivot: {x: 0, y: 0} +--- !u!114 &742235970 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 742235968} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &742235971 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 742235968} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Unique UserIds guarantee correct behaviour for AddFriends(). Pick Joe,Jane + or Bob usersId as they are predefined +--- !u!222 &742235972 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 742235968} + m_CullTransparentMesh: 0 +--- !u!1 &749398466 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 194774, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 749398467} + - component: {fileID: 749398471} + - component: {fileID: 749398470} + - component: {fileID: 749398468} + - component: {fileID: 749398469} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &749398467 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22494774, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 749398466} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1508114938} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &749398468 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11490564, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 749398466} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1573420865, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &749398469 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 749398466} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 060fe8295761a47268586d33ef5673e0, type: 3} + m_Name: + m_EditorClassIdentifier: + Selectable: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!114 &749398470 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11494770, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 749398466} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 24 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Send +--- !u!222 &749398471 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22294774, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 749398466} + m_CullTransparentMesh: 0 +--- !u!1 &750611066 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 187090, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 750611067} + - component: {fileID: 750611069} + - component: {fileID: 750611068} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &750611067 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22487090, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 750611066} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1320934696} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &750611068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11487088, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 750611066} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.5019608} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 12 + m_FontStyle: 2 + m_BestFit: 1 + m_MinSize: 8 + m_MaxSize: 16 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Enter User Id +--- !u!222 &750611069 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22287090, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 750611066} + m_CullTransparentMesh: 0 +--- !u!1 &752115433 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 752115434} + - component: {fileID: 752115437} + - component: {fileID: 752115436} + - component: {fileID: 752115435} + m_Layer: 5 + m_Name: Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &752115434 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 752115433} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1366707550} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &752115435 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 752115433} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &752115436 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 752115433} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: ea7134547a5488b41a6bb5243b4ec2f1, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &752115437 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 752115433} + m_CullTransparentMesh: 0 +--- !u!1 &770857986 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 770857990} + - component: {fileID: 770857989} + - component: {fileID: 770857987} + - component: {fileID: 770857991} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &770857987 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 770857986} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!223 &770857989 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 770857986} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &770857990 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 770857986} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 153676943} + - {fileID: 1163197799} + - {fileID: 938244446} + - {fileID: 2126670841} + - {fileID: 162519641} + - {fileID: 1323013539} + - {fileID: 814826292} + - {fileID: 1507568401} + - {fileID: 217679865} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &770857991 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 770857986} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0.5 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 94 + m_DefaultSpriteDPI: 94 + m_DynamicPixelsPerUnit: 1 +--- !u!1 &814826291 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 814826292} + - component: {fileID: 814826295} + - component: {fileID: 814826294} + - component: {fileID: 814826293} + m_Layer: 5 + m_Name: User Id Form Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &814826292 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 814826291} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 160598230} + - {fileID: 330710525} + - {fileID: 1320934696} + - {fileID: 239533972} + - {fileID: 742235969} + m_Father: {fileID: 770857990} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0.000030517578, y: 0} + m_SizeDelta: {x: 250, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &814826293 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 814826291} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 5 + m_Right: 5 + m_Top: 5 + m_Bottom: 5 + m_ChildAlignment: 0 + m_Spacing: 10 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!114 &814826294 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 814826291} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5114619, g: 0.5584751, b: 0.63235295, a: 0.019607844} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &814826295 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 814826291} + m_CullTransparentMesh: 0 +--- !u!1 &814846235 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 814846236} + - component: {fileID: 814846239} + - component: {fileID: 814846238} + - component: {fileID: 814846237} + m_Layer: 5 + m_Name: ChatOutput Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &814846236 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 814846235} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1555592747} + - {fileID: 1937233793} + - {fileID: 2017670316} + m_Father: {fileID: 1507568401} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 127.5, y: 5} + m_SizeDelta: {x: -255, y: -90} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &814846237 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 814846235} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: 1 + m_LayoutPriority: 1 +--- !u!114 &814846238 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 814846235} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5114619, g: 0.5584751, b: 0.63235295, a: 0.019607844} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &814846239 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 814846235} + m_CullTransparentMesh: 0 +--- !u!1 &863442299 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 863442300} + - component: {fileID: 863442305} + - component: {fileID: 863442304} + - component: {fileID: 863442303} + - component: {fileID: 863442302} + - component: {fileID: 863442301} + m_Layer: 5 + m_Name: Error Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &863442300 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 863442299} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1014753128} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 30} + m_SizeDelta: {x: 190, y: 30} + m_Pivot: {x: 0, y: 1} +--- !u!114 &863442301 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 863442299} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -900027084, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &863442302 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 863442299} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: 1573420865, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &863442303 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 863442299} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: 30 + m_PreferredWidth: -1 + m_PreferredHeight: 30 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &863442304 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 863442299} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 22 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Missing App ID +--- !u!222 &863442305 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 863442299} + m_CullTransparentMesh: 0 +--- !u!1 &915497945 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 915497946} + - component: {fileID: 915497949} + - component: {fileID: 915497948} + - component: {fileID: 915497947} + m_Layer: 5 + m_Name: Description + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &915497946 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 915497945} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 217679865} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: 0, y: -90.435} + m_SizeDelta: {x: -20, y: 281.87} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &915497947 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 915497945} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1573420865, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 1} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &915497948 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 915497945} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.69411767} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 4345225956e176043b2f73b9ee1b0f2b, type: 3} + m_FontSize: 30 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 3 + m_MaxSize: 30 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "This is a simple Photon Chat room demo\nThe Canvas contains multiple Panels + for different context.\nThey are disabled intentionally, so scripts can activate + them.\r\nThe script IgnoreUiRaycastWhenInactive keeps inactive panels from blocking + input.\r\n\r\nAll users should use a UserId (to be found as friend).\r\nThis message + will go away at runtime." +--- !u!222 &915497949 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 915497945} + m_CullTransparentMesh: 0 +--- !u!1 &938244445 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 938244446} + - component: {fileID: 938244448} + - component: {fileID: 938244447} + m_Layer: 5 + m_Name: Demo Name + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &938244446 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 938244445} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 770857990} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 250, y: 35} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &938244447 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 938244445} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Demo Chat +--- !u!222 &938244448 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 938244445} + m_CullTransparentMesh: 0 +--- !u!1 &970871619 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 194772, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 970871620} + - component: {fileID: 970871624} + - component: {fileID: 970871623} + - component: {fileID: 970871622} + m_Layer: 5 + m_Name: Button Regular + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &970871620 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22494772, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970871619} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 523050028} + m_Father: {fileID: 1569829900} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 5, y: -5} + m_SizeDelta: {x: 30, y: 35} + m_Pivot: {x: 0, y: 1} +--- !u!114 &970871622 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11494768, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970871619} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 1} + m_HighlightedColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_PressedColor: {r: 0.8784314, g: 0, b: 0, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 970871623} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 192561278} + m_MethodName: PostHelpToCurrentChannel + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &970871623 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11494766, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970871619} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &970871624 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22294772, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 970871619} + m_CullTransparentMesh: 0 +--- !u!1 &1014753127 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1014753128} + - component: {fileID: 1014753131} + - component: {fileID: 1014753130} + - component: {fileID: 1014753129} + m_Layer: 5 + m_Name: Error Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1014753128 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1014753127} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1739446624} + - {fileID: 863442300} + - {fileID: 1734659754} + - {fileID: 1322130499} + - {fileID: 726519996} + m_Father: {fileID: 1860384067} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 200, y: 200} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1014753129 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1014753127} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 5 + m_Right: 5 + m_Top: 5 + m_Bottom: 5 + m_ChildAlignment: 0 + m_Spacing: 5 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!114 &1014753130 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1014753127} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.21323532, g: 0, b: 0, a: 0.8039216} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1014753131 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1014753127} + m_CullTransparentMesh: 0 +--- !u!1 &1079401850 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1079401851} + - component: {fileID: 1079401852} + - component: {fileID: 1079401855} + - component: {fileID: 1079401853} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1079401851 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1079401850} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!20 &1079401852 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1079401850} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.11764706, g: 0.11764706, b: 0.13725491, a: 1} + m_projectionMatrixMode: 1 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_GateFitMode: 2 + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 100 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!81 &1079401853 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1079401850} + m_Enabled: 1 +--- !u!124 &1079401855 +Behaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1079401850} + m_Enabled: 1 +--- !u!1 &1114666229 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1114666230} + - component: {fileID: 1114666233} + - component: {fileID: 1114666232} + - component: {fileID: 1114666231} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1114666230 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1114666229} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1366707550} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 30} + m_SizeDelta: {x: 230, y: 30} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1114666231 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1114666229} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 0 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1114666232 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1114666229} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 22 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 22 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Friends +--- !u!222 &1114666233 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1114666229} + m_CullTransparentMesh: 0 +--- !u!1 &1127833551 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 194774, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1127833552} + - component: {fileID: 1127833556} + - component: {fileID: 1127833555} + - component: {fileID: 1127833553} + - component: {fileID: 1127833554} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1127833552 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22494774, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1127833551} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 48879806} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1127833553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11490564, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1127833551} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1573420865, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &1127833554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1127833551} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 060fe8295761a47268586d33ef5673e0, type: 3} + m_Name: + m_EditorClassIdentifier: + Selectable: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!114 &1127833555 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11494770, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1127833551} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 24 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Dashboard (Online) +--- !u!222 &1127833556 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22294774, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1127833551} + m_CullTransparentMesh: 0 +--- !u!1 &1140689145 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1140689146} + - component: {fileID: 1140689149} + - component: {fileID: 1140689148} + - component: {fileID: 1140689147} + m_Layer: 5 + m_Name: Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1140689146 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1140689145} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1427448790} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1140689147 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1140689145} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1140689148 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1140689145} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: ea7134547a5488b41a6bb5243b4ec2f1, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1140689149 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1140689145} + m_CullTransparentMesh: 0 +--- !u!1 &1163197798 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1163197799} + - component: {fileID: 1163197802} + - component: {fileID: 1163197801} + - component: {fileID: 1163197800} + m_Layer: 5 + m_Name: Watermark + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1163197799 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1163197798} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 770857990} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 128, y: 128} + m_Pivot: {x: 1, y: 0} +--- !u!114 &1163197800 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1163197798} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1163197801} + m_OnClick: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &1163197801 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1163197798} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.2784314} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 37b0a18b391c6ae468b5bcc74bba2c1a, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1163197802 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1163197798} + m_CullTransparentMesh: 0 +--- !u!1 &1223575070 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1223575071} + - component: {fileID: 1223575073} + - component: {fileID: 1223575072} + m_Layer: 5 + m_Name: Modal Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1223575071 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1223575070} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1860384067} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1223575072 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1223575070} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.67058825} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1223575073 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1223575070} + m_CullTransparentMesh: 0 +--- !u!1 &1320934695 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 187092, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1320934696} + - component: {fileID: 1320934699} + - component: {fileID: 1320934698} + - component: {fileID: 1320934697} + m_Layer: 5 + m_Name: InputField Regular + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1320934696 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22487092, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1320934695} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 247629932} + - {fileID: 750611067} + - {fileID: 589294879} + m_Father: {fileID: 814826292} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 125, y: -5} + m_SizeDelta: {x: 240, y: 40} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1320934697 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11487092, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1320934695} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 575553740, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1320934698} + m_TextComponent: {fileID: 589294880} + m_Placeholder: {fileID: 750611068} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 192561279} + m_MethodName: EndEditOnEnter + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: set_PlayerName + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_Text: + m_CaretBlinkRate: 1.7 + m_CaretWidth: 1 + m_ReadOnly: 0 +--- !u!114 &1320934698 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11487090, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1320934695} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 0.24313726} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1320934699 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22287092, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1320934695} + m_CullTransparentMesh: 0 +--- !u!1 &1322130497 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1322130499} + - component: {fileID: 1322130498} + m_Layer: 5 + m_Name: LayoutElement + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1322130498 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1322130497} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 1000 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!224 &1322130499 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1322130497} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1014753128} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 100, y: -135} + m_SizeDelta: {x: 190, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1323013538 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1323013539} + - component: {fileID: 1323013543} + - component: {fileID: 1323013542} + - component: {fileID: 1323013541} + - component: {fileID: 1323013540} + m_Layer: 5 + m_Name: Connecting label + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1323013539 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323013538} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 770857990} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1323013540 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323013538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1573420865, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 1} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &1323013541 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323013538} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: -900027084, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 1} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &1323013542 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323013538} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.69411767} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 4345225956e176043b2f73b9ee1b0f2b, type: 3} + m_FontSize: 40 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Connecting... +--- !u!222 &1323013543 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1323013538} + m_CullTransparentMesh: 0 +--- !u!1 &1366707549 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1366707550} + - component: {fileID: 1366707555} + - component: {fileID: 1366707554} + - component: {fileID: 1366707553} + - component: {fileID: 1366707552} + - component: {fileID: 1366707551} + m_Layer: 5 + m_Name: Friends Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1366707550 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1366707549} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 752115434} + - {fileID: 1114666230} + - {fileID: 328181931} + m_Father: {fileID: 1507568401} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 0, y: 20} + m_SizeDelta: {x: 250, y: -60} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &1366707551 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1366707549} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 5 + m_Right: 5 + m_Top: 5 + m_Bottom: 5 + m_ChildAlignment: 0 + m_Spacing: 5 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!114 &1366707552 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1366707549} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1184210157, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!114 &1366707553 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1366707549} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 30 + m_PreferredWidth: -1 + m_PreferredHeight: 30 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1366707554 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1366707549} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5114619, g: 0.5584751, b: 0.63235295, a: 0.019607844} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1366707555 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1366707549} + m_CullTransparentMesh: 0 +--- !u!1 &1427448789 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1427448790} + - component: {fileID: 1427448793} + - component: {fileID: 1427448792} + - component: {fileID: 1427448791} + - component: {fileID: 1427448795} + - component: {fileID: 1427448794} + m_Layer: 5 + m_Name: ChannelBar Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1427448790 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1427448789} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1140689146} + - {fileID: 2129492527} + - {fileID: 342400384} + m_Father: {fileID: 1507568401} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: -5} + m_SizeDelta: {x: 250, y: -70} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &1427448791 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1427448789} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 30 + m_PreferredWidth: -1 + m_PreferredHeight: 30 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1427448792 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1427448789} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5114619, g: 0.5584751, b: 0.63235295, a: 0.019607844} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1427448793 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1427448789} + m_CullTransparentMesh: 0 +--- !u!114 &1427448794 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1427448789} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 5 + m_Right: 5 + m_Top: 5 + m_Bottom: 5 + m_ChildAlignment: 0 + m_Spacing: 5 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!114 &1427448795 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1427448789} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1184210157, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_AllowSwitchOff: 0 +--- !u!1 &1507568400 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1507568401} + - component: {fileID: 1507568405} + m_Layer: 5 + m_Name: Chat Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1507568401 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1507568400} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1427448790} + - {fileID: 1366707550} + - {fileID: 814846236} + - {fileID: 1569829900} + m_Father: {fileID: 770857990} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -15.000061} + m_SizeDelta: {x: -10, y: -40} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1507568405 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1507568400} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4ba4c747f6975ea46bcc0a55ffe3bfe8, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1508114937 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 194772, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1508114938} + - component: {fileID: 1508114942} + - component: {fileID: 1508114941} + - component: {fileID: 1508114940} + m_Layer: 5 + m_Name: Button Regular + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1508114938 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22494772, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1508114937} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 749398467} + m_Father: {fileID: 1569829900} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: 100, y: -10} + m_Pivot: {x: 1, y: 0.5} +--- !u!114 &1508114940 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11494768, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1508114937} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 1} + m_HighlightedColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_PressedColor: {r: 0.8784314, g: 0, b: 0, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1508114941} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 192561278} + m_MethodName: OnClickSend + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1508114941 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11494766, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1508114937} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1508114942 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22294772, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1508114937} + m_CullTransparentMesh: 0 +--- !u!1 &1520067143 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 111722, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1520067144} + - component: {fileID: 1520067148} + - component: {fileID: 1520067145} + - component: {fileID: 1520067146} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1520067144 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22411722, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1520067143} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 328181931} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1520067145 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11411724, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1520067143} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 24 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Joe +--- !u!114 &1520067146 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11411726, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1520067143} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1573420865, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!222 &1520067148 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22211722, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1520067143} + m_CullTransparentMesh: 0 +--- !u!1 &1555592746 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1555592747} + - component: {fileID: 1555592750} + - component: {fileID: 1555592749} + - component: {fileID: 1555592748} + m_Layer: 5 + m_Name: Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1555592747 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1555592746} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 814846236} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1555592748 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1555592746} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1555592749 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1555592746} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: ea7134547a5488b41a6bb5243b4ec2f1, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1555592750 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1555592746} + m_CullTransparentMesh: 0 +--- !u!1 &1569829899 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1569829900} + - component: {fileID: 1569829903} + - component: {fileID: 1569829902} + m_Layer: 5 + m_Name: InputBar Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1569829900 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1569829899} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1670585027} + - {fileID: 970871620} + - {fileID: 1989416849} + - {fileID: 1508114938} + m_Father: {fileID: 1507568401} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 127.5, y: 0} + m_SizeDelta: {x: -255, y: 45} + m_Pivot: {x: 0.5, y: 0} +--- !u!114 &1569829902 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1569829899} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.5114619, g: 0.5584751, b: 0.63235295, a: 0.019607844} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1569829903 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1569829899} + m_CullTransparentMesh: 0 +--- !u!1 &1641022481 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1641022482} + - component: {fileID: 1641022484} + - component: {fileID: 1641022483} + - component: {fileID: 1641022485} + m_Layer: 5 + m_Name: Selected Channel Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1641022482 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1641022481} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2017670316} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 568, y: 17.198803} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1641022483 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1641022481} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 6 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Not in chat yet +--- !u!222 &1641022484 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1641022481} + m_CullTransparentMesh: 0 +--- !u!114 &1641022485 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1641022481} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1741964061, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalFit: 0 + m_VerticalFit: 2 +--- !u!1 &1670585026 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1670585027} + - component: {fileID: 1670585030} + - component: {fileID: 1670585029} + - component: {fileID: 1670585028} + m_Layer: 5 + m_Name: Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1670585027 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1670585026} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1569829900} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1670585028 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1670585026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1670585029 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1670585026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: ea7134547a5488b41a6bb5243b4ec2f1, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1670585030 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1670585026} + m_CullTransparentMesh: 0 +--- !u!1 &1734659753 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1734659754} + - component: {fileID: 1734659757} + - component: {fileID: 1734659756} + - component: {fileID: 1734659755} + m_Layer: 5 + m_Name: 'Message ' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1734659754 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1734659753} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1014753128} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 100, y: -55} + m_SizeDelta: {x: 190, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1734659755 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1734659753} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 100 + m_PreferredWidth: -1 + m_PreferredHeight: 100 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1734659756 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1734659753} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'To continue, this demo needs a Chat AppId set up. + + + You can create one in the Photon Dashboard to copy and paste it into the demo.' +--- !u!222 &1734659757 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1734659753} + m_CullTransparentMesh: 0 +--- !u!1 &1739446623 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1739446624} + - component: {fileID: 1739446627} + - component: {fileID: 1739446626} + - component: {fileID: 1739446625} + m_Layer: 5 + m_Name: Outline + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1739446624 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1739446623} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1014753128} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1739446625 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1739446623} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1739446626 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1739446623} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: ea7134547a5488b41a6bb5243b4ec2f1, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1739446627 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1739446623} + m_CullTransparentMesh: 0 +--- !u!1 &1754144654 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 146428, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1754144655} + - component: {fileID: 1754144659} + - component: {fileID: 1754144658} + - component: {fileID: 1754144656} + m_Layer: 5 + m_Name: Status + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1754144655 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22446428, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1754144654} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 328181931} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 5, y: 0} + m_SizeDelta: {x: 60, y: 0} + m_Pivot: {x: 0, y: 0.5} +--- !u!114 &1754144656 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11446428, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1754144654} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1573420865, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &1754144658 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11446426, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1754144654} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 10 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 16 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Offline +--- !u!222 &1754144659 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22246428, guid: d6318142e396e499796d37501c1a7531, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1754144654} + m_CullTransparentMesh: 0 +--- !u!1 &1809679009 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1809679013} + - component: {fileID: 1809679010} + m_Layer: 0 + m_Name: EventSystem Spawner + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1809679010 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1809679009} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: bd5ff9965d0784cad8e07f5eb9cb9c06, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1809679013 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1809679009} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1860384066 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1860384067} + - component: {fileID: 1860384070} + - component: {fileID: 1860384069} + - component: {fileID: 1860384068} + m_Layer: 5 + m_Name: Missing App Id Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1860384067 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1860384066} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1223575071} + - {fileID: 1014753128} + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1860384068 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1860384066} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 3 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1860384069 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1860384066} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1860384070 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1860384066} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 1 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 1000 + m_TargetDisplay: 0 +--- !u!1 &1880491502 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 194774, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1880491503} + - component: {fileID: 1880491507} + - component: {fileID: 1880491506} + - component: {fileID: 1880491504} + - component: {fileID: 1880491505} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1880491503 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22494774, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1880491502} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 239533972} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1880491504 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11490564, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1880491502} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1573420865, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5} + m_EffectDistance: {x: 1, y: -1} + m_UseGraphicAlpha: 1 +--- !u!114 &1880491505 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1880491502} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 060fe8295761a47268586d33ef5673e0, type: 3} + m_Name: + m_EditorClassIdentifier: + Selectable: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!114 &1880491506 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11494770, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1880491502} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 24 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Connect +--- !u!222 &1880491507 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22294774, guid: 4f826638dd73749d88747935ea56c522, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1880491502} + m_CullTransparentMesh: 0 +--- !u!1 &1937233792 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1937233793} + - component: {fileID: 1937233796} + - component: {fileID: 1937233795} + - component: {fileID: 1937233794} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1937233793 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1937233792} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 814846236} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 30} + m_SizeDelta: {x: 230, y: 30} + m_Pivot: {x: 0, y: 1} +--- !u!114 &1937233794 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1937233792} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 0 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1937233795 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1937233792} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 22 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 22 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Chat +--- !u!222 &1937233796 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1937233792} + m_CullTransparentMesh: 0 +--- !u!1 &1954920730 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 187088, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1954920731} + - component: {fileID: 1954920733} + - component: {fileID: 1954920732} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1954920731 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22487088, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1954920730} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1989416849} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1954920732 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11487086, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1954920730} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 22 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 22 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1954920733 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22287088, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1954920730} + m_CullTransparentMesh: 0 +--- !u!1 &1989416848 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 187092, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1989416849} + - component: {fileID: 1989416852} + - component: {fileID: 1989416851} + - component: {fileID: 1989416850} + m_Layer: 5 + m_Name: InputField Regular + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1989416849 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22487092, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1989416848} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 578492558} + - {fileID: 193452639} + - {fileID: 64425122} + - {fileID: 1954920731} + m_Father: {fileID: 1569829900} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -35, y: 0} + m_SizeDelta: {x: -150, y: -10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1989416850 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11487092, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1989416848} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 575553740, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1989416851} + m_TextComponent: {fileID: 1954920732} + m_Placeholder: {fileID: 193452640} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 192561278} + m_MethodName: OnEnterSend + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 0} + m_MethodName: set_PlayerName + m_Mode: 0 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_Text: + m_CaretBlinkRate: 1.7 + m_CaretWidth: 1 + m_ReadOnly: 0 +--- !u!114 &1989416851 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 11487090, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1989416848} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 0.24313726} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &1989416852 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 22287092, guid: 3028bc57b884945d5aef896428ae1521, + type: 2} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1989416848} + m_CullTransparentMesh: 0 +--- !u!1 &2017670315 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2017670316} + - component: {fileID: 2017670319} + - component: {fileID: 2017670318} + - component: {fileID: 2017670317} + - component: {fileID: 2017670320} + m_Layer: 5 + m_Name: Scroll Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2017670316 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2017670315} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1641022482} + m_Father: {fileID: 814846236} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -10, y: -10} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2017670317 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2017670315} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1367256648, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 1641022482} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 1 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 1 + m_Viewport: {fileID: 0} + m_HorizontalScrollbar: {fileID: 0} + m_VerticalScrollbar: {fileID: 0} + m_HorizontalScrollbarVisibility: 0 + m_VerticalScrollbarVisibility: 0 + m_HorizontalScrollbarSpacing: 0 + m_VerticalScrollbarSpacing: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] +--- !u!114 &2017670318 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2017670315} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 0.392} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 +--- !u!222 &2017670319 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2017670315} + m_CullTransparentMesh: 0 +--- !u!114 &2017670320 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2017670315} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1200242548, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!1 &2126670840 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2126670841} + - component: {fileID: 2126670843} + - component: {fileID: 2126670842} + m_Layer: 5 + m_Name: Status Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &2126670841 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2126670840} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 770857990} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -5, y: 0} + m_SizeDelta: {x: 250, y: 35} + m_Pivot: {x: 1, y: 1} +--- !u!114 &2126670842 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2126670840} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 4345225956e176043b2f73b9ee1b0f2b, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Status Text +--- !u!222 &2126670843 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2126670840} + m_CullTransparentMesh: 0 +--- !u!1 &2129492526 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2129492527} + - component: {fileID: 2129492530} + - component: {fileID: 2129492529} + - component: {fileID: 2129492528} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2129492527 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2129492526} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1427448790} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 0, y: 30} + m_SizeDelta: {x: 230, y: 30} + m_Pivot: {x: 0, y: 1} +--- !u!114 &2129492528 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2129492526} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: 0 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &2129492529 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2129492526} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 12800000, guid: 5abfb0a229c98b3499cffa6c59c2ffb4, type: 3} + m_FontSize: 22 + m_FontStyle: 0 + m_BestFit: 1 + m_MinSize: 10 + m_MaxSize: 22 + m_Alignment: 0 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: 'Channels + +' +--- !u!222 &2129492530 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2129492526} + m_CullTransparentMesh: 0 diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/DemoChat-Scene.unity.meta b/Assets/Photon/PhotonChat/Demos/DemoChat/DemoChat-Scene.unity.meta new file mode 100644 index 00000000..071ca86f --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/DemoChat-Scene.unity.meta @@ -0,0 +1,6 @@ +fileFormatVersion: 2 +guid: ec07267f6a28fb044ac89845274e79af +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/Editor.meta b/Assets/Photon/PhotonChat/Demos/DemoChat/Editor.meta new file mode 100644 index 00000000..2a662134 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c33037d6755b1134db073d59feb6f7d9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/Editor/ChatEditor.cs b/Assets/Photon/PhotonChat/Demos/DemoChat/Editor/ChatEditor.cs new file mode 100644 index 00000000..b69eb34e --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/Editor/ChatEditor.cs @@ -0,0 +1,279 @@ +#if !PHOTON_UNITY_NETWORKING +using System; +using Photon.Chat; +using Photon.Chat.Demo; +using Photon.Realtime; +using UnityEditor; +using UnityEngine; + +[InitializeOnLoad] +public class ChatEditor : EditorWindow +{ + static ChatEditor() + { + EditorApplication.update += OnEditorUpdate; + } + + private static void OnEditorUpdate() + { + EditorApplication.update -= OnEditorUpdate; + + //ChatSettings settings = ChatSettings.Load(); + //if (settings != null && !settings.WizardDone && string.IsNullOrEmpty(settings.AppId)) + //{ + // OpenWizard(); + //} + } + + + [MenuItem("Window/Photon Chat/Setup")] + public static void OpenWizard() + { + //currentSettings = ChatSettings.Load(); + //currentSettings.WizardDone = true; + //EditorUtility.SetDirty(currentSettings); + + ChatEditor editor = (ChatEditor)EditorWindow.GetWindow(typeof (ChatEditor), false, "Photon Chat"); + editor.minSize = editor.preferredSize; + } + + + private ChatGui cGui; + internal string mailOrAppId; + internal bool showDashboardLink = false; + internal bool showRegistrationDone = false; + internal bool showRegistrationError = false; + private readonly Vector2 preferredSize = new Vector2(350, 400); + + internal static string UrlCloudDashboard = "https://dashboard.photonengine.com/en-US/"; + + public string WelcomeText = "Thanks for importing Photon Chat.\nThis window should set you up.\n\nYou will need a free Photon Account to setup a Photon Chat application.\nOpen the Photon Dashboard (webpage) to access your account (see button below).\n\nCopy and paste a Chat AppId into the field and click \"Setup\"."; + //public string AlreadyRegisteredInfo = "The email is registered so we can't fetch your AppId (without password).\n\nPlease login online to get your AppId and paste it above."; + //public string RegisteredNewAccountInfo = "We created a (free) account and fetched you an AppId.\nWelcome. Your Photon Chat project is setup."; + //public string FailedToRegisterAccount = "This wizard failed to register an account right now. Please check your mail address or try via the Dashboard."; + //public string AppliedToSettingsInfo = "Your AppId is now applied to this project."; + public string SetupCompleteInfo = "Done!\nYour Chat AppId is now stored in the Scripts object, Chat App Settings."; + public string CloseWindowButton = "Close"; + public string OpenCloudDashboardText = "Photon Dashboard Login"; + public string OpenCloudDashboardTooltip = "Review Cloud App information and statistics."; + + + public void OnGUI() + { + if (this.cGui == null) + { + cGui = FindObjectOfType(); + } + + GUI.skin.label.wordWrap = true; + GUI.skin.label.richText = true; + if (string.IsNullOrEmpty(mailOrAppId)) + { + mailOrAppId = string.Empty; + } + + GUILayout.Label("Chat Settings", EditorStyles.boldLabel); + GUILayout.Label(this.WelcomeText); + GUILayout.Space(15); + + + GUILayout.Label("Chat AppId"); + string input = EditorGUILayout.TextField(this.mailOrAppId); + + + if (GUI.changed) + { + this.mailOrAppId = input.Trim(); + } + + //bool isMail = false; + bool minimumInput = false; + bool isAppId = false; + + if (IsValidEmail(this.mailOrAppId)) + { + // this should be a mail address + minimumInput = true; + //isMail = true; + } + else if (IsAppId(this.mailOrAppId)) + { + // this should be an appId + minimumInput = true; + isAppId = true; + } + + + EditorGUI.BeginDisabledGroup(!minimumInput); + + + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + bool setupBtn = GUILayout.Button("Setup", GUILayout.Width(205)); + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + + + if (setupBtn) + { + this.showDashboardLink = false; + this.showRegistrationDone = false; + this.showRegistrationError = false; + + //if (isMail) + //{ + // EditorUtility.DisplayProgressBar("Fetching Account", "Trying to register a Photon Cloud Account.", 0.5f); + // AccountService service = new AccountService(); + // //service.RegisterByEmail(this.mailOrAppId, AccountService.Origin.Pun); + // //EditorUtility.ClearProgressBar(); + + // //if (service.ReturnCode == 0) + // //{ + // // currentSettings.AppId = service.AppId; + // // EditorUtility.SetDirty(currentSettings); + // // this.showRegistrationDone = true; + + // // Selection.objects = new UnityEngine.Object[] { currentSettings }; + // //} + // //else + // //{ + // // if (service.Message.Contains("registered")) + // // { + // // this.showDashboardLink = true; + // // } + // // else + // // { + // // this.showRegistrationError = true; + // // } + // //} + //} + //else + if (isAppId) + { + //currentSettings.AppId = this.mailOrAppId; + //EditorUtility.SetDirty(currentSettings); + if (this.cGui != null) + { + this.cGui.ChatAppSettings.AppIdChat = this.mailOrAppId; + EditorUtility.SetDirty(this.cGui); + } + + showRegistrationDone = true; + } + + //EditorGUIUtility.PingObject(currentSettings); + } + EditorGUI.EndDisabledGroup(); + + + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button(new GUIContent(OpenCloudDashboardText, OpenCloudDashboardTooltip), GUILayout.Width(205))) + { + EditorUtility.OpenWithDefaultApp(UrlCloudDashboard); + } + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + + //if (this.showDashboardLink) + //{ + // // button to open dashboard and get the AppId + // GUILayout.Space(15); + // GUILayout.Label(AlreadyRegisteredInfo); + + + // GUILayout.BeginHorizontal(); + // GUILayout.FlexibleSpace(); + // if (GUILayout.Button(new GUIContent(OpenCloudDashboardText, OpenCloudDashboardTooltip), GUILayout.Width(205))) + // { + // EditorUtility.OpenWithDefaultApp(UrlCloudDashboard + Uri.EscapeUriString(this.mailOrAppId)); + // this.mailOrAppId = string.Empty; + // this.showDashboardLink = false; + // } + // GUILayout.FlexibleSpace(); + // GUILayout.EndHorizontal(); + //} + //if (this.showRegistrationError) + //{ + // GUILayout.Space(15); + // GUILayout.Label(FailedToRegisterAccount); + + // GUILayout.BeginHorizontal(); + // GUILayout.FlexibleSpace(); + // if (GUILayout.Button(new GUIContent(OpenCloudDashboardText, OpenCloudDashboardTooltip), GUILayout.Width(205))) + // { + // EditorUtility.OpenWithDefaultApp(UrlCloudDashboard + Uri.EscapeUriString(this.mailOrAppId)); + // this.mailOrAppId = string.Empty; + // this.showDashboardLink = false; + // } + // GUILayout.FlexibleSpace(); + // GUILayout.EndHorizontal(); + + //} + if (this.showRegistrationDone) + { + GUILayout.Space(15); + //GUILayout.Label("Registration done"); + ////if (isMail) + ////{ + //// GUILayout.Label(RegisteredNewAccountInfo); + ////} + ////else + ////{ + // GUILayout.Label(AppliedToSettingsInfo); + ////} + + // setup-complete info + GUILayout.Space(15); + GUILayout.Label(SetupCompleteInfo); + + + // close window (done) + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button(CloseWindowButton, GUILayout.Width(205))) + { + this.Close(); + } + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + } + } + + public static bool IsAppId(string val) + { + if (string.IsNullOrEmpty(val) || val.Length < 16) + { + return false; + } + + try + { + new Guid(val); + } + catch + { + return false; + } + return true; + } + + // https://stackoverflow.com/a/1374644/1449056 + private static bool IsValidEmail(string email) + { + if (string.IsNullOrEmpty(email) || !email.Contains("@")) + { + return false; + } + try + { + System.Net.Mail.MailAddress addr = new System.Net.Mail.MailAddress(email); + return email.Equals(addr.Address); + } + catch + { + return false; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/Editor/ChatEditor.cs.meta b/Assets/Photon/PhotonChat/Demos/DemoChat/Editor/ChatEditor.cs.meta new file mode 100644 index 00000000..b66c34ef --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/Editor/ChatEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0ef7cc863c103cf44930b0411a10ad1f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/Files.meta b/Assets/Photon/PhotonChat/Demos/DemoChat/Files.meta new file mode 100644 index 00000000..89c539d8 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/Files.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c73bd05f7e3a006418e6398b47511e49 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/Files/Gradient.png b/Assets/Photon/PhotonChat/Demos/DemoChat/Files/Gradient.png new file mode 100644 index 0000000000000000000000000000000000000000..67e1ce2377d466f3a22ccbf60a3a2037c3a9bf0b GIT binary patch literal 105386 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%0AY~#b9qFlg|)@>*kw)G)>wwA;;eZa;e5$ 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 literal 0 HcmV?d00001 diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/Files/Jura-Medium.ttf.meta b/Assets/Photon/PhotonChat/Demos/DemoChat/Files/Jura-Medium.ttf.meta new file mode 100644 index 00000000..d22efdb4 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/Files/Jura-Medium.ttf.meta @@ -0,0 +1,24 @@ +fileFormatVersion: 2 +guid: 5abfb0a229c98b3499cffa6c59c2ffb4 +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontName: Jura + fontNames: + - Jura + fallbackFontReferences: + - {fileID: 12800000, guid: e00995507c2406448b4c8429136104dd, type: 3} + - {fileID: 12800000, guid: 4a4df204c321f9c40b0dbfb1baaffb4c, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/Files/OutlinedSquaredBox.png b/Assets/Photon/PhotonChat/Demos/DemoChat/Files/OutlinedSquaredBox.png new file mode 100644 index 0000000000000000000000000000000000000000..dcfa148fbbfa97ad30d0776f1be03d524a16ed8b GIT binary patch literal 1259 zcmah}&ui2`7#+o5tS!ZZ2#PYKP})N?$?n#+X*Q7E?AirW+hw(T@X&NKZG%lFB(v^T zM5+iPjltAS)DU%vO|y)X04%H+hE z?#S^70H8ZNuI1QxD!30FV9zmO^C27d&8xZ!z|+;kzl{Ct9TvxPIsjMt09d{Wz)u!h z{tQ4#0N~3E0Ma@D$J~1_rep>^YUK;Gpr4hB#O4i?%woP`y9@z~axuzbpOm~JX6e1{h^RH!fhYJ9N@xdT z_5Qc+MopMynPuy`q>*CD#tzMD3JdV2WlF+GI+=_P#p3DAuqdYEswk>SVMNUgXVh41 zSe4N(XtRuUTI^Yuv6=CR9oE}5JRb+%6I|VVtC&DfSUt&dd}=sFT+?GU^$4By?1DD+ zG?~qgPR0K*w?LcBjWRT?hWoa} zX&7Z~szeyF-ttOh`s($^>=Zbk)ztiW_t%dPjsVz|ntHSIZ10IzA70;DU%hQ@eit^j z-kn@o>;LxlZee?DV5hHV=>6$E%G#X^2U8o|cGuS5lZz{#o;+W=_Oi$NarFM9;GD^( KC$!Dv%#Gg$33(s@ literal 0 HcmV?d00001 diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/Files/OutlinedSquaredBox.png.meta b/Assets/Photon/PhotonChat/Demos/DemoChat/Files/OutlinedSquaredBox.png.meta new file mode 100644 index 00000000..3b2c35ac --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/Files/OutlinedSquaredBox.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: ea7134547a5488b41a6bb5243b4ec2f1 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: 16 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 1, y: 1, z: 1, w: 1} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 1024 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 0ca28098c6f2a0a4ba4f7e88ae619ca9 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/Files/PunIcon-White-129.png b/Assets/Photon/PhotonChat/Demos/DemoChat/Files/PunIcon-White-129.png new file mode 100644 index 0000000000000000000000000000000000000000..885c22f73363a54429c4ef0019a03463262dba04 GIT binary patch literal 15252 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 literal 0 HcmV?d00001 diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/Files/PunIcon-White-129.png.meta b/Assets/Photon/PhotonChat/Demos/DemoChat/Files/PunIcon-White-129.png.meta new file mode 100644 index 00000000..19e7ee7e --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/Files/PunIcon-White-129.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 37b0a18b391c6ae468b5bcc74bba2c1a +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: -2 + maxTextureSize: 128 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: 1 + mipBias: -100 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 10108fb3311b5d345a644c65ddc43a0d + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/Files/eurof35.ttf b/Assets/Photon/PhotonChat/Demos/DemoChat/Files/eurof35.ttf new file mode 100644 index 0000000000000000000000000000000000000000..ad174c3357bf43a732211b2f83e8df741b99fcec GIT binary patch literal 155088 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�dW8TLj>r2r) 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

hNKJ|^%)g3ZY);77G&xg5OtwV? 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 literal 0 HcmV?d00001 diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/Files/eurof35.ttf.meta b/Assets/Photon/PhotonChat/Demos/DemoChat/Files/eurof35.ttf.meta new file mode 100644 index 00000000..c63831be --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/Files/eurof35.ttf.meta @@ -0,0 +1,23 @@ +fileFormatVersion: 2 +guid: 4345225956e176043b2f73b9ee1b0f2b +TrueTypeFontImporter: + externalObjects: {} + serializedVersion: 4 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 0 + characterPadding: 1 + includeFontData: 1 + fontName: eurofurence light + fontNames: + - eurofurence light + fallbackFontReferences: + - {fileID: 12800000, guid: 954746d370bc8934299c8c8267543f4f, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + useLegacyBoundsCalculation: 0 + shouldRoundAdvanceValue: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/Files/eurof_tt.txt b/Assets/Photon/PhotonChat/Demos/DemoChat/Files/eurof_tt.txt new file mode 100644 index 00000000..b62725a2 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/Files/eurof_tt.txt @@ -0,0 +1,21 @@ +------------------------------------------------------------------------ +The eurofurence typeface family by tobias b koehler (unci@tigerden.com) +------------------------------------------------------------------------ + +This is a family of geometric rounded sans serif fonts consisting of +three weights (light, medium, bold) in upright and italic styles, +originally designed for EuroFurence, the first European furry convention +1995 in Kaiser-Wilhelm-Koog. + +The character set includes Roman, Greek and Cyrillic characters. +File format is TrueType for PC (under Windows, Linux etc). + +These fonts are freeware and can be distributed as long as they are +together with this text file. I would appreciate it though if you could +contact me at unci@tigerden.com if you put them on a server. Free +samples from commercial users are always very welcome. :) + +For more information, please see the uncifonts WWW page at: +http://mercurio.iet.unipi.it/users/tobias/uncifonts.html + +Have fun! tobias b koehler, 2000-04-02 \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/Files/eurof_tt.txt.meta b/Assets/Photon/PhotonChat/Demos/DemoChat/Files/eurof_tt.txt.meta new file mode 100644 index 00000000..6d6d0015 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/Files/eurof_tt.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e96690bd3586cf643a223def4feaa4d4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/FriendItem.cs b/Assets/Photon/PhotonChat/Demos/DemoChat/FriendItem.cs new file mode 100644 index 00000000..1027894e --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/FriendItem.cs @@ -0,0 +1,84 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +//

Demo code for Photon Chat in Unity. +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + + +using UnityEngine; +using UnityEngine.UI; + + +namespace Photon.Chat.Demo +{ + /// + /// Friend UI item used to represent the friend status as well as message. + /// It aims at showing how to share health for a friend that plays on a different room than you for example. + /// But of course the message can be anything and a lot more complex. + /// + public class FriendItem : MonoBehaviour + { + [HideInInspector] + public string FriendId + { + set { this.NameLabel.text = value; } + get { return this.NameLabel.text; } + } + + public Text NameLabel; + public Text StatusLabel; + public Text Health; + + public void Awake() + { + this.Health.text = string.Empty; + } + + public void OnFriendStatusUpdate(int status, bool gotMessage, object message) + { + string _status; + + switch (status) + { + case 1: + _status = "Invisible"; + break; + case 2: + _status = "Online"; + break; + case 3: + _status = "Away"; + break; + case 4: + _status = "Do not disturb"; + break; + case 5: + _status = "Looking For Game/Group"; + break; + case 6: + _status = "Playing"; + break; + default: + _status = "Offline"; + break; + } + + this.StatusLabel.text = _status; + + if (gotMessage) + { + string _health = string.Empty; + if (message != null) + { + string[] _messages = message as string[]; + if (_messages != null && _messages.Length >= 2) + { + _health = (string)_messages[1] + "%"; + } + } + + this.Health.text = _health; + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/FriendItem.cs.meta b/Assets/Photon/PhotonChat/Demos/DemoChat/FriendItem.cs.meta new file mode 100644 index 00000000..753c04d8 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/FriendItem.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 660b16ba396d0465b98be14947420288 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/IgnoreUiRaycastWhenInactive.cs b/Assets/Photon/PhotonChat/Demos/DemoChat/IgnoreUiRaycastWhenInactive.cs new file mode 100644 index 00000000..921f0ffa --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/IgnoreUiRaycastWhenInactive.cs @@ -0,0 +1,20 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Demo code for Photon Chat in Unity. +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + + +using UnityEngine; + + +namespace Photon.Chat.Demo +{ + public class IgnoreUiRaycastWhenInactive : MonoBehaviour, ICanvasRaycastFilter + { + public bool IsRaycastLocationValid(Vector2 screenPoint, Camera eventCamera) + { + return this.gameObject.activeInHierarchy; + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/IgnoreUiRaycastWhenInactive.cs.meta b/Assets/Photon/PhotonChat/Demos/DemoChat/IgnoreUiRaycastWhenInactive.cs.meta new file mode 100644 index 00000000..75adf539 --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/IgnoreUiRaycastWhenInactive.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 4ba4c747f6975ea46bcc0a55ffe3bfe8 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/NamePickGui.cs b/Assets/Photon/PhotonChat/Demos/DemoChat/NamePickGui.cs new file mode 100644 index 00000000..8e5852cd --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/NamePickGui.cs @@ -0,0 +1,55 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Demo code for Photon Chat in Unity. +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + + +using UnityEngine; +using UnityEngine.UI; + + +namespace Photon.Chat.Demo +{ + [RequireComponent(typeof(ChatGui))] + public class NamePickGui : MonoBehaviour + { + private const string UserNamePlayerPref = "NamePickUserName"; + + public ChatGui chatNewComponent; + + public InputField idInput; + + public void Start() + { + this.chatNewComponent = FindObjectOfType(); + + + string prefsName = PlayerPrefs.GetString(UserNamePlayerPref); + if (!string.IsNullOrEmpty(prefsName)) + { + this.idInput.text = prefsName; + } + } + + + // new UI will fire "EndEdit" event also when loosing focus. So check "enter" key and only then StartChat. + public void EndEditOnEnter() + { + if (Input.GetKey(KeyCode.Return) || Input.GetKey(KeyCode.KeypadEnter)) + { + this.StartChat(); + } + } + + public void StartChat() + { + ChatGui chatNewComponent = FindObjectOfType(); + chatNewComponent.UserName = this.idInput.text.Trim(); + chatNewComponent.Connect(); + this.enabled = false; + + PlayerPrefs.SetString(UserNamePlayerPref, chatNewComponent.UserName); + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonChat/Demos/DemoChat/NamePickGui.cs.meta b/Assets/Photon/PhotonChat/Demos/DemoChat/NamePickGui.cs.meta new file mode 100644 index 00000000..c0d3682d --- /dev/null +++ b/Assets/Photon/PhotonChat/Demos/DemoChat/NamePickGui.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 696a5174ff5e707479b3540eb56d14b7 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonLibs.meta b/Assets/Photon/PhotonLibs.meta new file mode 100644 index 00000000..05f4c176 --- /dev/null +++ b/Assets/Photon/PhotonLibs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ee1734b1a7bac244bb5f15ecd778b5f2 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonLibs/Metro.meta b/Assets/Photon/PhotonLibs/Metro.meta new file mode 100644 index 00000000..42ef35f6 --- /dev/null +++ b/Assets/Photon/PhotonLibs/Metro.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 887ac71c799552346b6cf7654fb699cb +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Photon/PhotonLibs/Metro/Photon3Unity3D.dll b/Assets/Photon/PhotonLibs/Metro/Photon3Unity3D.dll new file mode 100644 index 0000000000000000000000000000000000000000..ed7cb9890aed91a2b3944fb73a1678374995996d GIT binary patch literal 174080 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 literal 0 HcmV?d00001 diff --git a/Assets/Photon/PhotonLibs/Metro/Photon3Unity3D.dll.meta b/Assets/Photon/PhotonLibs/Metro/Photon3Unity3D.dll.meta new file mode 100644 index 00000000..29b2a9ba --- /dev/null +++ b/Assets/Photon/PhotonLibs/Metro/Photon3Unity3D.dll.meta @@ -0,0 +1,47 @@ +fileFormatVersion: 2 +guid: 3b5a0a7dce46a13459199d174ad3db3f +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Any + second: + enabled: 1 + settings: {} + - first: + '': WP8 + second: + enabled: 1 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: Assets/Photon/PhotonLibs/Photon3Unity3D.dll + SDK: AnySDK + ScriptingBackend: DotNet + - first: + Editor: Editor + second: + enabled: 0 + settings: + DefaultValueInitialized: true + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 1 + settings: + CPU: AnyCPU + DontProcess: false + PlaceholderPath: Assets/Photon/PhotonLibs/Photon3Unity3D.dll + SDK: AnySDK + ScriptingBackend: DotNet + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonLibs/Metro/Photon3Unity3D.pri b/Assets/Photon/PhotonLibs/Metro/Photon3Unity3D.pri new file mode 100644 index 0000000000000000000000000000000000000000..889f87b80fbba365fc632d9a76cbc43c6a798193 GIT binary patch literal 680 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

c zZk3?TVo}POXAru)?oF&tU!6!%`FD(a+WKa%P z!P*9FfmMRHktepshgG4;-*ch{k{%qk6T#a)KmvFZb6nnb_44L;QLlF_^m^;nk#4V4 zHQleq!D`R8s|mC$%DD+gLqfA?@JVp`>K=0L6djIi-(RL#S815#_ExM?wvzhV1dl<4 z6&pLMQK^1%sZb1d7U{8nR|=nuZr{>Z@}A=AJI!g&T$rD1fs*DZ&l9vs3j7t`c3)WK(Ae-4>LO#tFj%rrKN)=&~Sk>68ui*W{ zY^?MftI6C{o%{-9W#_K1J;lF+Z6u~KOz~OQ-Yj3GVK2(Q#q~|{4HI{|Q7uW=IBA%F zHVireWGw*=&+*!x%A%z(F9|oMmWh3(LgyQrS(z~XP>D&2B~l+Ft(LDNa(t=1rBp7M z=clGe`#^G>fyO@@VnB1g6n!L26=A=`C1y;)X13A=HI2BjsfPH1bjSs_&+&Zbv}Y~S zkJ3#R?nfz>hv`S_AST1fm6RU(XMR6wqq@`}8!pA&e6Alg`O%M+$uFuO(_P2rt*kGX zqmB&747lEVs$m3(2TT{yEXFwwN3H($s(1i3WI(<%QE)~x1%d9H_+S(aH;I3m=B)$8 zQtOj+Q@>-OL{)ZdLqPx9XrX;T%nc%rmMF6JN7EfeEl^R$$raU?t$~wU`C#ri3`DFGFDy-fG5;iDKNu>rllU z6(2S6fw&=V$2un#u80Z!Oe!YCEVt<+SpDdCn6QF~w{bV;A^DQ<&7|zR8Cv4A$s3 zxe_B+@?E(C>xn-Q5EIB1c%VnFz=4u0%NCO>(oyNGet1`uh8?q^V5S+%8HviJi=fO{H@m&SvwgA!b_Qq#V&`qiu3>Q|U~(|`$= za6Je8nu+#7gIx>vE4x(-_9_$mg-LJCogZaG@*ano_agn|(Ze2S0cD|rm6*|0g zOYz!D@g^o`+`Rg<`EFhhn{E=RcNV6GZ{%tL@6RtUVZUM6D4|RFFp@a zWYo{vVQ~_2sNFRB!!6Zz>9@U#Z{cB~`zrovd2dWGNS3 z3|iW~=*ms$@p-LO`5T?QTOAlzMKmPnx~*CYX7!!^9PPP}MQhaqK-`Pr`x>@WWO_o@ zG+e!0yjl~u496;^4^#Rur4P?3Jxcauq;n!{tpmBw15JISd_UxOZlrM90dhBy)Z@L9 z8WFqkm#tmYVy}91b>!gQ9v+!&hoekqJtZdC3aETg5rD`~jf~|52@x_QCisay6hbo4MEKm^$O? z*$d-my8VLE$cj769AlG*)JV>CCh}&!u4DQPJTm$6`E!h<2?M`6`5fM9S$~P6O+4U; zBaP3K2ay4JPA|ku9et1}34J6#%6wm)JVAA!^~eA)(4~@Qn>WwbrG`wGGFg%6Qaz#~ z(WQparA$&dUCO&uC2|5?%FBsFmy(#6r%MgHIfbqcx(NzZk(IDpI-*JSa=gYg;|r_9 zsB{yIOxmHg5iQ-Mh;9OJq;(UvE!-Yx5#40e>n7UG{6JhZRi_+g05pgiOU<}yYfWdD zg-x&%dmIwGY&NN~y91N&xns7g`@!vs6J+qfI+m}8T#$N9ug2r=0u-|Qq$ zh{Nk_lLJxhsOXsBH-=A0v|IJ04PiQrT%F#pC9au&v19A#mRp0wpzkE3 zEy-Z9!sKm~Juj0tz)71z4=PMvp-lcnnC%)#k-8uX^NfrQo;t&}=+cO*ITM1PCkvBR zm0^ZQ2fB%Je*`t^$oGnIoQ#RxQy4v##Hz=UoU5D>Q7ipK-!P7YwWYl~4@hsQMHI-& zb%5TL_Ktb9(Ac`J8R)ob>&OX-b#c{JE*E6EB(+r&b7py8$TzZeWP?A!Qs2vivrlU5 zWlJ~pEoQ&e_{+<_fm1=z`lDz{!?o%CoHHQ-eGvBgbW|I|vR_tus(N!mW82k;wC}1N z5%vd;^>VMNKUQq=3_gf%H-7YIo!TcwMJ^Jul}0gRGfCe(>$&S}xGBRu@+Mfd(*J1D zFYYN*HtW0TKEzQR4c~JK9l56N*nvo@ZsI;raWAU#-usN`PdLVLxO`I6g12S`HKDBg zt;IDhFu1SKxUX1u6J~1CWuv*yn*#;r}5~>7Q-WlI!;P zvQ#heZ?O><50n~l=|G%kv|z+A*LbhWG)~e^MG!n;DTb2dm+;8#O=qKPm4ZTY(s+{G zuuREh8RdqW7T^--)#-01=BUNnh}^OQdZutVo0+%ZXI`=-b8Ig91hjmv`X!7{6NQ>J z2cm|Zv}Bz9HkmRl8SpEG5l&02GObU;o841+auzLTUvXq>ziE^j-??ao9GJZY3U`Y# zqtuBJjM%jb+xtjLu8oD%)h%(wU4i@HzPK{BqsG{*>b-O=^Rt3(6Q5=87&{xqqW@7| zOkMU8`b@kjSOVSp5C5|0d1_a7bcfma9;`NsGPC)Okb)l+xN#PCIRWN8(_v(UxmPcp zo$MCMdVVM?l^YqnC6fK{!M;XGW%n;H-w<}#Lj`ee>(yRBE_S}ks2vWUIm2&qe)luf zeTVgrr@xjSZqL3{XzW0WwXyx}s1!zbR11cR)0}gqpyHIqDPj-au#rd7dMx%X5b{|n zwx1fIKLwM&+mKpwY59h$>6)C)gBj<*qkgR|kk7eQ2{Afl;+?L>xvr;ZHWROkbIJ6G zT;L=#a$!d8bH;RbahzQ~*((Htb!S8)CN(te1i`_sf}8jACK?%x!%mVU&oHhw7o9QK zkIC)+I6|?pzYwh7g}f~x*dvpACp!=`TbY@}?+_IC#?BpBs#(<|O3qdIAZ@ReobKY> z=gT&ez_pr5C|{eb$$p7g_(0Cvfil^0zEE;26u&)ha#E|iJ4FxI;!2=~TXBm1)#=Pd zVbaby1A=k3vm*DUiPE2@2#o1S0~K*BM$hpiXCzIc#u7iAgH@<1<%vSc&){lteo|*= zJT1!JGnyuDd?lIDp4hYf7?Q!4UEnyY;~395CV}0{e!4H@9?01;Nj=JeN&6zTOiB>N z9~{FSi|k^1h>X6>eE1rG`__Muizc-(0aj%zlKfIG9s_Q*e7@|y35EA-6SKQ=^G!g# zlQbTTvY|?Fixx(XRRuSRGZ5{h>!t%(sm4KW4@>1<`Gteo4-|&u+<^l2O|*J3#%6xvtW zYG^Y{nV93#Qtj3?it#|Y?C93b*FLxp$DVkgzK?(IRqu(yEEre?_%%>-GoPcsP5cRz zR25KY;y|dP#(4s5^N~lEwMHrK!7Wq)xW12ntO^APS|CTs<?h&!`S_P21l*P4y{Y!Pl*O(_7pD9C26a9 z&I6Iu7>_G%myprV-MVJIV=cAu9duGOy&kEwEbDG3JPM;_>vO6lF0Pr#9m^pXyFg?5 z(xrGpq~4Ye`?h@8x0S=btsd@edzp7vr;D@+`|6+m>}QTA{{~rimw2+V`}5$RFy-_G zG_N_h`_Cam-}HqSClCG87hRe>)N<1oUl!e3YF0Y(!AZ4r`YPb%1>jqOa|qRa;OK)d ziKiZXJ$X79!M7{}(jD){0J@wyUK0)sUNi>p6ZiGSvI|L4!Qg%A4+HlB7K8U0_en$4 zinzNX5`$~$1A}X=pds)m+^6C2)#+!_94^9rnVMkz`~}Brg}`AY^gU-MMpZz>x-=6F zJZ2mvVKW&`&(1B#vD0B0raeCWIzDrphl|`BWQ@f)u`v#G72`0Yc~1=!TiTd}acq-Pn+b;(TM}}faZ2+Ur|K97R)$K& zWa|=s@egom-0xUNcId!5>7pF#^dD9t^s)|0olJOQ9i-}}OT{|2M*bSTx2MZH_3GqD zfN(){ds)vYdl^$yU(mrP9(Lnm$=v3dZrWdF57*Y%WoOA}X7g+$Q)|zIVh9arNPLKZiH<_>M37H{(2g4Epko{a&N&Q%c?GE0a|zi3IA zF-(%!TAQz&Zasdm$i2TTDG-3KnI5@(p&6*)2ki6&uaP$!RjSQHT{%0w)!vPEz9R(s zmi4ukf?`^H|EAAi7U6|5{Dsf(?Zry?Cs(~SaiIblSI|&vqu=v05rH+K^{*P{FrUh#cU`ejH1l5mqyX3 zStcauAF`@BYtFgop0~};_|dbOS6!XHvYCy&M&E)wv3_+e(-pz2T68qsyZg= zDkOSA*+_twjeUiqZN&~K{+VwurZYT*2&!e&`ZBG7S`YEVoZ)EI=V--IwiKWP|4*#^i3heG$7j5g~r}7QMUcA!%#_@`> z!YgNGW>lM}qcU|lZ;@9b@ou6=C3K!kp9Kq?M<3N?^icx(*jGLDF_Z&+PS`!1BhcA$ z#v``^x@(0^2f2nezL++yyoc5;L5I^c=x(%%`3s z7#D@Tl!P~jQPK4H7OII0p?#0y@N5a^gF9}vj;rY$N6)bPLmagy(dcdCvL@5oMmg{w zIq)BqgU@pifKOe3l{DwBz8I76=3uPU3*QP5UDA$Y?fo9!z|e~lkJEjG9nT*13kNG^ z1^3`4^Xgqk`ObAO&RVPkv#EYkzZ*9fL*kZkHO7^fP(2@DJ@}lo4?FIw*Y#j+5aj?1 zeqJP!7o^jKns;9Dp>ZE#&V)gwBL)eKr9WJ&;Icl+smXm)`}gTjDHfpbZaeM*h`JhJ z4gQ~p2~njBFRh(Ba{)zwRX`m+WHxF{Db$S<5P(Th!^R9R!2fHI?O0CKpgEUJrC9vK zz82%|c{0(4-2y+0bikFIYQG6z)%e0jLWT+O2)=qEVIzQW-SGl- z;{JgiP?A7;igg~VA8R7(A=Z|7in+f0m23})i+m;958{m_J|1ubd-qDRM{|k?>l2)^ zn(gq&ZlxY@;Rw~@`M$Mk(0l6Ne zg_)%JY|qLedpDNg0pE_K(q6=|^MJs?G@7<_vR7iyc)%6h!xDSg1CHjA-pQK8DML8s ztx}pl+qi@~swn1?LefDQq+L8nzaC6IW-X9k)Ci%cFA30)x> zY`9b|8JRq&7N0?!!;$_m6xj_5FfITt$s`JfAxuvUOCB^2pT;^G1Qz4fD|yfc{7uM( zuo1mS3X=!nQ%#V_H!hxh<6tpU?g*lZNG>e%Kn0aKRr}hq$Tt`6!gp=~aQSTV%}1ih zThT|fo@-czwd18M*v4(Snz!##{yt>@6ogRZ0(gpjPi7Nsf_=P2_i%liaRsA(Dd!q? z!TVgFeKbWr4L@=_qn*^27Qm;!<2Iy56TPJAU@_5~NYt{|VkzGdB-+{moX;XM1d$K6 zYy)^}dIfuM0|aP#q=cwD5tecfZc!G5X=6qbN`((ih@*&k4UHhDc_eC|+uLH>Up;*Y2hCWk#C@y1q_#*OsDz20+tj|7&=#*F{ zH{uKpE1HoHNb5NA=875lEvwq8R6Fv9jT;%WP`EI~IKIc1t^GgvOa~dN& z;KT9zg$G1e?H3WyHsJP%2zYn;ew<9Np+>>0rRyUE+%SB<=mNh__zpWW)R(;XPbPhM z66x{T@1XV?`w43H=9&BEFjrdN z{i399su$_pWKzi*;!P!7Ki~~)&&;AjsQ%gSMwHftVtb-s(ezKydt?a3>_QbVZSppZ z>4$wK;A8HYwtTXm#L^^8wUd71Pg*#Uw4Y-?Ztn!MF~Wqd7f?UgYuX}8>Tbnt98>pY z`A4WT!al+hW+#1$DzTjcDzN_rtag&_NqjcK!(%qKb8MYY#p#H#bwgMu=9B$yIq9q} zq|dN@h&5pZrM&MX9mw%7Rg;}Ffpn-3>4HI|i~LB#GETc|85(c~QWa!4oR z7?sv-DJT7%HK>B@!KtJphLTpYMzP+>x)oKziDH`Dj%d=Guw^4 z{=JfN`EuR|Gsu1d_fQFUrIE(q?2__L zCysS;I%y8uS!~BtP|6&;GqNLc%7j!(i6fmmkhGBPMU%+xIf(S=R8l9WPv}i{IVzR# z5!U5Xl7T5csibWwq`#s{cz9SQ_Dow=F4`k;4of&#kxyIap0^VE#yc^+Y9RH)yXoAw z=|eE3-G}TVTmhos^~B+r^0@6I?DI=`ydd%rdcTRHm@{Fd``Lbv^$4dVCG8hoA-$4v z&8sfO5`NAhy)1Vu>g(QPv2C8dUwBA3`;yR$mceGbMraZ}d5$ipy*P~Jl zt#8*4T8S|iSx8fWbnM`jxTQ}9(%f5%v&#dvU@wiW8(eh=?Wfs(ui_A2K!UA9WY>Vguwt-)G^n;z)8~tD|>&@IVwIehEx2S>7>4yv~|8{3wSjMu;u%(=LJmRlrh~8iS7_#rxCobl=PBP z8oTZJRNDBi4`E$(tSf`IpnWDi0JRABWwoD1KxFw?9Mde;y#8a+dv{Dghy}vN)4so* z?Z~3-nEpT)s<)W?xwYTD0Bg1-ai-^(QT-@IU zR1TwUe7u(ICvXnO=$IR0143e;{DQrhGV6kuQE$HBb<~G1I24%<6%|KOiz`k>c7gjR z4kLerP-i*iV2w0d-+NGSd zF_M(ZNrT-bWUF|p1s{^qg;Fvl^$%F^yhzW_F%duGoGfJh)tBtgQ2Rka#P6sjs2=#v z;b+uKs%VrKWYSjO(cg^1y=*A;{C~Df>JH(o7I0xH>5Vv_1vI2I;_S6fvqhyr5sqLt z*f}aNstdH*zcV6W_ytdNrz7JVsCzGXwtH#adwjIojXJjOHBRuusexRMC?o@eF{J;8;OK5RZ*Rfbi^s>H#laG?(_E0>z~QGcH{5=T6(su*L| zI!Ft~lb)$9#&MiDcnoU9tj36baL>s7SaMHKvaiFl&3=&N(TL}nfqf}m;I%dZsXpHs z9EC3NR?Q|I#^rxmLv|b2TNp=nxDV+kv7`?Q%XD^iYm6_n_8$3erMzsoORbQtw4GrO2TG03A{46 zm+511O&rky<%9QQT@tU7M*#kl@>am|Y-~soi!>yn zmh;&j%^qd+fK5y*U~9!FBLsZ#$_ACW-FK7`2Gwr*Dyk{PTR z6hEs1Gl}S9@x@@GN~U(PVUQPoC&`W~l?2CsYf0%XnHjJd6@`J zZeLGF61?d4MLLqpm%gyuO~a^$bk(x1Lq<9JLy@NM3NCVF z!W>PF1*05Uuv*h%^bLT`n)XaAcVxp!P1`0`IR-*-hAQ)8e3C{UG-^8TJJXQ|Yx9su&72gB1OiJkxt9tk<-5e5x1*N10wQcHmkt44gwL z@&%*!D5B~jMcaE_=@zwky!5&X#Hg71gj z;TQ!6N|f(L?`>&@l$)(5(kZ6(L(3 z5I2r|FBpf4nj90LX@ZLU4kIT)K((Uq(3y_OaC)Yq%R>I; zm;yeviuUw*!7&vYnADy+4K^^jAP&z|rcoIFwOU3Edc|>$hQ=LqOjj=SP4_$MnBk_9 zN$=sFw3$n3us&1xk)sCoGcC8~d#8#T_>5_V^_RHM(f75Ew8VdfbXNN^aW2(Dk6Bdg z3hP^C!J-y=Gc{O0DZ^{<5T|`Vp>GzXYG1&Z0GI_?OzW&oW#2hwLmpG3bw^pW?`$a4 z`8HOiiaAiM^KGr7Pv0xF?*R{&ycnvOmRnmqPFOF7S=zTXD_G2hOLe}MtN{Gn>Pqb! zmJuv2fqLyL&A`vj@Y7z}hUM1dm~S3@sv>dE`N=U4GG~*oRrpl6c9PSa2vvBhwJX*oQZchs>2AIw0J z%VAAf&*&>5=n^6qtc**Du7kZy%VEyw^yp>K%vHKz(D3Z&dN|H>E9@&961^N6FID;e zjc3X$pqc3wcqpzYdIdS~uhsYZ=wPu@0n$4cmPWhDlA2Q9iQ22GqOa?Sw9M=?EBXdE z{pP(OdX1azoqBcjEuH9w=-b?MCieE|yWEtUa$oe_ZaQ7HC3>Tq?n-qW4OZzg?}!bI z*$L)CRo@-4J!77R22JnBZgD&d2NZD)&%sHi<<_fwQ^j-OvxxF7x4z)(lFxxtQ*s1R z5z{SD);B)pIe3PN*7@|97vQ)e7@m?I^AfDPoJt|zz?fHIha&V1jCmdQUqL=~=6Dcl zaN^N=ws>e^%t2UsrJ~f7(&$65o@oWl_Z4sm_G@}SmgqRs$KsYj#W9B%tNN8c08v&0>zrn47cDXz7sX=>YXZ%!a_}ldRyQq)M;9UWgdguHQkP79)o60 zo3YGyV7I2{u*`R0pQhPZ=DX0QX$6+~E_|*jyE;`Ihi{nbtru2X@M-nGXy3k^RB;0E z<4XLix4xTWffL}vr26bVSi_|H>^=DKJhCjKeB`s>SJmmJCp?q0CQKL`^FHJ;wTov* zRK>JGr6xM#Y=b(L56?#DqOVC2p2_uew83Fbk7h?Y+Tl}8bSC~GSn9bxp!3fU!LDh$ z@8Xybp~g*D$9x1^-LyRB6TE#><=gIieavT2=BBkVUqF+ahB^KXr`&W~%vX@Pydz(v z<7=qXG=K1hm~UZ|ruvEvF=ya_COUKc4o+)YUf$F3J%sZDw*uxmn`3@}95+1@^AjA_ zRG+mY<`)R$Wp-dAUMSp{ZIx?dA zshHoOQTy6)PW%QtH1*0PI;`pJlxH#WjHYST*V%pppHY9{GDmJ3Z-K@pmY=o)TP8(&vpBDGo5z z!`D+wqfOC#qw*~v6i?VPV^&Ez85^{jPo4P8Rt2o zGtP5F=ey^K&J{hyVqNA3z1m`IV$IE}h7Wq3j`0& zosH6`*-V~vUU!b@47Z#3QAcj;YsPjHyYHmPdbm5xf_IcO-KFSE{+X~IqHcqtF0&3g zf<-DH5MPjfgO+%P2>U(Cw<6s;HdNGTqH~5Yaahw!{f;_%ip(a8Tw#qV35@L}ika%c zJ79@tF9G+GuO943y~Wo1h?c|jK?3Ze;ePg6!~I>-E}AusO6w787kf3m&U8{!eP&Pe z2|fU;J;yHmnO0b@OHLJb(L+;HvIT3fYg$^ADk4OjraOx)5Fs)&%@~y`B1MrRxC`I$ zMT%;s<<^-2&&EWG1|9iBF8R(ft+O7?{mv077CuPZu)?}NIx03&EY2tV_m;CQZl2p0LJ=&6?JZamjeGSJOjdPFUl`0Zq3L7#5o#&S;{& zKS2aNr0S!UAwgtlI+C6$5=5D%UFpF{t2Ip;NWON1i3rEu_R%tSE{G4JF(>f42i%h4;d4x(? z2OlTJ+LJ^%(+cZjczjP1^E5q+$M+<$L(^+MsUle%*3`#NbVd`cZpk8Ovuart)}Aa1 zG|}3cEGBCD0gt!IqFK{2Y*~sps%dLnNoi%)0h5p#nObdhzSKwT&_w4;eMG=xsyItcM<-1VR(g_y)4bWyy z2k@*iL+sIXaS74On(9kVSTn?%nrLO{E8bzMx6VkLhV-HK(K^vje4%}xps$}eqkXh$ z^cQEfZ$suRB{bLL@hFoejxyE56ugxwOVse` z_X^n3XGctySiMb^IVWb393YxCEssf#9Ux9?Dnwtlux?k8_D+(2bYO7KlTE#hKb%cUJ;uwwz|m`J4E>G zq(~RM6f5xeTQ@Pa3OcHd5J9`hR}Z$V>taWUJf>DL3D3Ppip`qn7&lVvW?BLF&F*T#+%3!heWZT=F^3q>7Mt5_F?pM{Fen&_xjEUf>c$W}o|wPI1NiH>8% zV!x)mfp^6gi<)OtWZuAsVoQbj9ML+w3cEdatgyRjPwaS+&7_VGlSL(y3!Vd)oGg|z zsWaTkVvQm`8=Wk+X`-{yDPk{^Iy0^kKPn&8<9qZfQQAVat5T}O#PewSd33uXuAxdi z%~Wrt8m5Z<+BafYs;Cx0djS9Htz(8+@Jau6rWMxPyl3Jw>8EJl1Kw}MP8YR`_^SI1 zv4%;tbB5TZ@^L$72r5x>J74$gpjNTcek!^~`&z{^`{CGHH!ZfmA4~V;oy&($;AEnF zpTu6`re*f8V)>C1SVOB=Z2vWO(RumsNkQ&>KSeKg(=xjmcZHi4+XLd3o|o?`w{NAr zN8B}TT4wJZ=W-L}TP{xTp*m z64xx8Zfb~oQ0!+?^W|aj7L%Hv4-2!E^0iv&ddR~fToYXnd01pHxu7uT#<+*Y@s}vl z1?4&SMQ;|T_bCeKxi0Q8@#8Csu8Q6ew^c0MuSmo`5cjyag=q!cJ9SIkcCneM73u2e zC&h6$-4Ok>@Oh2$wE|t`cvci@qAMpYqD2#3<#<5^ysjeY3dmkDM-yF*X%(9^(Up^z z#Th0SoV7m{w_h~Ap;~s<-WvD1$T*-VDB=zLsfXJ&jhfva_og_@)QZ7yfYP*7)AW0Zq#ycgEX|IVY9x@;=YTM;J#n z-97Wg_(-GS6Xjbn^Y!>BW49(p?UDFs!}_W6eK)f$KGrDI^kL1X@o`3@rpN84!rjfpV6AFwrH{~Y`GuHo1 zk@aBUXpS^?X&Q_56&VLK1$%6X9%Y=>^h(v}gwaOaFDhS=yf^+rqefGZ<)QduKW?$eWuO-w5wBXU_nr9t0rpmPSZ_NIhs#zH2w_EZ~NHPQMq z!w5DgvK7B?{$X^DQNvUZ18@%38e5t06O|d?M9(rdnX0}Sv9~46HX7-MbgX?w?52dd zMxlqIJfusEt(s2FdOTsC;lpp!T`*wma|sKK)tVlyIh=5Xaahyxn)ZaHMzK|uGNtBp z!Zk*8J7!oDml<(hD)Kqp1L}=AOfI-#MnGbNu~pOH z+Fpq(4Tra?A*UuO@j7D{Q$6f8vJ-DG+BAJDvlDMJe0)@yV{vTP8mUY!@RfrTZ#FXU zoQ+!63rG4Eqnrs_W{yZ~G)`(?pBXnL+-k)6smPHtN)p!@bC_K4l~Iv+o3UEcPIGeN z?Zze@IWN9E`VQk$?VA@rEpfeJ=gSbSK*xY4VwZ`3VGzO{dqvO$o z#%3mUJbKtT?xq`}w-`R%D6$pk2(-;u#Z(XVcno;L*sIA8j{&<3(OqrBTUD1N{>uo` z6zNeF{ftqjX$G$BEk=tbGb$|p1;g1x-@-N<3<8*1n{gI}+c;FXF1m1vBnT ze9u^@>7yBsCbk>9H0_pk2YkDrZ8NR*OSX(~RIk z(>2l-A0*dknuXLuHpi%ZeJp|Tp|SSEFiIwR-oDw zd!k&JrF>L-l3dNCYEPCEbI9j{TYa*f$#P+C2Muzj$bET4swYxqKt7RbOPb7M zQf*0-`R z7m{yx2ZaxJX3JBGtOfW9T&|>_#KE4h-q)WfNK5X)S(YlrJ}H8tFUPIY_&h^*E$Hu2e*LU}+_ePW!WP&zAA+V z%N92+a$Y3&O(35OUQQb27%%fC60L(bN4cC66# z;H;E&lNG&Ia<8*WI;SWa8}7ksmM?IJm;Jt7gj5}w$Cfh z8o5T(TYU~VYvp04wQ!^Th;z0qn64sQd`>v$$Yv(B63vy5GO3klu6*6?JKBA&{K-ux zo%5xY-?Xo=(kEgIWDye{nJ==y0=Y{0pnpaYezVY=N%gJ3JL8JPB3Y;D!ND2$J;PI) z?uaES=ePcOP&z z2Ab+If{MpGT2+u86B@oh;-F7WHtW_wSB6 znTikY?zlH*nLMz7$OX@1?G3VWA<=TAgO26$J0>+^D`fN{@~yCzPe~OkWRj*!rdVKw z?5D{WdvK*3sL5Vw!SAmR({u~wTO}{l^dRP2CCfFvj`^;Ym73neeAmiaP5;7t*U9-E zk(lo~xkQsM-m7xGT&5|!$^zHR>oqOtmnv4vTQsfhXMxpny{7AXJ{xm`Y}WKx&p5{o z@=;B{W4;^Z6PkkiTi{0dtfo);rizyh*;HsXyjhBadhrgT6JgO;ZBaw^n|t zX&BbGR(`GN!_-u9v;0YuN16q0md0hOuh*mR7U`wwU#S+jMFwf|y(m>QN~fmYOc|Q; zabIbaxtgY-?^ZcPlM8*f%3@8K*t_fGVoj$e6E$fv*w>|VnqFsLz~$6x z+H-z!u9FT$FnXW`Zj)u2+VCp)?Xp4Byh#?gL+;S@SifP8JLO4DpChf8L5sOeIMCMu zcgq}2J+XK1k=2?i{RK411DdX3%DIAj5K8b!)Ff9isjG!ea-a5HHYQj!$?;26U-!UI z(wgK{rh01SZIa(=-+&8K#Y6HJ?JK>|0uM>^O4To3 z=zCcDFx6Wl(f6?Irijl39+7c6vL|lQW?8Q34A!?;^lf~04p zc{ObV)jl%mS?O@oMM=-e0ykA8wa98WRVM9`4Q`s5^t^0#)7+#NhZ#_8Rb)@mihdqBFvFG~9!q*do_5m@!3U&I9giQ($D{p0S)l3e{zR2btw5uBP_EZR z<9ARV)kI@^P+DD7ikcw@WvZKY#2l2XnW%T4PI^;5!lY);A-PNWz!u$_bV$xy#%;kZ z!f(FHrEWT5JuLSr!u$NoL*9~=^{Ul(#QqTcmTXYOXF6}ojZAc({}aJ)%N8aVWW~IZ zbVP*IcM!cJPbuP-y(4{=Qz>d2-jM}&60O5+_$BEb zxlq%z!AA1Cve``m$tUDqH}y<@Pqw)!Hu-)060s^}PfS{Jo6OV{pVmLQT{dg_q4a{} z4`jf475PJHQSyhf+)bs)C*?j(UuBL@{z#T@P?7ToS0#TUH*2b|s7n4+wz+*Z$@pOZ zyH#YVbAIv{vQX1pq%Y+fH!V&6S{`;sE=@iogYW66VP*0UGE-B1#meNL+0Z1X{NWgn~vdo5+Adi%lueSDL!VUCMu0!>( zM5TnAi#1UxJ7<3y!Je5anlmdo@PK3ZPCXzM;DjuWjZxIS6dq0%PdkPy3E46 zQ_MC^msGWc_BLT7=M$Gyy%lOV3p8b;FUqWT(_5hqbCV|8k7CW;Obu{N9NvXt9%XXD zYqdL*<4m}h%5=eRwa*|qGa(ZzlIO&HFp( zSaLt}@B3+tfi#jx4kBp$>XKIor&8n26SpkCJoDayOky&Nb(`>D%Oi=4vv=+Kgu&0bR<8~DnO$hEK$X_~qJ8I|wFT#+)?`Lulo%3TwvzCph_|EzMzHXW=(Ua=cg<*7rsb77rc4FsFcgh z)O{-QG2dsBuQ2yAt%JCnZ(!C3->F! z6zOX7!0U=8BVA)|I-qFuRF|wXiw_dHz&gA-rOs?TtbF4gqZ}?XWQ z-^?;|p{C)^>uk%+<4o%ys_*QSW#+D96uAx-ITocfnC3ew-z-O6%1X0R(;acoBwuU( z_^$Fr6_-X|XC64NX~GBcIy3x)q6nnx&D%A_P2HKi+Fbk|`PRYe@as}mo2%X@S_@|i zH>9jF7k;38*H2w!t~0G4De8-Kn|bPEMSkWY^L8`tGeyhLcZV7LxuSKsJ5ug6U;Khd ztweX3?M$>5TqEu>&nUwCcaNCsO`lT~`LUq){p-zOCiU&7^=75=;kTbM#Cmg+j-+om zVZMK>e6(V&H~pDZ4eL$2BCO&4s10VOj-(nkm<5WkOsBEIT+O8F+h88nkyHcb`|?~3 z8_aAbRl^3eNc*VFyUlVYRm$DwYURTkw#vKBGdhyW#K^DCm3g;0fl2k!-R4Xts)5R! z$5ami;^~yTdEM=}@8TX!bpHfC@54>Y?0Ztq(PH}`=Y8hEPGvTm@8~k`5dxacpU?Bj z)6_EjEQEbMnW!zVrZk&5ima=Ky5xgqxu#os5iQhIjn^C>G}mj|J09OHnR_*r1`vI! zi0?9a@VqVRAlf2)w{+eXoukF}cZ2Y$kzZ3g*WtI7W9^&G0w&dGo6S*7sy{cI73cY? znd)H|Zr^5e^LdfG&WqfmBToRnlft$Ld@2h)*Ye%zWM5Vo5MaRP;{yUDBvw(%ea^p5 zA32562lPLecTJeG0|EqeA3^2h3@7`J#Yi}b~8WgA#yLFT!1@*27>WuNnQM0Vuu zTuw&`9Wg6wsT^YlrK^@J{px~qDFN(N?fGN9s+}Dzd4{)c8utv@9b54(+Yb++x}Hp? z^bE8+v>)5&)PSA72Hy2^U?Rm(I;D{PKqx7dBOqcbrN@q;JBgZX^aRjlxs-l3iPW>0 zyaz5K+YwFngIEGSF^2PYokr;ogi@cslSp=|55z<)72w0!lBz5tPu?kJ3+a8`?0%fN8xcWqcfIw_c<%*q-x8r1R+fo&9z!5bKteq}k;crxa{O{vG(ets^Ma%oR0XJ{FXvMTML(>vFD z7tRU;8e?e>wU1s7oF@Ih|F2s4*v3mT!u+P=lu@-ft z&`j=Vm9lB=9W?rn+j|X;5w6=fxBqIj8N~ak^7`@$qgJ8L>(3#ay#~)-2?KF_O}Lzo z6n~datAU|o)Oxa>_dYe#fXBTE_pFW;qk!knivuY|ttSbQ;%a69%~c7%VBebX$w(^U@6zAF zGV%Hlm)tSmD5dj}v~$njj3aA6Rv5+1|=$|@V>rA+sSG<2t_r(5@@aOnHr>hlMt-aK5 zw0cwCO}rQUrxZFSs+c>&Dc9%Y|ClBK<#awPpz-~`Z6O_DO+J&i=rfJ6!~fXlf7jY;@fh(xsdpBaypPY0 zlznjpop()$rSqUUj6aS@HL0H8g@0^PiPQc{(5C)I901|2{9pQ#()b zDr6f*N6%lvDdjNkQ~1mVJbrcFU;Zb3^3U59$$h0%%^am_KGQy;&JsIjb!3d%Lus8q zH`_bT**f+eYVCh#Q(vjt|7xH5AMb4cxoyyts3I?R353Kc#f8OP!Tb ztLTY;|Fd50ytdF@BcX!N-bZwrV;A$eN9UtYBd*>QNo#oLNR|H2ee!e7AGhv*+UCyN zer_!2Iu*_BKbCg>ex$t54x?WB^EHION~d>BrPC??+rgxN74uK&-wvh{)DfqFk3r#m zX?>%ka7Ww7HsE1CmZ=slW&h4sz|@sM zrJdg;b-r#!BYysMvn+mZ{u{s3`IWsLvw|Y8!tpZj>69II$GcJ0=l}2Y2A*#}UP$%k zJJKHKn>Hoe}6Zz_8=W^8S{j=V}Ga)#dTB!E=&bj{C&cHK6ygK?{ z=%35^b1oGV%Gahy4Sdom&6ZzKJNB~9<(RxLs}!{c&KPhmQoaA`9Ixzi=>}x*mD|6I z8Hw{BpI(l$v_nB4X?T36$w-c^f{5K+xFM# z7H+2pyvyahI*Q8qvrfi$G;}2WqpDA@I$tZJD{01g*Tl}?S)2i*_+0l*9+$t5Hy{_= z>wzyne0kw(5>gDla`9D#zhIRBJ@7ZJdSH4QruD&BI=(XSbpgJHLJ&Ut(T=ZND8yG0 zbjKI{uYyq!imzOJRpGB&^}<&!zN+vSv*=UcE~pm#l{>N{P`$AHcSZ)_uhWp`vkqr1 zVXa`TVy$JpmemKI!>88zz#I6q+93Q?JQshjYAilWD;&NVR1SM!2tI2xO;9bvQ5&HO zH2{A%iy|N5bV?C0pTDIvAIrpN>l^cjAHiSUQg-8nBhW66MEZ+^MnqJwIA)v}7cN4$ zoP|K&HdqMs-GPPb+Xeg#uBDjw8qvVNIMcwtKC@b<(C^eV@Nd>M@Nd&J@Nd>M@Y7)% zfSwB5z`tM9z`tM9z|Wq=-|DK(5Y2GMgkDA?Ke>86ggKo?Gu|&}jgA5^n=O>$Sqzt=mb@wf$PW zJL?VOYkaEhapNa0Ur6ec2Ht8L+W4Dj7(WX0(l7FKk@O7M5c$|lkOi2ISE5lZsPt^# z0-&e(7U1(`NvW;^pyvS>;8?`Uy*mDlaUVcHbf~9}eOZL8$+) zL@(WSa0T8+CSWgqe`qMRmxxPQ*Fnu2DC z$#cwy)#RrHUn^D*USysHZ)b)G;+P;o_8FYXN6c_RcaVe&>H!}?Wrp+9Z+$q%N0-^0 z9c4LYd_FFob+)D5p#G1?QJ8Nz3v^HGQ=CFQ_MjzAzKx@qC2!6>Z87nw$wk<=pO4G; z$mdZrvBsA?99*M=>oW0q$rT309P>D4%$oCsM?AMbUc4CkCE72Be&>-Ta-uvuj~P?v z^h2GSl8qXWp2s>AbymtqPABy#E%wZpYvRVB-EYDi&!>zvaSJ?4u*@Z>YvP(vSIv6J zvqWAw`Z3gksGXh_;_$R*J)Icyy64y8xvImS8EjX{JIcTHtdjF;x>`$Q)9js|Iou~X zg7(B5LErPq;nupeF0aDbh}*c=TEyE}#M@ZFV^NDU`E}20G4gHewc=>#3DktB0Jv6A zuK98+ej9E+J~_=L*J8{GYZ>YXvJ6Y}wUr5)CuM@>b{V&!jLR(JXI;DGmb4>)Pw5$P z1j+>M1$RiV@R_zbf}Yqvk<}&c8Fig4NVjwP^c!uDvt7Wtkjq@izF~`a64vHmIiq(<#LvC3pYxqXNcEE8CBfdYdxp0=jUfX z#QQRhFFrw9oE$gai*%Y7wf1+8w7_~Ufl|7A2XRXt7wOYydKYjD3q;b?IcR@2ZLxQ= zh?!0rhV!{VJQ{nQ_v3QC!zByEx6=eHU7jnNX6jzqv z(OT>rEO6EBpHtwond3Ke?VGs|t6`*#36$(*=v< z*TO4&tnYf>>h(Mdr+5_3@F<+&Q8>k;aF)~0vfVCD;o4;y^)r^EPQrVLOoLX2uetpj z<%%iUo-{5ceqRe3yRXH3=QVymNs19hbM`fU1-zcLi+jgD<7YF*jy&Y|6RvDC@%Iwx znb~`IWjiQ`S$_6ADDRF8@!u$a?vvpEwOHbu;omM^b3E&BGq(Fak6SSziMFLVhqP<# zA}LH-$+N_r{!6-s81$^*5aSA5S3``J(C;wi#!2`iO~#e1`$Nh5&d3x@iJ5W28e-g6 zjmL507FM5%oS=B~)1Ij!#GrjS#K=kdu4}yUeb38-;xU&64)Uml7~eP_!V;cvzKdT6 zFY6U7UKalGGqIeUr1)+{7)hi5=BT6H4jOm*e}E~pUX^ir8TLk$rObFVTXrwwJ}hJJ zwPG*st!3CVFL_KfXyu$}&}v_1&^_%XMzbRTLd3AJU{PYw_c(3F8{>v`kLTXDVVR@Q zJ~{59?qz~j;A$*~l**~*at`7QxvBdcgMRU3jzPb5vXI*|$Dm(7nPbp54d-CWQB0>% zTWYMd<5_`0t9Jw1_{~FuR`@E;wOT7}%W95aZCLCLJ?IF#smE&GqDF(hrI5qAp0$~E zGwTl4-K=|A_p=^mJ#NtNgB&;L_d$*uwAvgu=vx&h4f>wIaf7~7aa>2z?}nT-=(`0c zu~jFmCk^`bkdp@eddMkm=Skeg7)+tx5IM!IJ&x%k(Mv1sDT7vBDxo~&j6r+QSuW=c zZUsJJgG)9gji4!MbbKTq*CdUODQR@ha4jZoyMP?D4}|1!n;Y3~WP6UFcFy55w;(Rz zB<_7Ld4#ha&ZQOL+2Dv!2i7t<)QRa%!^!D$1oZ>0a`+@Nob7nE#eArCiD$k!+?#Yw z>LZ~goL*siWweCmo8Colgg$Ou-v2GMe;N5kXq8!(as+C5PdR4v8cyedfjRgbZO%2H z?_D0wYY3eM?F@fhJQ$hWGfNIF^653-Y<4U%NuzyfZMVRDb6$M3FQv5gUdq2?vXprl(YU8v=v z33F9&u1Y~$Q7s-utr3r*&JjCM7jpVyPG8FDb)4QHXj^u(w*|cx*pKB{;DGoS>S6H= z>QV6=>TynQiq}Y8;0(M9)q^al%!TkTjwKby877!@LGGplyX! z=nVv43-wYL)@W1%`dTO^3l&GfgG#e|P-zYiDlN`~=1(Q3ulArhzlPHrJuJ8{JjLnV zJgLlhR4XL0=CI~@QaJ^lRPPW@DfFb$iaawgWfZ3rd(s|M!giUb7nWJ>NwrjRN;Q{I zgC*ch##~mI=jo3ztJ(h4GYIWUE7echI+fTC#KxNDeJAhF{Q~Gf!b`1LfvGIM%`?UMcrzRN8MpfMBQagLfvgmL2a?7 zq3*S&qwcfzMcr@hk9xqGg?iYUje69Yi+bF80qRL^$){Et$5U1s{nJ(&{WDe?&F`@N zxCdEj9-g(*>;fCjF4OiMs?|nw#>YncRDg~4sUREeQ^7Xcr^0QtPuXp6p*n2&xLwgU zDlN`7I08q9ZKrJrmXK;2hMHj;j+$v3iJD^@g_>u(5VgQof?8-RMJ=+8K`pk8LoKsa zpqASvpjOzZZztL&p!&$4b*fviJA@Hp$>+)v}70w#i*sM6F6lW zOirtZ*)Xo}eXJiEWKWYXV9C==PG_yRQe8INcBtwb&pI4+LEmY%`!M}lv_I}Ey~wU- zy^l4@dpl(HndZ&utQ&pE-stlP9P880c01dj`D};Ke!`c$!k4@eY)7!2&vriBRcu$W z?PA--_C~fhvR&y%<=FhU!-jr&{$y9OHnFy_wy{D0dF`xutd*>FtWB&ftZl5&h2vTC zl-+eZT$+~GmD2Nqw!g-tLjE6Ro!S?_H-wEPj}vGw%ggZhj1=ddl=iSm8?}- zDOVlaF0GVe@6GY7m8^BFRZ)~)6-6;Fwq0y*jM@$#^x1>jC%ql@sWcJ29bQV0KrPP5 zM?I9`il)4-Xv({X?LBOZ7)lp0lpeu$1lx6NH?g*`wz1k{sr-mo$`uhyxtiE+VQpiD zIP%(A^H}q>QhX)bb*vk;QhI(o<;ssIyNc~9wq0zy*tRE7Ode~yR*Dyilr9pe z#kPxW7uy@z-pKYIw)e2z&UQQ7qCc14pUY=Eg6({^^VzOqyNYcW+b*^@vb~Y*J#6n` zyPfTJwnZkFpULI39l>@!+xcu)v0cTsi)|O%8`<8-_8zwPu-(pfJKG|Q%g^HS*^Xd4 zFY8t8y?jo|=afoLsp6C>PI0mAV!JMz_PF+JDy==6N~_D+4nL&T4Wab95v;`@bbr|1 zR6^Qz5h;|Bwv^L&wNz}!CtCtOYWT)Jd8j-3R8FSS>R6jtTUgszVG4Qeta+@JtaYqS ztSzi|+gRaJj%Uqdtz@lZZDPf11Nc3xN%#p& z9{!(<|MT(x6#QR_|10tTV*Fo)|LgGoRQ%t9|EJ;q-FUY}H9P~)hs5 zE3Oy!izme!;%(t+^j+jorpa#+P`7-Anq(AQ>ss<=t|h{7U{J z@zlxeW~P~i<`{E=iQn@yzcGI>e=}1pms_r}thYR7dD`;4;?eGL)tWBtJTZ|nC~X$!GA zZT)O{wvo0H+hW^QHkWO=tx{5PoPh*PmE8ZPpVIUpMgGOd}jDu;j_YLwa*AT$be&1((-}HUYx2IpUUmw40ze2wWehq#%_}$`n zr{5!fd;O02wflYM_qCt!_wl#;_wk?OztI0`|5g6C_&53Q^KbY6!T%Tk(184aQ300) zToup|aDBkd0e1v61#Ak~8t`hsM*+VCcy)>HlF}u!OGTHtT^hRF*5#2dPjqSNav;D>=<1fB`}HPE|jSl8sP z1G*M;E$Ld*by?S&x;AxvwCmGd_jG-+>#JQ4bv@Db)2<#t-a!RHR|VZ2^mNb%L8pTP zx}|h0>Q>%uNjF!w>$=_4t+Ct2ZVz^QyxZs9yt)T;PwYOS`?cL~>)zb`i|*fdxAX|< zk=mnQk3l_(dd%)|U603lJm2HZ9-sI4rpHe`Jc7Ff4-UR4xGH!>@Y>+Jf?I-L3O*M6 ze(=Y^G9*1@YRL5=jUgLCc844ZX%G1}A0Iw9+!cOP_`2|| z;k(0+hx_%k_w3U%yXVxNxAolH^FYroy&S#D{ttEU0w33P-Upt0@t6S!KmXY{rKmOfAM(hiAPR6bK>16e*DD0KJovY`12EA zJJHgAtiQkiB=&{DFIW$mCd8T%wm>h%FHd8ab>rOeFv5P*V_t{Y{qSKth%>~8aN;l66cEdn-|Rk<~`;Syls8Pd<#mx6~FcOZDt&A_D-7r!MxFY7+UNPW4Hc{nKGX; z=dlAX;5*DO!Yev&egUVBpEggMUjh{WGWc!WYj|Of;cs5~9fWUR{6mDLEB^`MFD!lq z;R6|#e)l_?aewePuO|`y+?zTiJS5>!gs(i?hj8w>lL)i#VEnrtVR-fJZ2N8rQxg7% z3lAbceSrDdhu?ts*@Nu)k(B|2hb8>y%Oi+?LdN~YR+j$aBulT1F#Put|CI+A|Gk9? zgiqhaI(wb$^OrgqA37<0t}*A!U5x+oql|w=X8OOMVEm(!^9z#mt&+2pWB$K8%kbyk z#Chr5n2#=ynPBe>$zEk|KC}L^>hEHZG`#cv#kGxGmo>5;Q#kz zj^FU)CFD%VT;4Ibg!rFG_ zPs-^3O0fFb4%Q#*XQ=BNNFBw@-B7{y^ftcOT>bLgG!Q z8CRVD^JPNy{gdxRxbQ}Xx|)is-M6vk%d*z*dy+8M<89y~*Fv%S{s(i2{}Tx(y4d#J zX@Nrz z+6DIT%Wq}>R}TL6qe(OE`Q{*es=Qg65RRHe=!2KGAUudXAN;fpVGp>hZw`Ua`rxd0 zAv}T-AKdj2!uyc&z+sOdJ_K%y+hPcD+YNUz_)DtC5I=`nxc_PT5Wd-*K=>B$W87>9 zN5)%G;K{yO1h0m_4!=9=n;rNSeDh9o8a=##5buzhM-jdYcRM`u_YnH#-57^@(=g)r zrfbAsM2H)t;O4wpFpl_p!PWU&h?9uF51ict&wmr*?*~L4c>g)XzYP%K#wIi~_(se$ z!XJl++cQ6b(8nE+^9cWinM3$9@M`$xGmr$H`8NoC^DBVeGyfYx+@v*6BK~U#amy5* z56}EMLf?GWtRVgy2z~r^-W9}OM(CU0GS49X+X#L9a^2ey|347=_%%A}i@$>qZ_|se z_`3*w^99ip{}3T=RY6CD$HoMx`Bw<>riocc{HqA@9)!sw{5rfWK7OHV6QS{n2tC|; zz-oJCgiYQy!e;L#!WM4_VXOB7!i4uOgh}t+2;00pgzesY5FYT}i|`HJ`w%|ry&oaI z`4Hit_Y%S(?;j!@@je6?MiKgE%=>o4#}WGQ=YIs@8@=y9_$KdvLU`8u#|Y1P--SAl zAp});--GyD5c($NeIMde2z`_Gz8~>fguXfN{S(A5AoOtu=LZpg9HEb2Mfn)Qi{1|- zocBJC@RIi<2p7B`L%8Vu1i~l1Pon;1guYqwehTqrguYqvej4FZ-p?Ss;{7bbr}0aS zcyHbNdDM9pp>Lk^egWY(dY?vk)%zucZ}&cfFys9S>Z~HfyXxMrBA)a9E#iUqS%hoe zZz5dxehc9>{8FK3@(6wN4*dF{Z?5CF1bv)Jd>-MZ_wNuEy#EVf(ffUbTizECKJWcU zv??L=P1*Zn#48AWv+ex}!W;O~e9zoOh+X6TCxkoRmyq*Lgm}}<`_G7f6GH47@6Qnb zdkC>>yuUzv7a?|y_m>D?^!^$-??H$?f?vAB9zlpb;=O|Sw<5$I@$hFpfWS8|c}2ue-NQ>KJFzD|7Qq&^CMmx;y;SeH$UbbK>WuM`Z!7HMEG0YT?l*pZiI*Y zLkRc$BdGHtLe%%~LHOhTF@!(i--qxMejmb5`X^B5ClTU%5B!q|f7`zw;phDa5dNP3 z5W@fLKa4tGMu^+I{u>bgbA-P63;#6YUqOgn<3Eb{Um?V<@dpwADnjfUe;DzvBgC%p zM-ewoqlkM=p}gPB%heqiGKDLkPiRo1Q>;q-h@E-AxM!?`e7x;nAiggvXjz z5I)p&1@%uM^v%Of&mjH{2(d$(-iG)i2z_(9={dyDAjF<+x{CM!LhRY54B|rwaSy*K zi}(maoPab1h>s!k&3Mx~;u8pQCeoBg{EY~)f19o&eikA4dDAAsH#Zd#zNP7TgsG-7 zN~aL|X1Zw`@fn1^$u-?XJU|F4ZQ4Qj{Y@_*{DG!-A^g#%cO(3}q~L!b8p9hVXFnO9=08{)Y%(-~1tj4>W%}!Uvl_g7Bf{@9>(<>mX&C&Fdj$ zn$3(kiI94Kv$+f@(+ZhFi{KZ%M-l#O?|w*<_Lfn|tzLw~W&q)cnL>EcbR-`FkMBiz z$vlYg2&{!CV6$I0CCI10Z(cJ0*nGeFXXdBC=eNBNd;iM&6R*?1+n@B){s;Y;rj@4k zrXOnhnWo=t`kki#*mQsMH#GlR^Y1r*w)NAAKTZV6PbGgX`G?5|+BVy^+P=T-ciVoy z?N8cf+vnO}Jn%$EspEg?_+&?K=ZVhObw1wtKX!h1=TCOt-IX}leh{xt96WUJo`c7` z2YP<}$X_3M-Q9b4fBf!Wy8CN)ci(gBo>%T^KYHY7@6r2@e#6nZqfZ}QKe~1F<45m3 zcI()Cj(zgjFCXi;_knw#y7wLTeqyi5eBJvp!dJYJ7n^W2@Ck&T|5b#(-~65?)8zjm zLi}0^!WRDn-_m4S{VyU+_#^Lc!U^UK!ZyEomv>aL2cQk;-!~_D&Jg{*p??%NVR@ew zCph-+4gKHu5Tn)g{te#ysQvp%ytQDk63tkLW~@RpH@Uj<2@1cioHnNt7p1o9X7XReU1EbnXuOZj&O=LUxc z%%z}$;zBM{$|03XkB?@>G9d&$>H?Sd9!(9;j?Ruvj|`8GrN&1_Qq!rKk%7snsiC3S ziJ6JX@!83d$(fw}R|;C73R5ZlV+BkBv#o?A5C?`SR9AW@maMQ!Y2m92~&6FJqLNx`P9g%uW}c z-ww6|;(fb3o!Qt}&1A20gs5yLSlwQ~98|VTGCdTacBwLjitDA~b|J@R0_}jgk=fV| z@E9-`2hHquA^Y}0b1`4I9^@|O%au#TT!4%@Ok^ul0`4T0E^KcGQR?~a4AIJ>CkYy! z7%zKWo~7+<A; zw`SIdhYW}&o@7UaN7g>Kf<95_N+~bPUY)xcY}VDZaG*_fM-BUlWj>WDY3eq6Z*s_7 z9MaVsGEW3MPjQhKGx^fnhs@keUQnJX?I3ljSV(Pb6th*CtN9`G6c(mfQs6M2AcI>* z(4djaOR43cjGP-oW_n;OJ(L=m8l4;(pBSGRo0%CHADf*{V~frVjt)*t4P*BYjSr2b z(*t9Z1GA~IfpmIwGCepoGc-CeG;FqWTNi-Ppfqr6cG#?x19Fq6h83YUt}qRo8^dNH zbA2P&StL6e92gq8%}S1qRIMYD@pVM98vR^HWHwkw{%0 zOQok~$7Y5m2BrrG2ggUvXliIpWE$|yrcERTB92^=O8y%e)8=Dv#9~~J_rDi6_X2#5VP`PS(^5vjh+_(|sQsud= z8)K%tZwcGXX{8(EvDr>Uvz@pN*n>k8agrP#n-C~gmS=C*YLcSFoSiS`wl{*u%vq50 zjZ7t&+uYg+$i5(1i-nn>lF5Txo3WAE>FJ5#^faXC=Z}vrjhZfiK*$q>A{hanUUG?^z1Cic5-MWH9kE%ZO%`dsnMaS)L3eGU}y|dJq1xd zIWs(-9vKDL1A`L-gHzxO0|SFY!&AdUqmxr(Q?mo$9ncU!4r9YJX7L)RuQ0p<_OOHG z*woPA)bQ9;IyDI~J~BQt0uD1fHaR>DvKXD27#qYcnI4}UADu{Jj|`8EV^ZVTQ_};O z!pMx7UcS1NzBIFPX(|2WO8U}tddAE?b@g)k;@ni~V)|-L{>mkmq^4?0&`J8d^dl|z zDNjv5QPp3p)$HZe`T6vv<^9TI<1Suam`*P(0nV(d7t_}=g+j0~H)9}X5t5b{gP?@y zmOh5ZMy94FvAV+}(3U2^AJWrY*~x+F^gw!WdSE6sGJ*X+I665pJCg#jK$}W&n}G|U zvO|)ayGut<5ogt@cwNEG<)_k@m*?iCvr7w?(q>_H)?7(lzBG5~JUd*J=jG|E7t@!{ zFJCYhzy;Emudd82UR@;SY&L2lWl|R}n(VbqzK}1hV*>@}r{~SwrP&3uv{SAGn`h=0 zOu15;TZB!LzI=J%vYB5xf7Nz5^~`d5i9J+jEKe_1XJDwAxuxlaOPA8q%LEZKn45hj zmf@mLuFL_#%V|>5RglpNh-7|F+Azzlt}M;`@`^B`xu?we%L`Ygo`L3d)sSaih18Z9 zLea~vUWM#}t{CKIpkkp_DGxR1oi@1?6f~a;KD}M86gO?Ps$@1Q$rq%;rJ_8v31zD! zwO*Jk1>0q6b?F=6L{eeN4IgFA1R+dOW)QZ>5$erywpiN8uTrBmxqQ|@0nQddvDwPh z4*I+ilr9$6k*_=Z%u+FX9fpGxoVi3z6J>T)BaN|q=6q0)qRT-x$lnN3<(&fRN#o`0 zRy?_qvq|W^+3gLm*y&PMw+YnLpmMQTE>G<+Z>uIfy^+W4mvYzVa-=rdW;v6>Hp|Io z%jpiwnX7B1AfN(cD%q{sQf4#A&BG?htcRKN<#j2S#mW>YGED*V%x^AVD>1QDDQ?;5 z=8lcbqSwXD&PEaCY)I2;Va?@OQ@{?CD!cqG*CGp8b2*bQF9k3f3fVw=nJdq3WY*V% z+)AMw7KrLT2Nib{JL+<}#aE36bs4RZ74cpaG>EQ|`*7-k;^q|BYJ&QdL4K2rdC za^`aW9WW7t4VPXhSlb5pW_e_*h2|S_v0s7`6jvB3f|+!I@ak|bF3^;+E-8>i$!rv5 z#kn$;g2Vxt8*kAl9|*0h%RZJ%nYFcimhhM3eKg9iG^k6{FjL81bISmuf%c=Ad6*kF z{K9r+y@(a6DVi(K1Z(*MD_zgS*ve6b&V}k2ENNQkXk-nOuw-ncw&Z4hV`D0~jO~vO z+>*QDE(coy_K(5><@IKuw6f~BkmrSctAA-Xn#O0cmLR;C3Y{FIK4 zsbX&DVo+GG!1Q#SStbNc5?s~tYO;%sd{zjnx*%)?VwP1{fTLlP{2fb8zG$`BxdNm? zK4;E0)M_8Qe)TF%dl1EJKG;CD>g`rvzDy@hC9}D;uy!$1uDH!^*SNm^#UeIhxgs3i zc^sx8bN8*eum#0?s|fDmsxNFcZs1TL*l~shaa-RvcU6PzMNHkY*`P%JSl`l4Y-)RL zZNDnITNUe|sVtCL-;c!uL~*3F>RDlr|PK zm233{H4C4D?EyFaqG8ly~~-KcUrZcD)#NQiqz_B#nEscvi2fWj*a?i#Dld} z>kH9`a*qA0s0)p5tNP~987h|au-WU&RS~H+aXs_!Q#8&)Nw4V}342&v-4^~Io`TULv;+_}EaaC z*m!+!bt|+_z3LU(r&7%d?Ne(3-do|&B!+$Jfa7m(K%?Kcg6!$rl!t@tGk{=Gakozm z1!12;Whqod>rtv}ya+X-zAV1c!E);>h=o>{Ek5|E?L6dhaqH?-zH&2P4pN1jxnyY< zs+IVUso<&K+%fbTGJsaKS-cT|rfVg&=o&RVy|yux-dCw2n!g*oj=D_sS%#Sg+!fBm zS|4sYRrZ6+l(ncPL{q3LbnsF^5M|d$n+S}W0!Oe>whT<{xDK+mBj}UFE%t`(uOMs}{v32We}BFJpk*Q?6k)NY_g7E3xb zw3+O6$e?VXs(36dzMI@^u>{1?N{-dy_R#|lXq15|OGxTvYGn(v3@&p<%ccAlR~^fQ z^MZT^rk_l>sxU0MmS4XH{jPDL92mL&!X`=ua|Ni8Vc)bEWS526Bt9`DsrLW;*w5?{y6_fwmN-1aSu zu|YsrbevauRfVK>fO@@3we9#g`_?InVh+a#eHJjO!_L#C5-AWca4xFOM0r%kas0?) zkbsLWW^&Yq>5rr13SODgjwEvN#B9Eh211aQx{KmP@H`$z_I{*Jdmi>q^39h{}pvu2zg4M8>Qu1P-n)6zcO!!p0jG zMM^Y|m~@()m(zCWpIQt+-#8Lj2g3I+%3J?UO$&DB7<^3;JKLwIXk868EmRy`rgH|o zn&-kiBNu0l5w9B#9K#HbtTLOuz{z$E8XHXJpxV_I=As{4{?_8=YCbTF#p?lFKsd6! z!Pr!=o-f#VWMePW_Y+YMccEs*7AnewyUaD9r9~+{k zM3&IG+MJvNl!aVXA`*47(^5BZ+#~b31eNQCbN@wNu#5TC+B)=#tYZV;wvuk)s@4i& z)GF#X5C4_BA`#`5#VbLhP%wGE(K64_#Fs=#?RzxQ$s?04piXvswb&mSI+vBoBM6&c*eUYKdlMLh)unq1#d@^s!t5 zuGZp&JD{t=0mpmcQ5>ilOQp&c_~TR2Q&n!vcHkQC&MwHfD!`!x)?;`{-jvW9KlG(fi9RS)BpSJt%OXZeF4;z@D$R>FQAUP6NlOe1 zxhYX$h2bR~$%?bR>XJ%@K&P_LZ|6%8fqM8kT|^x2h^b(Wu`9u-1Y#**#uSz+$P{KX8%Q{+2||s?`F7*lS$&}#&=fKo^(701`n;mkbHmOl-NOWS zEI?7I0`cOm+=0v>b5XKcq=EpiJ{5+og_6!tsQzLxo7tEzlgmI;-Q0p+8mz-kk`tu$ zpfr!;4w&Y!EOIzQv1Ri#8(?2l!W`LN^g!!Yk{I(u1m=R7&LO^-6S&ov_P@zw;Dabo>OJcEdHwp04 z9Ih%x4PC)>acidp1G!-lwBN!`)W)h7q7_&2t9f2oj7l>hj3mb8qIIl@>O&J19w9+` zP7>f9Q^i|>CRW3kkc3nSH>RXw9756&C$e`TB^Qv<-y|**dl6IPR%-Elih{Z(Gqq8I zP{0M>sBDG@$Jkf8A; z7Xe$*oHgrP)&sct%C=_TpuBV(Y`G*5Lf@7v0-`8Tw}SfQvKDa%)y2cBz6+ogZ6WrC zOK^@MAJMZj-L$R(CR_s3iUz}UqEj}_E|CY9q1eM&v0k`DUc?0Zo`VvE^FK-31t~8V z)!xEgfdI$pJm50$dh0a?E9z|acEJieo4%4M@pg6*hiV~=j?t8YP-tUAYY2mgB8RkoXNv0B6oX07FZTi>0BWf+*(*O`2r!tW0emCN-WOQ&#cS5LuUcfp&I~k zPRY&pqOBWGyXmrQZt=z#`6p0MnG&wG|y{WmPYy$am5;9+1`*R8a1>=5@F zHZytddxOnxSwP76z`sMIvJL=86@sfc0AWD{K$w-jm9Ov!wtPnKN}X}HxS|{UgoQdS zHWZ^GnQZ(#T&9)E7BpYs-ZnSfHZ~pGIW{NsAix6GUhTHWoWrcA@;G)A)P`BE7El=G zQ821T?)r)@!-tgss2ymzcp2h7FYA8xcUyWaNW3*6;%mx&^xNOBGcBSWK3BjGqbvq z%S9%*dNpbXv&sA#WQ#$9`N(@gpctr>?kGz<%PD>Rhi?rTHU|M&fgd*FfTTGXOtnQE zbe|&IS>(%Z)L(fW3W^g z#HLVPkag>Ty#Rb$Wf>+Za4)w$$;>4gx-qACsge2u(X0vZ;zF5bl;{Xyg;`t+t!S#u zHqfz^SYSCWF}|EB0b~&HX25%TrgAM$)!LMKp^lNQ;>Jz^LI=?zY#eGJJgq(tZJ(Z- zYnj4ADa}`}n0pZ?6Y(sfh+pyi;D=NXIMI7x5^MuwO;QUBAsYY{Tsv4EEC6k5oqm9Bp*;Y*9pb30^Uh!xG0qs&k!mD;C0vc5SM!Rk?Mk$>r@*p=&Np z*aJOJysnI$na@&nlG8;SbvGv@-`ygR1P2bq_!1ArB|DP36eD5H=vtS+7E3}t;GIdS zXc?c{29g7rU;QqlajG-8G5nwqdh7DqPFbpN5&FeoD^m(W0R}-woQDn3CGHM{Nh_jh zgKGh7uCRuUl{G`pC9J6_ZvpW9$K*DJ2{A=- z-~g3toAM@Ql!_d`K|tD10}HW9921pk?9!&-N<cABdzeIL3MIqI59t*rx!XTPU1pWu)q>(p|pRaqR=}mmDJ}_ZDz{)H7uCNl|p*| z2o3c03a;Ep(i)SOgEjjOa{PT{Bj!l-wh3RNjivDNqid9_K6(xCO0aW(8LG>%WHu^+ zCW`go>(&a3)6v45nBErVcJ z0vH3pHg-O!#16*fRRgU;(pW5(H9?UUChVnkYUrU~4KHVt#{^*RQQoCuC0xrOSCvoS z2*g8GE<_&IEWir`+34MTbi9r?g+NZ*xD6|J6QYikS4L^NvP)2Pq8!(n@-)iDUR+pH z>_wS&S|M#lB}#o!+I1S`sLGdG#gw8a`wV2b8Nz*h#EnByGVY@ftra4mNZRI4xN8F%`Z> zbTAu-lfk}K0(W}Ma&|9^Y47&zQ4CRt*yW-XX=kEs8onZSCiYDOXTu{hw}qo>&JDpg z<=4B{eUn4-(ZI2X75ZMME|w5$f;~5nWwkP=e*T zbPZ%6F?5bL;!P_;sARSvW#k}kp`fnu=&d#z!wYR@X(I@>%xnN_98BN_)ODz-Ff%r{ zcm#$n#NCXGE~pAVWP)3W=_-H3MUB#wCP+H}Ta#vem7*RD=DP zm-;+zc5K<=2nA&ePA*=&9la$O&vu>=2OwU*3_vlP;@@>6LCaUKy}Q_EQ?{C0wCdbw z@-{z|ayCsgQ4@o{QQguxYpQeSGq-F;bSf6li2QvvHyp37n7vYOrA$1PQ>E8{w$Q8BiNSlq(xXB?s%FUR)Nl2p&C*NSVBVcPcTi zwSck7ai16&%RFDRilRhSPn0OFXo(cISgA^dcdMdi4j2W7*|Z5gc0h{|8`eHqF1qSY zZK= zBSR7LA|ts_Wl#p)3JO?x3A`WJq;Xh+vM*$bRm8m}8x<*2f~bV5B9Oxofr|_z0a2Tg z3qM3n4){5k0Yrgo^Xvrj+%M*!aTgJ8)kg zYQw7z9J?)9Q#tniJTcfKMg)>5?Zirg0$-8ORDe%wb|WU{3#@(3r#=%VpyY&cT1NQB z5i~f%Z~H+gk1TF83JoJ`z6dQ3Pjyq{8tFTfbjXUjtAmtmmPz3QSx7kN6~=xsN|CANny19Z}P=b}f z3rbQJse26y9hzfqS6BThtYIVirV7!q;BMf1@3Kl zC$D90&f!;;DI!CMuRcWx^TMNqFef@Y&@94d-8q^8DMAmCCPM#W5v2acpidW zBJ45t%ARII_Su&N%Lab$knSns1X9Mdo@;Nci@Jr6)GJ09ROb?iY zRfz2uz4gY%nq8k)|Mh_apW~9+loNM3wR}@+Py@Mr4ffH9k4EkHFBO}W&Ueltrh{pg zRm3zw?>t#WL0|myWMp=&Y!r?g$V|m}P6BlQ1j%inw7x zA73Ub!?9rB9FFB}xtDF&GbjS)8J+o7uf^J_*H6A66NxM&59k>O4RnzqI=5)005bLd zuS+ZORK3tG8%8B&C{8H#qD0ilbweuECN76{V9C|I=`DRX$lhvHlTf+tKs$V~(h=n|+Ebs|KI5 zU)Tf@zq&0iwu3Vilnh~zfblS(wH|Tsv|g+)>k&$Wd|+P@(Vz?}gs5=N#ei=$aspJe z2J5JH?pH<9N?G0tmF*WE5YnAVA*2(1l`1%}q>$RL2V(Kb?L04*lB?j>Z?L&#dv27E z`}%ct;e~^;v<){LFSN_^wMayIXd7@N_eEJ}VwQ!9P{J&YuCpbG5(cJyJsPONrR~V( z7JVUZacc(j4UIsj*}}n!a=!4r!R&Rli0H+Y>vK?RT^5X27cINhw(p(TM*60SO`wjA zVbh-vDmGD+jeuc!9%I0ldA&t$q|EdsIY!z+CJ-Y}X<5 zr2HC=gR}$d$-)e?HYYj`hQN>IQ=NzD9Lu4mObRztc_kveQDRqfEO3gRxIienFm<=a z*n4mgSc8lSeCkvS11}@iIeG`gNEIL-nbv4i6$VO#jZnhko`KdW>w{;hz!eUQoSA7) zcWq|fX@t#(bCVXM=sD85tewO;oJaxDC-k*KQ!Zs)EOc$#40_&xR-1xWpf{oI5v0x5 zIorgVy(n&zBzo&#vN<^%HOlLZ^mMzJX2?yMi@{oj9&$eAyQrAB%vS<5C6y#?=qjy% z>#+t8wemQbHcNPdHbVk&2N_^E@HfF`btfX6grLDnMBoVbeu5J3e~7GUl+RNZ)y4FE zi0}(b?agj8m*O|$0msn1g%9)6j!kZ4a0nhHMFiU-91Ldg5|^|p>Eo)rZYQtE@{3>P z>;*-z>X{;9dH;oRK7mX|sX@S(mO&I7L?b2ZtGAXA)mfly8?PM{EBwN}>hHsd_LE$% zAa3!ZA6`Cp-;>H5dM3hRh(nvutAtKIP+`CZ3X_gBB0d+fc>M-xEX|EP{CqrHbo(x* z>78+Y9Jol%SgLxpYB2)DJt7f6@=fXa&G}3LcddYPxUDFcfMA@EYm}`xnF_B6EaFIC z5iWj$svK!!u0mXa5u&-QON~9O1ypky7I3UOYdC7NPZ3+im4#?@u*%qX1w|b-%7?Sq zQbp9>tyfh6p>J3qU&R4FtljY}Knx*ka|`*hc!D9VBpDoPM_;fZpT z%_%m>KCdQrG^*~>>UOnx96~6mx>`+^tRWN=?HdCvhY1$hGp1|;lzja_uL=0(H;MhgfT+kP_ zjwQ1)D`A+Ii$$=1^_<#UHZ^DO;q84~_rbRb)|Ofs>h4+b+z_?`qzAM$a9=#IlVD!x zUSATC$uBdC**=owsRO*P45^Q=$Pu*a;5Lr7s&{KqPZ>* zc@C7z@fMGs@JX0|vAt}3tH9#RO|DBt?ou+R-#$Cq)Z48Xd!`xJ9uTSHW;Z?FwB zXY(b*tN@jGbe|4;5O)Lc4p~5lxB7Y+VLQ3Y!GtB-V#$@n@7FPp+p{*0J&;9}Sz*;h z>eS#xl;(=I5A0C+?gW>%eo3ouSAT~A>(r}at|~{5N?k7Dtk2Db3Z1KmzPHdlJKZ|f}3a#L4Q+pN8oY96N}d{ zO!=mB7=US63_wAI1Lu~2fUAM%DtldCBUAOUDhCoMULI8q&ug`%9=~e*D%_&MEx4a@ z`CGgmEd${MBeNp|L@|8DwB(Y{fXwZ;&SIb0Z=w|jR8?TVh*k^gi8C|0>9kJa>QPOMHmgBA2^JYp5%88V0POJ8G^qRX+G$%^g=HAurzZj^!(t$34$ zoch>ey+w6GCKhGIxL1@J*3({Mbu_~oMQ{^Fkbt{_UB-ruXM`QbGh^Mxv!li1>4J7> zZ=J+?=hfF}aEZ+oV&zpi#Gkz@t5vMO6m%{JSenUN*6FAjBnezGroDoK5>5B0@r#73(0(6X6&&r+p8D7&l{Mkkw|!`l&6-$W&!M z5ef3kh-Ev%qa&MKiPUe;i(^MsC$Aja_OL?F*-vTBNxoz@|MKqPBCNGSzE8F!HXd7nKRRJ?u`42 zTi0|VR%XrOWy%fBnZq5hOpae7idP82D2IgwS(bd}7FhunqkP8$yzE9^q2Wcp_;2F~ zABqrP>#2+sjaZ$AOC}uwrx{#(4e+j>Tl%;{(x^BW)pUd^r%&)V%dfA@!rfLZ0p>-X zi>7%ifPU>L5e=nX1YSvz)CvMXA_m&u+D?o$7tH~8@ttyCowSkaX zJPrO3-F#W8Xr-E!Z1^?*Zkcfpo_BEZ))AbiJNOCUe*CImV4gSI_!Tn7%J?Pm3_e?? zh#=3%B$zKwJRzdUCiegZi=sDtm~w0+<@ILi8wx`lRS z#NUXN>6<~TErWMZ@Edd)>8T&TEU2x`fec{4#T)cx@~JRRXz*T#z*aPC_=m$y>7Dfn z8qq`3T5sT==Jlg4=fF8>E>rkA6X}cd0rXE^LfZm<2bVQ)Pt?o^beuW!IR@uO zcnkOyMfSFC$KQ}rrb;s6HL2s>mqP!9u_U!;k()=~_+A|RB;YxGPT}*gF)il|Vl9uL zt=avVS?M%uuHonX*pz6;oh3BgM2slJZ#@7Nr|?t3{pKc8T&yzCmq#uxprU(rrTG=~ zL)2t3a2_!(RX<{E;}$0?6U3_+X+S zMwBzgixLUUqhI!TGv@jD1!!E6t43UfOx0WE~86=wjtAXw6ZE? z1C~OF4kEd(O*a-WpMS1}>7pq#z#2zJu zu39F<<>AChM(meu$jSowNd1R7@A#5ll<~>7h+bu3in7nl)vUBmFhB!tMXr7IRCKe{ zZ;nPh6~7$>Ac+E^eG`490d5wl9rWsW4X37iqke3H%B70hC`|aFl&YSA`t8>`6LM}P z6>?HC7u-t6SnG(_QyAxc8L(vWakzOSepH@|!M#Cx6qLTZ7LIEC-EP!rj4&<4F(-58 z5=MN5oM8ZCJS{u@V%4ZGm_b`&t~j}%`*{c4VGS_f1pMqv2}66WB@^BGB&cebWnPJX z{H8m2_VZ~-H)0{af;X{!l-nyEWMqFkT*gU}W2_0LNe}f9xs~OZmUrA07Y%@5G~$=U zW<4L_S}g)Xa@jf55cvDJe#`jxD1JSb{4C? zdKKZYGLO3C#S|+_vyL}kMr+bFe$_{y*b2p+V-swJ%M^exiw|p;!#S)WO}SgW!3Dy6 zEq(SwzE9&9Z;5ejwI$Hp2z%WSDet6Dzi0uqT)B2E?6p+=NLSi880H zm}llNGHHoxSPQ6I5F$6uB}oAkSE@}=#xKY`9>uRblP?K9+^@W#F+}%ko#$)e*Zmrw z!D-BzbGRR)oW-XR9!|^hZ(xaBUGj@+j1pgGjJH!iA_;~weC?w~E$?9D`M*`{-n<0t z$GK*0?~Xq>esKz$@|s{>d2l~ygIMKSQP#Z6(wXD3)vECe_*HIdzy>mdD`D(P93n1UZSN&tPY1s&!4$eWc5HdBXvCMI$S8rU}yJ zBpD1PWEoglM335@t6;T;#2X=(AcLCThR<`xWX@yM3VzL=7AcNBsvvO|D`iN(sjf*4 zi*jYhnoM!*I3^`CnI_c}|J%@buAvR*t39ekmlK}A5y;A_B|fpy4oLC2Pj?|@=0>P9 zszybLT8+a~g3E^$muTsBo#Hs^!K_Tb)XL%AO6;9iulcZ@w`qD1i2SZ)tUg7!;|v5sr%q=94uMdnG^iR6 zB_SukdIWC{A(3@jR11}P+-H$3;#>)@&GJ2I-fX=4h+3j*3LzJl(v)afH>QnGj%*Sc zK)Qwf6L(gq`-2>a+{JVg`Z%vJ36{a5a^OMCVG;Xn3{<@ciMj+WvL7_~=8!-xh_<_k zyg@AEpy|Ypb^Jtk2?>X}%2l~c^bch$GSGMo*byLdV=eN<4mp#4hFjYR&xIrhE`k zaCO|KG~Ewk&Rk_z!`$^Cc&URDUa>bZuF{y4!ENqb2+k5xN>=$z$wQTyT9iqvR3}}p zTQ zk~h@&>S4MpJ<;b{00e=ox4{n(t55B<^`Dj%A@!1K%-;~oMz$nO|Ih!;pyUcG z{nNurf9)OPrY1a(%fbku$5B4uHkopI8K#I{;MKS?xAb zlaj6(N(RT-)odowDnU_XM+zE!wJ8~tP87CcFI1geFZd2^AqXmJYKEvH#qtWsyd=Pr zZ4`v)iAGglg+QQY z7bNxm+x8UKc}PFRCmH!1!baLr8a14;N(wlKe~MoU0J0FX`%Be3<-gmBoKQvYOsL>F zt4g(5^BlKKRy?Y4lyEr;vc3hZGo__EHHaSSH*rs0BYwwaBpTmKB}UhF9=Kh`>L?@R z9w5<>1#;Ebk=B(aBaa+PRL2}(cRFmHfwsFxt$~gdD$4j$FwB|rD`QiU?x~4T#ycJ2 z?*IhP?EdU!3{inGq6aUL<4_G5T_|U&r~`)7tK3V?qlk5ro9I%K;gTN^)1-Xv8%~8w z#XYDssfD|mODHF{xs{21Di^Hn>QaMeI*WeWF$#5kv-_+6e}X^$8o;N?Qwu()!D;bH zRG8hDW-)JP@H;i1&4@dvwv$sthX!PJPQf9@U7W(5CZ7^et@=kZA#Uu~_sNa&QX`*) z?m|5`bxuV}d}WiQRvu1K{*sCv^*T*dy;jr;BX5H4OR`hi1L}Q?N|klOW3~IfYH;eM zPuyiOhxu2lypbH&et49uwx@~@9o%8txsB=#0MjB;^Z9CM>K!(2{UR+wjkH?a$Dt;= z$O5<*+#Yj~m~&j;cRl#vyfbW{nIa_H!QE?mV8wQV-&u)UGUrJd69J8e@*&oWbg7S>1V*FHRlgUgplGiB6NrJE^@p z2E^VS&bQQjAK#DlIJ_;Q4VjsfQPz}9zgo{rXhpUd86tGbajrB{sH)<+$O8}K@R4|^ zE+cm#b&w(QQVC_RS*SOvs1i~qB|}xrsm$hTu*}&N?2lB%eCJm)FZ^xxM>w53l6!&H zO11Y(9nGpCm?M#4>yAS)!@m052;#=hcDRX-@s11ETd6FPf#xRH;7$x~<*jrt)8Zp- z#;;5fyIdje(-Ov_Vd1D_32Vx=()$%E63wBw;Ijuo4=Me}pyf*i;+fY0h)MH6^`TY$Jf&72T~l03Q(*C+QLG0(kp1u=C#5l3g?tbYub*6y?? zv-?v{5EA`vg2V8=jl<_S4kVqzX^qbe^m$8hKrd2qr+hiba;=e6Z0(NF*d7 z`m`LWRI7Kqm7&a(ixq7Gs?E^?5}~?bq3$Xc6l4xdnxS4pfb<}PLlGQ0#+J=2j-pOW zXQW+~D(b}`P^U4WXdp@d;ZOW$!Ah zh!?^cIclA|!bxet!S>(fh|$ik-oM^MjbT-3MO&DdEE}^k4IDYiT)*Grek$Tx52bI1 z14=5c0gVJ=E6$xxV@&m{L27UR-H)v6Q8ns`#+=vjAcO0ADiwsw;ewRAMq`gqTPQ`$ zbCkQ0Rm}Yur^je5;?zM|Prb34Y3O}8$IE5ZOk)@$o~l+k4{5kQwX#9?L7c(F*FZ+V z0cD&gbEQ;cYRvU%^QmBVg5rPtkGnFhOwuCCUSQ)HeI$<=2={c_GThJosD zBv&I%r%VuZ^Y2HJs&Ge0Q^rKH=V?Ua?cv;>G>!l5fA5otc!L}-t+=ySa%Un@mNXL+csz3a{9l%R(08mHQ5DNhv55}5!u zVdLI!r@m3?(yP1CBFPpK#R*#{FP7+~;~WM)Gp+5(vIdI>xIi{h2zwinlnNao?a+ z6!yp@ID_LIu1M{Qo6$RmHaY<|FZ|bt{%V234dfJ~Na2XETP@h3dcAo`=(>>^A2IVd z<;J)EL&iJt5Z0aR;mk|!sfe;X+W z{Gp7;jRhw21Syo1$X?g%`Z$fddJaw?Mf<;+Z zNb}yKaR=ct)Q~NCiR6qutfEVX5D;HH88d^<7K-0_<_bhN49WKb*hJR2J6%7*8IhQ^ zw`pe0jEXbGe6EL#g%5Rk$)A>No%NaU1gt^bHLiH#j zQVuoBbM<-if+`vBqr~DtwQ5AXsA@zGrO@aVCPG8szRH{xtO7L>s@8Fs-QkBq?%*~D z)I}^eV4AQ~#apAX$( z54-Pc#1yMhPEFWd-gF1OwDR0*L@cLy9Vv5U#-065f zv+LMl;a)a_vGK1h?-!EqlLujOqiLdOS54#bUJ4Zu1_f?XOWSbEF?W zDsGgj+fUE@O`yLch^u7G3V7tJ$e1dLq4jUGrkOkAvBczSZe;g(*4;3g4j>R4e?VjY^e={$!_^sc?15PL$83R`R0_?U-(3 zL{V_Z=TN_FDiGWSXxY*a+)=H2xWVhmsd{tkB1RjELU&&kqiS>4wro5Z<(^Q2HUrlue`Xl|)_%$e%7V11ojg=?*la=tSv zIO=)E3k1(A)zeMROU1kj&vRC%evujQazWV&Y$_`Sz|6A%K54-7{i*08jq?q=tF$yD zN)|rxb+kFd$TYoR%v~=)Ra52iT{PUA9x>*SGhW_iOW;#RJ*sx$1=#zk;xUK!x2b~i z|)jT!U6GSmb;iM-9OIY$2= z9c_BbyMw)~o`3TUH7BY<*P&ogZGBRNKNSE{5LFZRQYN`i^xm4oJ*mj8J2{G*39eKT z!I6%2XWj8!g=Ck7Z4$kWMfO^Mphi#5EYPha-H#a4!@_>&&_Wm--nwwseB8k)WxIRz zXPr~vFiogK%6yEI|{c9w-Db})Hh8QFam+rwj@=OHG$MISk5g? zcfHo({Up|*P2n@EbM0Dl(p2Xi6xBWB%d>%sczXwt-aq@{Wv~`}eF`e^1h0Z_)Kkc5Fs;f% z3YZvgD0r$igt4;i{49t(M|nO65K-5Tx`yl6S#8sH!oC4c3{$|9wAtX%JOd4d@6 z(n0NMiMjwNC+rD0bmt*F7O+E~1jFKsLMx!QEBGRT zXUtn6%Lni|ZM>$Z;S712uVoI_(@6kmsF@IAJ@@2HbxUG~bJfC0oqgQ8e6>oyWJj$9 z(jFN!ze+$glDH5;Pft9KnUVVV{C3=QE>1K9ev$%3H@k^ zyUi7tlX&fv4tl;a<4$quDXGV`_KbcGrBPp<{=_@=4zv48#!Le3LjZIV9DhR8JOVj_ z*sA1@p=1aPGl1tRN`~-n5NX!PB9FCKajSI_=?qfi=w$-6v-mfNG?mLW%!vgU*YH}`Y&zUfl zK^@joSjQ0?LO*NBBcx{Ul@V0QNo4|=LBmO;9a`Acs0=)eZpTqFgfap?fMIj^5LB+6 z4nkYi+G&GKjMQ+OdL-jkE2o5;?fVIKIb-o6iE;S zz@=g#|4pC*J0&nmv3$du;E$t3sg#H#`iT}DW&rVw07v8wqD+Z}ljq(bPy~*P&4Ee1 zS>)@)Mg>$ZZ5E}3g$qyg6UD>GVXvIX09q1ZSv(0J;bf0Fl#{5klEWn-y$|CvA~PZM zL?iQ8QHx7P(qaq3rXz6K2q&TA(h^4gW8Z|9gwH&ZKIhK`Bw{&R?mBLR36yiDTtqHA z`(hq<{TlL!e%%72sLh2VSrL0&7GgMu6yxlhA(A7Jph;dFf%};=A!%?&>l$)b zlXRG`+=^?(d9yB8l_W$WWe>!XX`>Exjw0(oJ4T7(6oZoAeHjc`)dPEt^<;a@0qvM+ zWXOWC!cTV=qACSJwS>Aeq8@RCaI`BI!R*VzhE>q;CWM|FP_)oP%z5!&J4E)K{__s$ zo3Lu+Sa=89(Z{0gpB93i3DrB@)lmRk$Vmc~DXKU4%0a-%Q%Cw8DLR)C682NTCw=P_ z-sTMy`TB(;^B6(j6W}Wg4eFkrMJ|4c5-sp;#{y3UErQ0iA10;zP zF!A{JwtUB5ePOWmw880(*WB-U$rc3NM;Pr&9_g9$51B(=vfmu(nfIcI={VB!q<5ry zB`SW#J7k*sO-}|z^I=h<-}m|snPlsco&XgvN-v_Us}B#gp9yOtZ`1G98r|<|B_zAw zmpIb1`?FrpV!Io%r5Awh{;Aiq`@t6G^)@Gb-)~BI$+m>occdrf^>92snvLi69!fO# zByGNC_au)e4kUda|EuzSSDZBH{Y%|@0RZl5F@9H9S0{VXa=#~u{3K?3$n+#yFnCoj z#NZ)wccLwsj0Uh>`v(%3?cRXktu2flK$9aq2Nj#Bp~!YQ3Cu>YZ%d5LFxuHj*qO%s z)+CVO`>n)Do8Q_7EcguC+L~JXk{tD{G&#`P7sdf}@{nmsG!ZRsVS)O+Z7h2mID*7X zQ|lp+2}lA9%RY<`qDV9+@nGCwDUv=Hon(W`2K_P{>)^Mt^FyXBLCgSYK4$H^p}IJ? zh!P0o1PAbRjv8-Hcs-d!qNOc~QId()WLq1c?Mbw@^Bz4bmY65*gn`K@5kbhijqBx+|g~^OYg;A zA|e;Dzqo3Q_bY0+CctVR(mnltvNMseai-AU^K2zuB=1ff5L}`z{`)PUZ623ME zf`LZVIfj}&i@vR(_1S%23#lTxlz1rFvv&bCxT^^qq8i(~fSskVuu!IfRUY7U+!Il* zC?C3Vte4$wplWR@M4lwmNXqIb{nsasqH$jf=;dXO#F?N+(g*<6KQcx#GFhG8 zHzrO=wrx|>2oSk;fJ>)<424nHNiRbXWTJ)a!|zQT#yl~a%mO5v>}vrmnr!DXpc+Zu zG?Q?;kR@fz5(eb^?N~V9Z|m8832T_>xghglc?)0!HFrw6TLuh|%(g^JPd_0IV{Fib zkul)u#7Q8iCD}s!0y#2Y>@5KVqubR&nqvw{_x4^$yvgrA)w8J6@_lmV7!qxYuwxJa zCK;@u$hM1!!Fm(N915k5t%->sb~J(2(PhGZ_>j^JJHeT>WE?WwC@c_+VdHSByB`70 zvHQC~`AFCY#D~}O2+5%^+$1>`HWX`F{6+4$jsW5bbN}NVIn)Q6hgJV806+ zD~YYloJe%__3VBO|1pR} zUh3KXI1%gj0TA#oc7+1)i0<8=P8g51Fajp>aZJQ83Ci93I5JQPyx?fpK@Y)^V7B;neUH2y1(GKHr zELM>*87I+npY1-|GlT6f3)?EsUJ6Yt6h!eNRtKzuu_Rf&Mo60=m5v06v6VD~##oNN zmNz6idv-rV0C#`Y>siKPeio0O<@yZJn60FX|5@x(ED=Cm=ZpgsqMbp zPN+5iAVE4Un??nf~FJqQsB1~3bNy@{ua4kji0Wa5bI>OQQ2-QijfO9IgZn1QyY zBthBxEQqwPrK>;D4LG_tdiD;ZQXk~qCa{IcD{nwQeJwH=kty2^M4RjfKlw-(L>Cw! zBi)HMr4bpP(ZiGwm?Zazbi&kh;teh6IN7~7Lyp5g^2C==_JN+=54T7h3G5JrA4J5( z{{Z|{`v!YwyOW772dXyc?cV)4&SdxJe2rlr^=MXxQgVK6V|m`yf^=%J(jG zg0lBO(_8?XT6QUNlBe%Wbby*csv^)xy382k>|mm; zm-r)$%y{Vlsp1d1Z*|`S7sL*Dz~k0eTyu@7F!X8`+o0{sTte`C@E=GzP|^+07j@04E8m!F(24%!H3UQeA@Bpz^4=AvI3DyEOM>- z+Ob2hF@aiccSI$ZOvL6=cYz|(4>rPR^8UoVz<>@2JoWOw;JTOi7xZ&q^a4j*DXam> zAW7O{)q|u!s?k7=DB9grO0g=^qXa7czSM;Y@3r*owROJ>Bz2D3^&X53f(4e(txfvS zCkAU4&esmgz?70upCpa>U_v(9($b0IP87E#TA>%W_+2n=njp-R$>GH7T0tFuX;&DQ z1roF`gfu}`m;&m7l%zxoMJ_8SCIN3=>c8ad@PK@1gX!4bhF;ZpXhYV4_Krl`0nLJyDT4_rCDx8!+xrt809@w_ z7YkV-xl{MlT!J#j&?3SVV&EKAQG_m@yxPo}r$oX9b-H0%l>wn`@DNZqFsJ_Kk=DNcE1QK#Pqy~b@IAL?oV_B z@{d7cd|FHq5G1tyy>5Jtz|IzhtE0aOL;ZC3i=Evsb|+wMpiXiq@j3`>b_j@}T-rYu z*Uav{V+sjOEAS>*GkeGS69;9)eTQp@tdW7c2M+c_P=CQf-Lw10z5NLwZ13%uGRN#5 zz#clLK*}Bza|=*^p%cO@oVkA@aaW^Bh7&vrdyI&$>5>q8z*(=FYtRcgaYazr7Sy4d zDxf);I7E`I>qs&LOjt@}XpW>?uvgmYdP*icuu;4B`tToHU1TCSkVqk5_IN`56niH@ zA}7Jho`*UraX@{NHj!jNGO)b+#ba0{;P6Y3r|ms^8`!U(ChG(ZYSrCOw_+L91qhny zPP8J#4*U?7_S38k_lYL%OLRkzM^{}imNTR;{K;OiGWTng=5(A<-S6vtAXZ;oFw}0~ ziD@B+4%@;y(L7Kuge)9nTw{vjHf&5(!xQYT4KRxr>vzQ&BRV9#GNQk#68&CV0<9J9 zSrDqNWUD~ZQ+w805H*JkF#uKc5ZtNQIkpUW(1;J2u0-=8s_3i_7oJ7d%hZnhS`HwT zGSGb+EiZ9t94Ce^AmIw>$8y!^yy)btWr1MTCA&vJK&T7S!U81wU_NlVEy?cPPvO6< z2R6u5E9TSH+tmXXs+cYi+G56#ZJ{S%M@g@H85Zj@)N&ls*Wk!YE>L(j_M)dCn!z z5#TG1odJn?XfN!^Vtr&-d4gcqB#X-h`R8&N&)L& zp|FU^=R?e8>E1RIQ%o`r8S1eRG(Z~un!#nhM3}yOfW8V_oyZ9j_axjTV5IJTC4^jg z<5$ogtrcj_^a$ATUNfhcgx&9+p$W6stg||9#5)0)z!G#^{~p?O(oEnGj}Dy&fCif! z(#USqb3MST?9y}ed;lo1ExyWq-z|Nxm16if{P5cSanLx7mS?bMxr^bzkOV}l^rg8R ziDn2`03;PvRH;nG1J(A@^nkN<&tW=GdiGLW4v$kxp-3GnX`83jdw{;GhCWCbLu2N& zNdX7^aZvrEG$@wbMyB@S19UCzox*<*{N4&O$wldY+It3O1$F;t;Cc|&nk13$of1iX z3KbB8#FxK&z?`HPDB|39`j>eRy`TTX{73xtuLYKJ<@M(D+6Ajf7Lg0SCn zHJFK1cj5r^T-S)7Ox%YuL@?d~M47tw0Ao&rlncpjKEf*(Zr#tP6}fn@WY8y;J1BkZB%KK2cWmf7zYl(Q6rE@8#dDa zY;$+w5NaL3KjitS$p;RJWWsJtHpgViA-Q%^MY5pbGfn?8p4iTOK$Y+6Vlh7YpFM&} zV?#H?UZU@{tLp^GjODBba8X4?2D9)tm^g`Ct)d|ltS2AfQ&7gLY=KX=0Hbv^mn6Uj zoK%|+A02d1NF!#!Kw@`VyJz=v?1wcqL*YTjNaFQ2$JGw2vYW7hqYUQxkHB`0`o<)~ zHnw|~N=;Oz+h1qw`)^7-1S88Qnk{57no%fqrIw;7%3!8c@!{rZZ`UP)zNeTaFpnlq zXiCr*D**6eD%LGj7C>+hG$54f6j4(qi{9F0{|d@sxZCMS@?olj*w^-B`_>T?{B>%#%d z39sKf>AlW-i#O#>d$V5JJMXP{%ifYV=RMy1$}6wDySa}8BKAsijW=RWLz9L>ps@}LqCI%yZ_2IQeHnq6cZ>cJvanU|YeaSG|f)1oy| zq5Bj*1Ne-f@)n-A@HxwJ9?h`P&olTmgU>LV2PR1Db)a4jpKJJRu=JbJ!3;hV_$-ph z2nuvwI96NPV)w%?lW_Fx^)v5t0yBNsX!SI@s^IfY)VOxr(S`LOqwEoBEY4}9F0kzv z8T=8uI*hDm2^@W&%>7OV-^<{m41VB%ltKT2@y?FaaSTLa7JcpbbaKc~G59$&*y|)% zz?#f^FXvJ(%NmGM#>GIyk9vmcrj5?AhdBoG3{Ek45?$}zV(={tIK#aUF!&&YT?Q2f z-^|Ky;neN%95ZJaJk3BRNq;%3ZP8Q%UBDFytp^eYM=WBWv&>gb2#_aLkXd~lv+PhwG5TnK<41{{xWoQhOsM{I&IP^aC%#30}3dA1{>GMo+yIr6Ag z2nLG<+Uhwh2_-aO9$Bptwzm#=unAgF3kRsZ$pPGLYQfPJ$gB$|2L=bI{idbG;LP-8 zECDA1w}%}0;j|O(dJx%Nm_mr)?rXSuB<-Fu-|ytEP|Cm_X_GzjEMlFIf?#Y|mG1=0i&7s2+v7IHVuCKdfJOdeoV{XIkie)U zoZe1O{|k(<6hr=(_Ra>lisBC7d-+aYfPnZl1~~;KQS$f*0Rd5Cf*8;QNCHx$c<;R< zdFFlj-i4TIOCmDXQnU_5v5FKKziO#E)T*Oa!Ky`N7zY@tMH$CWv`SNS9E+6x{(JB8 z5_POII?g!bWq!ANcf0@n-|l~R?{+WyIQzCwhnH~r6qh7C&aS+^@Pykhu~D%v<-Via zNjX=M5?{B7Rmq1}^kF6X3oIHa*TXzqNkJi(O7to1)1kCaUnN;xBq%27V7czZ1?L%H z&duwqI={#&b}iSp9LAHyVYqgeuHg*F6v)C}*TZZNaYPnvi`4HN@k{G8tOb1- zL)VE&>S^o4)z*|d++;jsKE z^tf6eQQxbUNFzyW{ka!G5|9|;N{tX#GE`j2QN%MEk0%p3lbWP0(;l9#(*Ey~=7T44 zDGMKt2$F)LCKeR3EAn~8ijw*ZNeP4`DQX_+WTwNji;US6dFL1c_KYg8&sW^%^K9~7 zgn1n*`9!NH;>jpCXNIPanVRQ>fC7>Ygq0%-RKoL;lk2I7<>)$9Nb5^|EleN!xTQkr z=zT@pFzw}K+R-frRiH$o6*2QQf*?i_-Kl;)kmhF`CtoWi*VhZCM#D_7l!9?0zEij z5Q77m5u#(15ic3(rSszZh3+S~S-KSwwZ*M}GG>Qt8Om~%o6L6Sy{z&sM;$dZRkXd(m{MJ)^{#T zKK|-EDoiJVh_p{SU|zdQ^Vy4xVmZ$Uq23`-=G8>*a9t9(S$R5SX#uI6sD=$ME#dDT%qCE<95?|udA6ED7DO6FG6nz){06mM?>Pf1{mn?@a} zH0<|@0O`^9OSg|^dLSUXOcnUb#;Jg68`z3kWqui_M7lSgDMU29{GWWaSGDd`R z*yVB(50Cfkc!0(?o>POf3)El^_>Pw|S93-J7IC&f!d;Zhj%O#?zb7Hi)ZSjXRxHPk z9QTC8du5^MgSj#fP=+1L&L|Sa)2|^0rY+lvyzZ-}tYa1?tweo1HuK7$op8eOSW{av z-kIXvU**g2fEsS7Av3QGJLW7aYNyOu(ZKmi@$H?jITm)hDr)UO2fqV1(NGm-!E*Bp zA;+3+j+2-+Zd_+)r{6|Os|fK2r!_N_P28 zEt&sT9E8S`{1g0>{S){vt)mPz*o{@G6{xIL$~4po%_-ZQWjl3=>QE?Yr&6dIj-?#i z3L)YYLzxm_u9YNx$4=IUgL1E=(=XHvL!BX^oHpC6Yf4&6mV|@z?O;3^vXiD0H-lEf z=}6k96^WRRd%0iiYD1m*f6_4HOUz8lX9l_)d#o7`Ty6)Qv(U1_P-P;)G8>(EqSJDM zZDv_KY1&tGgqKdZ!xvZ!e)U0-NHEPBI*8E$bi5yY=~Y#I{m4*OC@D$PKkw zF>`K5s;!KFV;OCzks_=*NLtA+g^DL65GLVn4ThRs(`Ey6ONQmByJ(q(Wx(?kOCGOa^5mY&uX=~7)?a%C>d!<>HEzl z5l7Z`*gBm^r`46BXgh35qx(9P>ZvyC3A@xb8{@%tjC7y`i4~KCW3A+9!b&<)#9GPP z3obAN9S%1eA$n30kD*D*CY0q+$e~ch7gVs^^piGL7E77jLP{&rW2mdsTFkY&^j*%3 z1(RL6x_&<@Tw|!8rB$f49IKUTWPZ;&6dEe0j$=+`WWEn)mYYIMqPE{b>Hp?y7y3p{CZwXaQry@4|Ss@DO#TD;iIdT8+qUv}2*_V0)?|7U>$$nw(>(>29Nw zN=SBnv3g7F)L65#Elk_hW~IzTGA>yubvo8c7NoZ`jAMAtx^S+HJ=1%rm%6jnOMz_f zGCdP5J&b|Mo@`Ya%v_T|GWgtoo8MU5IMJMGhhJ@)b^o8reIv4dy<23|OlzsNm$oEy zH&c-cwO54VPRw>%+!CmbJM=s)G{G(Xdb1V+R92;fc)g525elfr^Q$LT@h{eHN>e^a zrzCgNe$%3c%7c&%OqYz3q1Ko8Hkt_lADq_&>s$c(OJUxzGy7R5V4mW83~v zB$AGDDVu(Eq^>C5F=^##9deaXr4{pIfIN8NVvyx9d^H%!WT?ZBGj zH*cR-bHe!3i=zKtJbX&S8&%Qhysb0eTJiAGz@$6Pdtei6hKJ!P z*aFYO^RN^4!JF_l?1ux;3x~ikxF6sdPz`~j;dnR!c(RdJSWSVcz~h^m1M}cwxCAU{ zg*bG;Rj>?Jz$&;2ZiS6-7d!wD!6WcEY=LdC9d^J@*az>z2XGKRg~K2-U_KZDqo4vR zVJb|AYM2A_U?D7m#b84i+MyGAU^!d|t6(*(femmM+z*@KNq81^z#e!F-h_AI0DJ&)%HedVf+;W^X22|HhDC5OEQTmt0V(K&m2e~60vq5y*aVy5F?b$cgqL9t z?1Q(V7e0YQa2WD)$S;uDN|}z7Nz7AV3{=3`Py;ie4jP~tE`cC~VHxzmN>~l+U?bcI z55beL1)hiPumg6(8}I=f2If^696=ZG!B99Fj)fCo43xt-mQmWgi&xhjDs0a4YQyQE`&yC zhKs?5E?5T3VFj#%4X_b5!DH|^JPX@lC%gjtpcg)cLvR=h^RXKk31eUi%!E160P~<3 z7J>y)NI@5@1V)wAI#>@6!{hJ_Y=iBv17!2sv+uMWo;KO^INJ1gz0w51ko0cm5T?n#;EGkKnW9LKCpH1sm+&?*5RH)cJP_m2?kmy&Omv9UPsEdA= zt={K8z3u(%Nq85~cPwTD31mtTjM?Ho$Mlb=BM7~$%1Wnm}TWa&^@wZf#AcF(4?Uw$=S%HljVg!tb5 zh;&(^R#p?qtYj^6`s-V%WQj0$9gs?$!wlyrh9~>vEI^JdLFFz9Ch;es?*y2vU4~`Y z&ck92T^f!K@BSuuM*FWz)6Z%fvPy_--N-ap3B+BNEuwQfK|aV`w35#bVam8GS#9L& z^FtP>mGF*U(Qq73JDvK^k8C#|<;Q*{Z)JHcS)@yzYwGoVG^Ep$Ww>OW6faNZ$SsX; zdOu6F&A4lpgeYtIsiaJ<3@nRpV>^>|nGH + + + Photon3Unity3D + + + +

+ Initializes a new instance of the class. + + + + + Gets the public key that can be used by another DiffieHellmanCryptoProvider object + to generate a shared secret agreement. + + + + + Derives the shared key is generated from the secret agreement between two parties, + given a byte array that contains the second party's public key. + + + The second party's public key. + + + + Interface for Photon's DiffieHellman/Payload Encryption. + + + + Provides classical Diffie-Hellman Modular Exponentiation Groups defined by the + OAKLEY Key Determination Protocol (RFC 2412). + + + + + Gets the genrator (N) used by the the well known groups 1,2 and 5. + + + + + Gets the 768 bit prime for the well known group 1. + + + + + Gets the 1024 bit prime for the well known group 2. + + + + + Gets the 1536 bit prime for the well known group 5. + + + + A slice of memory that should be pooled and reused. Wraps a byte-array. + + This is a serializable datatype for the .Net clients. It will serialize and transfer as byte[]. + If PhotonPeer.UseByteArraySlicePoolForEvents is enabled, byte-arrays in (incoming) events will be deserialized as + ByteArraySlice. + + Adjust your OnEvent code accordingly. + + + + The buffer for the slice. + + + The position where the content starts in Buffer. + + + The length of the data in the Buffer. + + + + Internal constructor - these instances will be part of the pooling system. + + The pool to return to. + The index to return to (in the related returnPool). + + + + Create a new ByteArraySlice. The buffer supplied will be used. Usage is similar to ArraySegment. + + Not part of pooling. + + + + Creates a ByteArraySlice, which is not pooled. It has no Buffer. + + Not part of pooling. + + + + If this item was fetched from a ByteArraySlicePool, this will return it. + + + True if this was a pooled item and it successfully was returned. + If it does not belong to a pool nothing will happen, and false will be returned. + + + + Resets Count and Offset to 0 each. + + + Tiered pool for ByteArraySlices. Reduces the allocations once enough slices are available. + + + + Requests for buffers smaller than 2^minStackIndex will use 2^minStackIndex. This value avoids allocations of smaller rarely used buffers. + Set this to a lower value if you will never need sizes larger than byte[2^minStackIndex] + + + + Count of allocations this pool did. + + + Creates a new pool. + + + + Get a ByteArraySlice from pool. This overload handles user supplied byte[] and byte count and can be used as a non-boxing alternative to ArraySegment<byte>. + + + This effectively pools the ByteArraySlice instances but not their data. + ByteArraySlice.Release() will return the slice itself to the pool but delete the reference to the buffer supplied here. + + + + + Get byte[] wrapper from pool. This overload accepts a bytecount and will return a wrapper with a byte[] that size or greater. + + + + Pops a slice from the stack or creates a new slice for that stack. + The stack to use. Lock that stack before calling PopOrCreate for thread safety. + + A slice. + + + + Releasing a ByteArraySlice, will put it back into the pool, if it was acquired from one. + + The ByteArraySlice to return to the pool. + The stackIndex for this slice. + True if this slice was returned to some pool. False if not (null or stackIndex < 0. + + + + Clears all pool items with byte array sizes between lower and upper inclusively. + + + Use this if you sent some unusually large RaiseEvents and believe the buffers of that size + will not be needed again, and you would like to free up the buffer memory. + + + + + Replacement for Dictionary<K,V> which does not allocate memory during usage. + + Key type. + Value type. + + + + This is a substitute for the Hashtable class, missing in: Win8RT and Windows Phone. It uses a Dictionary<object,object> as base. + + + Please be aware that this class might act differently than the Hashtable equivalent. + As far as Photon is concerned, the substitution is sufficiently precise. + + + + + Translates the byte key into the pre-boxed byte before doing the lookup. + + + + + + + Creates a shallow copy of the Hashtable. + + + A shallow copy of a collection copies only the elements of the collection, whether they are + reference types or value types, but it does not copy the objects that the references refer + to. The references in the new collection point to the same objects that the references in + the original collection point to. + + Shallow copy of the Hashtable. + + + + Used as container for unknown types the client could not deserialize. + + + + + The type code which was read for this type. + + + + + The size/length value that was read for this type. + + May be larger than Data.Length, if the Size exceeded the remaining message content. + + + + Container for the data that arrived. + + If the Size exceeded the remaining message length, only the remaining data is read. This may be null, if the size was somehow less than 1. + + + Interface for DatagramEncryptor implementations. + + + Initialize the encryptor. + + + + Encryption/decryption algorithm implementation + + + + + Packet authentication algorithm impelmenation + + + + Number for reliable unsequenced commands (separate from "standard" reliable sequenced). Used to avoid duplicates. + + + The highest number of reliable unsequenced commands that arrived (and all commands before). + + + Any reliable unsequenced number that's been received, which is higher than the current highest in complete sequence (reliableUnsequencedNumbersCompletelyReceived). + + + To store the highest acknowledged sequence number (and get some impression what the server already received and stored). + + + Checks and queues incoming reliable unsequenced commands ("send" or "fragment"), if they haven't been received yet. + The command to check and queue. + True if the command is new and got queued (or could be executed/dispatched). + + + Quick Resends are suspended if the sent queue is this size or larger. + + + One list for all channels keeps sent commands (for re-sending). + + + One pool of ACK byte arrays ( 20 bytes each) for all channels to keep acknowledgements. + + + Gets enabled by "request" from server (not by client). + + + Initial PeerId as used in Connect command. If EnableServerTracing is false. + + + Initial PeerId to enable Photon Tracing, as used in Connect command. See: EnableServerTracing. + + + + Checks the incoming queue and Dispatches received data if possible. + + If a Dispatch happened or not, which shows if more Dispatches might be needed. + + + Gets the target size for fragments. + + Caches the result for a specific MTU value. + Fragment length is different, when datagram encryption is used (so this caches two values in fact). + + + + + + gathers acks until udp-packet is full and sends it! + + + + Queue of received commands. ReceiveIncomingCommands will queue commands, except ACKs which Execute immediately. + + + + gathers commands from all (out)queues until udp-packet is full and sends it! + + + + + Checks connected state and channel before operation is serialized and enqueued for sending. + + if operation could be enqueued + + + reliable-udp-level function to send some byte[] to the server via un/reliable command + only called when a custom operation should be send + the invocation ID for this operation (the payload) + + + reads incoming udp-packages to create and queue incoming commands* + + + Queues incoming commands in the correct order as either unreliable, reliable or unsequenced. + If queued or not. + + + removes commands which are acknowledged + + + + Enumeration of situations that change the peers internal status. + Used in calls to OnStatusChanged to inform your application of various situations that might happen. + + + Most of these codes are referenced somewhere else in the documentation when they are relevant to methods. + + + + the PhotonPeer is connected.
See {@link PhotonListener#OnStatusChanged}*
+
+ + the PhotonPeer just disconnected.
See {@link PhotonListener#OnStatusChanged}*
+
+ + the PhotonPeer encountered an exception and will disconnect, too.
See {@link PhotonListener#OnStatusChanged}*
+
+ + Exception while opening the incoming connection to the server. Followed by Disconnect. + The server could be down / not running or the client has no network or a misconfigured DNS.
See {@link PhotonListener#OnStatusChanged}*
+
+ + Used on platforms that throw a security exception on connect. Unity3d does this, e.g., if a webplayer build could not fetch a policy-file from a remote server. + + + Sending command failed. Either not connected, or the requested channel is bigger than the number of initialized channels. + + + Exception, if a server cannot be connected. Followed by Disconnect. + Most likely, the server is not responding. Ask user to try again later. + + + Disconnection due to a timeout (client did no longer receive ACKs from server). Followed by Disconnect. + + + Timeout disconnect by server. The server didn't receive necessary ACKs in time. Followed by Disconnect. + + + Disconnect by server due to concurrent user limit reached (received a disconnect command). + + + (1043) Disconnect by server due to server's logic. Followed by Disconnect. + + + Disconnect by server due to unspecified reason. Followed by Disconnect. + + + (1048) Value for OnStatusChanged()-call, when the encryption-setup for secure communication finished successfully. + + + (1049) Value for OnStatusChanged()-call, when the encryption-setup failed for some reason. Check debug logs. + + + + Callback interface for the Photon client side. Must be provided to a new PhotonPeer in its constructor. + + + These methods are used by your PhotonPeer instance to keep your app updated. Read each method's + description and check out the samples to see how to use them. + + + + + Provides textual descriptions for various error conditions and noteworthy situations. + In cases where the application needs to react, a call to OnStatusChanged is used. + OnStatusChanged gives "feedback" to the game, DebugReturn provies human readable messages + on the background. + + + All debug output of the library will be reported through this method. Print it or put it in a + buffer to use it on-screen. Use PhotonPeer.DebugOut to select how verbose the output is. + + DebugLevel (severity) of the message. + Debug text. Print to System.Console or screen. + + + + Callback method which gives you (async) responses for called operations. + + + Similar to method-calling, operations can have a result. + Because operation-calls are non-blocking and executed on the server, responses are provided + after a roundtrip as call to this method. + + Example: Trying to create a room usually succeeds but can fail if the room's name is already + in use (room names are their IDs). + + This method is used as general callback for all operations. Each response corresponds to a certain + "type" of operation by its OperationCode. + + + + When you join a room, the server will assign a consecutive number to each client: the + "actorNr" or "player number". This is sent back in the operation result. + + Fetch your actorNr of a Join response like this: + int actorNr = (int)operationResponse[(byte)OperationCode.ActorNr]; + + The response to an operation\-call. + + + + OnStatusChanged is called to let the game know when asynchronous actions finished or when errors happen. + + + Not all of the many StatusCode values will apply to your game. Example: If you don't use encryption, + the respective status changes are never made. + + The values are all part of the StatusCode enumeration and described value-by-value. + + A code to identify the situation. + + + + Called whenever an event from the Photon Server is dispatched. + + + Events are used for communication between clients and allow the server to update clients anytime. + The creation of an event is often triggered by an operation (called by this client or an other). + + Each event carries a Code plus optional content in its Parameters. + Your application should identify which content to expect by the event's Code. + + Events can be defined and modified server-side. + + If you use the LoadBalancing api as basis, several events like EvJoin and EvLeave are pre-defined. + The LoadBalancing api provides the EventCode and ParameterCode classes for pre-defined events. + + Photon also allows you to come up with custom events on the fly, purely client-side. + To do so, use OpRaiseEvent. + + Events are incoming messages and as such buffered in the peer. + Calling PhotonPeer.DispatchIncomingCommands will call IPhotonPeerListener.OnEvent, to hand over received events. + + PhotonPeer.ReuseEventInstance is an option to optimize memory usage by reusing one EventData instance. + + The event currently being dispatched. + + + The protocol for this socket, defined in constructor. + + + Address, as defined via a Connect() call. Including protocol, port and or path. + This is set in the constructor and in Connect() again. Typically the address does not change after the IPhotonSocket is instantiated. + + + Contains only the server's hostname (stripped protocol, port and or path). Set in IPhotonSocket.Connect(). + + + Contains the IP address of the previously resolved ServerAddress (or empty, if GetIpAddress wasn't used). + + + Contains only the server's port address (as string). Set in IphotonSocket.Connect(). + + + Where available, this exposes if the server's address was resolved into an IPv6 address or not. + + + + Provides the protocol string, of the current PhotonPeer.SerializationProtocolType to be used for WebSocket connections. + + + Any WebSocket wrapper could access this to get the desired binary protocol for the connection. + Some WebSocket implementations use a static value of the same name and need to be updated. + + The value is not cached and each call will create the needed string on the fly. + + + + + Separates the given address into address (host name or IP) and port. Port must be included after colon! + + + This method expects any address to include a port. The final ':' in addressAndPort has to separate it. + IPv6 addresses have multiple colons and must use brackets to separate address from port. + + Examples: + ns.exitgames.com:5058 + http://[2001:db8:1f70::999:de8:7648:6e8]:100/ + [2001:db8:1f70::999:de8:7648:6e8]:100 + See: + http://serverfault.com/questions/205793/how-can-one-distinguish-the-host-and-the-port-in-an-ipv6-url + + + + Wraps a DNS call to provide an array of addresses, sorted to have the IPv6 ones first. + + This skips a DNS lookup, if the hostname is an IPv4 address. Then only this address is used as is. + The DNS lookup may take a while, so it is recommended to do this in a thread. Also, it may fail entirely. + + + IPAddress array for hostname, sorted to put any IPv6 addresses first.
+ If the DNS lookup fails, HandleException(StatusCode.ExceptionOnConnect) gets called and null returned. + Then the socket should not attempt to connect. +
+
+ + + Returns null or the IPAddress representing the address, doing Dns resolution if needed. + + Only returns IPv4 or IPv6 adresses, no others. + The string address of a server (hostname or IP). + IPAddress for the string address or null, if the address is neither IPv4, IPv6 or some hostname that could be resolved. + + + Variants of the Photon specific serialization protocol used for operations, responses, events and data. + + + Version 1.6 (outdated). + + + Version 1.8. + + + + + + + Serialize creates a byte-array from the given object and returns it. + + The object to serialize + The serialized byte-array + + + + Deserialize returns an object reassembled from the given StreamBuffer. + + The buffer to be Deserialized + The Deserialized object + + + + Deserialize returns an object reassembled from the given byte-array. + + The byte-array to be Deserialized + The Deserialized object + + + + Interface for (UDP) traffic capturing. + + + + Indicates if the PhotonPeer should call Record or not. + + + Implement to record network traffic. Called by PhotonPeer for each UDP message sent and received. + + The buffer will not contain Ethernet Header, IP, UDP level data. Only the payload received by the client. + + It is advised to not use NetworkSimulation when recording traffic. + The recording is done on the timing of actual receive- and send-calls and internal simulation would offset the timing. + + Buffer to be sent or received. Check length value for actual content length. + Length of the network data. + Indicates incoming (true) or outgoing (false) traffic. + The local peerId for the connection. Defaults to 0xFFFF until assigned by the Server. + The currently used IPhotonSocket of this Peer. Enables you to track the connection endpoint. + + + Internal class for "commands" - the package in which operations are sent. + + + Size of the Payload, which may be null. + + + Checks commandFlags & FV_UNRELIABLE_UNSEQUENCED. + + + Checks commandFlags & FV_RELIABLE. + + + + ACKs should never be created as NCommand. use CreateACK to wrtie the serialized ACK right away... + + + + + + + + + this variant does only create outgoing commands and increments . incoming ones are created from a DataInputStream + + + this variant does only create outgoing commands and increments . incoming ones are created from a DataInputStream + + + reads the command values (commandHeader and command-values) from incoming bytestream and populates the incoming command* + + + + A simulation item is an action that can be queued to simulate network lag. + + + + With this, the actual delay can be measured, compared to the intended lag. + + + Timestamp after which this item must be executed. + + + Action to execute when the lag-time passed. + + + Starts a new Stopwatch + + + + A set of network simulation settings, enabled (and disabled) by PhotonPeer.IsSimulationEnabled. + + + For performance reasons, the lag and jitter settings can't be produced exactly. + In some cases, the resulting lag will be up to 20ms bigger than the lag settings. + Even if all settings are 0, simulation will be used. Set PhotonPeer.IsSimulationEnabled + to false to disable it if no longer needed. + + All lag, jitter and loss is additional to the current, real network conditions. + If the network is slow in reality, this will add even more lag. + The jitter values will affect the lag positive and negative, so the lag settings + describe the medium lag even with jitter. The jitter influence is: [-jitter..+jitter]. + Packets "lost" due to OutgoingLossPercentage count for BytesOut and LostPackagesOut. + Packets "lost" due to IncomingLossPercentage count for BytesIn and LostPackagesIn. + + + + internal + + + internal + + + internal + + + internal + + + internal + + + internal + + + internal + + + This setting overrides all other settings and turns simulation on/off. Default: false. + + + Outgoing packages delay in ms. Default: 100. + + + Randomizes OutgoingLag by [-OutgoingJitter..+OutgoingJitter]. Default: 0. + + + Percentage of outgoing packets that should be lost. Between 0..100. Default: 1. TCP ignores this setting. + + + Incoming packages delay in ms. Default: 100. + + + Randomizes IncomingLag by [-IncomingJitter..+IncomingJitter]. Default: 0. + + + Percentage of incoming packets that should be lost. Between 0..100. Default: 1. TCP ignores this setting. + + + Counts how many outgoing packages actually got lost. TCP connections ignore loss and this stays 0. + + + Counts how many incoming packages actually got lost. TCP connections ignore loss and this stays 0. + + + Provides an overview of the current values in form of a string. + String summary. + + + + The pool this wrapper should return to when released/disposed. + + + + + Gets value and if it belongs to the static pool, returns the wrapper to pool. + + + + + + Boxes the value and returns boxed object. Releases the wrapper. + + + + + + Removes this WrapperStruct from pooling. + + + + Returns a String which represents the value of this instance. + String which represents the value of this instance. + + + Returns a String which represents the type (in brackets and value of this instance. + String which represents the type (in brackets) and value of this instance. + + + + staticPool is used for implicit casting. This is not threadsafe, so casting between T and StructWrapper should only be done on the Unity main thread. + + + + + Replacement for object.GetType() that first checks to see if object is a WrappedStruct. + If so returns the StructWrapper T type, otherwise just returns object.GetType(). + + + + + + + Wrap a struct in a pooled StructWrapper. + + + + + Wrap a struct in a pooled StructWrapper. Pulls wrapper from the static pool. Wrapper is returned to pool when Unwrapped. + Slighty faster version of Wrap() that is hard wired to pull from the static pool. Use the persistant bool argument to make a permanent unpooled wrapper. + + + + + Tests if object is either a cast T, or a wrapped T + + + + + Remove all wrappers in hashtable from pooling, so they can remain cached and used later. + + + + + + Unwraps any WrapperStructs, boxes their value, releases hashtable entry with the boxed value. Releases the wrappers. + + + + + If object is a StructWrapper, the value will be extracted. If not, the object will be cast to T. + Wrapper is returned to the wrapper pool if applicable, so it is not considered safe to Unwrap multiple times, as the wrapper may be recycled. + + + + + If object is a StructWrapper, the value will be extracted. If not, the object will be cast to T. + Wrapper is will not be returned to its pool until it is Unwrapped, or the pool is cleared. + + + + + If object is a StructWrapper, the value will be extracted. If not, the object will be cast to T. + Wrapper is returned to the wrapper pool if applicable, so it is not considered safe to Unwrap multiple times, as the wrapper may be recycled. + + + + + If object is a StructWrapper, the value will be extracted. If not, the object will be cast to T. + Wrapper is returned to the wrapper pool if applicable, so it is not considered safe to Unwrap multiple times, as the wrapper may be recycled. + + + + + If object is a StructWrapper, the value will be extracted. If not, the object will be cast to T. + + + + + If object is a StructWrapper, the value will be extracted. If not, the object will be cast to T. + + + + + If object is a StructWrapper, the value will be extracted. If not, the object will be cast to T. + Wrapper is returned to the wrapper pool if applicable, so it is not considered safe to Unwrap multiple times, as the wrapper may be recycled. + + + + + If object is a StructWrapper, the value will be extracted. If not, the object will be cast to T. + Wrapper is returned to the wrapper pool if applicable, so it is not considered safe to Unwrap multiple times, as the wrapper may be recycled. + + + + + If object is a StructWrapper, the value will be extracted. If not, the object will be cast to T. + Wrapper is will not be returned to its pool until it is Unwrapped, or the pool is cleared. + + + + + + + + + + + Will get the object using the key. If the key is invalid, will return null. + + + + + + Dictionary content as string. + If true, type-info is also included. + Full content of dictionary as string. + + + Param code. Used in internal op: InitEncryption. + + + Encryption-Mode code. Used in internal op: InitEncryption. + + + Param code. Used in internal op: InitEncryption. + + + Code of internal op: InitEncryption. + + + TODO: Code of internal op: Ping (used in PUN binary websockets). + + + Result code for any (internal) operation. + + + + This is the replacement for the const values used in eNet like: PS_DISCONNECTED, PS_CONNECTED, etc. + + + + No connection is available. Use connect. + + + Establishing a connection already. The app should wait for a status callback. + + + + The low level connection with Photon is established. On connect, the library will automatically + send an Init package to select the application it connects to (see also PhotonPeer.Connect()). + When the Init is done, IPhotonPeerListener.OnStatusChanged() is called with connect. + + Please note that calling operations is only possible after the OnStatusChanged() with StatusCode.Connect. + + + Connection going to be ended. Wait for status callback. + + + Acknowledging a disconnect from Photon. Wait for status callback. + + + Connection not properly disconnected. + + + The server's address, as set by a Connect() call, including any protocol, ports and or path. + If rHTTP is used, this can be set directly. + + + + This is the (low level) connection state of the peer. It's internal and based on eNet's states. + + Applications can read the "high level" state as PhotonPeer.PeerState, which uses a different enum. + + + Byte count of last sent operation (set during serialization). + + + Byte count of last dispatched message (set during dispatch/deserialization). + + + The command that's currently being dispatched. + + + This ID is assigned by the Realtime Server upon connection. + The application does not have to care about this, but it is useful in debugging. + + + + The serverTimeOffset is serverTimestamp - localTime. Used to approximate the serverTimestamp with help of localTime + + + + + Count of all bytes going out (including headers) + + + + + Count of all bytes coming in (including headers) + + + + Set via Connect(..., customObject) and sent in Init-Request. + + + Sent on connect in an Init Request. + + + Temporary cache of AppId. Used in Connect() to keep the AppId until we send the Init-Request (after the network-level (and Enet) connect). + + + Set to timeInt, whenever SendOutgoingCommands actually checks outgoing queues to send them. Must be connected. + + + Maximum Transfer Unit to be used for UDP+TCP + + + If IPhotonSocket.Connected is true, this value shows if the server's address resolved as IPv6 address. + + You must check the socket's IsConnected state. Otherwise, this value is not initialized. + Sent to server in Init-Request. + + + + + Writes and "Init Request", which initializes the connection / application used server-side. + + Uses this.ServerAddress, this.AppId, this.PhotonToken and CustomInitData and some more values. + Bytes of the init request. + + + Called when the server's Init Response arrived. + + + Serializes an operation into our binary messages (magic number, msg-type byte and message). Optionally encrypts. + This method is mostly the same in EnetPeer, TPeer and HttpPeerBase. Also, for raw messages, we have another variant. + + + Serializes an operation into our binary messages (magic number, msg-type byte and message). Optionally encrypts. + This method is mostly the same in EnetPeer, TPeer and HttpPeerBase. Also, for raw messages, we have another variant. + + + Returns the UDP Payload starting with Magic Number for binary protocol + + + + Checks outgoing queues for commands to send and puts them on their way. + This creates one package per go in UDP. + + If commands are not sent, cause they didn't fit into the package that's sent. + + + + Checks the incoming queue and Dispatches received data if possible. + + If a Dispatch happened or not, which shows if more Dispatches might be needed. + + + + Internally uses an operation to exchange encryption keys with the server. + + If the op could be sent. + + + + Gets the currently used settings for the built-in network simulation. + Please check the description of NetworkSimulationSet for more details. + + + + + Core of the Network Simulation, which is available in Debug builds. + Called by a timer in intervals. + + + + EnetPeer will set this value, so trafficstats can use it. TCP has 0 bytes per package extra + + + See PhotonPeer value. + + + See PhotonPeer value. + + + See PhotonPeer value. + + + See PhotonPeer value. + + + + Value range for a Peer's connection and initialization state, as returned by the PeerState property. + + + While this is not the same as the StatusCode of IPhotonPeerListener.OnStatusChanged(), it directly relates to it. + In most cases, it makes more sense to build a game's state on top of the OnStatusChanged() as you get changes. + + + + The peer is disconnected and can't call Operations. Call Connect(). + + + The peer is establishing the connection: opening a socket, exchanging packages with Photon. + + + The connection is established and now sends the application name to Photon. + You set the "application name" by calling PhotonPeer.Connect(). + + + The peer is connected and initialized (selected an application). You can now use operations. + + + The peer is disconnecting. It sent a disconnect to the server, which will acknowledge closing the connection. + + + + These are the options that can be used as underlying transport protocol. + + + + Use UDP to connect to Photon, which allows you to send operations reliable or unreliable on demand. + + + Use TCP to connect to Photon. + + + A TCP-based protocol commonly supported by browsers.For WebGL games mostly. Note: No WebSocket IPhotonSocket implementation is in this Assembly. + This protocol is only available in Unity exports to WebGL. + + + A TCP-based, encrypted protocol commonly supported by browsers. For WebGL games mostly. Note: No WebSocket IPhotonSocket implementation is in this Assembly. + This protocol is only available in Unity exports to WebGL. + + + + Level / amount of DebugReturn callbacks. Each debug level includes output for lower ones: OFF, ERROR, WARNING, INFO, ALL. + + + + No debug out. + + + Only error descriptions. + + + Warnings and errors. + + + Information about internal workflows, warnings and errors. + + + Most complete workflow description (but lots of debug output), info, warnings and errors. + + + Build target framework supported by this dll. + + + + Instances of the PhotonPeer class are used to connect to a Photon server and communicate with it. + + + A PhotonPeer instance allows communication with the Photon Server, which in turn distributes messages + to other PhotonPeer clients. + An application can use more than one PhotonPeer instance, which are treated as separate users on the + server. Each should have its own listener instance, to separate the operations, callbacks and events. + + + + + No effect anymore. Removed without replacement. + + + This value was used to get/set the initial capacities of command-lists. + These grow on demand but knowing their capacity is of very limited use. + Also, various command-lists grow their capacity independent from one another. + + + + + No effect anymore. Removed without replacement. + + + This was used to skip some received (and buffered) unreliable commands, to avoid situations + where the peer has aggregated a lot of (old) messages. + + + + + The WarningSize was used test all message queues for congestion. + + + + + Gets a local timestamp in milliseconds by calling SupportClass.GetTickCount(). + See LocalMsTimestampDelegate. + + + + Where dynamic linking is available, this library will attempt to load a native Photon "Encryptor" plugin library for "Datagram Encryption". + Fallback to a managed implementation. This value is always true. + + + Obsolete and ignored. Size of CommandLog. Default is 0, no logging. + + + Obsolete and ignored. Converts the CommandLog into a readable table-like string with summary. + + + False if this library build contains C# Socket code. If true, you must set some type as SocketImplementation before connecting. + + + True if the library was compiled with DEBUG setting. + + + Version of the Native Encryptor API compiled into this assembly. Defines which PhotonEncryptorPlugin needs to be used. + + + Target framework this dll was built for. + + + Global toggle to avoid callbacks from native plugins. Defaults to false, meaning: "callbacks enabled". + Callbacks from native code will fail on some platforms, which is why you can disable them. + + + Can be used to remove/hide the AppId from websocket connect paths. + + + A simplified identifier for client SDKs. Photon's APIs might modify this (as a dll can be used in more than one product). Helps debugging. + + + For the Init-request, we shift the ClientId by one and the last bit signals a "debug" (0) or "release" build (1). + + + Version of this library as string. + + + Version of this library as string. + + + A Native Socket implementation is no longer part of this DLL but delivered in a separate add-on. This value always returns false. + + + Native Payload Encryption is no longer part of this DLL but delivered in a separate add-on. This value always returns false. + + + Native Datagram Encryption is no longer part of this DLL but delivered in a separate add-on. This value always returns false. + + + Enables selection of a (Photon-)serialization protocol. Used in Connect methods. + Defaults to SerializationProtocol.GpBinaryV16; + + + Optional definition of IPhotonSocket type per ConnectionProtocol. + + Several platforms have special Socket implementations and slightly different APIs. + Customizing the SocketImplementationConfig helps to accomodate this. + By default, UDP and TCP have socket implementations assigned. + + If a native socket plugin is available set the SocketNativeSource class as Type definition here. + + You only need to set the SocketImplementationConfig once, after creating a PhotonPeer + and before connecting. If you switch the TransportProtocol, the correct implementation is being used. + + + + + Can be used to read the IPhotonSocket implementation at runtime (before connecting). + + + Use the SocketImplementationConfig to define which IPhotonSocket is used per ConnectionProtocol. + + + + + Sets the level (and amount) of debug output provided by the library. + + + This affects the callbacks to IPhotonPeerListener.DebugReturn. + Default Level: Error. + + + + + Gets the IPhotonPeerListener of this instance (set in constructor). + Can be used in derived classes for Listener.DebugReturn(). + + + + + Called when the client received a Disconnect Message from the server. Signals an error and provides a message to debug the case. + + + + + Option to make the PhotonPeer reuse a single EventData instance for all incoming events. + + + This reduces memory garbage. + If enabled, the event provided via OnEvent(EventData photonEvent) is invalid once the callback finished. + That event's content will get modified. Typically this is not a problem as events are rarely cached. + + Changing this value acquires the same lock that DispatchIncomingCommands() uses. + + + + + Enables a deserialization optimization for incoming events. Defaults to false. + + + When enabled, byte-arrays in incoming Photon events are deserialized into pooled ByteArraySlice instances (wrappers for byte[]). + This improves the memory footprint for receiving byte-arrays in events. + + When used, you have to release the (pooled) ByteArraySlice instances. + + Adjust your handling of EventData accordingly: + + The ByteArraySlice.Buffer will usually be bigger than the send/received byte-array. + Check the ByteArraySlice.Count and read only the actually received bytes. + The Buffer is reused and not cleared. The Offset will be 0 for incoming events. + + Important: + While the peer will acquire the ByteArraySlice and passes it to OnEvent, the game code has to call ByteArraySlice.Release() + when the slice is no longer needed. + + Send either byte[], ArraySegment or use the ByteArraySlicePool to acquire ByteArraySlices to send. + + + + + Instance of a ByteArraySlicePool. UseByteArraySlicePoolForEvents defines if this PhotonPeer is using the pool for deserialization of byte[] in Photon events. + + ByteArraySlice is a serializable datatype of the Photon .Net client library. + It helps avoid allocations by being pooled and (optionally) used in incoming Photon events (see: UseByteArraySlicePoolForEvents). + + You can also use the pool to acquire ByteArraySlice instances for serialization. + RaiseEvent will auto-release all ByteArraySlice instances passed in. + + + + + This debug setting enables a new send-ordering for commands. Defaults to true and commands are sent in the order they are created. Set to false to use Enet ordering. + + + + Skips resending (individual) commands if their reliable sequence number is this amount larger than the highest acknowledged sequence number. + + This puts focus on resending commands that are older and are needed on the receiver side to dispatch commands. + It queues more on the client side than on the server. + Affects only reliable UDP (based on enet). + + + + Skips sending reliable and unreliable commands if their reliable sequence number is this amount larger than the highest acknowledged sequence number. + + This puts focus on resending commands that are older and are needed on the receiver side to dispatch commands. + It queues more on the client side than on the server. + Affects only reliable UDP (based on enet). + + + + + Gets count of all bytes coming in (including headers, excluding UDP/TCP overhead) + + + + + Gets count of all bytes going out (including headers, excluding UDP/TCP overhead) + + + + + Gets the size of the dispatched event or operation-result in bytes. + This value is set before OnEvent() or OnOperationResponse() is called (within DispatchIncomingCommands()). + + + Get this value directly in OnEvent() or OnOperationResponse(). Example: + void OnEvent(...) { + int eventSizeInBytes = this.peer.ByteCountCurrentDispatch; + //... + + void OnOperationResponse(...) { + int resultSizeInBytes = this.peer.ByteCountCurrentDispatch; + //... + + + + Returns the debug string of the event or operation-response currently being dispatched or string. Empty if none. + In a release build of the lib, this will always be empty. + + + + Gets the size of the last serialized operation call in bytes. + The value includes all headers for this single operation but excludes those of UDP, Enet Package Headers and TCP. + + + Get this value immediately after calling an operation. + Example: + + this.loadbalancingClient.OpJoinRoom("myroom"); + int opjoinByteCount = this.loadbalancingClient.ByteCountLastOperation; + + + + If set, the TrafficRecorder will be used to capture all traffic. + + If null or not Enabled, the recorder is not being used. + Release builds of this library will never record traffic for performance reasons. + + See ITrafficRecorder docs. + + + + + Debugging option to tell the Photon Server to log all datagrams. + + + + + Up to 4 resend attempts for a reliable command can be done in quick succession (after RTT+4*Variance). + + + By default 0. Any later resend attempt will then double the time before the next resend. + Max value = 4; + Make sure to adjust SentCountAllowance to a slightly higher value, as more repeats will get done. + + + + + This is the (low level) state of the connection to the server of a PhotonPeer. Managed internally and read-only. + + + Don't mix this up with the StatusCode provided in IPhotonListener.OnStatusChanged(). + Applications should use the StatusCode of OnStatusChanged() to track their state, as + it also covers the higher level initialization between a client and Photon. + + + + + This peer's ID as assigned by the server or 0 if not using UDP. Will be 0xFFFF before the client connects. + + Used for debugging only. This value is not useful in everyday Photon usage. + + + + Count of all currently received but not-yet-Dispatched reliable commands + (events and operation results) from all channels. + + + + + Count of all commands currently queued as outgoing, including all channels and reliable, unreliable. + + + + + Sets a new (temporary) size of the MessageBufferPool to reuse memory where possible. + + + The MessageBufferPool is a Queue<StreamBuffer> for performance reasons. + This methods dequeues from the MessageBufferPool to get the Count equal to countOfBuffers, + then it calls MessageBufferPool.TrimExcess(). + + New size of the pool. Clears the pool if <= 0. + + + + Gets / sets the number of channels available in UDP connections with Photon. + Photon Channels are only supported for UDP. + The default ChannelCount is 2. Channel IDs start with 0 and 255 is a internal channel. + + + + + Enables the client so send the "encrypted" flag on secure connections. Incompatible with Server SDK 4.x. + + + + + While not connected, this controls if the next connection(s) should use a per-package CRC checksum. + + + While turned on, the client and server will add a CRC checksum to every sent package. + The checksum enables both sides to detect and ignore packages that were corrupted during transfer. + Corrupted packages have the same impact as lost packages: They require a re-send, adding a delay + and could lead to timeouts. + + Building the checksum has a low processing overhead but increases integrity of sent and received data. + Packages discarded due to failed CRC cecks are counted in PhotonPeer.PacketLossByCrc. + + + + + Count of packages dropped due to failed CRC checks for this connection. + + + + + + Count of packages dropped due to wrong challenge for this connection. + + + + + Gets the count of sent but not yet acknowledged commands (for UDP connections). + + + + + Count of commands that got repeated (due to local repeat-timing before an ACK was received). + + + + + Number of send retries before a peer is considered lost/disconnected. Default: 7. + + + The initial timeout countdown of a command is calculated by the current roundTripTime + 4 * roundTripTimeVariance. + Please note that the timeout span until a command will be resent is not constant, but based on + the roundtrip time at the initial sending, which will be doubled with every failed retry. + + DisconnectTimeout and SentCountAllowance are competing settings: either might trigger a disconnect on the + client first, depending on the values and Roundtrip Time. + + + + + Caps the initial timing for repeats of reliable commands. In milliseconds. Default: 400ms. + + + Unless acknowledged, reliable commands are repeated initially after: current roundTripTime + 4 * roundTripTimeVariance. + + As this value can be very high when there was exceptional lag, InitialResendTimeMax makes sure that commands + get repeated several times before they may trigger a timeout. + + + + + Sets the time between pings being sent automatically. They measure the roundtrip time and keep connections from closing. Default: 1000. + + + For Photon's reliable UDP connections, pings are skipped if any reliable command was sent during the specified TimePingInterval. + Any reliable command is used to update the RoundTripTime and RoundTripTimeVariance. + + When using TCP and WebSockets, the ping is of interest to measure the roundtrip and to keep a connection open, should nothing else + With those two protocols, the ping is used to update the RoundTripTime and RoundTripTimeVariance. + + + + + Time in milliseconds before any sent reliable command triggers a timeout disconnect, unless acknowledged by the receiver. Default: 10000. + + + DisconnectTimeout is not an exact value for a timeout. The exact timing of the timeout depends on the frequency + of Service() calls and the roundtrip time. Commands sent with long roundtrip-times and variance are checked less + often for re-sending. + + DisconnectTimeout and SentCountAllowance are competing settings: either might trigger a disconnect on the + client first, depending on the values and Roundtrip Time. + + Default: 10000 ms. Maximum setting: 65535. + Setting a negative value will apply the default timeout. + + + + + Approximated Environment.TickCount value of server (while connected). + + + UDP: The server's timestamp is automatically fetched after connecting (once). This is done + internally by a command which is acknowledged immediately by the server. + TCP: The server's timestamp fetched with each ping but set only after connecting (once). + + The approximation will be off by +/- 10ms in most cases. Per peer/client and connection, the + offset will be constant (unless FetchServerTimestamp() is used). A constant offset should be + better to adjust for. Unfortunately there is no way to find out how much the local value + differs from the original. + + The approximation adds RoundtripTime / 2 and uses this.LocalTimeInMilliSeconds to calculate + in-between values (this property returns a new value per tick). + + The value sent by Photon equals Environment.TickCount in the logic layer. + + + 0 until connected. + While connected, the value is an approximation of the server's current timestamp. + + + + + This setter for the (local-) timestamp delegate replaces the default Environment.TickCount with any equal function. + + + + The internally used per PhotonPeer time value. + + Returns the integer part of a Stopwatch ElapsedMilliseconds value. + If the PhotonPeer runs continuously the ClientTime will increment from zero to Int32..::.MaxValue + for approximately 24.9 days, then jump to Int32..::.MinValue (a negative number), then increment + back to zero during the next 24.9 days. + + It is recommended to use this int only for delta times, to avoid handling the overflow. + + + + The last ConnectionTime value, when some ACKs were sent out by this client. + Only applicable to UDP connections. + + + The last ConnectionTime value, when SendOutgoingCommands actually checked outgoing queues to send them. Must be connected. + Available for UDP and TCP connections. + + + Measures the maximum milliseconds spent in PhotonSocket.Send(). + + + Time until a reliable command is acknowledged by the server. + + The value measures network latency and for UDP it includes the server's ACK-delay (setting in config). + In TCP, there is no ACK-delay, so the value is slightly lower (if you use default settings for Photon). + + RoundTripTime is updated constantly. Every reliable command will contribute a fraction to this value. + + This is also the approximate time until a raised event reaches another client or until an operation + result is available. + + + + + Changes of the roundtriptime as variance value. Gives a hint about how much the time is changing. + + + + The last measured roundtrip time for this connection. + + + + Timestamp of the last time anything (!) was received from the server (including low level Ping, ACKs, events and operation-returns). + + + This is not the time when something was dispatched. If you enable NetworkSimulation, this value is affected as well. + + + + + The server address which was used in PhotonPeer.Connect() or null (before Connect() was called). + + + + Contains the IP address of the previously resolved ServerAddress (or empty, if address wasn't resolved with the internal methods). + + + The protocol this peer is currently connected/connecting with (or 0). + + + This is the transport protocol to be used for next connect (see remarks). + The TransportProtocol can be changed anytime but it will not change the + currently active connection. Instead, TransportProtocol will be applied on next Connect. + + + + + Gets or sets the network simulation "enabled" setting. + Changing this value also locks this peer's sending and when setting false, + the internally used queues are executed (so setting to false can take some cycles). + + + + + Gets the settings for built-in Network Simulation for this peer instance + while IsSimulationEnabled will enable or disable them. + Once obtained, the settings can be modified by changing the properties. + + + + + Defines the initial size of an internally used StreamBuffer for Tcp. + The StreamBuffer is used to aggregate operation into (less) send calls, + which uses less resoures. + + + The size is not restricing the buffer and does not affect when outgoing data is actually sent. + + + + + The Maximum Trasfer Unit (MTU) defines the (network-level) packet-content size that is + guaranteed to arrive at the server in one piece. The Photon Protocol uses this + size to split larger data into packets and for receive-buffers of packets. + + + This value affects the Packet-content. The resulting UDP packages will have additional + headers that also count against the package size (so it's bigger than this limit in the end) + Setting this value while being connected is not allowed and will throw an Exception. + Minimum is 576. Huge values won't speed up connections in most cases! + + + + + This property is set internally, when OpExchangeKeysForEncryption successfully finished. + While it's true, encryption can be used for operations. + + + + + While true, the peer will not send any other commands except ACKs (used in UDP connections). + + + + Defines if Key Exchange for Encryption is done asynchronously in another thread. + + + Indicates if sequence numbers should be randomized. + + + Initialization array, used to modify the sequence numbers of channels. + + + If GCM is used for DatagramEncryption. + If true, the randomization-value gets added to the current value, else (CBC/old style) the randomization-value replaces the current value. + + + + Gets the byte-count of incoming "low level" messages, which are either Enet Commands or Tcp Messages. + These include all headers, except those of the underlying internet protocol Udp or Tcp. + + + + + Gets the byte-count of outgoing "low level" messages, which are either Enet Commands or Tcp Messages. + These include all headers, except those of the underlying internet protocol Udp or Tcp. + + + + + Gets a statistic of incoming and outgoing traffic, split by operation, operation-result and event. + + + Operations are outgoing traffic, results and events are incoming. + Includes the per-command header sizes (Udp: Enet Command Header or Tcp: Message Header). + + + + + Returns the count of milliseconds the stats are enabled for tracking. + + + + + Enables or disables collection of statistics in TrafficStatsIncoming, TrafficStatsOutgoing and TrafficstatsGameLevel. + + + Setting this to true, also starts the stopwatch to measure the timespan the stats are collected. + Enables the traffic statistics of a peer: TrafficStatsIncoming, TrafficStatsOutgoing and TrafficstatsGameLevel (nothing else). + Default value: false (disabled). + + + + + Creates new instances of TrafficStats and starts a new timer for those. + + + + + Creates new TrafficStats values and the related Stopwatch instance. To be called when the peer is created / reset. + + + + + Returns a string of the most interesting connection statistics. + When you have issues on the client side, these might contain hints about the issue's cause. + + If true, Incoming and Outgoing low-level stats are included in the string. + Stats as string. + + + Implements the message-protocol, based on the underlying network protocol (udp, tcp, http). + + + Setter for the Payload Encryptor type. Used for next connection. + + If null, the PhotonPeer will create a DiffieHellmanCryptoProvider, which is the default. + This is only needed in rare cases, where using native payload encryption makes sense. + + Get in touch about this, if you got questions: developer@photonengine.com + + + + PayloadEncryption Secret. Message payloads get encrypted with it individually and on demand. + + + Setter for the Datagram Encryptor type. Used at next connect. + + If null, the PhotonPeer will create a default datagram encryptor instance. + + + + The datagram encryptor used for the current connection. Applied internally in InitDatagramEncryption. + + + Count of unreliable commands being discarded in case this client already dispatched a command that was newer (higher sequence number). + + + Set per dispatch in DispatchIncomingCommands to: commandUnreliableSequenceNumber - channel.incomingUnreliableSequenceNumber. Indicates how big the (sequence)gap is, compared to the last dispatched unreliable command. + + + Creates a new PhotonPeer with specified transport protocol (without a IPhotonPeerListener). + Make sure to set the Listener, before using the peer. + + + + Creates a new PhotonPeer instance to communicate with Photon and selects the transport protocol. We recommend UDP. + + a IPhotonPeerListener implementation + Protocol to use to connect to Photon. + + + + Starts connecting to the given Photon server. Non-blocking. + + + Connecting to the Photon server is done asynchronous. + Unless an error happens right away (and this returns false), wait for the call of IPhotonPeerListener.OnStatusChanged. + + + Address of a Photon server as IP:port or hostname. WebSocket connections must contain a scheme (ws:// or wss://). + + + The ID of the app to use. Typically this is a guid (for the Photon Cloud). Max 32 characters. + + + Optional custom data to be used by server during peer creation. + If used for authentication, the server is able to reject a client without creating a peer. + Must be a serializable data type of Photon. + + Custom data to send to the server in the Init request. Might be used to identify a client / user. + + True if a connection attempt will be made. False if some error could be detected early-on. + + + + + Starts connecting to the given Photon server. Non-blocking. + + + Connecting to the Photon server is done asynchronous. + Unless an error happens right away (and this returns false), wait for the call of IPhotonPeerListener.OnStatusChanged. + + + Address of a Photon server as IP:port or hostname. WebSocket connections must contain a scheme (ws:// or wss://). + + + Optional address of a proxy server. Only used by WebSocket connections. Set null to use none. + + + The ID of the app to use. Typically this is a guid (for the Photon Cloud). Max 32 characters. + + + Optional Photon token data to be used by server during peer creation. + If used for authentication, the server is able to reject a client without creating a peer. + Must be of type string or byte[] (as provided by server). + + Custom data to send to the server in the Init request. Might be used to identify a client / user. + + True if a connection attempt will be made. False if some error could be detected early-on. + + + + + This method initiates a mutual disconnect between this client and the server. + + + Calling this method does not immediately close a connection. Disconnect lets the server + know that this client is no longer listening. For the server, this is a much faster way + to detect that the client is gone but it requires the client to send a few final messages. + + On completion, OnStatusChanged is called with the StatusCode.Disconnect. + + If the client is disconnected already or the connection thread is stopped, then there is no callback. + + The default server logic will leave any joined game and trigger the respective event. + + + + + This method immediately closes a connection (pure client side) and ends related listening Threads. + + + Unlike Disconnect, this method will simply stop to listen to the server. Udp connections will timeout. + If the connections was open, this will trigger a callback to OnStatusChanged with code StatusCode.Disconnect. + + + + + This will fetch the server's timestamp and update the approximation for property ServerTimeInMilliseconds. + + + The server time approximation will NOT become more accurate by repeated calls. Accuracy currently depends + on a single roundtrip which is done as fast as possible. + + The command used for this is immediately acknowledged by the server. This makes sure the roundtrip time is + low and the timestamp + rountriptime / 2 is close to the original value. + + + + + This method creates a public key for this client and exchanges it with the server. + + + Encryption is not instantly available but calls OnStatusChanged when it finishes. + Check for StatusCode EncryptionEstablished and EncryptionFailedToEstablish. + + Calling this method sets IsEncryptionAvailable to false. + This method must be called before the "encrypt" parameter of OpCustom can be used. + + If operation could be enqueued for sending + + + + Initializes Datagram Encryption. Optionally, the EncryptorType is being used, if set. + + Secret used to cipher udp packets. + Secret used for authentication of udp packets. + Sets if enet Sequence Numbers will be randomized or not. Preferably should be true. + Sets if the chaining mode should be CBC (false, default) or GCM (true). GCM mode is only available with a native encryption plugin. + + + + Photon's Payload Encryption secret may be set by a response from the server. + + The secret in form of a byte[]. + + + + This method excutes DispatchIncomingCommands and SendOutgoingCommands in your application Thread-context. + + + The Photon client libraries are designed to fit easily into a game or application. The application + is in control of the context (thread) in which incoming events and responses are executed and has + full control of the creation of UDP/TCP packages. + + Sending packages and dispatching received messages are two separate tasks. Service combines them + into one method at the cost of control. It calls DispatchIncomingCommands and SendOutgoingCommands. + + Call this method regularly (2..20 times a second). + + This will Dispatch ANY remaining buffered responses and events AND will send queued outgoing commands. + Fewer calls might be more effective if a device cannot send many packets per second, as multiple + operations might be combined into one package. + + + You could replace Service by: + + while (DispatchIncomingCommands()); //Dispatch until everything is Dispatched... + SendOutgoingCommands(); //Send a UDP/TCP package with outgoing messages + + + + + + + Creates and sends a UDP/TCP package with outgoing commands (operations and acknowledgements). Also called by Service(). + + + As the Photon library does not create any UDP/TCP packages by itself. Instead, the application + fully controls how many packages are sent and when. A tradeoff, an application will + lose connection, if it is no longer calling SendOutgoingCommands or Service. + + If multiple operations and ACKs are waiting to be sent, they will be aggregated into one + package. The package fills in this order: + ACKs for received commands + A "Ping" - only if no reliable data was sent for a while + Starting with the lowest Channel-Nr: + Reliable Commands in channel + Unreliable Commands in channel + + This gives a higher priority to lower channels. + + A longer interval between sends will lower the overhead per sent operation but + increase the internal delay (which adds "lag"). + + Call this 2..20 times per second (depending on your target platform). + + The if commands are not yet sent. Udp limits it's package size, Tcp doesnt. + + + + Dispatching received messages (commands), causes callbacks for events, responses and state changes within a IPhotonPeerListener. + + + DispatchIncomingCommands only executes a single received + command per call. If a command was dispatched, the return value is true and the method + should be called again. + + This method is called by Service() until currently available commands are dispatched. + In general, this method should be called until it returns false. In a few cases, it might + make sense to pause dispatching (if a certain state is reached and the app needs to load + data, before it should handle new events). + + The callbacks to the peer's IPhotonPeerListener are executed in the same thread that is + calling DispatchIncomingCommands. This makes things easier in a game loop: Event execution + won't clash with painting objects or the game logic. + + + + + Prepares your operation (code and parameters) to be sent to the Photon Server with specified SendOptions. + + + This method serializes and enqueues the operation right away while the actual sending happens later. + To be able to aggregate operations/messages, the Photon client sends packages only when you call SendOutgoingCommands(). + + The sendOptions specify how the operation gets sent exactly. + Keep in mind that some transport protocols don't support unreliable or unsequenced transport. + In that case, the sendOptions might be ignored. + + The operationCode must be known by the server's logic or won't be processed. + In almost all cases, sending an operation will result in a OperationResponse (see: IPhotonPeerListener.OnOperationResponse). + + Operations are handled by their byte\-typed code. The codes are defined in the Realtime API (a.k.a. LoadBalancing API). + Containing parameters as key\-value pair. The key is byte\-typed, while the value is any serializable datatype. + Wraps up DeliveryMode (reliability), Encryption and Channel values for sending. + If operation could be enqueued for sending. + + + + Registers new types/classes for de/serialization and the fitting methods to call for this type. + + + SerializeMethod and DeserializeMethod are complementary: Feed the product of serializeMethod to + the constructor, to get a comparable instance of the object. + + After registering a Type, it can be used in events and operations and will be serialized like + built-in types. + + Type (class) to register. + A byte-code used as shortcut during transfer of this Type. + Method delegate to create a byte[] from a customType instance. + Method delegate to create instances of customType's from byte[]. + If the Type was registered successfully. + + + + Container for an Operation request, which is a code and parameters. + + + On the lowest level, Photon only allows byte-typed keys for operation parameters. + The values of each such parameter can be any serializable datatype: byte, int, hashtable and many more. + + + + Byte-typed code for an operation - the short identifier for the server's method to call. + + + The parameters of the operation - each identified by a byte-typed code in Photon. + + + + Contains the server's response for an operation called by this peer. + The indexer of this class actually provides access to the Parameters Dictionary. + + + The OperationCode defines the type of operation called on Photon and in turn also the Parameters that + are set in the request. Those are provided as Dictionary with byte-keys. + There are pre-defined constants for various codes defined in the LoadBalancing application. + Check: OperationCode, ParameterCode, etc. + + An operation's request is summarized by the ReturnCode: a short typed code for "Ok" or + some different result. The code's meaning is specific per operation. An optional DebugMessage can be + provided to simplify debugging. + + Each call of an operation gets an ID, called the "invocID". This can be matched to the IDs + returned with any operation calls. This way, an application could track if a certain OpRaiseEvent + call was successful. + + + + The code for the operation called initially (by this peer). + Use enums or constants to be able to handle those codes, like OperationCode does. + + + A code that "summarizes" the operation's success or failure. Specific per operation. 0 usually means "ok". + + + An optional string sent by the server to provide readable feedback in error-cases. Might be null. + + + A Dictionary of values returned by an operation, using byte-typed keys per value. + + + + Alternative access to the Parameters, which wraps up a TryGetValue() call on the Parameters Dictionary. + + The byte-code of a returned value. + The value returned by the server, or null if the key does not exist in Parameters. + + + ToString() override. + Relatively short output of OpCode and returnCode. + + + Extensive output of operation results. + To be used in debug situations only, as it returns a string for each value. + + + A Photon Event consists of a Code value and a Parameters Dictionary with the event's content (if any). + + The indexer of this class provides access to the values in Parameters. + It wraps the null check for Parameters and uses TryGetValue() for the provided key. + + Photon servers use events to send information which is not triggered by a client's operation requests (those get responses). + The Realtime API allows you to send custom events with any Code and content via OpRaiseEvent. + + + + The event code identifies the type of event. + + + The Parameters of an event is a Dictionary<byte, object>. + + + + Access to the Parameters of a Photon-defined event. Custom Events only use Code, Sender and CustomData. + + The key byte-code of a Photon event value. + The Parameters value, or null if the key does not exist in Parameters. + + + + Defines the event key containing the Sender of the event. + + + Defaults to Sender key of Realtime API events (RaiseEvent): 254. + Can be set to Chat API's ChatParameterCode.Sender: 5. + + + + + Accesses the Sender of the event via the indexer and SenderKey. The result is cached. + + + Accesses this event's Parameters[CustomDataKey], which may be null. + In that case, this returns 0 (identifying the server as sender). + + + + + Defines the event key containing the Custom Data of the event. + + + Defaults to Data key of Realtime API events (RaiseEvent): 245. + Can be set to any other value on demand. + + + + + Accesses the Custom Data of the event via the indexer and CustomDataKey. The result is cached. + + + Accesses this event's Parameters[CustomDataKey], which may be null. + + + + ToString() override. + Short output of "Event" and it's Code. + + + Extensive output of the event content. + To be used in debug situations only, as it returns a string for each value. + + + + Type of serialization methods to add custom type support. + Use PhotonPeer.ReisterType() to register new types with serialization and deserialization methods. + + The method will get objects passed that were registered with it in RegisterType(). + Return a byte[] that resembles the object passed in. The framework will surround it with length and type info, so don't include it. + + + Serialization method delegate. StreamBuffer based custom serialization methods must use this form. + + + + Type of deserialization methods to add custom type support. + Use PhotonPeer.RegisterType() to register new types with serialization and deserialization methods. + + The framwork passes in the data it got by the associated SerializeMethod. The type code and length are stripped and applied before a DeserializeMethod is called. + Return a object of the type that was associated with this method through RegisterType(). + + + Deserialization method delegate. StreamBuffer based custom deserialization methods must use this form. + + + + Provides tools for the Exit Games Protocol + + + + + Serialize creates a byte-array from the given object and returns it. + + The object to serialize + The serialized byte-array + + + + Deserialize returns an object reassembled from the given byte-array. + + The byte-array to be Deserialized + The Deserialized object + + + + Serializes a short typed value into a byte-array (target) starting at the also given targetOffset. + The altered offset is known to the caller, because it is given via a referenced parameter. + + The short value to be serialized + The byte-array to serialize the short to + The offset in the byte-array + + + + Serializes an int typed value into a byte-array (target) starting at the also given targetOffset. + The altered offset is known to the caller, because it is given via a referenced parameter. + + The int value to be serialized + The byte-array to serialize the short to + The offset in the byte-array + + + + Serializes an float typed value into a byte-array (target) starting at the also given targetOffset. + The altered offset is known to the caller, because it is given via a referenced parameter. + + The float value to be serialized + The byte-array to serialize the short to + The offset in the byte-array + + + + Deserialize fills the given int typed value with the given byte-array (source) starting at the also given offset. + The result is placed in a variable (value). There is no need to return a value because the parameter value is given by reference. + The altered offset is this way also known to the caller. + + The int value to deserialize into + The byte-array to deserialize from + The offset in the byte-array + + + + Deserialize fills the given short typed value with the given byte-array (source) starting at the also given offset. + The result is placed in a variable (value). There is no need to return a value because the parameter value is given by reference. + The altered offset is this way also known to the caller. + + The short value to deserialized into + The byte-array to deserialize from + The offset in the byte-array + + + + Deserialize fills the given float typed value with the given byte-array (source) starting at the also given offset. + The result is placed in a variable (value). There is no need to return a value because the parameter value is given by reference. + The altered offset is this way also known to the caller. + + The float value to deserialize + The byte-array to deserialize from + The offset in the byte-array + + + + Exit Games GpBinaryV16 protocol implementation + + + + + The gp type. + + + + + Unkown type. + + + + + An array of objects. + + + This type is new in version 1.5. + + + + + A boolean Value. + + + + + A byte value. + + + + + An array of bytes. + + + + + An array of objects. + + + + + A 16-bit integer value. + + + + + A 32-bit floating-point value. + + + This type is new in version 1.5. + + + + + A dictionary + + + This type is new in version 1.6. + + + + + A 64-bit floating-point value. + + + This type is new in version 1.5. + + + + + A Hashtable. + + + + + A 32-bit integer value. + + + + + An array of 32-bit integer values. + + + + + A 64-bit integer value. + + + + + A string value. + + + + + An array of string values. + + + + + A custom type. 0x63 + + + + + Null value don't have types. + + + + + Calls the correct serialization method for the passed object. + + + + + DeserializeInteger returns an Integer typed value from the given stream. + + + + Exception type for de/serialization issues. Used in Protocol 1.8. + + + Constructor for the exception. + + + Unkown. GpType: 0. + + + Boolean. GpType: 2. See: BooleanFalse, BooleanTrue. + + + Byte. GpType: 3. + + + Short. GpType: 4. + + + 32-bit floating-point value. GpType: 5. + + + 64-bit floating-point value. GpType: 6. + + + String. GpType: 7. + + + Null value don't have types. GpType: 8. + + + CompressedInt. GpType: 9. + + + CompressedLong. GpType: 10. + + + Int1. GpType: 11. + + + Int1_. GpType: 12. + + + Int2. GpType: 13. + + + Int2_. GpType: 14. + + + L1. GpType: 15. + + + L1_. GpType: 16. + + + L2. GpType: 17. + + + L2_. GpType: 18. + + + Custom Type. GpType: 19. + + + Custom Type Slim. GpType: 128 (0x80) and up. + + + Dictionary. GpType: 20. + + + Hashtable. GpType: 21. + + + ObjectArray. GpType: 23. + + + OperationRequest. GpType: 24. + + + OperationResponse. GpType: 25. + + + EventData. GpType: 26. + + + Boolean False. GpType: 27. + + + Boolean True. GpType: 28. + + + ShortZero. GpType: 29. + + + IntZero. GpType: 30. + + + LongZero. GpType: 3. + + + FloatZero. GpType: 32. + + + DoubleZero. GpType: 33. + + + ByteZero. GpType: 34. + + + Array for nested Arrays. GpType: 64 (0x40). Element count and type follows. + + + + Writes integers as compressed. Either directly as zigzag-encoded or (when a type is written for this value) it can use an optimized sub-type. + + + + Enum of the three options for reliability and sequencing in Photon's reliable-UDP. + + + The operation/message gets sent just once without acknowledgement or repeat. The sequence (order) of messages is guaranteed. + + + The operation/message asks for an acknowledgment. It's resent until an ACK arrived. The sequence (order) of messages is guaranteed. + + + The operation/message gets sent once (unreliable) and might arrive out of order. Best for your own sequencing (e.g. for streams). + + + The operation/message asks for an acknowledgment. It's resent until an ACK arrived and might arrive out of order. Best for your own sequencing (e.g. for streams). + + + Wraps up DeliveryMode, Encryption and Channel values for sending operations and messages. + + + Default SendOptions instance for reliable sending. + + + Default SendOptions instance for unreliable sending. + + + Chose the DeliveryMode for this operation/message. Defaults to Unreliable. + + + If true the operation/message gets encrypted before it's sent. Defaults to false. + Before encryption can be used, it must be established. Check PhotonPeer.IsEncryptionAvailable is true. + + + The Enet channel to send in. Defaults to 0. + Channels in Photon relate to "message channels". Each channel is a sequence of messages. + + + Sets the DeliveryMode either to true: Reliable or false: Unreliable, overriding any current value. + Use this to conveniently select reliable/unreliable delivery. + + + Encapsulates the network i/o functionality for the realtime library. + + + used by PhotonPeer* + + + Endless loop, run in Receive Thread. + + + Internal class to encapsulate the network i/o functionality for the realtime libary. + + + used by PhotonPeer* + + + Encapsulates the network i/o functionality for the realtime library. + + + used by PhotonPeer* + + + Endless loop, run in Receive Thread. + + + Internal class to encapsulate the network i/o functionality for the realtime libary. + + + used by PhotonPeer* + + + + Allocates a new byte[] that is the exact used length. Use GetBuffer for nonalloc operations. + + + + + Allocates a new byte[] that is the exact used length. Use GetBuffer for nonalloc operations. + + + + + The bytes between Position and Length are copied to the beginning of the buffer. Length decreased by Position. Position set to 0. + + + + + Brings StreamBuffer to the state as after writing of 'length' bytes. Returned buffer and offset can be used to actually fill "written" segment with data. + + + + + Remaining bytes in this StreamBuffer. Returns 0 if len - pos is less than 0. + + + + + Sets stream length. If current position is greater than specified value, it's set to the value. + + + SetLength(0) resets the stream to initial state but preserves underlying byte[] buffer. + + + + + Guarantees that the buffer is at least neededSize bytes. + + + + + Contains several (more or less) useful static methods, mostly used for debugging. + + + + + Gets the local machine's "milliseconds since start" value (precision is described in remarks). + + + This method uses Environment.TickCount (cheap but with only 16ms precision). + PhotonPeer.LocalMsTimestampDelegate is available to set the delegate (unless already connected). + + Fraction of the current time in Milliseconds (this is not a proper datetime timestamp). + + + + Creates a background thread that calls the passed function in intervals, as long as that returns true. + + + With StopBackgroundCalls, you can stop threads started with this method. + The resulting ThreadAbortException is caught and discarded. + + The function to call. Must return true, if it should be called again. Returning false ends the thread. + Milliseconds to sleep between calls of myThread. Default: 100ms. + An optional name for the task to help debugging. Null or empty won't set the thread.Name. + + + + Calls Abort on the thread with the given id (= index of the thread list) + + + The resulting ThreadAbortException is caught and discarded. + + The unique ID of the thread. + True if the thread is canceled and false otherwise, e.g. if the thread with the given ID does not exist. + + + + Calls Abort on all threads that were started via StartBackgroundCalls. + + + The resulting ThreadAbortException is caught and discarded. + + True if any thread got aborted. + + + + Writes the exception's stack trace to the received stream. + + Exception to obtain information from. + Output sream used to write to. + + + + Writes the exception's stack trace to the received stream. Writes to: System.Diagnostics.Debug. + + Exception to obtain information from. + + + + This method returns a string, representing the content of the given IDictionary. + Returns "null" if parameter is null. + + IDictionary to return as string. + + + + + Converts a byte-array to string (useful as debugging output). + Uses BitConverter.ToString(list) internally after a null-check of list. + + Byte-array to convert to string. + Length of bytes to convert to string. If negative, list.Length is converted. Optional. Default: -1. + + List of bytes as string. + + + + + Class to wrap static access to the random.Next() call in a thread safe manner. + + + + + An Attribute named "Preserve" tells Unity to not strip the code. + + + + TCP "Package" header: 7 bytes + + + TCP "Message" header: 2 bytes + + + TCP header combined: 9 bytes + + + Defines if the (TCP) socket implementation needs to do "framing". + The WebSocket protocol (e.g.) includes framing, so when that is used, we set DoFraming to false. + + + + Checks the incoming queue and Dispatches received data if possible. Returns if a Dispatch happened or + not, which shows if more Dispatches might be needed. + + + + + gathers commands from all (out)queues until udp-packet is full and sends it! + + + + Sends a ping in intervals to keep connection alive (server will timeout connection if nothing is sent). + Always false in this case (local queues are ignored. true would be: "call again to send remaining data"). + + + enqueues serialized operations to be sent as tcp stream / package + + + Sends a ping and modifies this.lastPingResult to avoid another ping for a while. + + + reads incoming tcp-packages to create and queue incoming commands* + + + + Only in use as long as PhotonPeer.TrafficStatsEnabled = true; + + + + Gets sum of outgoing operations in bytes. + + + Gets count of outgoing operations. + + + Gets sum of byte-cost of incoming operation-results. + + + Gets count of incoming operation-results. + + + Gets sum of byte-cost of incoming events. + + + Gets count of incoming events. + + + + Gets longest time it took to complete a call to OnOperationResponse (in your code). + If such a callback takes long, it will lower the network performance and might lead to timeouts. + + + + Gets OperationCode that causes the LongestOpResponseCallback. See that description. + + + + Gets longest time a call to OnEvent (in your code) took. + If such a callback takes long, it will lower the network performance and might lead to timeouts. + + + + Gets EventCode that caused the LongestEventCallback. See that description. + + + + Gets longest time between subsequent calls to DispatchIncomgingCommands in milliseconds. + Note: This is not a crucial timing for the networking. Long gaps just add "local lag" to events that are available already. + + + + + Gets longest time between subsequent calls to SendOutgoingCommands in milliseconds. + Note: This is a crucial value for network stability. Without calling SendOutgoingCommands, + nothing will be sent to the server, who might time out this client. + + + + + Gets number of calls of DispatchIncomingCommands. + + + + + Gets number of calls of DispatchIncomingCommands. + + + + + Gets number of calls of SendOutgoingCommands. + + + + Gets sum of byte-cost of all "logic level" messages. + + + Gets sum of counted "logic level" messages. + + + Gets sum of byte-cost of all incoming "logic level" messages. + + + Gets sum of counted incoming "logic level" messages. + + + Gets sum of byte-cost of all outgoing "logic level" messages (= OperationByteCount). + + + Gets sum of counted outgoing "logic level" messages (= OperationCount). + + + + Resets the values that can be maxed out, like LongestDeltaBetweenDispatching. See remarks. + + + Set to 0: LongestDeltaBetweenDispatching, LongestDeltaBetweenSending, LongestEventCallback, LongestEventCallbackCode, LongestOpResponseCallback, LongestOpResponseCallbackOpCode. + Also resets internal values: timeOfLastDispatchCall and timeOfLastSendCall (so intervals are tracked correctly). + + + + Gets the byte-size of per-package headers. + + + + Counts commands created/received by this client, ignoring repeats (out command count can be higher due to repeats). + + + + Gets count of bytes as traffic, excluding UDP/TCP headers (42 bytes / x bytes). + + + Timestamp of the last incoming ACK that has been read (every PhotonPeer.TimePingInterval milliseconds this client sends a PING which must be ACKd). + + + Timestamp of last incoming reliable command (every second we expect a PING). + + + diff --git a/Assets/Photon/PhotonLibs/Photon3Unity3D.xml.meta b/Assets/Photon/PhotonLibs/Photon3Unity3D.xml.meta new file mode 100644 index 00000000..671d8243 --- /dev/null +++ b/Assets/Photon/PhotonLibs/Photon3Unity3D.xml.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8d4f08d435c4b6343969d8af249460ff +labels: +- ExitGames +- PUN +- Photon +- Networking +TextScriptImporter: + userData: diff --git a/Assets/Photon/PhotonLibs/WebSocket.meta b/Assets/Photon/PhotonLibs/WebSocket.meta new file mode 100644 index 00000000..a02cf77c --- /dev/null +++ b/Assets/Photon/PhotonLibs/WebSocket.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: 2f243ce0406bd1c40a9ff5fc2d78d905 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Photon/PhotonLibs/WebSocket/SocketWebTcp.cs b/Assets/Photon/PhotonLibs/WebSocket/SocketWebTcp.cs new file mode 100644 index 00000000..24b5e1f8 --- /dev/null +++ b/Assets/Photon/PhotonLibs/WebSocket/SocketWebTcp.cs @@ -0,0 +1,433 @@ +#if UNITY_WEBGL || WEBSOCKET || WEBSOCKET_PROXYCONFIG + +// -------------------------------------------------------------------------------------------------------------------- +// +// Copyright (c) Exit Games GmbH. All rights reserved. +// +// +// Internal class to encapsulate the network i/o functionality for the realtime library. +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + + +namespace ExitGames.Client.Photon +{ + using System; + using System.Collections; + using UnityEngine; + using SupportClassPun = SupportClass; + + + /// + /// Yield Instruction to Wait for real seconds. Very important to keep connection working if Time.TimeScale is altered, we still want accurate network events + /// + public sealed class WaitForRealSeconds : CustomYieldInstruction + { + private readonly float _endTime; + + public override bool keepWaiting + { + get { return this._endTime > Time.realtimeSinceStartup; } + } + + public WaitForRealSeconds(float seconds) + { + this._endTime = Time.realtimeSinceStartup + seconds; + } + } + + + /// + /// Internal class to encapsulate the network i/o functionality for the realtime libary. + /// + public class SocketWebTcp : IPhotonSocket, IDisposable + { + private WebSocket sock; + + private readonly object syncer = new object(); + + public SocketWebTcp(PeerBase npeer) : base(npeer) + { + this.ServerAddress = npeer.ServerAddress; + this.ProxyServerAddress = npeer.ProxyServerAddress; + if (this.ReportDebugOfLevel(DebugLevel.INFO)) + { + this.Listener.DebugReturn(DebugLevel.INFO, "new SocketWebTcp() for Unity. Server: " + this.ServerAddress + (String.IsNullOrEmpty(this.ProxyServerAddress) ? "" : ", Proxy: " + this.ProxyServerAddress)); + } + + //this.Protocol = ConnectionProtocol.WebSocket; + this.PollReceive = false; + } + + public void Dispose() + { + this.State = PhotonSocketState.Disconnecting; + + if (this.sock != null) + { + try + { + if (this.sock.Connected) + { + this.sock.Close(); + } + } + catch (Exception ex) + { + this.EnqueueDebugReturn(DebugLevel.INFO, "Exception in SocketWebTcp.Dispose(): " + ex); + } + } + + this.sock = null; + this.State = PhotonSocketState.Disconnected; + } + + GameObject websocketConnectionObject; + + public override bool Connect() + { + //bool baseOk = base.Connect(); + //if (!baseOk) + //{ + // return false; + //} + + + this.State = PhotonSocketState.Connecting; + + + if (this.websocketConnectionObject != null) + { + UnityEngine.Object.Destroy(this.websocketConnectionObject); + } + + this.websocketConnectionObject = new GameObject("websocketConnectionObject"); + MonoBehaviour mb = this.websocketConnectionObject.AddComponent(); + this.websocketConnectionObject.hideFlags = HideFlags.HideInHierarchy; + UnityEngine.Object.DontDestroyOnLoad(this.websocketConnectionObject); + + + this.ConnectAddress += "&IPv6"; // this makes the Photon Server return a host name for the next server (NS points to MS and MS points to GS) + + + // earlier, we read the proxy address/scheme and failed to connect entirely, if that wasn't successful... + // it was either successful (using the resulting proxy address) or no connect at all... + + // we want: + // WITH support: fail if the scheme is wrong or use it if possible + // WITHOUT support: use proxy address, if it's a direct value (not a scheme we provide) or fail if it's a scheme + + string proxyServerAddress; + if (!this.ReadProxyConfigScheme(this.ProxyServerAddress, this.ServerAddress, out proxyServerAddress)) + { + this.Listener.DebugReturn(DebugLevel.INFO, "ReadProxyConfigScheme() failed. Using no proxy."); + } + + + try + { + this.sock = new WebSocket(new Uri(this.ConnectAddress), proxyServerAddress, this.SerializationProtocol); + this.sock.DebugReturn = (DebugLevel l, string s) => + { + if (this.State != PhotonSocketState.Disconnected) + { + this.Listener.DebugReturn(l, this.State + " " + s); + } + }; + + this.sock.Connect(); + mb.StartCoroutine(this.ReceiveLoop()); + + return true; + } + catch (Exception e) + { + this.Listener.DebugReturn(DebugLevel.ERROR, "SocketWebTcp.Connect() caught exception: " + e); + return false; + } + } + + + /// + /// Attempts to read a proxy configuration defined by a address prefix. Only available to Industries Circle members on demand. + /// + /// + /// Extended proxy support is available to Industries Circle members. Where available, proxy addresses may be defined as 'auto:', 'pac:' or 'system:'. + /// In all other cases, the proxy address is used as is and fails to read configs (if one of the listed schemes is used). + /// + /// Requires file ProxyAutoConfig.cs and compile define: WEBSOCKET_PROXYCONFIG_SUPPORT. + /// + /// Proxy address from the server configuration. + /// Url to connect to (one of the Photon servers). + /// Resulting proxy URL to use. + /// False if there is some error and the resulting proxy address should not be used. + private bool ReadProxyConfigScheme(string proxyAddress, string url, out string proxyUrl) + { + proxyUrl = null; + + #if !WEBSOCKET_PROXYCONFIG + + if (!string.IsNullOrEmpty(proxyAddress)) + { + if (proxyAddress.StartsWith("auto:") || proxyAddress.StartsWith("pac:") || proxyAddress.StartsWith("system:")) + { + this.Listener.DebugReturn(DebugLevel.WARNING, "Proxy configuration via auto, pac or system is only supported with the WEBSOCKET_PROXYCONFIG define. Using no proxy instead."); + return true; + } + proxyUrl = proxyAddress; + } + + return true; + + #else + + if (!string.IsNullOrEmpty(proxyAddress)) + { + var httpUrl = url.ToString().Replace("ws://", "http://").Replace("wss://", "https://"); // http(s) schema required in GetProxyForUrlUsingPac call + bool auto = proxyAddress.StartsWith("auto:", StringComparison.InvariantCultureIgnoreCase); + bool pac = proxyAddress.StartsWith("pac:", StringComparison.InvariantCultureIgnoreCase); + + if (auto || pac) + { + string pacUrl = ""; + if (pac) + { + pacUrl = proxyAddress.Substring(4); + if (pacUrl.IndexOf("://") == -1) + { + pacUrl = "http://" + pacUrl; //default to http + } + } + + string processTypeStr = auto ? "auto detect" : "pac url " + pacUrl; + + this.Listener.DebugReturn(DebugLevel.INFO, "WebSocket Proxy: " + url + " " + processTypeStr); + + string errDescr = ""; + var err = ProxyAutoConfig.GetProxyForUrlUsingPac(httpUrl, pacUrl, out proxyUrl, out errDescr); + + if (err != 0) + { + this.Listener.DebugReturn(DebugLevel.ERROR, "WebSocket Proxy: " + url + " " + processTypeStr + " ProxyAutoConfig.GetProxyForUrlUsingPac() error: " + err + " (" + errDescr + ")"); + return false; + } + } + else if (proxyAddress.StartsWith("system:", StringComparison.InvariantCultureIgnoreCase)) + { + this.Listener.DebugReturn(DebugLevel.INFO, "WebSocket Proxy: " + url + " system settings"); + string proxyAutoConfigPacUrl; + var err = ProxySystemSettings.GetProxy(out proxyUrl, out proxyAutoConfigPacUrl); + if (err != 0) + { + this.Listener.DebugReturn(DebugLevel.ERROR, "WebSocket Proxy: " + url + " system settings ProxySystemSettings.GetProxy() error: " + err); + return false; + } + if (proxyAutoConfigPacUrl != null) + { + if (proxyAutoConfigPacUrl.IndexOf("://") == -1) + { + proxyAutoConfigPacUrl = "http://" + proxyAutoConfigPacUrl; //default to http + } + this.Listener.DebugReturn(DebugLevel.INFO, "WebSocket Proxy: " + url + " system settings AutoConfigURL: " + proxyAutoConfigPacUrl); + string errDescr = ""; + err = ProxyAutoConfig.GetProxyForUrlUsingPac(httpUrl, proxyAutoConfigPacUrl, out proxyUrl, out errDescr); + + if (err != 0) + { + this.Listener.DebugReturn(DebugLevel.ERROR, "WebSocket Proxy: " + url + " system settings AutoConfigURLerror: " + err + " (" + errDescr + ")"); + return false; + } + } + } + else + { + proxyUrl = proxyAddress; + } + + this.Listener.DebugReturn(DebugLevel.INFO, "WebSocket Proxy: " + url + " -> " + (string.IsNullOrEmpty(proxyUrl) ? "DIRECT" : "PROXY " + proxyUrl)); + } + + return true; + #endif + } + + + + public override bool Disconnect() + { + if (this.ReportDebugOfLevel(DebugLevel.INFO)) + { + this.Listener.DebugReturn(DebugLevel.INFO, "SocketWebTcp.Disconnect()"); + } + + this.State = PhotonSocketState.Disconnecting; + + lock (this.syncer) + { + if (this.sock != null) + { + try + { + this.sock.Close(); + } + catch (Exception ex) + { + this.Listener.DebugReturn(DebugLevel.ERROR, "Exception in SocketWebTcp.Disconnect(): " + ex); + } + + this.sock = null; + } + } + + if (this.websocketConnectionObject != null) + { + UnityEngine.Object.Destroy(this.websocketConnectionObject); + } + + this.State = PhotonSocketState.Disconnected; + return true; + } + + /// + /// used by TPeer* + /// + public override PhotonSocketError Send(byte[] data, int length) + { + if (this.State != PhotonSocketState.Connected) + { + return PhotonSocketError.Skipped; + } + + try + { + if (data.Length > length) + { + byte[] trimmedData = new byte[length]; + Buffer.BlockCopy(data, 0, trimmedData, 0, length); + data = trimmedData; + } + + //if (this.ReportDebugOfLevel(DebugLevel.ALL)) + //{ + // this.Listener.DebugReturn(DebugLevel.ALL, "Sending: " + SupportClassPun.ByteArrayToString(data)); + //} + + if (this.sock != null) + { + this.sock.Send(data); + } + } + catch (Exception e) + { + this.Listener.DebugReturn(DebugLevel.ERROR, "Cannot send to: " + this.ServerAddress + ". " + e.Message); + + this.HandleException(StatusCode.Exception); + return PhotonSocketError.Exception; + } + + return PhotonSocketError.Success; + } + + public override PhotonSocketError Receive(out byte[] data) + { + data = null; + return PhotonSocketError.NoData; + } + + + internal const int ALL_HEADER_BYTES = 9; + internal const int TCP_HEADER_BYTES = 7; + internal const int MSG_HEADER_BYTES = 2; + + public IEnumerator ReceiveLoop() + { + //this.Listener.DebugReturn(DebugLevel.INFO, "ReceiveLoop()"); + if (this.sock != null) + { + while (this.sock != null && !this.sock.Connected && this.sock.Error == null) + { + yield return new WaitForRealSeconds(0.1f); + } + + if (this.sock != null) + { + if (this.sock.Error != null) + { + this.Listener.DebugReturn(DebugLevel.ERROR, "Exiting receive thread. Server: " + this.ServerAddress + " Error: " + this.sock.Error); + this.HandleException(StatusCode.ExceptionOnConnect); + } + else + { + // connected + if (this.ReportDebugOfLevel(DebugLevel.ALL)) + { + this.Listener.DebugReturn(DebugLevel.ALL, "Receiving by websocket. this.State: " + this.State); + } + + this.State = PhotonSocketState.Connected; + this.peerBase.OnConnect(); + + while (this.State == PhotonSocketState.Connected) + { + if (this.sock != null) + { + if (this.sock.Error != null) + { + this.Listener.DebugReturn(DebugLevel.ERROR, "Exiting receive thread (inside loop). Server: " + this.ServerAddress + " Error: " + this.sock.Error); + this.HandleException(StatusCode.ExceptionOnReceive); + break; + } + else + { + byte[] inBuff = this.sock.Recv(); + if (inBuff == null || inBuff.Length == 0) + { + // nothing received. wait a bit, try again + yield return new WaitForRealSeconds(0.02f); + continue; + } + + //if (this.ReportDebugOfLevel(DebugLevel.ALL)) + //{ + // this.Listener.DebugReturn(DebugLevel.ALL, "TCP << " + inBuff.Length + " = " + SupportClassPun.ByteArrayToString(inBuff)); + //} + + if (inBuff.Length > 0) + { + try + { + this.HandleReceivedDatagram(inBuff, inBuff.Length, false); + } + catch (Exception e) + { + if (this.State != PhotonSocketState.Disconnecting && this.State != PhotonSocketState.Disconnected) + { + if (this.ReportDebugOfLevel(DebugLevel.ERROR)) + { + this.EnqueueDebugReturn(DebugLevel.ERROR, "Receive issue. State: " + this.State + ". Server: '" + this.ServerAddress + "' Exception: " + e); + } + + this.HandleException(StatusCode.ExceptionOnReceive); + } + } + } + } + } + } + } + } + } + + this.Disconnect(); + } + + + private class MonoBehaviourExt : MonoBehaviour + { + } + } +} + + +#endif \ No newline at end of file diff --git a/Assets/Photon/PhotonLibs/WebSocket/SocketWebTcp.cs.meta b/Assets/Photon/PhotonLibs/WebSocket/SocketWebTcp.cs.meta new file mode 100644 index 00000000..7f04d3c3 --- /dev/null +++ b/Assets/Photon/PhotonLibs/WebSocket/SocketWebTcp.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ac953d6a57a9ea94e96ec689598995d5 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonLibs/WebSocket/WebSocket.cs b/Assets/Photon/PhotonLibs/WebSocket/WebSocket.cs new file mode 100644 index 00000000..e8a4feba --- /dev/null +++ b/Assets/Photon/PhotonLibs/WebSocket/WebSocket.cs @@ -0,0 +1,252 @@ +#if UNITY_WEBGL || WEBSOCKET || WEBSOCKET_PROXYCONFIG + +// -------------------------------------------------------------------------------------------------------------------- +// +// Provided originally by Unity to cover WebSocket support in WebGL and the Editor. Modified by Exit Games GmbH. +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + + +namespace ExitGames.Client.Photon +{ + using System; + using System.Text; + using ExitGames.Client.Photon; + + #if UNITY_WEBGL && !UNITY_EDITOR + using System.Runtime.InteropServices; + #else + using WebSocketSharp; + using System.Collections.Generic; + using System.Security.Authentication; + #endif + + + public class WebSocket + { + private Uri mUrl; + private string mProxyAddress; + + /// Photon uses this to agree on a serialization protocol. Either: GpBinaryV16 or GpBinaryV18. Based on enum SerializationProtocol. + private string protocols = "GpBinaryV16"; + + public Action DebugReturn { get; set; } + + public WebSocket(Uri url, string proxyAddress, string protocols = null) + { + this.mUrl = url; + this.mProxyAddress = proxyAddress; + + if (protocols != null) + { + this.protocols = protocols; + } + + string protocol = mUrl.Scheme; + if (!protocol.Equals("ws") && !protocol.Equals("wss")) + { + throw new ArgumentException("Unsupported protocol: " + protocol); + } + } + + public string ProxyAddress + { + get { return mProxyAddress; } + } + + public void SendString(string str) + { + Send(Encoding.UTF8.GetBytes(str)); + } + + public string RecvString() + { + byte[] retval = Recv(); + if (retval == null) + return null; + return Encoding.UTF8.GetString(retval); + } + + #if UNITY_WEBGL && !UNITY_EDITOR + [DllImport("__Internal")] + private static extern int SocketCreate (string url, string protocols); + + [DllImport("__Internal")] + private static extern int SocketState (int socketInstance); + + [DllImport("__Internal")] + private static extern void SocketSend (int socketInstance, byte[] ptr, int length); + + [DllImport("__Internal")] + private static extern void SocketRecv (int socketInstance, byte[] ptr, int length); + + [DllImport("__Internal")] + private static extern int SocketRecvLength (int socketInstance); + + [DllImport("__Internal")] + private static extern void SocketClose (int socketInstance); + + [DllImport("__Internal")] + private static extern int SocketError (int socketInstance, byte[] ptr, int length); + + int m_NativeRef = 0; + + public void Send(byte[] buffer) + { + SocketSend (m_NativeRef, buffer, buffer.Length); + } + + public byte[] Recv() + { + int length = SocketRecvLength (m_NativeRef); + if (length == 0) + return null; + byte[] buffer = new byte[length]; + SocketRecv (m_NativeRef, buffer, length); + return buffer; + } + + public void Connect() + { + m_NativeRef = SocketCreate (mUrl.ToString(), this.protocols); + + //while (SocketState(m_NativeRef) == 0) + // yield return 0; + } + + public void Close() + { + SocketClose(m_NativeRef); + } + + public bool Connected + { + get { return SocketState(m_NativeRef) != 0; } + } + + public string Error + { + get { + const int bufsize = 1024; + byte[] buffer = new byte[bufsize]; + int result = SocketError (m_NativeRef, buffer, bufsize); + + if (result == 0) + return null; + + return Encoding.UTF8.GetString (buffer); + } + } + #else + WebSocketSharp.WebSocket m_Socket; + Queue m_Messages = new Queue(); + bool m_IsConnected = false; + string m_Error = null; + + + public void Connect() + { + m_Socket = new WebSocketSharp.WebSocket(mUrl.ToString(), new string[] {this.protocols}); + m_Socket.Log.Output = (ld, f) => + { + var s = string.Format("WebSocketSharp: {0}", ld.Message); + switch (ld.Level) + { + case WebSocketSharp.LogLevel.Trace: + case WebSocketSharp.LogLevel.Debug: + DebugReturn(DebugLevel.ALL, s); + break; + case WebSocketSharp.LogLevel.Info: + DebugReturn(DebugLevel.INFO, s); + break; + case WebSocketSharp.LogLevel.Warn: + DebugReturn(DebugLevel.WARNING, s); + break; + case WebSocketSharp.LogLevel.Error: + case WebSocketSharp.LogLevel.Fatal: + DebugReturn(DebugLevel.ERROR, s); + break; + } + }; + + string user = null; + string pass = null; + + if (!String.IsNullOrEmpty(mProxyAddress)) + { + var authDelim = mProxyAddress.IndexOf("@"); + if (authDelim != -1) + { + user = mProxyAddress.Substring(0, authDelim); + mProxyAddress = mProxyAddress.Substring(authDelim + 1); + var passDelim = user.IndexOf(":"); + if (passDelim != -1) + { + pass = user.Substring(passDelim + 1); + user = user.Substring(0, passDelim); + } + } + + // throws an exception, if scheme not specified + m_Socket.SetProxy("http://" + mProxyAddress, user, pass); + } + + if (m_Socket.IsSecure) + { + m_Socket.SslConfiguration.EnabledSslProtocols = m_Socket.SslConfiguration.EnabledSslProtocols | (SslProtocols)(3072 | 768); + } + + m_Socket.OnMessage += (sender, e) => { m_Messages.Enqueue(e.RawData); }; + m_Socket.OnOpen += (sender, e) => { m_IsConnected = true; }; + m_Socket.OnError += (sender, e) => { m_Error = e.Message + (e.Exception == null ? "" : " / " + e.Exception); }; + + this.m_Socket.OnClose += SocketOnClose; + + m_Socket.ConnectAsync(); + } + + private void SocketOnClose(object sender, CloseEventArgs e) + { + //UnityEngine.Debug.Log(e.Code.ToString()); + + // this code is used for cases when the socket failed to get created (specifically used to detect "blocked by Windows firewall") + // for some reason this situation is not calling OnError + if (e.Code == 1006) + { + this.m_Error = e.Reason; + this.m_IsConnected = false; + } + } + + public bool Connected + { + get { return m_IsConnected; } + } + + + public void Send(byte[] buffer) + { + m_Socket.Send(buffer); + } + + public byte[] Recv() + { + if (m_Messages.Count == 0) + return null; + return m_Messages.Dequeue(); + } + + public void Close() + { + m_Socket.Close(); + } + + public string Error + { + get { return m_Error; } + } + #endif + } +} +#endif \ No newline at end of file diff --git a/Assets/Photon/PhotonLibs/WebSocket/WebSocket.cs.meta b/Assets/Photon/PhotonLibs/WebSocket/WebSocket.cs.meta new file mode 100644 index 00000000..241c9218 --- /dev/null +++ b/Assets/Photon/PhotonLibs/WebSocket/WebSocket.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b1bad04f7805f764dba77f0d4518e0f0 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonLibs/WebSocket/WebSocket.jslib b/Assets/Photon/PhotonLibs/WebSocket/WebSocket.jslib new file mode 100644 index 00000000..a078b8e8 --- /dev/null +++ b/Assets/Photon/PhotonLibs/WebSocket/WebSocket.jslib @@ -0,0 +1,117 @@ +var LibraryWebSockets = { +$webSocketInstances: [], + +SocketCreate: function(url, protocols) +{ + var str = UTF8ToString(url); + var prot = UTF8ToString(protocols); + var socket = { + socket: new WebSocket(str, [prot]), + buffer: new Uint8Array(0), + error: null, + messages: [] + } + socket.socket.binaryType = 'arraybuffer'; + socket.socket.onmessage = function (e) { +// if (e.data instanceof Blob) +// { +// var reader = new FileReader(); +// reader.addEventListener("loadend", function() { +// var array = new Uint8Array(reader.result); +// socket.messages.push(array); +// }); +// reader.readAsArrayBuffer(e.data); +// } + if (e.data instanceof ArrayBuffer) + { + var array = new Uint8Array(e.data); + socket.messages.push(array); + } + }; + socket.socket.onclose = function (e) { + if (e.code != 1000) + { + if (e.reason != null && e.reason.length > 0) + socket.error = e.reason; + else + { + switch (e.code) + { + case 1001: + socket.error = "Endpoint going away."; + break; + case 1002: + socket.error = "Protocol error."; + break; + case 1003: + socket.error = "Unsupported message."; + break; + case 1005: + socket.error = "No status."; + break; + case 1006: + socket.error = "Abnormal disconnection."; + break; + case 1009: + socket.error = "Data frame too large."; + break; + default: + socket.error = "Error "+e.code; + } + } + } + } + var instance = webSocketInstances.push(socket) - 1; + return instance; +}, + +SocketState: function (socketInstance) +{ + var socket = webSocketInstances[socketInstance]; + return socket.socket.readyState; +}, + +SocketError: function (socketInstance, ptr, bufsize) +{ + var socket = webSocketInstances[socketInstance]; + if (socket.error == null) + return 0; + var str = socket.error.slice(0, Math.max(0, bufsize - 1)); + writeStringToMemory(str, ptr, false); + return 1; +}, + +SocketSend: function (socketInstance, ptr, length) +{ + var socket = webSocketInstances[socketInstance]; + socket.socket.send (HEAPU8.buffer.slice(ptr, ptr+length)); +}, + +SocketRecvLength: function(socketInstance) +{ + var socket = webSocketInstances[socketInstance]; + if (socket.messages.length == 0) + return 0; + return socket.messages[0].length; +}, + +SocketRecv: function (socketInstance, ptr, length) +{ + var socket = webSocketInstances[socketInstance]; + if (socket.messages.length == 0) + return 0; + if (socket.messages[0].length > length) + return 0; + HEAPU8.set(socket.messages[0], ptr); + socket.messages = socket.messages.slice(1); +}, + +SocketClose: function (socketInstance) +{ + var socket = webSocketInstances[socketInstance]; + socket.socket.close(); +} +}; + +autoAddDeps(LibraryWebSockets, '$webSocketInstances'); +mergeInto(LibraryManager.library, LibraryWebSockets); diff --git a/Assets/Photon/PhotonLibs/WebSocket/WebSocket.jslib.meta b/Assets/Photon/PhotonLibs/WebSocket/WebSocket.jslib.meta new file mode 100644 index 00000000..e5a1c7d0 --- /dev/null +++ b/Assets/Photon/PhotonLibs/WebSocket/WebSocket.jslib.meta @@ -0,0 +1,21 @@ +fileFormatVersion: 2 +guid: 04bb5f307f2e48b4fbaa6da865fd4091 +PluginImporter: + serializedVersion: 1 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + platformData: + Any: + enabled: 0 + settings: {} + Editor: + enabled: 0 + settings: + DefaultValueInitialized: true + WebGL: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.README b/Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.README new file mode 100644 index 00000000..55690fba --- /dev/null +++ b/Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.README @@ -0,0 +1,5 @@ + +UPDATED: WebSocket/websocket-sharp.dll from our own Git Fork. Commit: 77f74bd +forked from https://github.com/sta/websocket-sharp.git + +websocket-sharp is provided under The MIT License as mentioned here: https://github.com/sta/websocket-sharp#license \ No newline at end of file diff --git a/Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.README.meta b/Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.README.meta new file mode 100644 index 00000000..47cc15d3 --- /dev/null +++ b/Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.README.meta @@ -0,0 +1,4 @@ +fileFormatVersion: 2 +guid: 3e262c2b04eaa8440987b50a91e86674 +DefaultImporter: + userData: diff --git a/Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.dll b/Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.dll new file mode 100644 index 0000000000000000000000000000000000000000..c0414205b020b6991bbda5327c47fd5a964e9fb1 GIT binary patch literal 244736 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
*5_>K5GbYgCe8Vjf0# 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 LKmYvyM}hwXVi&s8 literal 0 HcmV?d00001 diff --git a/Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.dll.meta b/Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.dll.meta new file mode 100644 index 00000000..099f3fc6 --- /dev/null +++ b/Assets/Photon/PhotonLibs/WebSocket/websocket-sharp.dll.meta @@ -0,0 +1,137 @@ +fileFormatVersion: 2 +guid: 748eb70bc0d7515498ef73fed155520a +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + isPreloaded: 0 + isOverridable: 0 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude Linux: 0 + Exclude Linux64: 0 + Exclude LinuxUniversal: 0 + Exclude OSXUniversal: 0 + Exclude WebGL: 1 + Exclude Win: 0 + Exclude Win64: 0 + Exclude WindowsStoreApps: 1 + - first: + '': OSXIntel + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + '': OSXIntel64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + '': WP8 + second: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 1 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: x86_64 + - first: + Standalone: LinuxUniversal + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 0 + settings: + CPU: AnyCPU + DontProcess: False + PlaceholderPath: + SDK: AnySDK + ScriptingBackend: AnyScriptingBackend + - first: + XboxOne: XboxOne + second: + enabled: 0 + settings: {} + - first: + iPhone: iOS + second: + enabled: 0 + settings: + CompileFlags: + FrameworkDependencies: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonLibs/changes-library.txt b/Assets/Photon/PhotonLibs/changes-library.txt new file mode 100644 index 00000000..5ef74b35 --- /dev/null +++ b/Assets/Photon/PhotonLibs/changes-library.txt @@ -0,0 +1,1847 @@ + +Photon C# Client Library - Changelog +Exit Games GmbH - www.photonengine.com - forum.photonengine.com + + +Version 4.1.6.17 (02. August 2022 - rev6472) + Changed: SequenceDeltaLimitResends to 100 and SequenceDeltaLimitSends to 75. + +Version 4.1.6.16 (20. June 2022) + Note: No notable changes. + +Version 4.1.6.15 (02. June 2022) + Note: No notable changes. + +Version 4.1.6.14 (26. April 2022 - rev6414) + Fixed: WSS PhotonClientWebSocket blocking the main thread when sending isn't possible. Without loss. This affects the RTT however. + Changed: PhotonClientWebSocket will return PhotonSocketError.Busy, if previous Task is not completed yet. + Changed: TPeer.SendData passes the inner result code (PhotonSocketError) to the calling method. + Changed: TPeer.SendOutgoingCommands() will skip sending, if SendData() returns PhotonSocketError.Busy. + +Version 4.1.6.13 (29. March 2022 - rev6399) + Fixed: Fragment length for Datagram Encryption gets recalculated when the encryption gets enabled. + Fixed: Resends will stop early, if the mtu-udpBufferIndex is less than 80. + Changed: Read for a specified GpType. If it is unknown, this will throw a InvalidDataException instead of reading data in undefined ways. The server is sending us the types, so in regular use, this should actually not happen. It is however cleaner to debug data this way. + Fixed: Several comments and log and exception messages. + Changed: Protocol18.WriteCustomTypeBody to use the size written by the serialize-method, instead of using the returned value. + Added: Short delay before closing a socket to give disconnect messages a better chance of being sent out. + +Version 4.1.6.12 (30. November 2021 - rev6299) + Changed: EnetPeer.Disconnect() sets state Disconnecting immediately. + Changed: EnetPeer.ReceiveIncomingCommands() will skip incoming datagrams when in state Disconnected. + Changed: EnetPeer.ReceiveIncomingCommands() checks the incoming challenge as early as possible to avoid using data from outdated connections. + Changed: How Datagram Encryption is enabled, when the first encrypted datagram arrives. + Changed: Some logged messages. + Added: Parameter "length" to SupportClass.ByteArrayToString to convert only a part of a byte[] to string. + Internal: Changed conversion from ParameterDictionary to Dictionary so that StructWrapper does not leak to resulting Dictionary. + +Version 4.1.6.11 (23. November 2021 - rev6288) + Fixed: Payload encryption initialization (without DiffieHellman) for TCP connection. + Fixed: Protocol16.DeserializeCustom() to check if length of read bytes is available (else, a byte[] is returned). + Changed: Custom Type arrays will return UnknownType[] if the array's item-type is unknown. If the custom type is known but items do not read properly, they will be null. + Added: Checks if each generated Custom Type instance can be assigned to the Custom Type array (and skips those that are null or can't be assigned). + Changed: Protocol18Read.ReadCustomType() and ReadCustomTypeArray() to throw error for size < 0. In that case, it is not possible to continue reading and the data is compromized. + Removed: Some logging code that was specific for Unity. + Removed: Exception handling for OnEvent and OnOperationResponse calls. This turned out somewhat inflexible and was hiding valuable debug information. Instead of the low level try/catch, projects should wrap DispatchIncomingCommands in try/catch blocks. + +Version 4.1.6.10 (21. October 2021 - rev6243) + Fixed: ReadCustomTypeArray to return an object[], if any item in the array is unreadable. This object[] contains any properly read custom types but also items of UnknownType. This is of course likely to cause exceptions in the dispatch callbacks. + Added: Exception handling to OnEvent and OnOperationResponse calls. + +Version 4.1.6.9 (12. October 2021 - rev6231) + Fixed: Reliable UDP protocol to send pings, if no reliable command was acknowledged or sent recently. This bug was preventing a client timeout in some cases. + +Version 4.1.6.8 (30. September 2021 - rev6222) + Fixed: ReadCustomType to not use custom deserialization methods, should the reported size be less than available bytes. + Fixed: ReadCustomType and ReadCustomTypeArray to also skip custom types when size is 0. + +Version 4.1.6.7 (27. September 2021 - rev6214) + Fixed: A bug in Protocol18 reader for very long arrays. + +Version 4.1.6.6 (21. September 2021 - rev6204) + Changed: Dns resolution. It is suspected to fail sometimes due to a Mono/Unity bug (issue 6940). Changing from only attempting Dns.GetHostEntry to first attempting Dns.GetHostAddresses followed by Dns.GetHostByName in case of an Exception (yes obsolete api but maybe a different implementation). + Removed: C# wrapper classes for native plugins (sockets and encryption). These classes will be part of the plugin packages. + Changed: PhotonPeer values NativeSocketLibAvailable, NativePayloadEncryptionLibAvailable and NativeDatagramEncryptionLibAvailable are now obsolete. Unity's IL2CPP does not implement PrelinkAll in IL2CPP and we moved the wrapper classes for native libs out of the assembly. + Added: PayloadEncryptorType and related usage to be able to set another Payload Encryption implementation. This is only for completeness. The managed implementation, which is used by default, is fine. + Fixed: TrafficStatsIncoming for PhotonClientWebSocket (used by default in WS/WSS connections in the .Net Standard 2.0 dll). + +Version 4.1.6.5 (24. August 2021 - rev6181) + Fixed: Protocol16 to throw a NotSupportedException when a length value can not be serialized as short (as defined). This affects arrays (except byte[]), strings, hashtables, dictionaries and other variable length values. + Updated: C# classes to the latest state of the native PhotonEncryptorPlugin API. + +Version 4.1.6.4 (26. July 2021 - rev6143) + Changed: ByteArraySlice and ByteArraySlicePool to achieve thread safety. + Changed: PhotonClientWebSocket.AsyncConnectAndReceive to reuse memory. It may still grow somewhat as memory allocated for very large messages is not released but rather held to receive as big messages. This class is not used for WebGL exports. + Removed: Surplus logging in PhotonClientWebSocket implementation. + Added: Null-check in PhotonClientWebSocket.Send() if the socket may be disconnecting already. Added fitting error log. + Changed: TCP implementation to avoid memory allocations. It now uses a Queue which is pooled and re-used. DispatchIncomingCommands() releases the StreamBuffers back into the pool. + Fixed: TrafficStats counting of ping-result command size. This was still counting the buffer size instead of received-data size (usually less). + +Version 4.1.6.3 (24. June 2021 - rev6099) + Fixed: An issue with deserialization of custom types. + +Version 4.1.6.2 (23. June 2021 - rev6092) + Fixed: Potential NullReferenceException in PhotonClientWebSocket.Disconnect(). If called before the connect-flow finished, the instance was null. + +Version 4.1.6.1 (09. June 2021 - rev6086) + Fixed: TPeer.TotalPacketCount and TotalCommandsInPackets counters. They were increased in two places for the Init message. + Fixed: TPeer.TrafficStatsOutgoing.TotalCommandsInPackets counting in SendData, which was adding the remaining count in queues instead of +1. + Changed: TPeer.SendOutgoingCommands(), which will now stop sending if more than MTU size of data was sent. + Note: Messages are not fragmented for TCP/WSS, so they can be well over MTU size as such. But SendOutgoingCommands() will now return if there are more messages, so sending can be limited somewhat. + Changed: PhotonClientWebSocket will pause the task only for 50ms if nothing was received. + Changed: Log level of PhotonClientWebSocket incoming bytes logging. It's now level "ALL". + +Version 4.1.6.0 (19. May 2021 - rev6070) + Changed: PhotonPeer.ClientVersion is now marked as obsolete. The value should be static and so we added PhotonPeer.Version instead as replacement. + Internal: EnetPeer.Reset() now sets the timeoutInt = 0 and does a sentReliableCommands.Clear() instead of replacing it. + Changed: PhotonPeer.IsSendingOnlyAcks is now obsolete. Use SendAcksOnly() where needed. + Changed: EnetPeer.QueueSentCommand will not set the timeoutInt. Instead, this should be set when the next resends are checked in SendOutgoing. + Changed: Resends of reliable commands are now done directly, without them ever leaving the sentReliableCommands list. This has the benefit of being able to resend those commands in sequence. + Internal: On resend, timeoutInt becomes the lowest value found in the sentReliableCommands. It stays unchanged, if any command wasn't resent. + Added: SerializeCommandToBuffer, which is split out of SerializeToBuffer(Queue commandList). Allows sending single commands. + Changed: QueueSentCommand will not add reliable commands to the sentReliableCommands list, if the parameter signals it was in there already. + Changed: PepareWebSocketUrl() will now write the parameter "libversion" instead of "clientversion". Renamed according to Slack discussion. + Changed: PhotonPeer time keeping to use a Stopwatch per peer, instead of one in the SupportClass. + Changed: PeerBase now has a Stopwatch and PeerBase.timeInt will use that. + Removed: All internal usages of SupportClass.GetTickCount(). + Note: Socket implementations should replace their usage of SupportClass.GetTickCount() - peerBase.timeBase with this.peerBase.timeInt. + Changed: PhotonPeer.LocalMsTimestampDelegate, SupportClass.IntegerMillisecondsDelegate, .IntegerMilliseconds and .GetTickCount() are obsolete now. + Added: EnetPeer.QUICK_RESEND_QUEUELIMIT (value: 25) to suspend quick resending if the sent-queue is larger than that value. + Internal: Minor changes to NCommand. + Added: PhotonPeer SequenceDeltaLimitSends and SequenceDeltaLimitResends to prevent sending more commands, when the server does not keep up with acknowledging them. If those values are 0, this new logic is disabled. + Added: EnetChannel.highestReceivedAck to keep track of the highest sequence number ACKed by the server. + Changed: EnetPeer.SendOutgoingCommands() and .SendAcksOnly() to implement the limit. + +Version 4.1.5.5 (06. May 2021 - rev6050) + Changed: Protocol18 ReadCustomType to no longer throw an exception when a unknown custom type arrives. Instead pass UnknownType. + Added: Type "UnknownType", which is used to pass not-deserialized custom types to the game logic. + Changed: Protocol18 ReadCustomType to use a "boundedSize" to read remaining data if the incoming size value is > remaining message data. + Internal: StreamBuffer.Available to get remaining bytes in buffer. Returns value >= 0. + Fixed: Protocol18 WriteArraySegmentByte to not write any bytes, if count is 0. + Fixed: Potential deserialization issues in protocol 1.6, which could be exposed to crash clients. + Changed: String deserialization in protocol 1.6 avoids some memory allocation. + Changed: String deserialization in protocol 1.6 throws a NotSupportedException if the length is negative (was never supported but now it's a clear error). + Changed: DeserializeDictionary in Protocol16, will no longer allow key- or value-types Dictionary or Array. Both were read incorrectly. + Changed: DeserializeDictionaryType in Protocol16, will no longer allow key- or value-types Dictionary or Array. Both were read incorrectly. + Fixed: Error message in 1.8 GetAllowedDictionaryKeyTypes. + +Version 4.1.5.2 (12. March 2021 - rev6017) + Fixed: A compatibility issue of the Native Encryptor API v2 and Unity UWP exports using the .Net Runtime as runtime. The incompatibility made the reference rewriter fail. Introduced in the Metro build of the library in v4.1.5.0. + Fixed: EncryptorNative will not use the new "native-to-managed callback API" when compiling for NETFX_CORE (UWP Metro). + +Version 4.1.5.1 (01. March 2021 - rev5999) + Note: Release as SDK. + +Version 4.1.5.1 (25. February 2021 - rev5991) + Fixed: Handling of IPv6 addresses (bug was introduced in v4.1.5.0). + +Version 4.1.5.0 (23. February 2021 - rev5986) + Added: Optional parameter CustomInitData to Connect() methods. This data/object is used in InitV3. + Changed: Parameter name for photonToken (was "customdata" or similar). + Internal: PrepareInitV3ConnectData(...) is now WriteInitRequest() without the bunch of parameters which were all coming from the PeerBase anyways. + Fixed: NonAllocDictionary.Remove will also remove the value-reference by setting a default. + Changed: Handling of server IP addresses. IpAddress.TryParse has a few false positives. Those are double-checked and may cause ServerAddressInvalid. + Changed: Failed DNS lookup uses status code: DnsExceptionOnConnect. This clarifies a set of runtime errors, which were hard to identify. + Added: StatusCode ServerAddressInvalid = 1050 and DnsExceptionOnConnect = 1051. Used in IPhotonPeerListener.OnStatusChanged(). + Changed: Native Encryptor API v2 is now required. This affects native Datagram Encryption plugins (and allows GCM / Mode 13). + Changed: PDB files are now in "portable" format. This should be equivalent to "full" (previously used) but compatible with latest Unity versions. + +Version 4.1.4.9 (11. January 2021 - rev5966) + Fixed: EnetPeer to reset values for unsequenced commands on connect. Before, clients would send illegal command numbers after switching connections. + Added: Special handling for StructWrapper in DictionaryToString(). Pretty-prints type and value. + Added: StructWrapper.ToString() and and ParameterDictionary.ToStringFull() to simplify logging. + Fixed: Add overload in ParameterDictionary was sending ints to byte, rather than object. + Changed: NonAllocDictionary now implements IDictionary. + Changed: ValueIterator and KeyIterator now implement IEnumerator, System.Collections.IEnumerator. + Changed: PairIterator now implement IEnumerator>. + +Version 4.1.4.8 (03. December 2020 - rev5915) + Fixed: Issue with DisconnectTimeout, which could be set to int.MaxValue and force a timeout. + Note: The maximum value that is applied as DisconnectTimeout is now 65535 (ushort.MaxValue). Negative values set to default timeout. + Added: PhotonPeer.RemoveAppIdFromWebSocketPath option to skip the appid in websocket connects. Defaults to false. + Internal: PeerBase.PepareWebSocketUrl to skip the appid when RemoveAppIdFromWebSocketPath is true. Changed order of parameters. + Note: The AppId is not mandatory on the PhotonCloud but might be needed to connect to Photon OnPremise when the port does not define the app type. + +Version 4.1.4.7 (26. November 2020 - rev5893) + Fixed: PhotonClientWebSocket handling of messages > MTU. Incoming messages may be incomplete and are now reassembled. Before the fix, common result was that deserialization failed with incorrect / incomplete data. + Added: ExitGames.Client.Photon.Hashtable Add() and Remove() for byte keys. This makes sure ht.Add(0, obj) and ht.Remove(0) match how the access via ht[0] works. + +Version 4.1.4.6 (17. November 2020 - rev5865) + Changed: The EventData.Paramters dictionary is now readonly. It does not need to be settable and can no longer be null. So null-checks are removed. + Changed: If the ByteArrayPool is used for reading events, the sender's actorNumber will not longer be in the EventData parameter-table. Instead, only the Sender property is used. + Note: This makes receiving EventData events non-alloc by not adding the Sender key/value to the Parameters (which would box the int value). + Note: The EventData.Sender property was available for a while and was a better way to access the event-sender's actornumber. + Changed: PhotonPeer.SendOperation() and PhotonPeer.SendMessage() will now check a few conditions (is connected, etc) and call PeerBase.SerializeOperationToMessage(). + Internal: Changed the code path for operations and messages serialization. There are lots of internal changes for this but no externals. + Internal: Message header length is set in EnqueueMessageAsPayload along with other updates (was in TPeer.SerializeOperationToMessage()). + Removed: PhotonPeer.OpCustom(), which was already obsolete for a long time. + Added: PeerBase.IsTransportEncrypted() to help figure out if Payload Encryption should be skipped. + Changed: PeerBase.SerializeMessageToMessage no longer updates the header for TCP. Done in EnqueueMessageAsPayload, used by EnqueuePhotonMessage. + Changed: SerializeMessageToMessage to check existing value isRawMessage instead of re-checking the condition when applying message type. + Fixed: Detection of Generic-Dictionary-typed arrays. Was lacking a test if the element was of type Dictionary. + Changed: Connect(string serverAddress, string applicationName) to call variant with proxy-support directly. + Updated: Connect methods and their docs. + Removed: More of the RHTTP support. + Added: DisconnectMessage deserialization and an event for this case: PhotonPeer.OnDisconnectMessage. This does not break the dll's compatibility. + Changed: Connect() workflow. This simplified the TPeer and EnetPeer somewhat and unifies some actions that were scattered in the classes hierarchy. + Changed: PhotonPeer to create the SocketImplementationConfig in the constructor. Connect() will use this to create the actual IPhotonSocket. + Changed: TPeer.Connect and EnetPeer.Connect are a bit simpler now (don't have to create the actual IPhotonSocket). + Removed: PeerBase.SocketImplementation member. + Changed: Setter and handling for the Version.clientVersion (conditional for SERVERSDK). + Changed: Version.clientVersion is readonly, unless SERVERSDK is defined. + Changed: CreatePeerBase() will only create a new EnetPeer or TPeer on demand (if the protocol changed or there was no PeerBase implementation). + Added: Special treatment for byte-typed keys to the Photon Hashtable to avoid boxing. Pre-boxed items are stored in a static array. + Added: NonAllocDictionary support in SupportClass (DictionaryToString()). + Added: ParameterDictionary as type and support to de/serialize it. + Note: This is a WiP commit to get LoadBalancing non-allow (or less alloc). + Added: PhotonPeer.WrapIncomingStructs to control how to de-serialize responses and events. Setting this requires adjusted code. + Note: As long as WrapIncomingStructs is not set, code changes are not mandatory. + Fixed: Error message in SerializeDictionaryHeader to include the type of the value which failed (it was logging the key's type). + Changed: The PhotonClientWebSocket does a DNS request before connecting, to figure out if IPv6 should be requested by Photon servers. + Added: PhotonPeer.TargetFramework to identify the target framework that the dll was built-for. Might help identify the used variant. + Changed: Code order a little, to get obsolete fields up in the range for them. + Removed: RhttpMinConnections and RhttpMaxConnections, which were entirely obsolete. + Changed: OperationResponse indexer is not obsolete. This was used to detect where it's used. + Changed: ParameterDictionary now has a Get() method, so the API is analog to Unwrap() in this case. + Changed: EnetChannel to use NonAllocDictionary instead of Dictionary. Our replacement is internal and non-allocating for iteration. + Changed: the logging level of events possibly happening on each Service() call changed from INFO to ALL + Changed: EnqueueMessageAsPayload stats-keeping no longer throws an exception, when the delivery mode is "out of range". + Internal: Changed how the client writes acknowledgements. + Internal: TPeer.ReceiveIncomingCommands() will only log "Wrong MagicNumber", if the received length is more than 0. It also logs the length then. + Changed: PhotonClientWebSocket (in .Net Standard 2.0 dll) now checks if the clientWebSocket state is still "Open" before handling incoming data. + Changed: PhotonClientWebSocket logs INFO, when the received data has length 0 but the socket is still Open. + + +Version 4.1.4.5 (04. September 2020 - rev5733) + Fixed: Serialization of a ByteArraySlice will now release it, as described in the docs. So you can pass a ByteArraySlice to RaiseEvent and control of it is passed over to the Photon API. + Fixed: Potential issues with SupportLogger.StartBackgroundCalls() when there were 255 threads running (and or stopped). + Changed: When PhotonClientWebSocket fails to connect, this will now correctly result in a disconnect with code/reason ExceptionOnConnect. + Changed: The socket reading-thread not call it's disconnect method, if already disconnecting/disconnected. This avoids a surplus call (and callback). + Internal: The thread locking object in SocketNative is no longers static. + Note: The next release will change the native datagram encryptor api. Most likely this is the last one compatible with the old native plugin. + +Version 4.1.4.4 (29. June 2020 - rev5625) + Fixed: NonAllocDict. Capacity change was broken. This is a critical fix. + Added: Indexer to NonAllocDict to allow Dict[key] get and set. + Added: NonAllocDict.Clear() method. + +Version 4.1.4.3 (24. June 2020 - rev5622) + Added: PhotonPeer.UseByteArraySlicePoolForEvents and PhotonPeer.ByteArraySlicePool to avoid memory garbage when events consist only of a byte-array. See comments / doc. + Added: Class NonAllocDictionary as replacement for the suboptimal implementation in Mono. Some of our code relies on Dictionaries and can be optimized with this. Note: This is neither documented well yet and considered "beta" until we got feedback on some use cases. + Added: PhotonPeer.TrafficRecorder and ITrafficRecorder. This can be used to capture traffic on UDP connections. + Changed: IPhotonSocket.ConnectAddress is now a local field. Before, it accessed the peer which might already connect to another server. + Changed: Debug log for DNS resolution (INFO level). This includes a count of IPs that were returned. + Added: Static PhotonPeer.NoNativeCallbacks to disable callbacks from native code to C#. SocketNative is the first class to use NoNativeCallbacks in DnsAndConnect(). + Changed: SocketUdp and SocketTcp are now public, like other implementations. This means you can assign them to the SocketImplementationConfig and select these deliberately. + Internal: Datagram Encryption was updated and optimized. (rev5548+rev5550). Added PhotonPeer.NativeEncryptorApiVersion constant to be able to check which native encryptor API is being compiled into the assembly. + Changed: EnetPeer.ReceiveIncomingCommands(): bytesIn counter simplified: now it simply incremented by input data size. + Removed: "CommandLog" feature. It was replaced by Traffic Recording. Remaining setting values for this (in PhotonPeer) are now Obsolete and without function. + Changed: WebSocket init workflow to make it compatible with AuthOnce / AuthOnceWss. It can send an init request now. + Internal: WebSockets need to use the ConnectAddress, as the TPeer will setup the address and path as required. + Changed: The IPhotonSocket does not set the ConnectAddress again, so the Peer can set this address before connecting. This is used for WebSocket connects. + Fixed: NETFX_CORE variant of payload encryption initialization. + Added: PreserveAttribute and used it on IPhotonSocket constructors. This keeps Unity's code stripping from constructors which we need. + Fixed: A rare threading issue for UDP connections. + Internal: SupportClass.StartBackgroundCalls() and related methods are now locked. A proper cleanup of StartBackgroundCalls is pending. + Changed: SupportClass.StopBackgroundCalls(id) will now clear the reference to the used thread but not remove the entry in the list. + Changed: SupportClass.StopAllBackgroundCalls() will now clear all referenced threads. Could be used when disconnected / before another connect to reduce number of Threads. + Removed: SupportClass.CallInBackground, which was replaced by StartBackgroundCalls a while ago. + + +Version 4.1.4.2 (08. May 2020 - rev5519) + Updated: DotNet SDK (net35, UWP and .Net Standard 2.0) and Unity SDK. +Version 4.1.4.1 (30. April 2020 - rev5482) + Fixed: String serialization for characters with more bytes. UTF8.GetBytes was called with byte-count instead of character-count as parameter. +Version 4.1.4.0 (28. April 2020 - rev5474) + Internal: Changed serialization of strings to produce no memory garbage. Strings that exceed a UTF8-encoded byte-length of 32767 (short.MaxValue) are not supported in either protocol (now throwing an exception). + Internal: Improved the serialization of float, double, float-array and double-array to produce less memory garbage with better performance. + Fixed: Cross platform serialization of float and double values in protocol 1.8 (which is used by default by PUN 2). Undiscovered, the C# client was using a wrong byte-order for network. The server and native clients were receiving a wrong value. Between C# clients, everything was fine. + Added: WebSocket support built-in to the Metro / UWP assembly. The PhotonMessageWebSocket is automatically used, unless some override is defined externally. + Changed: The socket implementations now disconnect when an exception happens due to sending. This uses the StatusCode.SendError, reported via OnStatusChanged callback. The LoadBalancingClient will handle this and report a DisconnectCause.Exception. Careful when updating only the library: Handle this in LoadBalancingClient. + Changed: The internal exception logging is now in log level INFO. This means the handled exception is no longer logged as if it's not. + Internal: Reverted to using the datagram encryption API v1. The new one is not fully implemented and should not be used yet (but was in v4.1.3.0). + Fixed: If a timeout message arrives after the client disconnected locally, the timeout is neither reported (via OnStatusChanged) nor does it trigger (another) disconnect. This avoids rare issues where clients would get stuck in Disconnecting state. + Added: Initial changes to support proxies for WSS. The PhotonPeer got a Connect overload which sets the proxy address and the IPhotonSocket got ProxyServerAddress. Higher level changes are upcoming. + Fixed: When the StreamBuffer for a large message got fragmented, this goes back to the StreamBuffer pool. + Changed: ExecuteCommand() for fragments. We now use a StreamBuffer from the pool and only adjust the buffered size if needed. + Added: Static PhotonPeer.MessageBufferPoolSize() to have access to the current StreamBuffer pool size. + +Version 4.1.3.0 (23. March 2020 - rev5399) + Internal: Changed Visual Studio projects which build the C# Photon libraries. Added a .Net Standard 2.0 assembly, which has built-in WebSocket support. + Added: IPhotonSocket.SerializationProtocol property. This provides the protocol of the current PhotonPeer.SerializationProtocolType as string. + Note: Some WebSocket implementations use a static value of the same name and need to be updated! Some projects contain SocketWebTcp.cs, SocketWebTcpThread.cs or similar files. + Changed: It is now possible to signal "on demand encryption" (known as Payload Encryption within Photon terms) even on secure connections (WSS / Datagram Encryption). This is important (only) for mixed connection types. A server update is required. The Photon Cloud is updated. + Added: PhotonPeer.SendInCreationOrder. This defaults to true, enabling the new behaviour explained below. + Changed: The send order of reliable and unreliable commands (UDP). This improves throughput of unreliable commands, when there are multiple datagrams of data. Before, a datagram got filled with the reliable commands first. Only when those were gone, unreliable commands were sent. The server was discarding some messages are too late. + Updated: Pool to be used in higher level APIs. Pool.Count is now also locked. + Internal: EnetPeer ocal variable fragmentLength to currentFragmentSize. It no longer hides EnetPeer.fragmentLength, which was probably causing issues in the Native Toolchain (Master builds for HoloLens 2). + Internal: Datagram Encryption now has a new mode: GCM. It can be used seamlessly with the Photon Cloud. + Internal: Native Datagram Encryption plugins and APIs are now more efficient. + Removed: rHttp support. + +Version 4.1.2.20 (12. December 2019 - rev5296) + Changed: DiffieHellmanCryptoProviderNative is now always compiled into the assembly using dynamic linking. If the payload encryption native library is present, it will be used automatically. + Changed: Extern methods with the DllImport attribute are now public. This allows a PrelinkAll() check if the dll is available and can be loaded. + Internal: EncryptorNative will no longer use native extern methods in static fields. This causes execptions in unexpected context. + Added: PhotonPeer NativePayloadEncryptionLibAvailable, NativeDatagramEncryptionLibAvailable and NativeSocketLibAvailable values. + Changed: SocketNative is autmatically used if the native socket lib is available, based on the checks above. + Changed: The wrappers for the native libraries (sockets and datagram encryption) will now setup a debug logging callback with debug level. This requires new native libraries. + +Version 4.1.2.19 (13. November 2019 - rev5271) + Internal: Handling for DllNotFoundException in the SocketNative.DnsAndConnect(). + Internal: Added support for setting the serialization protocol when using native websocket. + Internal: Added logging to native plugins for sockets and encryptor. + Internal: Changed the access level of PeerBase.debugOut from 'internal' to 'public'. + Changed: UDP socket classes now trigger a disconnect in the send methods, should the lower-level socket be disconnected. This gives us a quicker "disconnected" state in some error cases. So far, only reading-errors triggered disconnects in UDP. + Changed: Logging in case of send errors. + Added: Exception handling to deserialization. This adds a safety layer for receiving messages, which can be skipped. Important: It will be unknown, what message got discarded and if it's important or if it was fake / surplus. + Fixed: Internal class EncryptorNet, which was not thread safe, so DatagramEncryption was failing sooner or later. This affected only v4.1.2.18, which was an internal release. + +Version 4.1.2.18 (1. October 2019 - rev5229) + Removed: Surplus logging "Deserializing OpResponse Ping." for TCP/WebSocket connections. + Changed: Datagram Encryption to use an interface for the encryptor. + Changed: PhotonPeer.Encryptor is now public and can be set before connect. Applications can switch to new Datagram Encryption implementations. InitDatagramEncryption will create an instance and use that or falls back to the managed encryptor. + Note: PhotonPeer.Encryptor replaces DgramEncryptor. Setting the class before connect is likely what the LoadBalancingClient will do anyways. + Changed: The EncryptorNative class is for dynamic linked libs. It can be present in all Unity projects. + Changed: PhotonPeer.NativeDatagramEncrypt is obsolete, as it's always true now. On demand, an alternative Encryptor can be set. + Internal: ClientSdkIdShifted is simplified (because it was causing an error in another compiler / in Unity). + Changed: Reading Hashtables and Dictionaries will now check if the read key is null. If so, the key-value pair will be dropped silently. This applies to Protocol 1.6 and 1.8 alike. + Changed: All built-in socket implementations which are now more alike to one another. + Changed: When DNS resolution provides more than one IP, the socket will use the IPv6 ones first. If there is no route to the remote IP, the next in list is used. It does not resolve strings with IPv4 (e.g. a local address). + +Version 4.1.2.17 (9. August 2019 - rev5187) + Removed: Obsolete StatusCode values: DisconnectByServer is now DisconnectByServerTimeout. Other values are simply removed. + Updated: Used StatusCode.DisconnectByServer to DisconnectByServerTimeout. A follow up to renaming and removing the code. Some implementations of IPhotonSocket can be in existing projects and may still use the old naming. Simply rename. + Changed: PeerBase.timeInt is now a property which calculates the current time: SupportClass.GetTickCount() - this.timeBase. + Fixed: The change for timeInt fixes a problem with TCP connections which go entirely silent and would no longer update the PhotonPeer.ConnectionTime. + +Version 4.1.2.16 (28. June 2019 - rev5168) + Changed: TrafficStats Stopwatch initialization. This keeps the Stopwatch but resets it. Also it's started on initialization, if trafficStatsEnabled. + Changed: VitalStatsToString() can now return a useful stats string, even if TrafficStatsGameLevel is null (which is never the case currently). + Added: VitalStatsToString() now logs the "Longest send" time. This is a new value to debug connections. + Changed: NETFX_CORE now also uses Activator.CreateInstance, if a SocketImplementation is set (as in other implementations). + +Version 4.1.2.16 (24. June 2019 - rev5154) + Fixed: DispatchIncomingCommands() for reliable UDP. In some cases, an unreliable command/message could dispatch before the related reliable command (which was written and sent earlier). This issue was introduced in v4.1.2.11, 15. April 2019. + Fixed: Each thread created via SupportClass.StartBackgroundCalls will now try-catch a ThreadAbortException. Apparently the handling of a ThreadAbortException changed with Unity 2019, which started to log the exceptions on Android, IL2CPP, 4.x runtime. + +Version 4.1.2.15 (07. June 2019 - rev5137) + Changed: Tcp messages with magic byte 0xF4 are no longer accepted (this was used on a deprecated platform). + Changed: An Internal Operation Response for OpPing is now executed right away, fixing timing problems when using Op Ping (in WSS, e.g. on Xbox). + Added: PhotonPeer.InitialResentTimeMax. It guarantees resends for commands, despite bad lag (which may be temporary). + Changed: NCommand.ToString() for slightly better organization and naming of values. This is mostly a debugging help for the Photonians. + +Version 4.1.2.14 (16. May 2019 - rev5128) + Changed: The single "release history" file is now split. There is one "changes" file per api/level. For example: changes-realtime.txt lists the LoadBalancing / Realtime API changes. Find them in the respective subfolders. + Changed: The structure of the Unity SDK. As in PUN 2, there is a "Photon" folder, which wraps up all apis and libraries within a Unity project. + Updated: The readme txt. +Version 4.1.2.14 (6. May 2019 - rev5097) + Changed: EventData now has Sender or CustomData properties as well as SenderKey and CustomDataKey. The keys can be defines according to API. The default are the Realtime API values. Sender and CustomData access is cached. If an EventData instance is reused (PhotonPeer.ReuseEventInstance), the values will reset. + +Version 4.1.2.13 (3. May 2019 - rev5086) + Changed: EventData to not contain the Sender or CustomData properties anymore. They have been specific for the Realtime API and confusing for APIs like Chat. + Added: PhotonPeer.ReuseEventInstance as option to use a single EventData instance for all incoming events. This reduces memory garbage. The drawback is: An event provided via OnEvent(EventData photonEvent) is invalidated right after the callback finished. That event's content will get modified. Typically this is not a problem as events are rarely cached. + Internal: Added caching for a EventData instance (on demand). + +Version 4.1.2.12 (26. April 2019 - rev5046) + Fixed: A problem with the new EventData code of v4.1.2.11. It optimistically assumed that events with codes below 200 were always just containing Sender and CustomData. Photon Chat uses different codes, however. + Added: Access the Sender and CustomData via the EventData.Parameters dictionary, even if that is null (due to the new rules). In that case, the Sender and CustomData is accessed via the properties instead. + +Version 4.1.2.11 (15. April 2019 - rev5043) + Note: This version has a few changes that optimize memory usage mostly. + Internal: Changed EventData class (custom and Photon-defined events). Custom events set the Sender and Code and the CustomData but not Parameters (dict) now. EventData indexer checks if the "Parameters" are non-null. If the indexer is used to access non-existing Parameters, the result is null. Custom events are NOT setting Parameters anymore, saving the Dictionary<> use. + Internal: StreamBuffer.ReadByte() to return a byte or throw an exception when the end of the stream was reached. The -1 value was never used though. + Changed: EnetPeer.DispatchIncomingCommands() as optimization. When dispatching unreliable commands, the code now checks if the next command is available. If so, this is dispatched, without going through the keys of the dictionary (which was creating garbage to clean up). + +Version 4.1.2.10 (11. March 2019 - rev5023) + Fixed: A timeout issue for WS / WSS transport protocols by sending a ping. + +Version 4.1.2.9 (20. February 2019 - rev5003) + Note: Release .Net and Unity SDK from our page. + +Version 4.1.2.9 (13. February 2019 - rev4985) + Removed: Setting of Thread.Name for internally used threads. This was used for debugging only (since a while) but caused issues on a console platform (due to an issue in Unity IL2CPP exports). + +Version 4.1.2.8 (31. January 2019 - rev4975) + Fixed: The cap for the lastRoundtripTime. When the current roundTripTime was very low this meant the rtt wasn't going up again. This was a problem with local servers. + Fixed: Setting the roundTripTime when the connect-command gets acknowledged. This sets a minimum of 15ms now. Before, a local server could get a 0ms roundTripTime (due to using Environment.TickCount). + +Version 4.1.2.7 (25. January 2019 - rev4954) + Removed: CommandBufferSize and LimitOfUnreliableCommands. Technically, those are "Obsolete" but no longer used anywhere. See comments. + Fixed: MessageBufferPoolTrim() was not using a lock(), so this wasn't thread safe. + + +Older Versions + +*** Version 4.1.2.6 (12. December 2018 - rev4935) + Changed: Unsequenced delivery is now available in all builds. Internally, this was wrapped in compile conditions. + +*** Version 4.1.2.5 (10. December 2018 - rev4911) + Added: PhotonPeer.SentReliableCommandsCount - reliable commands sent but not yet acknowledged. This can be used as indicator for the quality of service, aslong with ResentReliableCommands. + Note: This build include the "Best Region Ping" classes, to minimize changes when released with Quantum. + +*** Version 4.1.2.4 (23. October 2018 - rev4868) + Fixed: Fragment bug introduced in 4557 (12. March 2018). This kept one command per reassembled message in the incoming queue (without payload). + Added: An upper limit for the calculated lastRoundtripTime (per ack) to prevent uncontrolled rtt changes due to garbled incoming messages. Protecting the rtt timer improves resending commands if needed. INFO level logging starts with: "LastRoundtripTime is suspicious". + Added: SocketTcpAsync class, which is receiving with BeginReceive and EndReceive in callback. This should work for Unity's 4.x Runtime, which has a bug that blocks Socket.Receive() indefinitely. + Changed: TPeer.ReceiveIncomingCommands() will now use dataLength as indicator how much was received. + Internal: CalculateCrc() now uses a cached lookup table, which gives it much better performance (most obviously for longer datagrams). + +*** Version 4.1.2.3 (17. October 2018 - rev4847) + Fixed: Fragment handling. When a duplicate fragment arrived after the "original" was reassembled, this led to an exception and disconnect. + +*** Version 4.1.2.2 (16. October 2018 - rev4843) + Changed: Enum StatusCode values. DisconnectByServer is obsolete and replaced with DisconnectByServerTimeout. + Added: StatusCode.DisconnectByServerReasonUnknown, as a generic case (unknown reason). + Added: You can now send List, which gets de/serialized as object[]. + Internal: PeerBase.MessageBufferPool is now a Queue, which means the usage changed minimally. This is faster than before. + Internal: When a client detects a timeout disconnect, it will enqueue the status-change, to allow the Disconnect()-call to finish first. This provides a clearer order of actions happening internally for a timeout. + Internal: Simplified the ExecuteCommand for a received Disconnect command. The StatusCallback is now enqueued, as Disconnect() also enqueues changes. + Updated: SocketUdpAsync class is now sending in blocking mode but receiving with BeginReceive and EndReceive in callback. This should work for Unity's 4.x Runtime, which has issues with blocking socket receive. + +*** Version 4.1.2.1 (31. July 2018 - rev4787) + Fixed: OutOfMemory exception while building 'Master' version on UWP with .Net Native Toolchain. This is a workaround for an alleged bug in ilc.exe. + Added: EventData.Sender to simplify access to this info. If there is no sender or if the server sent the event, the actorNumber is 0. +LoadBalancing: + Changed: OnStateChangeAction is now named StateChanged and provides a "previous state" value. State changes only trigger the event-call when the value actually changes. + Renamed: OnEventAction to EventReceived and OnOpResponseAction to OpResponseReceived. + Added: LoadBalancingClient now has AddCallbackTarget and RemoveCallbackTarget to simplify registering for various callbacks. +Chat: + Changed: Namespace from "ExitGames.Client.Photon.Chat" to "Photon.Chat". + Added: ConnectAndSetStatus method. + +*** Version 4.1.2.0 (3. May 2018 - rev4660) + Added: Unsequenced delivery for messages (reliable and unreliable). This way, operations and resulting responses and events can be sent as unsequenced, which is good for use cases like streaming voice, input and such. + Internal: The Photon library now re-uses memory for messages and commands. This avoids garbage collection in Unity, which can be a performance problem. + Changed: There is a new method to send operations: PhotonPeer.SendOperation. It uses the SendOptions struct to define the delivery mode, encryption, etc. This replaces the obsolete OpCustom(). + Added: Optionally, the Serialization Protocol v1.8 can now be used. Consider it a pre-release/test version for which we could use feedback. Set PhotonPeer.SerializationProtocolType. + Internal: Replaced foreach with while in SerializeParameterTable, SerializeHashTable and SerializeDictionaryElements in SerializationProtocol v1.6. + Internal: Changed EnetPeer to have a CommandQueue. Instead of queueing ExecuteCommand(cmd) delegates, we now queue the commands. This is leaner. + Internal: The SendOptions.DeliveryMode enum's order changed. + Added: PeerBase.MessageBufferPool, MessageBufferPoolGet() and MessageBufferPoolPut(StreamBuffer buff) as a simple memory pool implementation. + Added: PhotonPeer.MessageBufferPoolTrim() to give an option to limit the amount of memory buffered. + Added: PhotonPeer.MessageBufferPoolGet() as a (brute force) way to externally debug the memory buffer. This is temporary. Don't rely on this. + Added: For TCP, a client-side timeout. This is based on checking timestampOfLastReceive in the DispatchIncomingCommands method (timeouts only get called when you dispatch). + Fixed: The TCP implementation only checks for a TimeoutDisconnect, while in ConnectionStateValue.Connected. Otherwise, no timeout can happen. + Internal: Renamed various values for more fitting names. + Internal: Added special handling of Arrays of int and byte to DeserializeArray() in Protocol 1.6, using DeserializeByteArray and DeserializeIntArray respectively. +LoadBalancing: + Changed: The namespace to the simpler "Photon.Realtime". + Added: Various callbacks to signal specific situations / events. To get those, a class must implement the interface and be added to a list of "Targets". See: ILoadBalancingCallbacks. + Added: RegionHandler, which provides methods to ping a list of regions and to find the one with best ping. This moves PUN's "Best Region" feature to the LoadBalancing API. + Moved: The PhotonPing was part of the dll but is now part of LoadBalancing. + Added: LoadBalancingClient.UseAlternativeUdpPorts. This way, UDP may use ports of the Steam Multiplayer port-range by simply replacing existing port strings in addresses. + Changed: RaiseEvent now has an overload, that uses RaiseEventOptions and SendOptions. The old variant is obsolete but will still work. + Changed: CheckUserOnJoin is now set by default. The RoomOptions.CheckUserOnJoin got removed. + Added: Client-side checks and limits for OpFindFriends. + Added: Optional parameter sendAuthCookie to OpLeaveRoom. The app can control what's passed from Photon to a server via WebHook. + Changes: The room list for lobbies is no longer part of the LoadBalancingClient. Instead, implement the callback for the changed room list. + Added: AppSettings, a base class to host AppId and some settings for a title. This will help make it available across products. Right now, the LoadBalancingClient is not using it yet. + Changed: Player.ID is now .ActorNumber, which mirrors the server's naming. + Fixed: Unity compile defines to support Unity 2018, + +*** Version 4.1.1.19 (9. April 2018 - rev4590) + Fixed: WSS now sends an operation "ping" in SendAcksOnly() (and SendOutgoingCommands()) to avoid getting timed out. This happens right away, while other commands/operations stay in queue. + +*** Version 4.1.1.18 (19. December 2017 - rev4540) + Fixed: Exception in QueueOutgoingAcknowledgement() with a lock(). This avoids threading issues between Send- and Receive-thread. This was an issue mostly seen in Photon Voice, which uses the library multi-threaded. + Changed: Network Simulation now only stores the actual data of messages, instead of storing an action/delegate. + Note: The delegate IL code for Network Simulation was instantiating a "display class" instance and caused GC garbage, even if no simulation was running. +LoadBalancing: + Changed: FriendInfo.Name is now "UserId", which is up to date with it's usage. + Changed: CheckUserOnJoin is now set by default. The RoomOptions.CheckUserOnJoin got removed. + +*** Version 4.1.1.17 (11. October 2017 - rev4465) + Fixed: Fetching the server timestamp now works for the "No C# Sockets"-library build for WebSockets. This affected libraries used for XB1 and as a result, the serve time was not synced. E.g. PhotonNetwork.time was locked at 0. + Changed: XML doc of PhotonPeer.DisconnectTimeout. This is no longer a UDP exclusive setting and clearly states that the unit is milliseconds. + Updated: Several documentation comments for the PhotonPeer. Using shorter summaries and remarks for the details. +LoadBalancing: + Changed: OperationCode const byte Join = 255 is now marked obsolete. We use "JoinGame" instead. + Added: DisconnectCause.AuthenticationTicketExpired. + Fixed: DebugReturn call in Unity WebGL. +Chat: + Fixed: Unity "6" compile define is now UNITY_2017. + +*** Version 4.1.1.16 (1. September 2017 - rev4349) + Fixed: The native implementations for "PhotonPing", which are used for PUN's "Best Region" selection in the "No Sockets" dlls (Android and iOS for Unity 4.x). Disposing the "dynamic" version was causing an exception (due to an attempted fix of a less-obvious memory leak). This caused the Best Region selection to stall. + +*** Version 4.1.1.15 (17. July 2017 - rev4232) +WebSocket: + Changed: WebSockets are now treated like "addons", as their implementations are complex and potentially not running on some platforms (be it UWP or some Unity export). The Readme-Photon-WebSocket.txt tells you how to add them to your project and set them up. + Added: Folder "PhotonWebSocket" with SocketWebTcpCoroutine and SocketWebTcpThread classes, to support platforms with and without Thread API. + Added: PingHttp.cs for Unity WebGL exports, to support "Best Region" selection in PUN. +LoadBalancing: + Added: LoadBalancingClient.TransportProtocol as shortcut to the use PhotonPeer's TransportProtocol value. This enables setting the protocol easily while not connected. + Added: LoadBalancingClient.SocketImplementationConfig as shortcut to modify PhotonPeer's SocketImplementationConfig. This enables you to setup which IPhotonSocket implementation to use for which network protocol. + Changed: LoadBalancingPeer.ConfigUnitySockets() to try to find our websocket implementations in the assembly, making the SocketWebTcpCoroutine and SocketWebTcpThread classes optional. + Removed: Class "SocketWebTcp" is no longer found by ConfigUnitySockets(). +Chat: + Added: ChatClient.TransportProtocol as shortcut to the use PhotonPeer's TransportProtocol value. This enables setting the protocol easily while not connected. + Added: ChatClient.SocketImplementationConfig as shortcut to modify PhotonPeer's SocketImplementationConfig. This enables you to setup which IPhotonSocket implementation to use for which network protocol. + Changed: ChatPeer.ConfigUnitySockets() to try to find our websocket implementations in the assembly, making the SocketWebTcpCoroutine and SocketWebTcpThread classes optional. + Removed: Class "SocketWebTcp" is no longer found by ConfigUnitySockets(). + +*** Version 4.1.1.14 (5. July 2017 - rev4191) + Changed: SupportClass StartBackgroundCalls method now assigns an ID to each thread/task and enables you to cancel it explicitly via StopBackgroundCalls. CallInBackground is now obsolete due to renaming. +LoadBalancing + Changed: The ClientState "Uninitialized" is now "PeerCreated". This is the initial state. ConnectedToMaster is now ConnectedToMasterserver (both use the same value). + Updated: ClientState values descriptions. + Internal: GameEnteredOnGameServer() first sets the local player's actorNumber, then updates the player lists. +Chat: + Added: ChatClient can optionally run a thread to call SendOutgoingCommands in intervals. This makes sure the connection doesn't fail easily (e.g. when Unity is loading scenes, etc.). You still have to call Service to dispatch received messages. + Added: ChatClient.UseBackgroundWorkerForSending. Set this to true, to use the new background thread. Note: Do not use this in WebGL exports from Unity cause Threads are unavailable in them. +WebSocket: + Changed: Updated enabled protocols for WebSocket.cs. Now it is posible to connect to a server which supports only either TLS 1.1 or TLS 1.2 or TLS 1.0 or any combination of them. + +*** Version 4.1.1.13 (2. June 2017 - rev4112) + Internal: Fixed StreamBuffer.Seek() which was throwing an exception when seeking position 0 in an empty stream. + Removed: The queue-length checks which were using OnStatusChanged to warn about the amount of data queued for sending. Several StatusCode values are now obsolete accordingly. + Removed: StatusCode InternalReceiveException = 1039 and TcpRouter* which were obsolete for a longer time. + +*** Version 4.1.1.12 (24. May 2017 - rev4086) + Fixed: Peer.timeLastSendOutgoing was set in SendAcksOnly and ReceiveIncomingCommands. This should not happen. In PUN, this led to an issue with the fallback thread, which could not keep the connection. + Fixed: DNS resolution in the UDP socket is no longer inside a lock. Even if it takes longer (without network), the socket can now be closed before it's even opened properly, avoiding a freeze. + Fixed: UWP clients can set a SocketImplementationConfig. This opens up the use of WebSockets or any IPhotonSocket implementation in UWP, too. + Internal: Acknowledgements are no longer created as "commands" and serialized on send. Instead, they are directly written to a byte[] buffer, which is using less memory. + Added: PhotonPeer.EnableServerTracing to enable UDP Datagram Tracing on server side. We might ask you to use this when debugging connection issues. Otherwise, don't use this, as you can't access the server's logs anyways. + +*** Version 4.1.1.11 (13. April 2017 - rev3922) + Fixed: Bug of v4.1.1.10, which caused disconnects after a short time. + +*** Version 4.1.1.10 (11. April 2017 - rev3916) + Internal: Memory Allocation for nCommand and EnetPeer within SendoutGoingCommand, and AreReliableCommandInTransit + Internal: Refactoring of SerializeToBuffer to prevent memory allocation and access udpBuffer directly instead of using BlockCopy. + Internal: EnetPeer.channels got removed and replaced by a simple array and a GetChannel() method to access all channels. + +*** Version 4.1.1.9 (15. March 2017 - rev3884) + Fixed: Size calculation for Datagram Encryption (used on one console only, so far), when the MTU was changed from default. In some cases, an Exception was thrown: ArgumentException: Offset and length were out of bounds [...] at System.Buffer.BlockCopy. Adjusted GetFragmentLength() and CalculateBufferLen() internally. + +*** Version 4.1.1.8 (24. February 2017 - rev3873) + Fixed: Handling of non-fatal "WouldBlock" SocketExceptions when receiving data via TCP. This led to disconnects before. This affects only TCP connections in libs other than Windows Store. + Changed: Memory usage for TCP socket usage. Less memory is being allocated per receive. As we have to queue incoming data, it still has to get copied once. + Changed: Memory usage for encrypting messages. + Changed: SupportClass.DictionaryToString() now logs the length of a byte-array (not the content). + Changed: Deserializing unknown "Custom Types" returns the sent byte[]. There is no warning/error log yet but deserialization won't fail entirely. + Changed: PeerBase.SerializeMessageToMessage() to use less memory for encryption. Also, Raw-Messages can now be de/encrypted successfully. + Internal: Added StreamBuffer.ToArrayFromPos(), enabling you to get a buffer copy, starting with some offset (position of the buffer). + Internal: Removed some NETFX special build cases (obsolete due to using our own SteamBuffer). +LoadBalancing: + Added: Player.UserId field and code to read published UserIds from the player properties in CacheProperties(). When publishing the UserId in a room (RoomOptions.PublishUserId = true), the UserId becomes available for all players in a room. Good to find/make friends or follow a team player into another room. + Added: New matchmaking operation: OpGetGameList(typedLobby, sqlFilter). This fetches a list of rooms that match the filter. You can show lists of rooms with specific properties, if needed (or still use OpJoinRandom). + Fixed: WebFlags properties setters. + +*** Version 4.1.1.7 (16. December 2016) + Note: No new lib version. Just updated demos for the SDK. +Demos: + Fixed: Demos with persistent (Turnbased) games. The Memory Demo was not setting up rooms correctly (which led to errors joining them) and used a "join" rather than a "rejoin" to get into saved games (getting added to the room once more). + +*** Version 4.1.1.6 (9. December 2016 - rev3801) + Changed: Default SentCountAllowance = 7. +Loadbalancing: + Added: OpJoinRandom will now "remember" to send ExpectedUsers to the Game Server (by caching the value). + Added: AuthEvent and it's handling. This (internally sent) event can now update the client's token anytime (before that expires). + Added: LoadBalancingClient.OpChangeGroups(). + Changed: LoadBalancingClient.Disconnect() no longer sets it's own State to Disconnected. It waits till the state-change callback gets called by the lib. + +*** Version 4.1.1.5 (18. November 2016 - rev3775) +Internal: + Fixed: Photon-init request is now created by the factory method CreateAndEnqueueCommand to make sure we fragment the init if needed (for small MTU and more init-data). + Fixed: Bug in TrafficStatsReset method, which caused the averaged stats to go up infinitely after a reset. + +*** Version 4.1.1.4 (21. October 2016 - rev3737) + Internal: Added ArraySegment support for byte[]. This way, we can internally reuse more memory. + Changed: Implementations of PeerBase Disconnect() are now using EnqueueStatusCallback(StatusCode.Disconnect) to delay the "callback". That enables any thread to call Disconnect() while the status change correctly gets called in the main thread via DispatchIncomingCommands(). + Changed: When a SocketImplementationConfig for UDP is set, this will be used via Activator.CreateInstance(socketImplementation, this). + +*** Version 4.1.1.3 (20. September 2016 - rev3673) + Changed: NETFX_CORE implementation for UDP. This no longer attempts to detach the stream after every single Send, which caused issues when connecting and getting a lot of messages. + +*** Version 4.1.1.2 (13. September 2016 - rev3652) + Changed: There are less variants of the Photon library now, which makes it easier to integrate, run and test. There is a general "DotNet" version and a Windows Store (universal) dll. These two also come as Unity build and in Debug and Release. UWP can use the Universal/WSA library. + Added: PhotonPeer.SocketImplementationConfig. This allows easier configuration of the IPhotonSocket type to use per protocol, so that switching protocols is easier (compared to having to set a SocketImplementation before connecting). + Changed: PhotonPeer.SocketImplementation can't be set public. Use the SocketImplementationConfig instead. + Internal: This release summarizes a lot of internal refactorings. It's easy now to switch protocols (internally), to set socket implementations (platform dependent) if needed, etc. +LoadBalancing: + Removed: LoadBalancingClient.PlayerName and Player.Name. Were obsolete for more than a year. There is a NickName and the UserId can be set in the AuthValues. + Removed: OpJoinRoom() overload with actorNumber. This was obsolete. To enable clients to return to a room, set AuthValues and a userID. + Changed: LoadBalancingClient no longer overrides the protocol for Unity WebGL. This is done in the LoadBalancingPeer.ConfigUnitySockets(). + Changed: GetNameServerAddress() is the same in Chat and LoadBalancing APIs now. + Added: DisconnectCause.DisconnectByServerLogic and handling for this case. You can check this DisconnectedCause when the LoadBalancingClient.State is ClientState.Disconnected. + Added: Hashtable definition to use Photon's own implementation for Windows Store builds (NETFX_CORE). This must be used but it means you to use the same Hashtable definition in all builds (no matter if 8.1 or 10). + Added: Support for WebGL export in Unity. + Changed: OnStateChangeAction, OnEventAction and OnOpResponseAction are now events. To register a method in one of those, use += and to deregister you need to use -=. This prevents assigning a new method and de-registering any previously registered ones. +Chat: + Changed: ChatPeer now has ConfigUnitySockets(), which defines the SocketImplementationConfig. It's only used in Unity (using UNITY define). + Changed: ChatClient is not setting socket implementations anymore. + Added: Hashtable definition to use Photon's own implementation for Windows Store builds (NETFX_CORE). This must be used but it means you to use the same Hashtable definition in all builds (no matter if 8.1 or 10). + Added: Support for WebGL export in Unity. + +*** Version 4.1.1.1 (22. August 2016 - rev3549) + Fixed: IPv6 support. The init-message was missing it in 4.1.1.0. + Fixed: UWP build for Unity now has (Photon-)Hashtable class once more. Unlike Windows RT, UWP does support Hashtable (again). But in Unity, we always use ours. + +*** Version 4.1.1.0 (15. August 2016 - rev3536) + Changed: Unity exports now need to set the API Compatibility to ".Net 2.0". The ".Net 2.0 Subset" won't work anymore, due to need of some features for a new encryption mode. + Fixed: Windows Store implementation of TCP Socket. This is now compatible with 8.1 and 10 and the locally configured timeout is also applied while connecting initially. + Fixed: OpWebRPC documentation. +LoadBalancing: + Fixed: Room.ClearExpectedUsers() is now sending it's current, local "expected users" to update the server with "CAS" (Check and Swap). This gives the client an update when the values become valid (which updates the local cache after the roundtrip). + Added: Support for the 'Server Side Master Client' feature. The Room will read master client updates from the server accordingly. Room.SetMasterClient() enables you to override the server's selection (provided it did not change before your operation gets executed). + Changed: Option for bool WebForward into the new "WebFlags". This allows fine control of which data is being sent to WebHooks. This affects all SetProperties, OpWebRPC and the RaiseEventOptions. + Added: WebRPC.cs to the LoadBalancing API folder (was available separately before). It contains WebFlags and WebRpcResponse. +Internal: + Changed: Instead of Windows Phone 8.0 support, we now have a Windows 8.1 Universal library ("Metro") and one for Windows 10 Universal ("UWP"). + Changed: Changed initialization of PhotonPeer and related classes. + Changed: Workflow to send Init command. + Added: Option for "Datagram Encryption" and a new Authentication Workflow ("AuthOnce" and "AuthOnceWss"). This is part of the LoadBalancing API. + Added: ClientSdkId, which is used internally for reference. + +*** Version 4.1.0.6 (30. June 2016 - rev3400) + Changed: ExchangeKeysForEncryption() and internally called DeriveSharedKey() can now be executed in their own Thread. + Added: static PhotonPeer.AsyncKeyExchange to define if encryption calculations are done in parallel. +Internal: + Changed: NetworkSimulationSet.IsSimulationEnabled only does any work, if the value gets changed (saving some surplus work). + +*** Version 4.1.0.6 (21. June 2016 - rev3376) +Internal: + Removed: The wrapper for the optional "native encryption library" from most assemblies. It didn't get certified for the Windows Store and caused problems in the Unity WebPlayer. This will be provided on demand instead. + Removed: Our upcoming protocol implementation until it's fully compatible with all supported platforms. Despite not being used, it also caused some issues on some Unity exports. + Changed: Usage of MemoryStream is being replaced with a StreamBuffer. This is our own implementation and always grants access to the underlying byte[] (which is not possible in Windows Phone / Store API in some cases). For your Custom Type serialization, replace MemoryStream with StreamBuffer. That's all. + Internal: Commands are now split into header and payload byte-arrays, instead of copying them into yet another buffer before sending them. + Added: Support for IPv6 adresses in Photon Ping classes. This supports "Best Region" usage in PUN. + Fixed: After DNS resolution, IPv6 adresses are preferred over IPv4 ones. +LoadBalancing: + Fixed: LoadBalancingPeer.OpRaiseEvent(...) to send operations (and events) unencrypted again. + +*** Version 4.1.0.4 (19. May 2016 - rev3322) +Internal: + Updated: For Unity, the usage of the optional "native sockets" library is now compatible with IPv6 addresses, as required by Apple. + +*** Version 4.1.0.3 (28. April 2016) +Internal: + Added: An optional native library for encryption. This speeds up the (rarely used) key-exchange and encryption of messages. The usual case is to use the C# variant, as before. + +*** Version 4.1.0.2 (21. April 2016 - rev3283) +Internal: + Changed: PeerBase: ipv6 flag set in INIT_BYTES[5] after dns lookup, when ip address type already known + Changed: PeerBase: INIT_BYTES[4] contains clientlibid and release flag (15) + Changed: PeerBase: client version packed in INIT_BYTES[5,7,6] bytes + Changed: pProtocol prefix and path parsed (and trimmed) in IPhotonSocket.TryParseAddress to support websocket urls + Changed: Client version moved to separate version.cs + Changed: Protocol static methods reworked to instance methods, IProtocol interface extracted + Changed: PeerBase.DeserializeMessageAndCallback() to use a variant of new MemoryStream that exists in Windows 10 Universal APIs, too. +LoadBalancing: + Added: Expected Users. This affects the Room, LoadBalancingClient, JoinRoom, JoinOrCreateRoom and CreateRoom. + Added: null check in Extensions.StripToStringKeys(). + Fixed: FriendInfo.IsInRoom, which returned the opposite of it's naming! Also changed FriendInfo ToString() according to PUN's. + Added: RoomInfo expectedUsersField, which is updated with room properties (well known ones). + Added: Room.ExpectedUsers and ClearExpectedUsers() to expose the list of expected players. + Added: RoomInfo.serverSideMasterClient and masterClientIdField (also updated with well known properties). + Changed: OpRaiseEvent now re-uses a Dictionary in the LoadBalancingPeer. It uses Clear(), rather than creating a new Dict each time. + Changed: AuthenticationValues to also use C# properties and and backup-fields. This is guaranteed to work in Unity. + Updated: EventCode ErrorInfo reference with a link to "WebHooks" doc online. + Changed: Disconnect handling in the LoadBalancingClient. The client should reset correctly and log info, if it's in a State where a disconnect is a proper error. Note: In some cases like "switching server", a disconnect is expected, so it's not an error then. + Fixed: PlayerProperties sent to game server will now include well-known properties again. This fixes the "NickName missing" bug. + Fixed: LoadBalancingClient.State value when the client fails to join or create a game on the Master Server. The state is correctly re-set to ClientState.JoinedLobby or ClientState.ConnectedToMaster. + Internal: Added private inLobby value, to store if the client was/is in a lobby on the Master Server. + Fixed: DemoClient (in demo-loadbalancing) now makes use of the Name Server by using: ConnectToRegionMaster("eu"). + Added: DemoClient now has debug output when the connection times out or can't be established. + + +*** Version 4.0.5.1 (18. January 2016 - rev3187) + Fixed: EnetPeer.ExecuteCommand(). Fixed: Receiving a Disconnect-command didn't clear the receive-buffers. However, it has to be the last command executed. + Note: The bug related to the Disconnect-command happened, when an app paused, queued incoming commands and executed the Disconnect while incoming commands were queued. + Fixed: Setting of DisconnectTimeout for TCP connections (ReceiveTimeout and SendTimeout). + Changed: Our protocol serializes Enums implicitly as their underlying Type. This means you can easily send them but will lose the Type info (they don't arrive as your Enum type). This is now also working in Windows Store libraries (NETFX_CORE). +LoadBalancing: + Added: OpSetCustomPropertiesOfActor() and OpSetCustomPropertiesOfRoom() now check locally, if the client is currently in a room. It must be, to be able to set these properties. An exception exists for setting properties for the local player's actorNumber, but those are better set via LoadBalancingClient.LocalPlayer. +Unity SDK: + Changed: The Unity condition which defines "using Hashtable = ExitGames.Client.Photon.Hashtable;". All versions of Unity 4 and up now define that Photon's Hashtable is needed. This is only in the LoadBalancing API, not in the demos. + Added: WebGL support + +*** Version 4.0.5.0 (3. December 2015 - rev3144) + Changed: Signature of SetCustomProperties methods. All overloads now include a final, optional "webForward" parameter. This enables you to update a WebHook when properties change. This is intended for turnbased games, not for high-frequency updates - use with care. + Internal: Added more debug output to error messages from the socket usage. This should now always include the ServerAddress to make things easier to debug server-side, if needed. + Added: Serveral new ErrorCode values, which will be used by v4RC5 and newer servers. See ErrorCode.JoinFailed***, HttpLimitReached and ExternalHttpCallFailed. + Fixed: LoadBalancing API now reads the correct "NickName" key from the server's authentication response. So far, it was reading a key that is never used. Note: This means you can set a user's NickName server-side to override the client's nickname. +Chat + Added: A MessageLimit field for ChatClient and ChatChannel to limit the number of messages the client keeps locally. It might be useful to limit memory usage in long running chats. Set ChatClient.MessageLimit to apply the limit to any channel subscribed afterwards or apply a limit individually. + +*** Version 4.0.0.12 (3. November 2015 - rev3112) + Added: Support for IPv6. Note: IPv6 does not work in Unity yet. It has issues with IPv6. (Case 740910) + Note: Host name resolution will prefer IPv4 over IPv6, if both IPs should be available. IPv6 Addresses must use brackets! Example: [::1]:5055. This separates the port from the address. + Added: Error logging when Addresses can not be resolved to IPs. + Changed: LoadBalancingClient OpJoinOrCreateRoom() no longer allows you to re-join a room. Simply remove the ActorNumber from the parameters. To re-join, use OpJoin with actorNumber (Player.ID that was assigned in the room). + Added: Support for PS4 in Unity LoadBalancing SDK. Note: The demos are not all updated with controller support, as we use the old UI, still. To test export, use the Particle Demo. + +*** Version 4.0.0.11 (28. October 2015 - rev3093) + Changed: Sending a generic Dictionary (with specific types) will now throw an Exception, if any key or value is null. This limitation does not include Dictionaries which use object as type. Those Exceptions are one of the few, which are not catched and turned into a debug message. Catch them by wrapping Operation calls, where needed (OpRaiseEvent()). + Changed: TrafficStatsGameLevel public properties are now settable. This enables you to reset individual values to (e.g.) show "LongestDeltaBetweenSending of the past second". + Added: CommandLog debugging option. This can be used to get a list of sent reliable commands and their ACKs (from the server). Default is 0 size ("off"). + Added: CommandLogSize and CommandLogToString() to PhotonPeer. This is part of a LoadBalancingClient.loadBalancingPeer. + Added: Several PhotonPeer values to analyze connections: ConnectionTime, LastSendAckTime and LastSendOutgoingTime. PacketLossByChallenge is probably a tempoary addition to check if we have to drop corrupted packages due to bad "challenge" value. + Added: Log for incoming reliable commands. The most recent 200 entries will be logged with the CommandLogToString(). This is probably temporary. + Changed: Timing for resending reliable commands in RUDP. The peer will check the sent-queue more frequently now, no matter at what time some random command would have to be repeated. Repeats should be more timely, based on their dynamic resend-timing. + Changed: PhotonPeer.MaximumTransferUnit minimum is now 576 (was 520, which was lower than on the server). + Internal: Channels in the EnetPeer are now stored in an array, so we can replace some foreach-loops with for-loops. +LoadBalancing (Realtime and Turnbased API) + Added: LeaveLobby handling in OnOperationResponse(), which sets the client's state correctly. + Changed: Order of execution for Ev Join. If user is known (inactive user rejoins), the player's props are read. The actor list is used, if available. + Changed: RoomOptions to use properties with backup-fields to avoid issues in Unity which has issues with Object Initializer (curly brackets). + Changed: JoinMode 2 is now "JoinOrRejoin". Was: "Rejoin". + Added: ErrorCode constant AuthenticationTicketExpired. + Internal: OpJoinRoom, OpCreateRoom and OpJoinRandomRoom no longer use a (growing) list of properties. Instead, classes were created to "sum up" their parameters. The api for games didn't change. + Internal: Related to the refactoring of Join/Create, the LoadBalancingClient now creates a Room instance when the client arrived on the GameServer (before, it got created in the initial "create" call). +Chat + Added: More sanity checks on operations (empty userId or secret, max friends). + Added: Special debug logging when the server returns an error for "Operation Unknown". In this case, it's highly likely that you don't use a Chat AppId. + Added: More helpful error logging. + +*** Version 4.0.0.10 (14. July 2015 - rev2988) + Removed: LitePeer class and complete "Lite" namespace. It's highly recommended to use the LoadBalancing API (LoadBalancingClient, etc). The (few) operations that were defined in Lite are no longer required really. + Refactored: Some "base" enumerations that were provided by the Lite peer. They are now in LoadBalancingPeer. + Added: support for RoomOptions.Plugins. Which we need now since we support multiple plugins per plugin dll - for testing purposes for instance. + Fixed: The wrapper classes for the native sockets now do a Sleep(15) when there's nothing to receive. This reduces CPU load considerably. + Fixed: Unity library SocketWebTcp class for websocket support. It requires a coroutine on a new GameObject which is now marked as DontDestroyOnLoad(go) and survives scene loading. + Fixed: The Windows 8 SDKs now include the release assemblies. This makes sure you can submit your app to the Windows Store. + Added: ConnectionProtocol WebSocket and WebSocketSecure. It's simply a different protocol, compared to UDP and TCP, so it should be separated. + Internal: DoFraming is now a part of TPeer (was in IPhotonSocket). It's set by the ConnectionProtocol which avoids misconfiguration. + Changed: SendPing can now send a ping binary message or enqueue the Ping Operation (when DoFraming is false). + Added: A null-check for TrafficStatsStopwatch to avoid NullReferenceExceptions. + Added: Compile condition for Ping result handling. It's only used when the client uses Sockets as well (for the time being). + Added: Unity WebGL export also sets a "using" Hashtable definition. + Fixed: An exception in Photon.Hashtable.ToString() if a value was null. The assumption was that there are no null-values. + Changed: SocketUdp and SocketTcp now implement IDisposable, which seems to help with infrequent freezes in the Unity Editor. + Added: PhotonPeer.QuickResendAttempts. Sets how many resend attempts for a reliable command will be done in quick succession (after RTT+4*Variance), before the time between repeats will be increased. Use with care and with low values. + Added: IP/Hostname to logged exceptions when Connect fails. This is easier to support (e.g. DNS lookup fails). + Fixed: Library for PUN+ export to WebGL. Originally, we forced UDP as protocol for PUN+ export, as the native sockets library doesn't support TCP. However, WebGL export introduced a new use case. + Added: LoadBalancingClient.EnableLobbyStatistics and .LobbyStatistics. They provide an overview which lobbies your game uses and how busy they are. + Fixed: The LB Demo should set CustomProperties instead of directly setting (any) properties. + Fixed: SocketWebTcp is completely empty, unless WEBSOCKET is defined. Before the file still contained the "using" part of the class. +LoadBalancing (Realtime and Turnbased API) + Updated: Description for IsConnectedAndReady. + Changed: NameServerAddress to return a fitting address depending on protocol (including WebSocket but not yet RHTTP). + Updated: The only name server host is now "ns.exitgames.com", which gets turned into a proper address by protocol. + Changed: LoadBalancingClient.CustomAuthenticationValues is now .AuthValues. You can use those values to identify a user, even if you don't setup an external, custom authentication service. + Changed: LoadBalancingClient.UserId no longer directly stores the id but puts it into AuthValues. This means, the UserId could also be set via setting AuthValues. + Changed: The API of AuthenticationValues. There is now the UserId and AddAuthParameter() replaces the less general SetAuthParameters() (which only set specific key/values). + Changed: PlayerName gets renamed to NickName, so PhotonPlayer.Name becomes .NickName and LoadBalancingClient.Name becomes .NickName, too. The old naming is marked as obsolete. + Changed: Particle Demo now connects to the Cloud by default (because it's easier to setup and try). You can define your own Master Server (Photon OnPremise) of course. + Added: GamePropertyKey.MasterClientId (248) and ParameterCode.MasterClientId (203) + Added: ParameterCode.ExpectedValues (231) + Added: ParameterCode.SuppressRoomEvents (237) +Chat API: + Added: A Unity 4.6 demo with uGUI. It's missing a few features but should give you a good start to making your own. + Added: Unity/WebGL support (merged from PUN). + Added: Breaking! IChatClientListener.DebugReturn(). Photon lib and chat client log via this method (no logging to console by default). + Changed: ChatClient.CustomAuthenticationValues is now .AuthValues. You can use those values to identify a user, even if you don't setup an external, custom authentication service. + Changed: ChatClient.UserId no longer directly stores the id but puts it into AuthValues. This means, the UserId could also be set via setting AuthValues. + Changed: The API of AuthenticationValues. There is now the UserId and AddAuthParameter() replaces the less general SetAuthParameters() (which only set specific key/values). + Note: All users should have a UserId. You can set chatClient.UserId before you connect, or you can set the AuthenticationValues in Connect(..., authValues) to set a UserId. + Added: ChatChannel.ToStringMessages(), which gets all messages in a single string, line by line. The format is "Sender:Message". + Added: ChatClient.TryGetChannel() to find a channel only by name, no matter if public or private. +Photon Unity SDK + Changed: Organization of APIs and Assemblies in SDK. Now you can copy the content of folder "PhotonAssets" into your project's Assets folder and you have all APIs. + Added: PhotonAssets-U5 folder which includes only the Windows Universal DLL. + +*** Version 4.0.0.8 (14. January 2015 - rev2765) + Fixed: Serialization of custom types with nested Serialize-calls. In this case, re-using a specific memory stream breaks it. + +*** Version 4.0.0.7 (12. January 2015 - rev2763) + Fixed: Serialization of arrays of custom-types. +Chat API + Internal: Changed code for UserID from 7 to 225. The latter is used in LoadBalancing, too, so we want to re-use the code here. + +*** Version 4.0.0.6 (05. December 2014 - rev2758) + Added: ChatApi and LoadBalancingApi folders to Unity SDK. They are needed in any Photon project with Unity. When updating, copy and paste the files over existing ones and make sure to replace the assembly-files, too. + Changed: Protocol to save more memory or re-use it. The idea is to have less Garbage Collection (primarily for Unity/PUN and custom types). + Added: New CustomType de/serialization methods which provide the MemoryStream, instead of a byte[] COPY from the stream. + Changed: Now using one method to identify a Type. This was duplicated code before. + Changed: De/Serialization of some types. + Note: The drawback is now, that there are more places with: lock(). This is far from optimal but the alternative would be to make Protocol instances per thread. As most is static at the moment, this would not be an easy task. + Added: position check for DeserializeStreamFunction() call. Stream position must be "previous + customtype length". It gets corrected but at the moment no error is thrown. + Changed: DispatchIncomingCommands() no longer instantiates the commandsToRemove each call. This is reused and thus saves memory. + Changed: net_fx build will now check IsConstructedGenericType to detect if something is a dictionary +LoadBalancing + Added: LoadBalancingClient.OpJoinOrCreateRoom overload which has lobby as parameter. If a room gets created, this defines in which lobby it belongs. + Changed: LoadBalancingPeer: Added new error code PluginMismatch, documentation for Plugins parameter code. + +*** Version 4.0.0.5 (23. September 2014 - rev2738) + Updated: AddFriends and RemoveFriends doc. + Changed: Logging level for two cases. Dropping a package due to failed CRC-check is now logged for INFO. It's expected and certainly not an error. Dropping a package when the incoming challenge does not match is also not an ERROR. It is expected when you switch servers and packages arrive late. This is now debug level ALL. + +*** Version 4.0.0.4 (19. September 2014 - rev2736) + Fixed: Fragmentation when CRC checks are enabled. This kept clients from sending fragmented commands when the additional 4 bytes CRC were included later on. + Fixed: An issue in the ChatClient which was referring to a class from Photon Unity networking. This caused compile issues in the Unity Chat Demo. + Updated: Reference doc generation. + +*** Version 4.0.0.3 (15. September 2014 - rev2731) + Updated: Doc generation settings and style. + Note: This version has no code changes to rev2728 described below. That version is already released in the Unity Asset Store in PUN. + +*** Version 4.0.0.3 (11. September 2014 - rev2728) + Fixed: A simple "order of things" issue when detecting a timeout (due to resends). We first have to set "Zombie" state so that any Disconnect() call created a disconnect-command with reserved byte = 2 = "due to timeout". + Fixed: Chat to be compatible with native sockets of PUN+ (iOS and Android exports from Unity). + Fixed: Access to native sockets (in classes SocketUdpNativeDynamic and SocketUdpNativeStatic) is now using a lock(). The native methods are not thread safe but we need more than one socket for PUN+ and Chat (with native sockets, too). + Changed: Logging for the case "Ignoring received package due to wrong challenge". This got logged on log-level ERROR but maybe is better as WARNING only. Now this should log less often. + Internal: Updated to a newer native-sockets interface. + Internal: Updated to a newer native-sockets interface (affects PUN+ only). Cleaned up precompile defines and #if usage. + +*** Version 4.0.0.2 (01. August 2014 - rev2715) + Added: PhotonPing class and subclasses per platform. Allows clients to use regular UDP messages to ping our servers and find the best region. + Added: Native and Win8 support for PhotonPing. + Known Issue: Native ping has to be done "one by one" and without any other connection in Unity. It's not yet thread safe (but that is ok as we don't want to ping most of the time but only rarely and out of game). + Added: PhotonPing class/file to Win8 platforms. + Changed: The extern static methods for the native libs are now internal (instead of private). Pings are using them, too. + Changed: WebRpcResponse.ReturnCode comment to include fail code. + Changed: OpWebRpc doc is now much more complete and helpful. + Updated: Unity SDK Particle Demo (more) and LoadBalancing Demo (just a bit). + +*** Version 4.0.0.1 (17. June 2014 - rev2663) + Fixed: DotNet assembly no longer contains classes that try to include our Unity native socket libs. This was causing issues in some cases. + Added: PhotonPeer.CommandInfoCurrentDispatch. This property gives you the debug string of the currently dispatched command (events or responses). Only useful for UDP. +LoadBalancing: + Added: LoadBalancingClient.OpRaiseEvent(). Now that LoadBalancingClient USES a loadBalancingPeer (and doesn't extend it), things are much easier by offering this method, too! + Added: LoadBalancingClient.IsConnected and .IsConnectedAndReady to LB API. Going to be part of the API from now on. + Removed: Unused fields clientId and clientCount. + Changed: Field for internal use "lastJoinActorNumber" is now private as intended. + Changed: LoadBalancingClient.Disconnect is now setting it's own state to Disconnected if the connection got closed (as expected). +Chat: + Changed: How the server responds to Subscribe and Unsubscribe. Events will now contain success/failure of those. This allows us to send the answer after calling a WebHook if needed and we can even send it to multiple clients (which authenticated with the same userID). + Changed: Handling of subscription responsed. This is done to allow web services to subscribe a client remotely and to be able to prevent joining some channel that a user should not join (the channel of some guild or another team, e.g.). + Changed: Debug loggging. In Unity we can't use Debug.Assert, etc. So we have to log more cleanly. This works in Editor and several platforms (but not all). + Changed: Folder for Chat API. It now begins with "Photon" which provides some context no matter where you copy the files. Easier to find in Unity projects. + Changed: Operation FriendList and method SendFriendList renamed to AddFriends + Added: Operation RemoveFriends and corresponding method in ChatClient.cs + Added: Console Demo has new command 'fr' to remove friends + +*** Version 4.0.0.0 (23. May 2014 - rev2614) + Changed: This version contains a few features that are not compatible with the Photon Server SDK v3.x. Notable features that are not in the Server SDK are: NameServer, WebHooks and Turnbased API features. + Changed: This SDK is the first that contains all current APIs for Realtime, Turnbased and Chat. + Fixed: Release build of the Unity assembly now also excludes native-socket using code, fixing a Unity Free export issue. We only use the debug assembly in our demos though and suggest you do the same. +LoadBalancing: + Changed: LoadBalancingClient.FriendList creation/update is delayed until the server's response is available. This avoids cases where the friends are offline for the moment between requesting the update and getting it. Initially, it is null as before. + Added: some methods to Player to find next player, etc. Useful for turnbased games to find an opponent. + Added: LoadBalancingClient.UserId, which is the ID of a user(account). This is used in FindFriends and when you fetch account-related data (like save-games for Turnbased games). Set it before Connect*(). As fallback when empty during connect, the PlayerName is used instead. + Removed: LoadBalancingPeer.OpSetCustomPropertiesOfActor and OpSetPropertyOfRoom which were too special to be so low level. Could be implemented to LBClient. +Turnbased: + Fixed: OpJoinRandomRoom and OpCreateRoom which didn't reset the ActorNr to claim when entering the room. Depending on previous actions, some calls of those methods did fail when the actorNumber wasn't available. + Changed: OperationCode.Rpc is now called OperationCode.WebRpc. It's simply much cleaner (considering PUN has RPCs as well but in a different context). + Changed: WebRpcResponse reading to be able to handle additional data. + Added: Parameter webForward to: OpSetCustomPropertiesOfRoom and OpSetPropertiesOfRoom. The "old" overloads of these methods are still there, too. If webForward is true, the properties are sent to the WebHooks. +Chat: + Added: SendPrivateMessage() overload that has option to encrypt private messages. Public messages don't need encryption. + Removed: lastId and LastMessageIndex from channels. Those were impractical and should be removed from the API. + Changed: UserStatus class to ChatUserStatus. + Changed: Most classes are defined in their own file now. + Removed: Folders "Shared" and their subfolders. This gives a much better overview. + Added: Handling for event SubscribeResponse. This is not actually a response but gives you info about channels that got subscribed (e.g. when you re-login quickly or when a user is logged in in multiple clients). + Added: HandleSubscriptionResults() method to handle the event and proper responses. + +*** Version 3.2.2.6 (13. May - rev2575) + Fixed: Windows Store and Windows Phone libraries now only send the bytes they should send. This means we have to copy the payload from the "complete package buffer" in order to send it. + Fixed: SocketTcp now handles all exceptions during reading. Still, abort-by-server is treated as ServerDisconnect. Everything else as client side disconnect. This fix is especially for iOS exports from Unity. The iOS Power-button will immediately cut any connection. The Home-button allows us to keep the connection if we return the app to focus within a few seconds. + Fixed: TPeer.StopConnection() now clears the incoming queue when it disconnects. This avoids getting any more (already received) commands. + Changed: TPeer.Disconnect() now uses StopConnection instead of implementing the same code again. + +*** Version 3.2.2.5 (30. April - rev2566) +LoadBalancing: + Added: TypedLobby class to replace lobby name/type pair. + Added: LoadbalancingClient.CurrentLobby property. CurrentLobbyName and CurrentLobbyType are obsolete. + Added: New overloads in LoadbalancingClient with TypedLobby parameter instead of separate lobby name and type: OpJoinLobby, OpJoinRandomRoom. Old methods marked obsolete. + Added: New overloads in LoadbalancingClient for OpJoinOrCreateRoom, OpCreateRoom, CreateRoom with parameters packed in RoomOptions class. Old methods marked obsolete. + Breaking: LoadbalancingClient.CreateRoom parameters changed to (string roomName, RoomOptions opt). + Internal: Removed obsolete LoadBalancingPeer overloads of OpCreateRoom and OpJoinRoom + Internal: Added 'onGameServer' parameter to LoadBalancingPeer OpCreateRoom, OpJoinRoom; used to avoid sending extra data to master (player- and room-props) + Internal: Loadbalancing Room constructor(string roomName, RoomOptions opt). + Internal: Added use of the "JoinMode" parameter which is used in context of Turnbased games. + Fixed: Bug in OpLeaveLobby which joined the default lobby instead of leaving any lobby. +General: + Fixed: Server ports were read as short, which was wrong. We now use the correct unsigned short to convert from the address string). + Fixed: A minor issue in the SupportClass ToString conversion which used a Hashtable's key type instead of the value's type in one place. + +*** Version 3.2.2.4 (21. March 2014 - rev2519) + Internal: For Unity, the classes that handle native sockets can now be compiled in a variant that does not actually reference the native-socket-libs. The dll for PUN+ uses native sockets and need the native libs. Any regular dll will have the (not used and empty) classes for build-compatibility reasons. + Added: Values to enum EventCaching: SliceIncreaseIndex, SliceSetIndex, SlicePurgeIndex and SlicePurgeUpToIndex. They are in Lite but used in LoadBalancing. This is likely to be cleaned up in the next major release. + Changed: EventCaching MergeCache, ReplaceCache and RemoveCache as they belong to an outdated form of caching. The "RoomCache" is the better option in any case. +LoadBalancing: + Added: RaiseEventOptions class. It's used for OpRaiseEvent to avoid further parameter- and overload-clutter for this operation. While it's still not optimal for all cases, the fields in the RaiseEventOptions class are hopefully more clear how to use. Maybe some constructors will be added soon. + Changed: All OpRaiseEvent variants, except the one with RaiseEventOptions is now obsolete. + Added: Event Cache Slicing. Cached events can now be organized into "slices" which allows you to handle them in chunks. You can purge events in specific slices (e.g. get rid of the previous game-rounds events). +Turnbased: + Added: RaiseEventOptions.ForwardToWebhook which allows you to forward an event to a webhook (to be defined in Dashboard). Use this rarely, as it has an impact on (server) performance! + +*** Version 3.2.2.3 (18. February 2013 - rev2493) + Added: const PhotonPeer.NoSocket, so programs using our assemblies can detect if they must provide an external SocketImplementation. Some builds avoid using the Socket class (cause Unity Free doesn't support it on all platforms). + Added: PhotonPeer.SendMessage method in order to send any serializable object to server. + Added: IPhotonPeerListener.OnMessage in order to be notified about getting message from server. + Added: new 'Connect' method, which accepts as third parameter any serializable object. You may use this object on server before creating peer. + Added: OnMessage callback to samples + Changed: TCP and UDP both set the socket to null explicitly in Disconnect(). Hopefully this fixes a misbehaviour in Unity Editor which locked up often. + Changed: SocketTCP now has a syncer object and locks in Disconnect(), so only one Disconnect call can be made anytime. + Fixed: Nullreference when calling DispatchIncomingCommands() before Connect(). This was due to a (new) use of the socket wrapper. Commented this out until needed. + Fixed: Nullreference when calling SendAcksOnly() before Connect() with a new non-null check. + Fixed: breaking issue in Hashtable replacement class. Enumerators used in 2 "foreach" loops were breaking with a nullreference. Fix: No caching of enumerator. + Changed: AutoJoinLobby now uses this.CurrentLobbyName and this.CurrentLobbyType to join a specified lobby. + Changed: EnetPeer.StopConnection will always reset the state to be able to re-connect. + Changed: Disconnect() in SocketTcp and SocketUdp sets this.socket = null, even if socket.Close() caused an exception. This is what was expected. + Added: SocketUdpNativeDynamic and SocketUdpNativeStatic to "regular" Unity Lib, to improve compatibility in Unity for different export platforms (with and without native sockets). + +*** Version 3.2.2.1 (17. October 2013 - rev2335) + Note: This lib contains a lot of breaking changes and socket handling has been refactored. By now, this is well tested and confirmed working. + Changed: The way sockets are handled and added native-socket-lib support. There is a new IPhotonSocket interface which even allows to use external classes as socket wrapper. + Added: SocketImplementation property to set a class as socket implementation (Unity. sets native implementation or c# socket at compile time) + Changed: Win 8 RT and Phone now use fewer separate classes and files. Instead, more files from the (regular) DotNet client are used. RT and Phone are now part of the trunk folder in our SVN. + Added: TrafficStats.TimestampOfLastAck and .TimestampOfLastReliableCommand + Changed: Handling of server-side shutdown (a form of TCP disconnect) is now handled specifically as server-side-disconnect (was: generic receive exception) + Added: If a UDP connection times out in a client, it sends a special flag in it's disconnect command (to the server). This enables us to detect which side is triggering timeouts more often (and we can improve things). +LoadBalancing API + Fixed: issue where we called a virtual member from a constructor (http://confluence.jetbrains.com/display/ReSharper/Virtual+method+call+in+constructor) + Changed: LocalPlayer is now a property which checks null and returns a new Player (via virtual CreatePlayer) on demand. + Added: OpJoinRoom now optionally creates a room if parameter "createIfNotExists" is set to true and the room didn't exist. Room properties can't be set "on create" this way. LocalPlayer.IsMasterClient will be true. + Added: When OpJoinRoom can create a room, it also won't define which properties go into the lobby. You can use the new Room.SetPropertiesListedInLobby(). + Added: You can pass a actorNumber to OpJoinRoom when you re-enter a room and want to reclaim a specific actorNumber in that room. In best case, the client can re-join after a disconnect/crash and seamlessly go on playing. + +*** Version 3.2.1.6 (15. August 2013 - rev2272) + Changed: The library for Unity now contains a ExitGames.Client.Photon.Hashtable to be compatible with Win 8 exports. This must be used from now on! + Note: In Unity, the compiler will complain about ambiguous Hashtable definitions. To solve this, add this to the "using" part of your code: using Hashtable = ExitGames.Client.Photon.Hashtable; + Removed: Builds for Silverlight and Windows Phone 7.1 (this is not affecting Windows 8 RT and Windows 8 Phone SDKs which are of course supported) + Fixed: A null-reference check for a TCP connection's SendAcksOnly(). + +*** Version 3.2.1.5 (06.08.2013 - rev2242) + Added: Steam and Facebook entries to CustomAuthenticationType enum. + Fixed: Potential nullreference exception in TCP SendAcksOnly() code. If called before Connect(), this always failed. + Updated: Replacement classes for datatypes not supported on some platforms (Hashtable mostly). + Added: Hashtable got a new GetEnumerator that returns a IDictionary just like the standard Hashtable does. + Changed: Constructor with int InitialSize now calls the matching base constructor. + Removed: Synchronized() method which didn't do much and is not used. + Changed: ToString is now an override instead a "new" method. + Changed: DataTypes.cs: the Stopwatch is only implemented for Silverlight (non Windows Phone 8) + Updated: Description. + Changed: Protocol to expect Hashtable always providing a DictionaryEntry. Related to change in DataTypes.cs. + Changed: Protocol now has conditional "Dictionary" detection. In WP8 the API is different for that. Uses #if WINDOWS_PHONE. same file now works in W8 and WP8. + Changed: Removed PRPCAttribute from SupportClass.cs. This is used only in PUN and needs conditional per-platform compilation anyways, so it gets implemented there. + Removed: surplus debug output in ReceiveIncomingCommands(). + Fixed: Debug output in FetchServerTimestamp() depended on the Thread calling the method. Correct: The output is enqueued and dispatched later on. + Fixed: FetchServerTimestamp no longer fails with a SendError when the state is not "Connected". + Internal: Metro-Alike project now uses DataTypes.cs of Silverlight (like everyone else). Removed surplus copy. + Internal: DataTypes.cs and Protocol.cs files can now be used in DotNet 3.5, Windows Store and Windows 8 Phone. + Internal: outdated compiler-definitions "Photon" and "METROALIKE". + +*** Version 3.2.1.4 (10.07.2013 - rev2209) + Added: "Typed Lobby" API. Photon Cloud and Loadbalancing now support multiple lobbies per app/title. Also, different types of lobbies are now possible, each can have different options and different rules for matchmaking. + Added: enum LobbyType with "Default" and "SqlLobby". The SqlLobby is a new type of lobby that uses up to 10 room properties with sql-like filters. The filter being written like the "where" part of a sql query. + Changed: FetchServerTimestamp now enqueues callbacks (can be called by socket-receive-thread). also no longer causes a disconnect callback if offline + Changed: RemoveSentReliableCommand now enqueues callbacks (can be called by socket-receive-thread) + Internal: SendAcksOnly override in TCP's TPeer class. This now sends pings but nothing else. That resets the server's timeout for this peer +LoadBalancing API + Updated: LoadBalancing API in the Unity demos (now gets copied over at build time, making sure it's identical to the DotNet "original") + Fixed: LoadBalancingClient now handles SecurityException and InternalReceiveExceptions and disconnects correctly. Before, especially Unity web clients would get stuck in "Disconnecting" state. + Fixed: LoadBalancingClient state on disconnect (no matter what caused the disconnect). + +*** Version 3.2.1.3 (19.06.2013 - rev2170) + Fixed: surplus conversion of incoming data to string, which was used in debugging. + +*** Version 3.2.1.2 (17.06.2013 - rev2160) + Fixed: custom auth will send custom auth parameters if any authentication params are set + +*** Version 3.2.1.1 (10.06.2013 - rev2148) + Added: new POST value for Custom Authentication. POST can carry more data than GET (usually used). AuthenticationValues has a setter for this. +LoadBalancing API + Changed: LoadBalancingClient.AuthValues is renamed to CustomAuthenticationValues property (sets the custom authentication values). + Changed: Player class now compares by ActorNumer (assigned by server) instead of comparing the instance. + Internal: SupportClass.GetMethods() now returns type.GetRuntimeMethods(), filtered by attribute (if at all needed). This is used by Photon Unity Networking (PUN) internally. It also returns inherited methods now, not only Declared. + +*** Version 3.2.1.0 (24.05.2013 - rev2112) + Added: Feature "Custom Authentication" which lets you authorize players/users in the Photon Cloud with an external account/user service. More on that online: http://doc.photonengine.com/photon-cloud/CustomAuthentication + Added: LoadBalancing API Feature "Friend Finding" which enables a client to find friends in rooms by userId. If an external service provides a userID per player and a friend list, this can be used to find a friend's room (game) and join it (unless closed or full). + Added: CustomAuthenticationType enum to enable differnt types of custom auth later on (only one actually useful value so far). + Added: Class AuthenticationValues as container for authentication values. + Added: LoadBalancingClient.Connect overload which takes a AuthenticationValues parameter. + Added: LoadBalancingPeer.AuthValues property to set the custom authentication values. + Added: Parameter authValues to OpAuthenticate. This is used to provide the authentication parameters and or the secret/ticket provided by Photon. + Added: ErrorCode.CustomAuthenticationFailed to be used in switches for OperationResponse.ErrorCode (for OpAuthenticate). + Changed: LoadBalancingClient.PlayerName can be set before connecting to get a UserId which is "findable" by OpFindFriends(). Find friends does NOT use any values set for custom authentication! + Added: Class FriendInfo to contain a friend's name, online state and room name (if available and after using OpFindFriends()). + Added: OpFindFriends() to actually find the friends. Use on the Master Server only, not on a room. + Added: LoadBalancingClient.FriendList, a List of FriendInfo entries. Filled by using OpFindFriends (don't modify this list directly!). + Added: LoadBalancingClient.FriendListAge, to let you know how old the FriendList is. Only get updates when the list gets "old". + Fixed: OpRaiseEvent will no longer send "group" if it's 0 (which is the default). + Added: OpRaiseEvent overload to send object instead of Hashtable. This overload uses another parameter order to not mix up with the older implementation. You can send any serializable datatype now but must be aware if the event is Hashtable or something else. + Changed: Several variants of OpAuthenticate(), Connect() and ConnectToMaster() are now obsolete or removed. Use the alternative implementations (which should be cleaner). + Internal: Added several (operation) parameters to enum ParameterCode: ClientAuthenticationType, ClientAuthenticationParams, FindFriendsRequestList, FindFriendsResponseOnlineList, FindFriendsResponseRoomIdList. + Added: PhotonPeer.ResentReliableCommands to get count of re-sent commands (might be higher than out command count (as that counts created commands only) + Internal: Address (string) handling now uses string.Split instead of IndexOf to separate port from address and short.TryParse instead of short.Parse + Added: TrafficStatsGameLevel.ResetMaximumCounters() to reset those values that could max-out easily. Allows to get "longest delta between SendOutgoingCommands()-calls since last query". + +*** Version 3.2.0.2 (21.02.2013 - rev2066) + Fixed: Potential lock-up during sending. This could cause infinite blocking and thus a crash in some apps. (Win8 / Win Store api only) + +*** Version 3.2.0.1 (15.02.2013 - rev2060) + Fixed: Issue with delayed sending of operations in udp. The data could become overwritten before being sent. The bug was leading to high disconnect rates for clients using Windows Phone 7 and 8 and Silverlight or any client that used Network Simulation. + +*** Version 3.2.0.0 (13.02.2013 - rev2053) + Note: This release only changed the version, matching the new Server SDK v3.2.0.0 + Updated: readme.txt + Fixed: Reference for Windows 8 RT and Windows Phone 8 SDKs. + Added: Particle Demo to Unity Client SDK. + +*** Version 3.0.1.18 (11.02.2013 - rev1998) + Added: Optional per package CRC checksums to filter out compromised packages (avoiding more issues, compared to reading bad values). + Added: PhotonPeer .CrcEnabled and .PacketLossByCrc to handle CRC and get the count of affected (incoming) packages. + Note: Checking packages with CRC will take some computation time. Consider this an option to detect if/why someone's connection is bad. It's likely not good to be enabled by default. +Windows 8 RT & Windows 8 Phone: + Fixed: Serialization of foat and double values. These caused exceptions when used in object-arrays. + +*** Version 3.0.1.17 (19.12.2012 - rev1946) + Added: New Platform: Mono 4 Android. Please check the Readme.txt for hints how to build the demo in Mono 4 Android. + Changed: The referenced DotNet assemblies used by our libraries, which makes ours compatible with Mono 4 Android and others. + Changed: The Particle Demo Logic to also handle events sent by JavaScript clients. In case these are used, the types used in event differ from what DotNet or other clients send. + Changed: PhotonPeer.LocalTimeInMilliSeconds property now uses SupportClass.GetTickCount(). That method is using Environment.TickCount (which can be replaced if needed). + Changed: Any place that directly used Environment.TickCount (as the way SupportClass.GetTickCount() gets the value can be replaced). + Renamed: GetLocalMsTimestampDelegate is now: SupportClass.IntegerMillisecondsDelegate (rarely used if at all). + +*** Version 3.0.1.16 (29.11.2012 - rev1923) + Internal: A client timeout now internally sets connectionState to Zombie and then calls Disconnect() instead of stopping the connection right away. + Changed: Disconnect() sends a disconnect-command in any case (except not connected or disconnecting). If the connection is not in state connected anymore, said command is unsequenced (unreliable) and the disconnect is locally executed immediately as call to StopThread(). As before, disconnecting and disconnected clients won't send this. + Changed: Ping creation is now more strict and checks also if any reliable commands are outgoing AreReliableCommandsInTransit(). this avoids a few pings. + Fixed: NullReference exception in StopConnection() if it's called before being connected for the first time (late object creation made this fail). + Changed: PhotonPeer.LocalTimeInMilliSeconds property now uses SupportClass.GetTickCount(). That method is using Environment.TickCount (which can be replaced if needed). + Changed: Any place that directly used Environment.TickCount (as the way SupportClass.GetTickCount() gets the value can be replaced). + Renamed: GetLocalMsTimestampDelegate is now: SupportClass.IntegerMillisecondsDelegate (rarely used if at all). + + +*** Version 3.0.1.15 (27.11.2012 - rev1917) + Note: Silverlight SDK release only! + Updated: Silverlight projects with proper references (hopefully). In case you wonder: Some projects are included even though only their (source) files are linked in Silverlight. We can't reference DotNet projects directly, so we use the (shared) files instead. + Updated: Silverlight Particle Demo now has a basic gui and hopefully helps with your first steps. + +*** Version 3.0.1.14 (16.11.2012 - rev1891) + Added: Interest Groups! In rooms, you might send events to an interest group, identified by a byte (255 groups are currently allowed). OpChangeGroups lets you add or remove groups you're interested in. + Added: New platform! Welcome Windows 8 RT and Windows Phone 8. Both are "preview" releases but based on the stable DotNet basis we have. + Note: The Windows Phone 8 SDK does not yet have a LoadBalancing demo but the API is available (Windows Phone 8 is separate from the still existing Windows Phone 7.1 SDK). + Added: Another new platform: Playstation Mobile! This is Sony's SDK for mobile platforms. Find out more about it: www.playstation.com/psm + Added: Silverlight 4 SDK is back. Now with LoadBalancing API (the demo implementation is not finished but the basic "logic" is running). + Fixed: Windows Phone 7 and Silverlight TCP error handling while connecting to the server. This should fix issues with failing connects due to missing policy settings. + Internal: Windows Phone 7 and Silverlight TCP connections now set their state a bit differently (this doesn't affect the workflow though). + Internal: Http implementation now checks if a Proxy was set deliberately. Check is: (WebRequest.DefaultWebProxy as WebProxy != null). + Internal: DispatchIncomingCommands() now avoids copying lists when checking for commands that need a repeat. + Internal: SendOutgoingCommands() now re-uses a buffer to create UDP packages in before sending. This should save a lot of memory allocation. +LoadBalancing API: + Added: New demo "Particle". You will notice it's similar to the "Realtime Demo" but LoadBalancing- and Cloud-compatible and it makes better use of the default features. Check out Particle "Logic". + Added: LoadBalancingClient.DisconnectedCause to track certain disconnect causes (no matter if the connection or an operation caused the disconnect). + Added: DisconnectCause enum to enumerate those disconnection causes. + Changed: LoadBalancing OnOperationResponse() and OnStatusChanged() to track most disconnect reasons (in DisconnectedCause). + Removed: LoadBalancing Connect() variants that essentially were duplicates of others. + Changed: LoadBalancingClient debug output now goes to: Debug.WriteLine (which is available in debugger, while Console is not always). + Changed: CacheProperties method is now virtual for Room and Player. This allows you to override it and use this as callback to update props. + Added: Player.Tag to store arbitrary (game) data with the Player. Put in (e.g.) a player's representation/avatar or similar. + Added: ErrorCode constants MaxCcuReached and InvalidRegion. These are important for the Photon Cloud. + Added: Handling for DisconnectedByUserLimit. This is a status of OnStatusChanged when a Photon Server License's CCU limit is reached. This no longer will try to connect to a Game Server (where it gets rejected, too). + Changed: Debug output of loadBalancingClient now goes to Debug.WriteLine (which is available in debugger). + Changed: API now uses a factory method to create Room instances (this makes it possible to extend the Room class and instantiate the new class instead). + Changed: The Player constructor now has an "actorProperties" parameter and will cache the provided properties. This makes sure actor-props are available locally. +Windows Phone 8: + Added: Demo for Cloud / LoadBalancing. The Particle Demo only has a special WP8 GUI and links it's logic from a separate project (read: folder). +Windows 8 RT: + Added: Demo "Phong", which is a simplified, basic multiplayer game. It's focus is to show how to sync data, not to make it super smooth and error free. Let us know any issues but bear with us as it isn't fully featured. + +*** Version 3.0.1.13 (26.09.2012 - rev1731) + Fixed: Internals of method DispatchIncomingCommands() for UDP. In some cases this removed commands from a dictionary inside a foreach loop (which causes an Exception due to changing the dictionary) + Added: Support for Dictionary<,>[]. This is not a very lean way to send data (especially when using ) but if needed, it now works + Changed: Replaced several foreach loops with for loops (it doesn't change usage but in Unity exports to iOS, foreach uses more memory than for) + Added: Doc for public methods in Protocol class (they are useful to quickly write values into an existing byte-array) + Fixed: Unity UDP send code: iOS 5 devices will kill a socket when the power button is pressed (screen locked). This case was not detectable by checking socket.Connected. + Added: Unity UDP send code: Now tries to open another socket to refresh/keep the connection. This is affected by timeouts still, of course (as are all connections). + Internal: locked usage of UDP / enet channels + +*** Version 3.0.1.12 (26.07.2012 - rev1683) + Changed: The DotNet client libraries are now Thread safe! You could start a background Thread to keep calling SendOutgoingCommands in intervals and still call it from a game loop, too + Changed: Due to the thread safety, the demos no longer use excessive locks. This is now solved by the lib, more streamlined and hidden. One Thread is used instead of Timers (which could fire concurrently if execution was longer then their interval) + Changed: Moved the enable/disable property fro NetworkSimulationSettings to PhotonPeer.IsSimulationEnabled (this should now be thread safe) + Changed: NetworkSimulation will create and keep one thread when you first enable it in a (debug) client. Disabling it, will execute any delayed action immediately (in IsSimulationEnabled!) and pause the simulation thread + Changed: All demos are updated. We assigned new event codes (starting at 0, like any developer's code should) and extended the comments. Check them out + Changed: All Loadbalancing demos are now using the same DemoBasisCode linked in, so it can be changed in one position. Where needed an extension is made + Updated: comments / documentation for LoadBalancing API, Lite API and basic Photon API (basically anything public) + Changed: SupportClass.NumberToByteArray is now obsolete. It can be replaced with Protocol.Serialize() easily and that is performing better + Fixed: Windows Phone UDP socket was sending a full package of zeros on connect. It didn't break anything but is not needed, of course. + Fixed: SupportClass.StripKeysWithNullValues method was prone to throw an exception +LoadBalancing API: + Changed: LoadBalancingClient.OpLeaveRoom() skips execution when the room is null or the server is not GameServer or the client is disconnecting from GS already + Note: LoadBalancingClient.OpLeaveRoom() returns false in those cases and won't change the state, so check return of this method + Fixed: workflow for authentication (which should be called only once per connection, instead of "any time we establish encryption) + +*** Version 3.0.1.11 (05.06.2012 - rev1569) + Fixed: Udp issue with channels and unreliable commands. Unreliable commands of one channel were discarded, when another channel had unreliable commands, too + +*** Version 3.0.1.10 (04.06.2012 - rev1561) + Fixed: TCP connection issues for DotNet and Unity (Silverlight and WindowsPhone are different) + Fixed: DotNet+Unity TCP send calls with 0 bytes to send (this was ignored by the socket but useless anyways) + Moved: DNS resolution and socket.Connect() are now handled in the connection thread (TCP in DotNet and Unity) + Fixed: Issue with (TCP) socket connections being closed directly while connecting. in this case, socket.Receive() might receive 0 bytes instead of blocking until more bytes are available. without sending anything, the socket never updates its .Connected state and never throws a Exception. now we send a ping and thus trigger a exception + Fixed: Some documentation errors (due to changed API, etc) +Loadbalancing API: + Changed: LoadBalancingClient.OnEvent() now uses a join-event's actornumber-list to create Player instances for anyone who wasn't created as Player before + Fixed: LoadBalancingClient.OnEvent() handling for join-event does not expect any actor/player properties anymore (which fixes a potential null-reference exception when not even a name is set) + +*** Version 3.0.1.9 (10.05.2012 - rev1512) + Fixed: Reference to project in Windows Phone SDK + +*** Version 3.0.1.8 (09.05.2012 - rev1508) + Fixed: The OpJoinRandom of the LoadBalancingAPI failed to filter rooms for their custom room properties. Instead, any room matched. This is fixed now. + Added: New Demo for Windows Phone: Cloud Basics + Changed: The loadbalancing / cloud-based demos are refactored to share a similar codebase + +*** Version 3.0.1.6 (07.05.2012 - rev1489) + Note: This is a "stable" release, containing only a few updates. The bulk of changes are in the "odd" numbered releases. Read those updates carefully. + +*** Version 3.0.1.5 + Changed: adopted the even/odd version numbering system. versions ending on a odd number = intermediate/in-development version, even number = released (that makes 3.0.1.5 a intermediate) + Fixed: When NetworkSimulation is disabled, all remaining packages are sent/received immediately (ignoring the former delays) + Note: NetworkSimulation should be working nicely now. Be aware that sudden, additional lag might (!) lead to a disconnect. Play with the settings to find out which ones work for you + Changed: Protocol class now has a few methods to (effectively) serialize some datatypes to arrays (and into existing arrays) + Removed: Surplus public methods from Protocol that were "type-named" like SerializeFloat. The functionality is in still with overloaded methods + Added: count of packages (requests) outgoing if TrafficStatsEnabled +Demo Realtime: + Changed: The commandline arguments are now server:port, protocol (udp,tcp,http), reliable sending, interval dispatch, interval send, interval move. Example: localhost:5055 Udp false 15 25 15 + Changed: Demo Realtime: If the commandline sets an unknown protocol, the client shows a message and closes gracefully + Changed: Demo Realtime: The demo now starts in the grid view (showing something). Local player and player list are created with the Game instance. Player startpoint is randomized. +Loadbalancing API: + Renamed: LoadBalancingClient.lbPeer to .loadBalancingPeer + Fixed: LocalPlayer.SetCustomProperties() usage + Added: Service() method, which calls the LoadBalancingClient's Service simply + Changed: LoadBalancingClient is no longer extending LoadBalancingPeer but instead using one + Changed: the many overloads of Operations are gone in LoadBalancingPeer to streamline the api + Changed: ActorProperties are no longer set via JoinRoom, JoinRandomRoom or CreateRoom. instead, set the properties in the LocalPlayer and let the LoadBalancingClient send and sync them where necessary + Fixed: MasterClientId is now 0 when there are no more players in the room (it was set to int.max before) +Internal: + Changed: all DispatchIncomingCommands now use a while loop to dispatch the ActionQueue (in the hope this is the fastest way to do it) + Changed: DispatchIncomingCommands now looks for the received unreliable command with lowest unreliable seqNr to dispatch this + Changed: DispatchIncomingCommands discards commands if the reliable OR unreliable sequence is beyond the command's sequences + Changed: DispatchIncomingCommands now truncates the incoming unreliable commands to limitOfUnreliableCommands (if that's > 0) + Changed: the next reliable command to dispatch is now fetched with Dictionary.TryGetValue() (for being faster) + Changed: no longer using BinaryReader streams anywhere (this should improve speed and reduce mem usage) + Changed: PeerBase accordingly + Changed: Unit test MyType de/serialization now supports null-references (as 1 byte being 0) + Changed: Protocol.SerializeOperationRequest is now used in the same way, no matter if request is "top level" or inside some other datatype + Changed: the peer bases accordingly to use only one SerializeMemStream and lock it + Changed: how encryption fits in to the new serialization (it is a special case, as only the operation bytes get encrypted) + Added: Protocol.SerializeParameterTable() as requests, events and responses all use the same way to write their parameters + Changed: SerializeOperationToMessage parameter order + Changed: Order of Protocol methods to make more sense (from byte to more complex types for serialization) + New: PhotonDotNet library prototype for windows 8 metro + +*** Version 3.0.1.3 (13.04.2012 - rev1430) + Known issues: The Network Simulation is currently not guaranteed to work properly. Please bear with us. + Note: the following change might be a breaking one: + Changed: When dispatching a server's disconnect-command, the state is changed to ConnectionStateValue.Disconnecting BEFORE any callback due to state change is called. This should disallow game-code from calling any operations immediately. + Changed: Many internals. This should result in better performance + Changed: Service() now calls SendOutgoingCommands() until send-queues are empty. This might take more time but gets important commands out. If you need more control, Service() can be replaced with DispatchIncomingCommands and SendOutgoingCommands! + Added: null check to GetEndpoint() to avoid issues when the host address is null + Fixed: queueIncomingCommand() debug out message when a command is being received AND in in-queue (the list it accesses is now a dict) + Added: new "vital" stats to TrafficStats + Added: LongestOpResponseCallback and LongestOpResponseCallbackOpCode (opcode and time of longest callback) + Added: LongestEventCallback and LongestEventCallbackCode (event code and time of longest callback) + Added: LongestDeltaBetweenDispatching and LongestDeltaBetweenSending to detect "gaps" between subsequent calls of those + Added: DispatchCalls and SendOutgoingCommandsCalls to measure average call-rate + Fixed: PeerBase.TrafficStatsEnabledTime now checks if a stopwatch is set, else it returns 0 + Fixed: TrafficStatsReset() now works as intended (starting a new stopwatch, too) +Internal: + Changed: name of variable timeLastReceive. is now: timeLastAckReceive (better fit with what it does) + Internal: queueOutgoingReliableCommand() to use a lock on the channel it accesses + Internal: SerializeOperationRequest() now locks the MemoryStream while using it (avoids threading-issues with calling OPs) + Internal: SendUdpPackage() now checks if socket is obsolete (and disconnected for a reason) or not. only if not, a error is logged + Internal: EnetChannel now uses Dictionary and Queue for commands (should be faster to access) + Internal: simplified access methods in EnetChannel according to changes + Internal: outgoingAcknowledgementsList is now a Queue + Internal: receiveIncomingCommands() no longer has a local variable sentTime. instead using this.serverSentTime directly + Internal: UDP sending is now done with a synchronous socket call (profiling told us: this is cheaper) + Internal: re-using the socket arguments for receiving packages (saves some buffer allocation) + Internal: socket to non-blocking (maybe not possible on all devices) + Removed: initial-HTTP-protocol support (HTTP support not public yet) + Added: support for encryption with HTTP protocol + +*** Version 3.0.1.2 +- Added: Rooms now have a "well known" property to list the custom properties that should be available in the lobby. This can be set per room (but most likely makes sense per title/application). +- Added: LoadBalancingClient.OpCreateRoom() has a new parameter "propsListedInLobby" and Room.PropsListedInLobby is available to check this list (if needed at all). +- Added: GameProperties.PropsListedInLobby as "well known property" key +- Changed: LoadBalancingPeer.OpCreateRoom now sets ParameterCode.CleanupCacheOnLeave to true by default. This makes the server clean a player's event cache on leave. +- Added: SupportClass.DictionaryToString() will now print values of string[] and optionally leaves out type information. +- Note: 3.0.1.1 didn't get it's own SDK, so read that version's changes, too + +*** Version 3.0.1.1 +- Added: PhotonPeer.TrafficStatsElapsedMs, which gives you the milliseconds that the traffic stats are enabled. This internally uses a stopwatch (for now) which might not be available on all platforms. Please report if this new SDK causes issues. +- Added: PhotonPeer.TrafficStatsReset() to reset the traffic stats and the timer. This could be useful to get stats of "in game" versus "out of game". Note: Loadbalancing includes frequent server-switching and each disconnect/reconnect causes a reset. +- Changed: In LoadBalancingPeer EventCode.SetProperties is obsolete and replaced with EventCode.PropertiesChanged. Please switch to new constant. +- Added: Support in LoadBalancingAPI for Player.IsMasterClient. For this, the Players now get a RoomReference set (when added). The active player with the lowest ID is the master (per room). +- Added: Room.MasterClientId, which is updated when new players are added or the current master is removed. +- Added: SupportClass.DictionaryToString() has an overload which doesn't "print" the Type per key/value. +- Added: Loadbalancing API overload for OpJoinRandomRoom(...) taking additional parameter 'playerProperties' +- Added: Loadbalancing API CacheProperties() and Room.GetPlayer() are public now +- Added: LoadBalancingClient will now handle ExceptionOnConnect and keep clients from re-connecting if establishing a connection fails +- Note: The following changes affect only HTTP, which is an upcoming option for connections. So far, the public server SDKs don't support this. Feel free to contact us about it. +- Added: setter for PhotonPeer.ServerAddress to allow setting a http url (even while connected) +- Added: PhotonPeer.HttpUrlParameters setting parameters to be added to end of url (must begin with '&') +- Added: HttpUrlParameters to PeerBase +- Added: HttpUrlParameters is now attached to the end of a URL in http usecase +- Added: "Http2" support to Unity library +- Internal: method HttpBase.ConnectAsync is no longer needed and Request() is now directly passed to thread + +*** Version 3.0.1.0 +- Added: Loadbalancing (Cloud) Features +- Added: Project with the Loadbalancing sourcecode for DotNet, WindowsPhone and Unity3d (usable without PUN) +- Added: Initial, simple Loadbalancing demos for each platform (will update and extend those) +- Note: The API of the client libraries didn't change. The new features were added on top of the known API +- Added: VS2010 solutions for DotNet and Windows Phone SDKs containing the demos and APIs in the package +- Added: readme.txt with initial help to setup the Cloud/Loadbalancing demos +- Added: default appId for Loadblanacing demos: "" + +*** Version 3.0.0.10 +- Added: When UDP StartConnection (internal method) fails, callbacks to OnStatusChanged(StatusCode.Disconnect) are now done additionally to the SecurityExceptionOnConnect and ExceptionOnConnect calls. This happens direcly inside PhotonPeer.Connect()! +- Changed: When Unity UDP implementation fails to connect due to missing DNS resolution, it now also calls OnStatusChanged(StatusCode.ExceptionOnConnect) +- Removed: StatusCode.Exception_Connect value (obsolete, replaced by ExceptionOnConnect, same value) +- Fixed: Http connections (DotNet & Unity) now skip results while in disconnected state +- Fixed: Http connections (DotNet & Unity) now ignore results after a disconnect and reconnect was done (this applies only to HttpBase, not HttpBase2) +- Fixed: misleading debug out (pointing to WindowsPhone while the class is now in general use) +- Changed: DotNet UDP connection now only logs socket errors if the connection isn't obsolete (disconnected) already + +*** Version 3.0.0.9 +- Fixed: issue with HTTP connections and EstablishEncryption() +- Changed: ActionQueue is now a Queue, allowing Dequeue in a while loop instead of foreach(i in list) and clear() +- Changed: Unity HttpBase DispatchIncomingCommands() to make use of the queue +- Fixed: init byte[] length (internal. did not have consequences) +- Fixed: LitePeer OpRaiseEvent() was sending encrypted +- Internal: ContainsUnreliableSequenceNumber() check if reliable list needed sorting +- Fixed: Unity/Silverlight bug with encryption. Their implementation of BigInteger.GetBytes() failed when the 2nd, 3rd or 4th of the first 4 bytes was 0 but the previous wasnt. This led to incompatible secrets. +- Changed: TCP socket sending debug output now checks debuglevel (when send is skipped, cause the sender is obsolete already) +- Added: caching option RemoveFromRoomCacheForActorsLeft = 7 +- Internal: Added another http-based communication protocol. Please note: The fitting server's are not yet publicly released. This does not affect UDP or TCP protocols. + +*** Version 3.0.0.8 +- Fixed: Udp fragment reassembly in case fragments are received out of order and incoming queue was not yet sorted +- Fixed: Handling of incoming reliable commands (udp) which were skipped in some cases, if not received in order +- Fixed: Network simulation issue which caused lost incoming commands +- Fixed: Demo Realtime. protocol is now again Udp, fitting the default server address "localhost:5055" (make sure to build the demo with your server's address if Photon is not on the same machine) + +*** Version 3.0.0.7 +- Changed: Udp socket usage for Unity 3d lib. Both threads (send (in game loop) and receive (separate)) now have minimal locks while using the socket +- Fixed: SendOutgoingCommands now returns true if anything didn't make it into the outgoing UDP package +- Internal: TCP connections also skip network simulation when it's turned off + +*** Version 3.0.0.6 +- Fixed: SendOutgoingCommands now returns true if commands are remaining in outgoing queues (UDP only sends one package per call, TCP will send anything outgoing). +- Added: New "RoomCache" for Events. The EventCaching enum allows you to use it. Events in this cache will keep the order in which they arrived in the server. A filter makes deleting them very flexible. +- Internal: Ability to make lib send only ACKs and nothing else. This is probably a temp solution as it might be better to make sending and calling ops completely thread safe. +- Internal: PhotonPeer.IsSendingOnlyAcks, which is locked with the sending (not changing while sending). This makes SendOutgoingCommands() thread safe, which is good if you need a separate thread to keep connection. You could call operations while sending. +- Internal: Unity3d's connection now also syncs socket usage + +*** Version 3.0.0.5 +- Fixed: ObjectDisposedException in DotNet UDP workflow. This was caused by disconnecting while incoming data was processed (and before the next datagram was accepted) +- Added: PhotonPeer.LimitOfUnreliableCommands property. This helps you skip potentially "outdated" unreliable commands (events), which helps if you couldn't dispatch for a while +- Internal: Minor performance improvements. Example: The check if network simulation is turned on is done earlier in the workflow, which avoids a bit of overhead + +*** Version 3.0.0.4 +- Fixed: Tcp connections have been throwing ArgumentNullException in DispatchIncomgingCommands() if they were not connected yet +- Internal: Adjusted Http client to server rev2360 + +*** Version 3.0.0.3 RC2 +- Internal: Communication with HTTP server is WIP (Work In Progress - not a publicly available feature) + +*** Version 3.0.0.2 +- Fixed: OpRaiseEvent overload with EventCaching and ReceiverGroup parameters was not sending the customEventContent as expected. This was always null. +- Fixed: Time fetching case where no time was accepted. Servertime is now accepted, if the fetch-time-command was less or equal as the current roundtrip time. Avoids issues if rtt is exceptionally low immediately. +- Internal: When using multiple channels, dispatching incoming commands now will continue with the next channel, if one doesn't yet have the next reliable command (reliable sequence of one channel does not affect others) +- Internal: Changed protocol for TCP and message headers. This will support bigger message sizes. Also changed debug out related to unknown headers. +- Internal: Changed handling of TCP receive-callbacks for unfinished messages in Silverlight and WP. This should fix handling of very big data that's received in multiple "chunks" +- Internal: Http messages are now deserialized the same way that content in tcp or udp is handled + +*** Version 3.0.0.1 RC1 +- Fixed: Packaging of SDK now includes all files in demo folders, except a list of ignored file-endings (xaml and jpg files were missing in previous Silverlight and WindowsPhone SDKs) + +*** Version 3.0.0.0 RC1 +- Changed: Filenames! Now include a '3' for Photon v3. Update your references! Also, Silverlight libraries now use "Silverlight" in the filename (was: SL) +- Changed: Versioning. A dll's version has now 4 digits. The first 2 match Major and Minor number of the Server SDK. The latter 2 are Release and Build respectively +- Changed: Silverlight DataTypes (like Hashtable) are now in namespace ExitGames.Client.Photon. This is easier to include (as that namespace is in "using" in most cases) + +*** Version 6.4.5 +- Changed: Parameters for OpCustom are now of type Dictionary, making sure that only byte-codes are used for parameters +- Changed: Most IPhotonPeer names (to match those in server code): EventAction -> OnEvent, OperationResult -> OnOperationResponse, PeerStatusCallback -> OnStatusChanged +- Added: SupportClass.DictionaryToString(), which converts the content to string (includes support for Hashtables) +- Moved: Definitions of Lite and Lite Lobby specific codes for Parameters, operations and events are now in LitePeer. Will be available as source and could be replaced +- Changed: Usage of codes in Lite and Lite Lobby. Now pre-defined codes are starting at 255 and go down. Your events, operations and operation-parameters can now start at 0 and go up without clashing with pre-defined ones +- Changed: Constants that are non-exclusive (like event codes and OpKeys, which can be extended) are no longer "defined" as enums but as class of const byte values. Less casting but also less convenient "name" representation in debug output +- Added: LiteEventKey.CustomContent as key to access the content you sent via OpRaiseEvent ("Data" seems a bit misleading but is also available) +- Changed: Namespace of LitePeer to ExitGames.Client.Photon.Lite (the Lite-specific class is still compiled into the library for convenience but can be ignored quite easily this way) +- Added: Property MaximumTransferUnit. The default is 1200 bytes. Usually this is ok. In few cases, it might make sense to lower this value to ~520, which is commonly assumed the minimum MTU. Don't change this, if you don't know why. +- Added: New classes to wrap up op-requests (OperationRequest), op-results (OperationResponse) and events (EventData). Those new classes are now used in callback methods OnEvent and OnOperationResponse +- Changed: by using the new classes (note above), the client is a bit more like the server in its naming. We didn't want to change every last bit though. +- Internal: Changed protocol (to 1.6) so that it does not require any parameter codes internally. Any application can now define any operation, parameter and event codes it wants to. +- Changed: Encryption is now triggered by you and resolved by the library. You don't have to look out for the result of EstablishEncryption and use it. Instead: wait for OnPeerStateChanged call with either EncryptionEstablished or EncryptionFailedToEstablish +- Removed: InvocationId. This concept was very rarely used but confusing. It's easy to implement, if needed. If you don't know what this means: Nevermind. +- Changed: Operation calls now return bool: if they could be enqueued or not. If enqueued (cause you are connected and the data was serializable), then SendOutgoingCommands will send those operations (as before). +- Added: Support to de/serialize Dictionary. If the types are more specific than object, the serialization writes the type-code only once (lean byte usage in protocol) +- Added: Support to de/serialize null. Enables you to send a null value, e.g. in a Hashtable +- Added: ReceiverGroup enum to select a range of players that get an event via Operation Raise Event +- Added: Event Caching. Any event sent via RaiseEvent can now be buffered on the server side and is "repeated" when a new player is joining a room. This is similar to Properties but lets you categorize your info better and works just like regular events, too. +- Added: EventCaching enum to select if an event is to be cached and how it's cached: either "not at all" (default), replacing anything cached so far (fast) or "merge" (which will add new and replace old keys with new values). Optionally, a event can be raise with option "remove". +- Added: new overload of OpRaiseEvent() with the two new parameters noted above +- Added: Support for custom de/serializer methods. By writing 2 methods to convert a object into a byte-array (and back from that), Photon now supports any custom object type (standard datatypes are still supported out of the box) +- Added: PhotonPeer.RegisterType() to register serializer and deserialize methods for a certain type. Per object, a length and one byte 'type code' are added to the serialized data +- Added: Support for non-strict object[]. Unlike strictly-typed array, here each element will carry its own type. +- Note: If you want to use the new Custom Types or the object[], you have to update your server! Older Servers don't support the new features. As long as you don't use these features, the library is compatible with previous servers. +- Added: ByteCountCurrentDispatch and ByteCountLastOperation properties to PhotonPeer (the ancestor of LiteGame, etc). A game can now access the size of operation-results and events as well as operation-call size. +- Added: Traffic statistic set: PhotonPeer.TrafficStatsGameLevel as "high level" game-related traffic statistic. Counts bytes used by operations, their results and events. This includes overhead for these types of messages, but excludes connection-related overhead +- Added: Traffic statistic set: PhotonPeer.TrafficStatsIncoming and PhotonPeer.TrafficStatsOutgoing as low level statistics of the traffic +- Added: PhotonPeer.TrafficStatsEnabled which enables two sets of traffic statistics. By default, statistics are turned off. +- Added: Classes TrafficStats and TrafficStatsGameLevel for the two statistic cases metioned above +- Changed: NetworkSimulation now starts a Thread when it becomes enabled and the thread ends on simulation disable. Disable the NetworkSimulation to stop the thread, as Disconnect does not change the simulation settings! +- Internal: Cleanup and renaming of several properties +- Internal: Each new peer increases the PeerCount but it is no longer reduced on disconnect (it is existing still, after all) +- Internal: Udp commands will be buffered when serialized. This saves some work when re-sending a reliable command +- Added: TCP Routing code (not in Silverlight). To be used when running Photon on Azure (can be ignored in regular use) +- Added: to StatusCode: TcpRouterResponseOk = 1044, TcpRouterResponseNodeIdUnknown = 1045, TcpRouterResponseEndpointUnknown = 1046 and TcpRouterResponseNodeNotReady = 1047, +- Added: override for PhotonPeer.Connect() with node +- Internal: DotNet now reads the 2 bytes routing response, if a routing request was made (also, not in Silverlight) +- Internal: If TConnect sent a routing request, nothing else will be sent until 2 bytes response are read. +- Internal: If the routing-response does not start with ProxyResponseMarkerByte = 0xF1, a debug message is enqueued and TCP will disconnect +- Internal: Init request for TCP is now always enqueued instead sent directly. This way, it can be delayed if a routing node is selected +- Internal: TPeer EnqueueInit() and SendProxyInit() now create init and routing request respectively +- Internal: TConnect.sendTcp() checks isRunning before it tries to send (the socket might close before the NetSim does). This won't be an issue anytime, still INFO-level callback to DebugReturn is done. +- Removed: debug out for "send package" situation (even on ALL-level, this is more or less spam) +- Internal: updated version numbers of init to 6.4.5 +- Changed: SupportClass HashtableToString() returns "null" if parameter is null +- Internal: Removed SortedCommandList and CommandList classes. Replaced by List and a Sort() where necessary +- Internal: EnetPeer.channels is now a Dictionary instead of a SortedList +- Internal: the channels are initialized with channel 0xff first - this makes 0xff high prio in all foreach usaged +- Internal: NCommand class is now IComparable for usage in Sort() + + +*** Version 6.4.4 +- Added: PhotonPeer.TimestampOfLastSocketReceive now provides the time when something was received. Can be used warn players of bad communication-timing even before the disconnect timeout will be happening +- Fixed: OpGetPropertiesOfActor did use the actorNrList correctly, which always got you all properties of all players + +*** Version 6.4.3 +- Changed: A udp connection timeout in Unity will now end the socket-handling thread correctly +- Changed: The thread for Network simulation is now stopped when the client disconnects and started on connection (instead of keeping it per peer) +- Fixed: Exceptions in network simulation, when Disconnect() was called soon after Connect() but before the connection was established. + +*** Version 6.4.2 +- Fixed: It was possible to send PhotonPeer.FetchServerTimestamp() before being connected properly. Now the method triggers debug output (INFO level) and the callback PeerStatusCallback(StatusCode.SendError) +- Internal: Added a lock in the UDP version of SendOutgoingCommands(). It's still illegal to access a peer from multiple threads but the follow-up issues this lock avoids are very difficult to track. +- Internal: to stay compatible with all exports of Unity, the use of System.Threading.Interlocked.Exchange was replaced by simply replacing the list's reference instead + +*** Version 6.4.1 +- Changed: The Unity library now uses the WWW class for Http based requests. Results are checked within DispatchIncomingCommands(). Important: Unity allows handling WWW requests only on the MainThread, so dispatch must be called from this context! +- Note: Photon does not support Http requests out of the box. Customers get access to a fitting server on demand +- Changed: outgoing list is now replaced on send, instead of calling remove(0) repeatedly (which takes longer). Internal: this uses System.Threading.Interlocked.Exchange to switch to a new outgoing list in one step + +*** Version 6.4.0 +- Fixed: TCP handling of incoming data. This avoids loss of data (operation-results or events) when a lot of data is incoming. +- Changed: PeerStatusCallback() is less often called for queue-length warnings (e.g.: StatusCode.QueueIncomingReliableWarning). Only if a queue has a multiple of PhotonPeer.WarningSize items. +- Changed: WarningSize is now 100 by default +- Changed: Description of PhotonPeer.WarningSize and PhotonPeer.CommandBufferSize, which really is just the initial size of any buffer. The warnings are there to avoid situations where all heap is used up. +- Changed: Naming: StatusCode.Exception_Connect is now Obsolete and replaced with StatusCode.ExceptionOnConnect +- Added: Missing summary for StatusCode.SecurityExceptionOnConnect +- Added: NetworkSimulationSet.ToString override to provide a better overview +- Added: Support for arrays of Hashtables + +*** Version 6.3.1 +- Fixed: Network simulation now delays incoming packages by IncomingLag and IncomingJitter as expected (it was using the outgoing values, too) + +*** Version 6.3.0 +- Added: Network simulation (lag, jitter and drop rate) to debug builds +- Added: class NetworkSimulationSet with properties to control network simulation +- Added: NetworkSimulationSettings.NetworkSimulationSettings property to get current simulation settings +- Changed: only the first peerId of a VerifyConnect is accepted in client (avoids surplus peerID changes) +- Internal: added PeerBase.SendNetworkSimulated() and PeerBase.ReceiveNetworkSimulated() and a Thread to run delay simulation +Siverlight: +- Updated: to Silverlight v4.0 +- Added: Encryption to Silverlight library +- Internal: updated internal BigInteger class for Silverlight +- Internal: DiffieHellmanCryptoProvider in Silverlight, so it uses AesManaged instead of Rijndael (which is not part of Silverlight 3) +- Added: Stopwatch class to DataTypes.cs (for Silverlight only) + +*** Version 6.2.0 +- Added: "Demo LiteLobby Chatroom" to Unity SDK +- Updated: Demo Realtime in Unity client SDK. It's still compatible with the demo on other platforms but cleaned up and much better commented +- Updated: Documentation is now clearer on where the Lite logic is used (it runs on Photon but is not the only application logic) +- Updated: Documentation for the enumerations in IPhotonListener. The Lite application based ones are better described and it's now clear which ones are essential to the Photon client (not only in Lite) +- Updated: Documentation in several other places +- Added: StatusCode.SecurityExceptionOnConnect which is thrown if a security exception keeps a socket from connecting (happens in Unity when it's missing a policy file) +- Added: PhotonEventKey and PhotonOpParameterKey which contain the fixed byte keys that cannot be re-assigned by applications at will (as these keys are used in the clients and server in their respective context) +- Change: PhotonPeer.PeerState is no longer a byte but of type PhotonPeer.PeerStateValue, which makes checking the state simpler. The PeerStateCallback() for state changes is still called as before. +- Changed: Property PhotonPeer.PeerState. It now converts the low level ConnectionStateValue to a PeerStateValue, which now includes a state InitializingApplication. See reference for PeerStateValue. +- Changed: PeerStateValue enum is now part of the ExitGames.Client.Photon namespace, making it more accessible +- Internal: NConnect in DotNet and Unity to catch security exceptions +- Internal: from using var to explicit type usage in DiffieHellmanCryptoProvider.cs (Mono Develop friendly) +- Internal: made const: ENET_PEER_PACKET_LOSS_SCALE, ENET_PEER_DEFAULT_ROUND_TRIP_TIME and ENET_PEER_PACKET_THROTTLE_INTERVAL +- Internal: PeerBase "PeerStateValue peerState" is now: "ConnectionStateValue peerConnectionState" (holding the low level connection state, nothing more) +- Internal: added PeerBase.ApplicationIsInitialized, which stores if the init command was answered by Photon (reset on connect/disconnect) +- Removed: PhotonDemoServerUrlPort and PhotonDemoServerIpPort of PhotonPeer. All demos now use "localhost:5055" and you should run your own server. +- Added: enum ConnectionProtocol to get rid of the "useTcp" parameter in the PhotonPeer constructor (which was less clear than the explicit enum now in use) +- Added: overload of PhotonPeer constructor, which is still compatible with the "useTcp" bool parameter (to avoid a breaking change for the time being) +- Added: PhotonPeer.UsedProtocol property to find out this peer's protcol +- Added: LitePeer.OpLeave() overload without the gameName parameter. That name is not checked in the Lite application (on the server), so it's not really needed + +*** Version 6.1.0 +- Added: Encryption for Unity and DotNet. Operations (and their responses) can be encrypted after exchanging the public keys with the server +- Added: OpExchangeKeysForEncryption(), DeriveSharedKey() and IsEncryptionAvailable to PhotonPeer (and LitePeer inherits these) +- Added: OpCustom() will throw an ArgumentException if the operation should be encrypted but keys are not yet exchanged (exchange keys first) +- Added: LiteOpCode.ExchangeKeysForEncryption = (byte)95 +- Added: Overloaded PhotonPeer.OpCustom() with new "encrypt" parameter +- Added: property PhotonPeer.IsEncryptionAvailable is true if public-keys are exchanged and the secret is compiled from them +- Added: Encryption demo to Realtime Demo. Press E to exchange keys and R to toggle encrypted sending for the move data (even though events are never encrypted) +- Changed: PeerBase methods: sendOperation()->EnqueueOperation(...,encrypt), updateRoundTripTimeAndVariance()->UpdateRoundTripTimeAndVariance() +- Updated: the Unity client is now a Unity v3.1 project. Make sure to change the server address before you build for iPhone (localhost:5055 won't work on the mobile) +- Removed: the outdated, separate iPhone demo (was: Unity v1.7 for iPhone) +- Updated: PhotonPeer documentation for Service(), DispatchIncomingCommands() and SendOutgoingCommands() +- Added: OpRaiseEvent() overload with parameter TargetActors. Sends optional list of actors that will receive the event (if null, all *other* actors will receive the event, as default) +- Internal: Added source BigInteger.cs, DiffieHellmanCryptoProvider.cs and OakleyGroups.cs +- Internal: PeerBase.CryptoProvider, PeerBase.ExchangeKeysForEncryption() and PeerBase.DeriveSharedKey() +- Internal: EnetPeer.initPhotonPeer() and TPeer.initPhotonPeer() are setting PeerBase.isEncryptionAvailable = false +- Internal: De/Serialization methods (and some variables for it) are moved from NConnect to PeerBase and renamed to: SerializeOperationToMessage() and DeserializeMessageAndCallback() +- Internal: switched project to allow "unsafe" functions (used by BigInteger) +- Internal: renamed PhotonPeer.sendOperation()->EnqueueOperation +- Internal: changed assembly version to 6.1.0 and "client version" in init-byte-block to 6,1,0 +- Internal: moved protocol handling to EnetPeer and TPeer classes (where encryption is added) +- Internal: moved InitBlock to (shared) PeerBase (same for UDP/TCP) +- Internal: serialization is now done by Protocol.SerializeOpParameters(), which excludes the message header. this makes encryption simpler + +*** Version 6.0.0 +- Changed: This library requires Photon v2.2.0 and up! (in other words: the libraries are not compatible with older Photon servers, due to servertime changes) +- Added: Support for arrays in arrays. Any serializable datatype can now be used in nested arrays. Even arrays of Hashtables are possible. +- Added: Realtime Demo optional command line arguments for game config. set all or none: serverAddress, useTcp (true/false), useReliable (true/false), int intervalDispatch, intervalSend (ms), intervalMove (ms) +- Note: Realtime Demo commandline might look like this: start demo-realtime.exe localhost:5055 false true 5 25 100 +- Changed: renamed GetLocalMsTimestamp property to LocalMsTimestampDelegate (it does not have a getter, despite the old name's implication) +- Added: PhotonPeer.LocalTimeInMilliSeconds property to use the timestamp delegate to get the current client milliseconds (by default this is Environment.TickCount) +- Changed: UDP: The default value for PhotonPeer.RoundTripTime (300ms, used before connecting) is now replaced with the turnaround time of connect. This should lead to accurate RTT values much sooner +- Changed: PhotonPeer.ServerTimeInMilliSeconds is no longer updated all the time. Instead it's fetched soon after connect (when initialization won't affect rountrips anymore) and extrapolated. It should be better to be off by a constant value than by a changing value +- Changed: PhotonPeer.ServerTimeInMilliSeconds now returns 0 until the server's timestamp is fetched. Updated the documentation with some internals for this. +- Added: PhotonPeer.FetchServerTimestamp() to send the time fetch command (this is done automatically as well. this method is here for completeness) +- Fixed: roundtrip time calculation is no longer affected by long intervals between Service() or DispatchIncomingCommands() calls (bug of v5.9.0, caused by internal action queues) +- Added: internally for UDP, we use a new command to fetch the timestamp which minimizes the latency for that roundtrip. this one is excluded in roundtrip time measuring +- Changed: internal: ACKs by the server are again directly executed (other commands which are put into the action queue and dispatched) +- Fixed: Peers with TCP as protocol will no longer try to disconnect while not being connected (does not do anything of disconnected or disconnecting) +- Changed: Peers with TCP as protocol will clear the outgoing queue when disconnect() is called (while connected. see fix above) +- Updated: Silverlight Realtime Demo slightly +- Added: PhotonPeer.Listener property to give subclasses access to the IPhotonPeerListener (set in constructor). Can be useful to call Listener.DebugReturn() +- Added: LitePeer-Source.cs to demo-realtime. This is the source of a LitePeer and could be used as sample to create custom operations on the client side + +*** Version 5.9.0 +- Release: of changes in 5.7.6 and 5.7.5 + +*** Version 5.7.6 +- Fixed: a debug output line for TCP connections which did not heed the debug-level. +- Changed: PhotonPeer uses less locking internally and will handle incoming data in the game thread (inside DispatchIncomingCommands() or Service()). +- Changed: Internally, all commands are put into a (locked) queue which is processed within DispatchIncomingCommands(). Your dispatch interval affects local lag but not the PhotonPeer.RoundTripTime value. +- Note: Don't use a peer from multiple threads! It's not thread safe. All callbacks to IPhotonPeerListener methods are happening in your game thread (again: inside DispatchIncomingCommands()). +- Changed: removed locks inside the callbacks (according to above change). +- Changed: DNS resolution is now done in Connect() unless you provide a valid IP address (if IPAddress.Parse(address) is successful, the IP is used directly). +- Fixed: PhotonPeer.Connect() should fail if the IP is unknown or unavailable. Exception: using a localhost might succeed but fail when we try to receive anything. +- Updated: Game.cs now initialized the timing intervals. This avoids issues if the client system is having a negative TickCount. +- Added: ServerAddress property to PhotonPeer, which might help while developing with several servers and peers. +- Changed: This version includes GetLocalMsTimestampDelegate and the PhotonPeer property GetLocalMsTimestamp to set the delegate for local timestamp. + +*** Version 5.7.5 +- Changed: All precompiled demos now connect to localhost! From now on, you need to run Photon before trying any of the demos (as we don't guarantee that udp.exitgames.com is online anyways) +- Changed: OpCustom() now accepts null as parameter Hashtable, which is a shortcut to "no parameters" for simple operations (an empty hashtable is sent though, it does not reduce bandwidth) +- Added: new feature: UDP timeout definition by setting PhotonPeer.DisconnectTimeout (individual per command, set in milliseconds, checked when a command is repeated) +- Renamed: enum ReturnCode to StatusCode. The StatusCode values are only used for status callbacks (not as operation results) +- Changed: parameter type of PeerStatusCallback() from int to StatusCode (to differentiate them from operation ReturnCodes, which are customizable) +- Removed: StatusCode.Ok (as it was actually an Operation ReturnCode) +- Added: new StatusCallback value: StatusCode.SendError. Used for sending error cases: "not connected" and "channel not available" +- Changed: sendOperation() (Udp and Tcp) does not throw an exception while disconnected or for wrong channel (using StatusCode.SendError instead) +- Changed: callback DebugReturn() now has the additional parameter (DebugLevel)level, analog to logging +- Changed: UDP connection is disconnected when a read exception happens (before we tried to read despite this until a timeout ended it) +- Changed: EnetPeer.Disconnect() now ignores calls when peer is disconnected or disconnecting already +- Fixed: TCP code tried to detect socket issues by checking for IOExceptions but now checks SocketException instead +- Changed: internal threading: Callbacks due to incoming packages and commands are now queued and triggered by dispatch (in game loop) +- Changed: dispatch of action-queue as added to DispatchIncomingCommands (in EnetPeer and TPeer) +- Changed: internally, there is no locking for outgoing reliable and unreliable command lists anymore +- Changed: Realtime Demo timer usage to avoid nullref on form-close +- Changed: Realtime Demo propety isReliable is now in the Player class +- Changed: Game.cs and Player.cs for all realtime demos. There is now something like a gameloop (Update()) which must be called regularly and makes (pretty) sure just one thread accesses the peer +- Changed: all realtime demos to use the new Update() method and use more similar Game and Player classes (cleanup for less differences) +- Fixed: RoundtripTimeVariance is now also reset on connect / init, so the resend-timing of reliable udp does not suffer when a peer connects after a disconnect +- Fixed: typo in ExitGames.Client.Photon.StatusCode.QueueIncomingUnreliableWarning (was QueueIncomingUneliableWarning) + +*** Version 5.7.4 RC3 +- Changed: Unity3D lib again has it's own UDP handling (the DotNet one causes browser crashes on web-player exit) + +*** Version 5.7.3 RC3 +- Changed: Unity3D lib is now identical to DotNet lib (Unity iPhone is compatible with DotNet 2.0 now and this got tested) +- Fixed: DNS resolution (did not work for "localhost", which gave two results (IPv4 and IPv6), mixing up things + +*** Version 5.7.2 RC3 +- Changed: Unity3D lib: the receive thread will now receive until no data is available, then sleep 5ms and check again +- Changed: serverTime is now a signed int (as on server) and adds averaged rountripTime/2 when it gets an update +- Changed: ServerTimeInMilliSeconds doc (more concrete, explains how server time works) +- Added: support for serverTime, RountripTime and RoundtripTimeVariance when using TCP (Silverlight does not allow UDP) +- Added: Silverlight supports either URL:Port and IP:Port as server url string + +*** Version 5.7.1 RC2 +- Added: DotNet "Lobby Demo" which uses the "LiteLobby" application of the server SDK to show running games and their player-count +- Changed: the realtime demos to use the more similar Game and Player classes + +*** Version 5.7.0 RC1 +- Added: documentation: project for Silverlight Hashtable and ArrayList substitutes. +- Changed: RealtimeDemo uses same classes Game and Player for Unity3 + Silverlight +- Changed: Silverlight: Hashtable and ArrayList are now a separate project / lib +- Internal: Silverlight: listener interfaces (Photon and Neutron) now conditionally use ExitGames.Client datatypes from lib +- Changed: Photon: connect callback is now deferred to on-init-response (instead of enet-connect) which ensures "no ops before init" +- Changed: Unity Realtime demo: using game and player classes merged over from silverlight and re-wrote sample code to display players +- Internal: photon projects now have a pre-compile setting "Photon" +- Changed: SupportClass Namespace is now compiling into either ExitGames.Client .Photon or .Neutron (to avoid ambiguation) +- Added: LitePeer as Lite Application specific peer (with OpJoin and the rest) +- Changed: demos accordingly +- Changed: case of PhotonPeer methods to first-letter-is-uppercase (as usual in C#) +- Removed: nNet-prefix (Connect and Disconnect are self-explanatory) +- Renamed: PropertyTypes are now LitePropertyTypes (as they belong to the Lite application) +- Changed: Peer state constants with PS_* converted into enum "PeerStateValue" +- Removed: URL_RT_SERVER, URL_RT_SERVER_DEV, IP_RT_SERVER and IP_RT_SERVER_DEV +- Added: PhotonDemoServerUrlPort and PhotonDemoServerIpPort +- Renamed: NPeer to PhotonPeer +- Renamed: PhotonPeerListener to IPhotonListener (class and file) +- Changed: namespace from Com.ExitGames to ExitGames and ExitGames.Client, ExitGames.Client.Photon and ExitGames.Client.Neutron +- Removed: QueueOutgoingUnreliableError, QueueOutgoingAcksError, QueueIncomingReliableError, QueueIncomingUneliableError, QueueSentError (no errors, only warnings) +- Removed: error "report" when TCP incoming queue getts fuller +- Internal: updates Neutron part to run with Protocol.cs de/serialization (added a serializeParametersNeutron() as there are multiple differences to UDP part) +- Changed: projects and scripts to build documentation xml in debug builds +- Renamed: demo-photon-SL to demo-realtime-SL (according to other demo realtime implementations) +- Changed: many classes and properties are now internal. e.g. Protocol, EnetChannel, EnetPeer (and inner classes), TPeer, SuppportClass.ReadInput() +- Updated: AssemblyInfo.cs for photon dotnet and silverlight +- Internal: projects to have precompile-flags also in release builds +- Updated: build scripts for SDK building +- Removed: Compact Framework support + +*** Version 5.6.1 +- Fixed: 0 element arrays caused bugs +- Fixed: double type was cast incorrectly after being read + +*** Version 5.6.0 +- Added: more supported datatypes: float, double and arrays of all basic datatypes (no arrays of hashtable or arrays) +- Internal: changed Photon protocol internally to 1.5. (needs a server update to Photon Server SDK 1.6.1+)! +- Changed: Channels for Photon UDP are now priorized (from low to high) getting the lower channels out first +- Internal: switched de/serialization at several places from manual shifting to a support function, which should provide endian-correctness (Photon Unity PPC compatibility) +- Added: Unity info about "Application.runInBackground = true;" to Unity Appendix in doc +- Changed: Photon return values are put into a NEW hashtable on receive. not just a cleared one which was not reference-safe (no more need to deep-copy the data of events) +- Added: Photon support for "disconnect-reason" which is sent by server in the enet "reserved" byte +- Added: Photon ReturnCode.DisconnectByServerUserLimit and .DisconnectByServerLogic +- Removed: NPeer.IncomingReliableCommands (was more or less useless) +- Added: QueuedIncomingCommands and QueuedOutgoingCommands as metric for how effective send and dispatch is done +- Changed: now throwing exceptions when trying to set init-values at runtime (to be fixed at development-time) +- Added: doc for sequencing and updated channel doc, (too) short chapter on custom operations, topic "opCodes: byte versus short", doc for property-related functions +- Added: overloaded functions for opGetProperties*() for byte-keys +- Fixed: Realtime Demo keypress in input-fields have been used as in-game actions, too +- Changed: Realtime Demo game-name is now that of the native samples ("play" with other platform SDKs) +- Changed: Silverlight SDK has a different port in the constants NPeer.URL_RT_SERVER* and .IP_RT_SERVER* (as Silverlight uses TCP port 4350) + +*** Version 5.4.1 +- Added: missing documentation in Unity3d SDK + +*** Version 5.4.0 +- Change: The timespan until a sent and unacknowledged reliable command is considered lost, is now calculated by + current roundTripTime + 4 * roundTripTimeVariance + The result of this calculation is doubled with every following resend. The maximum number of retries can still be defined by calling SetSentCountAllowance. +- Change: Removed TimeAllowanceInt +- Change: removed surplus debug out, adjusted levels for other, output of command sent-time from hex to decimal +- Added: fragmentation support: bigger data is now placed into multiple packages and reassembled +- Internal: command-buffers are replaced with CommandList and SortedCommandList (major change, but fully internal) +- Fixed: possibility of command buffer overflow. now everything is stored and warnings are used as hint for temporary problems +- Added: property NPeer.IncomingReliableCommands, which returns the count of reliable commands currently queued +- Added: callback on NCommand.CT_DISCONNECT to inform the NPeerListener about a disconnect from server (see above) +- Added: disconnect command will be sent by server in case of timeout, connection-limitations or other issues +- Added: NPeer ReturnCode.DisconnectByServer is called on server-side disconnect (see description) +- Added: call to StopConnection() on disconnect (by server) +- Added: NPeer.PeerID property to get ENet's peerID (useful while debugging) +- Internal: SupportClass.WriteIntToByteArray() to ease writing ints to byte[] +- Internal: added several values to NCommand to store fragments +- Added: support for channels. read more about this in the documentation +- Added: NPeer.ChannelCount which sets the number of channels while not connected (default: 2) +- Changed: opRaiseEvent() and opCustom() now optionally have a channel parameter +- Added: Photon properties functions to NPeer (available with Photon Server SDK v1.5.0) and doc +- Added: LiteEventKey.SetProperties = 92 for broadcasted property set +- Added: LiteOpKey.Broadcast = 13 and .Properties = 12 +- Added: LiteEventKey.TargetActorNr = 10 (actorNr the properties are attached to) and .Properties = 12 (changed properties) + + +*** Version 5.3.11 +- Change: all bytes sent to and from server are treated as unsigned bytes (standard for c#). same for byte-arrays +- Change: updated realtime demo to use int for posx,posy but still sending just a byte-value (the field is 16x16, after all) + +*** Version 5.3.10 +- Change: switched from sbyte-array to byte-array in de/serialization! important: bytes (ev-keys etc) are sbyte. arrays of bytes are unsigned (on client and server) +- Change: NeutronListener functions getShadowReturn() and HasbadwordsReturn() now have byte-array return values. please adjust, even if you don't use those +- Internal: changed SupportClass for Compact Framework +- Internal: getting ticks sitched from expensive "System.DateTime.Now.Ticks / 10000" to cheap "Environment.TickCount" +- Change: Unity lib will now give more debug out if serialisation fails + +*** Version 5.3.9 +- Fixed: result-queue, timeouts and customOps work also fine for Unity build again (were broken due to Neutron Unity webplayer compatibility changes in 5.3.8 for Unity) +- Fixed: if the browser is closed and the unity webplayer immediatly can't use http anymore, Neutron now informs the application via NetworkStatusReturn() + +*** Version 5.3.8 +- Fixed: Neutron Unity now also works fine in webplayer -> Neutron and Photon now both support all platforms of Unity und Unity iPhone +- Fixed: default value for parameter encrypt of NeutronGame::RaiseEvent() now is false like for all other RaiseEvent methods and like on all other platforms, instead of true, as it was before + +*** Version 5.3.7 +- Fixed: .Net UDP issue, where standard MTU settings caused dropped UDP packages +- Internal: refactored ACK queue to arraylist + +*** Version 5.3.6 +- Fixed: NPeer issue with ACKs for repeated commands. this enhances handling of lost packages +- Changed: NPeer.opJoin() no longer needs the SID + +*** Version 5.3.5 +- Known issues: to use Photon on iPhone device, you do need Unity iPhone 1.0.2b1 or higher (current official release is 1.0.1, so please ask for a prerelease or wait until next official release), but of course you can use Photon with Unity iPhone 1.0.1 IDE +- Merged: renamed .NET 1.1 NeutronUnity3DiPhone into NeutronUnity3D to replace the old .NET 2.0 lib of that name, which means, that you can use the same .NET 1.1 based lib for Unity and for Unity iPhone now, since 1.1 cpmpatibility fixes are all done now +- Fixed: photon is fully compatible to .NET 1.1 now +- Internal: optimized UDP package size in Unity3D library (was sending surplus bytes, which were ignored) +- Fixed: NPeer.opCustom() now sends the operation given by parameter +- Changed: IP_RT_SERVER points to new server IP of udp.exitgames.com +- Changed: a new NeutronSession now clears the NetworkLoss state and the sendQueue +- Changed: timeout of a HTTP request to 10 seconds. it triggers + +*** Version 5.3.4 +- Added: prealpha Unity3DiPhone version of Neutron .NET: core lib already functional, but realtime part not usable on device yet +- Internal: there are 4 different versions of Neutron.NET now: + - Full .NET: .NET 2.0 based, with asnyc realtime part + - Compact Framework: .NET 2.0 based, with threaded realtime part + - Unity3D: .NET 2.0 based, with Unity www-class based http part and threaded realtime part + - Unity3DiPhone: .NET 1.1 based, with Unity www-class based http part and threaded realtime part + +*** Version 5.3.3 +- New: ReturnCode.RC_RT_EXCEPTION_CONNECT, which covers the cases where a server is not running +- New: NPeer can now be created with UDP or TCP (by new bool parameter) +- Change: renamed most of the constants for NPeer (in INPeerListener structs) +- Note: TCP does not offer ServerTime or RoundTripTime jet + +*** Version 5.3.2 +- Internal: reverted to threaded model in NConnect (as async UDP is not supported by Unity3D) + +*** Version 5.3.1 +- New: login(), register(), customOperation() and raiseEvent() (all variants) can be encrypted with additional parameter "encrypt" (overloaded function) +- New: encryption uses HTTPs as transfer, by changing the "http:" url to a "https:" url +- New: returnCode for failure of encrypted HTTPs requests: RC_SSL_AUTHENTICATION_FAILED (if certificate is not found, valid or expired) +- Fixed: Realtime Demo using the older Realtime Server + +*** Version 5.3.0 +- New: separated libraries into "Compact Framework" (CF) and "Regular Framework" (no name postfix) +- Change: libraries are now in "libs" folder as debug/release and in libs/CompactFramework debug/release +- Change: libs default URL set to EU/Test. use setServerURL() with Neutron.URL_NEUTRON_* for other Neutron instances +- Internal: lib now uses async UDP communication now with "regular" framework +- Added: properties serverTimeInMilliSeconds, serverTimeAsTimeSpan and serverTimeAsDateTime for getting the current server time +- Removed: serverTimeOffset is now internal only and removed from the API (was only needed to calculate the servertime by yourself, before neutron could do this for you) +- Change: debug out for realtime classes is now layered +- Change: debug level NPeer.DebugOut is now a NPeer.DebugLevel enum and will include all lower levels in output, default: DebugLevel.ERROR +- Fixed: size of realtime demo board +- Change: NPeer constructor now always throws an exception if listener is null +- Change: EventAction() parameter eventCode is now of type sbyte (was int), which corresponds to type of RaiseEvent (and server-side used type) +- Internal: NPeer.opRaiseEvent() now treats eventCode as parameter of operation RaiseEvent (as changed in latest RT server) +- Change: NPeer has its own listener (INPeerListener) and several (better named) structs for the constants used with NPeer / realtime +- Added: LiteOpKey and LiteOpKey.ActorNumber to have a constant for the only OP key of interest +- Change: EventAction() always returns the complete event, which contains a code, the ActorNumber (if any given) and data from raiseEvent (see below) +- Change: in custom events, the data from opRaiseEvent() is in placed as value of key: LiteEventKey.EV_RT_KEY_DATA. to get the data use: Hashtable data = (Hashtable)neutronEvent[LiteEventKey.EV_RT_KEY_DATA]; + +*** Version 5.2.0 +- changed library filename to neutron-lib__.dll with server "test" and "run" (no debug out) and billing "dummy" and "none" +- removed US build of library. please use NeutronSession.SetServerUrl() and the constants: Neutron.URL_NEUTRON_SERVER_*. + +*** Version 5.1.0 +- added realtime classes to DotNet library: ported NPeer (and internal: NCommand and NConnect) classes +- added nPeerReturn() to NeutronListener interface +- added constants for realtime returnCodes (RC_RT_*): RC_RT_CONNECT, RC_RT_DISCONNECT and RC_RT_EXCEPTION +- added constants for realtime eventCodes (EV_RT_*) +- added constants for Neutron servers to Neutron class: URL_NEUTRON_* +- added Reamtime Demo +- updated samples +- added test for UDP to NUnit + +*** Version 5.0.1 +- New: operation Spectate (including new SpectateReturn) to get events from any game (as admin) +- New: SetServerUrl and SetCustomServerUrl now return the URL to debugReturn +- Internal: constant "DEBUG_- InternalS" to be used for intern debugging output + +*** Version 5.0.0 +- New: hasBadwords() as OP and return. Server side check of strings for badwords + +*** Version 5.0.0 RC3 +- Internal: changed constant values: EV_KEY_PROPERTIES = "Data", EV_KEY_REVISION = "Rev" +- New: EV_KEY_CHANNELTYPE for channel-type in property-change events +- New: constants for default channels, CHANNEL_APPLICATION_LONGLIFE, CHANNEL_ACTOR_SHORTLIFE, CHANNEL_ACTOR_LONGLIFE and CHANNEL_APPINSTANCE +- Change: operations that fail due to missing moderation-rights now return RC_MODERATION_DENIED instead of RC_COMMAND_ACCESS_DENIED +- Change: actor-properties can no longer be broadcasted in any way - removed "broadcast" parameter from setActorProperties() +- Change: properties now have a revision which is increased on each change. this way outdated updates might be skipped +- Change: parameters of GetPropertiesReturn(). property-type is replaced by channel. added revision +- Change: EV_PROPERTIES_CHANGE now has a key EV_KEY_OWNERNR if it's a "player property" (the key is missing if it's a game-property) +- Internal: changed setProperties and getProperties to new operation-codes using different parameters (with similar results) +- New: parameter "textMessage" for NeutronGame.invite() adds personal message to invited players (in EV_INV and gameListInvitations()) +- New: key EV_KEY_INFO will be added to EV_INV if "textMessage" was used in NeutronGame.invite() (it's not there otherwise) +- New: gameListInvitations() has new value parameter {t} to get "textMessage" from NeutronGame.invite() +- New: RC_APPINSTANCE_NOT_OPEN is now used for "singleton namebased pools" where a game is full (not able to join / instanciate) +- New: gameCreate() with invitations will fail if the chosen game-name is already taken in a "singleton namebased pool" +- New: RC_APPINSTANCE_ALREADY_EXISTS for the case above + +*** Version 5.0.0 RC2 +- Change: gameCreateReturn() now returns RC_APPINSTANCE_NOT_OPEN (instead of RC_AI_TOO_MANY_ACTORSESSIONS) for full games in "singleton" pools +- Change: obsolete events EV_TURN, EV_TXTMSG and EV_DATA which could be sent by raiseEvent*() and still handled +- Change: switched Neutron URLs to "[..].neutron5.[..]" for test/run libs +- Fix: Polling (getEvents operation) again calls sendGameDataReturn() for all errors (as intended for v4.9.2 already) +- New: constant NeutronListener.EV_KEY_TYPE as part of event EV_BUDDNOTICE + +*** Version 5.0.0 RC1 +- New: RaiseEvent (all functions of this name) now has a "filter" parameter. If filter is true, all String-typed values in an event are badword filtered +- Change: signature of NeutronGame.raiseEvent(), NeutronGame.raiseEventInChannel(), NeutronSession.raiseEventInChannel(), NeutronSession.raiseEventForActor() start with: byte eventCode, Hashtable event, boolean filter +- Change: signature of NeutronSession.raiseEventForActor() is changed to "byte eventCode, Hashtable eventData, boolean filter, String userID, int minutesValid, byte maxTypeCount, byte channel" +- Change: NeutronGame.doModerate() is now isModerator() +- Change: moved GpOperation.SerializeData() and GpOperation.DeserializeData() to Neutron.SerializeData() and Neutron.DeserializeData(). +- New: errorCode RC_INVALID_TARGET and RC_PARAMETER_NOT_SUPPLIED added as constant. + +*** Version 4.9.3 +- New: Errors constants in NeutronListener: RC_FATAL_LOGIC, RC_MATCHMAKING_NOT_COMPLETED, RC_CHANNEL_ACCESS_VIOLATION +- New: for game-creation you can now reserve "spots", which are not filled up by Neutron matchmaking. players can be invited to fill the spots, or they can be deblocked later on +- New: Parameter reservedSpots in NeutronSession.gameCreate() +- New: NeutronGame.setReservedSpots() to modify the number of reserved slots (to make them available to matchmaking again, or block/reserve them) +- New: event EV_RESERVED_SPOTS will update the NeutronGame.reservedSpots value after a call to NeutronGame.setReservedSpots() +- New: NeutronSession.listBannedPlayers() gives you the list of banned players for a known game - only usable by "admin" users +- New: NeutronSession.unbanPlayer() is a modified "kick" operation which allows the respective user to join a certain game again - only usable by "admin" users +- New: the event invitation includes now the game's name (in the new key EV_KEY_NAME) +- New: NeutronSession.gameListPerPool() has now three options to sort the results: by game-name, player-count or "persistent games first" +- Removed: NeutronGame: handoverTurn(), sendData(), sendTextMsg(), getEventHistory() and getEventHistoryReturn(). Obsolete events: EV_TURN, EV_TXTMSG, EV_DATA. Session: getScorePosition()+getScorePositionReturn() +- Update: release_history.txt was updated from v4.0. All changes up to v4.0.4 are added to v4.9.3 + +*** Version 4.9.2 +- New: Players can be admins (by list of logins on server) or moderator (by being the first active player of a game) +- New: Players may request and become moderator for game: NeutronSession.gameCanModerate(boolean), NeutronSession.canModerate, NeutronGame.doModerate() and NeutronGame.moderatorActorNr +- Change: the new value NeutronSession.canModerate will be sent with gameCreate() operations (if set to true) +- New: Event key NeutronListener.EV_KEY_MODERATOR to get moderator's actorNr from events +- Change: EV_QUIT and EV_KICKED now carry the new key EV_KEY_MODERATOR which tells all players who is the current moderator (by actorNr); this is stored into NeutronGame.moderatorActorNr +- New: Players in NeutronGame can have new state PLAYER_KICKED (player-data is updated with EV_KICKED) +- New: NeutronGame.kickPlayer() (for moderators) and NeutronSession.kickPlayer() (for admin's who are not active in the game to shutdown) +- New: NeutronSession.shutdownGame() can be used by admin-players (for others, this operation will fail) +- New: Namebased pools can now be defined as "singleton": only one instance per pool and name will be created; if such a game is full players get an error instead of a new game +- New: Errors constants in NeutronListener: RC_ACTORSESSION_KICKED, RC_ACTORSESSION_BANNED, RC_APPINSTANCE_CLOSED, RC_ACTORSESSION_ALREADY_JOINED +- Change: NeutronGame.raiseEvent() accepts a "targetActorNr" which defines a single player to get the raised event; leave 0 to target "all players in game" (as before) +- New: NeutronGame.quitLocally() to release a NeutronGame instance locally (without having to quit()); used after a player was kicked or game shutdown +- Update: NeutronGame.playerGetCount() is updated to simply count all active or inactive players (excluding quit and kicked ones) +- Internal: NeutronGame constructor reads new parameter: P_MODERATOR +- Change: Polling (getEvents operation) now calls sendGameDataReturn() for all errors (not just RC_ACTORSESSION_EXPIRED and RC_ACTORSESSION_NOT_FOUND); takes care of kicked/banned errors +- Fix: Fatal server errors cause a returnCode of NeutronListener.RC_OP_SERVER again; debug test-server libs print out debug text! (during development fatal errors could happen in case of not matching client/server setups) +- Change: removed (already deprecated) NeutronListener.gameListPerPoolReturn() +- Change / Internal: canModerate is sent as Byte (not bool) as in definition; Code: if ( canModerate ) op.addParameter(Neutron.P_MODERATOR , new Byte((byte)1)); +- Add: NeutronGame.PLAYER_KICKED is now listed in JavaDoc for NeutronGame.playerGetStatus() +- Update: JavaDoc package.html, gameCreateReturn(), gamesListReturn(), EV_DEACTIVATE, kickPlayer(), quitLocally(), RC_ACTORSESSION_KICKED, RC_ACTORSESSION_BANNED, RC_APPINSTANCE_CLOSED, RC_ACTORSESSION_ALREADY_JOINED +- Added: Event EV_STATUS (50) includes a key EV_KEY_ISADMIN if the current player has administrator rights; the value is (byte)1 in that case. The key does not exist in any other case (normal users) +- Update: JavaDoc gameCreateReturn; +- New: Added constant RC_APPINSTANCE_NOT_FOUND = 137 for shutdownGameReturn() +- Fix: serializable datatypes are now completely listed in NeutronSession JavaDoc +- New: Constant for property-change events: EV_PROPERTIES_CHANGE including new keys: EV_KEY_PROPERTY_TYPE, EV_KEY_PROPERTIES, EV_KEY_ISDIFF +- Update: JavaDoc for properties in NeutronSession + +*** Version 4.1.1 +- Fix: gameListPerPool() defaults to 10 games and no offset if the values are less than 1 +- Fix: gamesListReturn() JavaDoc description for "listType" is now: 0 = open games; 1 = invitations; 2 = pool's open games list +- Update: gameListPerPool() sends "{gn}" as values-parameter if it's null +- Update: getPropertiesReturn() gets new parameters: actorNr, userID. These are optional and are available in certain situations only. See JavaDoc +- Update: gameListPerPoolReturn() is now deprecated and merged into gamesListReturn() which in turn got a "type" to identify the list-type +- New: getListBuddyIgnore() got one more value: 't'. This requests the type of relation to users. useful when getting lists of type "both". this is buddies and ignores. +- Change: renamed returned parameters to: count and countOnline. These values are referring to the number in the returned list +- Internal: parameter P_USERID = 85; used in getProperties +- New: made methods nullpointer resistant: getListBuddyIgnore, buddySet, get/set PlayerProperties, get/set ActorProperties, get/set GameProperties; some methods throw exceptions in debug version + +*** Version 4.1.0 +- New: Properties. NeutronSession: setActorProperties(), getActorProperties(). NeutronGame: setLocalPlayerProperties(), getPlayerProperties(), getGameProperties(), setGameProperties() +- New: Buddylist and Ignorelist in NeutronSession: listBuddies(), listIgnored(), getListBuddyIgnore(), buddySet() +- New: Listing of games per pool in NeutronSession: NeutronSession gameListPerPool() +- New: Games with password (only usable for named games) +- Internal: Changed parameter in buddySet from P_STATUS to P_TYPE + +*** Version 4.0.4 +- Change: NeutronGame.handoverTurn() and NeutronGame.sendData() are now getting a Hashtable parameter instead of Object +- New: RC_ACTORSESSION_BUSY (121) constant to help identify common development error! check in gameCreateReturn() + +*** Version 4.0.3 +- New: RC_INVALID_CONNECTIONSTRING (74) constant to help identify a common error! check in loginReturn() +- Update: list of serializable datatypes in NeutronSession JavaDoc +- Fix: Fatal server errors cause a returnCode of NeutronListener.RC_OP_SERVER again; debug test-server libs print out debug text! (during development fatal errors could happen in case of not matching client/server setups) + +*** Version 4.0.2 +- Internal: Neutron.deserializeData() now returns either the P_DATA part of the deserialized data (if available / serialized by serializeData()) or the resulting hashtable itself + +*** Version 4.0.1 +- New: NConnectSE connects to server defined by parameter: ipPort (before: fixed host) +- New: SE version is now completely independent from Java ME classes (were not used, but had to be present) +- Fix: Changed versioning for "ClientLibVersion" in Login/CC +*** Version 4.0.0.0 + +- Removed methods: + - NeutronSession.BuggyGetList - replaced by new GetListBuddyIgnore method; + - NeutronSession.ReSubscribe; + - NeutrinSession.ConfirmBilling; + - NeutronListener.ResubscribeReturn; + +- Added methods: + - NeutronSession.GameCreateNamed with password parameter; + - NeutronSession.GameListPerPool; + - NeutronSession.GetActorProperties; + - NeutronSession.SetActorProperties; + - NeutronSession.GetListBuddyIgnore - replaces removed BuggyGetList; + - NeutronSession.ListBuddies; + - NeutronSession.ListIgnore; + - NeutronSession.BillingInitPayment; + - NeutronSession.BillingProcessPayment; + - NeutronGame.Invite; + - NeutronGame.GetGameProperties; + - NeutronGame.SetGameProperties; + - NeutronGame.GetPlayerProperties; + - NeutronGame.SetLocatPlayerProperties; + - NeutronListener.GameInviteReturn; + - NeutronListener.GetPropertiesReturn; + - NeutronListener.SetPropertiesReturn; + +- Changed argument list: + - NeutronSession.GameCreate - added password parameter; + - NeutronListener.GamesListReturn added listType parameter; + - NeutronListener.BuddyGetListReturn all buddy related info now in passing in one strings array parrameter; + - NeutronListener.BuddySetReturn added type parameter; + - NeutronListener.BillingInitPaymentReturn; + + +- added constants: + - OPC_INVITE + - OPC_TELLAFRIEND + - OPC_LISTGAMES + - OPC_SETPROPERTIES + - OPC_GETPROPERTIES + - P_USERID + - P_RESERVE + - P_RESULT + - P_PROPERTIES + - P_BROADCAST + - P_ISDIFF + - RCB_CHARGING_ERROR + - RCB_POST_CHARGING_ERROR + - RCB_TIMEOUT + - RCB_PRICE_- Changed + - RCB_PRICE_INVALID + - RCB_FATAL_SERVER_ERROR + - RCB_FATAL_LOGIC_ERROR + - RCB_NOT_INCLUDED + - RCB_WMA_UNAVAILABLE + +*** Version 3.0.2.2 +- CLS-specifications largely corrected + +*** Version 3.0.1.1 +- changes in neutron-java-lib integrated + +*** +- Removed: NeutronGame: playerNames, playerIDs, playerLobbies, playerStats +- Change: removed GpOperation.roundtripTime, now using public Neutron.roundtripTime + to be sent in operation headers (GpOperation.serializeParameters(), internal) +- Change: channelRaiseEvent() is now raiseEventInChannel() and gets the eventCode + as seperate parameter value - analog to raiseEventForActor() +- Fix: renamed EV_KEY_M_MIPLAYERS to EV_KEY_M_MINPLAYERS (number of min players of game, before start) +- Fix: values for EV_KEY_M_MINPLAYERS and EV_KEY_M_MAXPLAYERS corrected (wrong case so far) +- Changed: Neutron.millisecondsToWait (current value of polling-interval) is now + set in Neutron.receiveResponse() for login, register and alike diff --git a/Assets/Photon/PhotonLibs/changes-library.txt.meta b/Assets/Photon/PhotonLibs/changes-library.txt.meta new file mode 100644 index 00000000..85684b76 --- /dev/null +++ b/Assets/Photon/PhotonLibs/changes-library.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d8040d310df77714a90a561261bfb2cb +timeCreated: 1557919981 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonLibs/netstandard2.0.meta b/Assets/Photon/PhotonLibs/netstandard2.0.meta new file mode 100644 index 00000000..c52d1331 --- /dev/null +++ b/Assets/Photon/PhotonLibs/netstandard2.0.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: beb9d2a25c882b54ab2fd9adaec2b53c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.deps.json b/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.deps.json new file mode 100644 index 00000000..57ca7141 --- /dev/null +++ b/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.deps.json @@ -0,0 +1,47 @@ +{ + "runtimeTarget": { + "name": ".NETStandard,Version=v2.0/", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETStandard,Version=v2.0": {}, + ".NETStandard,Version=v2.0/": { + "Photon3Unity3D/4.1.6.17": { + "dependencies": { + "NETStandard.Library": "2.0.3" + }, + "runtime": { + "Photon3Unity3D.dll": {} + } + }, + "Microsoft.NETCore.Platforms/1.1.0": {}, + "NETStandard.Library/2.0.3": { + "dependencies": { + "Microsoft.NETCore.Platforms": "1.1.0" + } + } + } + }, + "libraries": { + "Photon3Unity3D/4.1.6.17": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Microsoft.NETCore.Platforms/1.1.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kz0PEW2lhqygehI/d6XsPCQzD7ff7gUJaVGPVETX611eadGsA3A877GdSlU0LRVMCTH/+P3o2iDTak+S08V2+A==", + "path": "microsoft.netcore.platforms/1.1.0", + "hashPath": "microsoft.netcore.platforms.1.1.0.nupkg.sha512" + }, + "NETStandard.Library/2.0.3": { + "type": "package", + "serviceable": true, + "sha512": "sha512-st47PosZSHrjECdjeIzZQbzivYBJFv6P2nv4cj2ypdI204DO+vZ7l5raGMiX4eXMJ53RfOIg+/s4DHVZ54Nu2A==", + "path": "netstandard.library/2.0.3", + "hashPath": "netstandard.library.2.0.3.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.deps.json.meta b/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.deps.json.meta new file mode 100644 index 00000000..c26136a5 --- /dev/null +++ b/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.deps.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a966b98b651e18748abf2829786b5899 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.dll b/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.dll new file mode 100644 index 0000000000000000000000000000000000000000..4f8b44eb88f91f6eb76beccb882ab2a9e982c977 GIT binary patch literal 232960 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 zʨ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 literal 0 HcmV?d00001 diff --git a/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.dll.meta b/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.dll.meta new file mode 100644 index 00000000..e507b85b --- /dev/null +++ b/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.dll.meta @@ -0,0 +1,165 @@ +fileFormatVersion: 2 +guid: 6a558ae793155af4b9b9ab945fc64a0f +PluginImporter: + externalObjects: {} + serializedVersion: 2 + iconMap: {} + executionOrder: {} + defineConstraints: [] + isPreloaded: 0 + isOverridable: 0 + isExplicitlyReferenced: 0 + validateReferences: 1 + platformData: + - first: + '': Any + second: + enabled: 0 + settings: + Exclude Android: 0 + Exclude Editor: 0 + Exclude GameCoreScarlett: 0 + Exclude GameCoreXboxOne: 0 + Exclude Linux: 0 + Exclude Linux64: 0 + Exclude LinuxUniversal: 0 + Exclude Lumin: 0 + Exclude OSXUniversal: 0 + Exclude PS4: 0 + Exclude PS5: 0 + Exclude Switch: 0 + Exclude WebGL: 0 + Exclude Win: 0 + Exclude Win64: 0 + Exclude WindowsStoreApps: 0 + Exclude XboxOne: 0 + Exclude iOS: 0 + Exclude tvOS: 0 + - first: + Android: Android + second: + enabled: 1 + settings: + CPU: ARMv7 + - first: + Any: + second: + enabled: 1 + settings: {} + - first: + Editor: Editor + second: + enabled: 1 + settings: + CPU: AnyCPU + DefaultValueInitialized: true + OS: AnyOS + - first: + Facebook: Win + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Facebook: Win64 + second: + enabled: 0 + settings: + CPU: AnyCPU + - first: + Standalone: Linux + second: + enabled: 1 + settings: + CPU: x86 + - first: + Standalone: Linux64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: LinuxUniversal + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: OSXUniversal + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + Standalone: Win64 + second: + enabled: 1 + settings: + CPU: AnyCPU + - first: + WebGL: WebGL + second: + enabled: 1 + settings: {} + - first: + Windows Store Apps: WindowsStoreApps + second: + enabled: 1 + settings: + CPU: AnyCPU + DontProcess: false + PlaceholderPath: + SDK: AnySDK + ScriptingBackend: Il2Cpp + - first: + iPhone: iOS + second: + enabled: 1 + settings: + AddToEmbeddedBinaries: false + CompileFlags: + FrameworkDependencies: + - first: + PS4: PS4 + second: + enabled: 1 + settings: {} + - first: + PS5: PS5 + second: + enabled: 1 + settings: {} + - first: + Nintendo Switch: Switch + second: + enabled: 1 + settings: {} + - first: + XboxOne: XboxOne + second: + enabled: 1 + settings: {} + - first: + GameCoreScarlett: GameCoreScarlett + second: + enabled: 1 + settings: {} + - first: + GameCoreXboxOne: GameCoreXboxOne + second: + enabled: 1 + settings: {} + - first: + Lumin: Lumin + second: + enabled: 1 + settings: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.xml b/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.xml new file mode 100644 index 00000000..f85d60c5 --- /dev/null +++ b/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.xml @@ -0,0 +1,2767 @@ + + + + Photon3Unity3D + + + +

+ Initializes a new instance of the class. + + + + + Gets the public key that can be used by another DiffieHellmanCryptoProvider object + to generate a shared secret agreement. + + + + + Derives the shared key is generated from the secret agreement between two parties, + given a byte array that contains the second party's public key. + + + The second party's public key. + + + + Interface for Photon's DiffieHellman/Payload Encryption. + + + + Provides classical Diffie-Hellman Modular Exponentiation Groups defined by the + OAKLEY Key Determination Protocol (RFC 2412). + + + + + Gets the genrator (N) used by the the well known groups 1,2 and 5. + + + + + Gets the 768 bit prime for the well known group 1. + + + + + Gets the 1024 bit prime for the well known group 2. + + + + + Gets the 1536 bit prime for the well known group 5. + + + + A slice of memory that should be pooled and reused. Wraps a byte-array. + + This is a serializable datatype for the .Net clients. It will serialize and transfer as byte[]. + If PhotonPeer.UseByteArraySlicePoolForEvents is enabled, byte-arrays in (incoming) events will be deserialized as + ByteArraySlice. + + Adjust your OnEvent code accordingly. + + + + The buffer for the slice. + + + The position where the content starts in Buffer. + + + The length of the data in the Buffer. + + + + Internal constructor - these instances will be part of the pooling system. + + The pool to return to. + The index to return to (in the related returnPool). + + + + Create a new ByteArraySlice. The buffer supplied will be used. Usage is similar to ArraySegment. + + Not part of pooling. + + + + Creates a ByteArraySlice, which is not pooled. It has no Buffer. + + Not part of pooling. + + + + If this item was fetched from a ByteArraySlicePool, this will return it. + + + True if this was a pooled item and it successfully was returned. + If it does not belong to a pool nothing will happen, and false will be returned. + + + + Resets Count and Offset to 0 each. + + + Tiered pool for ByteArraySlices. Reduces the allocations once enough slices are available. + + + + Requests for buffers smaller than 2^minStackIndex will use 2^minStackIndex. This value avoids allocations of smaller rarely used buffers. + Set this to a lower value if you will never need sizes larger than byte[2^minStackIndex] + + + + Count of allocations this pool did. + + + Creates a new pool. + + + + Get a ByteArraySlice from pool. This overload handles user supplied byte[] and byte count and can be used as a non-boxing alternative to ArraySegment<byte>. + + + This effectively pools the ByteArraySlice instances but not their data. + ByteArraySlice.Release() will return the slice itself to the pool but delete the reference to the buffer supplied here. + + + + + Get byte[] wrapper from pool. This overload accepts a bytecount and will return a wrapper with a byte[] that size or greater. + + + + Pops a slice from the stack or creates a new slice for that stack. + The stack to use. Lock that stack before calling PopOrCreate for thread safety. + + A slice. + + + + Releasing a ByteArraySlice, will put it back into the pool, if it was acquired from one. + + The ByteArraySlice to return to the pool. + The stackIndex for this slice. + True if this slice was returned to some pool. False if not (null or stackIndex < 0. + + + + Clears all pool items with byte array sizes between lower and upper inclusively. + + + Use this if you sent some unusually large RaiseEvents and believe the buffers of that size + will not be needed again, and you would like to free up the buffer memory. + + + + + Replacement for Dictionary<K,V> which does not allocate memory during usage. + + Key type. + Value type. + + + + This is a substitute for the Hashtable class, missing in: Win8RT and Windows Phone. It uses a Dictionary<object,object> as base. + + + Please be aware that this class might act differently than the Hashtable equivalent. + As far as Photon is concerned, the substitution is sufficiently precise. + + + + + Translates the byte key into the pre-boxed byte before doing the lookup. + + + + + + + Creates a shallow copy of the Hashtable. + + + A shallow copy of a collection copies only the elements of the collection, whether they are + reference types or value types, but it does not copy the objects that the references refer + to. The references in the new collection point to the same objects that the references in + the original collection point to. + + Shallow copy of the Hashtable. + + + + Used as container for unknown types the client could not deserialize. + + + + + The type code which was read for this type. + + + + + The size/length value that was read for this type. + + May be larger than Data.Length, if the Size exceeded the remaining message content. + + + + Container for the data that arrived. + + If the Size exceeded the remaining message length, only the remaining data is read. This may be null, if the size was somehow less than 1. + + + Interface for DatagramEncryptor implementations. + + + Initialize the encryptor. + + + + Encryption/decryption algorithm implementation + + + + + Packet authentication algorithm impelmenation + + + + Number for reliable unsequenced commands (separate from "standard" reliable sequenced). Used to avoid duplicates. + + + The highest number of reliable unsequenced commands that arrived (and all commands before). + + + Any reliable unsequenced number that's been received, which is higher than the current highest in complete sequence (reliableUnsequencedNumbersCompletelyReceived). + + + To store the highest acknowledged sequence number (and get some impression what the server already received and stored). + + + Checks and queues incoming reliable unsequenced commands ("send" or "fragment"), if they haven't been received yet. + The command to check and queue. + True if the command is new and got queued (or could be executed/dispatched). + + + Quick Resends are suspended if the sent queue is this size or larger. + + + One list for all channels keeps sent commands (for re-sending). + + + One pool of ACK byte arrays ( 20 bytes each) for all channels to keep acknowledgements. + + + Gets enabled by "request" from server (not by client). + + + Initial PeerId as used in Connect command. If EnableServerTracing is false. + + + Initial PeerId to enable Photon Tracing, as used in Connect command. See: EnableServerTracing. + + + + Checks the incoming queue and Dispatches received data if possible. + + If a Dispatch happened or not, which shows if more Dispatches might be needed. + + + Gets the target size for fragments. + + Caches the result for a specific MTU value. + Fragment length is different, when datagram encryption is used (so this caches two values in fact). + + + + + + gathers acks until udp-packet is full and sends it! + + + + Queue of received commands. ReceiveIncomingCommands will queue commands, except ACKs which Execute immediately. + + + + gathers commands from all (out)queues until udp-packet is full and sends it! + + + + + Checks connected state and channel before operation is serialized and enqueued for sending. + + if operation could be enqueued + + + reliable-udp-level function to send some byte[] to the server via un/reliable command + only called when a custom operation should be send + the invocation ID for this operation (the payload) + + + reads incoming udp-packages to create and queue incoming commands* + + + Queues incoming commands in the correct order as either unreliable, reliable or unsequenced. + If queued or not. + + + removes commands which are acknowledged + + + + Enumeration of situations that change the peers internal status. + Used in calls to OnStatusChanged to inform your application of various situations that might happen. + + + Most of these codes are referenced somewhere else in the documentation when they are relevant to methods. + + + + the PhotonPeer is connected.
See {@link PhotonListener#OnStatusChanged}*
+
+ + the PhotonPeer just disconnected.
See {@link PhotonListener#OnStatusChanged}*
+
+ + the PhotonPeer encountered an exception and will disconnect, too.
See {@link PhotonListener#OnStatusChanged}*
+
+ + Exception while opening the incoming connection to the server. Followed by Disconnect. + The server could be down / not running or the client has no network or a misconfigured DNS.
See {@link PhotonListener#OnStatusChanged}*
+
+ + Used on platforms that throw a security exception on connect. Unity3d does this, e.g., if a webplayer build could not fetch a policy-file from a remote server. + + + Sending command failed. Either not connected, or the requested channel is bigger than the number of initialized channels. + + + Exception, if a server cannot be connected. Followed by Disconnect. + Most likely, the server is not responding. Ask user to try again later. + + + Disconnection due to a timeout (client did no longer receive ACKs from server). Followed by Disconnect. + + + Timeout disconnect by server. The server didn't receive necessary ACKs in time. Followed by Disconnect. + + + Disconnect by server due to concurrent user limit reached (received a disconnect command). + + + (1043) Disconnect by server due to server's logic. Followed by Disconnect. + + + Disconnect by server due to unspecified reason. Followed by Disconnect. + + + (1048) Value for OnStatusChanged()-call, when the encryption-setup for secure communication finished successfully. + + + (1049) Value for OnStatusChanged()-call, when the encryption-setup failed for some reason. Check debug logs. + + + + Callback interface for the Photon client side. Must be provided to a new PhotonPeer in its constructor. + + + These methods are used by your PhotonPeer instance to keep your app updated. Read each method's + description and check out the samples to see how to use them. + + + + + Provides textual descriptions for various error conditions and noteworthy situations. + In cases where the application needs to react, a call to OnStatusChanged is used. + OnStatusChanged gives "feedback" to the game, DebugReturn provies human readable messages + on the background. + + + All debug output of the library will be reported through this method. Print it or put it in a + buffer to use it on-screen. Use PhotonPeer.DebugOut to select how verbose the output is. + + DebugLevel (severity) of the message. + Debug text. Print to System.Console or screen. + + + + Callback method which gives you (async) responses for called operations. + + + Similar to method-calling, operations can have a result. + Because operation-calls are non-blocking and executed on the server, responses are provided + after a roundtrip as call to this method. + + Example: Trying to create a room usually succeeds but can fail if the room's name is already + in use (room names are their IDs). + + This method is used as general callback for all operations. Each response corresponds to a certain + "type" of operation by its OperationCode. + + + + When you join a room, the server will assign a consecutive number to each client: the + "actorNr" or "player number". This is sent back in the operation result. + + Fetch your actorNr of a Join response like this: + int actorNr = (int)operationResponse[(byte)OperationCode.ActorNr]; + + The response to an operation\-call. + + + + OnStatusChanged is called to let the game know when asynchronous actions finished or when errors happen. + + + Not all of the many StatusCode values will apply to your game. Example: If you don't use encryption, + the respective status changes are never made. + + The values are all part of the StatusCode enumeration and described value-by-value. + + A code to identify the situation. + + + + Called whenever an event from the Photon Server is dispatched. + + + Events are used for communication between clients and allow the server to update clients anytime. + The creation of an event is often triggered by an operation (called by this client or an other). + + Each event carries a Code plus optional content in its Parameters. + Your application should identify which content to expect by the event's Code. + + Events can be defined and modified server-side. + + If you use the LoadBalancing api as basis, several events like EvJoin and EvLeave are pre-defined. + The LoadBalancing api provides the EventCode and ParameterCode classes for pre-defined events. + + Photon also allows you to come up with custom events on the fly, purely client-side. + To do so, use OpRaiseEvent. + + Events are incoming messages and as such buffered in the peer. + Calling PhotonPeer.DispatchIncomingCommands will call IPhotonPeerListener.OnEvent, to hand over received events. + + PhotonPeer.ReuseEventInstance is an option to optimize memory usage by reusing one EventData instance. + + The event currently being dispatched. + + + The protocol for this socket, defined in constructor. + + + Address, as defined via a Connect() call. Including protocol, port and or path. + This is set in the constructor and in Connect() again. Typically the address does not change after the IPhotonSocket is instantiated. + + + Contains only the server's hostname (stripped protocol, port and or path). Set in IPhotonSocket.Connect(). + + + Contains the IP address of the previously resolved ServerAddress (or empty, if GetIpAddress wasn't used). + + + Contains only the server's port address (as string). Set in IphotonSocket.Connect(). + + + Where available, this exposes if the server's address was resolved into an IPv6 address or not. + + + + Provides the protocol string, of the current PhotonPeer.SerializationProtocolType to be used for WebSocket connections. + + + Any WebSocket wrapper could access this to get the desired binary protocol for the connection. + Some WebSocket implementations use a static value of the same name and need to be updated. + + The value is not cached and each call will create the needed string on the fly. + + + + + Separates the given address into address (host name or IP) and port. Port must be included after colon! + + + This method expects any address to include a port. The final ':' in addressAndPort has to separate it. + IPv6 addresses have multiple colons and must use brackets to separate address from port. + + Examples: + ns.exitgames.com:5058 + http://[2001:db8:1f70::999:de8:7648:6e8]:100/ + [2001:db8:1f70::999:de8:7648:6e8]:100 + See: + http://serverfault.com/questions/205793/how-can-one-distinguish-the-host-and-the-port-in-an-ipv6-url + + + + Wraps a DNS call to provide an array of addresses, sorted to have the IPv6 ones first. + + This skips a DNS lookup, if the hostname is an IPv4 address. Then only this address is used as is. + The DNS lookup may take a while, so it is recommended to do this in a thread. Also, it may fail entirely. + + + IPAddress array for hostname, sorted to put any IPv6 addresses first.
+ If the DNS lookup fails, HandleException(StatusCode.ExceptionOnConnect) gets called and null returned. + Then the socket should not attempt to connect. +
+
+ + + Returns null or the IPAddress representing the address, doing Dns resolution if needed. + + Only returns IPv4 or IPv6 adresses, no others. + The string address of a server (hostname or IP). + IPAddress for the string address or null, if the address is neither IPv4, IPv6 or some hostname that could be resolved. + + + Variants of the Photon specific serialization protocol used for operations, responses, events and data. + + + Version 1.6 (outdated). + + + Version 1.8. + + + + + + + Serialize creates a byte-array from the given object and returns it. + + The object to serialize + The serialized byte-array + + + + Deserialize returns an object reassembled from the given StreamBuffer. + + The buffer to be Deserialized + The Deserialized object + + + + Deserialize returns an object reassembled from the given byte-array. + + The byte-array to be Deserialized + The Deserialized object + + + + Interface for (UDP) traffic capturing. + + + + Indicates if the PhotonPeer should call Record or not. + + + Implement to record network traffic. Called by PhotonPeer for each UDP message sent and received. + + The buffer will not contain Ethernet Header, IP, UDP level data. Only the payload received by the client. + + It is advised to not use NetworkSimulation when recording traffic. + The recording is done on the timing of actual receive- and send-calls and internal simulation would offset the timing. + + Buffer to be sent or received. Check length value for actual content length. + Length of the network data. + Indicates incoming (true) or outgoing (false) traffic. + The local peerId for the connection. Defaults to 0xFFFF until assigned by the Server. + The currently used IPhotonSocket of this Peer. Enables you to track the connection endpoint. + + + Internal class for "commands" - the package in which operations are sent. + + + Size of the Payload, which may be null. + + + Checks commandFlags & FV_UNRELIABLE_UNSEQUENCED. + + + Checks commandFlags & FV_RELIABLE. + + + + ACKs should never be created as NCommand. use CreateACK to wrtie the serialized ACK right away... + + + + + + + + + this variant does only create outgoing commands and increments . incoming ones are created from a DataInputStream + + + this variant does only create outgoing commands and increments . incoming ones are created from a DataInputStream + + + reads the command values (commandHeader and command-values) from incoming bytestream and populates the incoming command* + + + + A simulation item is an action that can be queued to simulate network lag. + + + + With this, the actual delay can be measured, compared to the intended lag. + + + Timestamp after which this item must be executed. + + + Action to execute when the lag-time passed. + + + Starts a new Stopwatch + + + + A set of network simulation settings, enabled (and disabled) by PhotonPeer.IsSimulationEnabled. + + + For performance reasons, the lag and jitter settings can't be produced exactly. + In some cases, the resulting lag will be up to 20ms bigger than the lag settings. + Even if all settings are 0, simulation will be used. Set PhotonPeer.IsSimulationEnabled + to false to disable it if no longer needed. + + All lag, jitter and loss is additional to the current, real network conditions. + If the network is slow in reality, this will add even more lag. + The jitter values will affect the lag positive and negative, so the lag settings + describe the medium lag even with jitter. The jitter influence is: [-jitter..+jitter]. + Packets "lost" due to OutgoingLossPercentage count for BytesOut and LostPackagesOut. + Packets "lost" due to IncomingLossPercentage count for BytesIn and LostPackagesIn. + + + + internal + + + internal + + + internal + + + internal + + + internal + + + internal + + + internal + + + This setting overrides all other settings and turns simulation on/off. Default: false. + + + Outgoing packages delay in ms. Default: 100. + + + Randomizes OutgoingLag by [-OutgoingJitter..+OutgoingJitter]. Default: 0. + + + Percentage of outgoing packets that should be lost. Between 0..100. Default: 1. TCP ignores this setting. + + + Incoming packages delay in ms. Default: 100. + + + Randomizes IncomingLag by [-IncomingJitter..+IncomingJitter]. Default: 0. + + + Percentage of incoming packets that should be lost. Between 0..100. Default: 1. TCP ignores this setting. + + + Counts how many outgoing packages actually got lost. TCP connections ignore loss and this stays 0. + + + Counts how many incoming packages actually got lost. TCP connections ignore loss and this stays 0. + + + Provides an overview of the current values in form of a string. + String summary. + + + + The pool this wrapper should return to when released/disposed. + + + + + Gets value and if it belongs to the static pool, returns the wrapper to pool. + + + + + + Boxes the value and returns boxed object. Releases the wrapper. + + + + + + Removes this WrapperStruct from pooling. + + + + Returns a String which represents the value of this instance. + String which represents the value of this instance. + + + Returns a String which represents the type (in brackets and value of this instance. + String which represents the type (in brackets) and value of this instance. + + + + staticPool is used for implicit casting. This is not threadsafe, so casting between T and StructWrapper should only be done on the Unity main thread. + + + + + Replacement for object.GetType() that first checks to see if object is a WrappedStruct. + If so returns the StructWrapper T type, otherwise just returns object.GetType(). + + + + + + + Wrap a struct in a pooled StructWrapper. + + + + + Wrap a struct in a pooled StructWrapper. Pulls wrapper from the static pool. Wrapper is returned to pool when Unwrapped. + Slighty faster version of Wrap() that is hard wired to pull from the static pool. Use the persistant bool argument to make a permanent unpooled wrapper. + + + + + Tests if object is either a cast T, or a wrapped T + + + + + Remove all wrappers in hashtable from pooling, so they can remain cached and used later. + + + + + + Unwraps any WrapperStructs, boxes their value, releases hashtable entry with the boxed value. Releases the wrappers. + + + + + If object is a StructWrapper, the value will be extracted. If not, the object will be cast to T. + Wrapper is returned to the wrapper pool if applicable, so it is not considered safe to Unwrap multiple times, as the wrapper may be recycled. + + + + + If object is a StructWrapper, the value will be extracted. If not, the object will be cast to T. + Wrapper is will not be returned to its pool until it is Unwrapped, or the pool is cleared. + + + + + If object is a StructWrapper, the value will be extracted. If not, the object will be cast to T. + Wrapper is returned to the wrapper pool if applicable, so it is not considered safe to Unwrap multiple times, as the wrapper may be recycled. + + + + + If object is a StructWrapper, the value will be extracted. If not, the object will be cast to T. + Wrapper is returned to the wrapper pool if applicable, so it is not considered safe to Unwrap multiple times, as the wrapper may be recycled. + + + + + If object is a StructWrapper, the value will be extracted. If not, the object will be cast to T. + + + + + If object is a StructWrapper, the value will be extracted. If not, the object will be cast to T. + + + + + If object is a StructWrapper, the value will be extracted. If not, the object will be cast to T. + Wrapper is returned to the wrapper pool if applicable, so it is not considered safe to Unwrap multiple times, as the wrapper may be recycled. + + + + + If object is a StructWrapper, the value will be extracted. If not, the object will be cast to T. + Wrapper is returned to the wrapper pool if applicable, so it is not considered safe to Unwrap multiple times, as the wrapper may be recycled. + + + + + If object is a StructWrapper, the value will be extracted. If not, the object will be cast to T. + Wrapper is will not be returned to its pool until it is Unwrapped, or the pool is cleared. + + + + + + + + + + + Will get the object using the key. If the key is invalid, will return null. + + + + + + Dictionary content as string. + If true, type-info is also included. + Full content of dictionary as string. + + + Param code. Used in internal op: InitEncryption. + + + Encryption-Mode code. Used in internal op: InitEncryption. + + + Param code. Used in internal op: InitEncryption. + + + Code of internal op: InitEncryption. + + + TODO: Code of internal op: Ping (used in PUN binary websockets). + + + Result code for any (internal) operation. + + + + This is the replacement for the const values used in eNet like: PS_DISCONNECTED, PS_CONNECTED, etc. + + + + No connection is available. Use connect. + + + Establishing a connection already. The app should wait for a status callback. + + + + The low level connection with Photon is established. On connect, the library will automatically + send an Init package to select the application it connects to (see also PhotonPeer.Connect()). + When the Init is done, IPhotonPeerListener.OnStatusChanged() is called with connect. + + Please note that calling operations is only possible after the OnStatusChanged() with StatusCode.Connect. + + + Connection going to be ended. Wait for status callback. + + + Acknowledging a disconnect from Photon. Wait for status callback. + + + Connection not properly disconnected. + + + The server's address, as set by a Connect() call, including any protocol, ports and or path. + If rHTTP is used, this can be set directly. + + + + This is the (low level) connection state of the peer. It's internal and based on eNet's states. + + Applications can read the "high level" state as PhotonPeer.PeerState, which uses a different enum. + + + Byte count of last sent operation (set during serialization). + + + Byte count of last dispatched message (set during dispatch/deserialization). + + + The command that's currently being dispatched. + + + This ID is assigned by the Realtime Server upon connection. + The application does not have to care about this, but it is useful in debugging. + + + + The serverTimeOffset is serverTimestamp - localTime. Used to approximate the serverTimestamp with help of localTime + + + + + Count of all bytes going out (including headers) + + + + + Count of all bytes coming in (including headers) + + + + Set via Connect(..., customObject) and sent in Init-Request. + + + Sent on connect in an Init Request. + + + Temporary cache of AppId. Used in Connect() to keep the AppId until we send the Init-Request (after the network-level (and Enet) connect). + + + Set to timeInt, whenever SendOutgoingCommands actually checks outgoing queues to send them. Must be connected. + + + Maximum Transfer Unit to be used for UDP+TCP + + + If IPhotonSocket.Connected is true, this value shows if the server's address resolved as IPv6 address. + + You must check the socket's IsConnected state. Otherwise, this value is not initialized. + Sent to server in Init-Request. + + + + + Writes and "Init Request", which initializes the connection / application used server-side. + + Uses this.ServerAddress, this.AppId, this.PhotonToken and CustomInitData and some more values. + Bytes of the init request. + + + Called when the server's Init Response arrived. + + + Serializes an operation into our binary messages (magic number, msg-type byte and message). Optionally encrypts. + This method is mostly the same in EnetPeer, TPeer and HttpPeerBase. Also, for raw messages, we have another variant. + + + Serializes an operation into our binary messages (magic number, msg-type byte and message). Optionally encrypts. + This method is mostly the same in EnetPeer, TPeer and HttpPeerBase. Also, for raw messages, we have another variant. + + + Returns the UDP Payload starting with Magic Number for binary protocol + + + + Checks outgoing queues for commands to send and puts them on their way. + This creates one package per go in UDP. + + If commands are not sent, cause they didn't fit into the package that's sent. + + + + Checks the incoming queue and Dispatches received data if possible. + + If a Dispatch happened or not, which shows if more Dispatches might be needed. + + + + Internally uses an operation to exchange encryption keys with the server. + + If the op could be sent. + + + + Gets the currently used settings for the built-in network simulation. + Please check the description of NetworkSimulationSet for more details. + + + + + Core of the Network Simulation, which is available in Debug builds. + Called by a timer in intervals. + + + + EnetPeer will set this value, so trafficstats can use it. TCP has 0 bytes per package extra + + + See PhotonPeer value. + + + See PhotonPeer value. + + + See PhotonPeer value. + + + See PhotonPeer value. + + + + Value range for a Peer's connection and initialization state, as returned by the PeerState property. + + + While this is not the same as the StatusCode of IPhotonPeerListener.OnStatusChanged(), it directly relates to it. + In most cases, it makes more sense to build a game's state on top of the OnStatusChanged() as you get changes. + + + + The peer is disconnected and can't call Operations. Call Connect(). + + + The peer is establishing the connection: opening a socket, exchanging packages with Photon. + + + The connection is established and now sends the application name to Photon. + You set the "application name" by calling PhotonPeer.Connect(). + + + The peer is connected and initialized (selected an application). You can now use operations. + + + The peer is disconnecting. It sent a disconnect to the server, which will acknowledge closing the connection. + + + + These are the options that can be used as underlying transport protocol. + + + + Use UDP to connect to Photon, which allows you to send operations reliable or unreliable on demand. + + + Use TCP to connect to Photon. + + + A TCP-based protocol commonly supported by browsers.For WebGL games mostly. Note: No WebSocket IPhotonSocket implementation is in this Assembly. + This protocol is only available in Unity exports to WebGL. + + + A TCP-based, encrypted protocol commonly supported by browsers. For WebGL games mostly. Note: No WebSocket IPhotonSocket implementation is in this Assembly. + This protocol is only available in Unity exports to WebGL. + + + + Level / amount of DebugReturn callbacks. Each debug level includes output for lower ones: OFF, ERROR, WARNING, INFO, ALL. + + + + No debug out. + + + Only error descriptions. + + + Warnings and errors. + + + Information about internal workflows, warnings and errors. + + + Most complete workflow description (but lots of debug output), info, warnings and errors. + + + Build target framework supported by this dll. + + + + Instances of the PhotonPeer class are used to connect to a Photon server and communicate with it. + + + A PhotonPeer instance allows communication with the Photon Server, which in turn distributes messages + to other PhotonPeer clients. + An application can use more than one PhotonPeer instance, which are treated as separate users on the + server. Each should have its own listener instance, to separate the operations, callbacks and events. + + + + + No effect anymore. Removed without replacement. + + + This value was used to get/set the initial capacities of command-lists. + These grow on demand but knowing their capacity is of very limited use. + Also, various command-lists grow their capacity independent from one another. + + + + + No effect anymore. Removed without replacement. + + + This was used to skip some received (and buffered) unreliable commands, to avoid situations + where the peer has aggregated a lot of (old) messages. + + + + + The WarningSize was used test all message queues for congestion. + + + + + Gets a local timestamp in milliseconds by calling SupportClass.GetTickCount(). + See LocalMsTimestampDelegate. + + + + Where dynamic linking is available, this library will attempt to load a native Photon "Encryptor" plugin library for "Datagram Encryption". + Fallback to a managed implementation. This value is always true. + + + Obsolete and ignored. Size of CommandLog. Default is 0, no logging. + + + Obsolete and ignored. Converts the CommandLog into a readable table-like string with summary. + + + False if this library build contains C# Socket code. If true, you must set some type as SocketImplementation before connecting. + + + True if the library was compiled with DEBUG setting. + + + Version of the Native Encryptor API compiled into this assembly. Defines which PhotonEncryptorPlugin needs to be used. + + + Target framework this dll was built for. + + + Global toggle to avoid callbacks from native plugins. Defaults to false, meaning: "callbacks enabled". + Callbacks from native code will fail on some platforms, which is why you can disable them. + + + Can be used to remove/hide the AppId from websocket connect paths. + + + A simplified identifier for client SDKs. Photon's APIs might modify this (as a dll can be used in more than one product). Helps debugging. + + + For the Init-request, we shift the ClientId by one and the last bit signals a "debug" (0) or "release" build (1). + + + Version of this library as string. + + + Version of this library as string. + + + A Native Socket implementation is no longer part of this DLL but delivered in a separate add-on. This value always returns false. + + + Native Payload Encryption is no longer part of this DLL but delivered in a separate add-on. This value always returns false. + + + Native Datagram Encryption is no longer part of this DLL but delivered in a separate add-on. This value always returns false. + + + Enables selection of a (Photon-)serialization protocol. Used in Connect methods. + Defaults to SerializationProtocol.GpBinaryV16; + + + Optional definition of IPhotonSocket type per ConnectionProtocol. + + Several platforms have special Socket implementations and slightly different APIs. + Customizing the SocketImplementationConfig helps to accomodate this. + By default, UDP and TCP have socket implementations assigned. + + If a native socket plugin is available set the SocketNativeSource class as Type definition here. + + You only need to set the SocketImplementationConfig once, after creating a PhotonPeer + and before connecting. If you switch the TransportProtocol, the correct implementation is being used. + + + + + Can be used to read the IPhotonSocket implementation at runtime (before connecting). + + + Use the SocketImplementationConfig to define which IPhotonSocket is used per ConnectionProtocol. + + + + + Sets the level (and amount) of debug output provided by the library. + + + This affects the callbacks to IPhotonPeerListener.DebugReturn. + Default Level: Error. + + + + + Gets the IPhotonPeerListener of this instance (set in constructor). + Can be used in derived classes for Listener.DebugReturn(). + + + + + Called when the client received a Disconnect Message from the server. Signals an error and provides a message to debug the case. + + + + + Option to make the PhotonPeer reuse a single EventData instance for all incoming events. + + + This reduces memory garbage. + If enabled, the event provided via OnEvent(EventData photonEvent) is invalid once the callback finished. + That event's content will get modified. Typically this is not a problem as events are rarely cached. + + Changing this value acquires the same lock that DispatchIncomingCommands() uses. + + + + + Enables a deserialization optimization for incoming events. Defaults to false. + + + When enabled, byte-arrays in incoming Photon events are deserialized into pooled ByteArraySlice instances (wrappers for byte[]). + This improves the memory footprint for receiving byte-arrays in events. + + When used, you have to release the (pooled) ByteArraySlice instances. + + Adjust your handling of EventData accordingly: + + The ByteArraySlice.Buffer will usually be bigger than the send/received byte-array. + Check the ByteArraySlice.Count and read only the actually received bytes. + The Buffer is reused and not cleared. The Offset will be 0 for incoming events. + + Important: + While the peer will acquire the ByteArraySlice and passes it to OnEvent, the game code has to call ByteArraySlice.Release() + when the slice is no longer needed. + + Send either byte[], ArraySegment or use the ByteArraySlicePool to acquire ByteArraySlices to send. + + + + + Instance of a ByteArraySlicePool. UseByteArraySlicePoolForEvents defines if this PhotonPeer is using the pool for deserialization of byte[] in Photon events. + + ByteArraySlice is a serializable datatype of the Photon .Net client library. + It helps avoid allocations by being pooled and (optionally) used in incoming Photon events (see: UseByteArraySlicePoolForEvents). + + You can also use the pool to acquire ByteArraySlice instances for serialization. + RaiseEvent will auto-release all ByteArraySlice instances passed in. + + + + + This debug setting enables a new send-ordering for commands. Defaults to true and commands are sent in the order they are created. Set to false to use Enet ordering. + + + + Skips resending (individual) commands if their reliable sequence number is this amount larger than the highest acknowledged sequence number. + + This puts focus on resending commands that are older and are needed on the receiver side to dispatch commands. + It queues more on the client side than on the server. + Affects only reliable UDP (based on enet). + + + + Skips sending reliable and unreliable commands if their reliable sequence number is this amount larger than the highest acknowledged sequence number. + + This puts focus on resending commands that are older and are needed on the receiver side to dispatch commands. + It queues more on the client side than on the server. + Affects only reliable UDP (based on enet). + + + + + Gets count of all bytes coming in (including headers, excluding UDP/TCP overhead) + + + + + Gets count of all bytes going out (including headers, excluding UDP/TCP overhead) + + + + + Gets the size of the dispatched event or operation-result in bytes. + This value is set before OnEvent() or OnOperationResponse() is called (within DispatchIncomingCommands()). + + + Get this value directly in OnEvent() or OnOperationResponse(). Example: + void OnEvent(...) { + int eventSizeInBytes = this.peer.ByteCountCurrentDispatch; + //... + + void OnOperationResponse(...) { + int resultSizeInBytes = this.peer.ByteCountCurrentDispatch; + //... + + + + Returns the debug string of the event or operation-response currently being dispatched or string. Empty if none. + In a release build of the lib, this will always be empty. + + + + Gets the size of the last serialized operation call in bytes. + The value includes all headers for this single operation but excludes those of UDP, Enet Package Headers and TCP. + + + Get this value immediately after calling an operation. + Example: + + this.loadbalancingClient.OpJoinRoom("myroom"); + int opjoinByteCount = this.loadbalancingClient.ByteCountLastOperation; + + + + If set, the TrafficRecorder will be used to capture all traffic. + + If null or not Enabled, the recorder is not being used. + Release builds of this library will never record traffic for performance reasons. + + See ITrafficRecorder docs. + + + + + Debugging option to tell the Photon Server to log all datagrams. + + + + + Up to 4 resend attempts for a reliable command can be done in quick succession (after RTT+4*Variance). + + + By default 0. Any later resend attempt will then double the time before the next resend. + Max value = 4; + Make sure to adjust SentCountAllowance to a slightly higher value, as more repeats will get done. + + + + + This is the (low level) state of the connection to the server of a PhotonPeer. Managed internally and read-only. + + + Don't mix this up with the StatusCode provided in IPhotonListener.OnStatusChanged(). + Applications should use the StatusCode of OnStatusChanged() to track their state, as + it also covers the higher level initialization between a client and Photon. + + + + + This peer's ID as assigned by the server or 0 if not using UDP. Will be 0xFFFF before the client connects. + + Used for debugging only. This value is not useful in everyday Photon usage. + + + + Count of all currently received but not-yet-Dispatched reliable commands + (events and operation results) from all channels. + + + + + Count of all commands currently queued as outgoing, including all channels and reliable, unreliable. + + + + + Sets a new (temporary) size of the MessageBufferPool to reuse memory where possible. + + + The MessageBufferPool is a Queue<StreamBuffer> for performance reasons. + This methods dequeues from the MessageBufferPool to get the Count equal to countOfBuffers, + then it calls MessageBufferPool.TrimExcess(). + + New size of the pool. Clears the pool if <= 0. + + + + Gets / sets the number of channels available in UDP connections with Photon. + Photon Channels are only supported for UDP. + The default ChannelCount is 2. Channel IDs start with 0 and 255 is a internal channel. + + + + + Enables the client so send the "encrypted" flag on secure connections. Incompatible with Server SDK 4.x. + + + + + While not connected, this controls if the next connection(s) should use a per-package CRC checksum. + + + While turned on, the client and server will add a CRC checksum to every sent package. + The checksum enables both sides to detect and ignore packages that were corrupted during transfer. + Corrupted packages have the same impact as lost packages: They require a re-send, adding a delay + and could lead to timeouts. + + Building the checksum has a low processing overhead but increases integrity of sent and received data. + Packages discarded due to failed CRC cecks are counted in PhotonPeer.PacketLossByCrc. + + + + + Count of packages dropped due to failed CRC checks for this connection. + + + + + + Count of packages dropped due to wrong challenge for this connection. + + + + + Gets the count of sent but not yet acknowledged commands (for UDP connections). + + + + + Count of commands that got repeated (due to local repeat-timing before an ACK was received). + + + + + Number of send retries before a peer is considered lost/disconnected. Default: 7. + + + The initial timeout countdown of a command is calculated by the current roundTripTime + 4 * roundTripTimeVariance. + Please note that the timeout span until a command will be resent is not constant, but based on + the roundtrip time at the initial sending, which will be doubled with every failed retry. + + DisconnectTimeout and SentCountAllowance are competing settings: either might trigger a disconnect on the + client first, depending on the values and Roundtrip Time. + + + + + Caps the initial timing for repeats of reliable commands. In milliseconds. Default: 400ms. + + + Unless acknowledged, reliable commands are repeated initially after: current roundTripTime + 4 * roundTripTimeVariance. + + As this value can be very high when there was exceptional lag, InitialResendTimeMax makes sure that commands + get repeated several times before they may trigger a timeout. + + + + + Sets the time between pings being sent automatically. They measure the roundtrip time and keep connections from closing. Default: 1000. + + + For Photon's reliable UDP connections, pings are skipped if any reliable command was sent during the specified TimePingInterval. + Any reliable command is used to update the RoundTripTime and RoundTripTimeVariance. + + When using TCP and WebSockets, the ping is of interest to measure the roundtrip and to keep a connection open, should nothing else + With those two protocols, the ping is used to update the RoundTripTime and RoundTripTimeVariance. + + + + + Time in milliseconds before any sent reliable command triggers a timeout disconnect, unless acknowledged by the receiver. Default: 10000. + + + DisconnectTimeout is not an exact value for a timeout. The exact timing of the timeout depends on the frequency + of Service() calls and the roundtrip time. Commands sent with long roundtrip-times and variance are checked less + often for re-sending. + + DisconnectTimeout and SentCountAllowance are competing settings: either might trigger a disconnect on the + client first, depending on the values and Roundtrip Time. + + Default: 10000 ms. Maximum setting: 65535. + Setting a negative value will apply the default timeout. + + + + + Approximated Environment.TickCount value of server (while connected). + + + UDP: The server's timestamp is automatically fetched after connecting (once). This is done + internally by a command which is acknowledged immediately by the server. + TCP: The server's timestamp fetched with each ping but set only after connecting (once). + + The approximation will be off by +/- 10ms in most cases. Per peer/client and connection, the + offset will be constant (unless FetchServerTimestamp() is used). A constant offset should be + better to adjust for. Unfortunately there is no way to find out how much the local value + differs from the original. + + The approximation adds RoundtripTime / 2 and uses this.LocalTimeInMilliSeconds to calculate + in-between values (this property returns a new value per tick). + + The value sent by Photon equals Environment.TickCount in the logic layer. + + + 0 until connected. + While connected, the value is an approximation of the server's current timestamp. + + + + + This setter for the (local-) timestamp delegate replaces the default Environment.TickCount with any equal function. + + + + The internally used per PhotonPeer time value. + + Returns the integer part of a Stopwatch ElapsedMilliseconds value. + If the PhotonPeer runs continuously the ClientTime will increment from zero to Int32..::.MaxValue + for approximately 24.9 days, then jump to Int32..::.MinValue (a negative number), then increment + back to zero during the next 24.9 days. + + It is recommended to use this int only for delta times, to avoid handling the overflow. + + + + The last ConnectionTime value, when some ACKs were sent out by this client. + Only applicable to UDP connections. + + + The last ConnectionTime value, when SendOutgoingCommands actually checked outgoing queues to send them. Must be connected. + Available for UDP and TCP connections. + + + Measures the maximum milliseconds spent in PhotonSocket.Send(). + + + Time until a reliable command is acknowledged by the server. + + The value measures network latency and for UDP it includes the server's ACK-delay (setting in config). + In TCP, there is no ACK-delay, so the value is slightly lower (if you use default settings for Photon). + + RoundTripTime is updated constantly. Every reliable command will contribute a fraction to this value. + + This is also the approximate time until a raised event reaches another client or until an operation + result is available. + + + + + Changes of the roundtriptime as variance value. Gives a hint about how much the time is changing. + + + + The last measured roundtrip time for this connection. + + + + Timestamp of the last time anything (!) was received from the server (including low level Ping, ACKs, events and operation-returns). + + + This is not the time when something was dispatched. If you enable NetworkSimulation, this value is affected as well. + + + + + The server address which was used in PhotonPeer.Connect() or null (before Connect() was called). + + + + Contains the IP address of the previously resolved ServerAddress (or empty, if address wasn't resolved with the internal methods). + + + The protocol this peer is currently connected/connecting with (or 0). + + + This is the transport protocol to be used for next connect (see remarks). + The TransportProtocol can be changed anytime but it will not change the + currently active connection. Instead, TransportProtocol will be applied on next Connect. + + + + + Gets or sets the network simulation "enabled" setting. + Changing this value also locks this peer's sending and when setting false, + the internally used queues are executed (so setting to false can take some cycles). + + + + + Gets the settings for built-in Network Simulation for this peer instance + while IsSimulationEnabled will enable or disable them. + Once obtained, the settings can be modified by changing the properties. + + + + + Defines the initial size of an internally used StreamBuffer for Tcp. + The StreamBuffer is used to aggregate operation into (less) send calls, + which uses less resoures. + + + The size is not restricing the buffer and does not affect when outgoing data is actually sent. + + + + + The Maximum Trasfer Unit (MTU) defines the (network-level) packet-content size that is + guaranteed to arrive at the server in one piece. The Photon Protocol uses this + size to split larger data into packets and for receive-buffers of packets. + + + This value affects the Packet-content. The resulting UDP packages will have additional + headers that also count against the package size (so it's bigger than this limit in the end) + Setting this value while being connected is not allowed and will throw an Exception. + Minimum is 576. Huge values won't speed up connections in most cases! + + + + + This property is set internally, when OpExchangeKeysForEncryption successfully finished. + While it's true, encryption can be used for operations. + + + + + While true, the peer will not send any other commands except ACKs (used in UDP connections). + + + + Defines if Key Exchange for Encryption is done asynchronously in another thread. + + + Indicates if sequence numbers should be randomized. + + + Initialization array, used to modify the sequence numbers of channels. + + + If GCM is used for DatagramEncryption. + If true, the randomization-value gets added to the current value, else (CBC/old style) the randomization-value replaces the current value. + + + + Gets the byte-count of incoming "low level" messages, which are either Enet Commands or Tcp Messages. + These include all headers, except those of the underlying internet protocol Udp or Tcp. + + + + + Gets the byte-count of outgoing "low level" messages, which are either Enet Commands or Tcp Messages. + These include all headers, except those of the underlying internet protocol Udp or Tcp. + + + + + Gets a statistic of incoming and outgoing traffic, split by operation, operation-result and event. + + + Operations are outgoing traffic, results and events are incoming. + Includes the per-command header sizes (Udp: Enet Command Header or Tcp: Message Header). + + + + + Returns the count of milliseconds the stats are enabled for tracking. + + + + + Enables or disables collection of statistics in TrafficStatsIncoming, TrafficStatsOutgoing and TrafficstatsGameLevel. + + + Setting this to true, also starts the stopwatch to measure the timespan the stats are collected. + Enables the traffic statistics of a peer: TrafficStatsIncoming, TrafficStatsOutgoing and TrafficstatsGameLevel (nothing else). + Default value: false (disabled). + + + + + Creates new instances of TrafficStats and starts a new timer for those. + + + + + Creates new TrafficStats values and the related Stopwatch instance. To be called when the peer is created / reset. + + + + + Returns a string of the most interesting connection statistics. + When you have issues on the client side, these might contain hints about the issue's cause. + + If true, Incoming and Outgoing low-level stats are included in the string. + Stats as string. + + + Implements the message-protocol, based on the underlying network protocol (udp, tcp, http). + + + Setter for the Payload Encryptor type. Used for next connection. + + If null, the PhotonPeer will create a DiffieHellmanCryptoProvider, which is the default. + This is only needed in rare cases, where using native payload encryption makes sense. + + Get in touch about this, if you got questions: developer@photonengine.com + + + + PayloadEncryption Secret. Message payloads get encrypted with it individually and on demand. + + + Setter for the Datagram Encryptor type. Used at next connect. + + If null, the PhotonPeer will create a default datagram encryptor instance. + + + + The datagram encryptor used for the current connection. Applied internally in InitDatagramEncryption. + + + Count of unreliable commands being discarded in case this client already dispatched a command that was newer (higher sequence number). + + + Set per dispatch in DispatchIncomingCommands to: commandUnreliableSequenceNumber - channel.incomingUnreliableSequenceNumber. Indicates how big the (sequence)gap is, compared to the last dispatched unreliable command. + + + Creates a new PhotonPeer with specified transport protocol (without a IPhotonPeerListener). + Make sure to set the Listener, before using the peer. + + + + Creates a new PhotonPeer instance to communicate with Photon and selects the transport protocol. We recommend UDP. + + a IPhotonPeerListener implementation + Protocol to use to connect to Photon. + + + + Starts connecting to the given Photon server. Non-blocking. + + + Connecting to the Photon server is done asynchronous. + Unless an error happens right away (and this returns false), wait for the call of IPhotonPeerListener.OnStatusChanged. + + + Address of a Photon server as IP:port or hostname. WebSocket connections must contain a scheme (ws:// or wss://). + + + The ID of the app to use. Typically this is a guid (for the Photon Cloud). Max 32 characters. + + + Optional custom data to be used by server during peer creation. + If used for authentication, the server is able to reject a client without creating a peer. + Must be a serializable data type of Photon. + + Custom data to send to the server in the Init request. Might be used to identify a client / user. + + True if a connection attempt will be made. False if some error could be detected early-on. + + + + + Starts connecting to the given Photon server. Non-blocking. + + + Connecting to the Photon server is done asynchronous. + Unless an error happens right away (and this returns false), wait for the call of IPhotonPeerListener.OnStatusChanged. + + + Address of a Photon server as IP:port or hostname. WebSocket connections must contain a scheme (ws:// or wss://). + + + Optional address of a proxy server. Only used by WebSocket connections. Set null to use none. + + + The ID of the app to use. Typically this is a guid (for the Photon Cloud). Max 32 characters. + + + Optional Photon token data to be used by server during peer creation. + If used for authentication, the server is able to reject a client without creating a peer. + Must be of type string or byte[] (as provided by server). + + Custom data to send to the server in the Init request. Might be used to identify a client / user. + + True if a connection attempt will be made. False if some error could be detected early-on. + + + + + This method initiates a mutual disconnect between this client and the server. + + + Calling this method does not immediately close a connection. Disconnect lets the server + know that this client is no longer listening. For the server, this is a much faster way + to detect that the client is gone but it requires the client to send a few final messages. + + On completion, OnStatusChanged is called with the StatusCode.Disconnect. + + If the client is disconnected already or the connection thread is stopped, then there is no callback. + + The default server logic will leave any joined game and trigger the respective event. + + + + + This method immediately closes a connection (pure client side) and ends related listening Threads. + + + Unlike Disconnect, this method will simply stop to listen to the server. Udp connections will timeout. + If the connections was open, this will trigger a callback to OnStatusChanged with code StatusCode.Disconnect. + + + + + This will fetch the server's timestamp and update the approximation for property ServerTimeInMilliseconds. + + + The server time approximation will NOT become more accurate by repeated calls. Accuracy currently depends + on a single roundtrip which is done as fast as possible. + + The command used for this is immediately acknowledged by the server. This makes sure the roundtrip time is + low and the timestamp + rountriptime / 2 is close to the original value. + + + + + This method creates a public key for this client and exchanges it with the server. + + + Encryption is not instantly available but calls OnStatusChanged when it finishes. + Check for StatusCode EncryptionEstablished and EncryptionFailedToEstablish. + + Calling this method sets IsEncryptionAvailable to false. + This method must be called before the "encrypt" parameter of OpCustom can be used. + + If operation could be enqueued for sending + + + + Initializes Datagram Encryption. Optionally, the EncryptorType is being used, if set. + + Secret used to cipher udp packets. + Secret used for authentication of udp packets. + Sets if enet Sequence Numbers will be randomized or not. Preferably should be true. + Sets if the chaining mode should be CBC (false, default) or GCM (true). GCM mode is only available with a native encryption plugin. + + + + Photon's Payload Encryption secret may be set by a response from the server. + + The secret in form of a byte[]. + + + + This method excutes DispatchIncomingCommands and SendOutgoingCommands in your application Thread-context. + + + The Photon client libraries are designed to fit easily into a game or application. The application + is in control of the context (thread) in which incoming events and responses are executed and has + full control of the creation of UDP/TCP packages. + + Sending packages and dispatching received messages are two separate tasks. Service combines them + into one method at the cost of control. It calls DispatchIncomingCommands and SendOutgoingCommands. + + Call this method regularly (2..20 times a second). + + This will Dispatch ANY remaining buffered responses and events AND will send queued outgoing commands. + Fewer calls might be more effective if a device cannot send many packets per second, as multiple + operations might be combined into one package. + + + You could replace Service by: + + while (DispatchIncomingCommands()); //Dispatch until everything is Dispatched... + SendOutgoingCommands(); //Send a UDP/TCP package with outgoing messages + + + + + + + Creates and sends a UDP/TCP package with outgoing commands (operations and acknowledgements). Also called by Service(). + + + As the Photon library does not create any UDP/TCP packages by itself. Instead, the application + fully controls how many packages are sent and when. A tradeoff, an application will + lose connection, if it is no longer calling SendOutgoingCommands or Service. + + If multiple operations and ACKs are waiting to be sent, they will be aggregated into one + package. The package fills in this order: + ACKs for received commands + A "Ping" - only if no reliable data was sent for a while + Starting with the lowest Channel-Nr: + Reliable Commands in channel + Unreliable Commands in channel + + This gives a higher priority to lower channels. + + A longer interval between sends will lower the overhead per sent operation but + increase the internal delay (which adds "lag"). + + Call this 2..20 times per second (depending on your target platform). + + The if commands are not yet sent. Udp limits it's package size, Tcp doesnt. + + + + Dispatching received messages (commands), causes callbacks for events, responses and state changes within a IPhotonPeerListener. + + + DispatchIncomingCommands only executes a single received + command per call. If a command was dispatched, the return value is true and the method + should be called again. + + This method is called by Service() until currently available commands are dispatched. + In general, this method should be called until it returns false. In a few cases, it might + make sense to pause dispatching (if a certain state is reached and the app needs to load + data, before it should handle new events). + + The callbacks to the peer's IPhotonPeerListener are executed in the same thread that is + calling DispatchIncomingCommands. This makes things easier in a game loop: Event execution + won't clash with painting objects or the game logic. + + + + + Prepares your operation (code and parameters) to be sent to the Photon Server with specified SendOptions. + + + This method serializes and enqueues the operation right away while the actual sending happens later. + To be able to aggregate operations/messages, the Photon client sends packages only when you call SendOutgoingCommands(). + + The sendOptions specify how the operation gets sent exactly. + Keep in mind that some transport protocols don't support unreliable or unsequenced transport. + In that case, the sendOptions might be ignored. + + The operationCode must be known by the server's logic or won't be processed. + In almost all cases, sending an operation will result in a OperationResponse (see: IPhotonPeerListener.OnOperationResponse). + + Operations are handled by their byte\-typed code. The codes are defined in the Realtime API (a.k.a. LoadBalancing API). + Containing parameters as key\-value pair. The key is byte\-typed, while the value is any serializable datatype. + Wraps up DeliveryMode (reliability), Encryption and Channel values for sending. + If operation could be enqueued for sending. + + + + Registers new types/classes for de/serialization and the fitting methods to call for this type. + + + SerializeMethod and DeserializeMethod are complementary: Feed the product of serializeMethod to + the constructor, to get a comparable instance of the object. + + After registering a Type, it can be used in events and operations and will be serialized like + built-in types. + + Type (class) to register. + A byte-code used as shortcut during transfer of this Type. + Method delegate to create a byte[] from a customType instance. + Method delegate to create instances of customType's from byte[]. + If the Type was registered successfully. + + + + Container for an Operation request, which is a code and parameters. + + + On the lowest level, Photon only allows byte-typed keys for operation parameters. + The values of each such parameter can be any serializable datatype: byte, int, hashtable and many more. + + + + Byte-typed code for an operation - the short identifier for the server's method to call. + + + The parameters of the operation - each identified by a byte-typed code in Photon. + + + + Contains the server's response for an operation called by this peer. + The indexer of this class actually provides access to the Parameters Dictionary. + + + The OperationCode defines the type of operation called on Photon and in turn also the Parameters that + are set in the request. Those are provided as Dictionary with byte-keys. + There are pre-defined constants for various codes defined in the LoadBalancing application. + Check: OperationCode, ParameterCode, etc. + + An operation's request is summarized by the ReturnCode: a short typed code for "Ok" or + some different result. The code's meaning is specific per operation. An optional DebugMessage can be + provided to simplify debugging. + + Each call of an operation gets an ID, called the "invocID". This can be matched to the IDs + returned with any operation calls. This way, an application could track if a certain OpRaiseEvent + call was successful. + + + + The code for the operation called initially (by this peer). + Use enums or constants to be able to handle those codes, like OperationCode does. + + + A code that "summarizes" the operation's success or failure. Specific per operation. 0 usually means "ok". + + + An optional string sent by the server to provide readable feedback in error-cases. Might be null. + + + A Dictionary of values returned by an operation, using byte-typed keys per value. + + + + Alternative access to the Parameters, which wraps up a TryGetValue() call on the Parameters Dictionary. + + The byte-code of a returned value. + The value returned by the server, or null if the key does not exist in Parameters. + + + ToString() override. + Relatively short output of OpCode and returnCode. + + + Extensive output of operation results. + To be used in debug situations only, as it returns a string for each value. + + + A Photon Event consists of a Code value and a Parameters Dictionary with the event's content (if any). + + The indexer of this class provides access to the values in Parameters. + It wraps the null check for Parameters and uses TryGetValue() for the provided key. + + Photon servers use events to send information which is not triggered by a client's operation requests (those get responses). + The Realtime API allows you to send custom events with any Code and content via OpRaiseEvent. + + + + The event code identifies the type of event. + + + The Parameters of an event is a Dictionary<byte, object>. + + + + Access to the Parameters of a Photon-defined event. Custom Events only use Code, Sender and CustomData. + + The key byte-code of a Photon event value. + The Parameters value, or null if the key does not exist in Parameters. + + + + Defines the event key containing the Sender of the event. + + + Defaults to Sender key of Realtime API events (RaiseEvent): 254. + Can be set to Chat API's ChatParameterCode.Sender: 5. + + + + + Accesses the Sender of the event via the indexer and SenderKey. The result is cached. + + + Accesses this event's Parameters[CustomDataKey], which may be null. + In that case, this returns 0 (identifying the server as sender). + + + + + Defines the event key containing the Custom Data of the event. + + + Defaults to Data key of Realtime API events (RaiseEvent): 245. + Can be set to any other value on demand. + + + + + Accesses the Custom Data of the event via the indexer and CustomDataKey. The result is cached. + + + Accesses this event's Parameters[CustomDataKey], which may be null. + + + + ToString() override. + Short output of "Event" and it's Code. + + + Extensive output of the event content. + To be used in debug situations only, as it returns a string for each value. + + + + Type of serialization methods to add custom type support. + Use PhotonPeer.ReisterType() to register new types with serialization and deserialization methods. + + The method will get objects passed that were registered with it in RegisterType(). + Return a byte[] that resembles the object passed in. The framework will surround it with length and type info, so don't include it. + + + Serialization method delegate. StreamBuffer based custom serialization methods must use this form. + + + + Type of deserialization methods to add custom type support. + Use PhotonPeer.RegisterType() to register new types with serialization and deserialization methods. + + The framwork passes in the data it got by the associated SerializeMethod. The type code and length are stripped and applied before a DeserializeMethod is called. + Return a object of the type that was associated with this method through RegisterType(). + + + Deserialization method delegate. StreamBuffer based custom deserialization methods must use this form. + + + + Provides tools for the Exit Games Protocol + + + + + Serialize creates a byte-array from the given object and returns it. + + The object to serialize + The serialized byte-array + + + + Deserialize returns an object reassembled from the given byte-array. + + The byte-array to be Deserialized + The Deserialized object + + + + Serializes a short typed value into a byte-array (target) starting at the also given targetOffset. + The altered offset is known to the caller, because it is given via a referenced parameter. + + The short value to be serialized + The byte-array to serialize the short to + The offset in the byte-array + + + + Serializes an int typed value into a byte-array (target) starting at the also given targetOffset. + The altered offset is known to the caller, because it is given via a referenced parameter. + + The int value to be serialized + The byte-array to serialize the short to + The offset in the byte-array + + + + Serializes an float typed value into a byte-array (target) starting at the also given targetOffset. + The altered offset is known to the caller, because it is given via a referenced parameter. + + The float value to be serialized + The byte-array to serialize the short to + The offset in the byte-array + + + + Deserialize fills the given int typed value with the given byte-array (source) starting at the also given offset. + The result is placed in a variable (value). There is no need to return a value because the parameter value is given by reference. + The altered offset is this way also known to the caller. + + The int value to deserialize into + The byte-array to deserialize from + The offset in the byte-array + + + + Deserialize fills the given short typed value with the given byte-array (source) starting at the also given offset. + The result is placed in a variable (value). There is no need to return a value because the parameter value is given by reference. + The altered offset is this way also known to the caller. + + The short value to deserialized into + The byte-array to deserialize from + The offset in the byte-array + + + + Deserialize fills the given float typed value with the given byte-array (source) starting at the also given offset. + The result is placed in a variable (value). There is no need to return a value because the parameter value is given by reference. + The altered offset is this way also known to the caller. + + The float value to deserialize + The byte-array to deserialize from + The offset in the byte-array + + + + Exit Games GpBinaryV16 protocol implementation + + + + + The gp type. + + + + + Unkown type. + + + + + An array of objects. + + + This type is new in version 1.5. + + + + + A boolean Value. + + + + + A byte value. + + + + + An array of bytes. + + + + + An array of objects. + + + + + A 16-bit integer value. + + + + + A 32-bit floating-point value. + + + This type is new in version 1.5. + + + + + A dictionary + + + This type is new in version 1.6. + + + + + A 64-bit floating-point value. + + + This type is new in version 1.5. + + + + + A Hashtable. + + + + + A 32-bit integer value. + + + + + An array of 32-bit integer values. + + + + + A 64-bit integer value. + + + + + A string value. + + + + + An array of string values. + + + + + A custom type. 0x63 + + + + + Null value don't have types. + + + + + Calls the correct serialization method for the passed object. + + + + + DeserializeInteger returns an Integer typed value from the given stream. + + + + Exception type for de/serialization issues. Used in Protocol 1.8. + + + Constructor for the exception. + + + Unkown. GpType: 0. + + + Boolean. GpType: 2. See: BooleanFalse, BooleanTrue. + + + Byte. GpType: 3. + + + Short. GpType: 4. + + + 32-bit floating-point value. GpType: 5. + + + 64-bit floating-point value. GpType: 6. + + + String. GpType: 7. + + + Null value don't have types. GpType: 8. + + + CompressedInt. GpType: 9. + + + CompressedLong. GpType: 10. + + + Int1. GpType: 11. + + + Int1_. GpType: 12. + + + Int2. GpType: 13. + + + Int2_. GpType: 14. + + + L1. GpType: 15. + + + L1_. GpType: 16. + + + L2. GpType: 17. + + + L2_. GpType: 18. + + + Custom Type. GpType: 19. + + + Custom Type Slim. GpType: 128 (0x80) and up. + + + Dictionary. GpType: 20. + + + Hashtable. GpType: 21. + + + ObjectArray. GpType: 23. + + + OperationRequest. GpType: 24. + + + OperationResponse. GpType: 25. + + + EventData. GpType: 26. + + + Boolean False. GpType: 27. + + + Boolean True. GpType: 28. + + + ShortZero. GpType: 29. + + + IntZero. GpType: 30. + + + LongZero. GpType: 3. + + + FloatZero. GpType: 32. + + + DoubleZero. GpType: 33. + + + ByteZero. GpType: 34. + + + Array for nested Arrays. GpType: 64 (0x40). Element count and type follows. + + + + Writes integers as compressed. Either directly as zigzag-encoded or (when a type is written for this value) it can use an optimized sub-type. + + + + Enum of the three options for reliability and sequencing in Photon's reliable-UDP. + + + The operation/message gets sent just once without acknowledgement or repeat. The sequence (order) of messages is guaranteed. + + + The operation/message asks for an acknowledgment. It's resent until an ACK arrived. The sequence (order) of messages is guaranteed. + + + The operation/message gets sent once (unreliable) and might arrive out of order. Best for your own sequencing (e.g. for streams). + + + The operation/message asks for an acknowledgment. It's resent until an ACK arrived and might arrive out of order. Best for your own sequencing (e.g. for streams). + + + Wraps up DeliveryMode, Encryption and Channel values for sending operations and messages. + + + Default SendOptions instance for reliable sending. + + + Default SendOptions instance for unreliable sending. + + + Chose the DeliveryMode for this operation/message. Defaults to Unreliable. + + + If true the operation/message gets encrypted before it's sent. Defaults to false. + Before encryption can be used, it must be established. Check PhotonPeer.IsEncryptionAvailable is true. + + + The Enet channel to send in. Defaults to 0. + Channels in Photon relate to "message channels". Each channel is a sequence of messages. + + + Sets the DeliveryMode either to true: Reliable or false: Unreliable, overriding any current value. + Use this to conveniently select reliable/unreliable delivery. + + + Encapsulates the network i/o functionality for the realtime library. + + + used by PhotonPeer* + + + Endless loop, run in Receive Thread. + + + Internal class to encapsulate the network i/o functionality for the realtime libary. + + + used by PhotonPeer* + + + Encapsulates the network i/o functionality for the realtime library. + + + used by PhotonPeer* + + + Endless loop, run in Receive Thread. + + + Internal class to encapsulate the network i/o functionality for the realtime libary. + + + used by PhotonPeer* + + + + Allocates a new byte[] that is the exact used length. Use GetBuffer for nonalloc operations. + + + + + Allocates a new byte[] that is the exact used length. Use GetBuffer for nonalloc operations. + + + + + The bytes between Position and Length are copied to the beginning of the buffer. Length decreased by Position. Position set to 0. + + + + + Brings StreamBuffer to the state as after writing of 'length' bytes. Returned buffer and offset can be used to actually fill "written" segment with data. + + + + + Remaining bytes in this StreamBuffer. Returns 0 if len - pos is less than 0. + + + + + Sets stream length. If current position is greater than specified value, it's set to the value. + + + SetLength(0) resets the stream to initial state but preserves underlying byte[] buffer. + + + + + Guarantees that the buffer is at least neededSize bytes. + + + + + Contains several (more or less) useful static methods, mostly used for debugging. + + + + + Gets the local machine's "milliseconds since start" value (precision is described in remarks). + + + This method uses Environment.TickCount (cheap but with only 16ms precision). + PhotonPeer.LocalMsTimestampDelegate is available to set the delegate (unless already connected). + + Fraction of the current time in Milliseconds (this is not a proper datetime timestamp). + + + + Creates a background thread that calls the passed function in intervals, as long as that returns true. + + + With StopBackgroundCalls, you can stop threads started with this method. + The resulting ThreadAbortException is caught and discarded. + + The function to call. Must return true, if it should be called again. Returning false ends the thread. + Milliseconds to sleep between calls of myThread. Default: 100ms. + An optional name for the task to help debugging. Null or empty won't set the thread.Name. + + + + Calls Abort on the thread with the given id (= index of the thread list) + + + The resulting ThreadAbortException is caught and discarded. + + The unique ID of the thread. + True if the thread is canceled and false otherwise, e.g. if the thread with the given ID does not exist. + + + + Calls Abort on all threads that were started via StartBackgroundCalls. + + + The resulting ThreadAbortException is caught and discarded. + + True if any thread got aborted. + + + + Writes the exception's stack trace to the received stream. + + Exception to obtain information from. + Output sream used to write to. + + + + Writes the exception's stack trace to the received stream. Writes to: System.Diagnostics.Debug. + + Exception to obtain information from. + + + + This method returns a string, representing the content of the given IDictionary. + Returns "null" if parameter is null. + + IDictionary to return as string. + + + + + Converts a byte-array to string (useful as debugging output). + Uses BitConverter.ToString(list) internally after a null-check of list. + + Byte-array to convert to string. + Length of bytes to convert to string. If negative, list.Length is converted. Optional. Default: -1. + + List of bytes as string. + + + + + Class to wrap static access to the random.Next() call in a thread safe manner. + + + + + An Attribute named "Preserve" tells Unity to not strip the code. + + + + TCP "Package" header: 7 bytes + + + TCP "Message" header: 2 bytes + + + TCP header combined: 9 bytes + + + Defines if the (TCP) socket implementation needs to do "framing". + The WebSocket protocol (e.g.) includes framing, so when that is used, we set DoFraming to false. + + + + Checks the incoming queue and Dispatches received data if possible. Returns if a Dispatch happened or + not, which shows if more Dispatches might be needed. + + + + + gathers commands from all (out)queues until udp-packet is full and sends it! + + + + Sends a ping in intervals to keep connection alive (server will timeout connection if nothing is sent). + Always false in this case (local queues are ignored. true would be: "call again to send remaining data"). + + + enqueues serialized operations to be sent as tcp stream / package + + + Sends a ping and modifies this.lastPingResult to avoid another ping for a while. + + + reads incoming tcp-packages to create and queue incoming commands* + + + + Only in use as long as PhotonPeer.TrafficStatsEnabled = true; + + + + Gets sum of outgoing operations in bytes. + + + Gets count of outgoing operations. + + + Gets sum of byte-cost of incoming operation-results. + + + Gets count of incoming operation-results. + + + Gets sum of byte-cost of incoming events. + + + Gets count of incoming events. + + + + Gets longest time it took to complete a call to OnOperationResponse (in your code). + If such a callback takes long, it will lower the network performance and might lead to timeouts. + + + + Gets OperationCode that causes the LongestOpResponseCallback. See that description. + + + + Gets longest time a call to OnEvent (in your code) took. + If such a callback takes long, it will lower the network performance and might lead to timeouts. + + + + Gets EventCode that caused the LongestEventCallback. See that description. + + + + Gets longest time between subsequent calls to DispatchIncomgingCommands in milliseconds. + Note: This is not a crucial timing for the networking. Long gaps just add "local lag" to events that are available already. + + + + + Gets longest time between subsequent calls to SendOutgoingCommands in milliseconds. + Note: This is a crucial value for network stability. Without calling SendOutgoingCommands, + nothing will be sent to the server, who might time out this client. + + + + + Gets number of calls of DispatchIncomingCommands. + + + + + Gets number of calls of DispatchIncomingCommands. + + + + + Gets number of calls of SendOutgoingCommands. + + + + Gets sum of byte-cost of all "logic level" messages. + + + Gets sum of counted "logic level" messages. + + + Gets sum of byte-cost of all incoming "logic level" messages. + + + Gets sum of counted incoming "logic level" messages. + + + Gets sum of byte-cost of all outgoing "logic level" messages (= OperationByteCount). + + + Gets sum of counted outgoing "logic level" messages (= OperationCount). + + + + Resets the values that can be maxed out, like LongestDeltaBetweenDispatching. See remarks. + + + Set to 0: LongestDeltaBetweenDispatching, LongestDeltaBetweenSending, LongestEventCallback, LongestEventCallbackCode, LongestOpResponseCallback, LongestOpResponseCallbackOpCode. + Also resets internal values: timeOfLastDispatchCall and timeOfLastSendCall (so intervals are tracked correctly). + + + + Gets the byte-size of per-package headers. + + + + Counts commands created/received by this client, ignoring repeats (out command count can be higher due to repeats). + + + + Gets count of bytes as traffic, excluding UDP/TCP headers (42 bytes / x bytes). + + + Timestamp of the last incoming ACK that has been read (every PhotonPeer.TimePingInterval milliseconds this client sends a PING which must be ACKd). + + + Timestamp of last incoming reliable command (every second we expect a PING). + + + diff --git a/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.xml.meta b/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.xml.meta new file mode 100644 index 00000000..b58d8aa6 --- /dev/null +++ b/Assets/Photon/PhotonLibs/netstandard2.0/Photon3Unity3D.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 7015e500cd5b71244af56448dfb59804 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonNetworking-Documentation.chm b/Assets/Photon/PhotonNetworking-Documentation.chm new file mode 100644 index 0000000000000000000000000000000000000000..72971dc5960c4fcf313b7a5a8aa22491d3cc63c4 GIT binary patch literal 1456565 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

9wcRLaLVQ?p$_L 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

Gg&uw3p_suEb) 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

aCKK!*Y05^^8}15^kp3UHHT@sA1B4 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

>!Oe*K^!TUL$7hQ=qV);l4yeh|7 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

i0y%x&4u-Dn@3Fln1rghCQ@22 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 z zc~yPufFDrUE3r{p(md+dcu2LFz^>Z&K zT1gn-oG&C2QPT`8nFb<20r$aIovFOZdqm1XKNxB_$@HIl0(4gHv<6#p?HMYc$)$mT zcyEmXtA5Bu&+y36;zP}=kXQkAJ8b6+8 zsDd>63mv)6E{qL3Bq8SwLsp(S@#?DI#p047OyM2`xI;0v@wQ{>BnmTtr2`;mkP%em zE<7J~PmWAr!r2qj${m+*>KDQmg#%HKxz|{A(ayr{J|dzdA-jh})TT`9|1doWw$J`( zZwJ7oJ?@=P34uUiCB+y+Xir?25_48U2!o}B0);eNs@V`8*pl>yXjvV+uEZQ*VG^JK z01yxZ08{`oLj*+tP+UaKQ9uAEkU#+agLeJIAd`R@ZN_s!lZ-YB;eHpb_mjH1POIY5 zw7)Ux-vEIc0U{y*GbjMQ2JiwiL4z3KnS35!C+ma`LP!fO%-&L1)RZ5AF zOm={=-Ln6O%5mF&x1$W-dqDlCoM@#FCKi z5;gk)8XXMDt&#y70}lZ|%KZTK0``y3$;-~C$eEqaS6qgLIsBPz-gZ98SB8QHNHA3h z%dOObs=!4B^O1=DN##er{4;#cA+qsh`v3gLk$>mBkM6vCbom1}9vMR3SwE&f>Ey~E z`No@a;xGU2|N9$!4M)DMAHqLs{6Bx{pEC6+^sM}v++olET)t&~`Rti)vFcyN*@dc_ zJbzi;rYUk=2Ti{Wi)N_g=J|7}wB+aeA2lm(fA!8Qx3edVe9X}2$<5R5{*a;&XG9+Q z=owVTM6FbdiI>{yG*getmwNr(_{##xr?ZruN(dR9Jvfyw30hlNQ<d*4US3XbPWm@devnZTL#Ehw7EVOS#gN_0_CPciMvRKiZL}nlBe&2C z=4ACV31yUh!CH?N3zA5661t)0K(dYb3#qAgL%GN09mNTSz<%`^p5_iBUC>LhX8=BVs z^;MM&7yahsEwUFs$2YB>ch=6+bqBPF<6ZlPTRI;d>X9IEJ%5ak zzK$giO}By%aHYr%aX%DF=`za~3Nh&ugq46*)OM9$)ae^8WZoVA=%L%9n1AxL4VF+uUS7-fwbYHdbOEjX~CRQ!$+i z(h3w>#SKCC6weFL8-VpfFFW6|H%Yw#zgtHjFPXNp3$dW7W-L4x{?mYTVz5xnIy+1g zfn!sc%>e?Xl^4+kTG%dDgl1gIvhbeLO})T;xrfX6RScp3=l~pgmFUe?LloT^v<^}) zQMl;ddtbAf{M~#XK36S;J}3oj45aWG*+2{980>Q@h?-9Q`d+?eW_&LF<_))NQ=~fF z`@Tzz2Yb00z4EQmzzLWCua!1*F7WWhWLT%+9`2O6?Y$tBeMYtG3Dy<;=iKql$2?jk zn{}8^d>-#DRMCt5*zsNu?Ix1!UbuT7W7qST=xFA8=gEHc_yilTuggXztr^d3ld~Y)c>zsXkq@#vVHVzW;plY?^pa8^3;e@6Oh1Y#TfH z@z1l*wGcC0a#FCB7hIz*hsNQdmi;*(XzEG;4VN34OUld)zoWt_ygBI4I>bupUi`re zo#piqNuf!zZNtD8iR))izkg@an8XqO#+li3-U-ydkXIv__-yaXkm1+`Ra?DtV|h^-;rXl+ujN!q?ZsJg%H6Pf5^ zOOsEB!6*xkv0PF&lWbV0^_~#>8mjGz?EROGmUY9vyHl&h`pL*{vDN##%gn;|*;wyG zzpg`!^-;8UDQm2OqQ5)GA@ifPf4|=-E2DHXdrI0c`#X`Yn(;vOnj@pjg7?22k#}#Yem!0!W4LHF@h*mqWMd-oW_m)!KSwp(m z67A-e5FiqIdV9c2TKWG%Z`7YLI13wh49*MN^da3hR3uceezb`8P}x3cL=({UL)$Fb zktJuv>Vi)umP{2!3(X(1icDxPoF=Rc}|5bA?u~6}hjzzp(_i=UY z737F>G``?Km`!5w6Z7(y;U`c3cs}3`fr@bF=kZ(ic(eXl=%%r*Y3*JG4~*AQWbiEIFCj zadw(Be8PYEIR8iHd9Zy`-z<} zuN8nVnr-GJO~d7|-MKp#3jVfeJM3<5acf0y0h|bfubQo;FwY-ivi-D$!T`w(uEzqv-cl=oS)H!&tOHe;H< zyAD(<21^eFf3wo<+D&Up@J93hbexX)EeaUDN@2MOEs2*I2dIqD3pwT6=2jatn(x{_ z-tHFe0i{55yWo?u^FyaT@@jbStb2Vn#p~#8mp@LZjjUV5mFAH-k53$g6u-z!yUxpTh;Rt*aCjz4wZeSx2nuW$!9VONc6lgyu z-^zB#zgv_XOr(048glYRz#-5-C|R?p5#jz$Lt~HC|FT1rJ7;K{{MdGhIrrPZ6j!p zWT$o?WT}YFe6IQ2ABT>_+Vkdla_;}l-d67Hu}xDej;s16ALDG7<}>t;wcZotzaaQ{ z3p>lMM}Uu0MXkzAyDyE{3Hh=53MGvL4S)DmG8*E;H*o|-l{+ly-*^?7-F61D#Xh9p z;~~JJHr_BgPEnMiFoeXHehUV8VTeHbdJp#QIO6$bj*ska({~W}nU5BOegM(B-|)uh z{QQJrPU!#s%rN~(&Fr-K=uKASr8XA~9Tc3*-`matdEWUly6hw9C+M9^65dYhhrZv6 zgkewo&tczmUVaihj;&D#;JSIPF~Y5Nvd>P2r%>+jy_*+TZyHT*;}`Xdf4g`H)pYv* z=O)sw;~t`wtAwwW+1C4OT}Z(tSj1VF{DoE5=DK`UUiX)*jyhD>48!Y}g1U-UaOyH( zW6li~=DaOlqEtA0nebq)aUIxK^lqMj`(i#O{aGWmm)%zmX;SI<&{@OpC5j2Z&ey*C zo~KFqhmV~pZbK9*2N|@`2s{2yn}6YkKe!)`3@PveH9HHPHoTwgeAjvB*53zoZy935 zA$SIh^#GJC&(|4~x{K;8U5&W$d|DC}*U!1%tOYqonIOYygseL#=& za@m99Bb9#cWly@bhurOWZ!2Txt__p1aDW>$Yu_Fb0K?SNUPO3JHF-YEu(=!f9&;nv zzT&EGk?XA%11gPE(0cgc5knr7@AsHp0d})M^LzC8grF!{g3#97YvwuJVhf2}4Y@u! zcq#>)dU8H^b|g9zu?Ddjdzl9GF9MQt8@>DWu6#IePU_kNV5FQ##U!0AAtE#lOU;?| z@8$18ZEb#LNaE|6bz8`}R)qs<$*7FdljZ*aPSHIt)4Gp1HCmY(->-buKjuJT>N5Pn zVzvf@FGu&)y=R54nj^Ft(;F5&V(LYu7seWo|ii1?qqX~m04^bY@GXrCsY97Oz z`coe_U$s# ztZ@(acZRYiz=Q-;cIN%?{=4tpe0%aA-=8Ydo`R|t8Bi=sEr_JAokUth`0RH)*@!=U zUA%m~p0ifbHs2ayqgVAR@yiri_4{m^+eJJi-1T8jkr-(6q zcRUhm@hI61Fd;0c2s!}^nq+^brXF+Xk%ax4iWqfF@B*J>gJ@ncKDd{WO%~p_#NrSF z+a$`uMJB{ctYX}fQJQ#`K$tMOgo=(r8h&fPp_P*xN@MSJ(t>{i5h5{pE|M&3D)(eP zI22o`p$6a3tvCb~{1Y|~Kr1_7&@3fSi@+MGwSZc8pwYn)UX+XP0DL3X^ar3Bf~+Gl ztddC8gE{z34IxSz7z5l6>X$#0nc>VvI01AqDXQ+4Y^}~meo!-X@evL>so=MT@pQX? z?cXgM;O&8dY-NJsN7N`v5Rt|bz@&!yZ6B(#51no3;R>p+5gII%_FH2FTtxs&%gW%8 z`5~-mXD~@D%rrGfulE#;Db#BjXITPE=LX?P!5B2(wS@%_(#ZmHa;fuQXWe)OP%C;9 zb0P<<#m}_%S}==IkhpjFep?+Aag)D)6+7(f{R!Wk&bXs3!jxoe6$DIE&ycm;^T5*KZg;TKvVebj`Z69zia5?=m%2wRA`?(?oB@*H8kjov|7ZaY z%1i*dOGGP25?(tB@|xs_s&cWM)B6JMcd*SSW>tVN5}Vh>mlS|mg1h^~*`80NnKS+;Vy zQ+{)=k@VJWxX!$x8c(r3VZ$t#B$0Nrpfbhec}1ATm551;TuWV@yIarcQ!35_nNi74 zGDri#M#XYM%3@`QfmDDrN90xd&8 zrr=wdA8Pjh-`9g+zg8Yn+^Icea#Sl=p}ZrMjOUr+any#i%!A%$`kZToq9>1FcZr_% zqiS(%TtXq!8veCZGEBZjBwqZRBHskYvFvceNELnT}xtk;A^qRz04!=uyu|%;YT8c1hLt zVyBspc`gRjw$n&AF72$%EK#iUpzVuDCYN4v9loz75t5{}ZN~qN^_iC?vhu8vXla&G zLZI%2U?^Bsb8sd8EYiD7Y}Cz6A}u&fZL<>Wi3lLewC;F@snGIzM|&%{nM(o^T*+t} z8pt>xiaKG2l$a=C8(mRwMCnz{44XMX-G-2bl3j{qbv|e%xuvN7!V{nVL_Jh24)!VP zS@(^$^J%-Gq?SU`v`GjKV$Ml+45x(xgS%_9FzUZzimp!>M(rBL_P}apT+Ts+WRv0} zfttSPqFA8i>oS?g$Dgy!3rzYw)nuyWoPBqtrZk3?4uvd~BzLvb*A73z@k!j8Cxbxw zyE=a*go`o%TF$==-Cy<*7d(FDd6pH)KLqbM0CXPcUw7VK)K5msu5$YEH1Eq0jn!Kc zCbbU8HAWZ|D-KGYW8tJp5I@qFF3BpXy_5Nby^DB$akT-o<5 z?PTwbm`aKmYa4o(RYhFzOKEon@fvaqD5{z$-2FEy@LLZJNN(ineF9h$m&hv05?b zAniZvWw6owlnN^lToYJNx!O^zGAPC6OLSC(7837ZTff&vY+mz+JXDtY{GVCqI(d;y ze;VA$n~3A^|9nTgzBqGoYCT!@hj0RbR4uEpBV*9<)Iljz$t@s=H#|;Uo!{(VWg`5v z&*7MQsm<)#q9NB}NRi%GOGXEQOa>mCbKlk1Td#it$|=j$-hqh`JuYg(njii`bp zIg7j&i`j?5!)+b8>yV75J(&~wkr5O44pUzR-Kj|kZ+-c`Jps6L8ZkCGX=_LnRpE;* z1PkNw2)XFnFlQw(>70&o`YCMG0&P8tY)~SZTCgJm@m50d;du)x-FDvpZ=sb>r*G4s zzZ>-?%v-#r6i{$Q7?Of|750ch3)FWfcVLU4G#F1{NlAHfvPk`V!{FnG4M2VP8|xKl z4Rt}KwPCJd6^ zSyhrc1*|ATyl1K=ImH7vk^l@&Og{_92gl^d^XfNFF)8g&0hm%bse^AM4a`6elVie` zkS*`$S7nPpjL*hBCu%EzLB;okDz_N?o&O?BU*q2HC|266NOl^QEQ9bP;VVUoRE6pW z?)4ideq>1Mpj8(k0LNk^G-!umPc0e(S8wx{2l)RIJ$EVF#gsM^s=&|Gxicjf8vYx!!p_#54$9s@f0W_$jRXSz9Y~ANVW1DrWK^ zuBoOI$Wn!e(9%VzXBd?NNFiQcU=@9VyjrgZStl_aGc&q-s!fD9-sAhJW?#QDCk6hn zL|}?C&?Hm4yP0`+(Idr$0{S69>N4+hjClM{a)lR~U@WI!UwIH_EejQ$jM%l=M0etg za8O0M>Ubx@m*$Ypc`2kY-J^d|^j88U(XUCVK!B~35s+x1t$gAh?^CA<+fEsfJY{gj zf-W{5bCc%|6TAiV2X-f|r#Xxd>m)Ra_qmoMDLN)lO~kX-ED?1m$P09FUl0hicuMWr zRL>m+I){Lq60Mfoj$U6@d)!;a!y__EL3(LOe3cYVwLutQ@P#K)^NQv`=_G%*JTcy8W5B#U^VO29sqxblV*05 z#4>|XDyW>IJzGcf8t=(%joAzfP^ayi@cfCLeL0!PBz|pMD(K!W?|*r< zh8cJ#)Lxp#BQs+va0qkxP9Qce$Bu&!jT;?09%%rL=^fV%Em1p}G-yCIw5Xy0!T!axWh%7C{Wfp@Okyhdxi+yC#2oTfJZoC+C4B=0YlyGkKS0|fZMKoUTB zg9HTj1tF4z55j#u0s;Zv1hdlz^? zKJ6gbS3mUOvFe`sbUiv+I<#~pI?ek}9pCD@)~5r~?e@}K*?p%&OR#rjbo# zEEUgjrQUJZq(9H`_nVt{)O|=!egC6Bz^C`m@c+P>XaDHaGw95he!cPO5Bj;TK4ouQ ze;WE-eS;szG}GKP`=s+Ee*S1}9RB+F>H8^j8B4p`OUfKgUHu$nj2)brF}Yh~3Iv|G zEEqr~k`1Utkkb2*Z1|VzO_|?p9(Atbc1h?va?mFbcXBM$KbLA_uMqV8$=*$~bC0Rk zr_<0@nOa8H=Xy}s<+kAPz4q3PGo(wWc#T7+O@$E0?b=ERp4%>oqg)ksQ>0qi#TJx zeTc%l65>20xlf38RYE>Kdyo4X5{En!yF}(%Y|D%64~c z=`(-&Y~M41xpNq~x#pCJR@iYj36;|JM0<6Ix$&N|4SXi|b#GpoKD?E<_ntj!hdX{P zZ-H!xV!-$`u-vnN9AXKzDCdtL4|bL=V9ap~sKQfaLY=lR-RLcz$td?zwV zjn|dT*(iB7Rv=1y+q>NE(dPl)*3|ATuyv}1N=XWv>*Yxzgubab)@#Xi&;vGg8J4um zd7iuLuNsD~UbC8(Gw5cTdbLz$G;3C0Aqgy8h}%=`vFeL1St@Q3u3jkTu!N3TIsExe z&6Pgiq%%wKt$Cfjwoy=~CzlX0vb<}2B*6M4B#l`asSht^D(k=x z*pZe{mK-FABFWGGV$ATl_0C`W=)M`;pXTUX`jz=5bY!7ZdL9C2=7zgN9iqEpNVepiWzSA)Esq+y?Obi^qD_x!ouBHAVkFUpyy##yIrvNoi5ri; z*~a-jEB+vS$3hO!&1`UdHw8nY^)@Yn$c>QLQIMTb^$=#c4H~;2d+8Vz&0L2zasA{R zJlfKX=$(zQT)R7RmkP1n6ATK@vubKAe8@W{& z|EfL8n~e2TI(hly*$(jg@}3LUX5NxW92+5=6@(b4qz_J3bPU_tukyiu0S^ZIPP8Ok zPb;A^=FPQFS_qI{8LQ8j6V{*E6TH2-Cr_o=PuBPE+T8*#7Iwd2la4_>yr|rI;!OxX zo{6yGub=ThKYq6`!(s zjEFa0Cg>ok0z-a2kzss3H!YfpAl4&iM_(6$x zt1n;af`)hv5L&r5I=|-6I5N2bpIaKH&?U(b)a3<{SXi%Nd&(Wt)b8nUOWUo{@-i#> zWeSs$6__0Ss?IBQ{w(maSW=gH-hCAM7@pFPIGlUbXaD#YVAR?vqu_y&v7HbTsDN@zZXUrrmafjZ(WGC z1MvqAsU6_5$SdJHtT1qV22n<;s%CbHwFC+>ntlAO;ib&3vG1Q2%~*PLrjquaMAN^ufS-=_Tx*LdAF(OTt=nKagBxlz^Km>I z+qf;o>sXQ6cRfw9c1<$Hg=DV{9&63MA-@~O$(h{tJ3&NJwJM3+8W{5EJrpUuTNinT zZ<*y8q%oam4`zN5;l$V7CzLF=A7Xb2f;IZGxOLneOIzbOvHjHZTY@A#B|aWrw?4!0_RD5bgLyoB3dZs8W1*WRx#**+Jn4z5YF!KI z0bwl5UDO~9hQ9aC8aZxhJn$og_4h@1fV&q&YFf}q-j{r&H;XSe$L61F0IzJtz88C= zQ5D#{2j(n}#m%J@S4TT;NLdQsidxQxu6TKX*GuM6O-FD)s&(I17;F3;qApjlSa^r2 z@wnqD@xjH|Vh^5}Jf_j3>)pXAKi4bwv7F4q*i8rH{?$HFaifT0=ram)D*^;y)!mUu zSaltNHwsUE4n%choAWPscJk=Mrw;9hZjht8dRJNvg673^;2PO|ayBg{)~BV1#q>HR zL_X^~MRCC%^{i~jJ9P1fOA$-DMUt_L0$k5U_Pg7mb5AB1z8dTiIK2+?@g#mF_y(m* z+IZxTS|AD$YlohKpx`QyU3W5xMBTlnTXI=-OY@{CE__GbgPD?f%XS_BRY0o0WhOSh zx5S)#rr`rQ(Vy%XG+Zwx)CAROD$^K$gRUwJN>&%d9i*r&vb z=+j`qaB|eZH>x-n0e3mzk-eUhhBxH9`_jg!h8Y3Qv6Cs*B>nrjDf#&6{b`)-V=`A8#G%d2WpdFX->!lPil%%Q{C)TiWp?~5a{P1gocx$TaAKE9 zt07_C1UrwOS7nK;^rp6LIJ|9UlM9wV_F4Eu_nqHl ze;8|z{JB)x7P!A2@f08;>cEp|Sq)F`1akKI$_mS-;O_gems%eNjRqFM8(=_;$b8{*J|Nd>VGo&eAr9yea@MEvSq~F)L}kZWCFiKoJ1< zc_$vKzTSyer>9)m9ZL!}F4G%y8X0?L>dx}Hmnqj9HtP1hwFGD1JDJClEGUEBs5FZu z-4wrHIcqWoO6G*gU(_pC%0F9;*|>f0Xt?_P<$bEQBnvbpQNg~osz++FVx3VC^`e^^9&3^@6m9GY*>@IuoM%g%orsk^%0{q&Wo zFSe6)vOKgOO3^_$fOc=b#cV^jy0rfk(CnGHbF+c3u~kN zonz9SgU&ow*IIO?)jtj%+?V|{O!+h%IHQOZ{Z?CsU+bgqoDs8%1{%*xB;k1gb(aXcYOE?*3SL|ykp zWkUzDE}^5topR9MbBXm)64|n^)3RPx{Aa6X3SAssl`D;__)C-ycV^h!S^AgPhpg&> z4`~Mo9lCEfQlz5U`z$A*mgE+dOYy0~B#8&m3%Rz`9KKBndMkZ?aqE9;6`$w7-+ppO zF5X(tN8jICr}r0c`a}LU-khI)PjEs4pCU{425)WpaV7>Xl#yNv6j9O9*i&HL2RAn- z`($kWct>Vz(Ngs4c`4TcIUs0#-vsPR?3qT;r_?Gc+%m2cttnUrcRmYpl`qCCizBd` zvoH4R3cCz)Db!0|`ffVP#Bp(dJWJVt9AZaaDJvM@IlzkfI5@DJHg-`IvQoFt-%dm|`%-df$v(h~z{zU>r;jd`l4o)QSMn2=ln(Rlp;G+g#llIWgED(gUNsISS~LZ2L@2m9xY~Z& zAzdTCe@=TRmrI0R^U?te5R}L@{TccCgX?|Myc@36Qs`;rZg!>=v^%mqcIAOrE#+9E z1jEWrmPk%6RloDg6@WVKvB%Rh%s+c|8nxlfl_LJB0adKOeZz!vEtbow zx|bQr0d*NhkJzr-q4+Pd0Qr7&>+cUQj=4NdFPAcJe1*qX$mav|2P0kTU&u`&cWvmO z2HQyQ+i7A|vS(Yh7A@v!=c9TKsPgGcOFKd4?$Cb)vl01IlX5Tl_`{O{8jhP*dmqSw zqprxrRVsp2aEAh+2NjCB(S_j=nu$Dq@vyD4d|K6TY`zYALbKnGW6KkCuY}-0fA6%{tJtiOH040 z%UAztm~F}VXL8mW$KzJIH-p@rK@34wX33X=>0YG~T7KP(5YHYkQoGM@1 za0>iYpLy^2AS1a*TXAEfly*FY(;5O6L*);EVP|#jJ}t*O)+{f5Ry!zW0D#HVg2kb= zET;)8FJrEVzGvF{-bu}$1_QMqV-fgHjxC@`5OmnpEwUI_j>?(D3m5;kdjezV;i~!FWhlR z7T2ClW}wEbeo~M579@Ch|8)p;7Cdj(Mw_$P&i$!Oz2)l1uorpo)>4U`jDAxZ$k;!aOsudTf-qQ_cbq5Vn^Z z_M}-pfZ*OMsEe(60^O{CGGkb#p*X!TWSl=b@7g~^)?Wqi@NDl0xRofe7q~se!$;-LD2T*=oBpaOGFrbe?BoG?fO zh5PUSI~t_(a@HA!QmO9&1!8(IHO3K`K#__m5pU+`@mABL9bVBS>X#6%m23cN&kGt$1Q50-=eOhBxG6oJ#yw`xcS1 zT$a>P9Q?(%wrlQ0k7i-`)7+UNxZOBTP!7$V4tp8+CGs9JgkYvj84Q_bE{n4obD(D- zR`9Dl1UmMdAjPb<`Chs-5C9T`xpuNu>KcnHBQPr7_U>}6YR-tn9-KARD+we>j4GSx zK;A*hZrQI44`MD)JB_AG{XG5=VF5Mtw>0pyb9R_lD}V)2I`Juinu#s*K`*GQ+$g9cP=xFP!;|)k(-SA^`{lgb$ZkCmu0?@LT^MkELh5{Ex{dcxz_b4;{c$mSD5{ zVVII)GE_7#eMsGJvYgmjHg_!CrRCVxrPj{=o&_)^%sL*^kOl&C>q%Tvs8B(K!sUgH z1!jCVji9xh*qTv&;?kQ;*es4dKDeN)79pyY%8Dtt(BRB6;tI=x))v0r9z}p|zE>zr zQs=nT>7!_8Rq>UU$($&H-a@E%2*%MFA%YzS0mK0-yKz+l!DjBCnY(@-rJPuPcP9m8 z5qMiJ2-8hg24kQ8*-h< zw}M>a=Rq_mY3T+M{VOKoUNj40o{Cg6(tWJoYcWgP(x87 zAW(~rU=r3TVLZ2(w@J|A%{9TCTS(OymAuzO1OrqE06`wtbOx*;mN@HsfjLOh-U|_^ zwSt1l=2(_>J7B=N;X84pK3(2j(y~Q|IOn7b#L7Ssu~x5VxRkt*%Srv_W6&Gq`)y;I z@JoMp&zJI9)d>b%>M$Z9q;@Z00YUKX zLr~Tj=u92(_gh&83fnXXqF|w|!3vce6MzQgHKZ;jH54@K@51rka+a1ya4QbB+k0Um z!8xr3>MTw&D#9$<-dk1*wfyDhtx?16?XP<~Vrx*dwwClCewK;z3&(5_sOUKn<6c*Q zLk03+!YnzX`t=-?muQ&nVHC5H?OE2J!{sI4D_?K@8J^F8C(7enU#xMqsKe}xRK8MD zRum}=<NBhS!SnxgS6dkVopoKHMAGV= zJc~__B#$wiwB{i*qOmhn3J#BPGXTeWOPliLgJs zM5RtlEvGbY7YU6x7)l93Wr`RcY|+%(-mfgb4CG*1xU+HOWf-ohDL}~J%QHoMB3Fxj z*xuil_LhtjAvg3^Cw;`3GNv{rB~^ukAgUt^anfZ>{Xb|5*7kTVvW< z&%@ImP6rlkq34|idFd?Rj(L=m1d4*8DYb*@CWP&$E!ML>HMF5Pq%xh|O6nE&b17kB z9bnYr#1M%Q;>?#Es9NU#j$?LSIfUjx<>=G&d$s~ZOclJXRtbwlS#`w(aqPE}&NniE z*estR+TMd3Ok}@|4U*<^iv!l3l^SvBE<6m>Y%|G!GI%twG_1g3Gro! z=DkK6VtU89ATy$KS`p@;B}D@g=-dyg@&m*lynIORS6QQ&8w7$}nYBr(2MZ0nuwe*d zKgP<8+soUIE}l&YV&op<_%$}a8y_9RNR#2%LG0Pt0sd$nxBQJ_mhrx$*AP_;_x8P~q>J`E(FJK0^#$h7K9(~ilZ>T;z@XDu28*9|e`zoTdT z-R%-lU=gV~(nA!rDAI^gGd|bykb)pw`6ou@V&1FFU|YpPPX}_0{Xwy1L`{?!{H(18 z`o9Mrh4{jz7nxo$wZ{@D#YLh)sHYZ#fGrtzUeSOy{twH~%$h1j$d*q*Ifyu@OisHl6D>zstBuROlwK$GYJ`r*E@f=MJ>n+4r2tpepkrXSfk&Z-Q zD5|ZdHgIngy{Q3on9#usOeW!AieX)l9!Wv7W$R?Lo> zZ>sYl(0%5mw=zT>%ow>-6=xxW!UBvbd@5K8YAuOC$W!=w5r5WuCFKf)K*Vaza#RSo z1YoAb3a+ifn?whn$1OM&lVD(kLMwtiFA|7qGgi=y=S#P&#pHn?Wn3(g5__cDP8nB# zSb}0bM;zQI58ak4=jl&<$%E++6%%{WARv^pV5$NgGoS@q&&0@yU4q^oK6RybYm1!8 zlHbpz7SnT#TGphbGUPDOMML-JA+#xu4!LUf_gl~jhd`o>YV#~rbt1&X`$%oAsDK`F{GAe%^IxCTVtOjVN;HDN z_gfUfB>-6FEr3ej7z0g-{vUy{&ddEAR?A_COo4*c_!_I3wg_jo!k`y|s*%$h&;dOk zHE}8?fsDy|BGzMG5G^AItX&*25p`)C*AbUuW}QqTD_0i%A+6|C@EkQ#Vp_!2!oYWDFlZCO1?@FW0=H> zDal~eH3xIv-znA38JV=4W@gP|}u(!bow$Qbo2<#;TG= zIIeCExu%$Lz@mhXegV^8nFvS-R+o7S$Qy%vT2@s(h|}e(B|L>E-EpK@LVXqu>HYq2-fnNK>v+w8FJiLa=nBzX$&&`JCWl+`ISo zRiB5H7IeK+T;~r`iA=}H;w=&L!`DPteIB_?Zw|FzzSVn5O_i#VSi~jR0Z`C89c5+} zl`l26+{L+vja4dmY@OfF5fuO+5D)_Z1OOvM1TX+#Z&a=-76M-hR*Bz#s@tuyKqi+A zH-NKk#4p{Ne*5Lt$q|wi>j2-sBIN=AG(=`Z000b71$>HNw9GLB5AYK{!f!l%)&m_N z0W1*3yfPFdmrCj`SLWG-4@i>R{z+=ezOQK6uxShfnuu0x+qlyeQ?ZtgAE&lT?D$Qq z$v)|ADB0~aX{zk9G+UWh!8U$CkRi2gxytk2i*1s2 zty|gEsx86T+&D-a00FyS0HX;&kpuz_@f0KxgoOV9ya0X!j}Z_4AWTZp3|1P8vyaX} zHDX_^{nDvF?3i=cEc_6yNB?8#-SZ#KLoe~3`pp+!?3@ps6i=|fPygbNr+$r%{mbV+ zUwC`ldFuT*{$=4K^k+XaGh@)l`p?;UJ`*#leLeY|k$%1FAW!*o>>T{Oue^}2em*{S zH&!D%877sZJNx7h>;CQc)$d~udYR`hv-A1+8$K1C zfW$A|wT=MlS}~>g(FM$?y&#tCxxV2a{c|?h9(Pne=F~dFI$ST6K!l=^PV^npQOPIf z)Z7Sjx+J85e%+a$*yLqar3WY1jgh-6%w_{~#@Rni_x$C5rv~yNm7Q$+`puK0F_|GR z-g&vQ|D3+OJ7==)1zw=FLPgacPWopsdF1TF;@Ng+@#UfNWa?9~S+9t)DEKd&qESK+ zwg~itKTSnh*2MW`?@eX);7)_5#9U=Zbp%5-xarP3RfJdYer!Bc!>;PQjM+i`T$x_m z?o{1(&om$H)3uMc#+}T}gvS=R=nNnGI$QlhfoXv5$#I z&!gs>2ko-4IN)6Q(TwegfLOS7>T6m9>Hx|s7qMMEkTMcUsxvdVY*1$(K3HE~KP%Wb zSe~9Mjl+=?LPmPR3M0kW1%*hh!k_1)x|YrS@hNh$JM?u}ZBJqx(p3;mZJ8lLkQ!OA z(yuhyQkh@Z?rucZ_pG!FpX+G|l;j$i?z!P(sbOjTIBpfzQT)I2ch$>t?1t5C(L4oI zyYr|%y^a^{uifT=qQ6h_wY1~e&sZMGg;w$xbMuGi&6~xzRz`)kR1#P{TZ%SDo(?z! zU=ktduX?piZ|&>>YuSSm!rqaTcOqshM)JWD5oB9mdQe6NXnPP4INEfA5KCXyY^WeF8b-7sE;Bno~;flvQ8YEA}-bISyvIFa? zxg`SImFL!<^O?u#a*Qr=8KSvxW%aFgo8^`k=zdDDK-D?>Od=Y&b-y+DUj)Je>fU#&>&kSxX@{}Q-<5wk+QQ}cU+mb$(D*PTTj zc9!M@m;Vqi^+8`R?mbz*w0X-@=*%nW;jQka{TJTtIxPbT zX4Q%jhN8|at1@Dsv5~yjya3)j=0rPmy#wUE=}RKczeFQvt=m>BLC3fBDFvEk)SDp< znV(X!gvVa8Fyd9TpF>Nhs_lENbs&1zpv8DJUy)&cd2I!O;F?su{a>zy12r7_xx8Os znN|vzsT7M8kXE&tB4GE3xiJNmE%5lS^vqeT{(m1dPn7!jIT@oe9~!L0ZZET~2>00N z;*LgZ5SwKE$vW_F#@RdPR6ZSDXE}~&ygjr%rB|yy<^h9cld~LkFA>yb?pisSfKe{6 z2D|Z8i85@2UBu0I_7Z~deZ5x&hqK`Pvn}kiU2VJDYblBp!9#1RM%~9Yche(KjxK?B z?DO^I^72>$*RN=}iYj#t!4_5fTT0he7{0^^t!ASl|4!JiYae4KrH#GT)S117=?aXh zpXD+^8;MXC;9lIa3~hD(>+M}8SL-c16t}dPZAx&wa;g@TX5xB!i`*!D${YN$+yrjM`JZmwxE&xchdeIBZW&N>KwVyHin_6olmqE zWV~v~m;%q!QS8RjCpsGP=gI5Zn~^}KTxL$rAy$5ncX2Be;I_XS}_ju7l`Ci#Z-!`E`!ueDlN@2m2RBx%qNGpmaJwZ|? zPSNXWl4A|=`g71}S zeg?$}`9dzyAJ#=r6jVR4g?MN%J3rHTiU#=UE5qVuD#khQgXVMkPF1T_%7(b)-SlmH-K4DZ| z)#Sfd$LWQ}Wmj{Zffm6~r$#0n--}+)Q?I^H$IctwAgGVFeo^6kFm|pS^^~e;AI$Dg zG#dN$=8=tmI=9Tx?z!fpSgy+zTKMn9>rh+|!?x*~2v%0PXQu`4{sitN$`3gvDypJu zNmr+l8d=t@!6o)Rzxgk8dj8Sg<@Mlm#FpIeN<%cH68=$@ZlZXyn83 zUkbo+_F=J|J>8cF>h*I99eip?n)bqJjZ~jPHKQs&kEj>Cb4dhyfOqv+ic12jRaNtY z?{s|6HWuyd%Yo#(xx)5${@vR!-QHK<;Q#IFY3C0f^g^<9aEdT3PiH{=OS5hzkk^Hm z+7s*L7Iu4MOUvyijq82VgZdj%{4TjAW`P~r&(6PGFHz-}ht`*KwXe!XpETUNCmL&A z{wS=Wtue0-FE1O-zs2TCSa*KPuFf!wJf{YBrM^;8BCK!L$4HcNP^z8NV>X?_GIP8>sxMb|2QPIxY7J!v%`&&d_e1 z>V0qirH@b6&}+Ol`X4x(Y)ZGy0?*V+>q6nSQ%>1o={u}zC)=yZCTXrSBs99SlU8NS z?>5@nJ>h&nb`}C%!g}1YaXZ}tzCuPWT5yc@hfDkDrwATm(4;GcN6Fi;Jllx7)IU{Q ze@w41o$qj^BL}n27wDu`<>0~YAB)+II(-x7@z+-Nl4};=NHLgj|^63k)>^T3ux}#Tv`j`~at^eeNB~ zxGZ(ns|5}v)cR}T=~~(_VY4f=SwSmz4LAXyfvGHWg!BKOD2aE6VM|6{HH%marORpu z?hj*0*VKAc^kiK;CzXPW=H2w=_&BO&7|+)cGXB6&lC}+}bxf<=lcc{YYp8ZyK+n}5 z>(KVi4Wavm$+;>aiGK*;j)2A(kU{oDRsG=`?FRI}M&mu+wDruFWaAp|S&;_Z{F08D zrp1r4{C&fc^g24wVzd6LfU@@F*PH%of!7@88!S1ZJg{imTRq;3CJPhNE83t%#`D3S z+{(9a=9c9>3{lEP^T3l-X>{1121fIYv1Ge?LZY>?=Wo0Jowv%z=*cfj9F7_X2V*>} zBi7Ar1Ebf%RO*c|;+|Vf&6PWBm0kaQot+23U0vL_*fc;&37%%A`mHSChNS%LkSvo6 z9$Hp5v&)y0&zB(nX#wHBnf3i*^Tz2udUw-;^u|9kj~i#^7;cr_{J7peCx+oHWS_%# zAQZ4+Kk35ps_KN9#x}kGd)m|u7nBC0ot_HJeYTknhvtCV8yiNgk|NhE`^uNexBR`i zY<~wOQBAXvJ;ez#qv#eDf)U}*_Bn9an{idVChhQbZ(TGy2BoM_Q67C(H{jcS*)WRr z(tE|8z@lkq`!#VnKJ#81T(<9~UAj~lbbHmrgn_N4?XoIe3?Oc{k`_L-H^ZDuZQM!Y z^`W$lhqi?Q*Q$>WlZ~PR)bux zf+y^&_g5+1DxEbgVn##d18ZiAv6xDRLXoDr8(j!1!AtB^;@ghpmv`Hj$kM#dH`!;k zdsSlO(S7<9o%+-#;l)7=HJ=D2-iNCJ&)L9%lDAE(Srq^rX&y$3s?LXv)=mN+ZYOEh zft&V`$7}qDUKQ*0#^h%u(P&057DM|QL>D(W(G;$&-%0^1Chg(3c~x3E@AVA;$J-s6 za5-i^U-UK6-7~3WwL;4G?Vj5XtQoI-==O~NyEAT!PUDsA__QEY-PFg(%-`6I{#2dV zh)h*o;iv$*eOAW4Hbi9WjrTh!cUFK;V(5h9Y+((3qxq^fA?=d3bhs~2)rs-#W#exK z@k2X`qqj=-H25y!Lm5D~R~uZB{z>t|{xqIVFIm{9{`TGDb<5wW?ofH6<2Q%{H5+wq zpjiy7VB@nuyzPUO87raQ(?P%Ah778}5zt@S;KhP8tViF4gjfW3_QKw`x|6JAcrb3d z6+6#{u4trv_wWj{y9;fc$!u?EQ$Hgw!v2p(7Tq_WtZmnQTsQWW3oMgh6?JkCIck-y zynP;f9vB4*0NM_wg+q8~ynkr!@C^4cc>*DyW3S^+~w|?#Ru& zS>!3dhTdo}^IW}in({3oC$~-SdhK|nesqh_U8G4vO?X*!;N*F0|9phu)Vk^8(PA2| zWNvYOdcFEukvP9T=AiFX?xv{|HIwk;@icqenp+WIhu@yZ+6JOmyB#8=#K7vOin1x- zJnr7gG|#c`TLdbE1;aIoKOr{?Ly6X>VR&(G1T^EGU1iC}%gM*{b7`TC^`#HiP<=3$ z^wXti;*~o!&-d6s4r<}i!#KXHG?1&KdqbGWh{P-ZJ0tL)%V;hJDqQNL>@JP#4TpB{ zO3c}4-CvP`gPi;JXHR=USXjRh@7^gtKl=5$ZxMv zgX4C_>MtQ%Pw|_YQv2c--(sl6^;X1*1}!T`a3-lWJ+DK*=I04!tn;j63PV-3)dCm; zkfv~d-wv%1Wa7`xYMVff;ZFB3edvV`t0}6ms{qOhW83$e0*^4atXHUfH}Ajyk*yE+ z^ytjXaK}|LYXSU-TLW6N14F1<$Bv@GvGMwC!0 z=KQZz++mAqj`#ysjwCq~#Gc;sv~~RMUr#pH>hIYimYMzFO~c|o*#DJL_1>Z|lbXU* zs}iw(>X2$E+Ryr=D<$Byv=7}ydpoR>P^1oESGt3sSHTmfDs0rHVo zzV_uEOXXU-$*FL4DZ0N-W0I1Xcma5r8De&u9lJ1^LqwN*DF++H`EpZLjY zIb1p>p5k8K2Fn^lwrV2bO8f1^0vpBOtsALZ&}kyJtD?X{Fw9~jig5V`S~?N$>*|_W z?Qahp!Sj%E&Fa0QDHSws;^Clste5;I1)Py`6cccpj>Oj`i4ydT)U?r6x0%g_Z&qm- zmdRK7N#d~*Q$!85v(S_-T~S_|Id&JDRHU+)VHPf9K= zs2I_v%j$xdq}UA+IUrXqjS2LA7w!Q6-L&b&ux#5eM5$+1#3&z8J6&V7 zj~#j}DXtv>eW4EJ32&|tph}C$bV#u<5L;+2@WhbQNsKUTm%iDf@}qwwJ*;dEA~vx_ zNr`u$$1G4>31a2i-vO=#LE@XeJ9Bq72YXMK;L6>OSCVr;2bTA&=(m@Q(5Mb$M5OBl zL)NBH!SO+luBQ~egfG;m+RV>#svtQi zd>I)T^m)M|K`EmTX%{u>JLber;F#)NH->12Nj0HYdq)#b$3P5PLy;m{wrEE7vE}K1e`yc>)eGq#W^;pOq@xxa3Y`>zyv1tk zEY1i*EtuiY!8e-R@k|2s$3qg-88gz`L{Z~@fAk!BzsxsQvOQ?_M%~9D^2)^}xg~+D zC>I0AQ^YY~YK{#4K=ElQJK;(4QJjEVf2)`)&Y^pGB{~6(StMCo3l-H48xft!U;nNn z$?x5`S8@V0=)p>31f-}||1qA(Rz$x<`C^^r^oh+s_uVgb0p9Jo8}I0nY46XCNApqV zzXP)NW5f5(8aT3;GBC54>^DHVNe@tk4c*eIbi^q=3ie9A5VB5kHJ5CND`HZKgTttV z-Fe^c)CACNgT3J-8O!z3%&O{?^uq1|FN7>6*8`ru{tg=+X3TahXN3TG^i&;l=rQ zky|-0r&_({7SV>O>Y+?(Hbzn^xW||!H+nD2o=M#J&;0&S9t?e6zvhE7sb*pEwTkAr z&WgZ?GlC;!xDIY~vj}y9%5lLBL&c7cU6JGu<3u)Fv4>-c6Nwtyd|b}!r34)Y^3{L; z4hfrM00jlTz=(jSY&{v)!e@Z=pp5Cvy+2?@z{p`#)QK|G1Zg2sUluDC_2$hFT^Uod z4odM1SUJFBnT{$DzYgk(=5z9v`Kl=me0>{w&g|pZILVD5Sc8~BL1Id27me(lk#X<> zo1(0JN^x{M4xnmKot89*3<}CYq?zI*ByzS4t|aL;?{eEwYJ3(aavGDgVM}rhNP-Df zV4JErH$u8W7kBOqr1I1Eg0oF156ZS4@fi+z29XImiYg%{iG`(rz7MYzt|xqX^9MnR zjEa?_Xlm)S?G7t6=h`MkRcGQwa5YUX}ul-iPaC4=(=0E17v8GT@B=%!2o1T%ScB zzU}n5#-1r!(4=COxK^4@!Rmm^cBNPhjGtFn7VfPBpFc&+aIT#q|8_IhcCI%fJhoSU zk)PC7OYAH0RC%s$M@a(TMbT<7vdD$BlX9~*fk)c`8>p}TjfZU6?_sli8=$An1Y<&~ z4TcIk*O=$p{)*l!9Qweo$q(lkF!JB^_*m2Ox>83~U^ep}ROJ?EhJM4Ci$MBCtfbbHzj0&O8bv8H5!` z9B_7>1Lq0<+Xw^T`efVD0_@Cu_K%lv_7oWJ1Tc{rVv4MY3~L#*N`;~xg|CAg_|sBe z$km4>Qd^#cQV;|dc146}T2V2<19zW)DxRh3Pi$t{SJ;3dJdzl!ERo1N*k*x{h19$@ zx~+e{y9+wv$z`7LA;?Q;7+LB(5U@Gdw@~)KYKm=9TZd)aKTm9k~CT`(5nX ze0e#OXL4VvyFC*iDMok^WF}~cZjs7C#^rM-yrYqg0Ql(s^9zeF3@g3(QfN?6HF&0C zAXYM+6`&ymjozMLtuBFZi#k*~K|l?fFh~dwtuYu{M#GB^a0CBp{`Wa{K0=&6ZcGaj5VKrsq`)p6 z$caVss=%E2spd&dbQ-7ts<*Gc-fv%$Y{w2xl7nI;HccFoA<6(xY%5$e8YJN4FIB(y zH#TH#}Yr2jQQ;E zkIT#AW;cpDoVc#1=ot`LDDmRF73Zl?n|^S@L9d#RuzoE9(FQqbl(4G$?TX z2ew*!E%Q3(eNP28fR}Op;ok%|R0_6w zUK=ICIFO`pd$dW*lWP;8u>_JpV*Sko)FX+dgkVIQ=_#!dV=`OmqhYT{ ze`_}*LoaVLEIUf^q6IMY*Y)N#0Yn(52!exz1MYt^GC$sw>2`fd8+RDNiHYvq@ZJ)G zp?7ErnSz(XpS}mK9nPPv6r4fR!(hU^GNW@Zm`;s346*R_M5KN?=RiyF8LF}`g+!eK zQ_BJCvI6YHT44~xToW6-`)OUkqc{0g%R|`6rx{W_u1HEPAiXp0`sNF$%ivsl^YK1* zmfpW52En@Ig`_m(W$+9zi(Bp$fL(oaZ2(3^dfGx2P*UV2` zGXq+DYlFB`WWoiJ8biRvz*tpZv7#P$N(&l2J-cdbQseI4$g4fXNe0N!qrgd zg5?EKyq()Al`hvUgXP-oYut~=GZ;zuw(KZY2P3P*lwurbyfQ| zL|Ug`1#Da7hE5GJ&Vmu0=ZruK2s~D=pP<{#nwb$NvW`Ut3b** z*T>yVP8=QAB222F1OG#vx+{6+gjSe&O7|GJ2w2CnY3w8d5?duA+*;~^>%|=uQUrlkyg4lh%2yhM>OXVrodNP7O9Kf8MA~M( zght>(R*ED9f(5-sY^Yaa^&kJo--b@`1qy!XE#h&<#2(h9oOnBm#hfE3i-m zRtiv`_S4aAqI&M99T|Ftt7!?8WV@o z88*>t1)xHwL0n=Y>B6Ag9U+Ip@QP4gR_5@yYJYGc!^Wb{SK>s1QtU!>rC0_-8jumV zKt>qx{bqkg3m7|bj>X-gk{-H1UcI7{QVRwWm;cm?Y1lQs^PlBbBE^zzC0{9ELdd^Ju7MVaR22B~wQ zAdHNtPZ$A(7X~?)h4Cj zo05VyJ9si#*#A73tP&;ZsQj?NMTB!P_F7^PSOP7n05RZ>;YOi%V>9&Ah$qm2z;=U% z4p^Ikrx=AqOIShTxHRn~mvq{zR%E>pK@~G=wh)Ge4b~87Nt~Z*Yz&gJNc6OW7u_(G zNP&@t4?nB3AqETSf#2X(5D)_Z1OOvM1TX+lURAHE3jwMtKdZOjx>A_5F~9)bY}z_A ztx4zIIXH4;l1#8df4}nI0Fjyjnjru)C;(msT>%zI1kE!WF2D)T!q512#7;YafFBZw zf(hRMHxZa|Ahk3H9|1L4`Y&TPb-kpBh0#nZaVe#s1=MIdERHEigVCnrxZrO3$EAoz zN2jENPKeTg#8&`e005a8JDMwiy#-d+dxxV~HUSgZXxQCf?b_O`ZM*B5*RCU56oW!g zgb;rL(f{%S#+G0V!VmaC_X$J&rucwPXa92RxwCmWLs{`Gtq;HYnW@+ed~~X;@~=bB zP%iq(SKbe=RP#eSPM!l?8=n~t$Wryn{dve=tQ_qB zGjuun*FR8)$H+)J)0Xl5L8=W@aNFZ}uSUw(P( zpS<-?t$%;z=Zbpjt{nfO@-h9h&y1AA_Y?jzcD`ptjI8v}-{0<~1)u6Ck>?zgpwVL= zuu_vRMqNj>+++2KfUN#ItQ&2{DIYel1ECJ*x_lKMcK*e0dT<#T`q_e&T`OzdSya($ zq2hs40XBl#VyR?}YS3N~ccy2>ZtcQ%UcYsw1^y)n2DJrZ$~8s{)URnB5(DDa51$YH zKa2e@bD7)+*0CJDWFK54MDRU!Tn$%JBx3%IBB=dm`8Qsg?8M{cQr2c|v#76esG};$ zk!`C=qyubg4xbu*>JV?X_wWF6J}C8v11r%MVuLwPqKz`Rn2lJ~s7HZI9Ss0Z$A7=i zA^Jj6a!<&HjRpN#uj|D;st4LhO#YF7TQ8jU+UvB|1t=j2BnlB=hoI6dQ9qK@&Lc`>x-~cXcFSh z1>*MT9Qm>5A+1|X9TzsN^w@lBQT)KN9hhWOx?-ucbZw$Y5|#$fd^*}VWO6cBVm}KM zTteNsqNLXh(&G z-*1qD11=t1J73m5z5TkqZWs#Zt&4S4Y#CZ~qs9|Q1Sj?(56yLk7h<(dx!)eC7u0>H9*wcNh`POJE&*%Rf@IM+%rc(FHn2;EgZ7(8_ zrQ40_wO^~y76p5so1y2~KAO_4t@Zm>Pg*z^jmn4c&behp+7~u+zBkqCYrFL$`m#~= zV;nVunm=8)OZ-u5qwk`p>Y|NxllFBb!cJDG69PScz4-%tqc6?N?%TX>`5xCUIojMp zGI>MD$GQb6SAxCz8sQdob`ltQ6`0JpFsve@{&R_D=8}h^_wJTUJ(wqt)@GTqcd*t@ zC@0z)AV01mP$km4xYF%RQ0T4)J3A!0a&e_(N7eT7aRH($?F!smTjMbABY^n$-Pvll z+NFZ9t98|BHN1u=NAr?N&Ke<`UI!lDGHix3dFq_OO`Rrude-eGf$K-zbVXmj7vp2X zc5T_W%Y|M`k9I>RgE}|5x5=5k7PQ0)V?~nZFTvo)YEs96=qoPpVz%*B@``cc-jT{Q+cGqpp_{{jHnOW77r>)Vi zXHMm_uiDzR7+oHTSnnKoA9qF}M)v-8wlJ>&TuT^z0#klf#kVHs$;3(3U+aD7_M+q+ zeRG2!>0W>9h9-Rcey(rdSb0ya7yRpUWa=wE5^_n9b>Wy;(v7ZT2)lfvxt;c3LpacF zPQB8A^+vp#?eA7XcV#5(+7;3o6}Cy!raSpHegj|VuRBhLG6bEv;sUl&+6j5|99fI@ zP#s32m4{O%Pzkiu8(v$uX6ohzpX;G>VJmi}S>3%5TFL1`edvypowvgE4=d4T?2fY! zi~I@Gzr8Q&F0yEk-QcHJloi;xia=>;q8ns$@-Iz*=${B(U2w0Q96d-bY`;xky0hL( zMa(=`KVui({kN5eIc}OHE-137b-!Ya$`sF4sJRadz<95`OF(BoO~CRrR2LQkC*&0^ z)3rMf4chWH*mt~Yo`kC8FLy$C>_xpxOMDXQT zR(Wtfr8fq3+M4|&jgP@`G=rP9rZ*eU_oKm^$VsSSC*MgDY(%_ z-+gPpFFN(fVPds_zOL-;jRJEf-uXYDd<$%<&%`yUcN;f|QK9p@IJd$li#$~ao1Psq z`QoEEs%1j(3mdNTir--Y{E4tM5}(z<=4Fn|(fDpUlAI=m-ns4^?Y=?#cC3X{K=^4p z^yNAWH(gl@**veJ2a4J@^Yqf%rx7H*w;9HY4O_{ zOJf=6&N6oly@px6PT->@ z!ljhA|43>vzS?_=_|ANoa;YJ#yGrgAiPLtcN+Zw{Z}hmAC~wFVyd--g9Z8J3j_||R zp&-BRT6t<4bGO7y7qlNzG=t|Z*_Cz<;%Xzn>mB2uoLWnA({8K{BXLk^0mI3XWNb;| zd;hwlol%qgRy~JWZ}&!|ref_>XkoUPLzLXB8run&!%hm2K5o6L)l~lNs5*leQ0tM! zS7Pm3I00XdLwqtA-E#0}J^`&bB0%Z5LD7&j_ReAjH69%!gJHV!2<{}|t=W|?&qf{Z zF`;~GN21-+$x6;fdqzcRj#yv3lQZtZ)SHh2T; znf2R6h*1~pdqsu6|K9>nMp$}=`J;`f_*QGWVA93nQihNoAH`-NpVMh3m=;Q{#o50%J7&2KRr>QTj>-toGKr5Ne-)Wnkjy^55%>(x=T#DJt zXjV(T{bGxxm85OV|5c2>xs3b=xJQ0y?EH1R?0o5KR+>?EH*4EU4vwQGF8LlSxfJ%X z^3IIM0-gOr|EJ{*S3E^ciOC>u6n1x#-*p2im90$rph7rylu)$6F1p=>^%tiQD@g!z>HjjEz*mMRK5e za^>e{Xa|2e8VSMK#xQ^J@DylO?~wjtym_Q?Ghj0kbpQ%2Ln)d&TN41CxixgJtqt^|-+0qES8W65 zZA!s{Xy%tF#uV?JN1Kl-{%VKC+|@hp^`C*~<1)p%J+ODsMZ{oddoRE5G$D#FM_q&=jhFQ=HJKub*G66}z)y`qz zN+Arr|KV_Tk7g4}`jROVaQ}$^cH3uw!Zy!FYB{xgT39`< zke{40`lcA!nmF;>jUA()z~yUa=62!WSD?Z-7{A1Y1FpMI~FCT#*&wgHBX;3gN{%iZ3;IGV0T9`v1L zeE3rbg>yXPp`X75Uv(&!J=x_@tpl^ za4ZpYhZ;O?MEX^^w6a*K?w328P6e*&H{T&+%+N6QLj=aiozd|X{@|XLw8yV|I{RMt zd)|FR5FY=*your$)sV11xdUSdylZ?mzU`BDcD{y@@m*kC!1}k}94>~}b9H~TTE~Y9 zSZZbxvhrTaIwvy9{4U1y@KL-Y%J_Yn4zGIz;#G@wDkwH7ARUbRj16mtuP(g3E;yRq zz@c7PdzXArU4dgTe$_{-lrG-f35NqS=lxy7$R7)-0xANMakTGWzSG^h3y#U(+8jE7 z0zJNK@Ha7*%Z)R5qwynTXyTcsp=a=2Mb<@U&?MLbqSwVH0jDJ#u(jZ9#vml_}Px|vLuVJwRp+Gxvh6guSS%ykaueh5#EN(?1)|u z$|i}1MDD<)Xk5u#q4CoMSInc1&_+%}cN~l6ix1677Bf&|0Z0^Zj!l9kS}LWzZ2zN@ z$lm7a*rZt{w^55D<4L-?290ecX)I$#{5bvd&#$vc044IGH3z^B!gYm9&)L>e6I^x0 z8T1zKa;;D;l-`no>YzFz?TwN;U;Wt07eKgo12xe`$~iF)qLHkmEUlJGhb+a0i-;|h z?qV;^|NMj$>OtX6sRNtW+{eL5gOD#*I5S*^B(1SVRmZT<&dkiV@E;XVeR?m5g#rr= zQf2~9jKj*cjNmyT@i%!W0G~ekQJJ9Dqt_&h14wTR#mqdAChN ztBWIt)P*cVtM=Tb=tw4DAdC3LH|qK1W+8LXpZA<384R|jK~@Oc7~~APgNMGV3+rY)wmgh`c$WX-kD-{l}|KSnDXw7Ew<$&fsx$@6P459&|Ss|I`w9q!VGFu+e%ptP!>fQN{N)|LE@ujW+zQo-K_;Tq*Mw zs;i~k)w%bR#!1%qAchnDU{dyG)%AFs?Jpw;K%>jJd<=z}Ct=iF>9Nq9PkQFba6`YqPT9v);l_+en}9 zxY|plbBaXl+PpUC2?(w)CV;$WN9RUek&!yg1kv}$v&=W9$nzGXwb`@zUjk1AjczfR zB&M9SG9i6?7z(W5JM%#EI!#YQ3A0{CzM(LRNr<8$IrA#!B6pqV0%=I+X7%e))S7IH z(X|Jb0xl3_2joZy&}*Io@pYZ!3aOTA6JH{85j`>)Fn=5lz?&d|+&mhQRd z_W{pz{Nvl>k(Kp2JG<{vrN|;AwEeSE@((k(6vzohjJR*F297_B;*Wi2=Qz?a9(W>7 zgeZtp>t5khGgRr~LX!^fgYl?4H8{X}(&~_Uu$}-yX6Y^Js74cQ9OEJYQkEWvw`swU zgdTP%N!2VR_w#)WG!_swahoGObF_Akemq~ODMg-i|MPwEZQN~Yj^&+rX*PLl2fCaf z%SB6*hG{`wQz1#@WitY%>89h~iJX{-4UiF?xFBuGi$m!KgcC{tGq-6>GQZOjTt%2c zuI03tG%R^#@s@ZY#NtcqY-Tp&n9haI?0kGzUh}Hner|;f^4&S!MyGCMMJ13mnnlEe zCm3bei@~%+9G<=5csWSonk0-J=NGcliXgZyhR%aH{h}ZdW}evC-%g%=bgq@GGW);tX3)6V z5~bb@0;6fI2s4Pll$1F_67IAaT3EvFB`r{ndlubaEGPhIp`Zj2N)vJg4FB>V_$gi+ zK=ravB9z6?n!}}|SgI{F3G!d9SO{V1m)_;Yh;z-*>5?rDfU*Rb3XhZfrXm!kbpqnY zGo3$^p$vJ~M3`D}M;PH~J*xtwa(BZ>5ALKh9=8uWE0nOz^0l`$!pVhnsREF^a|l() z7^RDH#Oc{5{Kw_S^|@OPOPqOBFD^!u17uK=kgXgJJwu2nfYML@Wku_&$tt>~6l#s9 z#b{{@xjiIuby#%qhFDv@efYMK7`-P%K(M3f$wJs26*eW`#xrRzIQzCoa}vlTZcOP^ z?_q`4wmK=w%(hA*2hv+p0}5m4zBFIL#Z@NB4o-|^fZ_{+~w{K&(3`2R3* z+I)HQP<$rr(u7?=3<{`uB1|1W7=yV&ttbNk$9E7E<1#eyb|+z(&qZlKgs_L`BC@R{ zfU)qpOcUHDgcx4ZeE59vykJbpgmggKxQlTDs&!0?S%g>R5$Sb&8b9X~g4g0~_S1_% zCneCWJ(N@`7I|dpK`SHgjQL4t(`^fU{-yenZ@Op|HLkHju2q!4r0EMHUY$pI;#6*` zzwBS%p=HJU>tZ=IXmDY>8=B!iJ$i+xtRjJZ)k88u2z z+-t@Qsf;MXT)aT}P+C@75Cx4+0}`Grk{T|zji`>=Q;|g-_XSZ2C2HN; zcg=&Nu_2OPul(N-EDYwukR^!>Hsp*t!8$E#9(I6y<*nlt$)C+iRwkMWLqSz=AQs9+ z1V5{Y$pC}A>xAzfefFk2Jt)3EX=^q;6+){%PSJ%K3Xlm@+_fQlv>PtoziSyKPZWpAqsV}+kiv%K6~pT>R?Usee* zcpxyk4oSqtq@NOJP>{VEio0W40fIPwYeqj;Z&uKj*TP5?aN_yB4R&MLDX34M3(6`NeA?td9Pk+$5)QfQ>Uj;Um+?XKj zf$l>AwKO<-3d}o*6H_i>zQ8(q( zRi#?VLEeK!vt7)_x8!%` z{2Xsr$X89mtsqrE48!SS@@V(d;OFBw`Xh8rU^7!al}s1q~LjqvKkqj#6RO3 zd>Y)^QNd~xC8oz1#mHVDghHalpc;w@!Hnx~A6;KP`C~GAjEu3GkQ~9loR(S?w0l_{ z$CqIyi59Dq)k4_A_nM|$@&fsFHC4QiU@HJS9u>_Z`5_qN%KpaJ#2UL(CuNR-J?ErO zLa`eVF1TIw= zgenHy(khrW6$+Q|B-wM|5|1O$$n)z%{rc=unCH=gb_yeuB4rbZT$03cz{wWXG%xlr z2>)OAn54GVHU0aS;=%kJ$@TwLM;=)eOz@t z<;Ze!vNSKvFf>y%>9dT$0I%i-DfB^-^A2AUmR?3@&UgxHX6lXJGE-5JTv<#U6in!% zAFy>B6boVYr8;sPvuT~Fqa*Hb#hg66n4}hUAyaY|n>#-BU~l?uCqHu+x7rds4qIQ6 z2bPY@HIS1qHrjD#ELj%K$hKAXBJnAflpJ_d>mrzncdUVvODVoQo_O_0bsmLpDy zMIA_crj?}Zy^4ys!oDtE2kR{@#Y$|Z+(y77GB3hnQYZx+3L~zckROs#6q)i^tkPdkbe$G4RRw!u?dlXu+Wd_1t#iq=D?Nj3N>Yk- z_PA=8mfnKt4S1Y(j&?5)lY3zUD<{Q3VAadxs)W6amHH3PO;em|I;d-55UD3y5Z0n1 zBuR&)fjLa=06&YT^!T4RathqloW^y`0<-oXw{@0dm1B{ z0HK13AdIWtQWEEe4!1@5kIW-pgL5a#*{d0triSMpxH0B{BzRS_YCj zH3Z{)Z#-Xf*R#xPNo0-KUc`{APX@I~2VZA5=?!1c>}#?py`(~c#t=S5a9dAOmm!(f zLV%yn>gh#n7(>^HoF5b!S4lHH@h^Rlf@Dh+9T(h1u2|{Ulw?~S)l3H1qFB~A&Ewio zoDm^*b5}+7MpJa*ao`DjQFu%QL5SL~J&{5(29FC~8Kb*odNo}F*fiH2=axEKP=-uo zq(m)Wv~8`ctRvB`IZ9{cL{T2aTRTg5UXa&>Cr6as5NiJbFc1&}0000pR5ddI0AEz* zC=r12oPUB^zjFpj0EwiDdGQvGHiUTh7OlOb(iyTyEN`y*_duWq0ETAnYzhD$0o;HF z-~mkVPOpkr3DAT}NFlfgnplmI#6x743b%mkUVSV#2hm2Y-zVuJ`@cx1R8~BHlQ0(D zc)l1+EV?m#MvZQbzeilH#v4Nnq|9mEF+9?wL?|fuB0z`$0B8ixW(okc4_mw4IwR5` zC-1O9kavmKcE4};eb@G8Yxdvu_b|FVBj!W<9o_AgZL0Ok9f+J1#T+OIg!q8+#ek2Z zp28CbKu-vuP%M^yqRQtLk3nu>Bp0`Q<(JQC9b*fPc06RkRV9pWr;O9~x4XbH=|^IW z#b(?aqAC2!1hZ{_m&VVHjg}FOnBv-vxAqrB)~Zp0dUioP6R?V6s>C!CXE{*~MP*64 z{J%|G#+?wX%;;t16*HyrO}3xjz}@`z{mdV({rJ=Q5*vJ_{73z7v>%bi#@@->w`NJ2 zYyOBWMLzfB2}mU<^cl=H6rLn93jlNNcU2bT*PH}0k;>h4IayGIBF&g2A~ri8C#I4Z z!6q<==W&+BxPilkB7NGJ1Yx46hPg2Ut#WB|lFLM#NL}9PT%wQ{jf>I>HE3|SrO6~5 zV_3XERlQ|W1O71ORBx%u9XUZ`*=)k(uV&yu3kM~@D6aL2s9?pgiwnA0m-ozxHjgAE zJ5dBP-7A+M#aT&LVCG4}3asmBx~;22MU-4>VmApSH-WDSH}`JT2fNAbZYY8eL*i7W zz!(j2Li9xDgms0^0!5Pz>C|7{=;fdi6RJel791+vpqh;9rb$_gg^Y0;QIsC&+nUnd zda&q$tU0G$IcsQLq%Mpo>!7w2FTozDM^9tKZO-8TKt6o9cFGY^A?$VBsPwcCKEQ!C z?Wk5)#TfDxi)KqYZ;oCt5zc^QFm5z4StnG{1rs@l@uZWxTzBh*|RlM&I9lX_vS3DDkQt)__5H%VE=zO7l|8{WpFMMHbfmc=3Q z;MWkGFA_$~Fwc>>X3vO&K#}O8@3@eU%CLM%vDbhn2R`H2@+I~Ex`;$IC@4``14Ivs zLUNw4hze@~k~c#y#Q80ADM>Abb4q*q!WTB16Hk(3V~Ud9T3t}JWWxJkZUc&|^ZSFm zfuQRI+sfcYEf>Ehi5Eo+;|{sLtP4iYu~1_rxq44*abieuu5%3}#bIBMN{1dVWn=Q| zufZL3ce+S(gKS~Va>q3V@l02wN6NZ2M8{|IR_XU!%Q60K8q4d86ox^{Iq;}qg>wPT zDk3O~s&OzRr_<**K+J;ZRgHzRA&J+ciBgS|fKS8% z40?lwdiGrOx0Sm$Opsq?ZUIhkNxm9wC|MBjcEK!;Y!x}l>M5HOh9)h|S2hEfuET<6 z#}Ij04aQ+r;oX{tzj9P%Ra{gl;UZe9K6mJ=D5xC;F%?bvb5EE%*DlRVI=_&Ppel1B zBu3(4Y9ncjo4`zvYCT&koL+E3R4n+9F&VT#AtJ6 zA#efvyx%7&d0o8wl$#|l)#U1#1`4c>vY=+FCAI3sqghn7Q#k_U_*XWJudC+|zDb7m zG0$ufg|MpAQKaki=U0p}B>B2$8m6c$ps=B00zD^RKg@hRk!Uae+Ba`(2Pkc0aw!np(_a7Hq> zhxmuak#4ix;3+O77*r0TN(3eLc;&?vUe(TarZOiv0c|bc|u3JqEs+|cysP`v=+4g$?y)so7FG@S`I$Ik$DQ>YW zYT9(QVlQg555GG4^Dm_lF?(}p6&w@7z@pas&`<*j~C!brs=r|PGBo$?1N2V*gf`U0N>qMAAN|Ah19Xy z!Rq{|8RazkoCs=?97qI&NbKHd@eEaLyzS$GWMv4%Qk=1iVy9P_%iWTkO{L+@0I`K3 z&1x>OD_WTzRwFrG&kuuQV8*M5*GzRE6nh%{N*g(rB^X3u_K*XmGc?2?;+38OcgKEK zfcc(|eM8#QsqJTZn&0793G4)_NmiYtj3T|Z~(UO{F=Y3Obi3#S^VkEg&tUs;E+vge(Fq7GEJID8&j}i(E00$;(wx_N_1Mxk3SZ zi;I1qV!FU7B}&@zcqu6s-&MP{N!R9TQc|t~Qm+TQ3ZX zMo+=CE=7$2Q_FfohJaSE4%DSH>2kf$_w98HxEQfei0{&4&KeUv>X#uaBF$Z`BbT7` z09R-S(vBD;TT#EA2%BgtC0{s;KqBzw=m7xvIEbZj#`LZbpju%3$KNmtbYa!7YEj*b z8IcssNhbH#2&Xb|WJk@R&Xi6uR!n0HJ$N7b&hO9zT%T-LHkdT`dPdfF6SocG9&u&J z@|Sk$MufEFDG8g@49BrGx%WaEVUnZ9Q#08i9W25X&>eF~=*M>zE43;9Lny1Os+Hnjg>PnAFy`D0~QZ^eA5e$6| zIWGvE-Y{Gn+a`%d4ky-EQ_YdDi#}G=$;((uBIBub@!s;2zg2RBr3=k37Hx5RtO-rY z%B_o!sZ~839?6?5s~doJ3eD}S)eO?5iN&y3>-ah>BMA27nc$qw6BOkG@D#>C@LGpj zrM9>@)ag@Vp!bEkV&=0GY0ZQUNE3!mc7gzBo%Ix2?k57mqLN76#gbcVMK{xsGa+*&hyAahm}7Vy zt8*Q(MtRw|HpjH#+A9_+TmunNc3F((Kpp)8=hIc7QgwFSL+c&c4ohWa`Kie1V6<4y zsMm)=a7BFe&7}))VkNGNmf`5F(R*E>gK>2`bPJxaH|%+9X&hWDT}ru&f(8$G1yP%x zYRz1LtY?L=qZ@|WNVZ~&7M0`X!U{ISb{)6<;6`>F?_nIx*|91MgLc?*8{3@52PSA- z6kNZ0@`cd9LC{n5)}t?u4w@WH`2kiw>w#7aVb(xZs>1ol1=Fli)VYu_OzuuGk>Ivwr>$>3g{O)7T z8Cw1p3kA=`g%SI_W$SycA;+C2cu3<2y_O!#p60MsH{ib`WWvXEBWeI^17<5EqFSCv zK&x)NO1i9wckf#~j3??-20UEt8;)OjJj`FNoe&wVTIs*t3x0!+>fHx@c$42)kej*U z{zBe~jpY3~>g7QPzjbhYHL*zOa7Q|ISWuL+A~>T(l9(aM?Vt2gXL%zG)%WOzF_jqB zh=6YET1}z^s>NLPzr8c^#!c_}Ut2!h=6lEr;$U>)zC+*1(6#gNFR9urUWXn3_}l0{ zi!`D|6wL)x&`)AYJ}~#ZMSTrVZv_T$%h*&4 z+6WDnz%k4J*xG0X*vcW1HjzVeP+ z{5p4Kz{=167X?Ls)AcTI*0G*=7Wn8SRL`D7dF9z?cEApvRv=uL3TK>wxyWFjo^Hb{3DMN=N0HD)+YDnS0^?#7xck@BVN;5e}AoP>8aXv@AcWtT<}*d z?`M6L^YXbDiFH261JnR-Z0HyKfo{o>_rI2xaHZ?jkSi-==O$Bie(ORf@$dI{r%vB& zk?vNPEKqoRsVsv=zZduRGAF~sD1|%tK+@Z-VxY#U#4;E>fw3qXZ!S8}Op2E)LZoyN zw{)rRY#kcUyu`9Rj-&p(8nCtl6 z($=%JD-kL>e9YPnwR)lrEtzC|`>@2f1?IH*F?~Qb^YVtvO0&fSql*63mcZfHNIqdIgOCOH%<2w@9IWm3J?W-b`UkoQX<1W3voc{^{ZOK$HE!xDgoN zmZqlig8xy2=fhF=)xtq&eg07kMW4qH%V9qTMt|rg(n0q07Jg*uwq4TgX<5X(Y?$dS z;h@)Bj%xAFsXfQ!jd~}!D|L6aBzkK99F4R0R}V6q_hx0t?Vk7dGSGa;M42;O3uYagd+4C7BhC~UU8Ca-tq)*P57AymEG8>0L7yA z#Rm>}v;_%zQ`c}|+rtFS-xXZwT|e^^J~u4*Y{RCQQrrTC=s zJ73ox?QVl5sEko3et4Agjp0zCd?K{8yhN8l#S5=QZwF=}8w#jeH8_5+M?tHD^7)c3 zB2XS}!12TItI@fG$0N+S@YzvLUwp^jS&m`Ld*{m+x4&hnEv0*x+FZKiQb*!h zd;e`d_QatW6c&ydk1!O>suhwpJpDA1!Unbj_<-5Wy`0;NmyHR8kI+WoWfPa)uqOL> zuQ}5;b+nP)Z0BOD#20f-`W7_<)o|*>*=uAU#_b?H@Qu732VoGl^|BG`9Lj%)`7zQw zri0#fCR=vQ*qkg`pn}+}&p0R4;N7;UY#v%6eFt1xwoxKsA`3TiBw-@;6-2q^vlo8odA1?w(POg;6$y%SIS=Ml=Us8e+!B_Fl?cNV9ugB6#`1rIOqlw8uW< zDOz%gZw{vFK}P7|vsw`U5j!HWlW-U9sYbJI&QEMiVV=A<;x!>vVMo1NZ;hI{Ygl2L z`-Iga1)lDM4%uk%gH$k?e&lc|M zU`?2z^JLurP{5;Io{7RDq~{lM&SjwjG*^Yhpi`BPFpCahM2PJ=8tDXYPAR5c}F!csgp&Smi=(rqbq-S=g z;mo9YdizYY@FkNs9M9w*)#tkELM%8e^qQl4wfRO3smQBP`1gF=eM?C()wjK)ZthwfV4&oWIfOp><6%L4cA4qtie!nc;XAK}2H zj-GAUZ3zc20QA>dw_+cX8g_&G$VAV(sN1}+y#ut9h|B|E%<_{k_i@Ow|MY`NS`%d_2z-AsxON z*O+JJ&~lKH#PP^8Pl*9yWa3yROM~f{p)B5FvKGsdWdZ8DqfVGu?q%`WlGbEJU`v+2 zB?A*#8b2YJf>P6D$=a+&U`Uqi4rh32qgie~ATh^M zsVd3wSd*nJjq-SS$zJCIhQNUX|9olwB?l1)pDyzbf&6lc|2jw?@q-8!ui)>->-hUz zKk0+lLHCkh@SDmI5CZ@N05dcMGyni!R6Hok03fe_C2qfUktASB+pF2SZ6r?k1s?>* z?xU8M%tj`z%YXj}lnekA&D_la06c&V0>I;!8&ALh0^!d>EJy?1;N#}p4VN*4qXBm4 z2NH0f`}YWsKJlhk6lwi`cOa?OUOPup@x??+KuB)Tc&1|<^XA4I!@1GXjV*?Fg8{Z# zPe>t(*hmM!?=Ua`05StmBnANUVBFm=hgTThySw*9m1}%mN~5(%Jx%vCgjJkh*0JdzEOUc4?{{QP+e-+p=H z6wc*$p{*64*RP8gKYw0IH+p%GQ=QZALiJXc$xNH?XRe~|l-b>yT^%y}EZKQ7bG5p^ z1`|AXWyMbR9(|Uce4>`US@hXbIwKf;5@m% zZk-$W521t9)Wt;B2B!tSMzc&{kizEvdUZ9mdTdn z5afPk7%H(KK@pUa8F^=`&6*Mo^Mpm5amk0IQJ+^dvquL+QMc^=XLH=r-@WK0RUofZ zMTrC>3{*!H8WXCgniZcJ3k(J*80vFCX6Rf_IuXeEGTG-Ts06m5xWBRzDoN^cH!bxv_s7YtF6(C(!ae&5WpL~bN*82cl&YpSs&;0 z)2(9c;ThLu#R5nmo%X3vz5#*l!3J7HxNz-4_{kNM{D6t;pTe+~dCprHGz4iJ5O`;E zq197pVzTa#Gj>MbA8b~I-Y%$QSDrKUhBHe7*aNBBR4T~KrD{1Llya&Pw~@L;MGPDV zMB0fv?*{*ID@U?wZMMmu_#{DIdF!cmUEPi*a%KNN!^iWpKT>+roiP3xvhZq@TD-6{ zwGt!R(OO!lb_L53JI4iNq; z6+cOmp$xe-s`e7*P7xt+*Cb>^{1!!BPy+>U%kFc}pNPsni~gDYuK zxny4j;)r4B+SPUdZsU_Ca+*vip9&lb`UMd|f>aX-)WJ}5ai^+%NZI(OeKR-nVeLq6 z4eK=B`*_$X+B2v6E4}Dvw1rdC?>R>SKuST<6ST~*u+VWBzT!z5KmCHAf6S55nO*vt zEW!M05?O=_$i12ZG=VC*Q&~>~o9F1)T)3_ORh`>Ex$03HYU4_Inc8KjDJ9qH5Hx%c z2KM!juGA8lEeNq|jIa%-nASTV4+hl2!&(13QvWU;62yjO_Ph>f+W2p-{a(6%XZ^+M zwbXzm;E}wLTm(K~+I+3Of`}y&A|>g6o)>E>`GPCx20Iz4ea_0GB>u41$uhT#jMCI9 z;SxBobxf52deEv-Axj%XbC&Uv4^tv%8eEabnYYnCLW1_NgAFIvk85_Z z=CJ5Ff_QB+`6Mk4Uq+V9T&&z@edP6K%7;Gx%9)}H8JVfxt3fIlUjSxuBusS&z&H2s zf_E)88J1coRKX&?yCKgFkm#TuXbTO#2Ws1x$VMmn{KS z<_EN;S*A~}>523Q9jog3tvZAumLmi!E?-)Shk{ zQ`{y1Ee?#j@H_-(0sujy+D8f(=&M?)nmD5>-?>t5^tYAk4uI?RqT#+RS;(xfXIrga z&1DsXECKdvSf~CeDmCr7{gt1M$nfEpJ7QkHHzMT@sH?-$@UY^lM^;lJ8~?~7*?{97 zg(0WNat~(kL}E4m*O>*#g_`&hZjmg9>%L+7}Okhk@OFNI$8fyF+ z3XAT0hx_vt0!YO1Y$%pg*9bKgSA!@VV($gZXG(M6Ak_MiQIKN#Lo+k-CKi5~Zw+=f zBG?L9i2wfnC&C|D`s<2Z+WmseqI7$C#Dz1`AvSGB#TuqNImFLT#k}q|_~DCfO{(FQ zF;bmFYp{gYNMMalit+PPF`N50c>p>MGL)38wIehkF#!$+m7Y)XWQ`whK+mL?-7=SK z`hx9X+fscv$lnKc%GXL>ve?t)B(Y`veK)Vmsn%33bYavAHRk1PvPE*W{Q{L6w4($r zm48>;k@E-hv^>iw5z%}IkV(}h!7S}l1@~11R=vyf72MYOM9M9C=aGUKv%X}h&^PrK zL5oY6=t!7t7tX!j2kD}+mscN;NBN?1wdCYI{3`sHO4L-qjo!KCo@LfVRg4}jNNGtY zRtITs?p{uulT6|0t}BBvA7;~$;9vh}IeFUYtmGJ&jNSyIr)s~%drS)ym;tNkwUx)z zi}9=<){6>F=YO6R&+Ug}c=)`;v^$4D8o%MNBlyavQPU5zL48d0u|63D(WhU87^N?r|-<^QP?C#6%6bVC5Y~XrSr>D3@q;J!+#9 zh$QZglLsWt#!m0Pv0oYIY9YXZ876R7@nZkyUyCsAUskDs#2)$gs1B-g#MVViFsThH z-3h9qmTE8ze?|@f3DL*Mj$e>uDn+KSu-=Dl6)f57@$9JLW`j8-pZn&Aj3 zg2qyfG>C5M%Pw;K5N3xWT%7uK*;EyZefnzvD*|{p7R?0cs={>yKLK;%b8oMSsPs?D z<^;Q$9j*4x76LhUrz9a1HI!1@OxPey6EAIiuJ#B(Mqd8@MFBMB8cARO0LfN(xA~y# zOCuR6Rw^Rftn^J@&=2lJ&o$Uhokr*bxNTDdt|?<~;@%xqc|mY6VykAtVPsnsz#q7j zw$0o4_&OuSXy{ep-nT%u)3}!(h}kLSePNe)@@2Y@zU(Rzd@(JpCutOR4UzvWY|4TE{0 zuQu+0yF-fR3q*!WFqfDIuL8d4K}i-Z`<9JKB$Myq^ZC!T?|S3$tZVz}k&?6b4}p*JTe^(h|xdM&vD zemm3K2UMd}``d0UBpcx5Ilmo`;%C&`hfOVs+H*KQD3v~MO%alEV6 zFRt>rBf;RWGm%`0zU_D{)tuW>4fY+i?OT53%ks|19}nx}g@wEZ)o*TFtgLp(`o_01 zyuKhm{bLs!9HH!Y`}JN1%^ul!ZH}qukWxdtt)?Kkm!6ei0AD9=#2@fMi>GLkSKR{}NmW%g7s&J-u zHyCOtF*{*;L!6(>5#$G2+_TxDvF&hwss;42pbZU#mQ_SdVHD`qID|MelCz+(rwZ`T z#O=?Pi8hh0b<{(rb}+Tdu1(xuDn)`*yZCb2HhvmIo1LK(r|Ui?ux(b6-C?sNuApYc z9)VeLhg-_rw>N6(mY=-T(3h$Av*M|f?XcZTtVI?*#7Y}NSP3B!JYT^C{J}cID^!Bb zKv~?elX!%-7MY#x$^Lec%`UsH3tu@3wajB$3V~f|@^Yc<39K}0VnJvN$@}=fFj*8{ zNx7A63iN7ZvfjLrs~+5eH&^b|9|ViuMF>`>?+;m8g4(D>__iFcJmNnOfMp{NuI;yE z#z5s28WbLZnb6+`>Mm=f{lQg;Z0YkLN8t zWg*eIJj0D=0Op?j9urgbP2X0Hf-G#WZr%YgH>*XWyzE#)815FgX{LY#e(o_X3@P$< zelF%Z@~q0F`;v5k@c*$QyyR-#MTl;-Az?>X&SMq82)ITAQ~1;fMY8o+xj;rn6+ecrooO_L3b?l7%=Pz9S>C@BvilK7aIrp3&0VWWn5a{ zyP#|o2$=+QBZ3G#%mP>+qQPR5ljqbu?fgdefs0$RNCj<&`rTZOXPvF~v)ojQKs^^? z4iFFxrK!Bu!>GBuLOlj#Nr*k?<_G9sPJcDb1>?lX;GL3b>`<5E2GVYd;@}mbN#J;? z$-x9*c$-Vb6|3pD%fkc#8^-K=El=;>^Hq%H@=9dpYN$7MEF$ptd~gwLXkc%GsbHb5 z=t84z_^EU>3P#}2S*`ZrJ6 zF?xS!V)FmS^-FUY-=mMgCGb!7jsOOK`%eHbq^)=EqO0<@@`ou9^H4o)BNpz7K!M|B z;R8JA9)C(^^}FSX=;uS}z&&4`{ViO|b6ri~XX*g=tgGg*IS6;Vc)p!ZO zv5P2J5)nZQ*TFR#7zRU4PdS@)og^y$AKqX#Aa@^d$12QEOdPtsSiuxITPCtZcGi<< z+$XW}58AX#gb@F42*H8?w&Dd6Qmj`PsCP(1()nJXKr0gBF-7jYv>R2*!9 zKVt&N%!@sYC@{3ZDH8ZDat;k5^Fmx?9wXoTMr+j$3-)i`2e2CfxCltzq$WnYqLBoI zP%QMCaX%NMH_*|ij+c$2GwshV^F6NPmclpF_{;=7c3G^u+;QI;gI0nxgt@nlhdg3@ zskiLeJ#5L;!(uBZXYlhEcozGSm{?{OT+`O9X0I!NX}mBv$#9g`jYgWV8%kP%l18xX zis0o;I@|5lgV`_btmtc?JEc+RSVE8&8XL4qk9JEFvb)-$_=L;?u&*q)^Y zZcJ&4=T;%7T0eIh?+s`ER)a+=x7`z#DKyx);oU%>cA~A!b5a065)h$acw;hXJxAJ& z2q_bJ_U(8Q{H*Tr1_!+v10_cxn}iDW!JM9zYc{L6Kw-IW@QRXJH@Lp$P2jG(Z4-2$!MlR9ciulFwKE1Lp@FSEO412W}(E$#GkTj1MW%z%Taf;#QM9B!c; zAdOePwmgWWR*P%f1yXIsiphKw{*vPCOTh_1c;{jwS`d=_K*-?sEV6_oEA_u*^Yv^8 zw&k89z_tm_Tv;Hn?Q}+`0CmtOg;qp|4;@!Vw<<&nTpv{mFNG(vd(RB;bb&@iB(}>7 zngLz_GV@%MXDg9ASG%SI8_4Rz#kcp-@!*hLX}qF7#W(n`9lGI9VGLuw$3zVCg^la{ z9gf43^I5+qg#rXvQeH5qj}OkURG}1mIUctza7#1Z;;Kj!DT&#RS*7}?Ed>Pwszut5 zYmVzGLE!dksT?UW*92>IMu*9xoAo=#N)q8eBZ?sLA4#u%a#m(khHagAJ*c|_+4 zqCYGw|3H?klL*w(1dNds)Ug3o&VU+-z;9k?wWo-$#?5xinjRV-+p67O^7YZT$7vEDLBgh`VLPbRcQJc5 z`&ML8XJ~*W{gWDr&noQxC`D#~o_$8c(X^+}F&uw>Xotvn=TOch8;NmdEJubN8er#C zf*z2t)LoaS2LdZ37z~V|d9>D>_N2WqWLh%k{r-+aOK+`h&I;zeA@kmtof3ymY9mic zvP0xa9<5w;B{WxEjsy~9p1DMsB%?pV6rDs7%PO?u9H?SpeYc1m6|^87;QP7u3}Er_ zdh1P*l!~D+Ou(0d>csq^M+^;d0z_1DITtGT5JEcv1z-a$$}+*K{)v-{_Q#vdlC9Ib zVA3!{@lJGvEP-H$iYu|4P`N{WL8lECCi>KH2K=QTERH%Tc8-;(N&Obx1xVjZLv%%1 z6~1;4QOVB0(i90&*V#>xCp}SAnYBcd6%rLqi^Y2(S?Q3MChjxYXNd+64JH&2nfK6( zNE^S#9~%V#;${*!u-I-DMwF+#0%0|vP@q+u3@r4(%X0$TI1DGUoC}K~f+1ba~ZpE&53kV4UB1HHEZ?d$L z*BrZdg-x1-7gRo6B#IEIlo^JG83%T!$PH}3N)L-|ZK;BkbCz%o;~asl9wDp;IACC~ z4FMgu=^*VB@E1f{#&@ajmy$$)>EwcI_HSn1m6~o(4vBltT!41P?msd2^^&JuL>d~o z;OeDwSXgF1HLt6C=$&-xq6H8jdR<^}?s1WzUxII8m(BC}RwYt>`s}5B2V@CkEn;D7 zC@r-}9<`E^g`S9E?O2JQvBtjlnyssG64|PNq`gkf-ri{lD_UCL|14G@`D9<2F9O9a zkB}e2uU<~B3vsqMf*JpQ;OO9y-+D(NgYU>QXUa?CloMS3=dIT~BVmOcUwmKkRr!`j zK-Hb40#!H04Bf`Nz&<1OB1^ zpV-S+of2x1JvpPUX<3^w`tV0(bBJ=K6CFZe2OAawo2bQe#t2#@-pdY`D^IvMfL+`^ z7W&t;(>e87?5uuwgdl_zikZWR@XO(En#}p;mpQI@sSEzXGw2!08*Q~E-Zi~$g@v-B zXn6zAL1MhF;!d9V170hoQCmy^+{Y5^xYB`z{D~HGD>~_^#ybb@kI*h+1U7gqe-hC$ z5YCrvy;!l_)Pz3JMkIpGhda&iIQqa&>9E$c#fX#;P0P71Xz|YahMhyiUOEBv7u~Rp zQ>Ofn;0Z3`QYppdCPPMMbVR?UwQ$H^kM3SlGb@%;;OA6p;E}&J+v?NJmIJo~QP8Etd$vax5L25XrJ#bKK??9w*oY47k`p)-@ zg`n<;TQdX<>`WSxZCj8E#wsx3y+f$S?o4KhO9NdVvWsPC$iGZJ- zgCFoxI(%I%21eL4vOsDOkb)ALbi0w2fuY-TqMjJUsnVI*^|rX*d*IiF@Ek7bCZa@w zTV4ll%i$yGn9db0?N?2gn1jHSb*``Drs8X+Hkb{6Ku}G z%@yT|gCVze780GiGJ&Vj1Y#XFr0}$qPbR1uneDBze?$G$1kd}UN_Dyq;3|rMYbXiv zVgz#$F>{z&?s$KdeBbo{_ASzOupmw>1Yy7sfcAwiMs0<1#ZZt*acC<$%)1oRIoKtB zTlXUXHX+Vo8m>nuUqb;q#mERh2EDE>j*ob%zL&$l?>UuGzOKmOr76UN`*Jb?p@1s2 zBsDunY1>l)CkfQGM|b?OMhL3m_Tf0{&m4bqYBd|6Leuu_Vf*(A5Wim!Yf?|Od-T3h zd&Z)`vhuQ;Nqa&48W|A^4_6 zdk54(+| zSKEs*@J|=n5)UTQtb_q!bhdJ75n2vsBYN|8&K<-yZ@ya+?s?Cfv)}qfuX99;!X=^| z8ayd+vw&tFyZT`CmN^6-fpBr171)yW}aJuIP1Rsbzzov({7^~cABL-p>&S5cH_E~Oso zm#Jl*ob3M^X`<@PIv-`zN?iHxK_0}z{@%YRnK32sM3B{}I6l@FU|`PafRtuBEy*oU zbknnWgH2MyFeVXB14502hSTZlx5ffmo<1WR5~v(B2%Kz4bcD@%@MzkDE9OP zo{03_caj^0==%T7z-Mv$&X!9fz6Q*C{x0W4HD= z%@1Z7N9000aD)QAB99GKwjW82QSz4z_y)Up<$X>kwSv5uMN*v2wIt5z_!L=Hp{ zJW56(lF+numyn&M0%Ux5kPxqvFT?%+oiYDc;!7uUn7I@G^ThcxkbXOMvNCe9lR8i6 zik+T6QFlL-XS6t?ozMD1NO_#{>O=TeBvi>`k9A*<;*|m zukeQwBU^s<{DU9rvlpI}GOMvZkB1JmaDSnn82YT8V1N3=iCui^SzqZ`k*EEa{Cjp5 z->iN%mrvF82Gr71McE8H0O2Jd4VWS6QpnBYNA<}XDSP>Ot$*MC|IOwEd{DVAq1wOr~6Wg=*@n~)q|sluYb?uVqiwL&dC+~NUN$9l2n|rWe{nc z*CNqIX*H!8Wx3`Nv-En7-oIMe=OR7U{^`!Xo4OCxDoA9A3u=^~6^BfvpozIn}Gd z%Jn~_$gnjLy<8vqeN6dk3935zo_rk{2IZ8tIuJq>z0^45RLit0x~6F(^UCd%|*`&Y}977g_el z^i!cem9@wAK>urgwa9V(?tfZWTDa}8s(g$ZesyHqqf6O7xH{M!o~rGf!()u3Mi*(3 zu9G%q`ILiG9~1RTZJtp@x0|U9kaja*1-0R+-jAwZoEF3y2s9Dmx3o_~oNpMq_}EX{ z)2VT?D6)QKkMro&^G{QBWZL@4mFI0@VRm)2NXk_*;L8os$5gwtT;30eMgQ0%)|d!H z4z@-alQ`B?c4Z7{x(zmM^TAUV(CAvxE*&G*<=CfFL$a4DQc~DKj^IV#z|Uf86*d+{ z>0B9os{D9|cD^=7!b@>Gr*0xmBE>;+u4X06gmSV)x~o|2UMQ^tSTS_o{We z8L^rH6Ag~4dZ~&k*r^{`l?{v`gYrC#S9EADcSY~c{yR6X z?cEu5D>%RPzkE`Cqz6+rUW#Y(VA>K@Td6lfK#moa=!#0er#yOjvBc5(eXc>F%N`gM0<^Y1B5QVzo!x-2lN1YeSp^J~3^;yRhh7qea{(Lu1ec1D&DDs5b}rmNMkRWd0-Ca((16;61A5A{((jq3IBR`=`xkcu11Jv`y%BwsxWPeKqk+S+8U_#A&HbZ90qHLQD)Me_~ zAhBuRrfc=reC|-UK#ERd%+N-#lzRHbltQna{HL~vm20Y!RfDTBj^=i$D%ES#%s0?h zu@#3@T7Q0j+SsMhhKvGPCc#m_2s_)@RX8dbweg-se<*LY?emsx-4Fg3)920oi>zl9 zFn(Ua7TkkJU)yoRtP{^BssW%?AUP19|sXkW3#lZ@(B$aVitPF5P1L|JczqVvcR!WR-981;FVD3`DoHX*l0y<=_ z3*Gi0E8;^Jnk!mpxFT~uueH^bHeR!ozMc#=w{+8Oy=}-|M#1`)`|{1^9#sTG zHT$YsRf1D$^;BI=uUCd}s>*g{r^msvMV~(TA7!p8ern}bN{ma=gW~@ik2XseP8u-W zYUW`DYIB!r#d=r>D)~dVL(Gc8D6A_I(!V^?R$BMq+KabfV1B2>Te~BqDwMmVi^_+x zZt6;w)Hw~gws|j7UuT?9@ zD;R>!nd15NGdXSYZyI9_8b!ep$r2L~T@SMtB{$1Ll}aOfZ@T!BR@#o_;)@>rcH%a< zO0o^ipYCt#b0)g3Kb1q#a$<;5XIonY|tO zP7K9SxvG?CyaZw4ElHKvjr+C@usr2cB#y;XHS@d@PmBJziNWs-4KZF@i&u(R2KD2& zLginVx4x3$kl0+#j_R6xnWoYmfj@eX3gCAH3wQgrHYq{%@PEVaQ##BfUDuy;y^}Nf zzaK6Zp~mQYFB_u%%_f}R4V#_q3Ado}$E@9+LU|~T54R3h;fIx;7&)5_QUrPnbF3Q`q4#IaR4lu}>ph+G*P*>)r;4 za(jCES8XqVTR9pS|BBajI9Ceg6{eO|S?`-|1O&7%ozZ|5NUa|whd55V6-evUP`-od z#FTb{4(Q0LqibSnp0JulW?61kVps~}5ExFA)PLZ{KE`W9PwMBPcHB!!C1bj3p- zCNIl&v8G$)L1r)Km;ub+8}9LTaj#BPgBgNx!p@yNU(e22uaPXV_4QE~noTwO{Y?CY z;YEb&ld8b_SQ2)VvlfHq->kF^q*UjTR)nJqCqo@dQ~R@vkHOSRz*BB9Zk|>Gzm423 z&dNx~4!=lZ^}YanMT=D0(`j&}*(jDJO&v;gea(4{n-3=udZPWRJO8X& zA-?FVF}(M2&zeNw+m1Q`OZvwW*Ba@HN3iob5u`J|=pjVNIYVd2tcyRIjVkacI}#LDPTHg7q1qQ7AG zEQ$965~uSi{_*|%Q3Kr__uCz{R5gRmvP4Hv%4Jz4;i8r#2meQ%Jy5gr{zqOVYk#%1 zmX}$Rx<23dWUlvQY(iXgv6|l4V={7+1O42e-V8XU#xjt|C6ow_E*q<;)|A*;9rf;A zx`1I>^fk6o4lWLW5Wqd-)YV6oJh?nhRca^2Z5d19*1f;rGc(o@VEd<^=9j75T^DtY zz9~`_CDia%)-O@L47WE%3;F1q8W#g*n{2#4(a zkAIM+T9TpkiAqQ$ZT&RIR#M%>N~KS48!wFs3uz;|>vz=J1XEe{keEENS0;j-i*BJz zb?)PzPNXLNj@|h>>|S9&e#C8B8^i@BN2(wd#qCv@KfBiVSVsu=bvot5bmr3^gVRd; zTFWSw@4pHr?^Qi-MeLBXR2#wO^nvEVS2jW8s0C!WV}0#mFzkGbWu-hr6X#Jf1hytM zxH)Zgvou?f6%zyvw zvl=aQ@tO7wNFk#K@Midm(nF7K&fO7?@O&${8L@tmb208#L^o!%MEFdwZ-m4?FWD(+ ztRXf=&eN)NKkSd~uvKCCRe4|6Q;zxeR0heD<(;3-@8;6e;n-ipuEK&PXJyi1Puc7r zSXZwnDxj0y#I@=h9Pa@yj2=9_^EA1P@9;tbt~j z%HCP=TlhA`$bzNkcv@mmMZXf=u*w3zE{Oi4Nxmyz9 znyn3H?IU`cua=8zyGVk(xVMe#yP&VtJK1RY{u0b6##gh|{nhGZEFR73CiJ?TUQMbQ z!mCwwgfoO0oI(eEo}Hu@5ozC=^pC&;;he;BE0M0Q@c3Hg*zetr;&w1VBm5_NKm`u{ zW+eH$Jwitv=k>D8srw<>^h>w+?T8qZWvg0{?U$V*>$=qJ6~nSF}RRblO`6mP{#R?+dJzy+F8;YUt_?*J%Lvc&bl(5hhdzE(#$V z8gYEs$3MO7fG1B|Kc?>Iw^{Ha===l9e<&JMJ(-$dGi=<5GT{gS>eDdUe)M@guJ zTe~Ly-|N+M6w4MiSSI84c9w?d`T9@JeDGiTjP4aSzBZW<(v}SmmB32F1Di#X6Tm%k zt#E$xn@-wYSE8nLM=5m**4y&l!uN}H>i2drZDCaX2w^7>Rd`Tqj~oYgVkg;LwR~2O zbh7)j^xN6Irdb;H^Oe;g=^uRK#Z8@q5(*1XSJO{gx^x? zp`MSSEd@>#73vQbr8Y5X1cJs=nYMzf z_Eeow2y+bW!5b8P{18c$oyFCcCT)(f3=vaDtp`vUjx%`-%1+v8fiyxy>iJBBom-HKWe6`JR%tDlM1x(xu%O0r>{laharYRW zg2ZMFsfj#jy~UuM5@Le`YEWx3?}5j~9;w4qv8Bsz(w%L?T?tY)KlI%3v*d62SNyc% z3O3Rp6qZSl;Cj9%F_x()yAA{5xw=jo%ixvH4-94vP7)18(qXt#R7R+oozFvQ(#9es ziBy!)OE>eGV6DiH?&1Z`;6Y*u_TZ{};rd6sggP!a>~9-8Zgj-Z1^U{e=YkfvX*!e4 zu_ZHt(~hS#P=X4vq7{J z;fd;NO+TW{uP^^w#OzJ8?u>r50M=m5s3CNI6FBOiQhF7^?83qnV;&Mu(HW}CewG1G z^dmp+ccH6EI`Bl=!D4Yv?DL647!VSaV_N8#--H6?9jYQOPS@rsGfE=qWzcFQsd4K`u&|hTsh4MS zi#>gWys$Rw;Q^mVDgY%b_`;y8b zCx#c*2Iu4Bop|UkoOtKnH)Y1-9K9@R3?!bW2n9_X5vCiZ<`V0*%0UmpEMzx7mo9m` zi$n21ulC>}A4R4)nNW5}Fnd!J1uPB$90L@~-rapi5bT?5q2{ZsSTO=d)CxDTRDoEk z=aMjuYCZ(NdBdS|63H)B=Z(A$O^yXFlq4`{df%&f2M1d0rSZ)lJJDQ^ zIc$jn>jOy&!I&$l5@9KX;?#>AP#MKFdSi1Byzvjr&a2S;VmechOOP(`G>^j?2nf~( z)M5%GtSDEO<1VViX69RxCW@;NF&I{^f}j?JLTZ+r-&2t=)%eqSiF{o6yc%_X4zH1; zK%VA~ozY_^r`k>|6q2$FC?rSH`~+w#%Yc|#Kt$B-j4-JJWX7Qs<)vySiofuCbbTcb zHfx;^B}UkT$8lm}WD|L>1QltGMmrIKas`84O%)L}w}>^v^Ig+%R1HV}dJGc&ED`)0 zXByP+*J0-kFGPFfbGYrt6x4`TL#GGLz`(SzFf|;3vhhNk zkOTRqc)6r%8)HZiOe!VcY_pb!s~R2wJE(!^X@tC2)(Q`6|>lsQsj>n|C?i zyc4INj}Cm(ql;(U+mF3oN7?VrR!B-lvg1k#VwlOG5pbmU5Rs5mNQ&kIiR`2uBJKUl zeN_L}TKN{|--&em%q5r^Gg^TSrukY*X6ck_Fm)#ZKyJ9DxqIJ zz0O1?)&7U~R~NYYy#6sS(vk$VfFpp60T^IK|C~(HM>8~`P_Y+^h1gKixv(d67}Qld z4)4lMrNNdPtW$AE-v)t11_@7)&S1?5(U;z-k;{`@ zi`g6nH0JXhjtG&ELyOftcpn5Zd=Y&0c4j`O{eA&F7LIjocy0&5x9xi0c>e?Csl>G4 ztCK`H$RUw}YH5YmZyA(1gs9tT@#C^YLK2qPWSc#d_L1vJt|Y7pQuKF>Q}awGm3F(fI5G~O6Exw0{1 z<`mx2LFUgH{Ahjo{0F_<_p1&wocfaDY6s(t4l1`VIa2pecAID6slke-5Hsie-GsS) z<2$?3u!BLwdXS?KWkED0_f#Ob3}+k@{R2a>xESwz1BZwtg2hE``>CyON4*ipN#n0j8Jcfq6V=XxcY6&t_ zF9afG^3VtC78A5`gR5fQU3I1XdmI!r48ovsYR=dWAUWR0f*TZ? z0Q7p!O-HT$|n!?J2&X4H_g1kP;^$AaFg7!2ua`S918nZV}lx%%op2ZB9BQP?PzVRSSz?f zGQdozo+&G;J=7GRx*a1PpB;${Tt4IT)7L@@&@C8gC4n@OZ6L&O8Mf;M>iOE*xFAji zOlOi9NHs8ZO9v97R2EPj5s_Ys|C;P>cu<;T>`hetgPD?eC~$apjAIdJSncEp57V08 z5V_Ul+t%m=Yr)AtmKcboTZb})4oGNV0@=wSKs;ZLf+O5~%w!8fIcTDyrlSTNNrz$- zED<)=xV{TH$|6AZbO?wv&=Np{7;n?uA(kscN^^^BcL`!-1J8gAW!*4NfEQWvlt#WF zpM#JD8%H75NVq**Ha?V;IDx{&gB&;f1B4KX+Eeu0hBb1?sTWi#HJ~Fpl|y*2 zhVP#M6uB78c#n()3vIi}Po5ut7oGN1T1;eo zC0a|MWmpivG5Bw*#kx6%21FHjbU!5L_@gKhYXrX72#vr z-|y!W$N$05=}l;3p1qjSS(TongyVC7R45wjaG)tgF-Sttr##Y1Vgshck*Qu7UpA8^ zW6M2I)qa&|(_f|B%@;P3Mg~NDkQ@SR7CaVbdIuC5G-by$EZ0~$i}$UUg8P;ns7ynR z`?X`1Svf+3MubAqK++6k5qO1dY3j%mA~C4Agpd*i*4 z4WNXr@D|8u48vRI!YPzVTJOpzpHuCnzn8#wuU*P`Z`koIkG=z0V-y5xiM6PABfiQH z+UvEXZ@Q(OZ%SbL!20<2#OpKpm)-BxGcv#hxlGL*A{8DHQAFk`T_P3(Y6U=?+hQys zKSC^iou;l&l_GGi*rbb~c20|}hFNE#l9-Sd!P12XWhiDEhX0r8-s~!D9a(a$G?eSP z%6SrYY7eoPo~|0k9|#(rA=Y#JTpI$vWICPzuf*q2dp9waN$%@u!~)dWH-FD^zd`JhyygJw4pP~OX^*(Q>LjUZX`gBQsk73? znsGRk4Sh;Wr$w7eIR#rImN=%X(*n=I{ILdDfibCf0BSH)#du8nI z7(>Y=zZ-G=6Yg?5xxq=U1k&6wJToMv!YD|CZ!WMFvHNcR~tw3TvAwHga9 zAbJC2p*4q~*u6+-^$S2U5D)_Z0{}Ba1UCS1Z&W-e0s$~SUqR+~1nv<~+s0#2LXKu0u2khlByp!@(pXl9It0KfqXz^kxsbQu;%@ap`WXD9812}%ie_JPE) z(^g^;5%2+x(UU0jx))a zu};S)!dSSSrkbb06GaIMrU3u|MgWRN0N@?Yz1!WnwcB@Yd%xV>*X?zMDFbg@2~>)u zM`&i|TzqQ0IWIq%vO7z3j`Ww89guyOrX%ba z%gf2cd4(^NqUg z4ZnN^pD1&ieLl<1Mut0A&l7K!JVSP5jW1~WGbl#xu|J5qptIJ%S*k3LeCahQs&Z5k z>Puz&uA-j#WQQ-m{*}j%{>YtF(V2nDtO{gl{OwG8b1j%M%W)|zXCyI6|CrdDbpC%i z&#f+sq690cHP(YM8g;1yYH1k61(#w=Gs5K@eEMdMpK|-2^ltVq(4Kn^z4B_1J(#9a z7}qDg2r)*fr8)ymWvXTrR#)1AOII`pTJM&InA7d=boOhY9Jp&zn}6@F2hcC+lh5

6JP5{0UT9;hKJ03AsrZL8qex!y%jzHv~p`5m(bJ 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

`nB|7-ty+@{I$|SJ^u2RlYs3FzhAS0| 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 z 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

R{F1T2;o+n2m56TOu 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

vwG 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≧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%0A-wsc zcqu>;sgptwb5KUkozge9s5L;7j6q%)R1OJpo5??757P`dCu#^bo0$X;U#)&x2>`9- z;H8asNOfU|cC>$p946gN+OwG^4 zt{-Fq4~IwQt|#lKj=Ky}-qPcPaDf8!;8>GsR2y!(%d{@Z0cu;Q@ixl zUZIU!2epN%sfVHo2A*037#_?931eFt+i@!Ym|gh>sI*xb)^9u9L!(mf?Bc^q3T#ia z@$;cWU=|GqKO;*a;D>n;%CCyfsBhk6Ubw}~NT06^$hMq>Su`#9@LE7rRF{CK%z>lt z9w@g3DMLeetTiWP2WcXiqQY)hUX3P<^|_RYW?;|A|6{>u$t%^R9shpp*vV@*zq}Ep zpS@`K2z?B+PY{R#2oma#1V`_JI^{i*pY!R-#u?bS&`1p3^o;>UC-_cDAoxXgRZ4#g zJD)y{nrSqkQNuIfN3Tl9B^{(h(j_c!W9)aD{?l+=Ae*@W{XX1bNoJyY2Vl5d0&=VvAq5ulo{J zNYlZwpr(*)$Lo@+RhMZM$bH5Q<>yeP{0UD~9iv+rj?BPQtEmdSaJT*|cRAr2n<0&?_0Af# zc+H^UAHHxZ1AG@?6b;MR*3R3OMVv)nssn@ZNedHAM$HB^!#FfiW3%!mAiI{_)SB(X zK?N3hAgJ$v2(`xMc3zgayxKVT-^Q7ryWD?n&NjDcsERB8ZOqjWLth$r?nleLzUOWN zzD_(!0W3&DL=`KCpflKev^o6-`~REDu*%;B3-i;>P0vXD@rV@^>P}WT>@DheXk~Sn zQokRs6;&6+t({X_B@VR4!_4HGZ0?$D+qJXJX|ipblWXG6wr#hwZQHK%KNsg4oOQF- z2UzRkectC?zfxq!aFPOhvMFbU4(rw5a78TYLrQB`sM3|HuJT_z8^enI^#Z}Q$W;FU zk%%BDR7w_!eemKp>}3d@yc}FuWgvFG1&$C$aJpj?ugUCj%-j&;K9q}I8swY}lbX7i z7h#g6VI7%!P`xT?zX&+--RE~7<~}|iPEie*5VC5+&f4RXvs^~Zr>=-IaJsdHe$&tL7mP4iF?Ltt>k4m+zQ!ZBJ?@T!?GW}@^{ zW~z_TkOPd}M7(v=>dq3^jM~os>Vm3y`vRxuztKM2xa}*7mlK5r^oA_ZON;fD?h~-nVB;XW~|5jO2th zEQI}*VL$=fdd<8-oRPnK@FaxG_o3bSDQ=ARBXpNSMp%@9YGSaD496g?YZtJbHOcCn z5&*Rd&t#C_qZS>Djuqh^8;40mi<06Mx~XI=no~)d_w%^}yU7oUkVhFr4nsAiPnO@l zxi!&}R$BySVxR~lNmk@a*2w6(7?$u>eTN94(+?q0dXKj^+B)Er6Or8B>R=Y~y8!HF zU47p1pUl{KzQ2|<`_4UntPKl%nXxhVdg4?FlG2q%2#kKc#%&v*Z~H!dxm9kJe6&4z ze+nBk3x1Uf@O!Oda(6#0SGNoPzVK^rNZ#lcypFwn(+R8hd3peuek1<)m@eCT^3{2} zkd*Tg1aWR`*6V<#zFt8vxMb(gs&MQ{pHde}RVT!lroLzGZlH^~-G|4Aue~arZoW5f ztm&)NOmDL<7+a4Mf=*_}%tQ}U?04onX5Q}eWzu)@l!Uhz@1?KL%Fgh$*N?>|B0gv( zL7q&%l^G`+WaUIQnZJUbXj?bm(bY=AEvr@b z=J~wsH8YS|}(ge`mC^umFC3v{T`}*b<`8kMo^=Zd58^{-9uI!r z4v?!!%kn$9*_Gex&y2si*;3M!qW$%U#d6crE;kf}Wz;{(Y+jL4IHAk6@*fOH5mK21 z((&fQct{D7)&se}rMFO^A@POaY6H9$;Vh*TZAs@!6K;d1zRN=jwKkL`=E|Alt31TW z!tPWECA-CQ{tjIsv*+JZ16k^qlDOE=s5zokk=u==NQH-qg)4H>^fv6*DVf(5+bYV+ z7vpE7miV>IEoJGf;ZzKg!DAEz*b4ZG`Kqf;BQYn(UoSx}xdtnca4P=7oc<-}W|@R- z!X#=|l(U4I*K-z`1@;w@wX284BjQgG$_L%*YsijciZkiR-BRW8Qaqa8xMN8H1Gy3Y zd4VNK2RMWZato*~duy;3`fX=)L-2zr_fw`rPavg65hio6QVm}J1-Z3_U$63 zmPA99^SbJPX0Nc!{Vcd%Q&ha9KVmS4Vn<_ds4k}a7uPHlj7eD5 za+W6UC{?i|F<^7KY@BRupzj%+lSaV~`C4S*KVI}8GERXz-IoB=wp@VB)P}@DXFd$o z?BS^VM}t&?b&M#+MG+@u$3N<-)3Pza=(4O-CY?i+F zzYkTWKIzTi`|cvSZmeHq>FGJ=yK`2IRgWeTP`1-R0+fcjQC!K8ljGjcWYTX#UPSM< zz$gax=;9%?v6H1=Mfipv)kxa3Jjf6@O4H8KTcspOF~^5ES_W#9gB-F@pvVxo^lgJZ z@U_}6EvdX~C^n!mmvq})xYU!LWcJ<}I*Oek zNNCq8cgYvi2DbES#>yVQxBr_lpZ9+ZwTLPp)nKfj(^BnI4*o?DP1)+>6dAm`{B1t0 zVCwsy04hD@&9_D$q>|kIn6v706I3baswVxo_SDX07D?l(66t}lJYfM~jSznHHI#L) z6>1mPU<*^1@DDGO|5(>%nrGGip8rH1PFq8)9?~vd%Uqu_yX{2u+nNyYJ2D()c32KX zF$jOs2mBK+2@;p}B&n9QP~hShvps~@hhige+9{AIA`_3Rg>5}w@#+U`$_wu=%>o1$ zglg4xIG5pJz2u+8?qWoWGM`(1g*v4F%P4}H*i9t(L(py%~rkJHa(A2 z3#PW{Ujc^UtVM`w+ZC8m?r2>GFI|ggONd-H6gRYlN~}{njD5%OM}tSWuL)JLV>t-O zmJ6iVN-*eu?^^WL$9<}jSCK$^7&V1&>F~LfYPAT=nUBkdPf1{NKv>LUOP%LAbQ3?j zt_g_qf#q=YvgK9I2DT)sY@0_IU9Rjo>wA}`DL|7lWQ;aAGA?LURbUBMNQNntkfZ^4 zL;pD~I}`OWWY&|b8VRvlh+8k_pN^J_$-3jelmT)@Y8J)Np#IoeS{q^p@>!usNJVa0 z#8uE#T84+*%B#41`ykI5C-*7SM)s<+^KiYdtoc{^<#roYfMq%9i8g?)8mT(i_a;Q@ zZiE5Aw^5^&;)dEPHQH%T(F`4X#Ll`&i>|Ik9sDnrp*IEA1sS*U&<{|%mhlH^#srf) zH*Uq&y0!su$)CRAeQIrda5k9UWUK>+Cl-V@yp}fH5IqoM_sDoK4Ref+YL=oJ)1P?D zdGD!U zFdbI3_W{^;_&0Bc1yE_k`S-}XfobB2Y#VZ#MR<98i4n)hJ6o4g&^}l;R+bGY%^ij$ z%*u{jB0C|NR4j74_LT+k zkS>Yu<2`4y6M8^ICYE041n!+b*67-*Y?bpr@r!!-)q04e7M4FP{rb(k%G+@m3%9bS z-z7JDKiLXH%_2Tg^iuszr*BneDcFT}CdGksg{+KpTuYJgn~k8lb%}5Ij@mAeca}Hb zlMNwm)M95YNP@Og{`6h$`05q-r-L>)A|YgjzemoV#&OmQ#?fRE9LDKeUyQcu<1|bW zWz5))OM<*PbtFAzLO5LUJZ-Iuk2Tmmk+}cDPoC%>(JGi_|!GZTZ2bf(wAsmG@wabsrI0C{~@?u%NG zgH@}YZ|^`_BOlTlYRC2@xIO~K-@E_ zk308kJ9)-M^|t59d<5EQ{!6Z1xS%sFGCI++EE%n8Ip|g`fJtAI#Pj z;UUA_zPz)0qGMctJ$ky2$Hl4aMjpAoO#UC?mhi_5;J~wgd7~g3D2mgUKjwR}bGuQZ zA{7CCQb+6GpIJHAySs9A=xGW+MJzY6$Fd)qsrfjsL*9ffxigrLGBpXLN(1DwGlIuO zQX^7tuNhkjTZb7USk5&|0PNdYTU7mLHm5g-h=l5C@+M&$h0B#6Uj1wHIIaj4_nL;H zCQRDP{qfxfACBitG^HQawM~7YFLavv)=lqv85L2M>yi1Www zx(}fDRM8a2+BU0t966~rchA*|C}%y2)j7(=l!17yS;S*+-T-fP*epAHOexZ`h2os? z_B=s6<~C6u%K~}ptn|xeb3e2E&UFoD@Ik20J7WKzS@tA~NJng1Uk8)0_3`Xk*XDK1 zj%2tYiO;J4+%QX`_4Nh8(QXsf*tvD&5OlvL6HrWV&25z8Jim#lbA?=KJeqgAY7x8P56 zAv$RY2w~!|52|$tds~Q2{9-x5$uF~ehS;k!9t*zrLt#}_AyIcM1t4k_;G`=aVD4K&vrT42> zric9a02Vw&0_6yq^U4b*{_wt+QzorpJMRk&zt+T2xC{$NzNrj)+EH;7M`d>Yqn(s< zZ=o=EKxIbd9B-2>dGo9T(ogcYl_x)<%nK0Kn1_<4%rEp=@GkZg_AEin(XYkP`utO0 zxeZ>Y07HDHAeSyhWkR$2BE=&J zmyozw#Z{A>P0>P(f1i{fOEKFQhSPR5cZHmkTm29Ubt5NB#PeW?6bTm6Zmxn=F5p>* ztIILY%6BoHuc&p)h9G5$hJ&e$A*8TSBc(eVE-qPDfS*Y#{Z33{DGcpJ*>`}9I$p&$ zz?wa-t;rIRVrWk80QOj)NEYHfnr;(687s+L(`-w#lse`bf!YYWC(bkT8b4Jom9wUcT%(x?m$*rdL>BrpNuUr%o)8 z+eauJCi&Lh)ylbmocpjgM)%ZGY;K{6NHVDCvGG5&fdDuEvpKC`sCjf;`5aWR&C0%yU!{+AWEz%{xP zgyYx7Kr>LT01sek{eBlLh#9D0)&`QXK4V#xV}J7ZB7izOd3CG=6Z9ROs>^)?@OzIy{Z2 zjcml5ObY5cS?EIg)X$uMA8waY7&Y_!Sk#?y5vzv#}UcOn~Blw~AFItUx#&UlPa)RBk1#?VTr_Tqi zJa-InbtfLMM`MBY68U8AuWPCsVy!N2J>)alzq~fKrhVWc+-4`&|Od~$_o9zZ^2tl@+cqo+GhM4^g@sd0dK6Cz= z1>}z7m&+U6C%si7JL~8$4#s;d~K z)*{MLe;dvMt&>2#C}zY&83)g_;PDWLYCARtJ`Zzlvqv{LIeT8El?|Q6eDE_fd=%q7 zxc5@)>U@bXDJ^*+09jzq4eS z{82hIO9=-?dkb%{N)r1f>8k^JmqduOsKZb{EhF1+hk- z5@0B9ms9TfPpI4CM$1KyB^C9c2ujdEE4Z^t9b4ix^T50tXOBrK8)L`6_l&L^*Wy@K z8}})Vl&5fTdL{VpEBh-gu!xKj0k!Eizj*yN$!e@rHQYw?Hf_<_tp>Y?xFdhL*w5>tL*yABHfae zKHz7rT{of{saOmG-2_O~#{}#B9fFY9$V$Y$u{ihq?4K1A$GQ#QP{&M)?zzPzTUx_u z7wp{-s3JnXC0T1*<9nG5;ET@mFM37Da}(}=89Sm)T2rM!!+FE8PYB<_kNOXltyT-a zf^(N@dzBs!Wdx;outxk2rRp-C0dw$we<<~_X+rbNTgWbLrsR$nnU*4jHyN9kyYxRd zBzuU~;rHTAaWySf+ysZtqdYW?%n3vrvgjvD^8|9P-K-%4u?o2)C@#_+z)*I-%YLrP z-R{NSvmZvyS*ZdaQqaDCRea?>mzbbfZEzM+BzL8iUeYjrzo}ewb%jkwlgl)a}Nra!}eSc1IKBi9r zUJ^}2R=;Nn>@}3`ecpf{W5zq`w2t;*8qrSOi1}wrHogLeB;>_`-vBD2ZGi#VDcH35W*;jOJYU{Ws&nR@2WV>D7i7ZZ!uxymt^G=IgF)23pM$s61SFvhWT*l2zw86yBk^3SQ zZe69PCm!`^zu|IBa&{ZIOZQ%AM&!gB@U)c3P~(NMo=5^vwD(Tf-Bl}&np8~dZ4r`t z)odLQXhwT2W6|gjq1RIBB}*CrRV$MJu5~DX$@a%6gKj%us2>&tDz! zdcmQbH!)MCVS$ON6m9_m^8Pjd)%aj5FpL)PjQ(^t`USYb>e^3ZT|aGsEj*#jt9bjs zLpT$Iqc>f+Or-0*@9LMC1G6*6uU>RT>aqJOlmyE>9ESOPL>VbQs}L@C@AR4LfbrGa zVJ7~7mc0^Y;1$ICQ0RK=t-|)=?0gHE%}gJAerjbLK@!Le7~j5(BNO%;Sx{uk{NMbS0K4k+s#y^#K0z5hOL&QyI4e4Lj~mNLI)P&VnI%v zdsX-&`AuF$gqNDm_3!@0EdpxkEMcU}uw5+T!);E=-y`(~-?sO8wu^DZmNBRfF5=f_ zi%U$Vo&7$jc!U`6!|~B+Fv>uMF7B;q<~`#c`9c+22@1Yc3k)gFtu{hzeJLm0F_zx# z`o#-E<>Tp|oQps*zT8y)o$k>PRPeSToa@N{tw+Eiyy7YIpGHM7Gz*LQz#paoE-^AS z-a0%trjmvHap!z5r*VZu4rgb&P73{j$H)F;AJ|n0zO8(HYKsXH%Ki^PY+05VJ5QZd z)3%*&V>|;Jeqy`{HQ_!_hm8`g8RhmM!U?&WvLD!7mq{GawYB`aiN?@k_9J`d@5ahn z^@BtG6UHZd!T}qk70*nEb(_B>3#qLM`^5eiBue>{{qt7JMIIT9vozxo9sV^xvOy}i z^J(viA}0&-5Cs^`90*D%aCc=IZXGiAObXZ6vCC~pK%m92o9C`cT_0SMa3%$}cc2!( zUYoP(#AU_H`&`f&-*{5I&V!0bw*iUW1NAlhL(aP=ZCZ=w8O;&Ii z1#@%N>yUiYZMy4@7X3Na;~b--21t6XQFIm#+G{9L`?Kx&9|s8eGzA2J5qvi1x0`6a zKTc0(n~zQ{a$LsCE3cfU^VuVz{4OBwVDLrOaPVD1?Q4l)_lU0Y?M-&!jIIG8g=?pQ zqo;uzj74mE_9^qJ9h;h-!10F0N^FMg`n7_&dHigUJUsVLVuI`*Z&<>%z6J~O#?@8| z@0z^+r_{l1mFpkP9^^SlTbiM~Kop^c5Ao6m3#K$@@wyO|_Jr%qHST81)Agwuw%)(5 zwO^MD+xo-0;i-eC=>IgV^&fdJ9+R<2o%Ik`2AQFQ-=4~wXeT)olyE7Mc7m>4Dc#oL z=G-Mm2y9G=_2AR-Vi;pyJu#$<4hqCRp4bRxYWmTIsL2HKjsyT@Uf8=oSCc%ztS9mr zZO>`L+f`zU6^_Sq>nzlbm!mk1W8K^?t%x3t6rNfxosbc+#fAeDbASi{#^VbA`nn4G%WWg!{>}i4lK0wo|3r;8%{bD$0X^N6Via zZ__&5Uj|(Wye-PCf)wj#x;xY|W}*Gc$3T#plz>3foW8<+N29_(iO;ofXQ5WQno+&Rnd)ZNbQg$>Usk)zO23O|I3 z{oH)JD8^B%fCF?2&3LnA{gWuYfm;YfgcPw;D?sDu*&E?c`L~2?yC`9OmY4a_x4buZ zuO~Mg)?#nplN|uLg%+i0_IOK%JbR{3c}DcfB=!1ibtbd20Gne}%SDR>)oo$VeXol1 z(y-EZRu90SFPR~>MiNzM2+Kmt4Z6#*Z!_nLqZPhm_}}8;-`8&dvb?9G?9ff>x3|}N zXwHlDO=WC|i2p242p9+h@GAZPPXAY5?%LO#kS2o6ki2%lwZ?1v-mj2n9pgL--OLs2 ze{nHJB3*i~646n89t?d6+~N`)!-riY921**Z(76LKZ+)<-~Wvy!F1hl@ch8$aMd+Y zYSDF*{EMFNj1LstYR`FLXgJ|KUh7@cD8T>qeJZ}-`5@mpg;=}6xMMJ6Tj+vT;sWX|Fq_QmJW>5Dgc?wt?q3I6zv^+IhZ z$4~NgpU`WzQiR8mXelP=ys4FRmPJ3uf1scAHtP$<_ECZE`9K^8Y)eCJyz)`GGmNf| z7*b`#0Dd>Ve*^c^L|KI4D~=?4$PTp}d}QRiq^C~0x__d41yxf10m+U_?hMFeeSHx3 zfYCh5?ZIs5k*rR6<4qEEf33bNRR4)Pe=`VmF61|56JYK<4z$*iRsY>Msg>jQ+4@tv zkNe9GPT|i}XJSKp{Mh@dx$OtSyQ}nby8M=Cw%yzbOHK9dt^D{1QLUlD>+p&1;$fM( z=Q{!^WE)>$V^vjE7_tA+N&hEUzq%RT(1TvvnruB#{r7QRbO+~6a zxaZ-Jc%NGo=wSVr{UyG08)(_x8L2JcBD$9bq2_vQ^~iRrjdE>9>n$@gp!Uf^0fSTU zsDyQkG^l^)h{b;$vL!A1Mr2BZ1}26yG(%w|LTAIKmYIl`Tu^k zdT{>W&7c1Et1rHI@bL1%!>`_4y?OBP@q=G~`=5V&`~J_@XRH7D;9vgbSATx}o!m5h zy!qFE=(n5k|Lq^n&(Bw~`NR1z{(pY{d)fR^Hh-1PYuQZKULLRgMfU#uKd0BOD>A(M z^SAH+`sVf7%1W`TN^vIdHS#=_Gf44X_O4~~MmFEc=7Vg$l?_)BnX9jlvh8PO>rxG^ zy0&ngeAuLr$8x~uAp_F4&aAbI=|DBb-ekHI_41 zUkrOEL~ghzqPL%qiZu~|i{g%&642a)b?NB_B;+OP-&&6P zTDEa|Gj2H4lMWhk`kN%FJEUl1x(j)MfeL?=YkFwzB3=FN=mtYA?@XD~U>!UdkHBB?>XP-RC-Hsq)l)@M%L@~dA+1hBF)Iu=L4v?ebo@(^;N_faA_-)e z;q2T-<+_+*0EB;yzH)w^$0ABZA|xk-)YI3kB=NEN5=o4wuZ#JiBndu0Y2x=sr$rnu zQ)-z@IS8x!=ppM?+-k}LkX7!c7`#pPU?7eJVRQ@5p9F%VV!2) zZ8$xwZ-}TANmywD_(DDa+a9r{ANhy#gN>gYZ^OUoI&gCBEKtz&S~PijuzwVBy*hf% zwwAc2(qpAi#UxU~Wh#|MGG40#CyiE;H(2w`Phc}7ek&?K zK}H2U0($p;k_@j#m;OUk8MR2aRUCa-ORvt0VP92AZuH*>Ce3T0Q@KmYR0Do>UW@pW z;Kr1z^LqHJknCYg-J4XeF@?C#1P7KND{}~#ACE@+;i&M{c{SQi-*nKpX);#lk-%4R z+3Q7yN$?9fz?JYB+zbD}9S^;@-10sVH<$&iq-EBzN78#UiA4-4xI5_p0hDTRAn9+q9uvl_^SQqb4VQE>4Up)qmf~IpRZgjEheX-BN<9 z6Nn$9eCyI$nLGqf9s}*fH9K-4I9Qag0h{xOXMAnvA2(eGV*hlui@5{hx>#u!U!-9wNO;$*L+1i@YkcvZ~7U zLRD&Z0xfD&Eoz#(cg2KK;M#?Ine=tq!Cef!@cE~}Ce57Yk5MB|CuOp^s*_whkHn>j zHXMV{BKlFBtNAoFXH9$26x@v*s*3rWAN*>4|h z%fu9>P3g*Ha2tYYU4Vco$W{oB6$sRlp&ZJav}Ik8P2Qdfa#I1iGMn5+K8OjXymQ-w zfiB1}AHbL#+?5&THW-taHQ#78QeVTW80t`XMGZdQj_%lUyqoz+>9- znQNEwUR{|DZcDmLo&VWUQm95Y_)9fQbxnTPi@Uet&J3n-Wi1oz?Nf14BG$*1)dk2> zTqrF|t?Rx{=@xXqI=5(w>~356GzVkq(e(3D4(J+j7)k^_&pBWg4I+;*UqjsidgA@v zlGt6DHT_+g9}eI$osYJESP4i(gGMz7nR8J5l%ThogsMcaoo76R@ygWouE7f9S|xV_ zLzfze-d-)@#3vtVHYL=#8Pq=ECb(*~ej>PSpqB|@6Us=U&OjMwGi9aQA+x(#f_G=z z#I8*6BD===B;+Gez3L9l;vIoF!M#wv!9A;(3;9f*i}EPl5Ew*^dhnVkW(=o^TqhU~ z`S2%V9jsWJ3*V(4tM{V^w22ORhzwJA%qCa+kt7pjHq^>AZ3&r)EfO;TNZ^zo4iR_q z3Gjeg@tbRS2{1_?yo=Wmj`~m?b&$XXxHD>*z^y{h&HGerho#swq-VkBN{c?P@&Xt&jk?>4yI6<>-?*!w+ET+5U0FswJmd>hQ+I+o>fvb zu54OY=SPpO?=(3R(nf2KL;~WE&7~Y73y!JYi3_kC1h<%c{Voz&lL1xC&gaYIr`iJ4 zxukiO~d^wP%?VEg>_OjU_VrHBuB7cJZxU#AI;vb@Sv_XH{L$jo+kl zhA#7~RdwVhC&2Jx=lqArJH+Q<*{xX_)7AOQg3#86WhS#Nw6W%uh=tw>QJnQ!&f%;Y zooY`Um`!n=Pgh@KI-*IO(WbmI=~x2N9~7B<=a#(kiK}XmTilIq=cb&xGPhWTo;zOE z-N>Tw22?0rYu5!S#Dloj<;oOdTU_IERdLnFh$1}jkSVmP28qLi;Ks%JGI7`z+&EiR z@C$KCybwJT99rUBW6%c~zyk!s0QO}Dunl2InPigf?csrw*-caYQ&czv0` zYfEYfyf2TwizX3Q{h7`z2}HU1QZ``2v)SPH)D8M$BAG*6id%S$*K>}mJjQ1vz7`}2 z585!?L0={b+uGpj*ax3kteSc@mn09YunFOw!W8_at2(%6nQe} zoRo{g&sOv~)~>2#Q`TRJ-pJ{Q`dki4bcY^K4kJLC6kIYyvVJnhzA1#3W4sk1Rnepo z{A6cixnNN-c) z9C=rgo^!eMN+NwPGUI79UX)qDoa%yg_Ag6VgI$2pmzPME0vS4a*1$P#&)5So z@GD%3!3tu$7J)dY-78M0=MI4*_c1QxD&EQa6wIVJC<$)h)&o#^e7ZrS6Q5UAsziQp z+9dr{K`zV8@qMT$&n+60C;=2`2T%x!F(*8FKUk3+L-P>X*lSbka+4WMkl740M+z!3 zlXozU+7odR4RNt2(sNF`wh8F?uc?&|_<}d_Bp<-%@yS|X)hUavm?$sW)bySU?&sJ@ zr@`Dy9*Ilec}OXloJP>U%K;7TL)pW||B886FtKvlXyapesg8<>ebpI{IO_*ZsJ(WGoQLIiK zmALs%+?GwrUuXyjeex1}njJ_psVX%_jv+9F8CXGRLSUFG!nCePZ;Qnot6P$ub1mr!BfRh6mWibC;C2J}VUFW1 zNopbnsn98;Il-d*&k*KwMTs`+&e6Fg(M;BTB`)yp=*sx+Q#sVdTSI+O<}tO{#4^Xy z8s(In@Sq_PojxVaQN*YyPegP&+9070v~vf9zz}1O zeO8)djun~7McS%jPh1j1pE==kdv!$Po^?ims^n zCQM0>`g7%Kj*@m7%)R7(LP`fa5~GtLTz`#?lm0r)b&Fc;XlRb>E~&-1*e6#D(mWJx zWol{BN1A0_37sRyRU_1a$wa>w2}mON^=Cy03}K>u>?d5@%n|KQ9hJEGPPD_Ok@j?z+8!s;@0Tly&PW4CPWCt2xdRfnIo80 zX!a&IB_|>q@{(C7FPua2yC4L@)bR+@R*Ll;b?ksvDg~_}@R-HC9YSCo=8FZEDG%#8 zzPJR7*qUS=d8JvLW3X;*u*Fw`o3NXw2rByox7ymN!o(p)=wxx&>}vGu?1;)Jb%$z&b|D zjz9B|e*b+vN6VtDJSEZdpagJ%0<3`I0(zS8=>5P{rST9+oELF;(7%Rxos2ztfT@S; zISSU)K0JV+MFM2k&Xqw6@_`XUa|?SDygRXHwI4X5HVfw0a}2Fn9FN2R!D4K##OV|v zSML&Glh0L<&SU4OT>Xs$v%Xk8@E$z2xyUy`W-IC(^{dD_v6L~5<}A%Nn3CK^yn&nh zjPH)GG4Y^^TKXoQT9b=}qt__=GrWIA6y8O#yro!FG&zhBS^g9>?teYHl zIzSy^x~w%vR6C%#XI=)u$jWg62thPEW7aXiQOp>Dct8Ud92qexEd zm68rwyo{^K-+Jv^a%zsmE#Vpt8b18Y#Zx&zHhMa$4rnMnfa4YpxsR*(QWa|jW^_@G zn9op3n>h-%1QX_D>UIJ!sQ^GyrlDlWBDhVH$W5}KG2dp6!&O|yXt69vV1WfQvN!32 zYZx0RK5?kH2@}A(k-Ib*Z!<>#JLq}FQ`@MkVm|%$=_XA3ihL%oZRTj-l6)qwAzvv4 z>w3UVnEMs^Oaa}@ala+`OhzLlbm7;g&huv3)luY|ImWjni*aaT4|mkWawVCmMCNar zOsmb8jxpcN(XAy(O(G#nYJ$Mw4*qwnrkem?YJPEHGsl5>vPiwnyWG7hS_6hPKP z|7@yilb}tjs=)UKo|)PyDIhnsbNHv?|Jc??M`EyQc5^K^Lfh0m$Bb5mHuiHue|^kz z6drsKclE9o<~Whuj$GzQ&Z^|SNH;~w6FDGx5LA>$4XT%N6%0sD%&?w*VFnU;&CKOyj)JVp%eZ9<=gXsK;0ns6CTvb~4QN`wO}^RAk%vw|lVzM5 z-&!eg;yW0cY@2MNOEhjOVLQhumf!}f+0kLPVd8Ie7&l|Eon!v00(Pl`Q(q}i+A|dg zwek>ohm`)0qXh#Vx2^Ms>TaeiZ|7)3z!@OEJrDuiIm#RxGCWmk3LI|b4EWFpo9Tv& zBVyFU8;CLXcq?^IS1)Xvv}A(Z_EFn8N>Z_(iA)?$QmPRNDzH$*fQG0vQ~CXX1p%md zh&bg%r9!xEQk^M2Yuh=R)8WglOszoU2#tUU%?KI{oYR^z!5#lKrAO7Z^i4d;2k?1( zvIYghsRimP40Eunk#lf~3CCXE}N<<@*wr)*8O9e-jy zomSk=5w{LWFCtGSjSZb>_%ISU)JGD>PTzW4<_(WbvR|Fw&JnaFrR3&)B&Y~^HtDQe zir0Oii{L>N&Ak{jZT zezy*sX6&_{V`-~6&DaZ^0CVXCV*wju-4JIhaipcynli-N5)@>LAvK^1{0}+pi1I1j zk{A^#d*<5BYhs;h9V65QshbYphDcYZfIMji>fck*(PIt3`byQ3(6%88F{34+IX7uv z?N?18&qQeA5fihg!|iR8_{z@&%@ZS8 z5A&!BFb_nNmW3n`;{2irZ4+aNUn~jDxhXM{^^gt8DbXZL4rxljrHgpBapF;gwwW+Q zJeGv+vrLH4H=fzv#%W1GWAkK)mMo#E^cLux4dAr7rRLH+XkV4orY33WYSY>-d)$SX z%Myk>=ru{v!{hs)x$zwRu1;2J5;LB*3sIEDt6XD4C~!{EXvN^_6hwNLMiRiM8!p6q zc{s|C?V9Xo0@|jsU5NMucAmg!Uy%}YV8MtefD0eT$%pk?dOu*l6_D4m;h{D^wyV>g z#$nxnc^Be76(5c}SphQ4;tH=2f6xAZZ2{!yC&)BeALH!i1{ob$)lcJM%0&FmJX+M zm2+%Bj8|81wm69lr!7?>GP8t}bCavO?50v{PAiKZ=P$+COb4_J@s}mhhl9%`3x72+ zmqf=Oxq!!A%Hvw9I3xjMX!gkG@9Lh}Tz;Ba%#4qAA-b~!+cZs&ML6w}uv1$LWdp|f zO);PuqwYfdW(kQYgu|0>ji?gdJ#&$d*dbO$;w9_*A zJt&5T<)P?{J)KHbMAkxeEDbDo*z;;FL6L47UZZ%PN>i8O0G+}$M5I0@b zglWLk%oMG+qNOX@P?B+U^h6=1?=1UxoO=e3?Z86ha}|$i!@#3`#yf#Rd;$d@*KuwN zC3O#%sd1eoA;l?cu-bMi#93Fdnx5+Ru&SSCSQqtHE8AR!sO~CO(_!5nRz8nH7j#hN!=x8lPfEMslWie*E;?mV3=+J^}95?1`ov|(2gcf=+=qZ>s9hDgB} z=94vs_jNXX1fSzK-PS%%te*)y)dW(QZtHIG^Lf}m!yjHKBfj35rfR>CVR!fuW$H=V z_yc`sz(r0NG4Gq)eC{8nXWK7i=$(Ezob>Zb9Eh&$o$Q^G6^@Hg_D!}tolr52*M1>U zPSTm=*YOe~W39c{0%y7l8i*F-y_{yxT%$Rmj-vtIMPGty^da`B@;sq`5NO}z*PTJ# zs-gWtk{tyQ`6kp6-^~=@-~eHx-@@20;lJIFYU~&C-zu*OO^kwA%-CTRw9gP9O=Ddy z+;|pxzl0`tztXW^NRumI6Km?L#2OpGDFO9N+!O!81=-VC=za627BVNZQMQl*R}Ab; z(Q-Q(QX>wQ&>AgJu+oP#4B8N!H~GxA1AdkhN9;O@em9k+SJ*(t| z^&~mrij;INE_#zvvV;zH3!3%|*-x;lH~WQztAaDk&66Vr+#ZV%pKcr&xaBX}dd627k3Zyjwz3?}LhjY+qZ1jYLV!LToFv68p-o3I zEmg9RHg#h5shC%CfCHj+jPOp*VJCFWRggsTj#?tVx)@8Cf!%79;KBKWH-GxuuYUc9 ze!Cg}C;5{k&qO|)4=5Zuj6;g?l^g(yaQjjYL3_x6a!8>AD3CwMIdnmS`9=;^7wX$Q zLDtf%mvS>7q%XipIaE&_A+A0`{NjrT4=*1){OZlsn+FdcKlru(GwR!vI&);T{^ZqY7G0Pof38vT}7EqBhaPnMh^w>f@uFU}G0zSF57H#dIk0zeg{Zj2_#TBu5Uo>7o+ zS`ie^kRcYdguJTV zW&$D%Gup5RqBZJLjfA&;pH!Bu$MO@XR<GfrNA?5FIMLvlClKP47o1_04UT* zBrl*)m4S@==`CqVYI2jA)0tHjBZ^21Q9@w`;-ElmQa7@@vUAAkiEqV;Mp3>QVUJ>; z8ti6>je7A9Bwh+&QLvj;53BPK6Is%`87%_<*)=56IuK_ZMaOpVJIZ)MMJJd(`( zS`swuH1eV}Y~ySss9cc_@sTCXgUU2!B~+YS=2ISDox;@i%jMb-bGc3};<6+u=!M+i zGOXqt>Iq30c)Wl^auW_X6(O$OcI(~bM-$EXt}Mijq8oMI2?#AG&`=P{Ko57)dN&um zrU+ff7GhHsA+67ZP@4hT}R6&0tc@;>4-Q?#vfr zPD`>ILn8YJksViM0DvFtP)>vDtKHw9wJ6dc!m_uOF6(QL>2&4cAYO@oyS>A5!U7Z5NlZy zmUENxFGN@rO)fyG%DTj(A#5Oi`u}l(WL$v;o2peY@MOfQ%u0jlBN!UJhxEW#P)-)N$ zNkfs?HkGRoX;_kYSST@hJyNoc4whn!Q;LGo_M)p0rC7p9J)6=%z$&jWjciIq0Pr|n z!qBhctfL@vMJ>cSmXL97LZ&I4ZUQ;sr@5eI_>W1L#1}n^*sdWBag8OhO+)%b6#cVo zwD}|pQK_*2ndxh}1r!W+fXCI;!Q#ZE;Bj4Ph?gwkF@Flmiyu?8wgx=4bf~>1nX4a zmvVr3XRcW~}d520%exuePt$z7ywThEyNb3q^h()VPYpP{k zTJO+tvJ8=3Eex?`Rgq0WL}V7W;kP*SOwLQvbeu8+hOLrah%>9gFr^Y0grBxjG$BcH z?&7SNNNc~wJ&xZav{*@6^75GPH0L2L;>}P?^3cUGVBg6ekI`fS*We4&XW+9%vkUQO zReYvsz7jzRSe)v=j&c*a0Aggz<{xs^*QYMdq=Cg2(k{fLRk2{ODFcB8%^&hkQQA6J zR_d@iTTQz-ZFVM~j(ED)%ej`cFXe`7*`RMiT(Q(^R@bDuvSy~URkvG6csW!DCY}(`<}rZ!L#Q;dk&xAzCYRQ#Wv_HAKCs z@V(f3vYWO+=$zD($2G|a%V>yVl*AP2TW`yzakg$NKMiPY8e;35T5_8{5?nwBaCq^7 zJoZ91XzaP{;lb+KmvT;Z{i8ihf5k?d(Js#NiAG$$2(f%6jkGcc_<*7Lq9%N6U193r zuF8gJK9zeAO)hhA99A<7d(#_k%bDZM;CB40DbATg%%D?2?##>G5PFVWd#DhJE5^w~ z!Q)&pL>`v#7*|}5hja`c${8_Dn7Z)eD%tHj;xfVAWExX1w){pH;usb3I`v}2MkZu` zYjXuCeo61YEuW23lw0{0mrcMShSCAP4WA`tV>ULZjRb`Yr%iO7$y7U9TA~Zlmxg^P zbp@})ScszqfO>!_H4#yGxNpivyzRDI>?To~sKQ$~M3JJ5+^)DN=oK>ocPA}&lUz*^ zx;z!4RTW{E24SqXLJw;3J1ISJVs@AJ#vxwTsUSBuLHU!Y2ZYID#x738igeyUkrh!T z>5Qo`0@dVklIi1|s|e=0@(|@(60A>s=&2mMmJJ1p03jc+N4tKAmqhG1?BDEx#DWueTxCb`q4ppM#gm&oTM5+jDX9xNa zk6IGe45|?p!CG>L2~m;LQbK)*4=u?_*`8_=-3cNdVq1)_N=?2M-q#sV&B2yH??W`F z;mIkH^hxOMU|Eq#2PkACF3=+UZ@J17D)xn(1CQRvEsWqM=yy?$`zF(xD9V-NKE$!2 zsxtxi=@_rR$-1TpZMN@2e5)cfIX+g7KM~c@*ZEw}uJ6Y%ww-n#Vs@Qcau?8a6Nn%> zH-hKt7(8g0kfB7;*J*!SCI$K?y=#hs0Qde7ss1J4#xoQ+eE>NC1SAZCo*cjiK$=NZ z4>f!((j&uXn}|Nd@RsnICPML*5}hKTY6F+Xg3T{t-3qigjuqW}zU>VDT7yao&?4c5#NakPqIH|hNXy!gdsyY>%W##vg zoB;rGBH~OI*2cPzFQOCxE{BHL)e-=cLpAsREKo`PX?sg7)>8!ki+bjZL;waFfDMUHfc6=PDnbKmaFF{!H3JkZD)$mD=$ zi8A@|S?&ie7|;ybdMl_KnWf2}CNAS+a*jH62sxZA5zDKes?V)cuCC7=&7SqSbL4AD zEx8N45ToIdE)+P2tuZrpr^~iJ7YgJ3b zr_<7fe6%J^G9;EDy08vcE8!F-gVC4kzULO@R`pfsz9|-X0dkWS6w68JBFrg+&(Vr= zoN^Ukg;rEsv4GzB`!lhmq9-fp6DR{qatrkIY_hCV(^?E2w=qXZgV|77fvoP3GRsY4 zgH1{I+7Dc(!NkjNyAf(GF-|n&8lhp16Ib1w2?nF3&$>+*!t8suIvf8p6VJmO`(9E@ zuAqx!BEvJVIWd6qP*?DGEeqVjrqq02$@?fhI26zF=0@@}m^?rZ;enL`jx7bznZ!rwe?uxXPNvVQ%7}q=MWF9*NZ`Vr;PPFLF*Xk~2^O z=P;~xAs8E7@YoA^mM5Oc9v2Q?pyT7&u1L!U1GB^fj?#} zPlgV21b$TmL#lzW*z(X*+2Dv@${s#Qw89k751oHem6(XSK%2C zyq$V~As98RK#N(~OXkdnIybK&=1RaEEf3I`%`g(iWbqEtU5V@nt6k8woHHJP?MN#a zmCbYm=(z~Wey-#oy{ZB08Wb^VzbH6+<)5zt~ryCfb|9sO(Fm{H?tNj92t=Kq|qk z1&R>oo=o+57r6NJz^D{&_|Wu#Q%mjwUx}aN;MB~8ca ze8K0+Rfx_n;WG}PnG9zqqVaPYTF?XXzXb-_nhf4V)mqb)Myg9pA^u(gvA4{Rfe1Q{ z=jjc%Rh{Z2zHdR~FU31_Rq|vbmDYA67j}lQApTFh4EE%k%~w zP8RzQO%C4FTtQ_$bsZw&OQ?*e0s~Q@WUv=v;-kRw>WqZkiZg$R6h= zt?^E@#%FWGh1TMAoRt?HS?6DeSoxBUI5#=*4Ryrh;3AW$5&=Bv;pU2pF3KNkUGG*# zu0z~?Nl^pdF#i1(`S*s3BAOVr;BD#@x2L0O64eZ9=fl?_O5bP!E4#+-ucDsUvVrB) zp&94ClM58LKg-^=Y$oU9ZCoS8zLRTgrW;Tb&xLu7b(8E*RN*q|I>hs%j68qh?a29F zFn|WNC~)*J;nMqo`|VLPJoHu$c@c+ir(qWZ5 z!*zY~Ks~}P?^w_Mq6-eNPQ5_=mUu*N%?2O^J#g88YI34GiTCDALW14LduS2?^trKB z4`9CIcyG=@qzGNSho&DC;XhHl$EPjiZxz^YoTEl1Q$p+d^nhj=yM%5XniSZimU|)xs$K*`PEa5_8*D)}L1J!Uj|%{u zObM>r?jxHs1BpJoNkfwYXe2k}{nnKr=Rf{fqHUN$oWCOMQtN*{aT}i$kY9^*H6%1C z;8c*Cn^4ecD?)+D)Rg<3DDRbQ@OX`uWVO(`&guJ#!Vh0sYlhhU5)@jMx3Oq&V zDp832R)n3HbTZZFQ;FhKdHz$In-Ep*RFIqdk!XgNk=Q$QhH{SB(|DvhkyZ4Z#^{wi zL6^*Ztb8OqxS4>`YR7#96t^S`AvbYeToht`ViV%UOA0aGK_H_L>Mj5PO80p?>SBTc zWugm8Q?83J^)0%vg>w_4zDv3=g;NcO8W0h~;T!-!c9>soVM8iMk9rID#c)^YY~Rxe zZd+D2A!56Pdq^_`lU~S<(ZLNKP~Z*Pl%@XLq@YbpAhO#6y9x2oCD~1ZEy+$!M{J-V z`*Q)zIc%n;#w8EFuQOJgCiR>lvtz|gh<`32qn()Yb_p3CMYLj?9|UlTC|EhmNZ41Isse?82dAfn-CRT0=g41CZMGR z@Jw#NnFu2GaJ37$fFpvIilKEU4W}ln5Ry{k=#<}D%Hr^qmu)lYbPN6Ah1`z{6bnebMiR3(iR0YgU2_wnkE{6lyTT{$rAxp8h?QjUy@}Js*wi&P zA-=eZd02?~Lhi?$%3HKj(m*U8@u#k*jJk{ZdKV6V>uWl*R}S-B1zG+`-G`DtoVFkKR#p z0hu+e>P_}J4}RB~g*fP{g19hsEw`v3Egz)5n|V;2pvHq-M;BtKs|qr0-Esv{@vyx* zz$0;rcAs1NAYNenX3@ZK<=Vjz+g(+Q=?P2Hwgc-MQ2|+$v_iM5IreXIm2AW!?}n$Mc41;fM_6bP#K8}5{IJKfGH0G;xs#e zT#Fdu*{gs|i>QV`c;wc~f&FOi6gUP0GtlNt7pLbz>bkxVKVLDQ1f(rn6$Zeax4WZ<(}<^HPKW+4ynfDeMfm?R2ZJrxhs z1WXpjQ-6||A5yIBY5gKj3DIl0z=r#9b>7EVmpx*Dy|mM9lKQ#QTw{0&wXfc?PL=jj z4zyX(UKT9GDH)fJh1gXRB8*}iUjGFy*Rn7*!!>OwGMFuVn0W5k1*T!v@sIAwAxu7QD=2O*p3h6{NEn7=>n;c}cKg8)3qeA^~Vo*;G;w%ZUv z4rVf)X-gg-rPGv5Rs$Tuf_}oK_X8IU;Nl^Y1~1|eTJ=S-&ewsEFhfVzGtM3k3+a&F2D3KZED8TL`L z-l(!9Vb@$lZJKX^?Aq5530{J1I@bW?7h+awoZ1%EkXld;#>5*)q#UBIwC{^k+Je^2 z-)=*cb_woD^S2jASJv_H0c2vnI0X$L*Xe{P=qe!7-O~GElAlFxZ1An@;i!s*TezSd zQCi^QE2RPCI+YN4Tm{sLyi*`*`9gT)#=USV3_;_f!0|RB(7UF0NxsHh3rQ{5q%wvCg*D9tr6 zAyT-iG}FbjOJJj)iIc}5a1Bj}Jgy=zUCk>o9Sx#p`#6*`pD|1~wM*hz@k zTFkzeL*jo*DI`U_k!%7&Hq#B7CV5!VvquIYzoaFtN#Z7m{U|p?--7u}fS6?eSk535 zp#~a?FyOdAmYi_u{lEpowY-Ce2ykAM6!IidHVNGnp)Cfx5S6P4P4*|N1B4|1>8Old zoZrp=PTnp=?>ZIa=Jr0Vw%OIW+oNInbMtkk-5g=ti(`ysSWEE}InY*~IKW>BC_)T( z!(Nlm-9@nNn!nGTAa=pFo8x&EbFO_2o_h$kU7ZL{2Lt{1w`#0a=h$F}@G}jzCNJz2 z;Eg;-4wqDro14Ccl*r~%d|wUEUNSb{HF@4lVrR5DvbQR+F&`4s<02h>eKBN{yb)dt zEuQ8$xZNBf!sRtXcO zh;4h>-5gO`72CA2C35bW7zA6qlfC4J%y(e|6p1a%wwohBs}dWQEh4dqO@mH)qVD2C z#D3D4?!xpacr2N=o1;goco<x)X@jC`9=KT5+9b0x`OV&EJuvtBAg?}$R3<~CpX74d6+9afV70uZjLK#gXHQ2 z^4~;miY_p8?@}%RQvE4SDPeN(fWXz-IdZU#z!Y2rMR=rLX0^oc>KvdBCR|j^5r3dC z&i_QTS{goqfc$t=d`4y_`~zycCIy)xu!h~w@sL#n z6%${J-E^>47I`1$4SP|#E%y64-moe%7bgEvuXG|`9zBl>Y6DRHPOjo&TAOMhqwBl? zY5ReFh={}n_>=DCtpNU{Sg4vM7~cpq;PM0m@aJ-l*rI~6`C86VOF7gI>786im2o&e z`~vd7%K??`q3j{>e`p-;o9t!g#dava4^fz^Bi&o4B9<)wDYb=|Wo8x}M=`0jVscGiCC(eyZLb3eBKE#cx7Ie?>6D6>C&z&Ud7t2t}e?4 zj*QudXkJCDdt~!5;cGvC6YyVTFPcjAzZ|ZVehznEXMnYvb^Sw#_w7?@a8Ydp;1xM{ zEq8H2yH2jYlM63oLkf6*ypOz?wseQ;co)N&eUoNR)Z@C^eTZR3LG&JGJb$l))P0kd zP7%7UH^fLQLR^0GMr|A!ZhX4g_kEni&i`D|K15S8yRsQ6qSdh5Jj1(~fgmaWL#=mYHdAH_nbvcPXytzZvIvV-Z=B_jD zrimMW*x#&g*@tL%MQ9S>=Tpv_oVr(lH*$zrcPhxut!YZj85!+^!~;>lEkw(=a!!{s zXq|f|7xV>(*^Q*I)T#9mWd_vQIz+OUfEuem5fKS@Kxsf<$OU4a4Yyp$Ic`b58NF|k zz|EJxI$WAzVwLBrmS<+u;i=&GYpq}4}}zWCz7!^;N`zj|}^ z=E1|q4}LAdn|Zz=o5qKS6Y&_bN%7$RFU6JU3BgEdF1h;n@nKS0Y+;C@@!`lkSILD8 zG1L|oTabG`2q?0zu0$GTXmtUZ@(sn)orieh5&%Q-v;ka+*f@@6%kh)@B|c**n(^t) ziB6MKGzgE^qvW?DEipmW!v9@}kU|LpjKO_8n=H6FR<}{s=ug-6;$imJIJ@%@7hAFr zNDUQ1DI*G~Vu*aG#ez8v=sH`fZKX>~A&%6fAlhscPmH2?x(9Sl*}`>@6M~!#Q4I=A zfNfqJBZDXOr5K1?cqv}U9xvtUl*l#bX}CF!#PbS?C~yy)=}tay;gQfbZNV{ z@wrH1L7Qg+-I)14M`WX<)%2tAT*eRat0uc+X$+*RV6mkd4XdgpxLS>1jHL#gEX>Dn zjmPx{431kIEG#;o9y-M>>Ljg6*jw)wA*L41eQLJ|Qmx}puB9WlZv5-8fyAx|yVMf& z02qz@Rv{wcY_ybO&{kd`oJbek%9Fg`IUDZbUzC)ACN=BK?$%X|YKb&SPAx4LKsP`k zr>YMFfD6~hoSIHPrGQ$wEd%8397%8`K*r*l_elgUIa~??0I6*-n!A~ZM-N=B!L25` z5o-q54DY)05I0+b+oulh;A#y60m7?0b4aUF0Ticm<%bc?Aa4W|X~0T=hB6?cj2uqQ z1;$PBh5IhSX9kDed58-x;aivSeI=(c2@a{L3b<@=QguVlRZQ0;dNW^iomz{6Qsin!=X8!5Mq#^RQgvyLb6%}?NLjvel@GVL$ ze()NiW=jC`!K*_FK(Y)LyA+SS4ZLxJR#K@S!iE^yDqb_TY2&>EOV>$V9p1R83{klz z0vUJEl)Mp(;j5*RP6X;LJVBaaOw5M(YQJx>; zgy>_`cP7d*?m-u!RTe#?;9eX6`|>P zwUROh(R56}Pe%S!W1Kj#&5x3pq2DS*Y&*5&E}$7A5Ky>EqmZrQ%(eisc3y>;?Ghkk z@e=`ENpO%Wa2Y}YCwF0A?n_p2T3mqJ(atJFix<-%XCOE3p;!O}7A|Piw9-YK>KA-=T($}^{Uv;rahckR zL1j|IL?0z?RG$Dd=y{AW9fvLSky!)V>#sty2BxonD#AaJ&Gm7E)i~rTrlXzV!f)h0 zBD>utO?gM(p+@KBx7;DEf|CP#*CDM!lLIL2OrU?d4rx`N9592x@wbp{D-fC?P=uYp zoXq!GcSx%y^Y4}74IiTaomz4icp=&%MizxpC8gJi{$mF`nBSD@R&yLb^=-7L+LVyg zxV(^S#5NncfM}GH>nC5)SKe``H_87*QQqQnyuYd{w=?yPqz$-6Z*vQSp;dG3b&Al1 z`rNW>hwz^$)WeIp2l>?`^TPq%YHq@yq?X(TG}POJ0D_0=_*V%noQ4d6=UmFUpJc;T z&e0%ftKDh~!t)I1!MVrWJVR9v#!*xcF9iljiHBc~aIa;Lgs8yL0~go> zMto}>0N@$}6bo2I?!y7_8}37272DSrs+VlhmQ&?+G+-@tH*-RcOZc3awPt z76Ym#uo56w#OLNRs(>m*yed2`+IumbmM6*>6^siU(zcym)tWONrlS$-x;j5M?NL<* z7xFq^s%j|60Y9mJ*Jm;`V_EMVS7Nu9t^vb%Ds@XcbIhcTHN#rW$t)hI=uM&XKI^JB zE_!aP?oKr5s@k~FEvmyjrQK^)8&^OD5qd9)#Ej;CqoALtqI%ob#s#; z8a%3&+yylC6CT&cTBcd?l#yH)p0@y+v-sS+MHQN{eH7Y-V19GlkVHt|8DO@B zubZ38sA8@ZJ`i9|(jZ2BEg-c?xrMCX)n_n#u@@J%^{tzm%cx@JLSEn6jakXg<({l- z&NG;*EvW2Rw40l3sG_QjMN6o_LWrtOapBXww>k5WVYV}I-Q4s;6?0`Ku8R3K;xs&? zK%CkYlHJ^lLKP{?wQ`>=b=(U)H8PptGEHbQ!DJP>E*wppV|Bjwl2ynhu4X`(aE?60 z9{x!(;xYEP%9|(kT*@oCfomV+kT#EV(_N^EH$cJZyVyfs9!kDm)YYdIw8wH;Dm0@o zh=`M5=u6Ab6S<}n!UzVCXh&+^tB)&S@T1=Y;8d8Cv=nRA2H%r}rY2C;nTTj8srzk4 zn^O&mE4Tr77n)^Igk5Th&$}6oPdW^FGa8z7aB9h2AP_Q@f?c0DP+Ph(9hxpMCE0~F z>5T~;iV_jc9ufMrSe~p%m@*keyz4DIL4xDl5Ap;X4Q!s!FX`}R{lde&=Y{61MWSh+ z7eW&j=sI_b`^^i@S%?&&8?uBZAQa(0QCbW0LSjKTpKaC%PG@X<)(A~!pwirB?l)^RrzaAZ@!dpd zWlX~(@;yhL1SoE!we8_oE&tvn!NB_ zQYd?L9U2}wqSH=#-O%t~e zGNpvk*C#&ItL-=9`nm6ekO5iQK6xey0|d*5B)Gi}KT6+-GavK%=;zvV+%g5xH|ItY zy?LhyO^fJv0zMrD(buO)6rNrD--jkfSk7$hgJ<5;HHr8d8gl9}DkDfV*{KUEdSBq~`E!7OD$-()<+#C_g zFt#sMk(Woq;=)@0=^VKFMs8sPmPw7g4M))C4G+7fgGmwpm^Jj5PvJ3OT0 z*}getl&Hs7hq>7zRZyN9bOa7KoW5+%TlkJvU!PYp5#iV6_H&a<4xw>|&w84$Z%zSu zrFg^7%>$Lx(sBXK>$obR@R7VK=D6nUPA0qy>$xeOs_@3T8k{P;W^Q~McjlbNZ>4V4 zCucPLT&kX%k^zQE%ZNU;K5a?tj_kG^oZhhLv_(t#DdT#DV zRhm2V=N;|MsT;2pua>#_o03{`1!+@&3sUKDEdpKZ6xE&3!TZ=F#29dKU#reHr*JZ) zE;Y=}<5ZEF)DT6A%aH4!6M$C958-K;_2|^@M``-GX_zW1lRXqwDQA3nY&(=x!hV>p zhN{|=jfTo>WtVgHb8|6ORD*~*wM%VOq&Y0~4|(XVY_#3ftlo0S=5$B~(k^c4=jKGJ zAh{3&i8%=~K;ni^1S$3dTFZ#_$q+4F)^x+%JP5)YGf}#}5up%|*7@RS5*pfQNt%?x zD}ktXq_*91cRe)cMiL#lv^&gAi>Q{)L=%S2y4UV{s85U-{~p(ynN=mj-0X-$Xp-z_ zU2lixtcO>MH~iexM@cQY3utC*#|>dbR1xLmI8q+5!8xv$bNCRL{aD+iHq6a_fRD`- ztIx#25sHq1oJ7UpP+JK^CL55?IHVqt9Jr4Q0OBgKKYfhe#e2d2G4&k=p{gsA1g{}y z=nMJuWTo;@pS&=Bu=ZXMn!!LzXP-FygHsUWvN9X~p(zMOXu=;;IXA_YnB#+J1WRy^ z`?xS!diAw93y}Kd&g_gA}Ty#Dbn!qS&#(3MO)C__=6os+(ABoQd=RDSK zKrn>nJX9%tYOT+^?#AalMy2?S8=CWQYRRMMk!Xtw#fC(sWr`X^`^q_T248Z%lE*kl zqEfzvoKY#h@#zkM>p~+m-BE&TLIZr&mF*fhAXPokeUm$D&{|(zarv z4zxp}7UPi1DfD2$E?A9Qhzsy(1=0TCQeL2kI^M_FH5G)1$6{SK#tKbdlvFT?s8eoU zq=M&17uEuJ67c4HL}q)}U4|wlO29dH67Y+ob(Q>3ziE3$#rDk!i%bP}4f_z9wJ52e z(i4%dJ_tzgDO_TJ3-~b+QUMg7ZxCm;>u!h8d_xHks|F{Vl5Xg}2vMR~%~T5S8kR-5 z$u0>TLemc=EM}SD3$X?wKao96D4fGCHQ^U!6}xb42u(Vagg1-XRCw(sFbNxysMfy< zj3&pQ1&I4Y6hnyVFX4b?8PlVtNCm?l<7dtEfWaI|+b@r65CNLU-W-j}Io?u(AN@NV zV^cgfI(B{35MuPJ@D0>tV6_o6?xvskR3|~CCT8n8i<;1?m{oiQk89w)*6=XwcyJz}%H&w3$!?XXpPAFu)DZvuv}0wrJ;*saMw=k93R zp7kj#v?dR-Xl}PlK?F98LcRPT=ibSNbD9%h%DHRVaE@5zSyN>K;ly;>fYfqooa4Z_m zb*{fUnZL%|roTe>I5p0S0f=)pdI2xSsky+AN1rVviW>4o9aQH!sFP`Hked!lr4Jy# zI=bj7bnSW>W8J$p>SW5g7pYAfrJxz-VQ#Hfq(iFO5Ar0N+nS78FQcq`*La=GS)&8f zcxhg{7L>pzkK+fpe8qQ{k<`8GuTEyEfq(-~1q}$uj2Wq5SPSD3tKh((?U?2*dJFv; zhwnr=Y--wQxB&WAaYE=i9VnK9OvW^Q%-k1mPb?-?3rr-#N4QkckvpM z8~W476AkI)`ntX(KOY(SAJAJbwhQ{H!Tn{;^+N7kbzz1K&yT`tBE?rV zGi#3lp5Mw7T4mlR;kkq>AKXOndLdP=cua5qQlvvpMEqF}H2|xi9?5-VT{gUcn+ea< zW=rVu;mkJwn}uw-VyyK2_*PQm1O@iN{m4?_(FAp^=GrWw$cHoA&2JVmr)H?6C)hL>qNhEaO`@BHOtwj#F1+4~uo_et2ozJQeSAa%28GT;I4BRH1ojed zPF!^fm+hBZZx&M706r7J^NtO`Y@W&u-=!ihAgBF$>CHlJT1D(cj7i&MF%|J^xu(`3 zm6g@IgnS;SIn7${%|h;3W$!cD@eka9dJF(ug9OIaLsm}ozJy`+~uBQrU@A zL`1#Lx3A<@q5{*TA-se^Ub|*!vyebm+1Z~r6_4p)5Vnn{ILb&+EMZ#LzDHR| zv?>bIqXbakU^pF{f206f^n{yzSo_XoA;YQwOlJ}RKs7(OkT|4kN=U{;5*zhP+%IiU znm=@(q4n*_LRwYf=Isg9niPhN-wG;hL!o8^TrOw;fe(F=tMOf4kfypNH0oHvErqyQ zNTWKCrj9=mRA50`H-LXBSFshq0m+^!gGA4QA}vjv<5isF=D#Nny@Ws=(OdR$vyeb_ z=sSTlrF+mbDmoM+xmGe~L=OqRCG6^m&vg(B*;R+HPw|x&LtV-Zw-BfCpC%b=^_g4i zwpmD>I*>yOlHL;+o~r~)n9fmTH&R$gbvltbocvBjZlwJsEaxb#ok-m*q&c0mrl&w! zQW$A1k^_@qSi(|{FkBb0kfwAnOe=8$3~{qZvcbK`>==yjA-8evmjvz-hH`}KD3OH} zrGsmF4uwm0Mr0B=362rPUysmeYTL^~2`-+%6%wXvvxLPQF+1*LA&u!Un>Ix;zY=H& z>Oel13z#lK@uh}cKu?Y%T1T5K}L`Ci80zQkeoeHRC_`{(L zBp{b?mLo{lmnxZBbGaaOr zy-Ry|YRkM`LS2qlv;D?)A$RHE_JU!mYs-R5o_r)5k|>+&qejqIGA`IIp)E&{c754) zA#LeEntlV2gcPpHE1li7HtvrWhL6ngSZl!zMwV=_)Xa^!yWP5yi>hZnM; z(z78~a?5Xy7e2@yHz&1VyNsK3%fGfKlas(TT}uG&iz9+|oX%oimTqi|v%MMHXrq?ALM&=eUJEf|b1=lIUE< zm%2q<+mi`XfScCE0Z(c{D(#{k#I3&Co=lPUqRuhNYobS5bgPC)_>Ju{Ce$sF+MY~> zBB<#jUWwH2WP?*tZs;BmULB1*rdV()wE=ITK)sb$;bXWGj>fCfQnh3W>^Om7`Hk(# z#3|_UtSRL?^hoF!V zgN&OoTxzL0zp3Hmf+<95BJm`rj*t+C>~y1HpkSO{4ptpyVNW*G4Qf}uB!CL8S$&pSC~$64C^FY#?dB(2kA zp0e*Kwodw4ux*?N7JWF+3emtNeHb6Re|_-r55>>fOMVP&+a#3JAaguNh)Pyf^l6YW zJ|tVvgfO?op@}63RQz5OpwAZRTW>33;+*qXGktaqQO-^+dBnUBT%^ZGvWF6YPQgS~ z=tR{)lF;^zTgvP6w{d=1@VN*G(aR-#CIW5;A8%3LXkrd`dxF`ydWdZ$n5i+< z)`wX}0^!Zk_PD~wjzQC2(hS6zX2Iv!yb#e`!Z)Ph=kS35lQ^%ukcWWAh73^g)cAT> zL1nqVU5Ixsp<0(wk&b9oaJlc~uJ#;H!(h8O$t=)pd%Fv9%q3`?n|c*B7%qpcNGKd) zH60^Tvp^3j?kihu7pIm5nx*e{A!fM*%`kTgt@Nt^T7RiLY?%3|0a}zi>>T7SL^+oL z86vL@h>*fy>Y5r{JWDu|cy1vucX3);Ol)T;cOh1~q!GjL-9#ht6trvp46~VU5TtJX z)GkCum!LB08pn@1h791vj!=eEIS zTbEsk+pc1(^e>l3|D(*Y(ZUZ&)hg|EzFLP~#Rw0wrjjmksZd7T3V$n;OXh|L}-z7{PZJIH=g#(Gz0tkp=4I12I9h9tV}*d!*g3WESP zw9TBun2fs2fagvExk-&D8gy3QhgflRnA=)MIO?4k7d>EMYV8yjdjAO{qJ5JgPZ8Qc z-iOF>MQ8#Ue*p;L_<4%0W1`%+|JIp;t@cP1#Z^3&%8i`~V9t@!iDGqyr2mi?oTjDl7w<(&b_}%-aq}fDRmM>F zp(XqaG?L(x0Nne$b7_}TPKyKVav7D6svh$rNmW#@hfR{@$~wEAir;DvwzAe&aLj#KOy&oy8nj=hSlJLvo{AZ}v=5$=e6 zF{5HTsTRc*hh`1!Nl7ct~-dJ$P z33klrIVS39cpu2K%?UHq|l`KbG^8>EJXHK^-^ie z@M55{LQe@#*mpn7v5(IloQcl@Q1|+BER^uxQv@_;0P+YhOj|z!d~p8Y&7c1Et6%@2 z-)_eLsdPHsLw8fP{!rG&H^*S7eM31U0Nk5HoSF#Wg2o5uxLWk~QR3A{iNE;b!Nbc3 z55IbI_2$9D#}9t}?l>8+F+USDJ~FgH((s(8SSaiWr6KsG-0+KRes{#jAtFyPphce| z$Tf3=!l&N_>hkOUB1eISq(p^JlTtF7 zsb&QOxOfOFYt}#5J4INX!c=%BdH3gY#6MOwke(kQVG+bpAXpB;7%Mx!Kn~DghYAXH|C}fRDHQ`5FX$|RYW<57<_`u2=#;L9KGQYsvZsb>3%$p z)7;9Fyx-~GjWRM{3a{1Qtj@;&(y#RQ=W|mJCAH)Va^IwRetVAh^r+95vWG5Q`as8D z$kj=+S90)wrDxg_asTx2zZ{+`%-oIIswQJsicz&8j>d;0X_)|41+&+sNIt!)NhbHC z?^Yp5i#_@_bk(TuNHr+wyT2cOqet~`@-c&95-TZ|VWM;QT=OB%trnb;=en+GZdRq5 zB!+)7P2NS$2+#N6!-lKt&*$cQs+y;fogCxta>lLsu+jXbxD8cM^F1|^@VK+=9-hd; zQig-<&*vtxs+Quyy<4hXO)=|fi6%TVh7t{HIV$ng5@`s_dvo`blxRHtmim(LY#mBB zys-f0J#~vs8VYT4tAi*_gb2EEHs%gevNTPZz8xT>msorEO);bNq&z(dJSo*2lk28Qmp>s|Fpbiev z#PkVwV*Tb!VWJ*y{kb_pRnVuletqUp;kkBpZn_X~!$Rv5o46|Od$(4t<~B1Xa(`#F zKcAZvRN$Z5s`cqUwW@2C=jQkTXWC+o=_g`r%{@dYwj@ITO|C-Ekbnr?JGF0fwl7hD zkJ`C;K2^b|wr_oYPvN-+du~z>aBL>qsD0Z@hd#%|-JIx4bdkp6J_Tzgak{WfPeDP{X5^mJ5&#$$?};R&Kl&T@qDL;D3`t zG9)FByvSpfsjTqS9r$c>zM7l4E15la05?jZXoC-EG^K9@6+Aph>9pAZ4Y(gGK#3w= z)#vLx(I!T;ed#JRb5}BApL)3ic`4UQmV7A}fJ4n%o!#F;vCa!F0tW{`I zt%TXoSTDqW1SJSCCkPN;6V@}ij|*fdBKVb@Bjy3=9H3(7`0SQowk*;rG`m&8Y*-}4 z+-})QcCMic&mjpa^Yw&&6`DgTp<)e5?!6^cV5t_Nle{$>?5~<&dLWs%*UR$4w(B|J|ozM(KCBsx( z0T7US2+bb_i=MlZLp30&6{Msi^3S9h@-{c%>ZB?*(+wy`6{a7;9_fxYQ~yFpziLi4 zB#LsQq*Z910acv|LSy2`M-_myQCMzaq0p+%>?=H%i9>vTCF{~FDlQDqp`yly*n|u0 zO*Xt6Bey!ML<`=?Av#}|{(V9t*ExEH=L%DZp3jRAA*rFIeE|VWBok>El0*83yEk&3 z#5WD*-Wxf@>7~?yLZFL3qrZ;d6MV#7^?N6Z0@(qo>PYKN_&Yfp zmY!QfhS>KK3S-h!Q3&`KvH>j^Q)G3*y<{IpTZE|h60$yZR&owjLHWq}7r6mfV_;7` z!W*$8*-ZatR=;Wz=b4u|0wTnomrx8D3gkrW#E;}IP;l-LL`j6yDe;m89Dxub$4j!W zQ`zagi2;;P>gODIxS(Or)l~US$~sfNqY37|nnL?s0>FhSTRHZ}Yg@3=mji|FQ~&B@ zzY2e`gy?qNcZilQ0Wcl81AwsjJA^BnUj&8g(@1EkE#g$NBr4ZHhN$Ec6w_2XC@)29 zjbGP@Xyw4c43y}1c(ICYle!RVT!O;6id$U>6y*Gi?BPrpiKt0r@8V>zn8E%`K;MPf z;F9q9INb9Nns>T5X^V_@{dgB*ZL2bxp4-bPy7dv9%H0|kWa(yQyQ(h4xK`!vM7GI0 zN^%ziHxWKgsiJgSZ@UnuS{2?D-IDP5x7J`1J^oG2YM3NWnu5yK-!8f{Js^IZ*f~|H+CgTWz}#tyx82O0GJK7F9I=L|_~= zFMH(1q}q0IjuIQ#a@&PC$|?d=bE&0>d~HSMP_I&>v`}e(nr8es6A3C?dAkr3Sw&^a zuao=K^4ryk$WmKszj@wwAx^RihznDi{YH#~nP`LXJGzK(lfbSMf=4E0YuWB@jtj(B z#$>Mv|Aidz(aWdc~x-qFOKcIoCg#*zwhb3YNy{45(xg?+IhMpJX+ z-wf+9Ggmc6aPCsv;0avN*Kjfoa~<)333RS$V7&`J(^(A-_+Z}O2TLPrhE zQIQUzN$a0aG3UYHlI>sYDO%&jz2MR7i(~NmxrW4R!@Mi$({fJZG{cEO0ry7IgJn|cRsFFaq$M&#qva^X6TzlBh@v^Fi zykEH2_ONdm46j@2!xAU8L~oNR%!_c zy-J!v>in+nP(*BJxe(Kfy%5&zO&Pf=_H#+q*GXD#lBlBj>)RPOA|?ju6qj6izQ^Hd%`LuWXd}pQsEIY;A8L>1-omyLcC)Mo@u(O@Tve_ z3sA_cH%Z=#Q;y<;ZaK~Pd#`~8vV;XzZ_Hepy}pzKOn`IYa3nMJzpQkH*Crk+uB9LQ z5dByc-tdz2l8B77he33rwhVUe93TV}^ij(!L73V)~mkX39?F@*TWsvb;ZaUXhkdDO%8agQ05q+cB3 zBqp9=JCz~CVpcU`+Limz$d%}!NL~%$b)5&#uzk%C;xemxFwKqXfk5z$jOMT*&NyN^ z+p7#A%CRc4X;=`M_&d~*M8-HLC^Fi=OwkV^Qm`Z==S&ZRj83D7Ohh~p$2eq7+0%5R z(DYoAv{IzunGBHHhGhuRidCd}!%{`6HJ_|W{;Vg=A_8C7W70I;xlix~Q|h>Qo~avV}*UdjbvfRC%} zaWi{AByqKjTuE%5(s_1d5b_ zg*b!$%xjX~$DF8n@kFE-@(xt+U$U2&Qx5T7 z#&D?M(DNnUyNn6#U2kzR6$*OOTih5u(6Bfmia&4;-QW+L!|725hg@waXc^twyEf%y zz7+)#4O7{?V+G+xXpRlN##8YiBCe&NMLkk)shr_t+7<<|nH1!|4<*8DlTBP;@njln zh_3~eCbV}=(aEGNat|V4OZbM;ml3eNYkN*6V3FIjJtd{T6kw!hT#1+@%s59zBK|m+ zrs8GHZ138hlbKminYIU1iU8kvn`F&p%xv#^nvq}0iSdr26CCK>BMkDD3CqQ_X)WGG_L(*vdJ=OOjPPKR4$jO{4SWGvfSXA>Wvby$R zz@H#kMw1S%%Q%@PCC7|OMiY%^uH{-|B(jXw9BhBEKAF};Zqpx-49O>Mjr?;#fDLe} zgqvP3V;~1xyVoZ(kO<$UO0NokDR<#EAYd=ai0ftC;b4pF`eg191bF{cpQ;G11c46U zjrtcw?O==R`eYUn;n_^Wffm+_8+ExqfL zc}D=5(%VKw5eADxN(>ddp>=%uqI5%pt-tG&iAJEA`m4~e74?8A8@<3J9R|}1a#i=m zWo+YMEB5+iwh?HiVw0|r`%vXXmqX1AX?9*lKCW$1U!P1qk_FC1tSP~Ppo;HG zZe^43!RuulNT{!}|}TI=PC$W>|vtvh|E>SG!MU#sFk$w*u1SnnlDiDs1hF^~qEi z(wbte(*8qKji3k3>v(#-i~w_gn0o>$rmKn z@$V?hz;ENK_{sblfQAeZf-=4XOWJNMqtQ05Y@bY{At;$@()=rt8f8)$ULFmBs{b>| zRLdB&jjhw0lNmHbW@ALg@lh+n`y#wqMwxAF5#F3knIWht!rzES5tOdtLJo;!99s1a z3_^g^tKP35lhEBPBh)swCT~tA)WBzIavL9T6${A>q$H%@h%$&0Cg&2)ZL@6U-o{q( z&B>e__)HbQ2|idJ&}*{B#D@f@!L_NAar(tUn|?PT2F_$zoQ*yfooh117-U)Y$OL#H z!s>lk?rSj`w}9*?Ih;ZhgKBA2)YA>>56ttZZ?ngz6Bnr~G}*jFJ?=||n-GtOg3bhk z=_($}8Ds)IdH^%vxPZ$}xb%K7g8^;v5b@57I7ItNHP|#sy%eGCH8vqSPZ4&hsnj>I zG|5TLG2x~aR?W+p)FG}JeP8arLA-CP-Cd3vxwd5{=t1Kzi_bxdqMf)il)-j}axDdm{J!e7u>@#aSwI<*S7WLVtc@rW~OX?fMzLWaCk^_{1TJFQiD!vpaV?`OZ zG2eu^*pf2V4P|^PH>xQpJZKaJxnV$v`7J4k#;oEkCx*^^tb#rak5xc z;KmjquDGOvZNo=yqJl;K)ly5Gix#!GAxVgeE~&+gMqY@Hs6U{pHoNFclP@)i{7ir6 zN>sVyEqX?r%oY{6QA>!+E~&r_SQOfwq*9`$k{aU7x1e`lr{08^?-G1E_py{{IdM8z zrJ6Fexp!qX#G0ED+IILyqMo4{`M9ChzL$)3nh54Zs1%g^!lJg+I2pX|nq%Lf5{Bczs3KrKZ9U zXesHrvAJeCERA2~7w%z`1dsiXQM_d=so#m~#x{QevS_ z^s8xHgBN1=O*7XH%ioH`Dk83@o`@AEJKaeLHW$|>TFC6R3;gs2ddRJGzaiM15=arc z5DZNQC_)p0pEtJ>pL*0QG6vcy`Q0*Z^ry!%}T_{7OH; zV%wf=Xkwy-h1xKsN*x7|G)bcXa@N2?7XqC6#|DC?W~T5$V1Z^!$2K%4QG&*~rO-;K z@L5z)?s!Tgnr(e%qGV1x+~0=gC`y>ka9_SHfJeWOGizEJqbf+7bLVG_g=Z zWk&FARA9kY^e%X+`sYcOY|b)dnCc-UD&^$m1Og^SoM6@^frncDtycU4kr;=s3fDeQG zQf^_+kgJ^2datou(MFuUiIRelfoM8ojtCD@4Lq^)i(Gpyb8(rHxiwmJacpe}tHL)q`<}*bwir=!&#}>Dik? zh--KW`R{|=O7n@oXv)yX@f@B=77uLWto!<`cjNeNh;?@=I1@=tGSq^=V5o!|N|C?- z4?vUkOxrkdE+|}L3lZlf6eg!pnpF9O<0HXJoFaDe-RW(e>{gd^?Qn?UHmxraRGr1p zF&pXy08WB>@hB}!ntTo}B*>U{x`ALvRrEBP;Z%J%b;7o7o2$qZ zm3bEpG2tjJcT7AHnKb@DidwjUnI~L&KXAc-)AA76+^bO+t!#sQ_Qtz!h|gAp#%T#X zfMD~=G9GYYOVxwHd<%J~$#t9I#i#&pAJh56Xi?{cKh7$>VmSeI@> zWOYecW4UjR!jkLpL(D*T{8X+c-zwSG$!b3i7l~b^3(?jkiF*-a@|3p3niB|{;UIs0CaK!n`D9fw$A-(26k*mi1FQ~ ze!}NhikBRnp1Os;sUjcFPYzF1!@-}rkx6MbK|_Y zINnXp_c6MwFMU@NS$1w0;+72)*N)NW5=#h%TmB@6L?JQ9S6Zfc{Eb}GE>mNAy5WRS z+%-w(L<>F?LwqxO$Zd1Kq1Ys#Q-m%QL)^0>JRubSRSZg6#YZ)_l9%uTE==}CZ=B{< zo+Q-O&o#HPm%K>3=Utqh-sRyLqNkl&au;|c&;2M7bu0m5A{{PgS2b@&Z`SedR_dMU(JEz<-=kCrbulZz{ znS1B%^LzUFJ!kHK1>vzF5zJ8@Fz!x*8AEak8DfyUhdab!P9kco-bgUpJ#5*F%8tUE z6R`qs^~LOu&%F9*c>y)jOP=wUcQbt4pS~6a*tA{Qi@lCgK;9JbM^FGx7NY>~t>&Tt zdxBc_;;*9=Q23D*fZd}N;Lm7_0&M=M>_uotDS#zI5CWt%!k%!ZViUw1;5`yN4;&!X zkq?a2UDavS%((1NPYXzUy;1gJr=vj9eOVxru?!akoU)BP11ZV?siP&z8dagKb~4%i zK>KA(=JVe%E*f#VJ1?F(N+Z12DUHyzQwFp~P!O17K>9P$0@5D4mc5whD3I3J)x(9g z*{N%wqGbE|wm(rVAf0(^*^8-;LK&XNdO#f^zKH?BMnD5q`!K%FgL4WWi!pRO_3d&| z=)j)Bmc3Z;SRGh{2Xuf-Vn&a?B@U7IjsXxk?U)xu9g8R{Rtln&_Q^>_03=a$FjhM0 znjdwV4=!sqABpsIsQbz|?Uxrx9g8t%3ffhSAnPSp3}N&qp|PXWVR^C8u^96yF*==C zjA!~Y)gW?OCNHWw7LnCAc~}infzEIrxdF(qiLrGqK* z%;~6y%X=t7vr4FhtB`0oFj>xv(?P0br}GV_{i+SQM-Qf=!zTSRN%{qIy#y0vo;PFaR5?OYPJeYO832m-@ZIH4W)c#DPwg&79x; zs`yV8nnff~>SsB5F9!4uH3&F5YmyiUiKBq9kJ}wxCFMZCfsi*LMD19{6j+A7hKH{7 z=#|8=Kp3sv?NvH69MA@{y1mAsMW?-L4q~)zm2{N9^YdVpPILZ9WVLNkXorc&Q{;gV z0;GDPT(Oa)ukH&I6pU5 z>GTW$9C%p}ew1jPxAo$}t9I+zT_qib@BBVkrPCZfhnL_=|QVJc7@1lwmFl>b>L>Ja8%W65}Q5<_69WvsF4hH$V|q6Xv0a zhTu&_h&eywR_XLqfz)qxTN*F0Fcf_S_SN|xx8OZZ0ckJ6Bls-mkxOs}=pzpBhj4}+ z#4Y$N=doU|>mcbS49@SzRXROkKw(y2hMEvu=SigRFR--2h#B+}CNNLL{TgWV61LU+aoF? zCD$3;R$G;vLvCuXy1s5?YhAgLJ<}n3@7_(l+M0R|m^6G+Q?GtaJ>?hD!pN;LruuZg zE6ABWr_I+rR$EVfL2y4aNvu^P1oLk4IsK^umgs#mjroiE?g>6rkju*I}ZddP$1;}kfi zUQ^^H`JdRp@gvKc5<68Yw13r4eY&%$5YSe?)h03%iMmizw{`9tCZ~Xi*k!>5N?p8p zkF3A}(f|*nOnv2~Xiqmiuzw~{sid=+5tZPSL8aF!0k1YPFLfr<`HKUwE)W7O`V9V9 zy@cR@e;nbB?O!6yw{&`nfL3y*pg+D=FiJ0xfoEo#OgB`pf6h>8rL$=gt>hE5GFXn` z7kZ^aAWbE*AWV;_27_O#lx|>Q|7>HvrPBio0>kPKwHokn{j%G%l8_nG zO+M_Ohg4eWQf9Oo$dO`8tc=lHe19X1v5nhWWKoYxj1(CFKkwXZji03_mUX8laJuT7@23*F&ZDRO_Ni(7MIbvPk)>!;S>5+M+!xXrqH>!g8Fc}9Eb{< zMN+FBB%@UYlVivZ3XlO^>x-BAMhNUjq=8dH_l$ z0&TmT3{VdZ#8@xIYBgtn`!nB?a@L?B^DKZoSWtk6hMbpxGP)6ik4ZBX$k|`lR1&94 z6Gxd>ocINF&j)Jq3yci@8Sdm<^YsWF(CLG&LEGbrzIs2QJ`IeM~zs6#9 zNnpV@2pgV}2Jk<8ZMZyhnKH^EklCSQE5-tX)nfjdC&($Y%+|L2{HozHRLf z(O_~ts_lr{1$e2iqHiCh^pPqNIXqp;VSrYq)rSogIT0I-)8!?)AS=Vap%BpOA>ZO2^6XfL^5(>LV#jmZAVT91?Tx$FI6IPShJL~ z0&P93C8BM{QW_ps0UpmVCdlwrZChSqN8ZyO+9ryl1LtGf?fFCcdR(4gVAG#9{-lvK z(hL`J_BT57Eh%RUT2oe=)D=zbC<>w5&_K~Q3PDK*ZaKLdRG2F7+TRz=XHrfxv<_)n zR29*cq$`S~+-OfF5Vb=#Txpp!gAmo|Szl~WO6yXmXSI7M4G+Rwv>x!FcG0ilK{|3W zX~q}|f%SC*g`l&E6ydX`*<0m>M!?I-@*e4-uRPP1X6kSX#JtQSJ zb2;j0AmvcPf~@lxc<^Oya4bv>3{*sK$f;leT-Bh05bx$gxmzLnu$c-zA;rk zlX4&d;AWA}%0_+U9RTy-pN-Ot4%DwRnZM1XWKWljwCq_CH!uUT>(qkt0RX)dbsWW% zW~NC)@aLUnVC;$xEK;_c%{0 z$@GgfJ|W6gzS~9&l$1a*8e} zZ{OA@pGnEEYZF>4$;Lp&-k5)gXaG~|n6KK~aNRT{dfr(VW>RwK8h0h7>(;YgBAM=N zw^9|o#V(5}DRm8llCE-ylSfE;q&iGWfkg4V2cgqnK7^Gp5F81i$$197oJqr!D`?IF zDkW9!K(ksFu#jB9#{<&pT*E2A;JgI4OGBC~R8Ak0k~McwWkUu_Mm1Q@Cu?9P9%dRL zlxFL_!eY;JGAZeB2TLv`mev}UY8o_Pq@l4M9c2GF6@t zQaq!l(Qe2~g3wI;Y3|FTfZMxNGbssm2YA7>-+-F%lqZ7Ae`Sz{$yP9IDm#;s%64E_ zt%xqVk+w2iE)7MkM7BBVOiGU05!vcCw8#ko;(tH*a>wK*No1%mkV)qWjkDS1qwRasqJgV0n220iEGmT zApC)~Q_vDvScsz*LX>6@1x=BY31zJZBW$y2Xj%o_?lQ6|X<7$(PGk#!lhnbi@qt-q zdmV{}5#<^?$b&|zfpfj8-x$VDL(VG9c1w~?NzOW$d1+zBI9LsQUUaqG#N-V4AK0i6~sbH!+n=TI;B$+0@w#dnC z^1x?tW}X={f^0heHfuLP*-jI<*xqV@Jdj3V(bfeTFR?Qg?=R?a8PK!LBeHQ1GZm-f zbM5=QH+-tCW2n4tn52PT9 z1d&Mg;j_GSi6X;v=@?o2CM*hbXDL}Q<99(N1T%sH4WvB7bZvqe6#z{)2)xus`4|t{ z>@)+$x;&d^*RvWIIUP@@Iax6C;D>o9!3+$5lXfvDYQeX48o}5acvW+Tozu~=_T60a z*-rDZz|9Mg&SN%BmyVCMZ_|>`cAAd`hSl-luBe|lHTp9FONe5+c6n*+p3A1AUF}=1 zC9|+>rX>nXx?L#5xh`o| zM-eMBIZGcUq=2h!rL&w)fAk}Vpl3rWQU|LWxBRncF z8UCC3k0Y1ae!Ah?aYbAkcQvW{Te=DxXLKnTl|+Z!V%hb~aG}G8=6iKpMS; z5lHDcTKn!H`D~{-TBId2gk8y%RxtIE2eJSUoT3wjnWxjSwf0Rx6rj##1_1Hk2T12> zuuK(v)FH!6@*YR=&uUvQ?^$rur2?BO$#t5o1*z3II3eZ07%p-Hqq@ifhCBeAY{3Ej zE93cGI?6V0&u4O-rfh*`bri1fI(%|z_PVN_N;a2~>omKHj8<1LqNY*8f_NdBp(pusf7o<5cYFI9jVl`kp+aPmZguWV0!a`h-z+P@Y-5r~N0lC6qhh>frs6vomv z=b4Mg{9B|ZPT*?O z5H|M!Q3i5q0LitM&@zI@C|BM@EO;D~*5hGg@q~>F9&!_A(8ldNGT%N3WH$ActH;#F zBFmX>JG7COisx)~&^i8AkEjKORacUeFbR>kpsMnWGDAS(V7!DQ!p4N;PND`*#;nkL zL0tBgV~wuJiBzwlEjK>vk-S=8;i&XWQQHb!k`F0I*Bm3;$SHw(&|d@6mNyYx&NQq4 z*=egD4;-bIu!4pOE>I^snG^6RhU|cs@RF4{z7*|RQFn{T#q+}2Bb@wJj|>L5mCKT$ zrHY?uXw|!&bW7AEGR}sMT=%HQHES(}onpa`8gB->tV(@IEp^DLD7AzY^ixMoJjty+ z!l|A0m~DVtbuu|>NC-}I)-K6}Mu=oeRtR!tw**HbRc@%l^@4gNxmHHl_9TDOoJJ4Q zZdv3d66hvECrQ?$&K-nSx?Hfs-+NbcS>2SzHGDlzJxVQM7Z@RaK3N`Utn}&xw=i#p zW%Trkq`GNICvfZ0>5j-&2>V$QkJcb~7KCl1S{?5l(aLJ>eUWnY$o41|gsnz9OkyH% zd7z1#D3&C5Rr9)OG~aJeA+{5P^;q{bAa~_XI|4oBda}|LdgK1uwBj%31gafj~+lE?5$}7Em{sO9RDb`_=t-Itis{Lcu?# z$UB4tJfkKXQGS~o_3REO*kXcdr|#(a^6|8{x#PI3zTsi5m-AlSH!2914yxdf)$`>&*=n^h+(GD* zCp1E<%3vy@UROiH2m4Yrt4U4l%Xu6Ka-#azicqaEoh|*Y)S!k#?HTh8Yo*7KulS@X zN0VW%=~@Uy(Isl|oq)=Se&;3=c`uGz1In3E?AJv8L>yY)pDI^dDP22zQRR+WV(d(I z;6d+J=H(30C7~3(FvxrFURF8Hz0YReixQ7QU`2nc$cVHAInU?_4y+v*T6cu=q zfwgL5Gj-;hU_eLyvW~J$kyn&aaJZ$k|3u_R?eMM@?OMlEM%)0Y8+(ZB>{3GB^fifF3SNm?RH<qfP5V<;!Zq!oRpCDFSXWb>17eVX*rm|XT zNYfKg5fcTg@vWx3KP@aG+Pq1@ix!R&F)LyOz64FzF7LF;1BStkSbWg1BerqVhk`#X zEMnX7U+|)Zqr|pCUyBV3i7O#2{uCp2Z2W4^x7P^;FXGo)6X5N!J5R}2h={~m+YpdD ziUsf#4(MlrvGAt`Z*VFkGRcN!oDeB^k;v#K92mqnAW;SmhtaxY8eNEIo~>$Ca3jo% ze%1)BxYD6d_z+>*@R%0Tg7-*_ctl`n^{=)1(h5s^r3R(bLL!0f>e2NTFBaR;WY}xE zDYl|0%YrAHU2xNz*WPQ5)Jkd#G-X-vr>2!sLJr_VO*?7{JAe}fBoLkY$s!~WQb{z= zq?@5aA}j59w98-?yr}6YKvtF*C>bBQ3G3JbFjmeRCJzk5V}HIQy6r3Yv&~{Ur(k=r z%~41#-)P z=;bJpc`p#Tt!4vi5>7R=_Fg@LypXsPIutK930d%>m!l9^Wl$sNeAvem$GX{Zg!iJ0 zEkTn@)$p3qiT!S$J{RKoV~yD+QVU+Ju|=Au$J}4^p#6>*!Zisg(gUrLelKw4Zs~+Q zH!YXk;^xIUqpD^BY%LLWNuv|&=1w?~Z8luN?S#FEW{uFQaSL`=6Tc@}Wi%_Pl|lpe zf)^$2s3q(IY(3WXBYhafRGh?Z#vy19yWqt?M?te}zn%CyAxtn6$I;18H{tS;Ak3Xf zU`~!1zs6kfC!EE4PGjT6H%CE4j6lSOKtyT11YH=SH^D3romR(-Uyg!kwK@%f2(V~~ z{)DnXbXp@XJ~;}a)fx>J-4lakVBM5bXr{?gIu0Imog!z~b7*79;lH0)kUCw67lRyy z)ap#y1j}@JAS6LROAcvO4~u**@ceqgnMgK=@{iMgcrngVV0kYPvB6*y!qlH_7R%am z+=3U|90fK!$8DTt69U$sw-&JW9JlDjTStMl=D0X2(a7+?si9GBOdmpYBJopLd8H?^T2r&BI^@#!ci z+$Q~~opRBW6)!uTa?y(w*9gfdfvFbgPPv%KqFd=)DaAFs7nSa)CF}xDl=qS7rBo9D z)H6LDF}^k;=S8K2r11CWy9KV@Jr}+B?kKpHKR9rs5G1<{_(%Zs;IuI$3^Jg(Y)Dbp zi;2{D$Pw(OyXeJ_M`OtoenHU;CW_IF_hu;3 zjNRfFy}0%$%~&ly;X`Tk?HINZ#d5NaAxKlItQkH=+u+Z&3sSqqFM4t9QAn*8zbi=ym$ zeNl$fH+s?gQOe-Gpnd41GJuA$shAomYB9ZBG!*=?I*Y%e|FA&x;Vconh6PdjsF))D z`1(jF4e?V4RWU0W~cE2{bXu^X(kcY_C8kjKdENQ~^5YbS{dOoIlXP68Wu z%d$Cf*kI@=WNV+@6KE-HVLx~OiM|I{^q)~wLU+X}dd(;twS*N!;m1*uU8_yJMOR1s z1}BT!auV%Yk)1>Q45Q`|75j#m#d?zqFt?alKN(t=qb4?5&=Og)TLUZc?ka{F-N33h zAJK{o`^}HbM-QExorAf$r{OtoOA4)0k?C4BeHV!c^Plv=_r@KdJ_?+FVk za6F^lge6u5mXGMHNT0;ZnUZ>AOl)9r@r;{O7Zb-mhPs_BTdFtl(F$)CsVvnm&^f3SKO=Hhb(Qd~FiZ8OMNw)AE6AZj z`-=u=$b)tdVrsIyhx2G^gHtd#0qE<8!{k!94G%aiSK)fmfm%u&8JUY6RAuL?QoXrR ztg5VB<)~_?z|eBj{-Ypbiu)n>Y9tP`FY5_rdyQMFH%W@coD*C@oVVE^c{x+w(;?oS z`MKmhH9`e8C0?pGHHuY1-c-Q|d4c=mZm&9}_;HiguoF7PK3X^WuFx3{#;dt5w7pw|jN*rJr>UJx9z1fvk zc({Nq*cIOUOClBZoflUv^#)f_Y6&YSecAGLx0tdOKf=;3;AHB0gDa3)S$P48xSuAc z#eaWAYuFxwmg)`6(6BY|>}CzqO0dAwYc@*4PrOViC63|@{kqXwZwjY19FEZiJBfJ@ z<0^%4600|ii&9HiLFtoNtbfI1t@sI>wz)lSFV!2X0nHk%|5P#c)1;~R@tjtvJ=ZVQ zo6Mn7Ylfe!(r6;R`+m8glsJ?#V7u9)-aJkN4+lp-dyz&yr8A_vCaKbK2a7s=e!F~< zB+R0f4^5W$=rfJ(Qd4H7_%WTe3|Custs8Zg>dopLgw_gX!Oo9~b2(QjA;Z@h&PAyu z>;iqnXc(CXYN)QO_yOB9cn^a^Q1q6M1#U6ie6dyaMbyZt2m&{iQ$B80xM>IzoCvlb) zaz>{Q_ZnzLNo)1yQPM*C;ezBGl#UG!6hN4SqdH}AUW`c+$5|nePAlv+(~1IVwa2YB z-+{#h3#gDAwuMtjr$n4C!WfbD{5G|#@Co#QMs)6Fkiq43RC7H(!JmxNQtTaTq8!(0 zZoEcZQChMZ9<8Mbf)vc)Lv9TSvo|=+88KR}F+BkK^ED({gNrpq&8f}{Aljw0QZ#JG9lTq%?c>>Wg9ui;V@ zQtFh2lui_vHU$-I!D-H}$E+MPzK>e=p9hJ@I=lSJUIU>hDB)dx_^l@%Q1lWgVLYi4 zP{tm#mc6Dnv3RU8Ab4~pZWC$oH4>@Lu)No4>v@lBu%6u)mA&RQv1n0!;AV|O%Vnc& z>pz(Rt=$%ty+$*!Xme&zksYVVJ5*2d2-$P2w;JSQsaIyZSNdyRHt zwPN*PKfYEHd?kJc$~dEDy_GqY+01%_6gv|5EwBkLzeYpqx13Fc}Yftx@)xZfInAGYlzB z#60#Pv+GF57BkKB8)eG)(MCAD-J61zy@nhP;IJtN2`-)Fz^W4;FL6Wd)P`5eXI+;! zOc_5{h=S)7Fs}(i6g(0~5OlyJeG|aQ4q9U;Q8|&KcOuHYgJ{`{r;n1;N-tW@R#7T$ z$O9Q-CwULq@yh9jj{V8>lDhk;6Ej|9dX(%|^h9O@Q^XXFOy2pnUD=Bij}p;ZUAqbt zeWLPyhMYe9vc0e=d-2QGB8F6>-4MzM*TmYmCeH!~W&yxTmI%a^c?eFxUvLYjLD6M} zdSg1gC#zg`tA`h>tiR=9)eQ0kGU*(H9yCQWR?HIM(&qyg45Vm2M2gngsj57~mY%G# z`nH$FDwn-jWsT6vHJA~E1TFj%FA+Py1)IeZ0b_&91rpK&_&AkMa(!)Itx)$urbfIM zPx2KwXYEw))>5oq9knzI3d;rBsA=PLUuY&W$|gc5G`+}Vjqv}Y(DbLDE8)=e zqMseLgk7M&`0@erK!Tyx;MyIvCTccN_W#a<$nBcbXHXR-w`EvokROvY{Ha?J)LAup zQMXZo=0u%A+IIvUD93a~hkGZVkm)IeB%ByP{%ouOa=Jb*HZ}@SJ^|2BIflqHQ_W~d)iX*B3Pq@xB5ZH8d1Vir?Eyy`PLy|s-X^pQ}O3u1*|f4xKpJTnOAivO;90c(#)Dqj3-6j-|dAkOG9@IzdXm?EW-$aoK<(n3+^F)!~; zuK6(UaWZv~>m_8uO5**QtQDjHw-*r=FRC^QI1N_-e7Fb?3{-&dzyQHSIl8wzL289>jaNfn+2 zir^Tg>{82LN#sc#uXOK`U-2SK9TkN8ib0|oB4@BX)1ayyhHmUD{PUS+pB(WP)&r0H^SkwA$+O9`kM&YzFwqHM|n^Fw#I zHAyc?{fC)s#06Ylw^EN9ja5$A9fk=y`J*{kNTX%NLGFelMgt>x6|dJJeXBCA+yM9GP+f6c1+Ajqf4dz~_ii`ocbl%mZp}bNn`fw(R0^asi^*s zkb1fpg~&>7eib_!N+W;uS3${iK_Zs0jv>k2LP z=-()x1SdYp(E!k}8qQ>k4wdutD!|~cb3~jPZzrye1)}JN_X2gJ8C}phW}QH+aY1Sv&xjKJM?#4rk(xI3Xs@xACcSeT znhbl7PSHA<0UwBnOacht>+=B(643FX$)YYUWT?<|mZXGe;k1@og_e3`wvHE#Gb_Rb za{E>6pJt7%;3eftJDFtMHMaV+chYo}6LyCIqBE?H6}u8~kxiQt)<16wRL2kMQRK0H z094B(+PWQTJY{aUx(m=dHCkXW6jhDDBb8x69l?ESv5ApsTWAD0g(?y`ijt2Fk_RqI zPU8;+k<~2;F>%wesXaF#)?@3ngP^}~1n30!VJWR-rT@^j;OK$@DC$?)QakyaN zv|Eyl|6D=iv>Fk=W|eMiqPPGaf%Qq$q-;E5svI@QD0vygJSmS9PqKHe!FBm~_usducI>YL?KUO3pqM|0I6s6$p<+gf`rTuyPC@_}I zQ%$Zhy~fKkT%0Y4IuOz*A~wf`GPfwgX-)k({3u1_Oy}3VN`HC#z?zXUE%6#>OaFFD zAUM5+KNBAXAs-E)RocB;urLCuRcoaWP?nvc>(!PG`u z4ImaILzCf9iMDTyRsHUUl4&WqKIu=jYY3Jn`lVrt45bLu@ysef!0Z}BlSr$(DL1sr z_vh9fMTAqX4oN2k0h==Hn%1bO@vM17j&Uc*8Grsf3Wk+zHH;)_)1(u3_iM(V0*{i` z^26a0Ku!~g*Xj4P|B*UyIsN6ZLMEQ!j?}!98vVKMC@fZLjKYEqKtO`vnbXi}gOL?= zDHtZYfs5gRbjd0D`=$!LKar%eh?5Gl{-k#ldMg!n52c}8rtZ7U z)RBUq7HRFKG3!rIM@egCN*ZS}8=gfpp?;!7Kch~x)dGn&t6Kf!J^T)XfxcdZC2nJP z+pN5OFDhlLbc_$l0}JsCMk~mR30WZi?#~7nW!*oiko9Mh`3_ki1vb!{M~|4Kzvxyw z5NajZ@hq|cFENw01{Vk}PU_H^l4I5h+5@QU)hbsrG=CFoo5AKwEIapYRT}c%f{uo; z7&|iqIP_!42y(48oepuv@cDoS$rM3{&LUN4q{>9{*z^O3u*mxJ#u{f<#0uoD<~MnV zxMat*HcfCA+CT?d8`d$L0?_oZT#L(SU(z2p+{n;D3aUADzt%$5pK5j#5jH)ZjI;ov zG$1lqNKo-{VFL1JU<8m&MP>c@<|sgxjkPZmc|gNV__EPhXA`MlJ7J2*PRaJ?gQG;w znQlp;*4YH5w;Q@m_R2!XV%HA5h%k@3y5FoTYAqJ@X>W&C@FM4r?H>Mk4oDN>*|3lghm z*g@Vw>*$}NkBN8>!*t7PIgwGdlVQdEec?jZpH_8XhZUghNq*DWuc`$jf5#J`+Cuiv zb16Z6rpXvYxuLHs4wO@M5}>EkEgpsooKd6W{Kj}|B86(|!u3`!_Ec*lY%JXs;F(|| zPBnbA5y02ygPdf8e)tg1&V`IvHw_+}dn^ads9QGK9F`aF>fp?p_Fr&1Tz}G5)ZiN2 zi?oeWMA-BsD(o~-G)0OYB+uyEF{O5b&h+w$1g+)Ob_<#F;$|I?In&xe!!3W*9Gpw! zXk8a~CptMVqBaV4*tU9zuG4R;Xowu_R%0EZIe*Sod8a$f$$4?Eu?Vby?Jv^enB*ju zq}mvqo#0^S|W@s2q3nB3WZmS&rEzl2H~3C?3Fvv(gs~ms4?%!Bw|f9IEggp#ldPtghOnI*a?(a zF@`f?35&t;Wen*SNV!m;BY$I}QgOvi_4c@kpE zlb=;M9YcEYvkp$nq?iqBk^yv>AUsI|EC|ne90*{me=UN- z!3a5pOu>7^H!ouvKLxaU~pmbVWO!I7E7)G0IibJ2jYCj&VzE;<%WUgQr_ zZ<`GUtCFuVh0fPhX`o^#l99GA?{PAP3gsl((x0yezCB0CdGXb;@Cym>`^&Lz@ZDl; zccm8H_PSeAkUe_Hd9mBEc&*Cnn482+=xTH8Xw)IDtxA2z(lKG0NNk6p+M@_{Us;c@ zddEVwMiCCw^u9Y-oB`yHa!6l;77rZ^dSnXsC&F=ldsjuyiwKX^5Ca@5 z_H~F8#8@9)rL9cyWO<~I+Y_9eKW&~B#Zz2!wP$et0j%NjHuk^;00=g0iOC?CVjMV; z>kd1x!~f^}8Sf|{7_LPCq(!3_@)(YXID|>r$XxC@J2i9uEVss%H^F!WVMpXN^nTB| z6r8sDhKAb$`g7V2Y`hec2G*nnq`vC7(`lCABOT+VbV$bdJ(oyWyRPZ(#mxJ&)=@Bc zFMzR)7$mokUu41j6%-Hme#}hN@H0 z%HlhAZ(ThYRxYn~fvm#p%HEDQW3u`Sav3o`pLwjg4GDj@AYwxnZ3t zav@`?mrvxK!;zG+M`8KSu+I(-tM?cx^5JwOUtnQs zrhM|9A!;2(Sd|||5H7lIYLv9vBSblX)*1?>=2RrCg5`7vonc`eSXPVBCNcvH)AE41 zfdCjDfFGN)K}i~6|K=pajH!59h1Y2)Iz!Ytc&)C&7jLWR1()Z6eBWQ*J5U}_PBm@H zOEU$<6SD>{;3Q0cIyNVNE=Vs?GP;&9&({qRHB1}Vx**uRx8dd!iCGh}!wKa5IaxqA z3lggu>%}2C224aGZVC)iPJm9I4{};YT%8Z$`CN#XSlw*u6Iodcr&HSf30aLZYnqMj z2{?Em>4%pHAE49h6@Cdi7mj&Vv;j&^B?VNw8aYe*HfnV*WW;w0E;f7v^}Ih9>nJDe z4*f;$1LOfL$c-mp?Pww|pMr7~=^fMhQ?60cTSj(9Vr-bvQA&9se6bjAjSIxV@+UI{ zmXnVB3D_uDycc-oaIpt6x5+d7NXHyrmcS(E{eMm|BRHIP&Yx_J!jTt&)8f!ki0knX zW1~by)k-LidHla+i$UqT^4=;-HJppHf*j}&yQx>1KyLDcWu`Hs3AMTC~3^=~}`mc-Yg#<6k;eMP(Y&M+KE9sp^y8HE%~r>Ngv z{T2L~&M0XMB2f_HT3T=Ju#kfI6yfa^Tfv|Bj1t~jtkK92u;`nZM%C0F9oT@Z+CZ># z-XM8qkZFY!jHsZp7i{Vq%Uy{GYpteHrK8abDM(I1U@yVc7qYs7z*>EgKCw%+)zp1t zAq8bAGTKCJ!Jn~=@*RtaC3BMY5!7KPhu8eXAZ-dMcuEo8;ady-JY|&hVZIdzxH^T5 zm)iaDa_#v<$Y6n`LtY0AttKIX?KqE%vJBy2reVbtG$@L&30pNs>x!$P2y2PhDzHF~ zzah9@z=MsBP3wyDTx}Qt6RAMn34lj&H%nXAJBV>YN%6uh&1M^&`7_D{Gn-SciHSu9cr9bz9k9h z<{*Yw1syuj+OUx06oAH$tKld*sCu+K(;qk7$k0Iw7E%=;x5WChkd7jVSj+Tya%_o> z3KL=+YoiCOjZS$_+nx7}IY}YKCQ-rca3=l~WfW%14Z0h%H~>v13PLUQy66;>0gRwF#rl2N8c)J-W`csop!pAfNTFm{WFW1I zU^{-%pM2EPTJG+V%(`QVRZKxqs+Qi#|3!a_(t#b$|J#WB=xk23Q0u90yrjnCW>MPW zC>gc0n~#er7*J7$T^Ne~3}}=x!i7QiJfO!}abOZ6NI8Ilz)YnZCW_=_ay{>HUX^_? zygdbHDsUZ__vcKb;9AbF+c=FGJ0tv10R(W4@(|?!oQwzYSt6YGjM`sJ!KeymyCxL< z8PzDvycg7jL4pdO#bDSJX^ka!F$H@n(mMIypFNF|*2@1{TJI%yF$JwE!aMojpH__$ zKAit?AR28P2=74sM9zqsHMAFj*GlvAu@y}UM=|Wc+R2zxXA6!7Ifa^_?Tvf$ z5S)OTxT-fBP>d&G4GlTL>rcH}fvPox6~TtI{RKX~GX~^6bOkzMnNR5V0>s^;l33o> zP>B=%{%mbH)WM53v^(<>g>e+U@PIZ@1U_Whzgx7C$P1eaal1!>R!muOA2CIel^OTyA}P3X-7F>cNiq-uxuZB zhCO-UK!+zpeXF~eg0~h3u6@0y)KL&DOSg*P=pP(BL-j0=^a0+}C+j7xPJ_fcFG0>{ zQ3RIVLH^K`+Fz?v4&=O!L=vsP*n}A3{Y8JyO2VHykJ4XGgbN~NxV!*#n><5Jpd`XU zj;^9N#uXEpZ<{d^9M0;%pZ<=*kvDNT{V291sez49P4Z`7X50M%w4y(=tsz(j@Jm&s z9?~@y;#puqjsdf4X(Ex+L8q$Pi5+fhU~Edhw|qk6|jt&vj`DQc_MI6mmlPHVX> z&(nzk8<0N{o-o2(-9kjAAfCg&$5iwuo*md>bEVI;q#9j5siC+uDnnacO1y?cXa zQ#i{pephKlj zeKIwa^uukYlAMSy`LpGyDeO2p&Or$#%1(E5qoqW4-NI>iDOYI?l4SrhSQT$i5eY5JmV;lq%$lYgYV!ry!^dfic@xy zXS~PD=~cT#^<<@ZX5a7*doN?jpUv&oksBng__Kq(=k~g1bASzm&+} zo48%W`;+$|51aePjsAG*UW3fGSeyMzUW7f7uG(qcQe#}qM=!tw-b;1E)`R7I-lMtZ zL3?z!8a$EDH+A6}+>6TB+W4sro;V4xa60MUYY5=ri;({y z0a!LMQ1Tii#KOv%S*(+=hSxG1VW9g|4Sz}k{P^jD%ZmWtUdxrd<_xj$^9k^g8C!x# zgTa=qHPBd}E-%Jyf{hXiRJ+&Kts7vse8kuc1S%)+{DKYmFusk3f1{Mf*ml zDun;^0N-#HEMC)tSd`WxMx(^Xr%1Q}RR;;#kwUL^K;Vp!ld&(S=;%qZum8{iY1_QU49U1+dbd~uwbg8>tBO;7cu6g$DtD?F#Sa#uv$WHrdCeG- z6%*5_C9k{sigw1!14_`P8m~upaHJgNJ@llTU-Dm!v-t16uR4p}ft9@m3duT&X~TA? zp~feuzCfQM2l~qc$sNG@0M7v2DyKL}Fj@)a#5qGmCa@c{ve&dBSqU*+TCx(Nl3*It z-ghy=^bXZp_8KF^qSgn(B|RB6N2k<`J6WD-`{NEePCA_|%JHLx$YhbVhb(2UDT7u* zv!LLmeiqZxwblT`L4y@HCmiqz-UB-7(4QbNpe#<&Bg}*pQBIsUgrg&Cw|-@>sY9|R zI2!g7a5)hkg}*b!q8vYch_=5?>y=XuBDB@@vz!>(5A}}}6aIq;R~tTeX>okOf=`9S zaap9q%wzkB#&iq8vp|6y!&wM|X>uyp;;O_B!Jo5O+vKPN()iv;IdRTl&0p+3zucJ-LtcaljN{?I9n0^A z{_I9M)kMPmDtNgw6A564joDYUF%|Wm4C6R;$bY()S|T+;OQQF#5S*n zJ)A1!KZ?nj_82ZNfJ)hka_S+qQ*c{Oc6JEh_s*rdS3|M;l?@F!iQIo=Lmms{cVIP8 zL--Dv0iB{DJ^r@hDs=CJJ3j3?v6%vh0eqWN z`J^scI%N<{?uCqKNHO9mg!WvP{UDM=Cg@O;j(V*HCz4_auf%DNWn`y>`pF&=p=w)h#}+AgP<(+CzP za{b3NQCO@Pb`Y4W%M{}lk5Cf(IQ+1H>8>Nluw2FO8c~m*b}^ zM%>sVm9qaxr6_+c@N@(v(g^^vR)0BRhCED_2ae)9RCuG1%TeA7u7)>(ldEyeI-#|8 zLH}h@;z-3*h+7r?hbgEe95uSPK@ni;zFsJCOk&}*W2@pnAkjFji1JIAKT%bzq?nu( zLshZjKR9ue6Ltr}mT15oqCzLS7FPVfOpz4`u6=#J7mGooAXt`etHobx2tG?adzxAC zA5d6BORZR)gtigENt6iA1IbetwJCB6G3q2MPIl5(cV?_g;xxmET zA2nlD66Y5dPRFDDCl?y0<;Q**>qltuDv9$7o2w6hYro?E?FmN_Vbc#3_a`I{tOYqC zK~d%am6>N#^s1whV%iY?(tgE%+7N}nGV0J80_3I_A)b-DE{xa&6&j|6zdK*?A1_3~ z$cf}ZO3^u1cYJ%w3FILFvF@xMH4G6yDKKKm-W*Z!pAT4jAcogmM5kEZ!#kpS)K#Ael`*G85{G7nW>7-r%VS&bJMd*T)c2j&| zBK-B#ia$&5C?ah7*tAQSu*%_~UiwP$JqQ8hSk|9Zj{;=bI2jOeUk^(ndmZvoXBl4c zr?8{2SgClZq^fGclV?svNok>Yt~yj;#6tGiqvFq6N1@7#_(6g3K;>noM7lX_CYy$@ z_;b!tfM8GpKvQdGax0Hf9pg!3qdMBV<|_Vtv9&ply2fII;)XI8EK;PBNEMq3aciAF zON>gI#WdD{$gc+cRAfOS>umdUr8yH)PSNAXYsi+4a>8nI$O81i8WeBh8Qm1zE2P3$ zQFWB-#gGaq$Yp`*R1AM|ISQ&(F&wBVAf(`w1%l1jR{S~TC_~p|dgUU!GpxxZ*-10@;B;V(Uznt93%W&@Oii_?bu1|2%_f3|U+sgwH zpnvF03GDropIK#f+wSVq-rG$by93wqfG9Uj0V8&oQbh1M_Y71pyt(Bl7*-CAf)SfE zQ{ao`b#$APvu@F%ela2IQO6O!#mtl-m?`hzHo7VgmiO={m>V8AFUYa1h#+(*4()P2 z55Wno@(vf=tM&{p0)E`aCT~;rF z$WCB;vD&dBTOmGF91%gQ@ni%`B3~Sq(eW=Y(l}N|%hTLoF=X`QdX*Bb1%&$9AD{lj z5ic*g3fw=cLX(ZijpQJ!1U4##`7^r$+D&0z%x)Cyu(Rulhrip$v$#g8vc5i{ek;kl zS+RH+*J;FdW91>XSpm>QIfdw@+yvI95;nSlN#ub|g}7GqqJXg?Dhb<8TMS1f{;8Ni z#EsEa0AHWqF8ZMe|3OhKh?6%<4D1S0Jr_|sY z+>1<(QbgGF+`1Y4msCgzY z;ZOHs9H(#gqI+YF!+|7JAk{(1GgJ6PqBm?3r>pj2dt-&qi#qEHPsPGadm0OYcyiWA z0Jf?#UX(1-T55H2d#gx|KYMr=2@8Uc9b@liXpM&9N)NG)1gV+Q1!nPbb6RGya^h2FSC(;(kjJYNu|!wF?<5D{-*k zs)QTv#i@L1!nkyP9SE`CbhxZ(3&ud4cpGqDbhq7TCIjBg!O_!mc%4 zjws{L3_GyH*3?elE~?-GSHy-!-;qhd;i{j@by~rUKZhG7GKnaNsG%Y#GFIcr2$B?} zt;pzf8~&til#IL=$cSGdBhF<=E5hSf+RgMA0M!pqCowT$$8h4opVEy&U`0l&2&%gz z@)j|S@bpB444t^?C-H=DHIg@J&Xyg;M^n9nL;~_j^>4__8HTarc-GOyOkU=PtxdhQ z-FND4O!Cj1K6T2tJtp*+@zOCTWtRCz%ZkT*`TYrNpSHm#%@fWVyXsBznwCFc zr6n)EZneK1(faiF2d(}3+w(sE(?Jh?`N{@U4}W@VDh5aq&T~e|PZh|9fD`*^h0#zo72`p!E<8SVa%RXHFj1)N6-5 z_8!-xSKmn!r;eLAwY{lBSFJsIwT^3_G;PYB<9JWpQ@uB2+}M5h*k;mZvbsC2kOQ+;2^?J#g;%MO#@$==&%(S`Qxx%g{QiZ&SJSVbdH5VO{yXVl2PG0A;J=QJ_dS~$C53Y7|pRexz^20km8uXj}_v-WhjE@h< zel@w@DGwa+&h0Op_3xdZ>vM14$H$zz=&oajTr%fhE$bXI>)^H48M?$_E1cYWxls>~ zS#k37H?8r`;al9_sk{xG@U!?PbR-naAjhfRF(;lH=K9>i@nc$yU%JH zA299qO=qn)#d`|7-R57~XKna#WI+w1G!p0&i<&z3LVcllGB?pghSw^zUU zS6jVw(%;{jcf-f;OzC&r0c$+Pz25rx=PR$U@4CD9 zce1w*Jo#8b0;hhj;Ejb;jSv-1OByCYDFN^!7d%t@iL1^Om@E&uce7 z_7{cEr@gt^yM+Uxj)XxV_IO_e4&YQd6vug~x{k%)YoYLd8+x8jQ z@BZ(H?Xdd8r;K>`#Z}+^OYi6Ry?*{NCoi?#ZQmcVQUAZLwfg$&&41_4r+m_1KL7NSw;p-vzr#k}e&pA$o%(ds z6&vrA-SCNjG<{I~)%%-NR$Od+pNlp>b?L)5{!_2E!!|za`v<>y^NT4|S!<7q*Zt%jQcP}?@!h2W#X717VjXip7{>jsy{9@AG+q}Ejtiiuo^W_&O zzx(#wRnNZZupc&_-}8>SNB{c48y~v)j@x%w>iwg?$UL>$f5v>Y>%h4;J%8zbhmKnD zqjk>v_}9Ched8MEk3GHL^p{WF<)5pa{rW3QU9-<(FO6BOe{R(9a~?eCt$CYX^l{4< z*POoCiK{Jl`m{k!r~m!@ZF|oA>X1F}9J<}wpN!tA@byhc{<=qD?6-UWa@5lsJ==TK zJxjbc;llIgK02=S<$EpXFWYOUEjI5py}Zt?w{E<~zx!X<{QRG8_Xa64A z^7cayX})axOAh({3+vo>`J4k@82b84JKea-ytQswZ@}Lc8#3NmK(p%*ZJmy=J%hz`(?{+-Q$NfA35Ty zO;_2jyw&BOUU=2H=P&=#kf$zQtmVV!wjBBF$NT>A?GN66`5l|y`_-JMZa!{q-!1>Kf9ZGEUA)}RhwQ(1?$(26%~^i*E5E&X zov)e(AGOh+`k(yA?|M%-_2?z1pa0TZr{6R8i>DVq{mPHVfA;V(Gq2s|@=|CFdqU(r-)Y^EpC zI+?yAWhi~7@6~7G#7U}7kCwV8f4WtkRQn$FggPznNW;S+DZBE7ksVK{&GL@SZ+S=d zJn#gWz1!;c3UWJ=D{nOxmC+^>)*EW-;j2$eY9&T)9PcMXjml$%>h zO_{7(hh)l4>PH-!3zf1usSo{3TT`zAlZH=fQVmkiJ@?sTvT8~@mh@&TRhu$*U8-`v zS?RWv&ncdDKEuwq%6PO;3Hvf5;#0;yPOY0l(Jk%9#t7S>m7zTYShD;BfOrCgyYo3AvBR3$}K zWs=nuP?@H>jA4C{Y`bR1V!qU@WNXT(JvkYbwu%LHAB$|Xx&j9a=3SOx!CsiID=ed2 ztCUeXQX-XQOebBjv8xlB%J zFxOPfX4SvNSos_gBhp%JFGb^YSg4emWm9!FqoP64XKKq!bEzDY*lYNqRWi*KnhK>-v$`)qqzZ#r4W|%FbR$zpK`rO=B34P=Ybu*-Dil;~)Df#nNLen| zxLOcIL_xV&N%8%vyJ?oaO9eIXXsOh-X1-a;&jxHuzQ&b=ntaN;awB`RtlpHT|UDGDlIEU45RQ#EV}!|_|& z$ke#Bm(Qs$a#vJ8SILRN^U~Ip@{xJPQD8WZjlD`;E**jTvMRx3@=e)_8gVE(H?MZq zRVwkNqod;#FRXqA&x~W`BaQ8#a*EZ=t6d9fF{L`FY*Sv<-%LI_%LG|DLaas?i(FB4 zDrzB_DV3F2nWkK+sC+M3tm>`yENz7e;I1`LIaM4=iu+d@YF153u24}8dyFYN>{yJ- zB#o~YIkkx=qd3;AYE%kMN>!=@h*p;o14_0i=^9@vav9;yo3cffN!0i%msJ@g7hU=t z@gg!@<4Z-ZrA3uir90IEsNqSjrL6dQpHd+TjOyHLJNg=s=FUW=m?tU5+=jt`=2IhU0hM3YN=ZMbrUu^Lx4szH!ZBv?@u zGjV>Q2GrgW#o9%S6_6>xtt3ssAZHuXv3Cg8qAG)sPfBfSqgh6E1WLxl;8eHT3oRMp ziW?(W5S${PTEGWwfNDK6xfsE;m+AX4T3TyhT?jayN^?=M>Di)+N(Ejz&xBQuBVa_@ zRZ9|Gy4VB2^hE90@Y(~w$RyCe-UFaE8x&QNQxxg54n*_1E~X{*HhT zW^F(HrSclbemTEKuTK{FGf}@8G{Kf9Tq|HwVr;VCdQJjU4csrpolA zk6U=alT+XBz5G9){w{mhx(A=V{P$}%eO7$;{3ph>E^_>3EB8CH&zuR)% zgb6Y_U6Y^UVH!eFK!w&?7H<{p1Dru!Q<|oyWR`E$_I_?yY^qE{@8-HqA z?eEL3KJC6=EH!Y^o0h)i!Gq4c|GFNZpELW!v2#w|blf{1Ts!x7d#wHJCVx2OoAs{P zZ1VU{;Bt-sXL$i&!9PTcIoxr@xT52@{UP<2YovHqRWO& z{MpINZ?w=VqvnjBv)C77K2QV8gV){c=ReHKoKW0lnZdt)=%{smcI757Y&K}f%tH2p z=SDyCr!x-y=i!T={+IXmxa88Szgl$Fzr42D9Z#M*V!zXl`gQAbE9^UB=OM$-oIGOq z6bp-Bj@bO3 z)$sYe)XTf_~*rE{cG>9Z(jM|pHAL!kzwB)@caG0y7rN~KD}X!RkvJq%IM^-uf#xxYB*(pzqOaP%_YZhX)2hpfE8qlZ89?*7~C_t?23d))SyPrsYp>+G*@ z>v_=doi;o4zt3(wd(0~j3_fU&tJgaJy!O-Q=I8wR_~V{@YTB!RnEw9emtA?xA*Woj z^2Im(Ds#{!8xCG+?e$N3?bUP7{@tvz@7&<`KOg zyZv`_Z_94+pOs42z4iF$k3YEoj`vPk<;fk#zx&EVJKwp_Zg0$(eeH7DSB~iY+qbTo z^?!#x@`qvPZua5^cf9zE=U4q|vu7{->+E$eIqbIC_utmC&wG!1~9jo#|7f1Gg5Tf0tJ=Oh*iG+*B2LG zxBZJP+h1_}&_{oL^JjnAYl%a@yy(#tp8aCOEjK>={zDGEVB`;*oV@5}I{d1D`z_9z1d7~Wj4mkIqW>=NpNLF#aBPh-f|8FS5`CIjzhtf*bR-?m?L&25V+{-z^m2-j2xj<%i)5GBRx#Wz7UC%vw_k{8xI`5}!SCAGHsF^PSJf;& zlvT5qlKMiJjJk^@*}NE@zzgx>3K?2^RGqdlLRP!gl4_r`%H}HW)QnlpmetU^REJYj zi#oSm%^Ke|>N1W-aiuB*0*#H>p?*bGIMhdoe|QbPq(3zHn{C1q!I&x)cVuGH@1=;*Bp7Gmes zfUaSJ1uHq3f9F(53zl+4ML(;Z1<|6JHdRZ$u;L_lH%4)_&``rkwb03`(NIBcSW#QV z)Sm75*`y<3l#J$Lt})5EP*y9FiSxTM&m0;L0CvNbqXp- zK{%|uUjQ|xXN9Oy z+gx&LFODL)6k#5ldR!Sp)L>Q(XB(Y=^5vr1bs!@pH4stxH?O$Ma>=jkiAPp{Kf)lq z)NHEpLMnb0k5ry0O}5%Wr}*iZ!l%^eYO;D8Z%fDqR+oFKA8y@Mb=)84V=6Lw_3Pm)eZ?Y zPHf5xW1X<0$hCJSTya#{YEU}CzS@g?9!tx|HT_!ZQeyJPaNn%7c- zO|@(hO-|ONhP&A0bgZFrvI3QT395I^=GEw5de}^S|6s@$_BJSn#>PZWmY=eWZ&9(J z*mT)PQO?JYzI03|^G417)u^RmArW-5IaTr0W=>U=RmCf*O{l7yE%{XCs*DkeY5jM^(e_z0mG|#7^B8mx*EVTO)sd~iR`Uc`(&H4YNuT$7o)?P6GmvR zfwiL}L{xZG2TyF>$x829h%drgwx|GZ;3_4MPSxSOq6S5-qWap1)Zt1wIw2b!g8uaz zEB!UDTm-QpF(K;{C2m=56jM}^T1>^O&y3&5-Q#NeMZ@Da+oJZMD)K`{#bxznS?LPZ zTE#0qM98okLXtKnK7u8EMwX)z86BCLofP$#^kV36{MPP-(Decw7&;>jf^;v^?yH@F z>MI{vuO&SaMg$AAa)Wf((X3`vvsz~Pq*{1oBiUA=?%CpL=-}s=&4|f0zM9B>in44F zP#cYu2GxEF)vU(t-cj*lhm4~0LIe(Ue1kQq@^ppoLaBw6Xi|DrpY>DK+Tj&_?YH8%k5!@OUgo2Qje0YMGg7oCI)evK_YA& zUeGgNX{@c)USIJ?*>;~=qxMb*^d^?dCHA!6zV?wsHomI3tI&Iwg7{C7^Y&l&&C4Z?)ko58rv-D_{S4#$y*gFm0_%4mkC}9j`z8_cMn~efHvh zE3WYEZX5Kw`;{4`#E8G1al^iw|M8Lw z&z-dIF&93w+ZyA3`Qa7$Bko)J-si6RUF)gO{`Y~c4<6b(cWd^aGd92Mf|bwyzSoNL z_no@$&@V3>bkE*jemixqhko|Tci+A@d5vMm79Krv^Q(uw{^*pe&vF{U zwAW4tyl}=*_dUMRBM+`P{eou(FSOHHBMw-t`P*#!^E1DB;K8fQqqe=~u!B!ub;jEp zKXT6}zh7nJ2R`pq?7_Vkz5e*(p5>-K%N@Ap6Hg9V>%k3kJx@Bd zXRn>^Ut!4ci+=n@^WgQ?+Um0QUSsCI|K3J}+MoNZ=M%##-+unUqs#uUeROW~`|dyG z+KWC|DYwjxQ{S5K=qJZ7HRgxE9ChCRj_%iE$rGL)xA3d4Y_QlO2c7fQ$)(T#Fn6ne zjQ-VExnugg`|0}wUVmeY7he8s;nn&Tp4ofJi=SHOyCuFkYs}T}e|+M}U*GqKj|Ts3 zrMte~XjG5;CqA*z;VVD=_MG2e-{X(PgEl?qo7uNi+RKlf@b!Vaj9K}vX(t`}=WW}{ zXAYm48#TM%v{k=aFMH{UcMm&rw?BPks#!XLt{`U>{-v8c>wp`)a z$+I?D`S{aEopk)cXKb?Rkdp?VKKhf7T9yKQg&(olA>jc3tO%`wndz^~R{hzuoKPJ0~o$^uJbp@0daR zuQ~RrO_o~a?6oHi+WY+5XYcy_N29jvcgK`3);oIB!V9}zvib`Dn|=9|%m2O5+N16} zcEEKXZ*|a&XP*0fcGpV+%f0LzdiQi_2VjQt52-HbDu3Qc>43LuG!&*t6N6j`NZhE zx7jSywo>-22L?7>d*iHM%w8s!xuNCPBe(y0)7!^g^u+EDulZ7C&UX0&kNshh=coVb z(5Rgcd`&#aT`@Z!$ZyWh2kwp9rJWC1HCn3<>(%nV<4G{b=k7)_zVEn~k$Mu$@l_Yq zadPnSjvL<;v(@|Us83bzA0tnKD_8F_Bku$|1cJK-WP`f}$V9h#WmOidPlCGzWckLe z$P?TxAglQ0j&lN;gS!Q&(N}ONkU6+pK$hSAlj{U`3sB3?j+2AC1<3aJ>XrFU4<`pQ z2X_llLzm#3K<40X0omYg0YY9>uftY(xlYI30<0|%RV&yI(An?81Rc42y+5Nw%&M&r zS*2(Be!t%qh-&2y^LBVhgN2lD`^%I~tzXN^E^L9w_)OWVLWW6h#S%4&^Q>u7Ee!M0 z?Pe91r{aZ85OLr9k7&~(NNz%_!Kzei>_YI31U1x<{ScMB?^;_{LZOudao<=e6-mK- zO)=YQ4W{m*pt|(9FW*P0GQ8L(CpB0|^=;#lqPK;1%qf)?6-%XVF6O;-$b=VRB+Ld& zslF5_cQwh%_qF6k2J)@Ee9RX2C|!n^Va88yG-`!YR6B=SROV1yY}8~(-PAx$47?d2 z<(1)O7?q~Ms#Gde##Zc#`c}6ps_L5qibnIdcX%O26>N}@9bBLKsSC9|OnD`X?ULFy zA>Y@F=Wz`#GHhw<&TL&ACUmT23uSdb4RJ@6%GD@P{Vtvw@A*vGB$Wp@7&Y0Ih#S{+ zwI~+USKiddF;x_m?$o#9)u1Tvoyk=a2&G6`ng-c9(4&fLH9$~`R1u?ko`M=06}=OA za7$53k&PcH$c-6VWLuW{y1AnL3Ji`s14dQTupS#Xo34%&)X=TE>!cvxmQwo=)aWR7 z*GVl@!in4XU79YZ#Ew8N$iPT#O0CWW3u<0e$;HQsmMwxMrCV;0`*lbscV;Lksw=C$ zuwPb9xZIjSkw3AvHROv3kH(J_)ECaxH}sX~l~uo^3X9y8LG6Kxl}}YZQ^W`*Ht-HZ zLCcsgsND@}Em9Lwg-Ow0#;_tAc(xveK3n8INFB2yxiv$f;!#hcNM@E~4RXYe zJg7E9R7W0)wy&tKYjJCalHb}ui5O*QS=2RHNOeaBx#f^dxa7Ol>K-dQ6QuWY?)ijx1LqYrDcWut0!8;^QaH!FzMot7=4i-7-ataKUaWo4ION6#%cQ%KrAVaOK|!i}#e z8O0q})BqxAXESOqay}tho8h6BVNptK;9jVX5SHy78QH(nu`p0K6>e4>f2@&RAtN-| zz_QX&_SCOys2Elu($RFw?J^1p-?%a?9qz)q;YLPs-;BK6p{1kgRySKz8{YhqwMx|y zmSzIdpl}H+tw`gdY!~cky4l*{nXN_0u%#P$Bcl!>Nr@_CI@(#;+Toe4MZ^eWH-7P= z2;+*PMgkF2Z0!&c!+D!=WMFEatsT9#Rf8!t606S76lLZ9NJPYsX5_4$VZlZZ`6`R| zMvo!WUoWmAx5&8W_a86P|J75^So*y;$G$Z5+21_1S$3E5`Gd-Z1NS@ekvCr*`Tfri zpK$L6XI35<_3<9#kDkBlC*Rz4dv@xF>%P0|=TAO(*J&#(TUlww*(>io|6e~_ap05d zzP87`r{vDvy!73Rr7sVhf8Cew-}>dG70$e-&yv4h;k1$W`j+3H^`KYHtn_dV*& zFD~oZbNsOntl6~95qp$>v(CV6MqYUDXFdP0+tJH?d&-}N?0MzZ%X~C)(Q7w)|KH0l z``jC2zk2Da-Tu4uBCRKHa?n|)-E+c)1IAt2_QLZ|eLdivXU1km{_TtZZPugo^@cs? zU3dQebEiHzs(9VRe#`AJ^ycAbEpzcTyY~I}NxO|b_nqyoD8IPTke_|<@0N-EmU;iu z*QZ^6#W!~?ecGUXj=5mVJ+2>GKI6T22HbS~^UEG|#iPglC$GxmUZ*9AE?W5T8%WXZ``vLZwf>u3pKQaHr%ua5>TTT7O z*{51{Z7-uV_qN?guh6r3UAnY%SYMTJ?Mdg&QlSb<^WI+xm22N2b&f$ltuSfx`CP55 zbx0l_cYRcD%OXuh2O!-kWe&TeEx>X+w zo)JGx-&zwoq*ucH!Ts%>Bb|OJdIj;=-zR~QqGAe^VwwkkYuM)BLswflbi zC#|-hF~o9^MycPT;X_^-bE^kDdGP63Y@nKI_c1$r-v9QtXZ-Goj@CWrwHWe(7aXZx z;}~;1H8$Mv`1Ac6;+6W!IF_D>nKI3;Rk_BS8^ycY7d+}bcDnYmO>Yj)tWkV4c(<`p zc&WFxaX*(ntph9}-?k``%5PTk0~!gU$$b!w(OcLOD_IVNkvZ<*h$O|UwXQ#<#W&6JO0)M~SAT4hah)P9}s z%p1CBs{MxEeNJiat{mLjq0I7V*-%-x%rds`tTB3zc75p{lHAR!UCP{on+a#E=4afk zeRSn}F+9+j3i7|}7rLL-;yk%~kB$$LmQLm_IJ`f7*GT2KF0YfO_)OL7dg+dfyS0a3FHW0jOSeDx zaj;$IdG|6}x=zng_u4&Du|91^2DFISzdY&n#o^E6$4_ys*PZ!8&S8Lwf)MQpT#2A1 z5dQ9?L~falwIggor2OBsBe>sz9?{Jfi5qY)132oyD&iGPpumU?xX6uvg%uTKPYU#L ztf(O9OvJ}26$n5e$xpEflmPq+vG|EU0huiP1NF@iyW>|V6$l&iI3Saae}%sp^ElX; z$ANCdli!Sa91#5DSMWDu9tYyGQE$fIOkBG{7GfR;o48m+yn??O^Elv!3-xiLA0P1^ zY%?%9$#2Fy4mQyM?=O6Y9)kcuoaPc}M=0k-9PJ2l4d}5Z@q}R4fSGzDfzJTpFivwJ z?TEgvXsK6ZBt6Z=AnXmtod}@8MU`bL&DETCq=COr_pg|QzENH(A4wb#*`G>tq2>`y zV8R>6Ov18UMDG%2CmL%;kp2c`xx~&xZ&Ak=_6cPsl-_Z>aEng*MSb5|+?1fU!X&cNo;7 z1BsiFG7j~@LM=M}B?b`;A5DHuhA<2b9-dsND4{@*tcr*%009^A?*oI3s~ENpVETw0 zhpQsZ2|)ggov@|B+_{0HB-D+A(0+hhg^1zeXg`qVkv@nLpf3ruAC!^eXg`pV^i76I z`V#dVvLVjofy;rbB5crpKneDri@3o|(>ECjfR_Za4|Ka3$YpFXWFJUEBV?wT&*mf9 z2ecvp?;h4Cq$k9YeIO%+%rt|?3AJ4dWFNrUVuAi2$vzB3+^z{R5^dv=0D1||dh%K> z+)hDYPI0s!$Vgh8#3r&u4DF88NCIRFL|ss+ga1Z}Go<~{YeK%)FqlI|(jpQvlf{sc z)WSw!4<1Ca7+cVs_M^eV7BYy;*NhR}gOGi|4vud4fb0YAv;TA7X*`BP(jROFkxTfP zL6}5R_5lF^@^nD>!58r&JN$16S=S5#m;^>r(ht-U%775B!({-G0R7-z3d?_xIa7w7 zM!aMMA`l=E!fDft3gqwErazHPBAF-~u@nTQKM)cJNkLfpq7~rLK+=~rgIp%kpB1P< zKotUgtbhjAgc?M!qG?z4$kaDOGfeF_p#K2TI^={gCIvJgpd{ZZMH&%7SH8-rDn07l(Y1JTY1_KLQY;b?>0O$@XNaZ-IkMrFWtyf z$;va^Id9i49hp{HI>GZ)^sWSdX{VqhtMTG;{j-4Hf$vu+E&EkA`!iRDwV~}`wP4%! zgFV0c7Wny&nmu=YK+CohXN9OditBJmKRjW=so`x_=I!h=UnlYGsf5R^Ke#w46~9~e z%0|soF+^>!;a=72Pn9=jr~l~L@8WRdj$Sc2R~9)BPiS-UX=c%^GzGuqhq6xQ1&(xg z`FLmEG~W}&B?+ayPM&%B;bYbCJDdfp{SxfErT>spyJIoz-5e=JN1b!KTLtdlG@Dnn z>D5dlhwZ%ceE%^ECY&2PO}#E??&qq9W_^~~nk2kl=TR%()oPr53^=&IqWv0^FF1{7W}=M@df)0 zp32Q(z3=imx8|wdm_6>C4?YH;LhDv2tSgj$p1pWopX*%nt@A4Kcd#Q^=Zgy04t%4K zu4){jonIFC;8wJ@xx?o4FgJdI*Wz{4?c7e5ELWJi(KBs!TD%b#%`4Vc+!p-$cQd%fHbojrT0N<~MxT;{r?!gb3|e%$fu@nQ8Y z#x35=^VhHnzxin5(YWfHV^dsA4St#Tj_a%`SlX}@F2=@hqNFFJfW7rrcMty$+$p^8ao zpA`2|+P>q{?yD&t&Nti5Gkx;#hvq!f4yFfJzB#tOWcJ|_!~J~CK970s$CK6$_IoT- zb0V_cr#&IuUZ<8WZ(CLN=-%guZ2s=)_1)I59HkOEMsbOp?UN^~SW}M$Dn43%qE~A} zZhq0!H}x~qj0$wuP3Zru=C_uf)Va7J3-+&FYkO1I<;rGP-Kg6~I=xl@>XkNSN#Xnj zhrZqjyRCXr(aGW7-YaVyrpV}eue-g@l6^gOm+`cy2X#3US~;6-$V%_-mdPzizTmUn zu5VOsPo12{-YcB;8fdcPTA8;yzG3_@he0YCEH}PM!jtQT9+s2azWKOg{n?N1mp`k8 zyuILI6+JgQHKW?`bo)&n%PXS3ulU7@yyddxcaLS=f{YjT|Iw{rUw!$Hb5}RJ+Lpg% zmvr2|rOt7vN3;beAUJ4BzPsn7%NqBAIRkpdMH}85d+N@q zn8dn`HHJeIb$14hAE%O=)1&I^$L^~f3KN8BGYCQi-nYmq3Qe0q>}`K(Gf2cld!2EP z^B2t->E^3ykJJxbbc(>QfHDu~9{4mib37bfy`TU^awni~gsZEYm#3;ds!3tJ1i>gn zx&qvmgN@sAK*E3$7*K6F;5}FrLH1OEPZ3R7(8r0+RKyQhZb6_Hh*z*E0)s*z^+0_y z2894wlzIh&Lf9A-!p5Kw=mm)1gGCV-6apAk{44y;7!(3+Ua4PUPzam2EQbukpb!M2 zCZ!a_?JD9|*k%k0L2W{)_h2Ch28FOOD1?ncA&{`5-c0EH(HBynkVae&auymt0RQh5 zX7boZ$_!LyM*TP-)@)Lk@#oy8=bwnDf*HfG+lcfSY;@Bfz!OM9+#JiJfq6n)GA5~Y zRB*rt{Q%O5qM#qjkj-*D8X8FV$RvQQLoH2si2Vm541GX^h#|&+>W47LRszU69^4Ox z9SEu!@CQNJB8D1+FjB}!GVguED3SyZgr$T~K^!>-VI@7SOl*w|tr#jAcb_Cd)L#@MxHVBCMnf4bgQXmB4(dYGg~S~C|LW8S2L5fM zuwi7rMlE1^U@HL#Zy+Mm114Koky-)-CM4`2yV}4b3Gx_mgdK#H^z(%XWSO0Dr0n1$ zIqYtS892p{g z2lU?&!IyyY5^Wb}63RqH3Xqrqxda&)Lf|Qmv;#&_SfQH8nlL=or~wMPI}D4O54Td9 zLwfwR1qrKEO90J;#2sX>5s=G3P{#&MkAaBS#EG$_FK!~=#OzoK$R5b|Mwk>a$R321 z^v6;Hh$ex&1Hu^s4**OTks513RSZ3r^uKGnMQsbcqYC;3>O~ui85Ju7iLnaYT zl$(Znld+*vkE0nR@@R_g(ZJ0WHj2z&%YdHJB-;app@f)Kbb$v9qmVlWsCg=5YGrDl zL=h{rZX|M$M3M^rbW@;@zqTOAuhVvO2>_a~#sjt8)rXC;Iot=$N+DYigP{#ImPqEI zkFJKnqlp~zCS@LABF#!6TM+XiT!G>PlpkO*G<6Z3`awLG^gW0{P!lDXp;R9zGtPob zdzCh1Jn#v>4WPywvSVh=br=>aU0WF~ANR(pV~6$P-(sXZEupODoo z0W1?S$FSvqx*w%S#gKZy5DE)l8RRnI+6;cf%`NR*2%`55Q(Sf8ML=v1~ke4)Qi;ptoZlHwM$tQ?SgWwxSztD!5+l77^0 zbcyTctf6$%pjAd&6%F&)(#$~b<6a#TH%cd#=M@K*<|>-5ml;-iwJgX}MkdD7;+xXa z*I!IaFaOl7R<2hu{7|15H1y^QS;K|iv71NCeJ|^j7-8`)>}`-r@3yOT5`U-kb?W3O z!y1!QeyFhgM`6g?wnbgjDVaii=f=Znm8 z5)Tfvx-hbJu1a=Z+Bd_}-DCAVLy8>Nm0Cym`P{ke;J;9Mb6SGEUVO{gQtekGx}=%+ zEZwKG@|{QTcky3z*WNqb$#c1LWJ=HeCkM`xUV5;+?HH9lUDr&F(AsWtV95rZJtva9 ztlKP~P%hj1^48~TRc_a1#`nuAE!k}Hr1iq~(|FQ3o|lToJb$#PJR%~l*Fwi*H6Lal zc&0sEW3fYovWd3!j!icWo(^fPysFA8W}VyQ7@5A4{rhyid;QsGE62Pq4!LvlM>%x! zU0f`iUHYx!+xOgW-wmGcxa_NImG#yC)1d9zONQ94_T=WSn%((_*|I{Ort{^^+yh2Z z7lH>K>9@LFz~(7xk7DKCbqt(QICt+SRr#fBBeSCAP6lk-*zLsn(=V;09FO+YH|)3c zNz0(l`r5(09?NV`^Pe`nuUf zE3%i3*_}AJO@8kBi7mD3+!lLM?t^6w29o0I=w;kV?P`Tf_uJpoiX48iUsd@y*j@*6^JKb}#1e{6flyIW$Nb+qn;1SraNXDi0-@$O;~pKvW?is$d89UWBd z%e#3xAQw{b2m-=_WjG| z&Yu>vwVWgUXkzV+Th4pNUg~G``GoV$d()TX{%~kN`f=#fE?P%g9r?YzpJD3x`xc5( zU(TI=W-)!$Dz)be`AQGM_s>7w@%FL8Lz5R?w_apuw)@C7`_~g?3nrPIofmqom&P>b z`-=5nyt;1nU!`i)cl9`T{`;7DW~&@W2UT13oPGDuT2*uTvtB;Cmuxy7$?>20uDZK* ztk$wLoBlfHZLe(o*eR@R`c$9FZnMif`?FFf&1(P6A!_iC%PV%ZN|&DIu=%Xr;Z&u7 z>6@3Z$2`9CH1Whk=ay4nI-VG9`)J^cI@ab~rN^21wG%c>RmgsQ$x!)v;SsM&&Dim6 zOrEJvU;DImmH&68%4El9`+8d#x*Y46b$(3Dr*18b(#zA-a`r^=GOx|Pzc7{?lD}lv z#I@7c^Fj)b_UBz+aw`@co}yUk*gGIxK6*^8n!5YkJD+w=@m@Kw>xfqa&PH_e z+2;}5Dyi)4AV&q3c`p0Kf~!{HOB4_J&3?OYMtF|H)X4UWazA<+=xHqCtl?Q#2hARL z{jLyM2}g*c_itGVxqmj6l_0GyC>;Kitb{=GA-MzYZ~_S(N(q5GoIv+o{0f$F5MU_c zQ&`49cC$g>gT)q@A;QKC5jJLsK-XdF3o%24jTs_r0LGG{4a^W>V}=N%!|<;tfe3Uf zCST!Th6vL96CX#qdg=$tW)5bEaESYWU_1viL^zls!hxy|`64$)T{{VmK8fv(WRn;XkYh*@AZN){kL(EV(G z;))|RK_f|z?TA&+>@)dCYJzUOkWv%4O7%~_wNV6$tfa?w5`g9KDD(&LgP<2Lv^ar) z0E$?mTS-qaH3I1|q~gF@6Q~QZpw1{xw;1B7q$>}EbS?YODh|kqprkA`nI}*$;dLc16)s%a4Y8&JC#Xcr`E z?{s2AXVG$D5}-KYt})n3akM6cmGpCmNsJSf3loSQ2Xre}RqZgPddiNO8O8V&|0i@F(f(W`I1IidN5F(_R z^y5bYP$xk*87Omr`^XgoB0^e8KYj?On%OBAU_?kOn`_dj=44Fxl6a=^tSU~6^fXKKJSmd;$hfEzXWFWP|1$q<+DGVT8(3~FSukBKZ z-UB2}jISLmN`ayRFPao&rH}`b`Lea3*$iCkL7SyGz!CIJ z3VSNiZ6;>N5)ntBt1R&1p%RDMql!TsA*`hNLu4k6VJk6m1P&kwE{JwBB8yVcSkn9< zGR?=3m00hA%GIdR45eOguHj6>swRCHCBTisf)uP?Z%&Z%*A^s1??L8985%}vql7kB zkZVC`HCQ+lW>-|~2t1NP^d4m5mSHR5)MkS!5NT-O1^}p2#89OmE9sjMkyU2aN`Wc` z4jn|&6HAqXtfU`}M9Q0CE3qmCaxnVM!AI!sFLYb^JF7wF;~BOR+NZGKP6<+cAcUt_ zsuVPq^i4VaV@SJzuJSb}P@!!^w3v*n zvM_8VR;h3RCpiaIzFuLrobe^o=JKed$R0_jg**Rg}5w^{|XkYu%NyqGNWXyPrSZDaP2R}=~u4w zY-eo8i`y4nxMM+2p9LEWTS?u2d9U?0i=?{Rz9X)3^}3eyi{wlXnYH$l`}rsJ?c}Gm zlyS%(-|f`!ydJH)tV-y5;#+&A0~=!GSF?h9uQY3!oT0MleUM#7eBzJ=&z+|ImY0&1 z361eo-4~{}OVuGi`GV?(clpnxWGn|>zF5gG3f61cqyO@tR@zQMxf|+Ap6Xw_EBo!1 zRm9y{2UZRWwHl+Uzv|%5=&)(gZQWnwORHtx9(>q#=;grqOS#=mUYG>sDLsF5Lc_P_ z=&A=J4rz>Bxx}}{mu2e>HiuQk4Cqr99xeS^aTt(3w!~+AELHHkZ?U^o2Ut<5?-(>tcI^<-yTU{_9X^;ZEjvtcX?I)Wx(OQz;9BYZKou@U8CoAd{0Wnvf+o0kJCCl z((&XLpZzO-wa}0YkgHY=R%`F_Lf&V@Z`;Y6lWp%_99&YBW6htu-RZ%Wj%%K?U8A$K z3trv|8#zgDg-!XA$x6>AD8^+PB^MdK-<$a`e5sYxWt;XXa?UC_<9>bHm901Zu*Xf7 z{L9;U*%Jcad)L(bDa1n-}Fwoc!J^VaS%roX8FO8~Uo& zP0_sfrgU7&4eilA(l!OQpEM`-L6Oh3$}{68^V76XD(6nyu5F z%U219;%QtPEe2RC-?)mf@rMK(LOsxDnPMO6oPd{=x zqen`=b!j_Zom_hA!a)1d3*#?7ZCM&nH!bYmOXId~A96U?c0W8beVxXk?mN`x8g_I) ze#e$;ld;u&-p!4PBc~V|)V*G3s-dy7%ZEh0CEGO9_IEh4L-ndj;(!(3rhJ?6&G4yt z;%B=fV-ySb%e~P#IO#yw{c=8cOLb3t&idRMeh9I$*eCaV%+5{f(J}fdZt9(*{Wb5M zvd%4hl^Q)`UcZX?-)ok{spR+;eXrQK#Y#WpM#=u6zCQ7C{^8KYW%T+D^N03}_s%QK z$QxX5BGrA}ytaO`T+Z-P98w*Fy{~kr%KOqfIkt6CZ2YO6y%eVot}E`I7BTI9>iL%; zrpuKkp8vgU=8-pMyC=P?)%&ot(m!oeyMyVk+T}0%D!2LlyngyFJ6>@5PH27p+36b} z&t%(no*WQabRePlLfOK{r901#HMV$a?v&NzSDSrZ6YYfQLxi+zrRhURwnclLiH@Fb z-X8NDJwbFp5-|RYJ_OQfgj@k2{#fJyl08x*f!mpIa61#YVMF~2!%Begi(kRQ45Hf? zQbb^m2?ujbIGAICTx#-9V2%l*@sh7#jtK{IOrYNZ{uP#dV2%lgxCD&;7Ur06FvkS4 zm-tion=!|PgE=M~%rW6$jtPgjn})s+b4=hGA@x1PEhgeu_?t1ugo8OIsJQ_7e}OqB z9LzD{V2%kyw#0iH=|jj_z-JLN^RS0e(WNe{M&^~JE6xH}AFE%YHm0Iw15(17cDv>{V6d?o1V0nQ`^I&ZVX5uu*A!%S9T~Ng# zwn=7&P9O{iAr)!~gKs`IhahQaAbmj-+c!f7QW+ireFScyAo!J7iV#RL3mZms0x)bP zMIS+32p|n5jvxftC}bp=zk3aBbV&9H1k@}zhnnjT(`ai%R?@RjOj4w%`Nnz>5CZYQ zM?r03bXlS`;)V|GLayVI{sObp%>`b)KGdJls$qfft;wb_e@CgvO8T}a0i2XT4FZgH zKmmxS20>QRlTZ@iNeKWXAY9l z0iKkguMD68*ziOlEQzRnWk@sW!T=)lVCKOjU7vPl;%Y!pK8IjydF+#OX6bJeG9dhe@gw9!jVh@gVPmh$*_@l8dGL zKx0XFeuyL#vyY{KMM8OKV(C7Rm2~fi$dEB?CDwhAE?RS)W*Rv^$Vj^LBLT7$aGEID z2O#Az@C8-OskLINx)U34uC zHbxRGBo=xE*+?Hr36P`&=n-(t5W8F~kq5Gp?o>#CB=tw+fp}NY9t7W3`K4Yb$^7)|&b2ssx2e!J|&SY6=*OXJO`sndmhkYtMV)5Z~_NvSM zf-l>ZN6#s*owTZ@)O>}FvwanpwjHI=YQ|jo-Lqq5wpA8$#$~x>eSWYr>p^Wdy;)&W zX}@>LkC@$aozt<~ZmiKc{-shfqt?E-@qW`O&~+&Ff4icm?DU{ByM9)C5Bi?e0XrX&L7)KO=8*Nx87{2S}%3~C!Ns@rAmW9z~BC2JnP?P2z6>d225 z_eLrg+>M*OC39W6I?yz6&tnD6!DbF7Ni>AZau zrB~i7yi(o!{z!8NEr+me$ErKs^G#m+d-TfaP9C-+AFNq3$3o+r(~srXS8S^8`Y7y1 zy?Vx#S3fl}58aAb6K0WT%bUOWSn;mak!EIBzxQ^L+i;TWzVg~YmG~c0Czlyc4A`P` zz^s+$E#q5;F%M1z6qMD5zju0+bEbR!`_G;4oYt-!oBUSW!t&>n=hE{&UHaDJ_a*sS z8=sYnJ3e}@7UIG+OuW9SeILaq7Dq!g=k$5fX>V|c3f0s_73t;Y&b5tG%aDD1f6JnT z((=L!Y11$7)HGgpm$mkziKokxFKp=$-3>NrB`qpEiYA*SjGsL5LR!AM>sn6X_>Fx$ zq64~DoCrNPv&(ZwL!Ad3x|iHPaQ)MJw_52J7m9MPN594TtaY5sD zxa))&y*$eFwQa3~);lfU^YbC}~v4);%^-URzY=Kj>XsVHW>p zKvjTTsB*vYPgZ?JW9BD&_*kFQdaHc8{fh&Nt*d9t zZVlH>ufKEfx~h6bU!Svvp&z}&_}4mVuAaAZOXZc#9ECa6Hk0++ag!6 zWpP>CSSrQ-2V7jnet54L*6)7y5Q{Ey{*X-*Rb0Bwg@v*|lGD8i^nycr{ zhJ5n5c(H{~;-<~f**O}92Kf`8MtjHPZm+YvRc*51;pyFWo1bY_Ne?Za$)CT)?#oc0 z{FtLBSAV*!{`K_zR$F9E=X;b^OiJip6Yt$t-FHJuw(`%U$=1<&oz|uCe3zYGF`L^m z*21eUY#_Hwt`gTmKCau;688hAx8E>3q^>FLIctZ*+UorDHD&ucJ7zw;79_QAOmc=0 zp$Aup3ixlK2f2ea27z!%IK_VwdJynFq+h_jQQ+?!9ib$6&4sV!oi3U$iY%yh!Gi_j2Pi!#0ZzTiUWTX zT_LC5L#aX_gO6XKR3Ti97~xWgkw(W8M*;{%++hYv94v73kj?}2FruY*(Ai9nqZ#Ds z;Y=BldB6xWy!Cj~YvX;sd6f z2isJ0iVymeNsqTAfcxQL-3LrP8@67ta3I8J(j%@$U_fS6XAr=^JqiTAhB=2PUo7

DJc$f$ReN$1-PqBy~gqifXi#V*AHS$fTmg3vixusoRh|cru$5g8WI7 z)3-_{IaE}cK>z~5>V;<19}UbCQf6QhL4^&3Wv!2vHAO{kO8L>q#o!CcjZ1(&^+)~z zS|o4`#KM1ojlxEed3i37G+`S?WjK2+ye8T`QVDRUP$wE5__}(~rW<79VqrhP zL?NR{M7+#yiUR5fR45VfP%P>PvXZ`a6X7^RR#GeG|A&5nfQdfW%i0 z?|ujrA8@|{C2*Tle9)|9ueQ@>p z|J;LUk0mY8BC8Y3SV4`!B&%1BT};)?k283;XJh?*sy zVg?l+jl^pLg$HatA}c(``Mlx@8qEwF;&*F9^rGzvIjqz1UfnuPQQFxv?(u?mt4<#hLJaOTaEY9<4tldA$gWOh4!pxfzWf0gT*JCl`CWIoQ=HmyV>QmwnMjQx|W zOJ)!BPbgP>yjEv;p={=Q|DdlMe)T@R;hLI!@)CEo;7j+m=PZ|-wOjGs^QY6~<*ldX zAGw%dx4HABfd#c2YxdWkZ*%*D_I1kxZ-V!F@HV^Vww};7R=%50=ivKZG9#2PwHO+Z z6CQ9}`-)c=&Hfs3vVjq@?^RB3Us^Nnf$2_NS80n`)7;(TFL(r1l>Dx|)3etZ<0&H_ zUORd`ATvAk&IjL^wWZ^F5AN~gdUU7IuX|VS&g9Ig(Jw!7Vf~iCXm5oZ?5^Wv)Li?F zKigw`YLw^eBdR-Q8pu8lREqPtc*#Mt^VfDQLpK?#-p&owaEjI&RHgGHN9V(zzw~s9VUT0-hO-b@TKyrbJ~5AyDfISc4KtAb<-_9F8bbdpE6*@ z@l_Fe)1y-#Tw7~CAZ?Js(YW<}_9ZS^QJNHImGdZee9+Jp@oATqZd_1(^xm20Uk-HA zIN}m8>esbV_6rM4Pn+u{-Wa@Pz?9_D9rAsS_vrKBe#NsbN%qyfZyicKR?NyZ_fXHe z*gMCWZ70*pwfnG5-^|lr)$ctXdhpO=bNNW#z)>dQQL4@Zb0+LxY#8^jZIa1=#R-ac zHh$Twm2gYFrCZAN>a(N1FSxk&Tb#=;Y1Ml3m~)ydl})>Gc?I4B*s=M0-5<}xa_bZe*zB=hD@I$yJDYjdXS6*v-ENcomHTwj(H~ZOx}4vLa)WR&kx+Y=-9e!W2;YJ6!BKc_VKHvemhEaN3(Oc zTF9ubTDU}Wi(Ax~^0!Y|?YTv1>zp#mot6Ab1~|-pdZ^c8oecpS2PBhUu5g=|6I7+_TT~T*-LXY+imai!$nheZX4ZtyD0DMd#o%CrL*^QU#%(|R`q@9 z2OyVx&|F#+;osGA<@ihS6=$k=!@ifjxou?SpqZ>5_}(=&uG+=Wxvns(cqDIg+40Yp z^4C4>R8jD`z0JNwEl-R$*NN;m=JwsJp$|OGO8a|0IbHp1K(X<%&sE9oTD(t8TXeVR zOxMGg2Y2*5w|Y;=)`VPzu1+q?x7MxREvI#5%(yk*dwMN?Z~WtGwOr-AyN3?(H*$Pu zq)eDpq}OZVTC;>+*#pN!4H<0mc)H`F1&8dDcEx18eP5~=T3Y_`gPn6&`JB5GjQial z?K5gmk4LXAKKC)-;I6uKQ`gY@hemauU3K?I@7V@j953D9cE9J$vHbxCvRUe+e$td7 z<5f{_cBgF3bmwJRmSNs?C2p9YjQu%;;p#ZiT zzk($YxEBf+_d?-Py-+}Ui9b$uw1Ki9(Gmw~Du}*e#1B|pfdM333?M;4E&10mfP{+y zBwP$2fy6%b9t`8 zgo^75xezApmPLfMS+dePoc8^oUIYbUr~J8L$$B3Sza9K}OO8 zHlocC!}ARp86Lv5flLThL&fPMgN&pHY{ar>$Ve((Bp`%P>6m7eBMp6JAv4XOCr>?( zFn|E$L-`HVn}sW02N`IkASB)(wn~OZ5nBn@fplR_qx-1(P?Km571Ai6L{`$*HnER0 zY$aBVAZa;_8MuZ3TcO3OL2MK9lp0KBo!TJNWmIdk%s$|z3Af%yzLLNZo4;MkJ7+~P@VY!H- z3xTqQu+*vq08|1t2o;};(hYz1uNqY5bKz6_vDi@+cp{y&&#e|8_5ii(Ud7@A~ia|FB~ zsS3e*2H=5k*#A~hH84-e?oC8K3>k?SqRiUkrY}ST?n#K*f279SDTvbKe`a`s=yT!M;Ag^DP$~}KVt-F z5I%rRAlw!Q4MJE+KV&2Tpkl+L$bzt54=4u!HxvsELRd*ZWSAsSQTq?vFNS*#aL74@bVqrmG7==Yz5@1iUF%|^WAuPyjiK7l7tfVg-2GLX4 zIs4NN2AGH7u^@p6%i!OKO~ZJQuu{m3GpDMeG%Oej!htOa%20?3^3P^4f1XAmN1qHjK<4Fi0lAgZwMP=)f%LLEjl&J<-qxD54NHlne$j)LdhE2ukkoP+JukQkMR| zt!y~gLe??!IWk>HFdBf6nhm3A05>Sbk%qwkldzqeLF^PIXAlTOpe7G@bDIQ${24*| z_%Vr^!V?T~5TH#95c2Bkss8IKo+8BAeuZEY2k%zHVopW z1W86%9u3ry&Cov@PPCAv(s09OP8Pyz)GtvW3jxKm$g&W7&po4iUwi&j!6gzs|O(oFM(! z??YiqZLv&zPqy>OU8z6zOqk6Y$ysdQTKCNU<4W|-N@jZgh|h0+YjbChh+j18v+>lPSMFSDn_XjL|K-=akWZT;m&M#jF-bD&9_El3 zxh6QIN8v!-jy8!M*;)%nWZi4i&GF~0dv;nM^7}k(`SVfkk3hq0>(uWGm9CdsyzBM7 z#k`4H9}DcGGwS zANJBvcICV3D^Wi-XuR>?9e?23;jD}A})E~+ZA62KW8)_fe^_Fq! zy0fWTW|}ejpV#IN`yIYdanFxwbyHgIFh8`kZ|8HNA4-NqSF}~>XY}yMl7o-0-c+p8 z?Pjvb|7ek`v(ob=mYu9iykAxCE;k-@D>QbB{k6sXai05L7_67EPSAJA_3mdnb5Hyy z?=3tluS?D|SDff|fOmI)s@%0si&xtx_6Z8>v&ki}*F_^w>!rU3ys=E{P#|;3`H)Kd zu8re0_d8sZi<25Yztx&t?eWE@?Y+{2SReHc<(l$UR?NTTr)T}DG-u#^>wztk-}R8X zQ((N-)h;>T%^-e5A1eyo9O*<)zE#pp{ybPDgD-Lnp5$4LBTff zx(fXt{&RIJ=T`gAKD(aZ5|^6t(ASpPE+>kZhU^{oXYu^;qv*W zd|5f0zPnn5wBVWAnHPEXu#cFNaQL3qVxN~a9cNc}s~GsU%v)f$aV&#vZh5nLj9P&Wj^zlj~fnX~v)@T{8AY8w}}%T_KiRqCPC z_dI8{vu>N9y#2psOt}C0wq04um<0ErM@H|Z%Z?a5HU^l8_FbprLgXND+men^+Cl19Skr)8pKz(xCp@TK;P;@z04XYn4miXQ zSS^7uC0vXt0fsyEW`b3K-b~;Ch##oXxahym))iPBdjOavr4A{Ar79TDcVOMv6YM_qTp&0&L!%mMw7 zIC2oeO1k?g0gfNkMIg5ZSB21xE2uk&qX!|Zr29_9+G2RZ;SvM~g=x^PgXq7bs}Ex< z`h?Tdl#t$Ls$xe*X#$Q2Bq>=S1rx1bjGhq781&w$AV@$Dp>jga(L?_D#zLvSQpe7GOqO?YA!T%$)_(}OlgNb&>P)R&Y~cT||A0vN@4Kg5381M2 z`VYwSu@K2ZAMXB%$b3T2g^&l3a9J2y$5fg?p#OlQK_5;PvGgCvN+Dy3{3(X4q;?wt z6@)6pHb({dv)jN~NuO-yP7+)L0l6{R7Y246=#VF#_5*AbHrdRbD&%g1+rl8h0?J!8 zDgF2}f^;bblNc&$f|1}uA9atwoDHbUL7q*7;{?=w^a*D0IKc)A)E+R=;4C!P2ByLI z30oo!lU4uiB*9Ohpal$+UZFTlw18hLOSY!r!_NU^$_Fhs||^p;;+p zyJ7Hb!B#?962TqyARvI4vN_oY%}Dx|BLVKzpSCc71c7^_;4^-0$6)!JJ+=G)Bi;eO*nm9 zlmK-~Ap8KJ69TRR9E2}oOE1Dmy6Y$b>XbnIf#?fxf{7*mKtoC2$C;!~;kARsACR@< zgX1F(9E2E48c&Bz{WAMh3e+FaeFK(`IBXEYNIH;#NJ}$pB*g{+nH0L^i3A{eToF@? zXuj#lXEJBbu$3@`&=>|bN!To513?-P=*RxggPXPu(UH$w2>_^cu^a@}HjJWJU15kR zr!$|qM7@FG(S-CdLc2rfO<3eG>0SEKgz^85D># z>a2(bA}l!QL=}h>TYK*1DYW>QK0JK=x7m~1wzIr(wCGm9!hQBP5|#D*XPcDYx%MLT z$++)jn!m2CZ&i5h&``^xW7lrWW^0R($byJ#?~**P``@OQTFIJJ)d#zGG8mvbBdTgxU-`0&Go@sV zFJG>GzeRJz!8U`czbtF%YH@MB&F5z|fu9^tW%+q>!YX=4jg{Y*ApJI7{!B!c+5&mg zZBZJr?xlkx3qR|cjhENZGgR@vd5gEmE3WnKwZD7Ldw=s&f4$?wM%7ona2;v%_EL4& z#NUskjjx>g9axmG^oIAM&v9S-*OZLfIl5|N>HLhyib?1DI|gojt+!fP^XNjAu}cFN zPutU>yms2t{5L9-M?9VXe$W$HomJ0vY#46UcJK6ehQ6_@;?K)o@nNDr5B_~4`??lzdL|bH)-9N^{B`A~3`3XW1rFuj_wJv!xn}p>Gh^-K ze8>Fo6RwY=yv~(*muOk0oE)3@;f>CI?I{Q1jkX<1n;a5jzWd6zUR~x&hc6uRWzZw7 zk}rnZQyjk*Yb@=2MZ+hm)0Qtj{YyO(-;}g7SszoNmCxS$Yrm}hDCv`BgI#NC3=1@u zJ{|G8G`^qigC3VFrhBw?FARS&Anv`a)%A@tkIZ^e%+bE6sP}ur{Fh37OYQ5jX6%o% zKI(F|GOWu@eO_4ni(@T)wwt8{8jcIybC6&9X^CCh*vy28yIRj4)!*x#QNDd=ZS_3a zR$UGZb6&nbdgA1tzV%1jdS7_ZYI26QrdHp)A@$KG_jam2P>{Cuh|Zfm)BM^DUYMG) z^wiz(C3kM+JuHh|J8V*Zc!J-|6E3WsTiVUrTXkk$?$OZ^M;&S{uEvdrS<{xCZcQ`k?_N;M~JNM@(t{`L=}uoJU;wSij1+;;qN;xOZ`z+78t)7(Dd7{8`VKZE;_7EUzvb z|7r8Yul3Sbt$8-liG`U5ekR_(Hu~@?xy&^u>>O(qe6wQCM>y*ZCq8uRhvR{#w=%*4 zdM-a+;!$AThP~peZ&D&$1qbJ+Y$oCSQ^F_U42x&|aCAcY5^j4tq6#OVk_`e3w3i+n~HHWOsIY$`jUi+CAO z?tq6$49A-mYLQPc!)8Lo2sQPAjs`?xRGgMD}@EpmM^Y$i0`M4qf3;1l#ED;_s}(f=o+>hB!gZG(UiGE`8S zGk~pKoQ^Q$Xwpw02FX&CXaQZaK{76?HrEvS<4XrL-znD>E8bItXDX<#0` zG{+<9w?v*6xL!Ye8HOcw-dk05W3K>cU6;gO8G4X?{dNtDrhBlP+Bbx}07@lu9vRSD3 z!6mC+Vo^WPP|~uaWaP%Mm2hGc&0xr?7gB#1@I~~}kdgEQn}{kIHWHIRsH&G(%RGDXF#nFwfrSh_f_6-yU_ z9!*{P=_3K=6mAxS14glgA%vOqmfXo(D?!qmw+85Ld05M-mUVPx*k2fi0TX+2<;QFCH3 zv>t?sLIx7mv6vl5O6q}nk+C4pB}R)F!bZCDKvXfYjSNaXh^y83d$H6*4~l-GN*p^VH)P?=n!sK)d94-fT8_RxW677?SMqJIYiaAwzS(o!(V_LX zY7^@Vygzu{t51sfQoAdB$BlMUG6Np?K1)xJcrfbshsU9pwp{tXBPzi@EG@Xp)Qdaq zvYwSHYb7VYY>cSf{9+p1)Hld@_uW5kmC09(UAvezo3Fx4O&Z z@Pzd&eV@yNJQ9j_tJtcI@%UjC$a|u9~vt+xQx5~TYuXf+;^J1oJwz* z$_Rz}#j(DYGiLpieVN&IZ^B0nogTv<42diF^m24b!k3*B&e?1%)VMQ#h2q(Bb7Tw* zrB)s7Ysz=}=67i8;9Tj$dB-vy-g=*+S-59JufzM)bGPeky1L87yf{f_X~>e`$cp80 z{^6=Ul3$I=jfl({u|jU*Lpyh)&#&}@{Ewu38gDjOspwwri4{eIzO~ApX3rW}zQH7< zZe;%*!wYYn{-zMkoi)lOXydmzxoVy_pC?U`i^_a{C3D&x?VVi|ul8K}WL%CyhpgX< zDL2f&MqJACnWe2eu-|XXT$Su6#?xAttn(Z{ythuNVS#_tJ6%J|7(>$zRlJv4{Z}Y2 zo*yXxyW^mHK?hSm>MmLwooQBYnp$9cMs4fWFVVe5N4oBN%DtPl?`GEJFFqFji?^K7 zna-`6yZD`JlKs}f{U2U4EV}sPb#?R`=dbr)-ub#<>=~2q&LiTkg}j!3GjxifhT5Uy zn{tC9@;?4FA2E37j5OPk2YUyssF=0usYP$8HI99~zAv~_J!r%>e-o$4@A|e`^x|bF zgZ=IMbiSne+^#HEI<&5O;&a}aJ4>ECSS>HRYyGH6qrSzP$;7X&P~14T_K0#s$oSFr z-^R-9dT3lTPio*Y{zsJ#ucn^!>z;Z;#`2Q9>$){YR#qq0+c>PkY^;u}%v zFSVy!JRVr#WD&ZcCTgOZY*p2{&o0ikD;>T(9XzF^uAhg-5w+U9{11guFV?$;De*m4 zZ|UmxyfWD{Y502W<2yIm9peTVRt0sPbM;r~!$Y0x)vi`mUAQoDUgoS@r>`w9-UCOdkncZ zttf2PT*Yf0qlc-j^wdZQpZQCk-z{w9_Pej4la1x_u|saQ)7@8WS(>n2x#xl2ZJ)f^ z`0|skV{4XEKbKEkXWC30^F?#^^6Oe&QwQ5jc)UD&UhRnmi8@#AX%9bk;BoPy;@-Ay z)x*1fAL1fRcOpdYOVgc@fQrVt6B1+bpL8dX0ZNP5ngNxmL6--3QJP$x%yd7Gn%G|bWv zR?<@;5?}+t)=Tx10skMSN*uijVWp6qF|nI7JmZ3fGSGuUynZsImGr1tNaMBtEabp) z6NHS01E(pZ2uwF^#)V{z8#TscX!QUchy{-l%E+;yp9c@ZQ(X>Eq{KEknDn4e0zfFZ z3`__(P-LnLIT&&DCZw74vxh+<6s3@W`ZNpOzy;|J3-ZxTs!arGL^l0tWRe0!E9~^0L zY$1mTRyNf{=I{L)St(>J8B{vqu>`#a3yxGI0)}`(3~dQ9l0x=s2{1dTjxucYV1o2e z9Bm0w!QEaX`gsD??aGj}(ZE0K-;7k%ee0 zgRK-pT|!t%j}(}sL{a+?YAZviOL#!pg6su>z-)pN)yTUg_H=q_jYy_2Gnk}5#>T)A zDE{e!@ViNE$sdP@zDW|<9cC=URcAp%8Ok4PPEgXoJR#>Hz(*N74=KL~OG&U~wYgq0 z4Gp9pg+w-tp%J7WK>=L^Hf}y-EyWR$fb?IOTOk296mBU4&!092HI#+e00c^+#aBY{ z|70GK;jzRb61Y&thf9Luh)9UBq^}vq*-!!v35Y>i;OL8{Az{;<2??;F{%;Kl>dHma z7%<3&qSO!ikSIatGjy8NN1a-rl?>1@gg=CT7Bbz#Az0ZAJ$lqWgS*J!_^LUGNCWeP z4IP8w3pNl-N3i;#8GJ}X1L+%~1Yl4Ca0tRJ!C8;=Bd{R~pWVMB7om7lvev-RJX71X zF6M@S+J%oa8b}_`6~js)W66B%BIqbXu^Yv~hQR-rkUsQem4?}|Bvv&zvPhH)4-`mA zMC~X;*ht?JB>;oMQW8-7@!%{F0~Q}U zed&{5*=6MWHs6=nf7v|L|HDkroIVP($EB<}rkuWdxzVL1hmTGO_+=RNq=lhQvRt2y zZ{kzb%vDCd^pSqc{g~#eGxO%$NwE{3x8HVUU*ghpV|}Mto%N8e9Z}aZ@ z1#UYy->B+#y4P#<;5jhjPcP<@Xq_O^?;m$d(D{EBWXkS(? z`L*>-a!=P&dc*eCP3j^ybKf3LqSb*tJA*dXEcls{vq|03@#ofOob1nURgJeEGMhj0 z`drP7_=3O}Str^QO||T{syKB=r&pR2M%}VCJN_)YB&YK5uJLabOIs_gtS~bDGJ4tK zb&FP}CqMe0nRM`AhnIup#%?U@zVGmcBdeoq&s9aw9{I38JASi^*G0{tPt>Z)AFYm! z+CKY&-A&)P&ByQh>Q0hUsoYmvU@%s1)BIqgywI5mx8;+^oVqq&b*)*uvAyg1bUFCz z&VjkRK3#R}-s9-xn>>?xv#oXC9KsLSSic?>8zLQfZjDlg`hkgSr{xZ|TA`L2;ukx} z)#`YR(X$)hZ<}4J^N+dyd5XeLvmF*)H^%GhUdZ_Px>A2pR^8;HN%wnC+i&f%WKWIX z!f_oB9Mv6?ZyNcdc*Rkp+~Iz`_WB#u9VwmrWqNINj@{-7D-LNSok(7;=+Waw9c-JhvxbIYo_#O|(-#+0w|`E7Xn z?opj1hC^o_%Z}E{-tw{4y|pH{yBMGD|2;h=tIw;{QNzve+U$uq(*OJPJm0?eKi$3% z>TJ&I=XkV!+0P5T_mx%17{_dIxMXasboTajrN_=ck}H-*oXfp_V{}#C_5P)Ly^d># zpZ^`FP`&B=ubMi)yb8-BHZyqU52kjQvF*|1b+?}^aUK?auVwOS^9NENuFk98>hNM# z9=ASqpD%yW`Ad7OVwDWd)W6QiwvgY=EB#V2J>+I<^symP_~ZO%Ra zD_8fv-)-3Q?3<4F)=n#uSw19knCX@qZ|WTPESB+J`1)CnhuHLQEb(?S!G9gLo1U zlNmF~TmjO6us|`V2P4XY`EF7J@+a1%t!r`F!jDL(#~M%!!1!;Trl1S9wVHj#liSja<%4m4&B6!1i-DmD^$ z=(7HiqH0u4fI`II88p&4V8}o!e*w+upgs)i0uBg$@C=$1cl@1YK`0R+!^mLP9$N`j zBNl?x0~nkK**bBW$e@&mu(4!5%K~@1p(7MjHQ`V4VIyox?jdX_Y1wAdX01dD z5M&(^4kP-jSPBp{mh{s_0^}tQga}d`z6fb0{p2AcTV|%5bbSPP5wOt!Y;95j^2hfP@-Q-Z+E4`?Ht0SK z;HnF*Ff~UNX<(j^Lz_qeFf(-6Ib(yUOCMDJP zQZr*E`2egH)VhyVmo$ODL~3=EARbutUIAHZ{iQ5CCa46;$!FrwlL!&YL72>1`^+O0Sg z5yDC#W65Bmj2cT~xgZfU91Va{5kvby*ho*EFo{&6Y=qW82B5OjgG*Zw>WhOBA#9}k z4n#>3&$cMq4-xep#4T(5y;$GD0(Fw8`i}USK6~_)fI2)uk=-Iy~6kN>wt}_EUC6D%6<;3__-{b zwSo28s72OLRr$>c(w)29)Kyx4`B*Kx?qyJ~9ks*c{C|HrQK#JU+%xMj1KYK#KI&87 zG2~=jMQ>H5ur5YJz9vXzx4gM<_SU2q2Wp+GgWv>!=l> z8Ks*DF~G?m0S=YBJhwcpllru0+Lrj_`*UYHj)@<)WWH(E?-CQ|r(b&AYZs!{e%8nc z#jnJqCmqsOavyci!N%i65|FwC>Z73qK-1Exn!m6`k5W#GdIjb#r9&b(eWV%EX* z6`BXFlsu?w7w*kHpDo=5aN3T^u)5lA$OGp-85vJ9LLq zhG;UDvB8)r5^10)LntCLQ;|YQ6beNdOG$a^Z{_TFplwSN1%T=v;s9l>@wU>h`lk^9d65xFk2ZG&g}Dy?w7qG&g&`0Vaew`?8^ z`Fg-*(W_S7rfQxrnb!OC#N!hWv(K_mK6-sIbxjY;&Ov2@(nasT*#1tD4?5$%Y}3w2Ho-EVZ&oH_i`9!-{M_mZbyEAl%YU6@;O*4-)4*LmN2k8|i4)wnr|a_O)9oA2t8H)#`uwP-0R=*AwFRf+Sw-T6+Z5vV)%5}^UEHc zcd9-3>b4S*I6{as*c_du5y3BbuPHT|q z+p!V6gkJ-{JGiVkH}UC|Q#X3$M2)FEvOGeTGpAG0>U^u{68YX);Zt5^SNDvXEQtFs zF*^KYZs!&;#=Xr$X1@2?vxon9(eD*6Lymnu(dU|N!c>FrJyce`ykTU&>3f9p&%3T& z#_p`DWjVKBxms)H);Vo!=Lpp91U;Iabof5>aNi<>gH?~qBCB+-t3HdCq|T5arKPAd zL=cDud=7Nk0#pV6MV)~He338#w=w}_0{#X|49Hd{z`VfX1yMs9&>9dOZII|d)V2mb zh#z;|| zFP3INP>o&>l4d{}L~;qYE|R9EFqy>2k#V$GkU<9e|7rwN&pZhcD$x~)nW4ic5s)~E zTELJe&3|bz>KjN6PKhPXkbyYx!!itLu^~jNUkIr=tfm#sK(iw$(3b+n26iquWTJE? z>RT$(VKlY-3t^>%v1I;2vKYo8fa(P7xs3`j{y4Q0R#HQK3BAbvGvxv{4i1FpY#to# zz&Fw9{X$qt4fY$far|!^qiE0JVG;)%KZTHnY?3a6OMS_Nn`3CfkXsJw_JWX8IJxz& zZZCB!TGCo!lBPr&_SO2zYKuivmw{}Quyad+q$I{~z|PI4rOF^| zlrWOaXKBQ$40OQ>6tgr`8HAD4{YDBPC2^}4Q4=RRstm$N>UJXqj*>pqc3``PO%c-R z;ArTmG6*ZFftVC9N@6Ytk@N>80W^K#G@_=fuN@(*q!uQmfKd{wGSEF!guI}^4`j5Bup0unL4bk>)CROs(Z!z;BIx%exIW@6&5V_z8HmIe2)e<6DxLtUpN&E{ z>PC>d0ZM_K#DN>VEF_jBXJC_c7jVIrdLSi|4$KT4ULp`!!}1l^b^g`DrQYyKnt;q7 zQIO(-1Bom)Vw6DogpT3@#!%t}WKI)HPCz|4~1XeMN^Ot+abt6diZA9jX z+4qZ87I*?SnX$nIl_y0~!z3h$jQ+)p4P4p=3=vyj*n~YA00UG5Q4Wux5hS-jvA6=# zNhtcKBd&l!lr#ewtjfux;|wgTBGX&p0HG!{)jtgQfjGXmu_QCmUPW=a8r z^#5xsAk$6VV3>9u2(1AeX;`}GiXIGIV`z;!=Rws)F~~n6->JAK3u~}GMD_@$A^h9U zEVfLaDwtuCc|OEvm72?( zkz26qda3_xjU$C2>(droi&6AGwRVEc^0wNXkAk1Sa#kID-ga^w1a?^&~f%0(`7(jx-2><3*)^Zj~qPVLu? z*I#eeSSf#1Ic4RKTlsHGruQ{;T2y*hbN-d;q{Ow&Z%#Lbd(n=gl5Yi1aGD zQ93Z!RcptGRF^lbRciNN3=!Ti8!_RM{2{%b3Klb5PCI?7_L=u#;#FqupsW3HLaLL-&=H&^DB z1ndxu>u#i!_x8*~w|)hZf2s4U80vDjk))Jl-5G*ZX~9_1A|vBjVgv zT*%!rW3}BYH~+J@f9&*qao;!Yo2s^>?~5n5^3EG(?>T4k+b1qLN!8qf^CVce=Kt6qH#{&c8sz+3y`rAM!A{W7Ne z7#mKO#gzy9<`;2o`*?28?y_+5Ca>DZ1``ej?tA62(0$t6QSZ&CE}t1_mom#|=JKjz zPpn#gN_w+Q-oh-qY-z=iD|b?+Ex3DY?gx9dlMbpgo=;ghaH&VI%=z=PdhFNZJ^V2w z-gH{~ko&$m&muDd48NT1JLvY_uXAd8Jh5|4)|Sop3|o0scD&l83s1hy9RJmSd|KA{AuHm`-+%28 z^|JQiHrwjLLAkj_f=M0ukF+a>2fJ;LUzMob`JQ&h(y*~L`!fc03XhxQWSN+JfBv&B z_6G*Gay%M3UDJ5V3yU42x=l6ZXO;`~f|ADGnC0XBs?fiKa%faQ+#3u2^>q(t&*-{f zdFQ#8$Msa`5;NP`=GEBHJ~P}xH0BxZ@KL@qbp6JB<%l7f`N!hbY?M=C15e-WAN}a| zcJsW-h#ikV{k-sz7q#$oWy0Vxrx7Qje5b!?SA43wgB2_Ad<=KuMefd|7X{6(ojWss z`rdHIkPV|=a2~A4RBvIM6IS82S2ied%86x)@$IH<`T?m#%9OH+R~KB|4+MraGRpP53_7JGb}hjXRu`jvL(hDzH$^ z)Oh!Mz}!~La*fpPS~<<{egB~SgHo8s0y( z9in}-A$bGka{jBf1Gg066QD7qOTc|Y__%KfANLL6lYK+rt}?32pdS`>e?cFx5Jc1? z27QBtAeiaF$4n1CfgONf7htA`05d%VnCT(FOb^7LBmR~EGd%>D=^?;O4*?vL$e$ra z6#~rk5MZW<05d%VnCT(FOb-EOdZ2`p=sB3_fo@!o-{2=>rUwG#iT(*QJp`EPA;3%z z0da`|{XZox3J@Pe5|f774k;i8#pDfK`-j>Bw-Hc({pf&t5+Y^?_TvAo#)_}0iIp9w z8zks|8dY}uk&Ofqh@_JcF?AWX5<@rm(BU4Uayrlr!b%BaiDnYRRzf6=P=0J7kZa+; zG#alEMp8=)#F}TuNKq7x+peH1p8BwK8kKs~O-AbQG0C1I4q^$#S>Y&l5S z0ku{@!9sUen1hW8JO12pkdYFGlDP~KxlEvlq>t`)3i+^1_>K2hse8>57BF*JA$;8Y zzqK8Rr%g$|NP**2r|p2+FVvRlFgK8mlB{GdMT8xnSla=`Rv~C>=`c44D zcd&^&yl^Q4)(j1G2Vo>-Mv8(xW?YJRC^2&bZbU=1ixzZ)u#!@_7Db{ATZ!czu+woM z(xD^oAgrWRH$`DGGggZBo%-SqxVGK6xT9|0kuZJ?Iv3LWi6tGRdq$EDHm?acI#Ip$ z&wWR9o?vF^@WxoD=O8Qppy%NJt!4<0rQY~aeTwLu!;pbw*^7($8gK{@z%7ABbsc|t zK8clo(IJc(E6EuM4ORdP0XNkkwt?b!qjZhB5tOht7%W`l8HkY@cm_6A+5!8Lgc-=7 zPazEy^E9AsfB=-_|B`mp8$U@ika>54bsYen9?XTqaHG18KWCuC(!c14&&&+O{sbvJ zh-NC-N*c{n;8jbA5JmY1hOERd`~Q@AASX%L4vDk~L-vuojacS^Rx%(*>Bu~gjS`lO z6!1+5tbv3cY*2=>A$Dj~=s}&45MffslKCTxSn>h+2P6i7V*y+EcR>Z%S$}E6O#rHq z%pF)+&URR97PfdJ|HAupuFdxq*$! zKO{{{iV{hb!(?`e6G&3ztf4P4O6NA(Tt$+V6uF9kfF?6+CA6pEp>Am4wvpfwIw%ij zv1zOxil#xpB+iN4E)i}6fu`BecoZew=}1C|c}bBEh*Hzcj-|No3fhR^Dp;ec5J_*G z3O^G_0qTSVBFH>+zX-bQXdw6okNx+v0%gNwQR6itt>8!L#0{4iZ!y^KWYT;kh$TITIzN@@`XnZr{=){Klv_q1C=_*Jo{DC zu4BleTU!>aiq9GH=3i)%AJoc z4*K}+(rh#P$+2xcwa#rdduyZm_|@4xYHNFciwKLDdFd73BP_$^mi|D?{H{+m*2;bA z+^a>qIRn(qCv6hUI-j>;)a3N4^Hb*i*nM%n;7O|#Yui(c=1+>&WZN5Sbyzxm_RGib zKE2D1=^b~<$<)Gj@|J)u1Al}Cw%B~<%t)&XDGx%ke(!%%EuX+0X7_Vay!X8<3;jt^ z#XW7(vN;_FS=(gBSXvKM^eyN`G9i;oABA5@R%JbI+nPObP0#r; zlc(MLIrIG0d9ed7>X^xo3lHvjSgT)iU~ZOoB=1P-h)oGWCwrt+=)8?O?RwyP@!?Tc zi$cxIL!Yaa%b)7nk_BDI z^IE_2@9I41;MbBX?(#7k7tP8)F*AMNxijPEoY`*MqV2LadXv0^9`+i0z_xJm8pmtl ztIqV@cfE94;fFqbZEojG_N#T=?zL;!Y8|&$sz)xlcCef>s$})AKDjlAyN#XuQYE5h znQ!!?e9P)6lXY9;Z|@!6cHIIu#fPKH?(IH1PNU7*yb&|gG-R&H_tZF@{^Yt&P=`x1 zULGo{E-doYHdhZE({*mFe;IdLvV4bbd6s+Kc1?a;F)OHe`Oo(A1KwpE&P`rq&51}j zyeQ^)LT;aI1BD)X@zb434=!={-kg7wbu&)c@ser6f}3*9Tb|t0?o?6jewBAy6nZE= z34d^ZmTY#3qt~*^pIdZ1Mt9hp7kO$><>_6~Gc~&Q=o9v`!-P%~i?>(4eXzLd%kp=- z*Uz3hax!On$pV?DBQ*PLvT~TT@!>wF1=YT*=N|0${z+U`ykWU{f%VzDweI(fypzgg zjn8}tzbSLqVdL9~vb%!@Z_k&#zcO=f`HAg^3>KccH|_9)0|xB1Plh~uetS)GyF|lR zl4K$TRRV9MqKX(rCL#h(G(dm|L|BUdf&dZV1|+B-w@CDWyNn2Mmk|N(G9tiTMg(M+ z5uN}OLa7eQE7@*5H^ zBEWDF0fvhRFkD1{;UWSI7ZG5%h=7EPG?0mi-a^9(@L%ua^P#d#AVBzVu^b{uIt&m| zR6;$;5p#rLGvV$(2POuGr3V$#Y7rvyMLo+A z>x<#hghV1C7Xh;oUx$ud1X;Jrp97vcq4 z>Js9mQ+*JVR4UR3iRC45lGg*m4lQ{JVJ6iFG0CRFX2O37eF@|fxll8pqc1^La;QE? z3VO{xzfLTrXMcU(pX+?PID z=wxebL=b`8-Cq}a{ZbZnTbBZziVJZYYD9(#26~|O{g=|@j}23j+=M|o72b$YOBX$G zI&3H$AktT3_z-Gb1l3MTO^``a6}i6aBqyl63LF-2=pY*T>$|25B{ke&5?6(-1kni> z(wtx+%uGUa(il^OVkC7|5{FHOmJK!%)F=9=j0Ng$2r%h1bb*-yze|1J42rZ!BgG07 z1Zn`t<-Zgtl%b@C8pJ7`*`XBoc7bCr7Y^h!Whh)~&n8g{fnh7L3uZm8S7h+mc!we}vtHe!SkT(WpK20qO?C8`ugGp)?mh^xag@^jG zL7!YGSwfxzntwD>wyf_NB`j~|^;=kn!UC5qgx**GLXZ40B_+w=7^GKW&nOn6fG(JY zto#RmgkmMtH8M%EBDYEu{(uORjeHM^hCqkHW&a&yMKO}<8JVP6VIxTj2~;XUOAi+k zpti~vHo1@veuv_9q=2+SIuzK$VJzW$>B;*Gtp^5@GM3cE!ywX1JS{Pm1Xed9 zO4HP#0341wmdvZT#BEidw5kH%9k#IwV z-uj7F-PX1n8~NzU*tV}LKG?oo_(yAP9eMIDqe?DEmF)>0`ysOR@Ijj9oz4$jX?ohLPj0zo%C)E%^Wf<9YA#Oiw@%Ny@0QxNczHo(Ua5ucH^U#xcg68P45%tP zK3ru+s#RCdho^>@o8Nsh%k7(5Vq&*Q+cWQ{JX~|__&h_mT?vj3v-fSdG9&PJs9T=? z3+-yRJ@aFi+%Vvl9`UcRTeEA$ks#sq2ZANLBX?TgU8t58$of^n-?hG7j&aJwEk|}< z7?q$CZLIRp@s#h+kKS*VJTB@tGv}c9S}zB$tA3f6yJz2i5#7$^-l{W3(~rv~U%tNe z)-aRH&s5{i?aeD(#Ce>it)T3kv8UG}*|PO+XNL(^x!s(XwdDK!=ce%5w>OS>b8mphZrM#83wwJO zj=vT3<7Qq=U(VpQ8v;iPe#^;S-_d(czGlzz_J?=Ww0!uK&+}g||LNV^rCMhWTOFQL zq^6bkZk$h`VeE%N9~4YZ**>{z{d(7op_8HtoVs~=8mu%nF<;;6fUn{CR?+8DbBef8 zJ>yFwV%rRvc;~&}$5$UNb)E6awC1$)msO*!%&xL?Y&z?7%C^ky$ zuP?m4qRUK8t+G~W9y?-r>-N9MDxKrDU;VjE#mTgR_iU7^x0??XKxtDtjs1xLY!N{lhBFMCD)E8`I^xR(WhIF+2TjbFp)Y zSy@!ok4aJLLsT>)`@2or^z`G?s7DXi<#)I^-9SBm_a39ME28fo^EmG`&FRPQ2|g<6 zpN&&T+j?$K8GL-o*Dg8JO}Hz3M^=20^~n9)Q894RSFIOurhJ33zRU7#u8l5jdu4!i zE3GBT-QIK@@ThpIZ_d(AvRc+LPO0bBH@o!9F!^N_S~elo+4e<9|DCRJulBuNFx;CH57D-YM85r9aLCx z#}#xZUL?1`ZB+yWISt7+a9b4tZmS|7+p54nkquh}qUJd0hp}2i)ItY+gP)9fC<4qw z5nvvQ0P|1;n1>?3JQM-up$Nbkh%CfB6anU;2rv&tfO#lF%tH}k9*Pk2P=uI=BE&ot zAslyzCkrtTMTmJQLd-)!Cw0-!U>=GP^H7ACha$v06d~rJ2r&-@wI3yaT{IdEXD8?G9ixl0C^A00|aA5g;h|aKs!KglS}?!CG||lB&Cpi z=SYqM14vlOhdrrLfCeQqrJQ-va;=$yhw!u(ggX$`b<-bTK6eA@_dzb_l;<3bH z6gCjak$mDGJQJ#!)H5BE3?*zPGz8Ft5* z`B#tVN`)${fMfwkmEiBX1nShJdLRY?T6k;M2NoF{CAq<0qR@<{7zGBC>VcS~X_31o z=yPGALrxxUUveRkr71>%Ivq8w$RtyXG*e7G;e*x#q(lD_qflPD1ZfWu{xdr@#gY^l zRU{9mDM^9Rr1~J@aKez8U=|-vbYcVwvAaX(m?k4oBvm(vLlZ*=;@6E^+n~A@C_O-q z0)nolW|1ZIPY@6XI);tJaugUnAr##jWuU->{9{f^XrdrGZ8B^n)}z3tj(ABl1t~E8 zl*12k6lTUs5lsg5xJ*8yIWv}FT##6V0tX!~L|RCM z0!3iSwl#Rg5~iUjXTY$5AeKNkS=g8+^A8M4z44=p%S5>hh72SZGY2YHsD6P|3Fww8 zE$xZKHXfox3&U1I;fiQ?gRO*`rLYlh)gP}~0!>Dg1!Blba_1KHDnK!n7VpQrWP=*^mLG)BgsV)=A*Wh?0&BTZy$NNJ|LLnwItiSxGr5iZY@M zTZx&v#*%VO6lLKVwi5UfED$rJtQ8ObOG|u$ ztfZV0MI{1;tpoxJH2H(ffane)E%6Dmk}5tC6)+e!6BAI#ONg`xD1@1mOr@y2!mycG zeL`MBq(wj>%%q$WMa3Ux&BO#0@(v;$0t#Uy<=`Nc0)Y#1(E^mGMEynKKu?E&LKsPP zK19V6k7QHiC;txt1tLo**5SW`#VC4^hia-ACHT4rh*36uAF^@Zw-(#AMxVRjwD1w< zz?(6a`!joGZDc7_sc5C}EIez1SRU)<#2C!&@GL;RKxS)|TZL}z_w;KAZLd{lCwBen zlc@P%&fv)G^QQOrD%zW#eCztgdf_(h++DS`eYW%}E-Q&&Vf3!{nQ!&3YwO<{c5&@; zW6GrxBX8N*`>MwE{E?BQ_-L6&&(#5M+>|nkUu(E2#U%G>*(Xb5XRpkcy#1{# zb`I^nWkG7oc>j%UZx@+$iikZ_-S$U(*_YOuKUy07-g3~V;Pbxu`}203f4^Nga*^hn z<=3K(j}ET?012t z@%Ec5#=lzvOH4XVeVKZ1lz%fllafyIOV!7eNAFY+UJls#GKnoZt1SBne-yu_|~EWHvQU`yG_4o*umd0-Spd*+L)<#4_NN` z*>Uq2vl)sH-(@V+z8KKqjJ4y8=trw^bU10pjhCM6Q8{kA?z+(I#}4^>F8FMoyRqo= z)t!5HT5oWSi!QhnXT4Z8+|WIGed(QbwzfImJC61`bEe<02j;7@+a7*A*+zG>@`}m1 zzXM`UJG7f(aZ0u4xfc%xgqF_JR^Yc8yX}icdBa#u|s)zKt>V`-N&F+OGOUw@lt#J{!K=a_pd&5wp&2M;aCkLxYtKD$cU{K~Vq zsAGG!dJUSMr>VDL^tjZVI7bj2F}3S~Bl}G)=Nqr;H=@H;f&Y`fBbD?yRXa439$lL2 zxhlzgUBQ8 zOV8x45g5GTMXt@=%X{Yd?xD@%cleq7RD9xZUn@x?BB9AGMI$2O zVl+UO2#M~!|4AbvgfzZLyMVj02ys^yA@0f|#9dk7ss;XG@o!<}1ks!a1SQbQnfw{d zKoJrI3F4nf>IdrRDEgzAfg&WX@)JLUpNttOLd-xBVg`y3Gf;%Yy%h28s|fP*8eNWGZH$2#GsF=*h%A9O47E88c9Xn1Le1 z3=|<|pn&Y2cwhsKi0Ca~r}W=c4Wh&z0+xWzg#&#O^dL9aD6gb0FGW2bFbVY|Gb!SZ zHe_B8sX};-++(k2o`f6)lQ=(YAkaGD{3lNJAUz15FZgSYqP~ID_)rQUKcoa9z$7GZ zkPetcVsli{3TI~i;WC_4`v)mDDtkgnn=TSzUo!+rak7 z2j@cvNP>){W_cPk?qp~vVbkWJ$}kj;*r0u)#UnvhQnzsiSyLkaB5ra6nNrlTu2KC* z-3Cd`>=3~LL+gdyzr~^t(!n6n2ee#o!u~Cx`>~KouoN~Ba>R(aiLbFDxd&WvY?6W0 zeUS*J7#cycmVmn2aNxP90~8CwB_#CV{jDqrDf$LkdJut0@Y4(;rN|kGWgbG<;XrQL zsLZ2o22!(jMCi%T_~93fTiM_l2>c@mdYkZqf%Nfb)fY8Cs>@jX$1R35kc$x`WHsww zs*ZZ&C&4pIfgB}nW&U`BC4(ZPfB8!Bv|b^){$ z9mq;*j3WhP6w-8{p0^y(7y+TDaZSgcn>VtO8sta;86{SCAc7qXDTq6`ye0~bkdf3F zM+(3w)aZr1F*~c6BL1ZO0-eHm#MS5!_^WdN!bmS?9mdpcLN%e_R zfJTWCBM?iVBs?v|2(nT_B})p_DAezUK#YKyd^o$)>UTq!Np;{-;6{nn9tfcdvQJuS z55i2U?~wvHN=zC7cn6^~qa*hq%%nOWDWIc}{EdZBVbB0hAN3ES)ANQflj?tn3?f5e zCArX1(;E(CUQn zlLRSp38BU}gz7_x@WX(~pwsvUnMu9*B_y)`%+5^~ZhQk}b)*cXCHo-Eqrl`>XelFH_AT(f;wH?#P zzcy9bR8cu_wd3e}dM|rgPd?eMo6OU_)9=i%8obqL?Xz3s9L~4-o%CAJe#a9FxfXLB zW`^C`(#7t6P38ek@skIaUBXgl4mT=yfhY9*-7CfCT-+a{N-YRnHLf;3MmsLcp zs#w14(GPCP&&R`ydLHprZ@%tL(UAV@Ze_PN4GkDwvZ3fAbczW-TIt|bbmz#{W~Q5e z7`tT}&NN)+@o7#-+C8Uh=kwlAsD9(2w0oFFk$hk?oeHxS?VEp2m}dTc!U7*|_H57H za>{1|_IKNMzTf7^i_>S^zg(iw&%VID%j?^%>|8Ef@2_k0bls6Ydj^}j$t|>!j|^Z< zm>`^fYn_%`rnhOWZs>f2@;(tR9m@nYdq>^u7vN_5^J%y0((?H)E3T z>>Qm_?h{6HexEd(>SevU;^pn@**7-E?kaGeYhJVGOv=K;W7FR)>nL+nW3pg$n3;iH z%sZE#w<8{W-KKed^>bh25rOPaa+Qu(X17?zQPnZ6i4)Az)M`G)$}{DfiCRMPkWf|M zEiV0AuD|bB8$D-QbD7C+Tdy&ZyVuip(m~5#>zkG!pSVXD3Qq$1N z9k708xV&dvuSfQa`yQJ$-#N^(zj>%ismt@kZJUk+gOIsnEWo>afRtV8>S#3Av{yHdAh~qi~Nx%=QTd_BFc-JWQ;P zrXA_B=4(a=>m|XLPV{yDCT}^V$Z+jhjU?yc1=_#O5|#YqI~#@y(>lG9Z<*q9j9X}Q z%=3QS!PReU2ThgHK0kAQ&S>9|#h=W5&Y10Kp)IT2wj$-tj#cNHTYY^ryzL3wz0P~z zA4<78TV-X6$L}6pUB~ZSt^0GLd~_eb>!oOgtFbSmF7N7-*fZ6! zDAnf8f~T1uLQWpfQ#TnMyeqfJF2>X7n?Z0^pWwsWS{kkzc-v>h48sD?r(VBIhTONj zzs9oVn$yYoqYlgqnz?h6U3VMX(6}itH{}FH=Xg4P-KDj~z3Q`yX;AKS_oAZc%NJ)m z+xvB&qLjL1#V1*<#R&m&#St5`VhOBX-v+wKNuX!~6c zOTW6GI{(ywr+rV;qTJm0+xN`Tt9(AGx!pVUZENxH!=D_Z6~n^^-)YvN^3f|OX!)~Bvy(ha$6l~_edD}Vmz=#(lPgDD zm^bUyeU~C`&E?2QPx~cDRoxDEur}NfKJv-;ey$6;oDIBr-|C=uH@{7bx|^Mu+fv`1T(a_?+m?SVAYQ|&_2=_R znN#jLoh(RlvRHB;cj)_D{gjsf_>ughnls+?>zgl$eg~rZ-oB}3!OjSeoj28&cO?7v zpwZLA2e~ha7*`>;(1w$&^EmU|>K0z^VNtdY_Pd=t>jD9t5ag`!#^?~?pUvF`a zhfZ->WwEey#rkPwD+VS<Zq!8YKH#&7UoWs;VwTs&gYFQ(!KCT zad79}R`b8@zcQiNJk@JwXTLU{XFl83nsgbrJo-aV=P`QxsQFh``u%SC?c>32R8

zrbx+wcT-W``43eJx#Kn zFz`<#utX?o<%5103r$1~f6zBr4uVlALX1KYVibxHqfmqxg(Ac#6d^{T2r&vph*2m= z@hq|jqfmqxg(Ac#6m;`J^fMTRBE%>ZAx5DHF$zV9Q7Gu@4*6SHXhNb;_J+IE~ytq zNJ!}uv!me*{eLUOqWDIvO@YV;QF9t4mekoMA=qY+EsKZl|COZxFNA8K6xe=Pmcl{$ ze@MU6kfk6KB^gQGf&Sn3E0%mfY8}3SlMn#L@sk_#bPXT||9M`L$`lS*%c4goA&jJ^%m|mq@CzrEDI9Idm980(W=>fb(e#LQ*$!)cuf2s1%lcK*d!b0x{GV1>IOj zk`w@0|6BF}Ia3KES3jBY-?l<>9g1n3ScIdn}H zq(DVh!qB0Jmzk|kG<0=x6u6HHHTy>8D0M?e^&CtRqwvsS5egoz*qhzThmp~PYnn1hfupd&Ux11VuBr2vEy zi%kHjhT7rM5t|TJQhl5hcu-=o3AU1O!+)QV@XqV68c9kmDd3>QViQvHMn`Nyj3ssF zW|9Vlg*#YlLR^ucqckCGq;8Q?078j{CZxECj?jd#k{a_%fe0nmnTW1P(4mSDMp8q5 zBIm|T2!W5wVwDMbMS_mXgs_rYA!iT>CAJcaOt55!Mn@aMN(nkGCh1UE3xh=_SPMf# zWFj*2&)5f&peS+8%sUswK8WqdLoMleaHvPro5mz2b=%~hO9m`sFcC(^K4M)78T%kz ziJqV-hZX3K`-esy3}pJSB5q&<9s}~$EY$y$_ZK%)H*$ZjV=xS5!I^od7)&PCkl>L+ zTO<1~wl(m7)cYl1Ak$|Rq#Y3ba;Gz3RmzsL! zNt$%bomIr|7F;p}V&dMb|LRXu-@rcuZWuvSUSVhi$$gLPOarw5)J+glTzZ1P-z#Y_ z`H)6L!op?n(1H`LAXI~@7#ku(E~E+?6N&tJA|P}ul+C39NvSDv5nWTLUGjKj0qy_5 zgz!=0*t%DTr6hWAcxbYeWV~x3Pc5ZlwLR#Z9G3~gQNC=V_)>Y8+oVA)_Txup^;a`n%sjyQFzNopj?Cx&pRikvzOL3->|Gk&a&DL`#6dcak z!?`Bd7-HpWEE|#E(`fGRuhqssZsjjq*y`q!6~5Qo4nL!^qlL+&c4osn3~O=nWnXL0 zedA{vJoFv1>X7b~o2Nf0_NZ3Vd^0@x{^e;stJa+jTwU{f)#BT`&HT^ld1wYZ^lWpY z-?Q*EoqP6v8+&ZvT)n$fuEb<@bGkvd)dsOvw!SlPd#ziy2vo2{)?Q_Xwb+b9K zrb8Z#>i_)NTr2LjwRbrSy1F?GSbY3qUc~mG?Gby15hefQ)& zPU)!jdCN%t9m}qQbJOq0>E|6eq-FE;%e3^6)E>=LBlPovbu7N`mFuaNu9(_w>B@_H z9FAYO-M(CNR+?OSZg#HLnCZ9eIvzjKdv=26khWQZ;JDURAFU2IA0C|I>^{x1a_Qk^ zXS>|Vkj-=+KPu#+(wdt+mKCV2nB(O7RBw!G^`dQpB_s8huk1lTve{M$LVeP}wW3>yK%@ez-3Boc+YAjZ3%3AHI~wUdZoM5hMTJ zM%C#4m<}D{=j?mLl2tM3tz2A zH{RBAb)r8VYb$H8G^Vwhfv@9<-lG!6e!4%Z&81!X7kqp|;tiK|R(-hZAYl zoia-|z53PVmF&nVDFc=B2ldf%ee-TZ?Dps5>^%4`N*=i%ZcTkCy=xe_y&s;NZJT|BN8XT2mEA`HUdq^vFw4Q zjleh9X5!*5`lBRm1U}#=le7`|20xjkjqvqI+6a8WPbO(2@C|-4NgIK0@Mw^<5%>m= z21y%%Z?MfIZ3J8kelkfLfp0`luCKlz-vYD214#uzRVNtJMxh{*JoBFkCUSx>Y$I+O zgPLAI^xmihLz0z$)+@kD=0a?IO6FrR1}fXaeE1h5gc6DUnP37d84S0{NQ|!s_qajd zgl=Ha(_^4O?9coXn8;wjEe;k%dJHz4TJ&L8fIrf7JqEIpdRUeU>`tV|05m9EAAr~r z&i7CQ`fFv6^17)9Q)0VhcIogykD-U|1;L~gz;#7hdJHs{)H7fMCf|Q6LgJ;vBiqHW zgdidSSA+BzJiWi;btq#=Nicz9U@mhbHWRmtLDf?5QZ!H@D4k2~rwUdwn8m@%2eU%J zN>vNvFaF*3)yKi=O{#5hKo!f`L?D!yuRnJ8n!8;Xv?<`kc~Xi69##4I?_AF}zSn zmIx{hLCXeUi8QY4sK193R!SI4=8rjIc?UW%BIN|MI?)sUom54!lIpglfU83C4%CU3 zU{S*zz<+g$p;$@v+6>~V@Vpf3I{@pZ4@Xiu`VQiaQ=K-G=qfU{5bHYtuZ7w*Aee}L z6I%=rR#JU7gZwJd{*A~sP_8662zsEtZ&ck;xBp1k9#L+Fp><7ek79lZS>bAOpBO&% z0t6(Fn0GL2P+IE4zRd)nm#Y7XD%rqs{j;2 zv{y$m9uCY;I<@#NLnDhhrXbRF&dhe)Dstjz$%f)W6PfBg^1 zM}6xg3?K6@22SmS+5<+712>sK?ZMV>qJsfpwWJZOUk7Q5+M{W35LN?;npn{RQ@yE* zj%Q`>WGdV@20r3GcQ>LUwSb&AuLRL%#xAAlg3t;4cr=XNp5F# zM1b5_Re^(_-uCUcJckck)<#3nEhIzkcc`_@rOtBA<<6g7+w09nt!6r3t~Og|)51BV zrY5^~h+)sI3w$eD9{sJc|FsZbxL=%@a3n)mYN^0#~R znU;LWx9qxKbMEge`Qu#{d#s$--fzdYo5N+icDr6{@#gy1Ps_IdIP}ZK&-is_@U*nT z@M+y&c|9(e@2~MTu(*BycJJENwn?s?m{_#I(6~r$(X$y#{rY_rXeVnr_=aeWo#p?_ zb60X^_YWy!dt7c~wfEVZts8TzW;ra{TDkgAN|5C|o}&uC=t$g)o4l15YTqm`@ej|w za__*+i+d8c59TBc-M4Xny5Qipo@+J8a7&@#!xs;petW0nu;yl! z?Zs(cbIeETbDs0(Pj%Lx`H0)x$*u34$9|a?w;$^__`K@@-qQi9oA$;AJd}xgXg~5m zK-l?=sb4)0j2$)U@~?__hbD1b?#qe#Qevyy>44Y7ZEueyWa*Ce@#=PRVQ`?vuK}eG z0^P1xx>ZbX5qjc;CEJ$UVyK_b_`D~TPMprA!)tc%O?5sU7-aZ9^|8<00nfQb`iGy4 zD_%Bt*IHA9pH6LBH9tRf)OOkT!Na(ZZtHY@U2PwFGALtrKDTCN`$752J)YhQo_lhU z;dF;F)wWxI1s>9Vd7=NNTlsB-JuYlEem&|;k26Q@Gv;TdY<4or9^}wB0>0E4{9N-) z!tpbQx@SGeEjoPU(Uj~JgF>76-CC3s<~ZWf>jSlJ?wXgYUiCV4)9P;Yf=y0Geszg% zZT-5&{+6XyMVpgzb&3b=+r4Uo|B8`sl6(6sKM+_}d2FG~H>JY-$#2f=*VYd`ZnON| zyG<73!@TyFg&f|!FUsbElWJd6)pN1jRvsoZHdiDVt(BG6gjmhq3!K? zyz!ieo6K3|?RNiWPs#}$zmwO`^ix@9_VBklw*Eo(@zaCWo+!@SUT$uA$oyIQ7Nu^{ zim#51zmm{9V`Gmj8G`{!Jh*NBrc}y~Ri2rta5>{*?J0hFpCb+y!Q8C4>=O>d*Xa+v z^?bu&3*pWHZlclVcN^tX?R*{>K3q1)AT4~_vG&g+r*E@4tDG@*v-&oYk9t_ZSux%wxdot9s1z(=|i8bb{h=$?T%?? z^LFf8+vD#YhouksQ1Mx(pt||3Yn3*`PWAnjaY+7ai>o%?ix>1#9(8o2^_suSa$zfe%=ZL3Sm9Z?GOi)LRCgLo}yB&k=Q?K_9Scf`oEF$poEK(a(@j z4)}ndOhP%}8~kJv$^qYCJq8KofN$`VNhk+jkA!l-2dtVPp&amyNHqZ;@RNz#b;t}7 z$^jp+9)pB(z&Cg_NGJ!?$nld&CX4Sq7A!ME0EDBd960<-60 zzCPqLVHDU<@)N+jK=O^o&>0QRAIQ~82nWz`Gi)U(-+=QRu+~_Fe50}ME)*-NCr&Bw z^~CZGGRHtizQIRhNj-5&0j~$^LDc7k%rWpGLWNdGO*hhDPmyi5!e|v6nKd;Iq>$l zO)T;e(~^4NWRl@SCg`w$10|P`B!~`BgRqi%;3S+4vl|gltlxklA8bTOzrk-}2LZxL z2{IGH6*6q59zb$YA5B>69B_Yhm>ME8scCJ(Q8R0%Sik|ecE|_O(Qk;Xq&go4;Z1n` zi1izARz_mcMzI=yrs&Xy$)b86BF15OFtL7v4;W2QnZSKC9-VESMfE;Xz&VNK8<3k5 zz$i2Z+K@PwRPRGXhYXLUxD5>CA0XDGBi|6sOsfBp0?m02d zV6_j1&ve?u5Q9l!O_N6^W>*jw3pyZjhtyr;fDTE6$)fsSh+SED8D zAk3utAO=xScr?Y}4pg@Ufjli`2Vo}F2{8$N!lDTfZ3!UKMiDW1azfg{W&gc|K%JXZ zCq$$<7=GzcDIyxhK*v=++>@cD?I1>z>V%kNLE+JaViA`RWa)p zqBK=*o z8ndH`2_6t_080{lCXG%p#AtG;UWiFz6dp~oQw)09aE*$d>;o+!4%G`0sY!-M6V+Kk zD~*&C0&tdeI>m@alj?<}K#vj&KLF+-04XRf;Ri9AR4*h2e3TgD0a`dcNcYlGeh_9- zy^s_DQex=`f`)Vl-ekrKCx5$TBO z>O!~_2P7(vVn4~CFrW;ZV_(be zG!h8!%;_~r&SK!^ZC8_h%odK+>zyaR;G)wJ-*zgxIcDR>ujn1tY1)GXwJV3)`xr*v z>3D5kM(pvIgW9i~l~FiYuB}bh0e8-oWJQyjXJ2j>I2lweUYo6aWFt>erG@+$oi)Ns zKjfkhBvkmyu6wOemRcP&I$%Pp356%h+AL;QIW+qkyzlHTxoX+e>SgkI2I?a|!3w`?J*?8x+jtd3cQ&s5 z?d>@HmXh-EK^_Nk-paEy)IUGj<-BUfGnMwomT#MCl@zc=Y3@~rUA?2!UDx=OzSwA` z7uR9aO}~*JMko}12^<@E#qElMw_WLr>7Ju+-kmJ=Ye@__1u>@!&WY zb=@+9)-oqcM%ir+KOBB|XLv`$nJd>>X`YDux?${wgl@s7cWUjinKI$fp0c6o_lh!R zPmg!Cds?a;6*6y?qekTlpB|A@PhP%|_wd8_C01#?MXN9NaO_fJJiPFI!WDz%FBW=F z8N2ss?ajq@akevz`CFzu+&yPowZKHell(g+HBCHJ{{U$Fzn*=eak)VGU5Zuilgq# zG~8Dmn{0ckM@H1K)RKOEy35F{cqfQbGXC`Q@{o3u-<%qoRIcgPw$-|)Uy?^CU-rj+KNF#$G`6PGje~&^m{`41>a}yNHOo`4xbJ?e zg*`Ty`V4wHaQ36<+Kn0C6{1Yli`*7_7J6)TyLo9vjK0DHJ%w|7U(5S%KVhUj zD6-?x!dW9&0vW-$iS}?Eojhlh|XTb2U41Wf*nF~!oo-r7DkdFd_MV4q@09>kt7g@kpF~{ zBrM{#GkP*clCUt6goTkLEQ};!VI&E}FZemwW{f0Z5qIv;12K|>g^?sIj3fa>8~N)P zNdj>k{suo8BS}~oNrJ9@ivE9LBngW|k~GwwNP)H})}BB#%!axE9drm04Ra|6HPIZw z?wpxx=6uW!fdm(7`$mTyA~KV5P!r8yhRsBGtI(+&k_pgGnif1nWG3aHCR$$%n~B6R zNTd(K4jxofY0FQzl#`lh^)qWGv_B^LdJxnLsN&Eeh=@j$a#9oRO$?g}7cvkK5Ml9n zu-DR7pl~TCHPOz=u$g2}7xdCOP`g455n2)yeacBqw68O4CKRmz#sbH4_%9q-=|Dt? zm#$AasfoM}!)8L!3Q8-GF%mJoX^T+wDQ7j2Ph{9k$QbF9^$R2pr9%-BjVAT9)}R+B zGuyjZgu;SLD_|v50%6~4x`s=i>Vycw8MA{4*aJ~-7qo3cd4vu`L^POGCnN=el|C$V z0Z0gl7BrCNqXQ8UnMrj*Qb1VgL&U)WAIS!o2w>9aics{aE=URxD=|U@$tL*!?E6AV z8|hO$kQ5+R`h>&`DnL-X08R&JPyi6jp|gId9!LrlE3pOzl5mjMqJ*wM_%QKlYfyMp4ogjojGZ1 zPSpO(VZUJ8WbMY2@%N{X3YEpFammfJ{&2V2pEyD z2Qlb(V3qJ;;QoKW2(`%^avNd0kiW`+)xHiS9*{VL>d!*Bg81myrg<;Cb?FmGLMB@%fK7w zg50xF#E7IfPQC9XD!4E+m?Q@U?ndfE(FSz(gM}bqfw~qPB>r*)uXBvl?T1OC6&YAy zRSAhfX)-5WCa{c0TCj{i)-mRl@ zN==wNWXO+X8JU!3>+a?*y_sus*dZ*ew~Xw~1=oV~iq*{hhPkSF6&$%btt#oIr}~VG zN$u=@$Hn}ZD3j4get_oMNeTmQTwD0aYvssmoa96~d26$E`^wW>&k7llc|xdo&AaTZ zs_n0u)ggH+g$1)bO}0kAP?|5l{McF*weZ3~mECPS`WsH~HMwTMR%O0=X}M}Z>~)i= z@_Cy=2N(Am`cb#)OLA9RR*rUvu5iiuR?{=XCds(PuHAC3)1pHTNi`k%SXCu<^ICW4 z?a+6!&g#XHEo+}2IT5`eVXn5CYUGWWZx1Sl^_4NWlQ(aMf6a)#XL>F?TcxtS?W&At zzqp?wmUX)@@-z2X&G7PY1;YWFo5Avo6IUKHP)j-S%HPR?^y8%VNus zofp~`Ti););=b$Q_B9>MirQ4{e4QIMROji4c<(hqU1Gj}&vsRwE^DW^=u__X(XLnc zn@WAol}?_LEEjXS)&93@f45!5S@O}#x8K1@tmEzD1>ax42^LH|Sliz0z0Q^s7iOjD z+~_pIO5;l4&t=IPtPw|DwoLlEEZse%<*uRX;pU^%1D0)^utZ}>Nl=Pf|ESwbc8qKO z*>q^%njTK;f_wB8e!VkiQrK1Z*CX$Hty^k+tfuqJk-u^VytU^AcO87;~RcNqzL_Vh}yTbZ~_`TLIW;N9E$&sVTdlranF_&hq%d~=|oTHJzC z{)&zj$JraW+}x9<0hT8R?+aPg-K#j(FxqKI-ufb+gvs6e#^$>uxTJpnrPb;EkUL`v zmVbD>c6W_p69hfCD;3v*nQm)0Ju@F^d9%wXpYpBZt;2jr3O; zUE3_2?~xYect7g->%oI2FZNxv%Jb$aPww`}Pg@??oB{5OLEwwnB!%+@0^9k6EP9mP z+ZK1Fr=e@)@BxwfuN@szPP)eF#cSiciVD(FSqm$Q7=ra!w(uq=dZ4QUg_nmG~{x` zg{n`kPp%ggWTqILEYFx7$=a)9HE5ga03*fq3okt9e}D0~f8M^RfOqd_>hru08Ji@e z#e}@HIow9$Nbe4rGd>Pi889ZpKhIpTYOAsHtb8v`|6ctL3>ZArBGuc^yYoc3b~n#; znPs-W`J4qBhnxQl>QVro7cD4I=4fpBDBR+%t6&nkvFjeY^!`h2<9qQncVEp(>%+Ae zy={d-z*GxaE$f&`NACuy`Q1=I*E%8l$f0AaepYr#Kgf%!UVN}XXGW^F0)O+kOWuCT z&2rLiOVp4^P$yF~BqCZyLk)?DsnJvo2^?n$HHU)kaA)VGZmt@3P-Di;Ram%#3R2>U zWDmH53hKZ>enV15fYgS+!Lkrh9~^if(MSjBF+|;R&<8BBAjlHvpD-DP1;sDXlQ9{E zg~=!^Oh#d0G71ZmQCOIa0#PUab!;;xqp&a;g@wr|EKEjWVKNGfxPyr7!DJK`CZn)0 z83h7a@=stg3Od4yY{q017AB*xFc}4ccKkCWbA^S;C-KvMS}37z8z|Ei!n(S44a z=dyVkx?>!j7c1zFSh{@fyybQ%1*|t+*Id^^*TfF_58`%(G&|;JzE2%jjDFCv>;tLCpa7iK^c(NoAs2`L{U z0A%=$gAhm`kqe;Y#e=|y7NUeOld2Su0wPO{C;^f=0>jfnln`c8owyVjS>g^eLZo7W z;x-*b31KGH^+*Adh2$YZP-3%%z=elm0WEn5VJ6l0FiFWGgGw=?gro~2c?g&D_ltS; zV>Sun$b5gmI%NoIA_aX?06?WLY$93#8lg)FeWifM!aZkDYz{{)S}kXgkrGx8I+ZcA z4~dR82uz|6(F=m?Ljw&Eg@A^I^Or!Q?ln_AH&g(avJ9Ub#55A}X!9>6NIml;yk90+ zSmZK+^D6YDfbu4}O#Y<-sc#_l-4dw)X5K9h&^VYt0yRVcw9+Gx0BlgwFf!i;5MuGc z2-^fx4+Utnv>(Vw2}8+Xp@BSriMz|d^;#Zy23q(LWF>W9WD2;W6e~f{>Vbqqqe_svHBCJyFv+_j zU$D5r47n%%tHDe?^CS%&bM6Fh+C(o0#26v>#DDdcsc)c!h0LH=As4ckE&}X5@G$gL zAD~i`FpLZ$uE-gPo63NW2I!TIYd-2mka`9rlE4i46mkZNl^)~_L`o09XaDuSMLqK* z4IP8-1RDsNW&*D#5}N(1iA;U_s1uOLnKLwiGJJCKzU#MIJ+(Bz zLN!J5p=%0xRKU-Ps$)&-F#|5K-txo(5OhzmsVI@)`x6VzRZ=T{b`om0@~Zy6J%SxE zd2eDuP_)sd9=$H8wd%;<%*kAn+^)64n63+V3|OardM}%oR_vbqJ*mPyjQ=rgMZUrN z_@ofl8;dYO-x=SpD=V328XeIqxKsA+s@?Ce`oB6nch|LjnGpTk_Ri1VUmiT$Xx(D- z$;aK|oGZc}^VcMP)X=c>8rpYi;E;6rS-bbY^vfR$3Xs!DS3>%Bo20xc=lui&S4001 z*N%RXF>5w%sd)>{=5oCjI%w98JE)Z~)ve`*BZm*YyHe6NYu~SJnd^D$er<2YnYrNi z2)TQT2Z!AG(*DXbp4szO!-H8<+OKw=Wmxs))5OsOymgj+T^KOo-V;-G^AW`*X$D?v zMtaU(aLo82XALjpRQm-dTDcs2vdq#luvK4|o0|*N?LLvFfSKN3=V(=%aD))&yC3mHDUA zR4$gZNeVVeR(kF4k|Hx+_vMPDvhjmXPMg1(H$rZR)mJ%9J2e@;oXs4i_yfaBmdXjc zv|n<_Z<)`ma^4q{=MNQQU-p}+7?Gy7e}l<_so%$I+ZT=g)}oinvdsBclx-5a#IzW3 z@BKz^``UpEyXC4(NO^apQqeE4TS-({fTG{HK>36xZN2&^B&T?u9dl(#d;9;Osm zIr}Q-%02IM?mzF_r|v!0v(Mgp?X}i#f0v_w@s9DLz;Y+;9qTq9F$|29|GdV_oYTvq zlf@(39y3LgLwmXVx9?edJe2cnm|bq9Z@~#UTLZh}W8<_F{jQYcJB~T~W#>u%vfYU# zy!=E zD7|o<_jc0T=LcVlCLFR--)k7CJUqZnF;L#N_Z_X}bLJ>LzMq(>wLC?1qZx5`hnRX_vqn%<~=cKb)dU>Buw2jQv$ysAwx#*6XclWb4 znJ<)=CR{e0rSaW6rgxOZfN$|3PA{{c-dNG*oL|U-YZWu>i<(>ai1c+fOYfz>-6pP$ zup)na^~HA)pJ%t+ynD%X?Mk!NannU-A_HHl*JkFPO`Lti?&{q8M|i#MHLlkz-)mkw zFD~ik%PA97zuBkw1YMf>YnT4z5bce=x7z!aPu6P02{m@f$X&j%wfpzQc0R#hyRSH1 zZMd~j+l({5ronfjoAwrI6z*QzBxhg8#zO9pEj!-Xc{;~`PvT#9@$=PNFki0v^S$%? z{Ej!@aB2JxEq~|iGZN?|h?)530p?F-3Au~b?~DUFbNC+oZm`GH8SXaT{@O&@3Odsg zpa&7$4kb>e!`$b4cr5@0g#={@?)(A~DS8(A5LQLtt}Z6HtBVOi#3DXJ=`DaeOnwVN zh>5QQ77+hHsZXGtA^r{ZWN6lce?tL2P+te?>-fnScLMjds6S!c2}r>4Z}5{b?u3JJ zCy;Z*pTSQit~-M99E>}GP>A{r#+{(scBB~?cf!HA6X1&BKj9~1+z9|0sXt-d3G`gX zzrmw{aVH!KcT!(jA_I)15K3uCDT8wDglYrC-vYjrg+Fv$pa=9aK=lb>j&cd@FPu+6 zeEu?+PlgqigCPX+`c zvET$02!xqT1Sf=qJT!hd7`2Z8q z31KBI1|*#!%T`jV6S0+$h%(_x*|do;lNJYZ2r?PFX7VZBiP%ggx)Z`on*SjW5-gjE zxg_Y)IuyPRwk6$m?=*PGife}JcO}qCgk`CE(z3M_>6=n z$VPf+54Z#m=O~tKq=YAMK@&P1Cgg!mdzCR#({J$9FQ0ZPY5$< z9*9Gr1lctc2~UIwq))-h83|7aGwB|PIQg?|CKjGRSw;x!hmr7vFq7_qh`5AhGclJ0 zo5_GnLRd-nKr$dsA@vCtA{-7t6$Ef-N9q%iF#`|8p?e@1Ag9Fg6H^e!0RNMb{)8A! zx(AX0a!TAA2UZgAUlJ5a2X_wL1IYk6C03(QW+F8TP#6AM_X11nm6jlz{%3)m4A$9Q zL1HcmHdBQ7B!4f@(afYb_8?OUESm`n99^s7Koe6Tgw>3=Bxr8Z8+&kMK%GKd5~4Q_ zRKuWOEul>j8B3`pCCsEdAtDXK@@V4TIH+hRY#2-;X$5iVK1c@8DKVo2HhE(RFBrAP zAqJD~gJeLR;^5Xel$l7P!jV>6NSH}?LNcIEp*o!@B8?&aFx--8P^BXArPG~|45(8` zuwo4No;VN=p$lw`fF;Ce(w&eDs8g6&!Vv+Q6WtAg)?z|a2DL>l-3iHnI)zS|Jjj)D zpzjC|_9I5Eafs2RJ0TfRr*LZ=I3$6Zv|;&*q^U{o>j8d(^*~6hWI=bTAQi`mS%LKl(ppE%e?VfbnJjrDI(SNULBw zVk~Q+Bg@HJ2g`$ru_b`h;lc5U5w?VQ=X4)Lfah5@6N5{@2ch144T4J~E_AvNBI-o! znn@{JxR5C1!vbZhY@q|o$r={BMq+6TQm;V~kEynWNB2MVFi$cQx71U}VQ~wJj-?j2 z4EA{_QomfWNKWfx<53&B547CFyLxNDHr44F+!=dcsy9EA*8Q&0oHu(Xb(}hUvh9nh zeaA0V>Nu!L*pI@hFN?d`&YEfcF10G~ae%MQ`b$enPDk+19@YEQC_a0#W(&h(Iqlx< z4+{GJTOk*TKN&rZ2#C$&4Us!J2zMa}t*{jTJ+9d>d~>lT$f=b9h) zHjeF@ekicZMXQ*c5zj38sobry?G@5hr>BGSg7uyw)UM5#bm^#3&r(64q0M(iIbpLE z1BX56H%(V%MtbVuxI+;t+RG2SYFHG%?b7dC!Gzkz4=wD>-(O16JYBWu&B+x{mCeT4 zTD41WI(X1J!*(A#+APZG(?h#ezGjb|CH5+N-BsgfrI&>4?{ivfh0U}_QIi$NCnzcV z-m^36dd~RXii0CEdTigjHO#0Tzr&g*U5{*EF?p6{mG)yluiZMr^w*<{L*l9;lNP(~ z3eTSE>F*JGDst!y&GUYj%FjBC8FJsSz{1Y;`Mi-zvA=qr|Jb<6-l0vsZa>(otGD`H zk@@`{r$meOUET&*PwhLSW#hcqPPg{h_3iM{S7mzmJ7LJ{?Y-2Bj}Dm|(%v9ItM8OD zkGBuZj+G0JJ-W~&@y0hNCzYusy4#ZnG}p~pH8aI4dTmLguFuO8ysU;N8_%7U8{O|| z!T3V1SIC|{ofCF7Sr=vdq4b%;BfTS4iRaFSbm_AAo0&g%zhl$a8U};zD(qQ5p(I{m zidCmoN7b8$bjuMGIQPqJU3h9|^W#g*TYGQbm{ojn(F@Onw$pVUc`NqU%WU^RsdH)H zdsjQVA2j{$>Hq-9*rO(gIR_$&Ypktr;+23Qr?9wOs+^{zs73(c; z6&4Nuy3=Wh?kms46$;bVY$&?<@L~SEtMS7s-|A=HOxvo~T=?Fp_EAg!fb8#yTR%)2 zq@1#-tSMW zS>$lnTKR;o(e5adX(3YPGyetL-YB zKKnv;S6-EKw!dk%`}2dIQNGvvY?v^ugK&G#Mg?zIMi)*FRvn!#|E{0n#<0Sf;f>SZ zI6k<&-@#93%;k{%SuN7a93Q;pl+8T2Ht5LbB8LmTgQnJYdvnun*x2VMCPl=KJkOag z(sQ_ZeKaW`N~tnJqw3E%8aV^ z{AzT=#&NVH{fvaRz%=~~u~Gk_pCR<&|4Bc?A&`eiRYEZ4&=0sX4Zztc5eV)~!yyP@ z#AmQ@h3qeczJ=u_WEUdz8!TMGs28}fPdyN$UN{750X-0-Uf|vV{tOn|VAKmLx0B)) zjC$c<)C&irUQinw@-rCq0s$-j4Sq64y?{0v{|P@Cqh267r~ZUdFC2_|;b7DYkVf%m z@RKp>1+}Rm&A_M^4o1B|yife8o_>aW3+x_9#QGV0B4MhZp|>U>=LpMYVgU`PJ~;4Z z7%OP#tx3ok%(9u3ga(y^(S=LIX<;Oxp|>U>*B8rXf`&!_vk)c0OkuS$717W;lW^FC z5>i(v#3CAOCBz|I69xqsK0V<{Y)$MArT{}*2tEerDIgGm!khFZ1A1!`KyAS4XW2|l zZ9)C9AYH?V+Jb^jK0Vm1$5LeHu7_Ae1Nm4}*pwNIX!!JCQ$km~{|rUJ&3!<2$bp5< zR76AXO#;24*nj6Bq9JGeJ5fQ!bNSEzuWql0=gc=6mY9cz>`|QDdE~JuxeSKlzedI#whs? z_v(2_xPRl{4~q$num#Ezls>#eqv)2v~>YGeYSLtWaK{m4RhI;^M>l=E0E> zPTYn<*o+yfXMj#Zw~~F&gQ+cC)K(qJ84SfU0LY?SiBA3OzHxC+A8_MPA7ZMVfo_g; zE79?uWh=3CMgYC<;C=yRpR$gMF{&T#3ND~=3cTv#{*J?Y{8 z2t#lS8cVvt?t_@gH7zL+BQI@*VbcT2DqY3}$y;iu?J1(!&@jJwP{OEPZ7a z%%oS@WPsxm>t^6EjO4(G<-$NW17^~zY%;)cp?*Hb;4dH@0MauNQ{4=hNq0X)f`jFk zPU&X25SXEMf{5wDKsN(s()|ycI4%kmKrS5^O^i!{601<~cX?0UbDIPM*>^o+$qXDi zP{Y)J@mye;*Rzq%3LtYd@d^L5vyg8Dxa_xBvS&ZC7U4brCZ5<)Puz`9H5PwAZ-tm20v)^&`)kehMC2H>;q}VU$avdb+8A@d!BTF}u{ip}9^uU!uh$ILGk?sh@ zTmp{NS~C#N(hqJjKy{gb4>tzkA|&k%g^sB^&WEUjVk2cGmEqPC2V$uV3O1yc$_yQ!Xr_J%8Ugh#O?bS# zS=&u6o{Od(T0Hap<8|EdR!1upni=g*d^&V-(`Ehkr2wUfo$DLwNXIy?)F-dAne_q?r&uh;gWuN4)eI=Jng=$TjZW_Ghrktbfp477MY zp+YfdRz_2k4^5mj+S({B=xb+TV^MZtuKCB-zE*1zU(8on5@h;iNzk*hnbn>1E;U#z4RZ!}7GhA1w?r@$HVl`!d$1#OA ztuzPjn7y>e+d0=4v?{#fcDm;VQ_nTddfLm~daaLlzq06-PTy%8i(l~uo{HL@s`qeQ zYsFWswfrmhPaYVO{-T%Vq}J=hUiG+Z{CM8j5czi%CM^t0ghAuJO(|<>_^aEOaTA1J zE3TiuxA~Hj`knPQy-se^nb}eEqe&C5aHGBkV-r3JdWCP=xgjCm;@F+NeKZ|aW`)`3 z9vhc4b5nI%qktLrwZaY-1<1eHW&dNsP94>;`d$@7%T8EsnRx7_eT~>Xuf98?u z4ZEwIRJ1p}dw251#6t&<58rM)_f_)Keee2b4Ss5wHoZ-%wb4WSZBsvPCi zb{wd&cc#D5lT!D0WoB=tYfslWc6Q_g>0*7{)Jxo*OtPRlyBQGVEGZFHkv z^UpTsy6il^?T%jo?_J^AvmHDuG&B5z8`v`P4V;iN!k_PCpObSVz5wpIpl0#l05ZvYpWK+>{-Y1RBR)-{@9&ILv>ekIp!wg*LrMw6u#{>vc6P>OX5fV3+e@KNWedh#3Hx>4hJ{D zfpRzg6IOCih%fjsR&tPSjNt1;A0+e~ve^;(0V_EOLJ09EtUkdI83>B0e*!~f;8F?s z8_)#cA1L(+7eizq0f7HRX+%)CMf_JF-W~M=^<*xF$Z&~^u3!e_S*g!phzztoz`wyy zChqhRAI49{5E)R+;tx|=9E1cU|4|H);bMpk!beko!cV3kGWDe@EYdQuL|!aafzZhq zhL=$jArwNH&?7x!j^HB!I~8nkA0a3mp#T6$Rp3^cw0ZzAlOF03Gni#F0db6U03d89 zpc)LNDqto(){_BM5#e44sR|Gb1W5S9i1z|k(t|x2P!$EHppSq89OB|auPdg!7s!p# zgFTsm6`^VYsvk%}z@lX+Q~@LDp`HwgPKfqm3}HP2{6J=z5UTKa4Au{a9_rO2K(e#U zkx&KE9XXJUFor3Ggen4KshLhNn)FalLhC&?gepXXAt=mq-A$8kiWDj)+FU?4BlRXjr3!qB?t+NJ1j}ZM zl`4=SLsSj8?+7{p>0J4Q_%|Qv+`$_nG68fUFkeH76~DG;DDJta32hbFJLCk3n8ETXYBT0y^y%o z5O^N}96JBiYKT_v;?lej89cE(ni%;4Vhb*$G#NDKM-xd`I1nA93J4zpEr!S! zFq7tm$e^8NGjSUt5eTCpyk{s~0W)b{h${o`n7A1c%uy~N(HSCN5P_7wZ=$pW%cBV| z8*Q85%DE70FjTI9l{6-(tQwk zT(%bw62YVD9J-SOnTmgPD55!Z9^D1WfI21yz5rpt80BX`!2&Uy^nnna3VHeSnZ2-jwrqaZMfb=&Cd_(aes4 z+>4T8nE)1xc9yNj;gUv!B3<_(E^*5o|7T;> zi3u!9sZ}S}=RXptuB;A}OED|9F)rWiG3(xrse1%<{^`{y zXS=sH>$g7a(f_52et~vPZA+`rrpin7`#s-Z{b--x!mB33hRIuBc%wKsTf1E+$HBYK zyYU*|%PTAtKJ)YLUlDXJGVs@@xjzoKa?@5BY11fKb>#9TAJ6y&FFW7O@{6XnV_K8Q z(ycz{MJr+@7pEE zDqXnz-B@l}{J4|Bxf;*5*ZeyDab-4eS z8L4~JZt2c98dO{ZS(z`JUYak}GSFyr^H>y32nBZt-9L zz~e~lb;Il_v(9|)yQFabkBR>4{RWjeJ*<~4lU%-ZLASs5Et$}UgM&hoF?*7{23==>F4#)r4AcN28YZ?SORnXN|>hAz^K z6ecKC&g`jbRPPt|S1aeMdh5#f@A)QSdhXVPzUy21szh-=S1k{iXW$w4A~0q46j~rCiVRH?%tM(ayhZiov-?uo4Nj6GVpvrfI)TPwUj}bd~J1= zk9%rgHF~ljewD$+Gk?{NcV!N)=vL@$TxTZ*u#t_^YW(Tf2FZBq9>z%QT4y z$5Qh9miR=F8Tf~KW;s>nyz?>8==A>{j zCxweSDO}7+feV(@12HEBX;I040;Ijv5BSNLlfuQE6fWkZa4{!^i#aJMx+lMmIVq6W z!N0*z#+($C^P@hD^&}K0rJh8Dd<)oRu~SAAOGKc!z=J_R5)o;;0l`%;i4GgRNOr6w z&pD_U5Nc_K=$^uVp-g_Cbm-?qHo1w^Nk@o9A^4~RSEhsw6b|c{C*iC^tR;4a4j;FF z%R#6YEWI2Aij0!pFN?rL^8MD;f*8YlZm{>y?*XKru-RlJ;*%_9l~6G$l7K)RTZ*$R z#0|8wEU_W7^nS5{5Xg(*jE%Bj=&X$>B@Kx`>WrU+n3UM4Su&7P_>1`@CXo1o4U-9< z1gh|oqSAT<$N#tw;$ei63+jV`Q5FAEebgOB2@?_R=PVB+)_cH26o5x(qW3`XW=XS= z{VD;Ld!Rxa;;1l@dk|Ji*tFSmCwNa3b4lRkbK$lK6SW6nCH;*PhZc6P-=x zSdiEQu95zA>#3VDCak1q--#0y%T{7I2`qOL5HT}=lMqJIbMG<$V~Ld>=pr+yfte^h z2rKEicNuW8_{4OCv^JD|!EJ-kgKucc{Y!2Z-Zt%p)2qKMVzEeH%`*i~8@kI3co#mL zup2~^{N5xbOhxvJ0w&ZRj({YlplpH09Kgu|J_Q_LI1Lp4>X;{CcVv@+g$;ymT_QNy zbAa_Af>-ko7D-+E==-7!=vNp+LR@WxxP=LZ1f7c{jUtOa29F|;#88_*eBwd%Lfb7$t1n?7J6CAc2OmNcP4^#sR}9$yLjMeI;((gFsCn-C?5QAgrWMNg1%O#QYIN zI)nI>iHL)+lK#etn4euIi0~ss+aBn61$quf8VYn zku71_N`l*ilqS?zGLUc(R?>Ynk;-A&O1QTyfM`Z+r3uUc?%&J2^?Ws2<8)t5@Oas^ zQrxqL8cQY$4q`0nLM<84ufzflY$X)Xq$Q9LR?-XmGN4}}EP)C9*AsXGD4;U{kPt@F z=>%l@kmWZH1QO_ADYlXUfP}P?p0prxn=D(2`}H8y1B@jIu%!i%kXF)tj||vXVkrme zn2yGj0fB@xlkR+Ez`hbANZ{Bj0)-J11PN&--TSb~zM_t8Vs!@vm6BfF0SYZzCXG$% z6_uzG^G5(hjk>xs;g7&L!v0UUlEokgTZup!p!I_$i4a4OoqG5pDYF8|N(oB`6*$;k z;3kk|=Ax`5B>i}BWfX}#gnX&pBRELgSQ3hF(mOo>1LqaBX`rV#N&4mK|chs ziMyf}3t=G|J~EO8X@{{$ng|DUw*K zR2-XaRPHykN%I!9Iw$2PP7JYkzMWYyX`y9x-(L%l)EYGLKYC#JFqIZ9UgkZqXkz>Q z+`v%nJ96eFK@p8#s?P8K{!6RJ3(qdR_2a`OQQ_X2&}XlEX5TMpEf#tVy{ft1w#mE` z4!h;NLIxEKShRh}V9`%AF1Jc!-qc@nL-Jl-IPa>|HLvOY_wx+HHV>|tS$6DQ#zm!r zTjcbttF+EIseRI0=`{S-#U=*VHfa|$Dcac4YRinH!It4IXYkg9`*}uRm_7RiFW1VY zu|eyf%Km3oJto)&ZOyTUt7c!hXJc*k*5U(}c?d@;3_?e(b+--+(3GZW>=b z{H^HoMXPC1Jq&Z55;qkYT&(&0>xROhPX`93IGx*KXn$eg+bq51ULJ3kZP~cG-OJ@p zr7ibVW;8Bo{$YGOr4ws9cI`esr>}AQ?k`VA$BsOC=Tlqn7rA#t%Z9J#znyIQ;Ju%T z^^zNY;Yvdt+&9DssgmkSi}o=LUGAbA>$^sErHg*w(Uv(HmhsgUyAJa<>Mh;! za(?yeEh{I_AE6hhKAu0qwWG@EF?Nof*SAq|?`yyOy_(9y{>9H#wvO4ccxPhIb=d}?Kr z=xc6QES6b6bn9ZMKJ%vAErI%|3(9?)+jh91m*qCFSJ=`qh02uQ@!uao^Q7GQt8SCO}PqdKKn%Gt#zw> zIXZ6qhc8D`YdYj_j48dK7rp6NG^ek+$HP|F0()LtG|=Ej>E{I;-guv)M1lKz&#cM4 z3XF>GuZc0Zt?O!U@J@C1y+~oA@qr!_k9W%&jK`J73D0C^YSrAN75~ zyDeFl3!<-lzu{G!UfFioqn+dJCu(gmpKUVhT{*d;2+~aJFDR8hAb zJ>2JQ>Ua2MP1WdG0~ZghHQQ`4BRFPdKl3)$U5DCUIjG&q{}Aua<@xVNoSQW%@yn1L z9rJ{rVHN|=WJWtLoBA>6fM&w0wgxY%TFt2`J``#vw`pU`+-+@2a?jehJLKB>xKHM` zDXf&cQnB>RrjJ*4t_=u2HfDKRl>cYdUoBUj?&BvxHNqoU6?lIoi)DYRM#$ZXf%G8$4J8EOVPpx9xL-tki+VB-BTIM~S;E7}64dCFd@^xc z0ey=?mef~`$bcXzR*j(h$0S!oYS9QBUnLw;h#69Umj2&YD5*n=7%PIM8UMhF)IFxq zkDoFi3BoN|Lq4iGgN6hqJrkY?04XG;iDkeM6zfNTpDuvq!T={i7)cK|h!xM$tHv4w zs7i^TxQVJ#D3{%!g5=N285&9n?;9;ZmaW8E61e>(LM40@HA>m{h8RnF7)KugKi$e_3Va~BY*m6G?sL~A_GX3SVIC{kcT81pdsN&Nq-{7 zlD>V*fKkQ6O>MB10+<2PA*u)?={q?Q|FAnP#cC34B$W3=#($U2(iRWB_$UKF6>e$+ zJ?Vhw1HG0&O=2pP4xUDgCB68_BA<#pNFYH8YK{qgJV9RYkCryS{k4SgW3e7VxkIsx zg!0$_>SI&KJPD45O&Aq65Mw|ne~lC*P`s5wE(H4&EtxI@43$_sf|T5_fk z!^nQ{0ylP`uq*_S8w9HmXEFhR5LQYUOBM?g)Y%7jt`S?wL_C7VlIF01X)RQ*krniT`R@n5p?Ya?rTGTQ9$$lb=}n4zLAkMe@&*sST+(?wJCU5v^8>| zD9i-@K}<`Uzb5l^EL(}SBS20<2scLJ5j2)GhfO9CS+){uM@*sP2V^~&bgv=ClIC!D z1eBR&E3tM2TggN`g2s~Ou*vi*%T^i#`VhHnQ<$Hyc$i2>kdbt?5Sbfh$x6yM{-%K- zgaA+ufCgeL`uiHM>%1lGl|0NpvV-u2)BPA2+>v5V3DQ${op zxN#!MO19HwVipLnY~k8RgD4R30GiT}IXpI@Qq=n;W*~E&2&BttIuWvX#M0ZP%tNyd zF|VlECoKmA%%hza$$BIjF(-3<6{vC1nnFS==5 zc-~&?lHyn$hbEUy=e3AbT=uxEtAn0G?lj~1<)@8|euf8GeJ!Xlf3v7UyK3;8E$x*Z z^E7n2M{O~?IHROo)2wUNIU~hpb^}UGXPNrybq#f%{H5oRb5&zn8s_b&ZfDWQ?2PLK zrKDc>mgzMc#JFEBpy6)`hCJQsKPPjaJxq?vMJ2ORC(qR9=hB%PLy5e_8f*OP71y`?riw4}RIL zm812wx$XNIEvT&Nel^WhzURaQhXXEWLKdy{o!q(HuEc(~InU`XATzR-8Y2i!lGWc`n6+S?$?95cDkiUMQ*OCXS@t9pNqP7IBWf( ztyhl5tlAvv@0+<{o5=g3c~ZqlHRmf4OA?X{bmxrvq&dX-xPh+s{)EpzCce2fExF6J z7AN=ad$(i3<)X98eD*KvRF-hs9tf37>Q9uAq9x_A=K;xvA5u z1|`|~$PFEL&#cDqVo1wpySr$ljP>yCpmsncKaI~-P;uySBY4V*v4`}!ycpDThgE*! z3q4K4X{DY?L*y^bGt2V2ub&eCW%B<0gXgC?x@?I3dg}bA%hMOU9o$3dsj+XA_Y8-g zC9O=ai3G1p4K_|~G<@di+_SagpT2l+*1p-6goI1Gb}PB(otph2Xh4T1t@ektNN*Od zW>K8){MjyG(0cv_-Q|szr||ZlW3 zqT|<=P4`+YnPion{A|1K>s7O^*;eSNeag06HN?H@&5OVV4~_}eE-*hE*XD4R_K)3{ zCx(4lrInXB!drBAVTaKUk*hnb-s67SKYGAW@2kzX+=bCNV?t8RY#f) zTV3E5Hs?Z0l%|T^K|l3P$J}ay54|k@W_run{EO%4!^&;;8#r3T%v@6Wdcnr0S504T zmG2j$=;w82wd%!M#kl9+g{$x7HkNOcq_<6YM)5&g)hQeL?V5kN-;v?7n>}CMXW6n7 z%^e!|@Go3;ypKU?ahT03=W&mZZ3{~}ysFCaT)WQpjk=|NJ73g8aLoGX)rhEPPiN05vu&Srll`?UUiKRh zu9k0+c)8EFQJ+eEs@HDX)pL8{dC!S2Ms01x7~_WdoMsO&A;)croBZs+ACG=&};g5_OUmv)49e4)w?S{ zcwC=#y-D|jH4`W9e7qyMvG0+P6~7us$ZLF)q*9Tfi>9emNRmc9wh52qZAh(B;gJvy zIU_<`;G;bri6*cL1NU&@;T|rK8>AE#xQ7dmfOsLP1wqXse!yQRJMo}DQNj}*(b$am z43>vrY6@f-sV8G<3Xgynpbuke3J+6Lc*K2o;!pU=n3}@l;wNKj3J+6L00Kb$6PTKU z^4X+d1XELZ#3e`cWK2zgD}VSi_{o@>!o$=Q9;T+C0~`53Oih8rH2w`mP2pi`3J+6L zcoa3Io=Sy$3)sE?$2d(Q9mEa4TiS97P#qNFKY(8h@XHYS}k#ZOQMv!*6n+Q$58F5XJjS_Ym7Li%x3&vCv zRH;GQqXyL}zo#C3MX<=qqAa6GCS1f@fwN{qij?1m(W@LR^0CCCDBP)rnt6y{A{0oG zr-h3{bRWkiCX4bO;vO{wgB`|>fdmEFD9K9pya)MyF}ei$4gi6@Vg1SP_e-x2vB=1x z48tvH;B;jQYNG}m>{tZ%p)ePX9z3lV<`h9 z78aYBKvhiyRbM8|62eOQIe`e5*?r?;W(hPnGzJAK6J`lvCEeM{fQf}=C+Gl(I^;5u zoe);iJs**1V0kPtvqT6AH*j1`WG94`^!=O2g0O5QI?NDNEOes-#*%^Tgs_snmlG)( zmaW9h5)c}ps~k+a&Jb48>-$9hh+QkivJ<#6j+(AA(VY-h(hI9HKxK)UB@j5F+xQHS zC4`X@>ib0Ijpeb#x)XTgd8D46rp&ULSa^cXWI!z;&7^xD84$A|q=H&C zj3S6#Opzjrf%1ejlkR?GfXotOOR$*?v?rvQbpOL9GmDC*|8MOH*eGEf+0TfHwI`5} zMXhU*_5|t;e?9uv%PoS95)N)`;-NFpLu3Gm8RYDm1Lu zlLi_14++X2!zcl(0=+R=Pb@;?53(x_BxwnV4g+8b8c7L)1sRaC#7Y#nF)Dxrj|t#a zOilit2cV6mgoVRmo{W0qB4`-~8b@j*8){1f_R&m~Fe%v&cTliMG-KnzN$8&qYG^jn zkG}QrQ_`tZ;MgD#PRjY0#5yRBy7Uu?+1pfH?Rdj0W&IrYl#EPy{e<_(w_t_ECZ}MCJ z1NooZELimYL2}c^&IL8XzCN#p^>37zU2YV2AYZHN*a>~LdQMbrIpX3$#BzI|NAlL8F@gg?`)scCs^R!zBuT&Z~q~^H5>&WepfEfRe zQ^W3y{Ee+uy{2@Sd;Y0h-xQq)pB&FX-vcif{hF>3*s&xwr1;<%GoDwUz_oz`HfU=% zPrf+L>Fc$V?R&165*>JTXO#8#Rp~X(5mu?%&)R&A0cp!24lO~0hZ$6e7oVZjnTNhU;CpR1cV7L| z->5v6zkxH$e85?|9T_Px-`+%>I}<%AiZd&>Hp_LwC!(k^AT&x3EMK8EG;9B?c zZVN2h{or1hopQinqwSbkN>@^sFM8dh|K;NzZo%ogcc1pPcGz!!=Z*P?f*wWBO3L@^ zPB`>@*P|z`JFM8{y(VJl54lGN4c{sMOxJyKtGd7PUH;kdeeqY~GSV(|jL8fyn114Q zdeYhPe&YuSQqx8}Pf1JMol^a7R>A6=r~+q(6h--PJ0gDOTBn2=e)Om`w+*aXS!Ou4E@k&-F&@3?aPOZ z$64ea?38t)|qoKoc0-YkyY3#@=e=;||w*RQ%AFc1Ni73nN;S%XPf9FEaZ5a_~ z4j%}AGd6cfe)-eyHc>}4mzN|2O+PgwsK$BvY|W`J^nzZ@nXY zLHB`swjlNwsbawWSa`S}3y(m1A$$&UFz$qhaVL-mrv3?xJ3%Nl(o~E);bGhfPlTV0aVIELAwP_9C#c^! z^&9+Tj630B+zAikPIwr1f*NO2-@@7uqJ2F4=kPJ^1YMFPKEubj6F$bB@GgzsOq)U?7bfo%#*?}PH0x+h*hBm*G!SvJyF)LV#bFowbOFgJ$I+A(_O#Xh?u#R~W zf(c@_vTWf0+sy_*aP$zISVb%uNF6N^jf4-25{2RdnCJ{>B*;Wbqe$O?{$KD6IsdTS zgM+{YaP^}>xySD}OwU>oTMkRZM@>Mn$b*`IQg^d~d^8wiW{|LSG~2GS>B zJ+$C|6HSQ4JXqQRMMM!C`WZ<(z(z^KC3n-nQ($N9}80R|^n%cP?Xnv@cfEHXeziIpD!qBjM{ z&7`9ZVI@7HC5|jCZ9jM{F_{EgiSS_!NcHN)-DoW7#T*&Hq{L(rXoY7C6ugFXAd;pf zy_Q3q^;jNC&aH1>~tWqfQCTuvVj93f|EZIh&0sL=8ttFDHBbE z7VJ(*Bo#46fPB#Ypf-(2Dk3G61O^-wYk$HP5Ekgq;PC%Fn~CKjT&Q+~bPT7FF-Ycq_C!(zc&}CYo3J2hE1px zWgx1(^Wk0<2d*m!AZS495Mxs*^oTHk5;h$f0Hwsr5O}{rxLm+Q8bTN;X&~A6GvanO z;1D^GN@5}nA5 zDPbS4TP$TK7bF&lfJRXWu91mAgfx>DDv}9xmPV7>GR1rn=yL)mA%agLl|lsBNLxK* zrk^DXsnufwJ#DxkXW+oyGj!_}NkoJVZ0dE-X@rsVEt9N6uxuvQh`@1D1R4}3O>Ias zXq z05!UiGkV|r^tVlC&S-Tj98|cwwQJHi(XL^B{qmYeZ&*C3rX5+~ zU->q+N^|O)!RBw`zMO3nG--%>Ww%zQJ)eGfIwfkmPw^V%ratNsnVlD>xm>#N{zHmT z{Y%J~s8j6%U(11NWJgq6$3dC-DSkfknMVUEa+ifJFZk{m{3OmVG-E{7 zuE;G~@2w96Zs~pYpa2@46~>i#OW0bm=>#jr~84Tz7p;xbu?FI{bbo)~whN zENAdbYwp;~ok|wm9Chen*^jBo4zsdMtEZ;M>c{m@yLIu%c!kzYhDW(XCCwf>%B6$K z&*ci+tWwu0>*!hO>{S}=k$int-z|0_lS?x@7g#3tb37xT9vaxu_)X8FL+*T?71-&< z?MqLd&5Ze(aIdxg(d#4IUVrKGJ$_DBmZ5vF!iSJ{^M=3iPgXi~*yiorie&E>pPsZ3 zt!kefd2(rPg!>5V{yXH49WESq%(11_=KKX8kIgkcRJg@VS#C9F^X4bE>!vKP(H6du z&wO$|0Uf(>wCTPm3v9?DUHjWE{^tS6ZquYZDr4m*@q3! zJ<>N*-7SA(edLI~J~Mws-pT8grqncMMdkEq9dm5g#646R-q&xYchbVy?%xCA-fO*S zWc|#)Helh}FJ+A!S4L{MMVFM^+;L8>L*I2)Yt43N``JGAo;GB{#kaxP<3Eox`ZTWX zEdE)i4dV)pTw@jvjmtJj7=7@zeC>hLLnkfMx4nNy&HH*x%pjr0mwtQq{0y``dP{}Z zY=*^!6TEBjbLT%^a`mnI#JuQLy*qZinsn6V$4BFc;dk@~maIrTeM-1* zkDp<>OP}k#)r}|ZbTHc%v);YpwW&?qtRur7wFsZvX4B{;TgTZc7JV6Y-(Rwmsf3&0}KA$R$M{?Soz( zn!Wneh%%kEy@IxH9oI`Mr&+lkceK~SdoQcH8E>`P?AdPLu!XKMSr6ZYowiKlo({4O zUNK{wyn^Q7{$YEJ?qn36pPZe1SGV`b+IJUT&Kf(QX7{e|-48_g<|UWMJNF397DTSy zq_ls2X!E@fCZ3tx?OG$@s?Wd5N6z322OKi?@f&yQ%gCH9DWT&n2CqHE<;OnVQFQLe zlhS9B1RfIl*!~IjAor|41Rf+~;=c$y__(VIAGc27;j ztEMCkL)xY0&D5ZjDNA&6B+eg>05_?Q&J z$D|NGCWY`ZDTI$nA*lO1^>zGYiWE{$;6c6x?DqcK!Mnb|18yuE!>f@_-~svkKeM;w zv|z_FoL&~gJjncs)B+DMPr@0Nn64}vh!q}G{sfUcgu=hv{I7qi0Tn!b2-&Y)iyO{> z6hH{`nSsOujiQ7KJGsbN8b>N*5vx4lz9hW#hE*Ogjm9S&n(^xpw9mSjPf9t3L<#`vgog=+PdaRS}N>S52&#Nc84*-@}T?0uwgeS z^r&MTJ$91NfbG9lu>_R9gG$pPc?VPuq!~L2wLsFXv9vt!%f%gLsBK07H9=GE->U_6 z2T;<=U_W^y)^$LY-xM|HLCKB=w0QLwFl6~8OhOj9OStSJ7Isi(G7)y5+aeOQJmgu0 zrT0y3hvJ?y*h~h>4$@5ex*<+dESm}D5>02YnUJFw{k_mnf9Len198k_$4YYJffFRv za|V^Ngbgb@>Z}_Hrm^Qw@c9M_I*3*?<=M$dh8@eqLx(jR)X*W#K?98l>Y68M=vee6l(z#aB(yYwj4P1dpj`S-%|<;7 z>4z;AnM>G>0OH<|i&{j1OW>mBOOV1gMj$w2Wh5+Y008H!Dfo-9%OZw z3EhJvMqtguCNc!rohdh#*T!XktjVBbA zYoPAUQp+_4j(Fs#x}y50n#UInK}d@jW%A zWzL4s2zQm;%{{Iwjay`CR{i)<`_$3xQw{s?y`KN9M0H#f(b@-hEAw6`x60{V?sh&Z z?NiF5j|($C*IqsGsw97r={FObZ*jM5KKEMDs7br)Z5&QK+x4on#B#jy{fHw!pJj4V zTctJbo_Sq0-ns&Y)t^a!R znOJRw%iHa|^XDztQ=u)|v{lO?Bk_=B-sw2b%FAw?q?q=?vXgzjZ0Z|S;VQ42BY4?; zgKg!vg<Y1^j*I0QmC zmgcS66#r(jC{0EAu~*k|P9JBrJ>T?3R7e%{s^ zv3gS|~1X5sf+ec92JbQp}h+NryI>B}`fTWRt6gwbhnk z&pL@_PjT&WxR+YU&Aux%W^BDWh9}=@_(RWF*L6##x#;`%coO7#@6h<>*OlKU*UX>Z zBj0Ja=ZfTOgKw$tnmbczRJs2x5BYhTS4KU&-Al7Fd;9uBfot^&JL=pp+~9xQYf$sg z@-6oF82K(DYgEXC4E}=Iwq|{;6w~HU6G9D_lIpxJ& zI(Qp@Z%mhHo#f0VN!lm9^>VsywpRBLsC!YcHs5Zkt_Oie*V$Yq3S%lpw-G1heu`%f1B)doWs#dzrNAt`;N}D zyG}~$u*}La{-5U^Tvfu_OsSs<@orT*heY#^6GKE?~RjoA?+^5Z*4uI z?9-BW-rwZ-{ORVo8WBzM6jJs~EZA9U9;@artZD1`@y#Uux7R*Kx!s!m@Nbl1pc4|y zD=yFXxDyk0A$j}BQy+&V{0z=kF4_^L`a0`iOQoJWs`*g?>w~UjOx?I3`F_sDE-wNe z9?@9vDs{<*tBW#5d+j;1c*MrtuDb`{UH8*1erIL>;Uh;EZdIfW7q$1 z8I(|{nPm5@$)4(y-)#&l58RtNx_S7Mk^3}fy!Jf*#XadjoMr2Ti?%+i2R|9ZL--gT!pHCsK8A-t#fW+`hKKMmJOtg`A`Qdv5I%;7KzWS%6NZNX{T}}Y zj|Opj0@;J%A#m4*_)L8ThzuBq@K3@`NR;0KTpPq)NCX1SZ2npSr8|83Ntu`<*cJab zp$bkMAvp*Hz>q*Nfvb^lEMd^w1sy>pC5~hOzY_vp9yRBMdmwPx0!H&6q7eFM(i2C- z`eJD`sgtr;83Hk#2?Pv6xQZrKrx!Go^pJz-N5qnaRFwH!6+*W1M(ht0X|wEzB1ji0 z5xWx0R$^HQg7rfz+@LH3-u0iaTf*&4a?fPhOe_$A+W^o>1z>p%D@5pK($_e#qqA%# z7K*?m6Tqx&P$(jCH0e{5@HZ@*2{kGxr@&SOuMh6jFhGJ3%ZGk{lMhc}s|blVOt=aF z&72Up1d87vF#MNpg#OOy6-mNXvon}vN>eNyftslh+Wa&q9jOzp(~t|~;ej2~&`T1c zo-eou44KkIdJ&HB?^{q^^Cav(GGI*M1~8CNC$1x*1~5FXR7qC}kSX%C#nKQ`yEp=X zaG;Efq+f8bU;+R!f%z+`R!STNS+)}QgaHzf0E*8{2q2`H^qdEq$SFLS7y*JR&v3f@ zmt>^=ibkVJ-^JMkPf=#_;9ju^p#o630wFdU(vHw}abzZa7ncEkN=yRbz=0C(vHnX& zLLW`~NsS0W*qxi=t}y@&fRtfFViJjCN#DeY@Q7t2QEeQo<8V!2=j3Sr3k5dZvk97_ z-Z5?ygNYCV2o)Q^e$+Kj(%7+BoxlddNxQ)$9483v zh)~Kd0wyLByU>z39(I?q82mvkW$DQuU?bf_%K$Hh`ociO4+=%NnG4(Xzhoozwrgah zgz3m8V2XO%NIQaB5+)`4$}6#U1UxhsBS>Z;FVw@dtLK_` z2KMgyD+Y{|WG2cyvow&@ia`nz5!{~y2@{0V&>(~f?E{Ua1Zf6~Xen|knt+c+@@P2m zfc&9h`A8iXLto1*@}zLcUsp5&r!eRO11?&ckRQZE^ob|~suXSkgPaU%>iaLgN8JIG z@N(J2O5r((x*#Jc7tAO0dZGJ^skDMW7)6QW$YOSkI_ij}BGi`iFS19yais6pMAe4f zwM;A)wHU{m$6FsS1D zj2Jch&!#M?xZoA(FG^^_lEs6 zH!3Kdvng-n-S;NNYU{7P^B)m0Wb5QxQM!{xbTPkid*85^MyIaLEN!h4dsg4+wsOL` zmHzEsuekPY-tG+v5jyMl%?ZyiaX#AP^zoF#UEBCC+BjjalIz+ts|rpTzIALFbJlO} zNgdIQ^J+8pM9BAxjb7-mBWLY0wU_Q4W*sSYjX&7V$H=Kinu$YYwcV@5ExRO|z35OS zI<#)o*mO1HEjZb| z_GmfXg#VC`l&s?GxxtinhHzgJM?>>Gc?o9kI^&ag!x?EW$dfMDj z#Wc8o|Lr>tj8%IZy)dqCRLbo}@}4u=+rQLnSvc5qn%q+8ut*7xL%=LNxY`&`y`?fAiW%LB{YpyCcW zj-qTMo80#XZm#z(alCbg$ZLAb-CTY6QH_(TUCk7I&-ba}H3#`uat0k3@_dot`p6yL zhieZM2L)_$*$`@cxnP?9iE*1Q9k_7LHOr!pV#;(ix4VWjEe<7Rb`$h%_hjINSTKj@+_ocV3o>qf7>hX-(6+FCwVR#>{rRpH&~;7(IL(wAvf86SEw za)rwLw5%~(W_cXhy#FgVSL=J}*gJ`@vx>|^qfgiNIoClHboER7oVnLcuIFS-xclh1 zaLS{AvCAE@`R~pA<%c(aV4i#M`0*nlw&6Z<$JUP+>*@Y>>zoz|8%{;M*4Z}g$${a! zEl%7C9r#SgLNR%bOa9Y?EtU?ummXj-Wui&Q!UId96f0X4@6wq%B0cW(=$c0#RMl?U z##N?y&267CVA`{;>n8LYu+99|SPREeTir#YEz_s>pWNl!wA4Tu^9M0+jt1IC94Fg^r&c2G~o z_z(fchX^n}1S(hfGsrs-&!JQssB;_n8;lPTV0?%G<3r$vH~tKz2N7U=hyde5P(F}) z4t_GmhX^n}M1b)j0*ntqU3AHBVSI=H<3j|*r4(c;#)k+nK12ZF7x^s;A5za#@nwKi zM15RLK=Hx>Vuc71xIp3|;QuA_3872<=mni7XeS;5feX%x*LEXm`FT`^8~GM zK+a&6&4g+ZYNUh^d#Ljrl6aVk{*DZwk0z~fK&~&A&4iP#05a7a)N>OS7ZdmgF_^T< zfq>{k#IBWMnFqjU(QW7kTf9h|nzYIRxiztDCf0cX9zq1y))?tLh|#1~tjUd&WivtN zVT=g0sEIZR+K|oz4(1HP23oO$+}2q(6RN==H-mB!B>2EdFw%Jtqe)NLlU|128uZ z{IhH(ZUO^y6i#u3^aDCgGMJlmH_0ZNirO{B(hsD}hEM}(KX_awOGtv7B*2R-4=3V! z!G1}sAy6_hQh$(6h?YAi13Q-OgfbHXvTzV18zMH;59Y4|5Q%QcgqE-r$N*F&)`9?f zM}(9~Ob8?7c+wpa5f-yMo?H=>k0DG(lcSK~2*s+r=hjKyH$wlo~pl*h0w+*63 z>Xe}*Eb+RvlmB?@hKhiYQbdG0uTWG6sawRrNuR!_6KGy`#ts*3L6A+HG{n+@fAB@> z4j{cADj<@6ELli-aj`rEc5x8|k<8>F2s=n0NEu+QkU)fsB%C~mwvd@TkPt|{nIkjl zzL8C=6&_9K4g>qQIK#oHI}A)p2^wfJoy+n|H-@kRjUwa*MQBvfdXQQ#g3P3QMk3kF zl9|-Ih4&EcZwT@ zgfEiz#D>hIdmT2hR`{i32?>%KGo+0W?_9#-VL$gKmXN^4ZUT3g|0N-zzjOMjk|+(a zJ2f$KgbZ~V=}6EEr=KWUquZo zq}GuP^hp#EkdfZ*?(3FouJ*Vb_vvJ>(y6nDdKYABr$3CBYj&~glwaRlG>w>ZzIEQz z{gYE2ReJu9w<`~XvTOSxOG(LI5uwP=jF~}_icmzB2-!o~_b6ql?25=*p~#-S?4l$^ zrDR{)w2+Ww?K}6(+&wf?@iu+m_s7$VGxs&;KIdA0*Y7G$o^rY+J+M;VHeG(GvCkCs z?NtzWC`G(@)+29gmgNcJkMdQk&!hCMCZ>)SIb8|4QjqJ{*xq-A?7{XGl7%Pv22RKC zj-U3MzM`&gUNxN|f7&)@w(NLX?%E)-&6w$)mQ=qgs+%((?_!?hvpXDUI(I&Cl8c<| zjX?n$`OUbs)HEii$y?1%+a_uh4^1#m&6dJP)V(B6*2dR=gnZ8NY?K(o^^l`?*sumToD`Z)T z1LOV!)#aTUFH65Y88E&)wR4NwORCZHR>ck{JggGWdHam6y?^!DAb)6Nbya88(3*Cq zm0p_Coz{1boIgV5#NK;0IaTGJkOf6g6WhU%sVC$f>zJgA_ZmZE{E-r7l`z9I2~jgyeDP3ZdVqg2<=^7 znwd_q2~)@So44_W2@1{#@`-Y98j#FpG*6_x!^oj8=-jd#Rk-2&LGPggCH5DL!5_4@ zHQVS%OLg6BVCvMqo+?Xi=f=;azt^2-=3E!Ey^>7eSP+vh*Y%V4+M_WNsndZxq8ml8 zt-jZw$I=ycDC=3wx6r?=S{y~;bP>AX9`T1;M6ktq=R3-N zYGv)nOX_Q4(>up??`dmc40EE4`M6mc&ICjT>K?hnPDv{s?f%4WZCK|VrC!j@<{;&E z)vcW_E!VOlo!S+bIcMy?MbY(vrrf67e3R>IO6!jmYDwweHolRu5xt=+E8@ugjA!4K z3hl#uSAt&Z=_dz73^n9yQ`5~+bJ%klc)2ZWc{Y*AosoS^?W$rYQts-i;P>dnL)TdP zj$A?nKUY?!+82Cb#+*B8xw=ZepmBS^hBhOArVEi;YqL(!++cDJb1yo4M2DwVXieI; z4a++Hh=NS8)D#QN3<1al$6B#~M+AlAw)h*62{c6w4}QS2eW2iRC{V{Y{#P&t0|_G~ z@Z(UxENpl=Zm11_GGM3TKtK!ZxGwBJ;7^7bO2B*s{3m0H3b20ze=^Kaf`S=Jpi!te zF|bY9&>zDLCD7mp{I6g{3d~S~f*DFs*v3z270ghAf*DGnp_{nnFhdCn+vJA*WB8L{ zh7uIaP=dmCB4PgqmKkO!LBR|qD43xH1v8X@0yX|wc!rV%AQRkMSa<;b=Rpd1r|k!i z2!u?Q0^ffLG$L51jWE}OotQ&nDFKZL0-8kua;peXq4?8S8A7LxF!lcrcmW|A5iG_8 z8cz?fNlT&;!G%2pLymFxi^SUrJahP?Ii3lfsn-iVRcE9$NB*? z0f!aKck+8Skp)>I!e9ccmPosiKof|F0pJ{zErOVgmIg2Zk(NI;otV2zfOSecZ4oOLvt^5b9RsW5n!DX+OL?iy*nBLB?gfml`kzPA00{{_ za8goM;VtwJLJ{yl3`pHCjZg#{{6SpwD(`EF-{T5>Y|e zIwrh{q(g^*D$Tqw?gu&qXp%*vLkyjhm6*;B&oZA}!J0q2qWe<8WQIy?T$Z#~WGt;O z$90u5!)oRHD(?+sjW=#2Dj(J9zr#Rl+u#2tVZw!zi;aTDPWsepnNtRc<+u1wTshs( zXnfxD87mik+t^yRuxh`t(b3VCS@H5A13H=SF6SpVFQ-}l_*LZ^@+R4^tpP_8&vDX+ zJgn4TCd-ZSIPC3A#m}=brOsx5&DF7k)Y0D$heU=nl1;xEQ7?7dmT;Us?$pQy>daUD z8+UdMy*w@B7u(uy{y8IAW{CUkjElJQ>wOtnZKuTPS_<0+8~HBn*t6w;g41#7=Z>e( ziJZAV(j{W%J#ugR>y~q?zg8wmy$QR`@@CR*l#0!ZeC1<>%K8|d^6KdH=~}}qNBIf0ri~T{Y>Y&;3V972UOeGub-l${O8>}I z>3ls!KBM{O&fE{)$%t&K{ENphq2C`-_|M2hi=1s5bH9J}c#>)y4b|N3fQe=GA}NQf zM^H){R0mVgu{}bjjk@dmG#NV6KI*nn89kxuZ6@o<-V|oC_1oPOIdrBg6SLClUkR{r zX3i`Nik@`juD{7VDY^{pJ??SNM7LyhZIDT5?R|Nje94hb&EeLG;q+hjy_sm(nSE_a z+tBK|`Nake4%0gdwBwi?=CmIkOM0=NWKE6T_kl)JQU3%Lr(yrzYa?|jm8}KRM=G1+ zQ+C;`h^U~9buM>X=Mug8Y9+7Pt?QQWCIvl%ku3$Hw;2u186%5dS;gL3Q@~4)raI_A zbI>T&Is1TKd@Y6NN`o7lSr0qj4rzI(9wAv}r-mumyj39LMNXcVMK|~J8?0&VC6o7e z-}1CB;(DPfnWfb8LAOC;zg#JeboiuJ_c7a4W^dSp zcp`rJjQF#sjqfj@zl4o?u?IV|T(u8&&_4O)wWgbvIj@-2Q41T@OW7^mteYFk64l49 z<_JWgogVQ$3_%2?xKv4*mhm0mPj6sMYo}en#E4+kG~+9%aZXT(Jh`zVuUx0-;Vkmu z$Fdg&RuZ=lQ1y_t`1y{NDrdI`b`P$;E8p~9s$N<@gzeKkk1OwP3$Zeq9p`#Ux%`SW z+OE-7`|6iBm{x(@*lCFf$0xPgoP%6aqBVMc`pmqOhMpc7HE);4oes}>RZzNDiaAX! zvl5-`{V38#bfeK(J&(FO;=Uo0#=?i&a(N<)Twj}R6=^u>^z94BPIlpg(Iu&6`|PZ( zW=A$YkJcWWqMP&dH>dE4?>I2JdR>dkJ%yzFC{I*JMsxhj`t;IN@q+w)3icmanVawI zQeT-&=nA=0|I37LP5%`rGy%l&u-?!hE)#t22;du()jB z6aC_oqCo8HlgIA5Zr$=qP&C0P`O=HL+hz~1ABf-cjq`1cT`Cc(5;PG&^3Ny|oJL$o zRRR&y0T{%hQ6y*_r^ZTAY#qxPusi{50gS(ZN2;LUkt!%Gr5Oa5fJdr8jfgnd1%9Lo z_|=c)Ffar=SqHlc53)eRBq)H90Jj_slc1onJP6>A(J%=L8YV$O!z3tRzy`bu4`xBb zBq(T@1O*L~pg@$#SP9WE2?`n}K|#YLC}@}j1tRXm|1tc@FbN78CP6{NBq(T@1O<)l zSAt~5HUwe+frp%+VGOHfmu12Hp)k3Ccng2??nnapB|-q7pO?KL1;yl6j5@ zVS3;na0C9JC&5+6{)8NvFCGyWd$lk|6K4A_(V zF?I%Y;2}XBZ%LdaM8^T(ZaHbB#GOH)K!CFjf;7-+A_?~3w~Qq7wvZ4PL`qUXysQ2L zCW1SI5K2S>{p(px^Ti`}21)0ucrXL5@r1>*AISK91KOnyP0T%&sf-c72kDwuH)d|@~aCrd| z?CoP@UMA8=nm zvuUtwBOnxl8jhC4HiDCr&=~y#@~a=15pdrjUeG0BMsRWxTBCo!e)R)10#Kj8IfiD` zEE+R{6_YTk1nCBlIwS2h`T-jOIV-AAd>=3+`k2s5Eqls8j+Iw3Wja~>y8~+gGZt-eq;?en?xjp z62K%rm@owiNP9p7;Fm-}0trc&^uQ&NNhBs*#fL}M;H%Gzryv0`5*qY>KzB87UJU}Y zS1yTx1d@^1K9V}|2G6ZQfCdQ+Xe#|JvSeP~h*0&AoZkxO96wB&4#!=b(Xm2+^K{)*t|2`Yl>y-YX?c{$Q(=u&yH^ zMq~l54919vfzsQeF(P}NJCp!}$V|{-)g(&US#KM&`pe1^ul7A`YS_6WUY#;xPr$0V z3G4Iz7T2iO*K2F)i1I5(3)Q7*4qW~uxJitX#$cj{&a2AEaTU|Eo$6xc)C}^Qm!FT@ z;Zx&4{%Pvt_*A{n6l&(Nm)ziNXYE(Hwbf-jQNBT9Vu!zcs@x=&H@$t?@^qcPs-X+C z)tEC08fDw5ODaxz-kACNa$9@hw*E__o@|+hYZOdSWsOO_$;b|%xB%_YenW|707&?3+JTiT} zmugpy@4hvq0@){ucHXwZ@L6(X?5ivcyuuI{f0ca&+sVOLxP9kCzJ_tcsZq=40*KOYqQ2ca!e#@lR8f~xr}-53$m~d z-E)H>&=sMGvfftqaMH)uF0&JxtM&NTbArx&>yhi~2OakcH4?(v?*O}*Kp+l0*= zS=uk?+X(hWswNyFmu%(uZ2Uq0i#fk%E(Lp0-WHR=6I;{{&PMJZ9}Y+6d(N(1YbV^t zotUO))^qMc-$TnA#ZQNN-zyfDR|O1YpRgFHk=TE;aJ%igaBlrqZy!B9<8ppTzO-pa z(jjsM+vJzcZyq&9Qu2II^%Ng_#2{cEh!a`JaXH__BZdbTHrss~)^ALVNOU#*#P?h! zt2u9r&xghvPZfonm6>_2Q#A2l^cXD}tS;}3WJQkIKJMUC+DgZPIrXe5A@ie@yY@S@ zREd6_`1_;F87pHC9t_-slu)C1ztV`sJo|#9`h0s1$G`wn+3mB-idIAok7L4XULT@L zyD_5EvtRRrSg*R9)qKqjSIybjtW>@^D%mainyr^t#?T_gnemQH8IV)u&TU z_R5s&yRZq!H+#Ex#-|wU)F+ee*^u3%!+c(;24#OvLSIqJ(rv{V*;ilZ4C3p|9Se*%9pK*i%e5M~Gg@Duz`V1^Jh%n$<58St;*Plg#nz&C_{h5O_M zPz>B#fUVVER?+ZQ{s$NXXXgJz=rP}z60`G=)Fc)VWZ1-@)BwI-x_CqeRA~Jf;Ey}D zB$5zc;rl`30U@b@iH8swiyjpN2}x`tN#|<9m2r^%#mb<8NUa1W6WXHwj<*0>Zt&Q$Tn>9_H`>9Fwz2GW4UB(j^NPGm@e3ylFCkrF77 zZvwE~-$FFzy=ub3$Uop-0^`PUzzm!p@uxvB^Ti|fiU~d4|C!$gf0+RTG5|S1b#FYY z2*6|jCv7oz1=J)6{D^-*yCexD#g2ag=N`DnOQP$55FAAI@gJ}*A%T&WgxY(dxf%fO zurxFVBqou~Bz>T^i_uC=wbM!jfns@x~AE#DE(O>5SVCSfTLn|USCOUGYw37EPA#(#kNtdzuJ z$OnLoM2;ot&CL($4gl9jgZjXqfE5ev4G@yZCI1IZOaBdc0WBrKcth|C3CYEpMMzA- z-TVhkOEADf0vhxJbkc7D76d6XNKC>@PC}+7oLPjS77~yh23WV>5_kM(b`S*ZS7;Kl zE5R8l2yB4_eHr-ntHrZ*0O~D5*Z{UHLfR`0&vStQlF(Sg-$E`H+!i1qkwZwrxCU6S=ARPz; zvjCrt2VqD7@baQT7;*Z}aXZ-W_D(WQKl7n3@jBC8-`a|dO^wVzoKzY+t(2v?yz%-I z``$OH+()myw_xyaI8Syd@yfY^fvPf^hs(%WJ38~edRB|mtH*7jeC1Vr&3~Vmu`;>p zs(YFanYlWdSH^BTqAQ>FgcotH*QruiMnNlY5?9SYzVgoLg2#5l^f4L74la`yp!B%^ z$za*Nt*=8ehBvZVUy;<>CTGu=z)ZI~c%yi63(rIP*E^Rr*3m~9GSF*|(*%TW%=4dX zszCEU9jXg1u!|n@>%4q7eRb%@fg|31r}_u=B!y!hual=tJ305Et#%7?U9RsIsdxLo z-s$Gsx7o82IVWeOL#gWg*o=blTJ9yuj);OVH|Gx7pro7cHaQj~d{bo;>VEuA{966T zJ38cidbhl7>c^^c*9G%7Z#?uWl{3k}$6zf=FndZu+N71dL9NNMAr@h^;=m*tp3yt+F-$E7@!H&1q= z%lbHr)B}C77XyvEj&M_+G9jO9sb2G%!5}r_n7g=gwhWJL{nvG$Le~!1-aGyS1eE z5LYN8k5W3p*V6v#Y2<<8k44+b7<7)b`e}@?G|#qkjg*@`Fke-&ZCyfoM-Zippwssq zPvV(xA43NX>Iv(`roL-^8E5X3;a|qVSVbF$UTK)c{>pCE8%DPn5jTO?c^ed65uY-O z#%P9>W24UKUi5I3i)p1))!XxxslCF`O;&Sf@QsWZ{*D`u$FApAXDH=mJhjj=pYB!n zX64a&GnK?~yvsM^wcSn5+%9UXou;uuLncocUOm=2H`u_MGkn&~faStun6HzrTEWy& zS(MCKZA4F8)q0u7cI#||7pNiLGZ8kj?3CESID`mf*c{QV;mClHy%^*S47Kn;oL9bD8#A}Qg0geFM<>^+RHMnV^QaS9x0fS++uxNwq065{VN0=mnP z{)VO)0gw#1%1HFDqk*5_HIWby7weKpO8h<|z->kVgb-{95zuXx__de|ZVZ98!3E(Y zk`UfUaHXLbS^`h=jsSOB3cXlE2#ro7@Vs#;0uqY}E;hEpiXTLWfJ&K&Ul-kee%}D* zM|dhpm;r}(6F~07!EpqGJHdNL0(1g+-W!p$UdG)ZS|Kp6p2kbqS|3aB7Z>JSIeR0+V%i1^ju5Ztv90E(5!_RY64 zq^u*%M?JvJoKpBQ0@q4WMQa-u3nwm7MH>?ri`^Dx_U0BVw{KtR?BZl$V!P6#1EH>T zP)yxnK%!cnVwo8~Wk1nGCZXp`n8?I7AT4O_!r)kCmz>B1@>$rKLpK+sFXzKA)t&6k zG%Z{J0k5d~ZpDQeK8OwQKldEo38;*Q{l7o&M56BA$WF}a%7KF(1H1?CuCL&{z4^VW zKpCRjFwi+}&`0=5bn50On-8?KOn+qM+R>ih9Xpt?dyI^{@7$Wxe$Ty`v$j{R?0OM? zfc@pbt4#OKgL0?tKh@U#W*vJbbI2}=+WUeAx(D&W za+W&StH1a;1M7F)J?VThuJ7I$TbZDfmvvDOTz1InbBOT_FSJ`$Y1^LTcT5C`!c!wEsL(aW7K+=Ogf`nw zcK9b5rEWdGFJ-pi_PgM6;~`^*m*UC@?H3Vp#xrl;_Qol;s@+ZV8Y$c0oASs}c-(VV z_M=E1J=urIZwf-XDYU~MAIA+8arCH+nQNf8Kdmd_qWe_UbElr_{yNV){3Cwb^zWp7 zeujM7XL=`K5AFKP8{Y}G4tT!v%R1!Id1I%aQA)5`uJy#DR2ceb7!fR+(7NLzr42Bb20?)o^6p(9dB$uA@Ti-YPI4g_S`gq^_ zfuy5~l7-*zK8j$GBY!-+(fd-A6!VDQ*9V`&rZu$lFDoh^=&8*XVyl>&oU16dD?zN< zdMk6NQ!NB}EN{~pvUMj$#RSTS!i%?1_+7W~btu|nu+s%WUnK9N+_#RCJ({;iWh$;D-Nm(BHIG^$T!j3usR zX;`st#N>mtr!HM}25%T6Mq_WB!t7^3^-~P1L}Zev{V6d!1UvS)sR>bSz4w5M>E@1> z^Y`my#02Vkg!5L(a;y$YRMMAUZ7}|@^YWS#%cLkT8S!d%?KbyJk9TTm>F@Zsy(m@B zGsNsvr#i3VUWzcS4SF`Th{zj>yN-v&9nWB;V9!1k;&X?4BogEDrFxb5oATjjTBk(C zEt0M%2Fggc*y!J84SDd;>u5*DCZCJSsXpn`UvfnEh8^(>R~NEG^UMTydF_=cL=Fz9 zUcA=&$nw+1qZ@4Z`?qU++T{M2^0TwI^o-Biie=yJE=JUD*md-(Jzvq~T3cOzy)|C+ z5^rPro32bAye_qy+M;e`t6`tGX1U%LAF;79@~4NizA49ExMr_$@p4)a@=^JQtsm%G zw$_iEvXbY2p*Xmyg7+<}Mccl3(|&yl(WXKM&oGySH6q8~)GuT6vo+a9@%f{0pckKu z{)lU*Yv5sRGr`g`Iiky)U-?H|e=;FF>r}M;mdd_D^P&e8RF|JR_LI--L6V)$IsYN* z!$%rKiSo@Mx$eAE!+Y9G4$XZ*8!_$};ga6l`@MPHc1 zEV3~%L-BIQqkG&frTMSF>rC27od0rm{n6z)g*$Q|>pweW)x>bE&i9>2y@>AJ#EQ?o z8Uu>0wwpybyQCVZ%EvznPrv;-B)z=NMsIq>%JZQ<>&-i4_*C>7r%F+$eA>%6be<1! z8OG(j*-(1&;)bjQwfDB=H(Z)MDdHaaq?=fZ!lP{cH;96>*68GOUJX zb;#MZeeVOSlxzHFipJcH-hK-Ry_a}p72mh?lCxJ8v`ViSwP-5dl}^9%QAYgpWCr7* zy=gBUwoRK(SdYg9jC6j;!cbN3Pb^>6-ZI7E!_F7BVbkeDSspL1`M(b9tCq}+&U7y5 z`gq-%>53Uyo9XhkS`3HltCFIvla4JbcWGXhuxtgNs-`zZ*{;Zd3U*${{LMlJ9ibU% z3Lm8s;`WaDe`6f5nKQIX+92tg)lr*o)~~Ys+dWCHeJ2wSgd=@Fgg9UJ+5JIaW!R*$ zW~f(3IH&(K?VX2(o|NwPuE)GqynE4>zb$`ujdbC@$M-d!3a$Lob*q4bGNCl-DAhR{ zTInW+h81GEUm0#*mptSqbBK3Me_uU@`usq>{OubqpKoQlsLusQHLaUux^8sQ`F(ak z6`PvH2P>NEWek_*Hf}YQTlo^f&_`Wtef5I5xZE@InM}$TawWNQ)MZxmJj8qhkevL_ z?Be2k0^a~@ntv*C;#lC9>>JGE;K#ts^ca|#9s@JeW3W71P*D+PrpLg{^cXA`6Z9)Q zGyQ@(A?`Ct6Exr)NJ$XUAOYG@9E65w(4!~`oLw;_@sPpF#l^u{T2$2C-Ce}N%HGA^ z&ce>p+Rj46%-)v3Atxa-8xmAuBmhQH5;)*coCrc#z!(YId_eqwK@g9^>`ZJeoE=Qe zER1lH63R!qfC0CYNDL@w0aqN}Nu(60AxROBYW^%8=>i2PM}~k}C_uCg1}uRv2E+;= zZ-@kM9u(t<#xwAn{_|U&A25FG@E5GO40ZG^=%w>Kj= zkfIiL!miGu4z6~hZW5yA7Pj`z!X|d+!Y-~Z_DRVn>qjZp{TW;i<3RU zSs^8j8{kC~1EmsBI|fsR0e>4f(^8-WB@U=>rBK9^!O+(P*Y1zsl2C5aRaKCZAlC&N z*Tta@J3zG{2{LpbXUHWEb?i$L&$U}R*}FOz89BI`+E|+znK)Pz3OGM}`n%(UK!I!( zh}Ho-7HS6rHAjeW19aRWe^LJae>*($70qrgeW2MPn{r}iK|)E2 z%g)utX1>OszdrAC}KQ zeM?Ms1)NowB-|vMtHDC^$Nt z?HS6AR!k+BeK0&$W`|x7n`(9i<(elYH2VW0mNWa`)J#p_+ICM@q%nRi;`#mi_=B;dOQesxDdGajk)re5%z3B}4$ZTYO$5eQ5PFZ@z zZMRpicDr*XQ61du#H{X-X0Tx*(jjjAPMN31b835Og|Hl++$4?>3U%S4V%Zh9;~l=M z3|@4jx5`2!xhXYZ-c+%h-+x{kAiXnPZJ&uw2FrJ`o)_Nv&b)VTROe>8CP+vm z;#C$xE5oTcu2$Qkqe>-RG8k-rVr7N$NqauMBbl>TLfO$5Qg~lIlRu!i*6i8kfU%oO zFOr#0TI{BO(~!>A;d0%e-e`4yZ*t;+8QME;8zPB0>O}Z42pn}B1=7MK9*!vKuN-xF z^b-cpzBFF}gG)F6KL4GKf=Yo^OO*=Rnp3Ps)I}>HD@BsYtUk{z;sa#{+iy z-qjYE;a~NBTHiuTP;hE4yp+xD!I%6OMN*p@^`^dV31huorP6XgFl0ulj(1d6mxp10 zrlis%r`*GLI-4zGJgh94JmiWFo%NY`*!j?{Dto%4Jn531$KcB7maCE+EBhbWc8_=1 zd~@z87JYg#jB-+Mmr=pv!@l=1pFKGfy}Tj=&d|(8(XS|5%jeC)`&#iG?PJd6WcrE{ zm2BO^fiu^pEWf1KT~R!i^Ug6v|5@+2THaCV15#@Yn5Iq2xkHUgRus)X@mt=JJ8taNt=17yG(TiutqfuP091Uv=?azD2qziVOw`kAE zF}ol+RB|+>Y@~Bsf_qnjj{XYcJl#UwWlA$Az4E>tS=T1}GHL3jOyERP2DJp@O58nf z-X7PMuBgHz!OOA{X}&3suNrwqjOX)zsB!Sr(-ePn*`;<})${I6;{nnh7VDT8J?o#P zkiW0g+iD*fb@LPT&FQVFxxI-ETZ5IU zPX}=CND}fh9DRE4UKMAbWy6Z)9Gm-ASuRIj*cP0~7R2@J_Gb!p_lrl@pq!J1J_o6| zg=Ho2S=HJz)bKu7UZ?Iccw&zr%c%?X_f#ZKH|{B1>vwEo>SPKneSX@(6s>fX8{OQKHHU@KLMVx-e=$;M@#;I_4=6(zrxL`RLBYK|tdd>>l z^H~`!3KdLjt4%YQE;H|LNjQ2XMexOh`)+pm@j}V(&k{eaNt(*$Wp$*I#W=R>#j9)x zvpJ4DFBWo!nyofpu4(#JwD%kHW@#^vuJ-2G$wLL(8E3Yw+vC4Y_WASZ=mD?u%Z;~f zTkcq?w9VKzAF(Wg!?Epf6d%j6e&(Z888q^5PJ}I+kV0tY%A9SpU})R*5HWl_Ggx>l zMM7~)ya;oAUgXKVZe^DU%uQ9M%8M%%SSVXmtEhsZqpMoa{brJyFM{&y{a=1?dF=<#i|>u^!(mQFLv&C z>VY&B$08gjl|RMUw`Pl2Yj>m+Fv-OqGHWiDZv9d?)c?S9PuA7)74G)3L$Z ze2ZfD`0^<~-KLsBv!^vX$D=^z&Z%d*iKE{~bxJkfp1D%EPXY7LaxEsUrswqeGlN^S z_LIjCX4Fa~8muFi^An6MlUVM}Fu-#&ZI?E0~e|)NLkt z^6>59F725oiS>`|Z%Z8=9NqRbao4vsYDd}qnbI%;)xnBtM{K&B-=FF1trd$<)eNPh zTIaH&QT&PSdv*EL7w^(Oyep`sV>pgtF>v5meeJ-rTiMKKwIBGQ>e<6w$vrhVdrB0} zp6ZARwGGkf(@}LvxIZ08zp+{C`K{^hx`~$V2rAUA&1D5KGZPYDUzZA`4ct5DpWv7C zV3+d7xvZB1_2+`Wlc|ODM-X!rf#>wcoGy;9a-pk;W3^ngtB3)E+(4W@f37M9%ku?g zXJN`s3{1I+fhjjJAe)2h27xIz0c;ok2^5$9)cb+^OxO?jI|ma1vL8s`D!Hh$ck>?~Z|?VXMhWR|e6g+!YQQeU8lf(rqf0uaD2MgW=xDUiVj z={wL8@;|!mB+T!EJTBBD1%T{eJ`qGn0urd8cz^(%_maP0d0DjEPPni0Q%Zk#Sn&uJ z;D1Yjz8`TAeSlG&089stFp4<%>yKxZgw$dPkR5`!awYKcfp`sMivYytujHGb68pQ| zLx6O?7|3u!2_+QhJA?A%pilz-w-f|>|KE-!7;5&jX8m99x;VHUpx+*wFoxj7(6NL# zr^F%t91QWx4j)Tm1tut;udOM1z{14F#oE?F)WONx%-YV9;DBQJiQ$Wn4fe3+VsYu# z1@mtR7XL9)l$?J#ezhFRw?dhJ!qndawjzS%*!v7%Xp%r3LAk%5*JJC2zx?8O*(D+B zIiks4EP3-UmqRQ^C{QPb5QSnOyGroz`9^|3bo|2+pjLnc(e%%YL1X9qb4RdT0x&^= z(SV><0@Wx9ljMYX>iMr6|8Q{tk%O3}i9CFMf`{PY2=GuaSLxRYTdY?BZ`^DxsnY!~o3z{vtJ(4V)+WI>dUp?f@r{^UfiaUv_mu#tf)WGp&WwaIPbT6f1u zm1!qy2Bu7d^Hf+M@hAo3or! z(K^B-*dl=8Ww!HhPq-iF$Nh(Q?_x4rdBk%x`bD{gwiqpI`geKr*{~N84F{ebop}Aq zbF|sN`pDpglxC!YHJewvozr&;FR84PqhdkP=_M~@+z;>L+5L*5i!VXKX`oFw^MVqJPm4AlkK6Mak!XyO&D82M)U3Q zdoD**RXVdD4ZY|LbkDt1#k8|yu&l5>>Z8h++mvaM!Se45wlf(Ta+y>K)t zySMgySoeXrZ&x<3a_qJbtS&X>(cLkFavy1z-&|}FdYHyUtBdKv_ zL?gz&*M`D(R%iBRLip43K8fVtTV@guzj5n7^d;0;5`9Iq_fwDR6M80x3qnsMt_^6M z%GzvC{jA`7<@4*?V){9kRp|s*`JSIjekjyh=3PQ&w(|Wm^eGhAnF@;QwC^k?EKjVl z>l4r9yEmotVcKI7^}x9ClKK5hv)-I_^Z}KJ6Dxb;_$s6Y9xxldEx&9ugR<1yGIglQ zqVYqRg`%VyVp@wyZG|Ue-7|ZileOnZb&v&J{AcJ&yu#G!G?SgwxsPrE{pfd6Zw-5F z-`6hoUbXiKCB>|d=Dr5SzE3eC3b!pH)-+7{rmVG8NO=+}_9CdCZ~O$?J5xRTJ=1Bd zn(;ohc07YEBOIC!qx!2io_u)4iND@I|!7#<8~`==r+G)jG3NcUTOyDoP`0 zxa#t%L{z5v?QB1kS@yJ_tIS~cJJv4!z#5sx?zKMlWN!W|+m&WkhO0V?5MDde@@N&d zI+uIBL94OYhzroLfBG8F6ee`_WKh7d>Nbs?1_BxRbH~;4jx_lN-mCO7y4@)2S6L@5 zOjQx;5K32GhEUg>RGI5xQCpSGx$O=r!M9|F-GjWA-?8jm_)F(UTMTdb&W7u>6veDq z$*PzBprHvvb+4%!k7_%~2PXzp^A2ff1p^5Gh)? zI0JZxg@~)2waamYIfP6Cj-#l70na8;6Eib=S34I`7bg=tXA?6QYkNCq!Y?!5h5NhB z7Y7&wC}MzyFiU~{QE~7VB!OFi1d|$(zZhx#$HPHFhB2sJ5}Jn&wSS323=CkKK_Gzy z9NAL8XyS!W$8Q{TXY*suV7r|yoZKv&2)37m%wrM&AOyCQ3kh|RK&=o^e>=c8LCs>n zh<{-5e}km4w{vi^u(fu!5H)jkaFbD$cD3E`4))7bM$|%sRUN zO9M610>Rv4tDPLqpQpI#{*I|l?*hj}l629*itC}0g*vGve(!bLMiaZaLu-}Y-O{}x zzN~gyb)I$ajwy$7!((Sxb*`-qILWs5&K`5?jV9~q+gN1H_1L{_Lhl~ai}u$};}E&% z?uouix5C?adiPV6{13EiY~D$Vxz|u^c;7S2&BHvf3-!g3HP|Efo(3xD+0p09&rbM8 z`n#ALjR_;dbg!XrJ{tR+_gq_M7wb706pwW$o8~k-ud>!kdF7k;_-1Hm(M5N<<$|?# zq(79;`5q4+&*}N-^)CB$OHXWSEGT!;mzqA54;cN8Lof( z+@i;pbp<_j`sS-jJo(DJNyYY`clqb%DDT|OsGBxh^F{aM9@m?fmQzTu%Wbz6@fB4I zZDTl@F!iqBd1CSY5@wSY>b(w1Zw|J1H7VVSMaHMP*HQ_a)jin6^}JDGXW=lDU)TML zsgo0E3rd%6P5S%FA&%>tqTI5ya`|QVUI_k7WlbmOljxZ_@gVYs($+N|c8`3vOS?87 zd??F#L5-}K`i$0&{uwM2q~6eOL5S z-d3w!?xnXmtnu1F;z-o3%P%%CXt`U=*)?KMZhdln@m^!oqe-4iesuiuzlsfi7 z?yzurTaLmuMw*iHR|vt$%?Y~8UP#qd8}1BmUL7tQ@NkFc$xbQx63zP6#hNT<`F94r zRWNdTXQ7q)vh(3B{}>m)V zrec&urVM-{0R7szJ2zVv6~m(>7}plPpBH;x7`2PHD<*9>^J$&f=#V#ueR+zN_o=ut0j+11zBt3 zd$Bc>;V({$hPSw|44_}~&t+3`OF5@3SQPy9%(0J0Vgk4`YfiGud=}HJNUBC>4HD-8zvBls<7C@2+7XQ%0jQ*_q_n-|!N%d02%}s}xxuv<1;?h4n zX3*3|2Hx;h`7W!rQ#U5&)7Z)3jlMkeTBhsncKfx^-!wl7& zBi%jgFYNg?HrubyWvqWdDsjD0~&>L<*nr`%<#r;FuZDQNJ@hFs6PmLs$xP9tP?V)Hrny-ra~LwDm? zrC!&Ezix9^sdwKvd}4b1&hm5Lj+amOJ4{S%Qcd6*i#WL+b1t%AtU^dN(S`N6#x3{N zXU5uR^B5|kYrk$^g+TYr9slN#QqR9)m*{8#ebl$6lj}X#4X&Fsx>jl9S2uLl^67{& zt)ZadK+xOp{lfhQAa#B|Ep- zxwzDhFC{cOBbq6GQ*QBvHJ-~hoF3gC$}k}u=OebQTGPO>^-`-qCiXK;?vO;uVs%ZvhA|Lthaw(y&^Q4EjIYNfgUO%3Kd~{yoRyc zDyrD%gq%>ld{39`l8>YrrvI<39O%_o27UxvLN8xj*!IM0a&Vyshd%yXdnfG!s4EoF{vo)LIym zBXc`?J}*ZcxyhC?w6C<g<>t2shpu`ijXj8Squju+slTkW_+k)`X3*j6=Sg0TT$-V& zrc6%aQ|t8PME59mW)+_*+a`Q;!kaqlgSEq_5bf!U$vkmSZjs5LCJtQ=_OVc{T=&gH z;sV2#4NZHCd|uM~-L<#vuIbJhknnv%KFBTS;FGJK%XDnZYh$sLU~9(j<&}LKY|1+n z*1g<*Ut%qv=xS-<^CzcczC6wd6!hL>=*F&lE8Q+B;lO8;$k6z$ny-$FaMr4&c{Fp^ zW6-s8t>l z-DZR6qdyc=j7SY*`jKUBrUaP2bODFed(Xld6E!{aE?om@*;9e8v8B`%z?|owPQC8j`&G z{saH@Ykd_Mj1@E=xAO?5-;3B&|FMSN^vVlL3r*8@Y6_aeEsp~YLV_rhqy!EP4&0qV zqD~ys^b=5EY&p0S*{9?QWQyQ=42}mq$g5F5hs9FC#v*fa$@uLI)?? z>KpGuT0=e$8e}?sOGO)AV^uNP^77k#Wx)$Hx6YfLYN&6IXJu7r;a?w-O;$j@=gw*y z%RP~PG;^y$xW4Z6(p*j$|RU$JT=*YB6`t`l<=Dw&|GO@O=@Mqvf zxyHWl6+6|-@oA1q$?S^>F>^XOaf{EkUHRqH~>l$6YCfO!iA zAUs$cHb`|zK;wJB_XTqlpza%@HS_<)F$Jk2;HeVxM;GvQVSPgEb}!DLV=+eyyn*?P z|LBh{VBsQoHhwwej{=|z5q}imb$-e!&3`&T9bqTzNrGvV5WV@&S)~QYj9)$+q|u?7 z7C$dWV?dtjHxI|ljsOW)FbR%e`GOH&zj`(Tnw$#!ErMrDVTpf#x$Rhx6t=P5gJMK51%!2VA`gcUBWTb^_Os+@ zDJ;S9FTXhwptmGJnjZfh2$o~88UbGZpZodi2y?|8@xPnnL7Ci*-$-wB_A9 z#8y>~3C>_PQycK*?Yi|f`%RI(eYc|9Q7@XB9cKf}Fk4^s?k`TbsIhveAz!HB%64TG z&xSkqPq-w8=h!LimXO}t;{W=XgavZ1rbOahWT;Xlcep&u_JIlBwVDD4K0B4#=gazw z)4CMU@{J&AS!|!^q-Lx5O;6^^d_^Y^l_LevUT}?sA5pljZ-e0~wyuY&P(~6V^ zAs%YW+k6JRTA!DjE3l++^0-l9OkD(yyx;l~nVfa*;Z}cIzO`mTw?1{~ya+ftqq)94 zOgKMNziI#I5%Y-MNJe&w*PRdep6adQF z$zlA072>nEcP9<5-&fsEKF(ipHjifIbLA^5ud2zWG-ck<(47*KEfOid=c=!Jz>wEo zyD!;x-!rrhW4X@LxQ*pkWaL%_K9jYwo^@sP}ZkI3f9O==%A)}>Ym~o?!onp)8=ELEQ z%{w)6X989~I&-+gqiXEzg!?`A!!7TwtzNO;H}6z3!$#^3ogM-Gigtc`_2(XKUpIdvQJ0H$aSY)-1M9XVx4wALT!4EbKog8m5~X{skhS~s2EUx+%F<=2DT(%KGll1?(DgzSf**xBE#2O`GN@5ZN>GMBD_375Tqw zhbxr*>?Yu@=ED4y6fnD3P_3$kxwXkodk-#ssLK>8@j>W63@G_wAVaKf0u^6CnHLYj zofj2@;?%rHL;4&i%;JnFP;~#vO|TfR%YNBXD}`lmhjkjkawJr#1Z8M6G{lIAC0bCu zBUlYTTpa2JCTfX(wt@@3xH!_$B>G8vJvo}Pml{K@@?O@s^yFDU&^%Jr)R%JA^$}hFzr`kj|j^3T+QPsG3 z!9|tl;_zBpWyP(@LYo8?H4Y~oEKd(UJfe9s)QDvHdRLR9~H4&IN>Q7Zp?UElSc_q_Ib_TJAP*1Ffd?#2Hkv=L_}R$^*C zwnD7p%lG4HlFaIdB2Lt<$&+4-O~SuRE_+uTbs*1Wv7qRcyjm{2k7@Fk+WJFIZt^Qj zkHmJ1^1Mx@UU%Z-gawMGAt&@?=;+6AysB?!3wz?ny#E&qU=c!p|?3 zA!|Dv*RTIlCRvul2bbH;8I{*|MIqU6cre>s?*Z%&*%lnt7u)a4cGfLc| znfw6n*PB`8?zH>(rnrMK;xd~yoX|8DIKzU!o|nn<_DceHT9?S9g8^@wx@0MN;`1Ix zZp!1P>K{`*;7lcTe8q5qiBpss*V89WW_L9(noBRG*aU^KsGNxuNE+X`xTrms=j;#W z2!@FJhPF8d41MPd)3?1~vOKqpI=f)!P2&VceM7y3XL)o=>M=LWsCwJ5SrR%{-Anil zc7FN7hpOohwzuvX)fhOowdB6AJL{byr(4X%>I33r+tQeCY(7yHIpl|>&v z;9M>H!FbzVRNr@H#!mK6YGHzpudFE>*eOn5`?2W9r_6_6Z%*{ZphN42$1qwGORnWO ziI6()D!?_un@>};y|7TsjdtJmp}8CCZpza(e)<>wJ_ZlLP#%!PNU!u zMI&Z8#8Hq=xV zpbVr1<3UCTC_5mo4%x!UxjqM}=(kcE$PfK=?-3UB{4P!K$$rsz`revLhXPN~J(_;I zglli+v!|NR83~!(J=4wqcl*rkN6Zh@#?N9*Pe(#v>&^G}xfGCXxfn&a=j55EArATa z6JIVzaxUZKjD9G^kjLWoz?Gh2(V2?m=eJ}onI@Vy$KbcrF3Labn{vWwgoR#p)8S_t zUT!?(UYGJCH`OEuM7$9?m@n-w&)S=IdvNfGNl^Len5A2`;IAIc65L+ZeoKtEh5y2~ zsLWlFXG(Zp+7C>dcD-{qr;ns- z^9_D^p!H?bk9%zvJl(_oyjC@mris*>X}vmWa&j-6DyDr@Hljx#{`D9Os4Ncd)w_Xe zldo?NtY}DiwriK@aS7QC3f;q+4EWXC4g>`xdU}T%u0HuKSJk4bmfCr9w{8N9h1%0B zrOypsnGpw~KW?^Sxu0F&{b)T!nMy+AzD;d~k=+@WY!z`E-9Mc>e^kQZc|zmX4t2Bs zG@7HAH|txHuPnTMg)G3bHSyYcXWF6n_Q7wMDevP-KD|9eSD3T?#mMn>Twi$X^42xq z?Pp;0_n_#BNDNUOxbTwIPC&H4zu}DY6OZPuZ1mFehl65`>268|xUUqe9u)R@Yu;{p z?AeZtl`hp@HP0sEF7@Z_Z@E|MpzfMftiy1YdCy?*7r!^!rfp3qEq_NV>YT`}L8;fi z8Ep~_#r~)-3B-ITs4r!=u2^MIs8|*yeu1lKv8>}wYm>*FV^)D?(I3-HKQ)BV349P_ z@c3G&`$cm32Jt5^`U+q4u&dEm@z-a)eyGGT+DKEl3`dS-raytR9Va>Ze=?QH| z>qYbF&z&o6DRYipYZl9swA_15_!5q1kB;7Cwa{ujcR}83#OT2zlTjtHXHU7wZ(m~_ zW3{GbxV)?Lw2j7?{fLW_k;8;~nwvqxXng{O2u{qPy%c9vuf| zXeYdEM%Pf>#K2KR1LaJnhqW@?eT&f%S^<)t|H*v}l8mBl|4Tl1p!4GN&FQ@afA z?2nf+c$4~uGg!PfuSlouzRcqbjr-k}e)^tf@}1Gl=-dakgTbt>%kMrmm8}%+DqD_H z(vn{E?r@!tlzUOO=~fzZ-w62ZnRWC$6@`tj%6ghl z76yTSe8z9yGTq3ETg+y?-o5qGo=?=+yw^{JEk1IkO>jzYAAD|mVN65#YEj$bdS8a~ z`AOX-X<_M+9BD@*MA3z+YU@?o$Z%P~KYZO&*YCS_di>Rmbt?oT7JXP7aHI4_NI-Mf zk*e{tpQJF0Wf*s?Q!~@iG1%b72%fcM_qhXwz4uFvI5r&3>xzBZ?vZfb`}D>p6OM`X zid(OwNYt#ei#>I)ps-FZ_}ja_s`uZGwaqS(x9Z78(FsWcSe2g2ZgmjUmv6d(CC}NhXqBGYk}Wl~AFFwSSM4rE_wqHa zF$+<=$bP@>JlO^B*c~sQzAd|%d`~tTTPC=^ENXYF2)W2+>A_GswWK=TFxv=fUJLs+ z!w8Sy73;No-#7UcFmK_cbd8ity)+i5nlh^MLx@#1Vwv{v+q~46Ghs_lO?+|_3~SEn z>*?;)k~~FaPU;$%rG+uaH882nG1~y1R95-pYhXrj06(e72nO(!d=`8_Od7-_1|6oU z4+Ogz`3CWnk^e-<4I+G)Hk%3BP=s#?Mmh2~1V{q;KnQCfAEtj9%5+Tq&g3u83QbIQ zY5HpUH4YQds_F^Wb(iWW?t z5Riu<%?pNsREqh-h{|t#gjovO3pCpxyCw+s1){zO(E~!hG(-^oYPKCr3><%^0Z*>X z1zaJ((n6{ufJ1{6SjK>ZBMkM_uz#66O}fi7ZT)|pW)SQoWDP=u0elF8!VrWjgu&#W z!+`|lcY8g%UnG2ktf#Gxk%5+pr6G|}sg*q`YfrRDX5}yb+l-@u1dj!bQW#2+2two(@(dtB1^ykfnPD+5+`fcgt?_aI55c%=3i6qrNJq3Zd&R1f?t zA;ATjVn`Ynf(?m+9Aq>wGm&~GP_%8{b1ZCt7XsBoAp?E1z5!Yfr6+8lqld;Az?WEE z17Tg_r9BgKUYIeUAXqPgD5$~#2$f^trX*nP^Bx0E533`nhtt992xIjGQD_6a9vX!; zG}JLLFci_nlNbYWq~mX|OB9kX1`s`j2}F?T2YC)i#{lgEC}TyM7fWiTV+9R_h4iq7 zI3XN_>M=t4u*(e$aX39g1B{R^UXS=K%*1~F?JXcV*m#I=OpgGhn4uTH8o}QliZg>e z|JG+H-U5kO&}TGU_K;QvLd{5+;}^63Z@18_44QxIIts8?xG(__MDqARtrWTXajE%#Kgv zigPrEGSD**r@5YuCfF)OkA~JWH`QFNh2XG41OJ3Lq&7>SX0GOtmIo5Qq(XtSbRYkR zYR$$(XJTBl<8#}j;pBudOgcRC#J}Lj|M#w@@lqiC%oqPkyV4jOgQd@FZclnwnOJJP zIe<=Vi*Vgt^Uc||*|`T|vEzBV7vj`-&Q4j z$7`&9v{;X!bZuH#`P<_7(AJRqFP4#YT#XD!_8YpT*7u6s=k&QJl8h9qBLnna_3YJD z*1s(!cm7FatqGgBc!S6dt8Y;ci<&;;^2N1I3BX^yEcDXz5 z%kD6Lcyoj*VGl(Sca64j!mjWQ4+h3oH7%m9F6zi-k7ME)duEWbd~A>`=82KfwU$jS zPH}3kOA~cmSAH_ZVa3C{V(82>v|Wy=d#o!h(;;`Ey*|A9GjdwzhDe$*3zLA$KvW#XQL&;GtFpgOHYuwtT^j*&g8*?K#Pj@vJL*l zT6QRWak=Vg%OJ7wiU_@)XM2^ut`?rKG9KDCV!h{{lLI3?7dtA_ z1yRSaG==wj`$oBXY%JXyLK(xM^J43N12R`4%(Lpb&C%dwUW?kpWjfW~m`UW_c{P=A4T}AYg^A@M@`|WGq7}LB}(TgdP zsM5KdC2%F4`_SVJeoD=`DPP^+nk1_X++=$remmFs@+QTbR_RW+ww4MHMxXwyp{!~e z5gUI{s$x{C;(UiSrjkjV%Ooywx#D%D)x$<_uQgrZc$ihRqP;Hs^?{Qs&fTeVvzGoY zul!bVt<&k3?m7Tiddu{GR?N)K19{=lQZxbkTWBJloFVbZ)L+ zqC5U}lQji@#HN>3x_ZXOo;z9lHmh5;T_=~W7;TR)@<3CJ-7fJyDCu=-wUqgv#faeAuO6qBWwFs=H;y0+!p&D4)=KDtPt>& zj_N^7rdgz-bZN1(Q&5=M9Rsh9yBL|Wbu@BEo9!bMxkUKu({`WgXB_=HaPf$E=#Cq_ zJKjuWX*<29)ZVwst?p^CgAn@Y)m^gt`QHz$qTQwHy2>_(?Wpd!rn%;>c#j0dgtc^O z&po>g$;{licGR3rrk>!lY3oOQ>8EZWD{HPQN9Qo*f?g<`s)ka-sE?DXLnl6u$ds%cb+xjXuDQrOR-W7I@m#(!Y0yYgLUwz^ z%J6HP+IKspTJslgUFNl(OjQU?mTVnKCr~T9Rq)2~ivf^@d z-LcFY!d;CGsko%>e7Y-?Ve69PwCB@q;XI>^m$)ke02=Uh40ZGmW* zyqLm|A6ROm3b~)TTAm$N`qaNF10z+orqjx+qdMscM^Sx%4@JBMh>Ly?2{1OIaHMP8 z`CuTrX-EBA<=qX=Y?PJW0xJdXHl5aw*mpwzmh?mOY;8+V6DL}lU9KMw8;4t^1V`ya zZ{nj4H*nVMy(*b8`nhSN9G>x-R?L^BvGP5s>cf1vjv;d+u?qF2nnKllKUklPa_Z34 zn>p5uW(7W+SaY{RvuXQFjC^y8JZsPr_J)_QE~%Hi9NKk3%&qb8J_V$8*J;W5QhNtmrfMs4PP5JoPiI{Kr2TDX!@QA@yB0(Q+ymd)Y5) zo38cwe$-OeiFU=JbB~!bwu`}p>{|95=T<^t)jRe~FQ3MZ#wq!oJIYhCluI&o3zt%(Np`TG#!+_O8C$)ula( z7Lkcx(oB?kFJ2Y4E|!)ISxa{}?%QysdSpZUZ9B6dmp0B)&(`yI#Cni604&RZZNbm4YTcMsj7N3V&VU3kILqi#hq1N;#@t6N#EsEjs+*A z+}W>us_p!>PW7TUnO}L^HC8j+mACXLY3uD@{QAPlQ~NkC3rEBzX$lmq%VJ~eYagh; zLJ?HPb##C{=HTYNA-e)9xF@PT3*OvTV-MDf9}@RCfokS2**JJ3^x6ai)vdRKed^yS zEnH)iNyQHcY`)o;3lVFOU}pXlM#la-frj8|Ah`de3@Cgc=&d2&5VX&JlI6tD@=X5C zivx%j&`%5~;(?SIDD*)+QQ$ga0JuQUQAC!M+yBP^*DPhSe;a`iU~+ii00G|{2#$c& zfhN2#P}@Pz1ZXvXr#3h_|Fajv-vTRW0NMn>QN{qEj|EQ|5ixI-eIMUF{ZvnVj zl6e0%f5M<}iUGlBjwEdvqqeJXdop zL~W1~Q9nD^M42j3ScwqEBM?TWI*tY1OhH(|KR1TcU?%c3*RwH@E`kMGABpBO<0nMT zk-AS92$W$EhA>2PNVF$HL}vCL5fu`K*NTCF8`O;;(Vm!NJi9%R$RKG05hX(McZr`r zOQMHF|B+hVKt=;HpdblI28W*|07IfZMA`s4LBk=4)Q=+Z{Ga6*XTLpolmW?1B|MS%&aCc3g(^U@ zAZiB~9#ZO$#Pff-`Uo0QaIO)mUBSRewEy+;gLn|s^MI%p0xV%jwg2Vv1L0&YpaLPcaa} zLqItsSWTk+FV`LlE*D|oG72I6fM^ei_P^ysT7$BBqSTiYKWCWgD8 ze`Ku~VQvXpq}zC1@SEL0i_Jj0Tb@*R;8N@|g`KCYa<3mfmEW|uDW_jhSLdBY=Vh~s zcCt3J^uu6)^z(`w#OMC;vZhW)bWrC(k! z?OHTa-p-p)oi51a zJk9s!iLYLG_z&t~X1xgBaXW);^ccMpUr$MoG5A*driwB(ielgDq;~umeSwvWj#hAI<3MlM%au5_N-F-*eQg2d>qbtEol#D7w`<;R>l!yI zJ06(8KPvh>YFop=miYT0hO+k4>r1atOr(_magt(?_k`6|CU)QOY89CT^QrF*HgHfp_+VycbVsm8~*Tki8posEaxhITxZDx~c(e)IaX zxZLU9rOZ0?-T_w&v1h|p?tY0meZLgF2UeELQh_KkZGlW{WS!0b2Z=G?I^zEcF!7f%~{#3iQ zwcc;V_S0Wj9jhvCtD-Dp(vcIob+4njqh7Z6C|#^m z>M1Cnuvz=gB&173qx1G56}CIIqncZ>7uS6}u*Bhpa{`Z4-e$q-z{`{dD=dPQ9Abu( zn8F5W+biCV_1na*!({Ez+M4jubVcT?D&zb6*HhW6z4f*-(>>6jrD-@OzE|?4Vi}94 z&Vy2}O}a;Yx7v$@oMfRMpmHea*H?%qcX6*XxwqfX`X$CW>XrL-{Z&U!ouw8|c#=r} zZkHM69a`@7#wy*m|k6vXswz{6Qkcm{#mC{IrzJicO;;ciB93 zO!&2#3!Z3XOM0J)ym#{%rSpB)O|l85xfhp*oip;F94|Swe9)s|eU~Gg>1 zvNMmLl&hCC+7|17-Ahw+`89OG@enq59iDPY&O1ypCeN6}X{Z^WaoxNteqFU@c;fCl z4+n|(gYVB8*w>#8mT?H(U(jG%)~(8JA23Am`c6*$0j0N1hF%l6^*nuyFS0e?-c!yx zmC-2B*y-{{WSm)8{egpO{pzZ2_s)y)`n4xB;_KhuzUtz+G|B!B2Jb!g0O z$Iwm%W6-v%L@zIJqrN2Ga&>+0a%#F&o?lv+_%6D}g>7Q7tjW01^681v%gW_YFAE-{Vf%&iAij`U$JC9vB@;&!;Ijv9_V!FPOlygcl2 z^__UtRmSUjXr)(SvIpgP8lp=qY}Vgn^XF=jKWe(H=$qpG9V-ipupcuzmVB8Y^D%I! z52slp9uz{m)_<@27}e1fou=a*5-e?vEf20-b56TkU!G%@a93ET^>!VH$VT41{AKdI z98112^YcpGnBWi+dKsSWU0V5|c@4R1fL+6`z8!)Miq!f01{5B=IO4^yFS)uxw?XFl zbKYxRddr2)D^i`(JXXaWwCp)f-Ep1X+BvanrZNm|_6r)_W@|dg zlX#%+;>uc4c1qggLzTeU_U)PYI6raeBZdXq@Cec%(`F7;9l_Uolsbb;y zSx)Pu!%u`x5p0H^(5XL^zL-vOn8|J>Wa=YW)Re#z4nHX=1>X=vpngWDW@YyO8#XbC zPT>%v6yc℘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 z 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�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

p_2}`j`EVCDOpiQWb)zpwRc{Y3Y+5Cu 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

    k_dJmJ>y?y)@@AKYV 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�!;jKpAa(>k=l=tD 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

    NI0`~SR`$$E}%GpI9eUS@6D&UZ}e=dS00 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

    >nz^UE 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�FAvg;ok`N?Wdd-d(LI$TIpo#O*8iN%}N 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

    eIsBi|6UR{C(nc`geFy$6?Ru-)G0? z=)34ICE@8i`FGRxSRqgUOYfoQ=pVg@zmNV>dX>M%|576}`aJ&}v)BFO+!6B|`)OWe zWdAlr#3Hp49P@{HB}m#0{*T`5|4Wnf?>7b22i=!oL4yfrLGVvh2}~ZEIGAMgnEqL` zXBnV^CIr2go~Ow|zC`vPy>3NbmrpLjqSN=%KQ_T|t-oJ`O)#n)=@XcLj(^7NuXsOA zeEtvDLNx{Ccv>O&$5vHDE0A0b-op%p@&C&TtAbQMR$9wtvocib3`|y}xz3e&td1eE?OW1+$6yJ^SW!KRE z(tF4T`bY2K@1wtNM8Ets{+Eu<^m+a{dQ5iFU;O)F;J$BXv^(OfFwXznCz+nR79!#0 z|L3^=e;tD#?iNqFAu!W+Gw#Ib|7nfUx}ksns}rN_2>%{Xe#E*YCr0a!zs9aZyX1dx zV%%2Y!0=u4JG`W`j%)q>AM;>ukbIY61C8g{0P~$je~*G43M&y?JgB<#mu9&ZIW+!H6-XN@&Cgju{dq~|KJ|@LtxvmS^Q)durWPj z)|`0ttm|yZ-0G$BR~uL&QP~Hf?{cPHG&G_Aq|BMeCm!h^TJBk`WjR9!mmQzezigsK zgOlXQSw3HsCRI;`zPt9V$)iuTFP6VCJ-F4|<2O!ixRmnR7>q;uqQD9doO0oy#}-MOu<0?wEm@5>@{;uo*c79yk-C?;N>9p>UI4r!B7R-IZ> zQhs(}K?z_#6p_CG_sIPkfM-vgERPTdSjemQG60L#$0kPN9;0AyY;scss5H)DWL___7@sow!7XHNKle;NVw>1XlahJdd0 zW9>n9cb4vK{|?w;`+b|YqR#>am*QhUw7-5{j6u!Ndy(`neeB%oiBX$7%U#tZQtad= z{Gci;3VH(iyoQAMe+m{55MYoH0iulXy?!-J>p*fuuK+C6`#n*PGR z{TU>*wO700gWz_-*S}+&71&x1w5R*~rNfSP{+P+y^F@jt=oCV%@0Nh^I)oZD0~GL06{?202oMq zIPlFm3XL6#zQp$-FT$VjjDC)cgbFM;YaY%9;P>h-g>ni!Jh6y({1mmtF8~OF6eS0^ zZ}tq#NigRh6@-Qi1jVVlY4U2*3-0^D&o8hNMM{hFqYnEH5HsBJ5Jmc``rYgYi4XP= zC;*s*EMDeZ=j38PVNgueK=v~p4>P8^p5KP>BOkzm*{tQVXv)w>&SfR}(Y9`ku0FNi zCL=fYMQ?UJ5If@t>s8${%FEZWosGsS`<0A1>&Yr zShhZPbcNdy!%pGzQ*r(I_jF7|t$?%!b-rL_T~{NqSZIdG;{7Ozuz9Rz#$CiYZLfAy z&i0>x)LbfJxhG~zqlso50AvoTGIZCM57VMf6|O>nCSIIsw^OiTxk~Yey0S2>+TUsJ zu4kr}RU@XL;St$vRfC1@k0EZkaf7Dq=7sy`k|mkzB3B2p4U#bPTl7stDi+I7Sqj+f zv>q%AzHH=S*~M9^G-C z5Yx^+X0QgW4YR|R$iPZvWqW@H-%19_GW$TWNWeYtUP{a;L$G*qMj+rvhT9Lf{>3&+ zjlRZWn-c}e!vu$~k|)sG%qGrGW{aWw03 z*e!#LZ$xoVvC$S~p`^4oIA035VOQWza4`{1g<*I5u5q^qg1Ie$x)=89TW>dL!R>Dw zku?Lw&T-pf&6n&$C4_Z(`619@ckj(A(>-iye4HFGz@>?af94RXC6R`L4<9 zOu?o_$PNgTW)ia)9&qd9y#caFKSl6BjN3UWlX+Xk?7^~jAb|aPWT~Ab6Et&9qU!9z zowduMXbGuJgTIn&R3 z;eA_opQ2-@gX!Qj`DQMAOLgyU=3;g4+gq*8HgzG1C}mU*TphKa!!WaCI6DjN5dN*4MQdVlrVn{Dd+OZ&6{3zW@IUvrRshcb=vRbUgPrtY zd|4Fp?hQMUSCSc)Bx10|ZoIA@fUpkt;pd;dbn2RtC!`|Bsc)sLccSeWdPmFto*(dP z?;p!(5fbvMA762NIp~6rTjwO*n)2S`>U7abz$@?tnt}ckWvhI=jTF?lsHhjTr8RRK zMU3P{dRU4J@@{IRDZ%&1_6L@g&SZUV>#$~^tqcQW-JsaYv$mQGo!Ql-L!SDA;W{cgCLt21_-1-# zGK-7q-gKQaHWZV)wu1D8_MMssLEXZBDVRqc)1>8DRp7l&DV-mwdAiuN4;R$^o#~ML zx=h?RoDfU~;frrOnLqr)>)z@c}1FU^Ym=%#&luA?@7%Jo9+#iqoO`DNN4uKt_@3g(=Oy z-JoV<7>n8`e2(d6lJ>8J+{~MtbU4wSv?>Xs@L!+Nl}KE5gOu*h@n|cktR<=wNmEHh zKRY1RGH6tUWRm1-+_}z1hN@7heR4}!`Zw}28S%sSK7q*zAHuklO>FtAGqopiA)&g^ zvHfUH+(4avWPJ^9qIUSF5S|L^%H1_1>sr(lQY;q=_{0 znsnnjF%8l@^#0K|KEPafPnIocoD%Zy5{OJC74vbDJn7=Sj)Qr$4ZXH%1b@>+gMs{p zLsk|}bW_v~U-E7@0Op;>e|P~=?A-JoHgpaX#>1h)7Z&};l+V7+b8|KRWiD}|xIq7G zg2y$NDuFZALT7b&6-~E^BI*mr`>xxt$6OXQ|@_r1Z4K- z;|W1&&2h8nR=MLYIMr{WLd3;tYt74GLn*G42?Yq(*imF<@zUeCyVq>p>vOf~vGHlV z-jY!J`2+v1F9gH@0F#)3x^=qAYWcZXXV{WNz?LcCnDh&x5?1c{>oMB_8zbeMh4^ww z5V`C$tz|q4N+B+Ot3bI+my^76F3;-0JrbNFaw zPR3|P=*%EDKAs0!Oxrrg8WQs3nK}TEn5x8JbD`y3bZ*&W7tJLP^EM7FjUj;Pgc6}k6i$96v8GjTx)D$8yYz9&!O z!g|lSCV$~Bx3-kHj$@zVfc3PV2!$r9Y5eGy^>x}7PAN!5gl&RWJ!EWqUsJ`wF)!+2 z>ov>-g_2RA&-N5)gMHyb^?AA2hi90+)Z$}3(fXKS!K$HqQEv6qu0fkCVx4~ zM#jk}ghzJ1td76F=lP5pSUW8()G^daFW58kIQ%vE%JGKdns7@ekd{~swjkUOY{yW+ z5|Y1#P^oUE)!-0H(vm4LXgp)AGcqyH|M?xMgX617Y z@wiZ5ic+o_55O%Y9Vy$t(%CP1>l0qy$5d(>25ve{G+d>s911Gt0;1Vt8^nNTYn}1{ z(F?_uFR6xZf@O!yVMInN?X{4qTO!P86=-CF&MRaOw5{$}f&~5F8ljISo5$9qpb{0> z7UEN(I3o}al&OTMhtMUpwTAShJ8{8D=kq@+h^46rBSzDPU2{!0gwv?7)_uE?BrQ|C z?nE{wbXpti_hMk1|29!O@my!$gs*{5+sl9FT~=6j3W_)-_NK-^0kxONQ>JCA2-To8 zv%0w1H=Am=@9!Gjgpu|6+L~%yeDa+;qoan|V`xQZ>uJkA9$JuEIMUg$tju?2o-hM(gNApt z>mR)@WqbX%JAx0I4&rriWh|J4Y$mHC3!>(IEU_Y%7@scW(b)IT&MQ2%8%46rNl`2> zRCC+G^_jA9}Co)F>2d8Cw>7&GWL_X7{QULc-v1S#QU;2_%S6+uGwnF zjefAIZ5cbIK6ZR3cX$PCdK|yn#No#?RgC9Uk5>;UcLqA35>#7I}K4djF z@6BY_$54&PdvOWXM5CMgxNRA*Sm|xBf3IB!ykyKr+fxLNuIlBF>%C3>3JtaaNM1j{ zPfYQa>-z{C0)1IP?rq)l!_c~z7Vn#1lAroULs3PH6_AT&BS2kJIoqla$f+7k7=&&u zc4qe+K={y27jZAeKF`n5nZkGqANV=C9~8W+cKn~0kqJ<4zFy9 z?cWf`=yt#xfD}kYx+7CD)~#>uot~TJVMkNAp9z4)MDh}~SjLihbqT}m z(KB~urgq_Vj%esBNo6TGHpNW399dtQQ_d0M3VdlD+$ayj`H@Lp#~>_4jMWZO;ZY

    tTu1z)tRU2&1 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

    g=IT-k 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

    4O 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%0A&(j@ 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�b$EELF0H1B3RPoq=>0VIj|6)aMlG&ik)NN>{Iv;v~Jp5~?%5RL7E%(DWV zxDl`vayJ&dtU5|e%9CcEm5!x7>2pm5#MCGC#-%=*tZDUdL!vyqP5P))0kQEds{Up& zA{JQdt5|d+4CMmL1s}%9%v=IQ`jh6S6-J~#X>M8pk^ZE)X$3_3bIeZK3W&z{_`d2y z0fx6kVj=0}yd>$RV3qz1HM=wP(w{Uj%&^#;%ns8Fg!Ct^W?Vp|KWTOD0;2I9>T|zU zu??*C1s2_i^Fr6&>I?CtZ@%(bfuT)W!QR*~%aUbW8H7#znQfuf7}}&6%Z9_Ieevzy z$|`XqRH?|XjSGExUOm@X&G?oCZUiyolJRn>LD&gYXDr9iPnzww7lieadLqMvuUv|> z(~~!nGOnUh6(n9#i+p+eRFfmk-GK?V_L62=ZnA)g(X_Z=0g*h@vU>$Y#xKn&F%T2z z0;g+atuL?O%AXgx@(-CIzAK7?QeX z=itCqlvF{|%t0iz$dlKnHrnZ?M-VpJsU6XIrOnY)FUQl*G(Tu>5V8g5G^Ar7>SxHE znU&SRSCrL&#S3dmYD^(gI+4}^EFe;fG<~LkNGsA}eFa2nk(TQ#AR4)}U|#{z&7Or?_E{uU# zM@5t03#{vB4QRZIEeg=vx28X-2{#bapVWp6#E_&uxF8HimVIR+H5E*qTj4Mbe4i;= z1_+Y+>g6_yXxAbyUIdtaXPKhbt*Kw?ateoOU*>WihI`H1G*QhUP#X@}k~9>9fO{a` z2W$qef}{o{Uagk6@AfIfy-kbT83e-(MB;K91j7wP5~MH)#$%gSpEC%?1Bhe}9tOvD zJ5+g`n}UW7uA-z05-+JG?tAGUOR`N%FBT9i2_TuQ2Im_tGFb^i8j+?hSvMN9G{Y({!g6syCg2he-jGTq(#$A>kV>SPQ3fHESf`UmqGE~yktvO)j15S3yn8SR z4eL-pY*w$-A#6oa4OqNlE%Dw91tKynPgX!=NYeC;0wTQ`@;5Rfr8sGdMZqG?Npma; zh{kqEvX~W^$pzjLi3Rg+>-ak_zK|g0NwYW#h_ok7<0v3fpG|7FM83p66ctR^u-Te9 z!Pbq<))Ll#FD@ACi_0DDpI7T8p1cuY#vt>648mq><^UOl&DPA5Hwc@pnR{XoHd`~( zC)XTZ8Ojj66%;%LITaLc8ZLSwRbMjH>C2|$lY!Z$?>Hp9ZHF>$9omM3Hy{$*Z#ZlY zXWK%9uqpgLoo(PK%1CrXU0UL{TlZ!jvR$D;n03e|#BoS0+NNc#48p8krb`B4f=YEs zy+}|C3NwvdMM)JTUY(Zs>qem@mDXl52uUif&SVgpb!mMjgV3x?D>NB|W?fpN>4@Ij z8o8jvmtpJ9yMn|^YKgO6`qv7amPslgS|W!!Nu9}M1W0MpT1Ewnv?jf6T0l%~GDBBD zY-Ede&e^E~3~y1jjNaf~EqVpDU^UfA)!)!dchbwL1&fp?y`Ne@q&;cUmw}krv+zuT z(D*K>-BfynwZ6c7$qJUhCBAzhLHd(kl`SA*B(2|6K%_tEi}D3T`jck36%gr9diAw{ zXncp;uWwaM;fq9K(ZyQgz!wrsf9A*4^e5Z16)dJd*@=dM*qoe2qKupEP|+&kbZg^V zme%(IgSEcEK;y005-+~+VfvG<-I|kI)1PcNQm~l*qzkNJG5twbSOYQr$x=y5M>f9i z&v+_tiNrz(aM4St1*_>#=5`hk)1O&$YzBK)!*-@WsXHNo?M#1W4eCzgJESnaRk1Cs z^#ukRr(%m9NHuBfq(5njWC4*l(iF)8BK=7dAPb1}XGnm|_>lgj35o@a#&<|id@C{W zmPjld_gGBe-A1vHApJ=bAPvM;^VG4Ia_pr)X^Lb)BK=8IBnyb? ++xQk+_+DVJ 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 +// Loadbalancing Framework for Photon - Copyright (C) 2018 Exit Games GmbH +// +//

    Settings for Photon application(s) and the server to connect to. +// developer@photonengine.com +// ---------------------------------------------------------------------------- + +#if UNITY_2017_4_OR_NEWER +#define SUPPORTED_UNITY +#endif + +namespace Photon.Realtime +{ + using System; + using ExitGames.Client.Photon; + + #if SUPPORTED_UNITY || NETFX_CORE + using Hashtable = ExitGames.Client.Photon.Hashtable; + using SupportClass = ExitGames.Client.Photon.SupportClass; + #endif + + + /// + /// Settings for Photon application(s) and the server to connect to. + /// + /// + /// This is Serializable for Unity, so it can be included in ScriptableObject instances. + /// + #if !NETFX_CORE || SUPPORTED_UNITY + [Serializable] + #endif + public class AppSettings + { + /// AppId for Realtime or PUN. + public string AppIdRealtime; + + /// AppId for Photon Fusion. + public string AppIdFusion; + + /// AppId for Photon Chat. + public string AppIdChat; + + /// AppId for Photon Voice. + public string AppIdVoice; + + /// The AppVersion can be used to identify builds and will split the AppId distinct "Virtual AppIds" (important for matchmaking). + public string AppVersion; + + + /// If false, the app will attempt to connect to a Master Server (which is obsolete but sometimes still necessary). + /// if true, Server points to a NameServer (or is null, using the default), else it points to a MasterServer. + public bool UseNameServer = true; + + /// Can be set to any of the Photon Cloud's region names to directly connect to that region. + /// if this IsNullOrEmpty() AND UseNameServer == true, use BestRegion. else, use a server + public string FixedRegion; + + /// Set to a previous BestRegionSummary value before connecting. + /// + /// This is a value used when the client connects to the "Best Region".
    + /// If this is null or empty, all regions gets pinged. Providing a previous summary on connect, + /// speeds up best region selection and makes the previously selected region "sticky".
    + /// + /// Unity clients should store the BestRegionSummary in the PlayerPrefs. + /// You can store the new result by implementing . + /// If is not null, store this string. + /// To avoid storing the value multiple times, you could set SummaryToCache to null. + ///
    + #if SUPPORTED_UNITY + [NonSerialized] + #endif + public string BestRegionSummaryFromStorage; + + /// The address (hostname or IP) of the server to connect to. + public string Server; + + /// If not null, this sets the port of the first Photon server to connect to (that will "forward" the client as needed). + public int Port; + + /// The address (hostname or IP and port) of the proxy server. + public string ProxyServer; + + /// The network level protocol to use. + public ConnectionProtocol Protocol = ConnectionProtocol.Udp; + + /// Enables a fallback to another protocol in case a connect to the Name Server fails. + /// See: LoadBalancingClient.EnableProtocolFallback. + public bool EnableProtocolFallback = true; + + /// Defines how authentication is done. On each system, once or once via a WSS connection (safe). + public AuthModeOption AuthMode = AuthModeOption.Auth; + + /// If true, the client will request the list of currently available lobbies. + public bool EnableLobbyStatistics; + + /// Log level for the network lib. + public DebugLevel NetworkLogging = DebugLevel.ERROR; + + /// If true, the Server field contains a Master Server address (if any address at all). + public bool IsMasterServerAddress + { + get { return !this.UseNameServer; } + } + + /// If true, the client should fetch the region list from the Name Server and find the one with best ping. + /// See "Best Region" in the online docs. + public bool IsBestRegion + { + get { return this.UseNameServer && string.IsNullOrEmpty(this.FixedRegion); } + } + + /// If true, the default nameserver address for the Photon Cloud should be used. + public bool IsDefaultNameServer + { + get { return this.UseNameServer && string.IsNullOrEmpty(this.Server); } + } + + /// If true, the default ports for a protocol will be used. + public bool IsDefaultPort + { + get { return this.Port <= 0; } + } + + /// ToString but with more details. + public string ToStringFull() + { + return string.Format( + "appId {0}{1}{2}{3}" + + "use ns: {4}, reg: {5}, {9}, " + + "{6}{7}{8}" + + "auth: {10}", + String.IsNullOrEmpty(this.AppIdRealtime) ? string.Empty : "Realtime/PUN: " + this.HideAppId(this.AppIdRealtime) + ", ", + String.IsNullOrEmpty(this.AppIdFusion) ? string.Empty : "Fusion: " + this.HideAppId(this.AppIdFusion) + ", ", + String.IsNullOrEmpty(this.AppIdChat) ? string.Empty : "Chat: " + this.HideAppId(this.AppIdChat) + ", ", + String.IsNullOrEmpty(this.AppIdVoice) ? string.Empty : "Voice: " + this.HideAppId(this.AppIdVoice) + ", ", + String.IsNullOrEmpty(this.AppVersion) ? string.Empty : "AppVersion: " + this.AppVersion + ", ", + "UseNameServer: " + this.UseNameServer + ", ", + "Fixed Region: " + this.FixedRegion + ", ", + //this.BestRegionSummaryFromStorage, + String.IsNullOrEmpty(this.Server) ? string.Empty : "Server: " + this.Server + ", ", + this.IsDefaultPort ? string.Empty : "Port: " + this.Port + ", ", + String.IsNullOrEmpty(ProxyServer) ? string.Empty : "Proxy: " + this.ProxyServer + ", ", + this.Protocol, + this.AuthMode + //this.EnableLobbyStatistics, + //this.NetworkLogging, + ); + } + + + /// Checks if a string is a Guid by attempting to create one. + /// The potential guid to check. + /// True if new Guid(val) did not fail. + public static bool IsAppId(string val) + { + try + { + new Guid(val); + } + catch + { + return false; + } + + return true; + } + + + private string HideAppId(string appId) + { + return string.IsNullOrEmpty(appId) || appId.Length < 8 + ? appId + : string.Concat(appId.Substring(0, 8), "***"); + } + + public AppSettings CopyTo(AppSettings d) + { + d.AppIdRealtime = this.AppIdRealtime; + d.AppIdFusion = this.AppIdFusion; + d.AppIdChat = this.AppIdChat; + d.AppIdVoice = this.AppIdVoice; + d.AppVersion = this.AppVersion; + d.UseNameServer = this.UseNameServer; + d.FixedRegion = this.FixedRegion; + d.BestRegionSummaryFromStorage = this.BestRegionSummaryFromStorage; + d.Server = this.Server; + d.Port = this.Port; + d.ProxyServer = this.ProxyServer; + d.Protocol = this.Protocol; + d.AuthMode = this.AuthMode; + d.EnableLobbyStatistics = this.EnableLobbyStatistics; + d.NetworkLogging = this.NetworkLogging; + d.EnableProtocolFallback = this.EnableProtocolFallback; + return d; + } + } +} diff --git a/Assets/Photon/PhotonRealtime/Code/AppSettings.cs.meta b/Assets/Photon/PhotonRealtime/Code/AppSettings.cs.meta new file mode 100644 index 00000000..ab5e5c1d --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/AppSettings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 272beb7315eb9fc4daecafe2ff373baf +timeCreated: 1521804700 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonRealtime/Code/ConnectionHandler.cs b/Assets/Photon/PhotonRealtime/Code/ConnectionHandler.cs new file mode 100644 index 00000000..8a535760 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/ConnectionHandler.cs @@ -0,0 +1,199 @@ +// ---------------------------------------------------------------------------- +// +// Loadbalancing Framework for Photon - Copyright (C) 2018 Exit Games GmbH +// +// +// If the game logic does not call Service() for whatever reason, this keeps the connection. +// +// developer@photonengine.com +// ---------------------------------------------------------------------------- + + +#if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER +#define SUPPORTED_UNITY +#endif + + +namespace Photon.Realtime +{ + using System; + using System.Diagnostics; + using SupportClass = ExitGames.Client.Photon.SupportClass; + + #if SUPPORTED_UNITY + using UnityEngine; + #endif + + + #if SUPPORTED_UNITY + public class ConnectionHandler : MonoBehaviour + #else + public class ConnectionHandler + #endif + { + /// + /// Photon client to log information and statistics from. + /// + public LoadBalancingClient Client { get; set; } + + /// Option to let the fallback thread call Disconnect after the KeepAliveInBackground time. Default: false. + /// + /// If set to true, the thread will disconnect the client regularly, should the client not call SendOutgoingCommands / Service. + /// This may happen due to an app being in background (and not getting a lot of CPU time) or when loading assets. + /// + /// If false, a regular timeout time will have to pass (on top) to time out the client. + /// + public bool DisconnectAfterKeepAlive = false; + + /// Defines for how long the Fallback Thread should keep the connection, before it may time out as usual. + /// We want to the Client to keep it's connection when an app is in the background (and doesn't call Update / Service Clients should not keep their connection indefinitely in the background, so after some milliseconds, the Fallback Thread should stop keeping it up. + public int KeepAliveInBackground = 60000; + + /// Counts how often the Fallback Thread called SendAcksOnly, which is purely of interest to monitor if the game logic called SendOutgoingCommands as intended. + public int CountSendAcksOnly { get; private set; } + + /// True if a fallback thread is running. Will call the client's SendAcksOnly() method to keep the connection up. + public bool FallbackThreadRunning + { + get { return this.fallbackThreadId < 255; } + } + + /// Keeps the ConnectionHandler, even if a new scene gets loaded. + public bool ApplyDontDestroyOnLoad = true; + + /// Indicates that the app is closing. Set in OnApplicationQuit(). + [NonSerialized] + public static bool AppQuits; + + + private byte fallbackThreadId = 255; + private bool didSendAcks; + private readonly Stopwatch backgroundStopwatch = new Stopwatch(); + + + #if SUPPORTED_UNITY + + #if UNITY_2019_4_OR_NEWER + + /// + /// Resets statics for Domain Reload + /// + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)] + static void StaticReset() + { + AppQuits = false; + } + + #endif + + + /// Called by Unity when the application gets closed. The UnityEngine will also call OnDisable, which disconnects. + protected void OnApplicationQuit() + { + AppQuits = true; + } + + + /// + protected virtual void Awake() + { + if (this.ApplyDontDestroyOnLoad) + { + DontDestroyOnLoad(this.gameObject); + } + } + + /// Called by Unity when the application gets closed. Disconnects if OnApplicationQuit() was called before. + protected virtual void OnDisable() + { + this.StopFallbackSendAckThread(); + + if (AppQuits) + { + if (this.Client != null && this.Client.IsConnected) + { + this.Client.Disconnect(DisconnectCause.ApplicationQuit); + this.Client.LoadBalancingPeer.StopThread(); + } + + SupportClass.StopAllBackgroundCalls(); + } + } + + #endif + + + public void StartFallbackSendAckThread() + { + #if !UNITY_WEBGL + if (this.FallbackThreadRunning) + { + return; + } + + #if UNITY_SWITCH + this.fallbackThreadId = SupportClass.StartBackgroundCalls(this.RealtimeFallbackThread, 50); // as workaround, we don't name the Thread. + #else + this.fallbackThreadId = SupportClass.StartBackgroundCalls(this.RealtimeFallbackThread, 50, "RealtimeFallbackThread"); + #endif + #endif + } + + public void StopFallbackSendAckThread() + { + #if !UNITY_WEBGL + if (!this.FallbackThreadRunning) + { + return; + } + + SupportClass.StopBackgroundCalls(this.fallbackThreadId); + this.fallbackThreadId = 255; + #endif + } + + + /// A thread which runs independent from the Update() calls. Keeps connections online while loading or in background. See . + public bool RealtimeFallbackThread() + { + if (this.Client != null) + { + if (!this.Client.IsConnected) + { + this.didSendAcks = false; + return true; + } + + if (this.Client.LoadBalancingPeer.ConnectionTime - this.Client.LoadBalancingPeer.LastSendOutgoingTime > 100) + { + if (!this.didSendAcks) + { + backgroundStopwatch.Reset(); + backgroundStopwatch.Start(); + } + + // check if the client should disconnect after some seconds in background + if (backgroundStopwatch.ElapsedMilliseconds > this.KeepAliveInBackground) + { + if (this.DisconnectAfterKeepAlive) + { + this.Client.Disconnect(); + } + return true; + } + + + this.didSendAcks = true; + this.CountSendAcksOnly++; + this.Client.LoadBalancingPeer.SendAcksOnly(); + } + else + { + this.didSendAcks = false; + } + } + + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonRealtime/Code/ConnectionHandler.cs.meta b/Assets/Photon/PhotonRealtime/Code/ConnectionHandler.cs.meta new file mode 100644 index 00000000..961a59c3 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/ConnectionHandler.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f0b3ce6748186d3468e0dbaecb38b04c +timeCreated: 1527243846 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonRealtime/Code/CustomTypesUnity.cs b/Assets/Photon/PhotonRealtime/Code/CustomTypesUnity.cs new file mode 100644 index 00000000..fafdb352 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/CustomTypesUnity.cs @@ -0,0 +1,167 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// Sets up support for Unity-specific types. Can be a blueprint how to register your own Custom Types for sending. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +#if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER +#define SUPPORTED_UNITY +#endif + +#if SUPPORTED_UNITY +namespace Photon.Realtime +{ + using Photon.Realtime; + using ExitGames.Client.Photon; + using UnityEngine; + using Debug = UnityEngine.Debug; + + + /// + /// Internally used class, containing de/serialization methods for various Unity-specific classes. + /// Adding those to the Photon serialization protocol allows you to send them in events, etc. + /// + internal static class CustomTypesUnity + { + private const int SizeV2 = 2 * 4; + private const int SizeV3 = 3 * 4; + private const int SizeQuat = 4 * 4; + + + /// Register de/serializer methods for Unity specific types. Makes the types usable in RaiseEvent and PUN. + internal static void Register() + { + PhotonPeer.RegisterType(typeof(Vector2), (byte) 'W', SerializeVector2, DeserializeVector2); + PhotonPeer.RegisterType(typeof(Vector3), (byte) 'V', SerializeVector3, DeserializeVector3); + PhotonPeer.RegisterType(typeof(Quaternion), (byte) 'Q', SerializeQuaternion, DeserializeQuaternion); + } + + + #region Custom De/Serializer Methods + + public static readonly byte[] memVector3 = new byte[SizeV3]; + + private static short SerializeVector3(StreamBuffer outStream, object customobject) + { + Vector3 vo = (Vector3) customobject; + + int index = 0; + lock (memVector3) + { + byte[] bytes = memVector3; + Protocol.Serialize(vo.x, bytes, ref index); + Protocol.Serialize(vo.y, bytes, ref index); + Protocol.Serialize(vo.z, bytes, ref index); + outStream.Write(bytes, 0, SizeV3); + } + + return SizeV3; + } + + private static object DeserializeVector3(StreamBuffer inStream, short length) + { + Vector3 vo = new Vector3(); + if (length != SizeV3) + { + return vo; + } + + lock (memVector3) + { + inStream.Read(memVector3, 0, SizeV3); + int index = 0; + Protocol.Deserialize(out vo.x, memVector3, ref index); + Protocol.Deserialize(out vo.y, memVector3, ref index); + Protocol.Deserialize(out vo.z, memVector3, ref index); + } + + return vo; + } + + + public static readonly byte[] memVector2 = new byte[SizeV2]; + + private static short SerializeVector2(StreamBuffer outStream, object customobject) + { + Vector2 vo = (Vector2) customobject; + lock (memVector2) + { + byte[] bytes = memVector2; + int index = 0; + Protocol.Serialize(vo.x, bytes, ref index); + Protocol.Serialize(vo.y, bytes, ref index); + outStream.Write(bytes, 0, SizeV2); + } + + return SizeV2; + } + + private static object DeserializeVector2(StreamBuffer inStream, short length) + { + Vector2 vo = new Vector2(); + if (length != SizeV2) + { + return vo; + } + + lock (memVector2) + { + inStream.Read(memVector2, 0, SizeV2); + int index = 0; + Protocol.Deserialize(out vo.x, memVector2, ref index); + Protocol.Deserialize(out vo.y, memVector2, ref index); + } + + return vo; + } + + + public static readonly byte[] memQuarternion = new byte[SizeQuat]; + + private static short SerializeQuaternion(StreamBuffer outStream, object customobject) + { + Quaternion o = (Quaternion) customobject; + + lock (memQuarternion) + { + byte[] bytes = memQuarternion; + int index = 0; + Protocol.Serialize(o.w, bytes, ref index); + Protocol.Serialize(o.x, bytes, ref index); + Protocol.Serialize(o.y, bytes, ref index); + Protocol.Serialize(o.z, bytes, ref index); + outStream.Write(bytes, 0, SizeQuat); + } + + return 4 * 4; + } + + private static object DeserializeQuaternion(StreamBuffer inStream, short length) + { + Quaternion o = Quaternion.identity; + if (length != SizeQuat) + { + return o; + } + + lock (memQuarternion) + { + inStream.Read(memQuarternion, 0, SizeQuat); + int index = 0; + Protocol.Deserialize(out o.w, memQuarternion, ref index); + Protocol.Deserialize(out o.x, memQuarternion, ref index); + Protocol.Deserialize(out o.y, memQuarternion, ref index); + Protocol.Deserialize(out o.z, memQuarternion, ref index); + } + + return o; + } + + #endregion + } +} +#endif \ No newline at end of file diff --git a/Assets/Photon/PhotonRealtime/Code/CustomTypesUnity.cs.meta b/Assets/Photon/PhotonRealtime/Code/CustomTypesUnity.cs.meta new file mode 100644 index 00000000..660c3f07 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/CustomTypesUnity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c41ee868d8540674982e160cf16e0775 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonRealtime/Code/Extensions.cs b/Assets/Photon/PhotonRealtime/Code/Extensions.cs new file mode 100644 index 00000000..3c7a531f --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/Extensions.cs @@ -0,0 +1,269 @@ +// ---------------------------------------------------------------------------- +// +// Photon Extensions - Copyright (C) 2018 Exit Games GmbH +// +// +// Provides some helpful methods and extensions for Hashtables, etc. +// +// developer@photonengine.com +// ---------------------------------------------------------------------------- + +#if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER +#define SUPPORTED_UNITY +#endif + + +namespace Photon.Realtime +{ + using System.Collections; + using System.Collections.Generic; + using ExitGames.Client.Photon; + + #if SUPPORTED_UNITY + using UnityEngine; + using Debug = UnityEngine.Debug; + #endif + #if SUPPORTED_UNITY || NETFX_CORE + using Hashtable = ExitGames.Client.Photon.Hashtable; + using SupportClass = ExitGames.Client.Photon.SupportClass; + #endif + + + /// + /// This static class defines some useful extension methods for several existing classes (e.g. Vector3, float and others). + /// + public static class Extensions + { + /// + /// Merges all keys from addHash into the target. Adds new keys and updates the values of existing keys in target. + /// + /// The IDictionary to update. + /// The IDictionary containing data to merge into target. + public static void Merge(this IDictionary target, IDictionary addHash) + { + if (addHash == null || target.Equals(addHash)) + { + return; + } + + foreach (object key in addHash.Keys) + { + target[key] = addHash[key]; + } + } + + /// + /// Merges keys of type string to target Hashtable. + /// + /// + /// Does not remove keys from target (so non-string keys CAN be in target if they were before). + /// + /// The target IDictionary passed in plus all string-typed keys from the addHash. + /// A IDictionary that should be merged partly into target to update it. + public static void MergeStringKeys(this IDictionary target, IDictionary addHash) + { + if (addHash == null || target.Equals(addHash)) + { + return; + } + + foreach (object key in addHash.Keys) + { + // only merge keys of type string + if (key is string) + { + target[key] = addHash[key]; + } + } + } + + /// Helper method for debugging of IDictionary content, including type-information. Using this is not performant. + /// Should only be used for debugging as necessary. + /// Some Dictionary or Hashtable. + /// String of the content of the IDictionary. + public static string ToStringFull(this IDictionary origin) + { + return SupportClass.DictionaryToString(origin, false); + } + + /// Helper method for debugging of List content. Using this is not performant. + /// Should only be used for debugging as necessary. + /// Any List where T implements .ToString(). + /// A comma-separated string containing each value's ToString(). + public static string ToStringFull(this List data) + { + if (data == null) return "null"; + + string[] sb = new string[data.Count]; + for (int i = 0; i < data.Count; i++) + { + object o = data[i]; + sb[i] = (o != null) ? o.ToString() : "null"; + } + + return string.Join(", ", sb); + } + + /// Helper method for debugging of object[] content. Using this is not performant. + /// Should only be used for debugging as necessary. + /// Any object[]. + /// A comma-separated string containing each value's ToString(). + public static string ToStringFull(this object[] data) + { + if (data == null) return "null"; + + string[] sb = new string[data.Length]; + for (int i = 0; i < data.Length; i++) + { + object o = data[i]; + sb[i] = (o != null) ? o.ToString() : "null"; + } + + return string.Join(", ", sb); + } + + + /// + /// This method copies all string-typed keys of the original into a new Hashtable. + /// + /// + /// Does not recurse (!) into hashes that might be values in the root-hash. + /// This does not modify the original. + /// + /// The original IDictonary to get string-typed keys from. + /// New Hashtable containing only string-typed keys of the original. + public static Hashtable StripToStringKeys(this IDictionary original) + { + Hashtable target = new Hashtable(); + if (original != null) + { + foreach (object key in original.Keys) + { + if (key is string) + { + target[key] = original[key]; + } + } + } + + return target; + } + + /// + /// This method copies all string-typed keys of the original into a new Hashtable. + /// + /// + /// Does not recurse (!) into hashes that might be values in the root-hash. + /// This does not modify the original. + /// + /// The original IDictonary to get string-typed keys from. + /// New Hashtable containing only string-typed keys of the original. + public static Hashtable StripToStringKeys(this Hashtable original) + { + Hashtable target = new Hashtable(); + if (original != null) + { + foreach (DictionaryEntry entry in original) + { + if (entry.Key is string) + { + target[entry.Key] = original[entry.Key]; + } + } + } + + return target; + } + + + /// Used by StripKeysWithNullValues. + /// + /// By making keysWithNullValue a static variable to clear before using, allocations only happen during the warm-up phase + /// as the list needs to grow. Once it hit the high water mark for keys you need to remove. + /// + private static readonly List keysWithNullValue = new List(); + + /// Removes all keys with null values. + /// + /// Photon properties are removed by setting their value to null. Changes the original IDictionary! + /// Uses lock(keysWithNullValue), which should be no problem in expected use cases. + /// + /// The IDictionary to strip of keys with null value. + public static void StripKeysWithNullValues(this IDictionary original) + { + lock (keysWithNullValue) + { + keysWithNullValue.Clear(); + + foreach (DictionaryEntry entry in original) + { + if (entry.Value == null) + { + keysWithNullValue.Add(entry.Key); + } + } + + for (int i = 0; i < keysWithNullValue.Count; i++) + { + var key = keysWithNullValue[i]; + original.Remove(key); + } + } + } + + /// Removes all keys with null values. + /// + /// Photon properties are removed by setting their value to null. Changes the original IDictionary! + /// Uses lock(keysWithNullValue), which should be no problem in expected use cases. + /// + /// The IDictionary to strip of keys with null value. + public static void StripKeysWithNullValues(this Hashtable original) + { + lock (keysWithNullValue) + { + keysWithNullValue.Clear(); + + foreach (DictionaryEntry entry in original) + { + if (entry.Value == null) + { + keysWithNullValue.Add(entry.Key); + } + } + + for (int i = 0; i < keysWithNullValue.Count; i++) + { + var key = keysWithNullValue[i]; + original.Remove(key); + } + } + } + + + /// + /// Checks if a particular integer value is in an int-array. + /// + /// This might be useful to look up if a particular actorNumber is in the list of players of a room. + /// The array of ints to check. + /// The number to lookup in target. + /// True if nr was found in target. + public static bool Contains(this int[] target, int nr) + { + if (target == null) + { + return false; + } + + for (int index = 0; index < target.Length; index++) + { + if (target[index] == nr) + { + return true; + } + } + + return false; + } + } +} + diff --git a/Assets/Photon/PhotonRealtime/Code/Extensions.cs.meta b/Assets/Photon/PhotonRealtime/Code/Extensions.cs.meta new file mode 100644 index 00000000..2025f005 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/Extensions.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 3c0464991e33a70498abdd85c150cc59 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonRealtime/Code/FriendInfo.cs b/Assets/Photon/PhotonRealtime/Code/FriendInfo.cs new file mode 100644 index 00000000..378e9201 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/FriendInfo.cs @@ -0,0 +1,48 @@ +// ---------------------------------------------------------------------------- +// +// Loadbalancing Framework for Photon - Copyright (C) 2018 Exit Games GmbH +// +// +// Collection of values related to a user / friend. +// +// developer@photonengine.com +// ---------------------------------------------------------------------------- + +#if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER +#define SUPPORTED_UNITY +#endif + + +namespace Photon.Realtime +{ + using ExitGames.Client.Photon; + + #if SUPPORTED_UNITY || NETFX_CORE + using Hashtable = ExitGames.Client.Photon.Hashtable; + using SupportClass = ExitGames.Client.Photon.SupportClass; + #endif + + + /// + /// Used to store info about a friend's online state and in which room he/she is. + /// + public class FriendInfo + { + [System.Obsolete("Use UserId.")] + public string Name { get { return this.UserId; } } + public string UserId { get; internal protected set; } + + public bool IsOnline { get; internal protected set; } + public string Room { get; internal protected set; } + + public bool IsInRoom + { + get { return this.IsOnline && !string.IsNullOrEmpty(this.Room); } + } + + public override string ToString() + { + return string.Format("{0}\t is: {1}", this.UserId, (!this.IsOnline) ? "offline" : this.IsInRoom ? "playing" : "on master"); + } + } +} diff --git a/Assets/Photon/PhotonRealtime/Code/FriendInfo.cs.meta b/Assets/Photon/PhotonRealtime/Code/FriendInfo.cs.meta new file mode 100644 index 00000000..b810efc6 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/FriendInfo.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 94ba1138c322ea04c8c37cfbcf87f468 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonRealtime/Code/LoadBalancingClient.cs b/Assets/Photon/PhotonRealtime/Code/LoadBalancingClient.cs new file mode 100644 index 00000000..0ec77f89 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/LoadBalancingClient.cs @@ -0,0 +1,4469 @@ +// ----------------------------------------------------------------------- +// +// Loadbalancing Framework for Photon - Copyright (C) 2018 Exit Games GmbH +// +// +// Provides the operations and a state for games using the +// Photon LoadBalancing server. +// +// developer@photonengine.com +// ---------------------------------------------------------------------------- + +#if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER +#define SUPPORTED_UNITY +#endif + + +namespace Photon.Realtime +{ + using System; + using System.Collections; + using System.Collections.Generic; + using System.Diagnostics; + using ExitGames.Client.Photon; + + #if SUPPORTED_UNITY + using UnityEngine; + using Debug = UnityEngine.Debug; + #endif + #if SUPPORTED_UNITY || NETFX_CORE + using Hashtable = ExitGames.Client.Photon.Hashtable; + using SupportClass = ExitGames.Client.Photon.SupportClass; + #endif + + + #region Enums + + /// + /// State values for a client, which handles switching Photon server types, some operations, etc. + /// + /// \ingroup publicApi + public enum ClientState + { + /// Peer is created but not used yet. + PeerCreated, + + /// Transition state while connecting to a server. On the Photon Cloud this sends the AppId and AuthenticationValues (UserID). + Authenticating, + + /// Not Used. + Authenticated, + + /// The client sent an OpJoinLobby and if this was done on the Master Server, it will result in. Depending on the lobby, it gets room listings. + JoiningLobby, + + /// The client is in a lobby, connected to the MasterServer. Depending on the lobby, it gets room listings. + JoinedLobby, + + /// Transition from MasterServer to GameServer. + DisconnectingFromMasterServer, + [Obsolete("Renamed to DisconnectingFromMasterServer")] + DisconnectingFromMasterserver = DisconnectingFromMasterServer, + + /// Transition to GameServer (client authenticates and joins/creates a room). + ConnectingToGameServer, + [Obsolete("Renamed to ConnectingToGameServer")] + ConnectingToGameserver = ConnectingToGameServer, + + /// Connected to GameServer (going to auth and join game). + ConnectedToGameServer, + [Obsolete("Renamed to ConnectedToGameServer")] + ConnectedToGameserver = ConnectedToGameServer, + + /// Transition state while joining or creating a room on GameServer. + Joining, + + /// The client entered a room. The CurrentRoom and Players are known and you can now raise events. + Joined, + + /// Transition state when leaving a room. + Leaving, + + /// Transition from GameServer to MasterServer (after leaving a room/game). + DisconnectingFromGameServer, + [Obsolete("Renamed to DisconnectingFromGameServer")] + DisconnectingFromGameserver = DisconnectingFromGameServer, + + /// Connecting to MasterServer (includes sending authentication values). + ConnectingToMasterServer, + [Obsolete("Renamed to ConnectingToMasterServer.")] + ConnectingToMasterserver = ConnectingToMasterServer, + + /// The client disconnects (from any server). This leads to state Disconnected. + Disconnecting, + + /// The client is no longer connected (to any server). Connect to MasterServer to go on. + Disconnected, + + /// Connected to MasterServer. You might use matchmaking or join a lobby now. + ConnectedToMasterServer, + [Obsolete("Renamed to ConnectedToMasterServer.")] + ConnectedToMasterserver = ConnectedToMasterServer, + [Obsolete("Renamed to ConnectedToMasterServer.")] + ConnectedToMaster = ConnectedToMasterServer, + + /// Client connects to the NameServer. This process includes low level connecting and setting up encryption. When done, state becomes ConnectedToNameServer. + ConnectingToNameServer, + + /// Client is connected to the NameServer and established encryption already. You should call OpGetRegions or ConnectToRegionMaster. + ConnectedToNameServer, + + /// Clients disconnects (specifically) from the NameServer (usually to connect to the MasterServer). + DisconnectingFromNameServer, + + /// Client was unable to connect to Name Server and will attempt to connect with an alternative network protocol (TCP). + ConnectWithFallbackProtocol + } + + + /// + /// Internal state, how this peer gets into a particular room (joining it or creating it). + /// + internal enum JoinType + { + /// This client creates a room, gets into it (no need to join) and can set room properties. + CreateRoom, + /// The room existed already and we join into it (not setting room properties). + JoinRoom, + /// Done on Master Server and (if successful) followed by a Join on Game Server. + JoinRandomRoom, + /// Done on Master Server and (if successful) followed by a Join or Create on Game Server. + JoinRandomOrCreateRoom, + /// Client is either joining or creating a room. On Master- and Game-Server. + JoinOrCreateRoom + } + + /// Enumeration of causes for Disconnects (used in LoadBalancingClient.DisconnectedCause). + /// Read the individual descriptions to find out what to do about this type of disconnect. + public enum DisconnectCause + { + /// No error was tracked. + None, + + /// OnStatusChanged: The server is not available or the address is wrong. Make sure the port is provided and the server is up. + ExceptionOnConnect, + + /// OnStatusChanged: Dns resolution for a hostname failed. The exception for this is being caught and logged with error level. + DnsExceptionOnConnect, + + /// OnStatusChanged: The server address was parsed as IPv4 illegally. An illegal address would be e.g. 192.168.1.300. IPAddress.TryParse() will let this pass but our check won't. + ServerAddressInvalid, + + /// OnStatusChanged: Some internal exception caused the socket code to fail. This may happen if you attempt to connect locally but the server is not available. In doubt: Contact Exit Games. + Exception, + + /// OnStatusChanged: The server disconnected this client due to timing out (missing acknowledgement from the client). + ServerTimeout, + + /// OnStatusChanged: This client detected that the server's responses are not received in due time. + ClientTimeout, + + /// OnStatusChanged: The server disconnected this client from within the room's logic (the C# code). + DisconnectByServerLogic, + + /// OnStatusChanged: The server disconnected this client for unknown reasons. + DisconnectByServerReasonUnknown, + + /// OnOperationResponse: Authenticate in the Photon Cloud with invalid AppId. Update your subscription or contact Exit Games. + InvalidAuthentication, + + /// OnOperationResponse: Authenticate in the Photon Cloud with invalid client values or custom authentication setup in Cloud Dashboard. + CustomAuthenticationFailed, + + /// The authentication ticket should provide access to any Photon Cloud server without doing another authentication-service call. However, the ticket expired. + AuthenticationTicketExpired, + + /// OnOperationResponse: Authenticate (temporarily) failed when using a Photon Cloud subscription without CCU Burst. Update your subscription. + MaxCcuReached, + + /// OnOperationResponse: Authenticate when the app's Photon Cloud subscription is locked to some (other) region(s). Update your subscription or master server address. + InvalidRegion, + + /// OnOperationResponse: Operation that's (currently) not available for this client (not authorized usually). Only tracked for op Authenticate. + OperationNotAllowedInCurrentState, + + /// OnStatusChanged: The client disconnected from within the logic (the C# code). + DisconnectByClientLogic, + + /// The client called an operation too frequently and got disconnected due to hitting the OperationLimit. This triggers a client-side disconnect, too. + /// To protect the server, some operations have a limit. When an OperationResponse fails with ErrorCode.OperationLimitReached, the client disconnects. + DisconnectByOperationLimit, + + /// The client received a "Disconnect Message" from the server. Check the debug logs for details. + DisconnectByDisconnectMessage, + + /// Used in case the application quits. Can be useful to not load new scenes or re-connect in OnDisconnected. + /// ConnectionHandler.OnDisable() will use this, if the Unity engine already called OnApplicationQuit (ConnectionHandler.AppQuits = true). + ApplicationQuit + } + + /// Available server (types) for internally used field: server. + /// Photon uses 3 different roles of servers: Name Server, Master Server and Game Server. + public enum ServerConnection + { + /// This server is where matchmaking gets done and where clients can get lists of rooms in lobbies. + MasterServer, + /// This server handles a number of rooms to execute and relay the messages between players (in a room). + GameServer, + /// This server is used initially to get the address (IP) of a Master Server for a specific region. Not used for Photon OnPremise (self hosted). + NameServer + } + + /// Defines which sort of app the LoadBalancingClient is used for: Realtime or Voice. + public enum ClientAppType + { + /// Realtime apps are for gaming / interaction. Also used by PUN 2. + Realtime, + /// Voice apps stream audio. + Voice, + /// Fusion clients are for matchmaking and relay in Photon Fusion. + Fusion + } + + /// + /// Defines how the communication gets encrypted. + /// + public enum EncryptionMode + { + /// + /// This is the default encryption mode: Messages get encrypted only on demand (when you send operations with the "encrypt" parameter set to true). + /// + PayloadEncryption, + /// + /// With this encryption mode for UDP, the connection gets setup and all further datagrams get encrypted almost entirely. On-demand message encryption (like in PayloadEncryption) is unavailable. + /// + DatagramEncryption = 10, + /// + /// With this encryption mode for UDP, the connection gets setup with random sequence numbers and all further datagrams get encrypted almost entirely. On-demand message encryption (like in PayloadEncryption) is unavailable. + /// + DatagramEncryptionRandomSequence = 11, + ///// + ///// Same as above except that GCM mode is used to encrypt data. + ///// + //DatagramEncryptionGCMRandomSequence = 12, + /// + /// Datagram Encryption with GCM. + /// + DatagramEncryptionGCM = 13, + } + + /// Container for port definitions. + public struct PhotonPortDefinition + { + public static readonly PhotonPortDefinition AlternativeUdpPorts = new PhotonPortDefinition() { NameServerPort = 27000, MasterServerPort = 27001, GameServerPort = 27002}; + + /// Typical ports: UDP: 5058 or 27000, TCP: 4533, WSS: 19093 or 443. + public ushort NameServerPort; + /// Typical ports: UDP: 5056 or 27002, TCP: 4530, WSS: 19090 or 443. + public ushort MasterServerPort; + /// Typical ports: UDP: 5055 or 27001, TCP: 4531, WSS: 19091 or 443. + public ushort GameServerPort; + } + + + #endregion + + + /// + /// This class implements the Photon LoadBalancing workflow by using a LoadBalancingPeer. + /// It keeps a state and will automatically execute transitions between the Master and Game Servers. + /// + /// + /// This class (and the Player class) should be extended to implement your own game logic. + /// You can override CreatePlayer as "factory" method for Players and return your own Player instances. + /// The State of this class is essential to know when a client is in a lobby (or just on the master) + /// and when in a game where the actual gameplay should take place. + /// Extension notes: + /// An extension of this class should override the methods of the IPhotonPeerListener, as they + /// are called when the state changes. Call base.method first, then pick the operation or state you + /// want to react to and put it in a switch-case. + /// We try to provide demo to each platform where this api can be used, so lookout for those. + /// + public class LoadBalancingClient : IPhotonPeerListener + { + /// + /// The client uses a LoadBalancingPeer as API to communicate with the server. + /// This is public for ease-of-use: Some methods like OpRaiseEvent are not relevant for the connection state and don't need a override. + /// + public LoadBalancingPeer LoadBalancingPeer { get; private set; } + + /// + /// Gets or sets the binary protocol version used by this client + /// + /// + /// Use this always instead of setting it via + /// () directly, especially when WSS protocol is used. + /// + public SerializationProtocol SerializationProtocol + { + get + { + return this.LoadBalancingPeer.SerializationProtocolType; + } + set + { + this.LoadBalancingPeer.SerializationProtocolType = value; + } + } + + /// The version of your client. A new version also creates a new "virtual app" to separate players from older client versions. + public string AppVersion { get; set; } + + /// The AppID as assigned from the Photon Cloud. If you host yourself, this is the "regular" Photon Server Application Name (most likely: "LoadBalancing"). + public string AppId { get; set; } + + /// The ClientAppType defines which sort of AppId should be expected. The LoadBalancingClient supports Realtime and Voice app types. Default: Realtime. + public ClientAppType ClientType { get; set; } + + /// User authentication values to be sent to the Photon server right after connecting. + /// Set this property or pass AuthenticationValues by Connect(..., authValues). + public AuthenticationValues AuthValues { get; set; } + + /// Enables the new Authentication workflow. + public AuthModeOption AuthMode = AuthModeOption.Auth; + + /// Defines how the communication gets encrypted. + public EncryptionMode EncryptionMode = EncryptionMode.PayloadEncryption; + + /// Optionally contains a protocol which will be used on Master- and GameServer. + /// + /// When using AuthMode = AuthModeOption.AuthOnceWss, the client uses a wss-connection on the NameServer but another protocol on the other servers. + /// As the NameServer sends an address, which is different per protocol, it needs to know the expected protocol. + /// + /// This is nullable by design. In many cases, the protocol on the NameServer is not different from the other servers. + /// If set, the operation AuthOnce will contain this value and the OpAuth response on the NameServer will execute a protocol switch. + /// + public ConnectionProtocol? ExpectedProtocol { get; set; } + + + ///Simplifies getting the token for connect/init requests, if this feature is enabled. + private object TokenForInit + { + get + { + if (this.AuthMode == AuthModeOption.Auth) + { + return null; + } + return (this.AuthValues != null) ? this.AuthValues.Token : null; + } + } + + /// Internally used cache for the server's token. Identifies a user/session and can be used to rejoin. + private object tokenCache; + + + /// True if this client uses a NameServer to get the Master Server address. + /// This value is public, despite being an internal value, which should only be set by this client. + public bool IsUsingNameServer { get; set; } + + /// Name Server Host Name for Photon Cloud. Without port and without any prefix. + public string NameServerHost = "ns.photonengine.io"; + + /// Name Server Address for Photon Cloud (based on current protocol). You can use the default values and usually won't have to set this value. + public string NameServerAddress { get { return this.GetNameServerAddress(); } } + + /// Name Server port per protocol (the UDP port is different than TCP, etc). + private static readonly Dictionary ProtocolToNameServerPort = new Dictionary() { { ConnectionProtocol.Udp, 5058 }, { ConnectionProtocol.Tcp, 4533 }, { ConnectionProtocol.WebSocket, 9093 }, { ConnectionProtocol.WebSocketSecure, 19093 } }; //, { ConnectionProtocol.RHttp, 6063 } }; + + + /// Replaced by ServerPortOverrides. + [Obsolete("Set port overrides in ServerPortOverrides. Not used anymore!")] + public bool UseAlternativeUdpPorts { get; set; } + + + /// Defines overrides for server ports. Used per server-type if > 0. Important: You must change these when the protocol changes! + /// + /// Typical ports are listed in PhotonPortDefinition. + /// + /// Instead of using the port provided from the servers, the specified port is used (independent of the protocol). + /// If a value is 0 (default), the port is not being replaced. + /// + /// Different protocols have different typical ports per server-type. + /// https://doc.photonengine.com/en-us/pun/current/reference/tcp-and-udp-port-numbers + /// + /// In case of using the AuthMode AutOnceWss, the name server's protocol is wss, while udp or tcp will be used on the master server and game server. + /// Set the ports accordingly per protocol and server. + /// + public PhotonPortDefinition ServerPortOverrides; + + + /// Enables a fallback to another protocol in case a connect to the Name Server fails. + /// + /// When connecting to the Name Server fails for a first time, the client will select an alternative + /// network protocol and re-try to connect. + /// + /// The fallback will use the default Name Server port as defined by ProtocolToNameServerPort. + /// + /// The fallback for TCP is UDP. All other protocols fallback to TCP. + /// + public bool EnableProtocolFallback { get; set; } + + /// The currently used server address (if any). The type of server is define by Server property. + public string CurrentServerAddress { get { return this.LoadBalancingPeer.ServerAddress; } } + + /// Your Master Server address. In PhotonCloud, call ConnectToRegionMaster() to find your Master Server. + /// + /// In the Photon Cloud, explicit definition of a Master Server Address is not best practice. + /// The Photon Cloud has a "Name Server" which redirects clients to a specific Master Server (per Region and AppId). + /// + public string MasterServerAddress { get; set; } + + /// The game server's address for a particular room. In use temporarily, as assigned by master. + public string GameServerAddress { get; protected internal set; } + + /// The server this client is currently connected or connecting to. + /// + /// Each server (NameServer, MasterServer, GameServer) allow some operations and reject others. + /// + public ServerConnection Server { get; private set; } + + /// + /// Defines a proxy URL for WebSocket connections. Can be the proxy or point to a .pac file. + /// + /// + /// This URL supports various definitions: + /// + /// "user:pass@proxyaddress:port"
    + /// "proxyaddress:port"
    + /// "system:"
    + /// "pac:"
    + /// "pac:http://host/path/pacfile.pac"
    + /// + /// Important: Don't define a protocol, except to point to a pac file. the proxy address should not begin with http:// or https://. + ///
    + public string ProxyServerAddress; + + /// Backing field for property. + private ClientState state = ClientState.PeerCreated; + + /// Current state this client is in. Careful: several states are "transitions" that lead to other states. + public ClientState State + { + get + { + return this.state; + } + + set + { + if (this.state == value) + { + return; + } + ClientState previousState = this.state; + this.state = value; + if (StateChanged != null) StateChanged(previousState, this.state); + } + } + + /// Returns if this client is currently connected or connecting to some type of server. + /// This is even true while switching servers. Use IsConnectedAndReady to check only for those states that enable you to send Operations. + public bool IsConnected { get { return this.LoadBalancingPeer != null && this.State != ClientState.PeerCreated && this.State != ClientState.Disconnected; } } + + + /// + /// A refined version of IsConnected which is true only if your connection is ready to send operations. + /// + /// + /// Not all operations can be called on all types of servers. If an operation is unavailable on the currently connected server, + /// this will result in a OperationResponse with ErrorCode != 0. + /// + /// Examples: The NameServer allows OpGetRegions which is not available anywhere else. + /// The MasterServer does not allow you to send events (OpRaiseEvent) and on the GameServer you are unable to join a lobby (OpJoinLobby). + /// + /// To check which server you are on, use: . + /// + public bool IsConnectedAndReady + { + get + { + if (this.LoadBalancingPeer == null) + { + return false; + } + + switch (this.State) + { + case ClientState.PeerCreated: + case ClientState.Disconnected: + case ClientState.Disconnecting: + case ClientState.DisconnectingFromGameServer: + case ClientState.DisconnectingFromMasterServer: + case ClientState.DisconnectingFromNameServer: + case ClientState.Authenticating: + case ClientState.ConnectingToGameServer: + case ClientState.ConnectingToMasterServer: + case ClientState.ConnectingToNameServer: + case ClientState.Joining: + case ClientState.Leaving: + return false; // we are not ready to execute any operations + } + + return true; + } + } + + + /// Register a method to be called when this client's ClientState gets set. + /// This can be useful to react to being connected, joined into a room, etc. + public event Action StateChanged; + + /// Register a method to be called when an event got dispatched. Gets called after the LoadBalancingClient handled the internal events first. + /// + /// This is an alternative to extending LoadBalancingClient to override OnEvent(). + /// + /// Note that OnEvent is calling EventReceived after it handled internal events first. + /// That means for example: Joining players will already be in the player list but leaving + /// players will already be removed from the room. + /// + public event Action EventReceived; + + /// Register a method to be called when an operation response is received. + /// + /// This is an alternative to extending LoadBalancingClient to override OnOperationResponse(). + /// + /// Note that OnOperationResponse gets executed before your Action is called. + /// That means for example: The OpJoinLobby response already set the state to "JoinedLobby" + /// and the response to OpLeave already triggered the Disconnect before this is called. + /// + public event Action OpResponseReceived; + + + /// Wraps up the target objects for a group of callbacks, so they can be called conveniently. + /// By using Add or Remove, objects can "subscribe" or "unsubscribe" for this group of callbacks. + public ConnectionCallbacksContainer ConnectionCallbackTargets; + + /// Wraps up the target objects for a group of callbacks, so they can be called conveniently. + /// By using Add or Remove, objects can "subscribe" or "unsubscribe" for this group of callbacks. + public MatchMakingCallbacksContainer MatchMakingCallbackTargets; + + /// Wraps up the target objects for a group of callbacks, so they can be called conveniently. + /// By using Add or Remove, objects can "subscribe" or "unsubscribe" for this group of callbacks. + internal InRoomCallbacksContainer InRoomCallbackTargets; + + /// Wraps up the target objects for a group of callbacks, so they can be called conveniently. + /// By using Add or Remove, objects can "subscribe" or "unsubscribe" for this group of callbacks. + internal LobbyCallbacksContainer LobbyCallbackTargets; + + /// Wraps up the target objects for a group of callbacks, so they can be called conveniently. + /// By using Add or Remove, objects can "subscribe" or "unsubscribe" for this group of callbacks. + internal WebRpcCallbacksContainer WebRpcCallbackTargets; + + + /// Wraps up the target objects for a group of callbacks, so they can be called conveniently. + /// By using Add or Remove, objects can "subscribe" or "unsubscribe" for this group of callbacks. + internal ErrorInfoCallbacksContainer ErrorInfoCallbackTargets; + + /// Summarizes (aggregates) the different causes for disconnects of a client. + /// + /// A disconnect can be caused by: errors in the network connection or some vital operation failing + /// (which is considered "high level"). While operations always trigger a call to OnOperationResponse, + /// connection related changes are treated in OnStatusChanged. + /// The DisconnectCause is set in either case and summarizes the causes for any disconnect in a single + /// state value which can be used to display (or debug) the cause for disconnection. + /// + public DisconnectCause DisconnectedCause { get; protected set; } + + + /// Internal value if the client is in a lobby. + /// This is used to re-set this.State, when joining/creating a room fails. + public bool InLobby + { + get { return this.State == ClientState.JoinedLobby; } + } + + /// The lobby this client currently uses. Defined when joining a lobby or creating rooms + public TypedLobby CurrentLobby { get; internal set; } + + /// + /// If enabled, the client will get a list of available lobbies from the Master Server. + /// + /// + /// Set this value before the client connects to the Master Server. While connected to the Master + /// Server, a change has no effect. + /// + /// Implement OptionalInfoCallbacks.OnLobbyStatisticsUpdate, to get the list of used lobbies. + /// + /// The lobby statistics can be useful if your title dynamically uses lobbies, depending (e.g.) + /// on current player activity or such. + /// In this case, getting a list of available lobbies, their room-count and player-count can + /// be useful info. + /// + /// ConnectUsingSettings sets this to the PhotonServerSettings value. + /// + public bool EnableLobbyStatistics; + + /// Internal lobby stats cache, used by LobbyStatistics. + private readonly List lobbyStatistics = new List(); + + + /// The local player is never null but not valid unless the client is in a room, too. The ID will be -1 outside of rooms. + public Player LocalPlayer { get; internal set; } + + /// + /// The nickname of the player (synced with others). Same as client.LocalPlayer.NickName. + /// + public string NickName + { + get + { + return this.LocalPlayer.NickName; + } + + set + { + if (this.LocalPlayer == null) + { + return; + } + + this.LocalPlayer.NickName = value; + } + } + + + /// An ID for this user. Sent in OpAuthenticate when you connect. If not set, the PlayerName is applied during connect. + /// + /// On connect, if the UserId is null or empty, the client will copy the PlayName to UserId. If PlayerName is not set either + /// (before connect), the server applies a temporary ID which stays unknown to this client and other clients. + /// + /// The UserId is what's used in FindFriends and for fetching data for your account (with WebHooks e.g.). + /// + /// By convention, set this ID before you connect, not while being connected. + /// There is no error but the ID won't change while being connected. + /// + public string UserId + { + get + { + if (this.AuthValues != null) + { + return this.AuthValues.UserId; + } + return null; + } + set + { + if (this.AuthValues == null) + { + this.AuthValues = new AuthenticationValues(); + } + this.AuthValues.UserId = value; + } + } + + /// The current room this client is connected to (null if none available). + public Room CurrentRoom { get; set; } + + + /// Is true while being in a room (this.state == ClientState.Joined). + /// + /// Aside from polling this value, game logic should implement IMatchmakingCallbacks in some class + /// and react when that gets called.
    + /// OpRaiseEvent, OpLeave and some other operations can only be used (successfully) when the client is in a room.. + ///
    + public bool InRoom + { + get + { + return this.state == ClientState.Joined && this.CurrentRoom != null; + } + } + + /// Statistic value available on master server: Players on master (looking for games). + public int PlayersOnMasterCount { get; internal set; } + + /// Statistic value available on master server: Players in rooms (playing). + public int PlayersInRoomsCount { get; internal set; } + + /// Statistic value available on master server: Rooms currently created. + public int RoomsCount { get; internal set; } + + + /// Internally used to decide if a room must be created or joined on game server. + private JoinType lastJoinType; + + /// Used when the client arrives on the GS, to join the room with the correct values. + private EnterRoomParams enterRoomParamsCache; + + /// Used to cache a failed "enter room" operation on the Game Server, to return to the Master Server before calling a fail-callback. + private OperationResponse failedRoomEntryOperation; + + + /// Maximum of userIDs that can be sent in one friend list request. + private const int FriendRequestListMax = 512; + + /// Contains the list of names of friends to look up their state on the server. + private string[] friendListRequested; + + /// Internal flag to know if the client currently fetches a friend list. + public bool IsFetchingFriendList { get { return this.friendListRequested != null; } } + + + /// The cloud region this client connects to. Set by ConnectToRegionMaster(). Not set if you don't use a NameServer! + public string CloudRegion { get; private set; } + + /// The cluster name provided by the Name Server. + /// + /// The value is provided by the OpResponse for OpAuthenticate/OpAuthenticateOnce. + /// Default: null. This value only ever updates from the Name Server authenticate response. + /// + public string CurrentCluster { get; private set; } + + /// Contains the list if enabled regions this client may use. Null, unless the client got a response to OpGetRegions. + public RegionHandler RegionHandler; + + /// Stores the best region summary of a previous session to speed up connecting. + private string bestRegionSummaryFromStorage; + + /// Set when the best region pinging is done. + public string SummaryToCache; + + /// Internal connection setting/flag. If the client should connect to the best region or not. + /// + /// It's set in the Connect...() methods. Only ConnectUsingSettings() sets it to true. + /// If true, client will ping available regions and select the best. + /// A bestRegionSummaryFromStorage can be used to cut the ping time short. + /// + private bool connectToBestRegion = true; + + + /// Definition of parameters for encryption data (included in Authenticate operation response). + private class EncryptionDataParameters + { + /// + /// Key for encryption mode + /// + public const byte Mode = 0; + /// + /// Key for first secret + /// + public const byte Secret1 = 1; + /// + /// Key for second secret + /// + public const byte Secret2 = 2; + } + + + private class CallbackTargetChange + { + public readonly object Target; + /// Add if true, remove if false. + public readonly bool AddTarget; + + public CallbackTargetChange(object target, bool addTarget) + { + this.Target = target; + this.AddTarget = addTarget; + } + } + + private readonly Queue callbackTargetChanges = new Queue(); + private readonly HashSet callbackTargets = new HashSet(); + + + /// Creates a LoadBalancingClient with UDP protocol or the one specified. + /// Specifies the network protocol to use for connections. + public LoadBalancingClient(ConnectionProtocol protocol = ConnectionProtocol.Udp) + { + this.ConnectionCallbackTargets = new ConnectionCallbacksContainer(this); + this.MatchMakingCallbackTargets = new MatchMakingCallbacksContainer(this); + this.InRoomCallbackTargets = new InRoomCallbacksContainer(this); + this.LobbyCallbackTargets = new LobbyCallbacksContainer(this); + this.WebRpcCallbackTargets = new WebRpcCallbacksContainer(this); + this.ErrorInfoCallbackTargets = new ErrorInfoCallbacksContainer(this); + + this.LoadBalancingPeer = new LoadBalancingPeer(this, protocol); + this.LoadBalancingPeer.OnDisconnectMessage += this.OnDisconnectMessageReceived; + this.SerializationProtocol = SerializationProtocol.GpBinaryV18; + this.LocalPlayer = this.CreatePlayer(string.Empty, -1, true, null); //TODO: Check if we can do this later + + + #if SUPPORTED_UNITY + CustomTypesUnity.Register(); + #endif + + #if UNITY_WEBGL + if (this.LoadBalancingPeer.TransportProtocol == ConnectionProtocol.Tcp || this.LoadBalancingPeer.TransportProtocol == ConnectionProtocol.Udp) + { + this.LoadBalancingPeer.Listener.DebugReturn(DebugLevel.WARNING, "WebGL requires WebSockets. Switching TransportProtocol to WebSocketSecure."); + this.LoadBalancingPeer.TransportProtocol = ConnectionProtocol.WebSocketSecure; + } + #endif + + this.State = ClientState.PeerCreated; + } + + + /// Creates a LoadBalancingClient, setting various values needed before connecting. + /// The Master Server's address to connect to. Used in Connect. + /// The AppId of this title. Needed for the Photon Cloud. Find it in the Dashboard. + /// A version for this client/build. In the Photon Cloud, players are separated by AppId, GameVersion and Region. + /// Specifies the network protocol to use for connections. + public LoadBalancingClient(string masterAddress, string appId, string gameVersion, ConnectionProtocol protocol = ConnectionProtocol.Udp) : this(protocol) + { + this.MasterServerAddress = masterAddress; + this.AppId = appId; + this.AppVersion = gameVersion; + } + + public int NameServerPortInAppSettings; + + /// + /// Gets the NameServer Address (with prefix and port), based on the set protocol (this.LoadBalancingPeer.UsedProtocol). + /// + /// NameServer Address (with prefix and port). + private string GetNameServerAddress() + { + var protocolPort = 0; + ProtocolToNameServerPort.TryGetValue(this.LoadBalancingPeer.TransportProtocol, out protocolPort); + + if (this.NameServerPortInAppSettings != 0) + { + this.DebugReturn(DebugLevel.INFO, string.Format("Using NameServerPortInAppSettings: {0}", this.NameServerPortInAppSettings)); + protocolPort = this.NameServerPortInAppSettings; + } + + if (this.ServerPortOverrides.NameServerPort > 0) + { + protocolPort = this.ServerPortOverrides.NameServerPort; + } + + switch (this.LoadBalancingPeer.TransportProtocol) + { + case ConnectionProtocol.Udp: + case ConnectionProtocol.Tcp: + return string.Format("{0}:{1}", NameServerHost, protocolPort); + case ConnectionProtocol.WebSocket: + return string.Format("ws://{0}:{1}", NameServerHost, protocolPort); + case ConnectionProtocol.WebSocketSecure: + return string.Format("wss://{0}:{1}", NameServerHost, protocolPort); + default: + throw new ArgumentOutOfRangeException(); + } + } + + + #region Operations and Commands + + + // needed connect variants: + // connect to Name Server only (could include getregions) -> end after getregions + // connect to Region Master via Name Server (specific region/cluster) -> no getregions! authenticates and ends after on connected to master + // connect to Best Region via Name Server + // connect to Master Server (no Name Server, no appid) + + public virtual bool ConnectUsingSettings(AppSettings appSettings) + { + if (this.LoadBalancingPeer.PeerState != PeerStateValue.Disconnected) + { + this.DebugReturn(DebugLevel.WARNING, "ConnectUsingSettings() failed. Can only connect while in state 'Disconnected'. Current state: " + this.LoadBalancingPeer.PeerState); + return false; + } + + if (appSettings == null) + { + this.DebugReturn(DebugLevel.ERROR, "ConnectUsingSettings failed. The appSettings can't be null.'"); + return false; + } + + switch (this.ClientType) + { + case ClientAppType.Realtime: + this.AppId = appSettings.AppIdRealtime; + break; + case ClientAppType.Voice: + this.AppId = appSettings.AppIdVoice; + break; + case ClientAppType.Fusion: + this.AppId = appSettings.AppIdFusion; + break; + } + + this.AppVersion = appSettings.AppVersion; + + this.IsUsingNameServer = appSettings.UseNameServer; + this.CloudRegion = appSettings.FixedRegion; + this.connectToBestRegion = string.IsNullOrEmpty(this.CloudRegion); + + this.EnableLobbyStatistics = appSettings.EnableLobbyStatistics; + this.LoadBalancingPeer.DebugOut = appSettings.NetworkLogging; + + this.AuthMode = appSettings.AuthMode; + if (appSettings.AuthMode == AuthModeOption.AuthOnceWss) + { + this.LoadBalancingPeer.TransportProtocol = ConnectionProtocol.WebSocketSecure; + this.ExpectedProtocol = appSettings.Protocol; + } + else + { + this.LoadBalancingPeer.TransportProtocol = appSettings.Protocol; + this.ExpectedProtocol = null; + } + + this.EnableProtocolFallback = appSettings.EnableProtocolFallback; + + this.bestRegionSummaryFromStorage = appSettings.BestRegionSummaryFromStorage; + this.DisconnectedCause = DisconnectCause.None; + + + this.CheckConnectSetupWebGl(); + + + if (this.IsUsingNameServer) + { + this.Server = ServerConnection.NameServer; + if (!appSettings.IsDefaultNameServer) + { + this.NameServerHost = appSettings.Server; + } + + this.ProxyServerAddress = appSettings.ProxyServer; + this.NameServerPortInAppSettings = appSettings.Port; + if (!this.LoadBalancingPeer.Connect(this.NameServerAddress, this.ProxyServerAddress, this.AppId, this.TokenForInit)) + { + return false; + } + + this.State = ClientState.ConnectingToNameServer; + } + else + { + this.Server = ServerConnection.MasterServer; + int portToUse = appSettings.IsDefaultPort ? 5055 : appSettings.Port; // TODO: setup new (default) port config + this.MasterServerAddress = string.Format("{0}:{1}", appSettings.Server, portToUse); + + if (!this.LoadBalancingPeer.Connect(this.MasterServerAddress, this.ProxyServerAddress, this.AppId, this.TokenForInit)) + { + return false; + } + + this.State = ClientState.ConnectingToMasterServer; + } + + return true; + } + + + [Obsolete("Use ConnectToMasterServer() instead.")] + public bool Connect() + { + return this.ConnectToMasterServer(); + } + + /// + /// Starts the "process" to connect to a Master Server, using MasterServerAddress and AppId properties. + /// + /// + /// To connect to the Photon Cloud, use ConnectUsingSettings() or ConnectToRegionMaster(). + /// + /// The process to connect includes several steps: the actual connecting, establishing encryption, authentification + /// (of app and optionally the user) and connecting to the MasterServer + /// + /// Users can connect either anonymously or use "Custom Authentication" to verify each individual player's login. + /// Custom Authentication in Photon uses external services and communities to verify users. While the client provides a user's info, + /// the service setup is done in the Photon Cloud Dashboard. + /// The parameter authValues will set this.AuthValues and use them in the connect process. + /// + /// Connecting to the Photon Cloud might fail due to: + /// - Network issues (OnStatusChanged() StatusCode.ExceptionOnConnect) + /// - Region not available (OnOperationResponse() for OpAuthenticate with ReturnCode == ErrorCode.InvalidRegion) + /// - Subscription CCU limit reached (OnOperationResponse() for OpAuthenticate with ReturnCode == ErrorCode.MaxCcuReached) + /// + public virtual bool ConnectToMasterServer() + { + if (this.LoadBalancingPeer.PeerState != PeerStateValue.Disconnected) + { + this.DebugReturn(DebugLevel.WARNING, "ConnectToMasterServer() failed. Can only connect while in state 'Disconnected'. Current state: " + this.LoadBalancingPeer.PeerState); + return false; + } + + // when using authMode AuthOnce or AuthOnceWSS, the token must be available for the init request. if it's null in that case, don't connect + if (this.AuthMode != AuthModeOption.Auth && this.TokenForInit == null) + { + this.DebugReturn(DebugLevel.ERROR, "Connect() failed. Can't connect to MasterServer with Token == null in AuthMode: " + this.AuthMode); + return false; + } + + this.CheckConnectSetupWebGl(); + + if (this.LoadBalancingPeer.Connect(this.MasterServerAddress, this.ProxyServerAddress, this.AppId, this.TokenForInit)) + { + this.DisconnectedCause = DisconnectCause.None; + this.connectToBestRegion = false; + this.State = ClientState.ConnectingToMasterServer; + this.Server = ServerConnection.MasterServer; + return true; + } + + return false; + } + + + /// + /// Connects to the NameServer for Photon Cloud, where a region and server list can be obtained. + /// + /// + /// If the workflow was started or failed right away. + public bool ConnectToNameServer() + { + if (this.LoadBalancingPeer.PeerState != PeerStateValue.Disconnected) + { + this.DebugReturn(DebugLevel.WARNING, "ConnectToNameServer() failed. Can only connect while in state 'Disconnected'. Current state: " + this.LoadBalancingPeer.PeerState); + return false; + } + + this.IsUsingNameServer = true; + this.CloudRegion = null; + + + this.CheckConnectSetupWebGl(); + + + if (this.AuthMode == AuthModeOption.AuthOnceWss) + { + if (this.ExpectedProtocol == null) + { + this.ExpectedProtocol = this.LoadBalancingPeer.TransportProtocol; + } + this.LoadBalancingPeer.TransportProtocol = ConnectionProtocol.WebSocketSecure; + } + + if (this.LoadBalancingPeer.Connect(this.NameServerAddress, this.ProxyServerAddress, "NameServer", this.TokenForInit)) + { + this.DisconnectedCause = DisconnectCause.None; + this.connectToBestRegion = false; + this.State = ClientState.ConnectingToNameServer; + this.Server = ServerConnection.NameServer; + return true; + } + + return false; + } + + /// + /// Connects you to a specific region's Master Server, using the Name Server to get the IP. + /// + /// + /// If the region is null or empty, no connection will be made. + /// If the region (code) provided is not available, the connection process will fail on the Name Server. + /// This method connects only to the region defined. Any "Best Region" pinging should get done beforehand. + /// + /// To support "sharding", a region string may contain a "/*" to pick a random cluster or "/clustername" + /// to connect to a specific cluster. + /// With a "/" or no cluster postfix, the client connects to the default cluster (a specific one + /// for a region). + /// + /// By default, the region string provided by the Name Server does not contain a cluster (and only the + /// default cluster is used). + /// + /// If the operation could be sent. If false, no operation was sent. + public bool ConnectToRegionMaster(string region) + { + if (string.IsNullOrEmpty(region)) + { + this.DebugReturn(DebugLevel.ERROR, "ConnectToRegionMaster() failed. The region can not be null or empty."); + return false; + } + + this.IsUsingNameServer = true; + + if (this.State == ClientState.Authenticating) + { + if (this.LoadBalancingPeer.DebugOut >= DebugLevel.INFO) + { + this.DebugReturn(DebugLevel.INFO, "ConnectToRegionMaster() will skip calling authenticate, as the current state is 'Authenticating'. Just wait for the result."); + } + return true; + } + + if (this.State == ClientState.ConnectedToNameServer) + { + this.CloudRegion = region; + + bool authenticating = this.CallAuthenticate(); + if (authenticating) + { + this.State = ClientState.Authenticating; + } + + return authenticating; + } + + + this.LoadBalancingPeer.Disconnect(); + + //if (!string.IsNullOrEmpty(region) && !region.Contains("/")) + //{ + // region = region + "/*"; + //} + this.CloudRegion = region; + + + this.CheckConnectSetupWebGl(); + + + if (this.AuthMode == AuthModeOption.AuthOnceWss) + { + if (this.ExpectedProtocol == null) + { + this.ExpectedProtocol = this.LoadBalancingPeer.TransportProtocol; + } + this.LoadBalancingPeer.TransportProtocol = ConnectionProtocol.WebSocketSecure; + } + + this.connectToBestRegion = false; + this.DisconnectedCause = DisconnectCause.None; + if (!this.LoadBalancingPeer.Connect(this.NameServerAddress, this.ProxyServerAddress, "NameServer", null)) + { + return false; + } + + this.State = ClientState.ConnectingToNameServer; + this.Server = ServerConnection.NameServer; + return true; + } + + [Conditional("UNITY_WEBGL")] + private void CheckConnectSetupWebGl() + { + #if UNITY_WEBGL + if (this.LoadBalancingPeer.TransportProtocol != ConnectionProtocol.WebSocket && this.LoadBalancingPeer.TransportProtocol != ConnectionProtocol.WebSocketSecure) + { + this.DebugReturn(DebugLevel.WARNING, "WebGL requires WebSockets. Switching TransportProtocol to WebSocketSecure."); + this.LoadBalancingPeer.TransportProtocol = ConnectionProtocol.WebSocketSecure; + } + + this.EnableProtocolFallback = false; // no fallback on WebGL + #endif + } + + /// + /// Privately used only for reconnecting. + /// + private bool Connect(string serverAddress, string proxyServerAddress, ServerConnection serverType) + { + // TODO: Make sure app doesn't quit right now + + if (this.State == ClientState.Disconnecting) + { + this.DebugReturn(DebugLevel.ERROR, "Connect() failed. Can't connect while disconnecting (still). Current state: " + this.State); + return false; + } + + // when using authMode AuthOnce or AuthOnceWSS, the token must be available for the init request. if it's null in that case, don't connect + if (this.AuthMode != AuthModeOption.Auth && serverType != ServerConnection.NameServer && this.TokenForInit == null) + { + this.DebugReturn(DebugLevel.ERROR, "Connect() failed. Can't connect to " + serverType + " with Token == null in AuthMode: " + this.AuthMode); + return false; + } + + // connect might fail, if the DNS name can't be resolved or if no network connection is available, etc. + bool connecting = this.LoadBalancingPeer.Connect(serverAddress, proxyServerAddress, this.AppId, this.TokenForInit); + + if (connecting) + { + this.DisconnectedCause = DisconnectCause.None; + this.Server = serverType; + + switch (serverType) + { + case ServerConnection.NameServer: + State = ClientState.ConnectingToNameServer; + break; + case ServerConnection.MasterServer: + State = ClientState.ConnectingToMasterServer; + break; + case ServerConnection.GameServer: + State = ClientState.ConnectingToGameServer; + break; + } + } + + return connecting; + } + + + /// Can be used to reconnect to the master server after a disconnect. + /// Common use case: Press the Lock Button on a iOS device and you get disconnected immediately. + public bool ReconnectToMaster() + { + if (this.LoadBalancingPeer.PeerState != PeerStateValue.Disconnected) + { + this.DebugReturn(DebugLevel.WARNING, "ReconnectToMaster() failed. Can only connect while in state 'Disconnected'. Current state: " + this.LoadBalancingPeer.PeerState); + return false; + } + + if (string.IsNullOrEmpty(this.MasterServerAddress)) + { + this.DebugReturn(DebugLevel.WARNING, "ReconnectToMaster() failed. MasterServerAddress is null or empty."); + return false; + } + if (this.tokenCache == null) + { + this.DebugReturn(DebugLevel.WARNING, "ReconnectToMaster() failed. It seems the client doesn't have any previous authentication token to re-connect."); + return false; + } + + if (this.AuthValues == null) + { + this.DebugReturn(DebugLevel.WARNING, "ReconnectToMaster() with AuthValues == null is not correct!"); + this.AuthValues = new AuthenticationValues(); + } + this.AuthValues.Token = this.tokenCache; + + return this.Connect(this.MasterServerAddress, this.ProxyServerAddress, ServerConnection.MasterServer); + } + + /// + /// Can be used to return to a room quickly by directly reconnecting to a game server to rejoin a room. + /// + /// + /// Rejoining room will not send any player properties. Instead client will receive up-to-date ones from server. + /// If you want to set new player properties, do it once rejoined. + /// + /// False, if the conditions are not met. Then, this client does not attempt the ReconnectAndRejoin. + public bool ReconnectAndRejoin() + { + if (this.LoadBalancingPeer.PeerState != PeerStateValue.Disconnected) + { + this.DebugReturn(DebugLevel.WARNING, "ReconnectAndRejoin() failed. Can only connect while in state 'Disconnected'. Current state: " + this.LoadBalancingPeer.PeerState); + return false; + } + + if (string.IsNullOrEmpty(this.GameServerAddress)) + { + this.DebugReturn(DebugLevel.WARNING, "ReconnectAndRejoin() failed. It seems the client wasn't connected to a game server before (no address)."); + return false; + } + if (this.enterRoomParamsCache == null) + { + this.DebugReturn(DebugLevel.WARNING, "ReconnectAndRejoin() failed. It seems the client doesn't have any previous room to re-join."); + return false; + } + if (this.tokenCache == null) + { + this.DebugReturn(DebugLevel.WARNING, "ReconnectAndRejoin() failed. It seems the client doesn't have any previous authentication token to re-connect."); + return false; + } + + if (this.AuthValues == null) + { + this.AuthValues = new AuthenticationValues(); + } + this.AuthValues.Token = this.tokenCache; + + + if (!string.IsNullOrEmpty(this.GameServerAddress) && this.enterRoomParamsCache != null) + { + this.lastJoinType = JoinType.JoinRoom; + this.enterRoomParamsCache.JoinMode = JoinMode.RejoinOnly; + return this.Connect(this.GameServerAddress, this.ProxyServerAddress, ServerConnection.GameServer); + } + + return false; + } + + + /// Disconnects the peer from a server or stays disconnected. If the client / peer was connected, a callback will be triggered. + /// + /// Disconnect will attempt to notify the server of the client closing the connection. + /// + /// Clients that are in a room, will leave the room. If the room's playerTTL > 0, the player will just become inactive (and may rejoin). + /// + /// This method will not change the current State, if this client State is PeerCreated, Disconnecting or Disconnected. + /// In those cases, there is also no callback for the disconnect. The DisconnectedCause will only change if the client was connected. + /// + public void Disconnect(DisconnectCause cause = DisconnectCause.DisconnectByClientLogic) + { + if (this.State == ClientState.Disconnecting || this.State == ClientState.PeerCreated) + { + this.DebugReturn(DebugLevel.INFO, "Disconnect() call gets skipped due to State " + this.State + ". DisconnectedCause: " + this.DisconnectedCause + " Parameter cause: " + cause); + return; + } + + if (this.State != ClientState.Disconnected) + { + this.State = ClientState.Disconnecting; + this.DisconnectedCause = cause; + this.LoadBalancingPeer.Disconnect(); + } + } + + + /// + /// Private Disconnect variant that sets the state, too. + /// + private void DisconnectToReconnect() + { + switch (this.Server) + { + case ServerConnection.NameServer: + this.State = ClientState.DisconnectingFromNameServer; + break; + case ServerConnection.MasterServer: + this.State = ClientState.DisconnectingFromMasterServer; + break; + case ServerConnection.GameServer: + this.State = ClientState.DisconnectingFromGameServer; + break; + } + + this.LoadBalancingPeer.Disconnect(); + } + + /// + /// Useful to test loss of connection which will end in a client timeout. This modifies LoadBalancingPeer.NetworkSimulationSettings. Read remarks. + /// + /// + /// Use with care as this sets LoadBalancingPeer.IsSimulationEnabled.
    + /// Read LoadBalancingPeer.IsSimulationEnabled to check if this is on or off, if needed.
    + /// + /// If simulateTimeout is true, LoadBalancingPeer.NetworkSimulationSettings.IncomingLossPercentage and + /// LoadBalancingPeer.NetworkSimulationSettings.OutgoingLossPercentage will be set to 100.
    + /// Obviously, this overrides any network simulation settings done before.
    + /// + /// If you want fine-grained network simulation control, use the NetworkSimulationSettings.
    + /// + /// The timeout will lead to a call to , as usual in a client timeout. + /// + /// You could modify this method (or use NetworkSimulationSettings) to deliberately run into a server timeout by + /// just setting the OutgoingLossPercentage = 100 and the IncomingLossPercentage = 0. + ///
    + /// If true, a connection loss is simulated. If false, the simulation ends. + public void SimulateConnectionLoss(bool simulateTimeout) + { + this.DebugReturn(DebugLevel.WARNING, "SimulateConnectionLoss() set to: "+simulateTimeout); + + if (simulateTimeout) + { + this.LoadBalancingPeer.NetworkSimulationSettings.IncomingLossPercentage = 100; + this.LoadBalancingPeer.NetworkSimulationSettings.OutgoingLossPercentage = 100; + } + + this.LoadBalancingPeer.IsSimulationEnabled = simulateTimeout; + } + + private bool CallAuthenticate() + { + if (this.IsUsingNameServer && this.Server != ServerConnection.NameServer && (this.AuthValues == null || this.AuthValues.Token == null)) + { + this.DebugReturn(DebugLevel.ERROR, "Authenticate without Token is only allowed on Name Server. Connecting to: " + this.Server + " on: " + this.CurrentServerAddress + ". State: " + this.State); + return false; + } + + if (this.AuthMode == AuthModeOption.Auth) + { + if (!this.CheckIfOpCanBeSent(OperationCode.Authenticate, this.Server, "Authenticate")) + { + return false; + } + return this.LoadBalancingPeer.OpAuthenticate(this.AppId, this.AppVersion, this.AuthValues, this.CloudRegion, (this.EnableLobbyStatistics && this.Server == ServerConnection.MasterServer)); + } + else + { + if (!this.CheckIfOpCanBeSent(OperationCode.AuthenticateOnce, this.Server, "AuthenticateOnce")) + { + return false; + } + + ConnectionProtocol targetProtocolPastNameServer = this.ExpectedProtocol != null ? (ConnectionProtocol) this.ExpectedProtocol : this.LoadBalancingPeer.TransportProtocol; + return this.LoadBalancingPeer.OpAuthenticateOnce(this.AppId, this.AppVersion, this.AuthValues, this.CloudRegion, this.EncryptionMode, targetProtocolPastNameServer); + } + } + + + /// + /// This method dispatches all available incoming commands and then sends this client's outgoing commands. + /// It uses DispatchIncomingCommands and SendOutgoingCommands to do that. + /// + /// + /// The Photon client libraries are designed to fit easily into a game or application. The application + /// is in control of the context (thread) in which incoming events and responses are executed and has + /// full control of the creation of UDP/TCP packages. + /// + /// Sending packages and dispatching received messages are two separate tasks. Service combines them + /// into one method at the cost of control. It calls DispatchIncomingCommands and SendOutgoingCommands. + /// + /// Call this method regularly (10..50 times a second). + /// + /// This will Dispatch ANY received commands (unless a reliable command in-order is still missing) and + /// events AND will send queued outgoing commands. Fewer calls might be more effective if a device + /// cannot send many packets per second, as multiple operations might be combined into one package. + /// + /// + /// You could replace Service by: + /// + /// while (DispatchIncomingCommands()); //Dispatch until everything is Dispatched... + /// SendOutgoingCommands(); //Send a UDP/TCP package with outgoing messages + /// + /// + /// + public void Service() + { + if (this.LoadBalancingPeer != null) + { + this.LoadBalancingPeer.Service(); + } + } + + + /// + /// While on the NameServer, this gets you the list of regional servers (short names and their IPs to ping them). + /// + /// If the operation could be sent. If false, no operation was sent (e.g. while not connected to the NameServer). + private bool OpGetRegions() + { + if (!this.CheckIfOpCanBeSent(OperationCode.GetRegions, this.Server, "GetRegions")) + { + return false; + } + + bool sent = this.LoadBalancingPeer.OpGetRegions(this.AppId); + return sent; + } + + + /// + /// Request the rooms and online status for a list of friends. All clients should set a unique UserId before connecting. The result is available in this.FriendList. + /// + /// + /// Used on Master Server to find the rooms played by a selected list of users. + /// The result will be stored in LoadBalancingClient.FriendList, which is null before the first server response. + /// + /// Users identify themselves by setting a UserId in the LoadBalancingClient instance. + /// This will send the ID in OpAuthenticate during connect (to master and game servers). + /// Note: Changing a player's name doesn't make sense when using a friend list. + /// + /// The list of usernames must be fetched from some other source (not provided by Photon). + /// + /// + /// Internal:
    + /// The server response includes 2 arrays of info (each index matching a friend from the request):
    + /// ParameterCode.FindFriendsResponseOnlineList = bool[] of online states
    + /// ParameterCode.FindFriendsResponseRoomIdList = string[] of room names (empty string if not in a room)
    + ///
    + /// The options may be used to define which state a room must match to be returned. + ///
    + /// Array of friend's names (make sure they are unique). + /// Options that affect the result of the FindFriends operation. + /// If the operation could be sent (requires connection). + public bool OpFindFriends(string[] friendsToFind, FindFriendsOptions options = null) + { + if (!this.CheckIfOpCanBeSent(OperationCode.FindFriends, this.Server, "FindFriends")) + { + return false; + } + + if (this.IsFetchingFriendList) + { + this.DebugReturn(DebugLevel.WARNING, "OpFindFriends skipped: already fetching friends list."); + return false; // fetching friends currently, so don't do it again (avoid changing the list while fetching friends) + } + + if (friendsToFind == null || friendsToFind.Length == 0) + { + this.DebugReturn(DebugLevel.ERROR, "OpFindFriends skipped: friendsToFind array is null or empty."); + return false; + } + + if (friendsToFind.Length > FriendRequestListMax) + { + this.DebugReturn(DebugLevel.ERROR, string.Format("OpFindFriends skipped: friendsToFind array exceeds allowed length of {0}.", FriendRequestListMax)); + return false; + } + + List friendsList = new List(friendsToFind.Length); + for (int i = 0; i < friendsToFind.Length; i++) + { + string friendUserId = friendsToFind[i]; + if (string.IsNullOrEmpty(friendUserId)) + { + this.DebugReturn(DebugLevel.WARNING, + string.Format( + "friendsToFind array contains a null or empty UserId, element at position {0} skipped.", + i)); + } + else if (friendUserId.Equals(UserId)) + { + this.DebugReturn(DebugLevel.WARNING, + string.Format( + "friendsToFind array contains local player's UserId \"{0}\", element at position {1} skipped.", + friendUserId, + i)); + } + else if (friendsList.Contains(friendUserId)) + { + this.DebugReturn(DebugLevel.WARNING, + string.Format( + "friendsToFind array contains duplicate UserId \"{0}\", element at position {1} skipped.", + friendUserId, + i)); + } + else + { + friendsList.Add(friendUserId); + } + } + + if (friendsList.Count == 0) + { + this.DebugReturn(DebugLevel.ERROR, "OpFindFriends skipped: friends list to find is empty."); + return false; + } + + string[] filteredArray = friendsList.ToArray(); + bool sent = this.LoadBalancingPeer.OpFindFriends(filteredArray, options); + this.friendListRequested = sent ? filteredArray : null; + + return sent; + } + + /// If already connected to a Master Server, this joins the specified lobby. This request triggers an OnOperationResponse() call and the callback OnJoinedLobby(). + /// The lobby to join. Use null for default lobby. + /// If the operation could be sent. False, if the client is not IsConnectedAndReady or when it's not connected to a Master Server. + public bool OpJoinLobby(TypedLobby lobby) + { + if (!this.CheckIfOpCanBeSent(OperationCode.JoinLobby, this.Server, "JoinLobby")) + { + return false; + } + + if (lobby == null) + { + lobby = TypedLobby.Default; + } + bool sent = this.LoadBalancingPeer.OpJoinLobby(lobby); + if (sent) + { + this.CurrentLobby = lobby; + this.State = ClientState.JoiningLobby; + } + + return sent; + } + + + /// Opposite of joining a lobby. You don't have to explicitly leave a lobby to join another (client can be in one max, at any time). + /// If the operation could be sent (has to be connected). + public bool OpLeaveLobby() + { + if (!this.CheckIfOpCanBeSent(OperationCode.LeaveLobby, this.Server, "LeaveLobby")) + { + return false; + } + return this.LoadBalancingPeer.OpLeaveLobby(); + } + + + /// + /// Joins a random room that matches the filter. Will callback: OnJoinedRoom or OnJoinRandomFailed. + /// + /// + /// Used for random matchmaking. You can join any room or one with specific properties defined in opJoinRandomRoomParams. + /// + /// You can use expectedCustomRoomProperties and expectedMaxPlayers as filters for accepting rooms. + /// If you set expectedCustomRoomProperties, a room must have the exact same key values set at Custom Properties. + /// You need to define which Custom Room Properties will be available for matchmaking when you create a room. + /// See: OpCreateRoom(string roomName, RoomOptions roomOptions, TypedLobby lobby) + /// + /// This operation fails if no rooms are fitting or available (all full, closed or not visible). + /// It may also fail when actually joining the room which was found. Rooms may close, become full or empty anytime. + /// + /// This method can only be called while the client is connected to a Master Server so you should + /// implement the callback OnConnectedToMaster. + /// Check the return value to make sure the operation will be called on the server. + /// Note: There will be no callbacks if this method returned false. + /// + /// + /// This client's State is set to ClientState.Joining immediately, when the operation could + /// be called. In the background, the client will switch servers and call various related operations. + /// + /// When you're in the room, this client's State will become ClientState.Joined. + /// + /// + /// When entering a room, this client's Player Custom Properties will be sent to the room. + /// Use LocalPlayer.SetCustomProperties to set them, even while not yet in the room. + /// Note that the player properties will be cached locally and are not wiped when leaving a room. + /// + /// More about matchmaking: + /// https://doc.photonengine.com/en-us/realtime/current/reference/matchmaking-and-lobby + /// + /// You can define an array of expectedUsers, to block player slots in the room for these users. + /// The corresponding feature in Photon is called "Slot Reservation" and can be found in the doc pages. + /// + /// Optional definition of properties to filter rooms in random matchmaking. + /// If the operation could be sent currently (requires connection to Master Server). + public bool OpJoinRandomRoom(OpJoinRandomRoomParams opJoinRandomRoomParams = null) + { + if (!this.CheckIfOpCanBeSent(OperationCode.JoinRandomGame, this.Server, "JoinRandomGame")) + { + return false; + } + + if (opJoinRandomRoomParams == null) + { + opJoinRandomRoomParams = new OpJoinRandomRoomParams(); + } + + this.enterRoomParamsCache = new EnterRoomParams(); + this.enterRoomParamsCache.Lobby = opJoinRandomRoomParams.TypedLobby; + this.enterRoomParamsCache.ExpectedUsers = opJoinRandomRoomParams.ExpectedUsers; + + + bool sending = this.LoadBalancingPeer.OpJoinRandomRoom(opJoinRandomRoomParams); + if (sending) + { + this.lastJoinType = JoinType.JoinRandomRoom; + this.State = ClientState.Joining; + } + return sending; + } + + + /// + /// Attempts to join a room that matches the specified filter and creates a room if none found. + /// + /// + /// This operation is a combination of filter-based random matchmaking with the option to create a new room, + /// if no fitting room exists. + /// The benefit of that is that the room creation is done by the same operation and the room can be found + /// by the very next client, looking for similar rooms. + /// + /// There are separate parameters for joining and creating a room. + /// + /// This method can only be called while connected to a Master Server. + /// This client's State is set to ClientState.Joining immediately. + /// + /// Either IMatchmakingCallbacks.OnJoinedRoom or IMatchmakingCallbacks.OnCreatedRoom get called. + /// + /// More about matchmaking: + /// https://doc.photonengine.com/en-us/realtime/current/reference/matchmaking-and-lobby + /// + /// Check the return value to make sure the operation will be called on the server. + /// Note: There will be no callbacks if this method returned false. + /// + /// If the operation will be sent (requires connection to Master Server). + public bool OpJoinRandomOrCreateRoom(OpJoinRandomRoomParams opJoinRandomRoomParams, EnterRoomParams createRoomParams) + { + if (!this.CheckIfOpCanBeSent(OperationCode.JoinRandomGame, this.Server, "OpJoinRandomOrCreateRoom")) + { + return false; + } + + if (opJoinRandomRoomParams == null) + { + opJoinRandomRoomParams = new OpJoinRandomRoomParams(); + } + if (createRoomParams == null) + { + createRoomParams = new EnterRoomParams(); + } + + createRoomParams.JoinMode = JoinMode.CreateIfNotExists; + this.enterRoomParamsCache = createRoomParams; + this.enterRoomParamsCache.Lobby = opJoinRandomRoomParams.TypedLobby; + this.enterRoomParamsCache.ExpectedUsers = opJoinRandomRoomParams.ExpectedUsers; + + + bool sending = this.LoadBalancingPeer.OpJoinRandomOrCreateRoom(opJoinRandomRoomParams, createRoomParams); + if (sending) + { + this.lastJoinType = JoinType.JoinRandomOrCreateRoom; + this.State = ClientState.Joining; + } + return sending; + } + + + + /// + /// Creates a new room. Will callback: OnCreatedRoom and OnJoinedRoom or OnCreateRoomFailed. + /// + /// + /// When successful, the client will enter the specified room and callback both OnCreatedRoom and OnJoinedRoom. + /// In all error cases, OnCreateRoomFailed gets called. + /// + /// Creating a room will fail if the room name is already in use or when the RoomOptions clashing + /// with one another. Check the EnterRoomParams reference for the various room creation options. + /// + /// + /// This method can only be called while the client is connected to a Master Server so you should + /// implement the callback OnConnectedToMaster. + /// Check the return value to make sure the operation will be called on the server. + /// Note: There will be no callbacks if this method returned false. + /// + /// + /// When you're in the room, this client's State will become ClientState.Joined. + /// + /// + /// When entering a room, this client's Player Custom Properties will be sent to the room. + /// Use LocalPlayer.SetCustomProperties to set them, even while not yet in the room. + /// Note that the player properties will be cached locally and are not wiped when leaving a room. + /// + /// You can define an array of expectedUsers, to block player slots in the room for these users. + /// The corresponding feature in Photon is called "Slot Reservation" and can be found in the doc pages. + /// + /// Definition of properties for the room to create. + /// If the operation could be sent currently (requires connection to Master Server). + public bool OpCreateRoom(EnterRoomParams enterRoomParams) + { + if (!this.CheckIfOpCanBeSent(OperationCode.CreateGame, this.Server, "CreateGame")) + { + return false; + } + bool onGameServer = this.Server == ServerConnection.GameServer; + enterRoomParams.OnGameServer = onGameServer; + if (!onGameServer) + { + this.enterRoomParamsCache = enterRoomParams; + } + + bool sending = this.LoadBalancingPeer.OpCreateRoom(enterRoomParams); + if (sending) + { + this.lastJoinType = JoinType.CreateRoom; + this.State = ClientState.Joining; + } + return sending; + } + + + /// + /// Joins a specific room by name and creates it on demand. Will callback: OnJoinedRoom or OnJoinRoomFailed. + /// + /// + /// Useful when players make up a room name to meet in: + /// All involved clients call the same method and whoever is first, also creates the room. + /// + /// When successful, the client will enter the specified room. + /// The client which creates the room, will callback both OnCreatedRoom and OnJoinedRoom. + /// Clients that join an existing room will only callback OnJoinedRoom. + /// In all error cases, OnJoinRoomFailed gets called. + /// + /// Joining a room will fail, if the room is full, closed or when the user + /// already is present in the room (checked by userId). + /// + /// To return to a room, use OpRejoinRoom. + /// + /// This method can only be called while the client is connected to a Master Server so you should + /// implement the callback OnConnectedToMaster. + /// Check the return value to make sure the operation will be called on the server. + /// Note: There will be no callbacks if this method returned false. + /// + /// This client's State is set to ClientState.Joining immediately, when the operation could + /// be called. In the background, the client will switch servers and call various related operations. + /// + /// When you're in the room, this client's State will become ClientState.Joined. + /// + /// + /// If you set room properties in roomOptions, they get ignored when the room is existing already. + /// This avoids changing the room properties by late joining players. + /// + /// When entering a room, this client's Player Custom Properties will be sent to the room. + /// Use LocalPlayer.SetCustomProperties to set them, even while not yet in the room. + /// Note that the player properties will be cached locally and are not wiped when leaving a room. + /// + /// You can define an array of expectedUsers, to block player slots in the room for these users. + /// The corresponding feature in Photon is called "Slot Reservation" and can be found in the doc pages. + /// + /// Definition of properties for the room to create or join. + /// If the operation could be sent currently (requires connection to Master Server). + public bool OpJoinOrCreateRoom(EnterRoomParams enterRoomParams) + { + if (!this.CheckIfOpCanBeSent(OperationCode.JoinGame, this.Server, "JoinOrCreateRoom")) + { + return false; + } + + bool onGameServer = this.Server == ServerConnection.GameServer; + enterRoomParams.JoinMode = JoinMode.CreateIfNotExists; + enterRoomParams.OnGameServer = onGameServer; + if (!onGameServer) + { + this.enterRoomParamsCache = enterRoomParams; + } + + bool sending = this.LoadBalancingPeer.OpJoinRoom(enterRoomParams); + if (sending) + { + this.lastJoinType = JoinType.JoinOrCreateRoom; + this.State = ClientState.Joining; + } + return sending; + } + + + /// + /// Joins a room by name. Will callback: OnJoinedRoom or OnJoinRoomFailed. + /// + /// + /// Useful when using lobbies or when players follow friends or invite each other. + /// + /// When successful, the client will enter the specified room and callback via OnJoinedRoom. + /// In all error cases, OnJoinRoomFailed gets called. + /// + /// Joining a room will fail if the room is full, closed, not existing or when the user + /// already is present in the room (checked by userId). + /// + /// To return to a room, use OpRejoinRoom. + /// When players invite each other and it's unclear who's first to respond, use OpJoinOrCreateRoom instead. + /// + /// This method can only be called while the client is connected to a Master Server so you should + /// implement the callback OnConnectedToMaster. + /// Check the return value to make sure the operation will be called on the server. + /// Note: There will be no callbacks if this method returned false. + /// + /// A room's name has to be unique (per region, appid and gameversion). + /// When your title uses a global matchmaking or invitations (e.g. an external solution), + /// keep regions and the game versions in mind to join a room. + /// + /// + /// This client's State is set to ClientState.Joining immediately, when the operation could + /// be called. In the background, the client will switch servers and call various related operations. + /// + /// When you're in the room, this client's State will become ClientState.Joined. + /// + /// + /// When entering a room, this client's Player Custom Properties will be sent to the room. + /// Use LocalPlayer.SetCustomProperties to set them, even while not yet in the room. + /// Note that the player properties will be cached locally and are not wiped when leaving a room. + /// + /// You can define an array of expectedUsers, to reserve player slots in the room for friends or party members. + /// The corresponding feature in Photon is called "Slot Reservation" and can be found in the doc pages. + /// + /// Definition of properties for the room to join. + /// If the operation could be sent currently (requires connection to Master Server). + public bool OpJoinRoom(EnterRoomParams enterRoomParams) + { + if (!this.CheckIfOpCanBeSent(OperationCode.JoinGame, this.Server, "JoinRoom")) + { + return false; + } + + bool onGameServer = this.Server == ServerConnection.GameServer; + enterRoomParams.OnGameServer = onGameServer; + if (!onGameServer) + { + this.enterRoomParamsCache = enterRoomParams; + } + + bool sending = this.LoadBalancingPeer.OpJoinRoom(enterRoomParams); + if (sending) + { + this.lastJoinType = enterRoomParams.JoinMode == JoinMode.CreateIfNotExists ? JoinType.JoinOrCreateRoom : JoinType.JoinRoom; + this.State = ClientState.Joining; + } + return sending; + } + + + /// + /// Rejoins a room by roomName (using the userID internally to return). Will callback: OnJoinedRoom or OnJoinRoomFailed. + /// + /// + /// Used to return to a room, before this user was removed from the players list. + /// Internally, the userID will be checked by the server, to make sure this user is in the room (active or inactice). + /// + /// In contrast to join, this operation never adds a players to a room. It will attempt to retake an existing + /// spot in the playerlist or fail. This makes sure the client doean't accidentally join a room when the + /// game logic meant to re-activate an existing actor in an existing room. + /// + /// This method will fail on the server, when the room does not exist, can't be loaded (persistent rooms) or + /// when the userId is not in the player list of this room. This will lead to a callback OnJoinRoomFailed. + /// + /// Rejoining room will not send any player properties. Instead client will receive up-to-date ones from server. + /// If you want to set new player properties, do it once rejoined. + /// + public bool OpRejoinRoom(string roomName) + { + if (!this.CheckIfOpCanBeSent(OperationCode.JoinGame, this.Server, "RejoinRoom")) + { + return false; + } + + bool onGameServer = this.Server == ServerConnection.GameServer; + + EnterRoomParams opParams = new EnterRoomParams(); + this.enterRoomParamsCache = opParams; + opParams.RoomName = roomName; + opParams.OnGameServer = onGameServer; + opParams.JoinMode = JoinMode.RejoinOnly; + + bool sending = this.LoadBalancingPeer.OpJoinRoom(opParams); + if (sending) + { + this.lastJoinType = JoinType.JoinRoom; + this.State = ClientState.Joining; + } + return sending; + } + + + /// + /// Leaves the current room, optionally telling the server that the user is just becoming inactive. Will callback: OnLeftRoom. + /// + /// + /// + /// OpLeaveRoom skips execution when the room is null or the server is not GameServer or the client is disconnecting from GS already. + /// OpLeaveRoom returns false in those cases and won't change the state, so check return of this method. + /// + /// In some cases, this method will skip the OpLeave call and just call Disconnect(), + /// which not only leaves the room but also the server. Disconnect also triggers a leave and so that workflow is is quicker. + /// + /// If true, this player becomes inactive in the game and can return later (if PlayerTTL of the room is != 0). + /// WebFlag: Securely transmit the encrypted object AuthCookie to the web service in PathLeave webhook when available + /// If the current room could be left (impossible while not in a room). + public bool OpLeaveRoom(bool becomeInactive, bool sendAuthCookie = false) + { + if (!this.CheckIfOpCanBeSent(OperationCode.Leave, this.Server, "LeaveRoom")) + { + return false; + } + + this.State = ClientState.Leaving; + this.GameServerAddress = String.Empty; + this.enterRoomParamsCache = null; + return this.LoadBalancingPeer.OpLeaveRoom(becomeInactive, sendAuthCookie); + } + + + /// Gets a list of rooms matching the (non empty) SQL filter for the given SQL-typed lobby. + /// + /// Operation is only available for lobbies of type SqlLobby and the filter can not be empty. + /// It will check those conditions and fail locally, returning false. + /// + /// This is an async request which triggers a OnOperationResponse() call. + /// + /// + /// The lobby to query. Has to be of type SqlLobby. + /// The sql query statement. + /// If the operation could be sent (has to be connected). + public bool OpGetGameList(TypedLobby typedLobby, string sqlLobbyFilter) + { + if (!this.CheckIfOpCanBeSent(OperationCode.GetGameList, this.Server, "GetGameList")) + { + return false; + } + + if (string.IsNullOrEmpty(sqlLobbyFilter)) + { + this.DebugReturn(DebugLevel.ERROR, "Operation GetGameList requires a filter."); + return false; + } + if (typedLobby.Type != LobbyType.SqlLobby) + { + this.DebugReturn(DebugLevel.ERROR, "Operation GetGameList can only be used for lobbies of type SqlLobby."); + return false; + } + + return this.LoadBalancingPeer.OpGetGameList(typedLobby, sqlLobbyFilter); + } + + + /// + /// Updates and synchronizes a Player's Custom Properties. Optionally, expectedProperties can be provided as condition. + /// + /// + /// Custom Properties are a set of string keys and arbitrary values which is synchronized + /// for the players in a Room. They are available when the client enters the room, as + /// they are in the response of OpJoin and OpCreate. + /// + /// Custom Properties either relate to the (current) Room or a Player (in that Room). + /// + /// Both classes locally cache the current key/values and make them available as + /// property: CustomProperties. This is provided only to read them. + /// You must use the method SetCustomProperties to set/modify them. + /// + /// Any client can set any Custom Properties anytime (when in a room). + /// It's up to the game logic to organize how they are best used. + /// + /// You should call SetCustomProperties only with key/values that are new or changed. This reduces + /// traffic and performance. + /// + /// Unless you define some expectedProperties, setting key/values is always permitted. + /// In this case, the property-setting client will not receive the new values from the server but + /// instead update its local cache in SetCustomProperties. + /// + /// If you define expectedProperties, the server will skip updates if the server property-cache + /// does not contain all expectedProperties with the same values. + /// In this case, the property-setting client will get an update from the server and update it's + /// cached key/values at about the same time as everyone else. + /// + /// The benefit of using expectedProperties can be only one client successfully sets a key from + /// one known value to another. + /// As example: Store who owns an item in a Custom Property "ownedBy". It's 0 initally. + /// When multiple players reach the item, they all attempt to change "ownedBy" from 0 to their + /// actorNumber. If you use expectedProperties {"ownedBy", 0} as condition, the first player to + /// take the item will have it (and the others fail to set the ownership). + /// + /// Properties get saved with the game state for Turnbased games (which use IsPersistent = true). + /// + /// Defines which player the Custom Properties belong to. ActorID of a player. + /// Hashtable of Custom Properties that changes. + /// Provide some keys/values to use as condition for setting the new values. Client must be in room. + /// Defines if the set properties should be forwarded to a WebHook. Client must be in room. + /// + /// False if propertiesToSet is null or empty or have zero string keys. + /// If not in a room, returns true if local player and expectedProperties and webFlags are null. + /// False if actorNr is lower than or equal to zero. + /// Otherwise, returns if the operation could be sent to the server. + /// + public bool OpSetCustomPropertiesOfActor(int actorNr, Hashtable propertiesToSet, Hashtable expectedProperties = null, WebFlags webFlags = null) + { + if (propertiesToSet == null || propertiesToSet.Count == 0) + { + this.DebugReturn(DebugLevel.ERROR, "OpSetCustomPropertiesOfActor() failed. propertiesToSet must not be null nor empty."); + return false; + } + + if (this.CurrentRoom == null) + { + // if you attempt to set this player's values without conditions, then fine: + if (expectedProperties == null && webFlags == null && this.LocalPlayer != null && this.LocalPlayer.ActorNumber == actorNr) + { + return this.LocalPlayer.SetCustomProperties(propertiesToSet); + } + + if (this.LoadBalancingPeer.DebugOut >= DebugLevel.ERROR) + { + this.DebugReturn(DebugLevel.ERROR, "OpSetCustomPropertiesOfActor() failed. To use expectedProperties or webForward, you have to be in a room. State: " + this.State); + } + return false; + } + + Hashtable customActorProperties = new Hashtable(); + customActorProperties.MergeStringKeys(propertiesToSet); + if (customActorProperties.Count == 0) + { + this.DebugReturn(DebugLevel.ERROR, "OpSetCustomPropertiesOfActor() failed. Only string keys allowed for custom properties."); + return false; + } + return this.OpSetPropertiesOfActor(actorNr, customActorProperties, expectedProperties, webFlags); + } + + + /// Internally used to cache and set properties (including well known properties). + /// Requires being in a room (because this attempts to send an operation which will fail otherwise). + protected internal bool OpSetPropertiesOfActor(int actorNr, Hashtable actorProperties, Hashtable expectedProperties = null, WebFlags webFlags = null) + { + if (!this.CheckIfOpCanBeSent(OperationCode.SetProperties, this.Server, "SetProperties")) + { + return false; + } + + if (actorProperties == null || actorProperties.Count == 0) + { + this.DebugReturn(DebugLevel.ERROR, "OpSetPropertiesOfActor() failed. actorProperties must not be null nor empty."); + return false; + } + bool res = this.LoadBalancingPeer.OpSetPropertiesOfActor(actorNr, actorProperties, expectedProperties, webFlags); + if (res && !this.CurrentRoom.BroadcastPropertiesChangeToAll && (expectedProperties == null || expectedProperties.Count == 0)) + { + Player target = this.CurrentRoom.GetPlayer(actorNr); + if (target != null) + { + target.InternalCacheProperties(actorProperties); + this.InRoomCallbackTargets.OnPlayerPropertiesUpdate(target, actorProperties); + } + } + return res; + } + + + /// + /// Updates and synchronizes this Room's Custom Properties. Optionally, expectedProperties can be provided as condition. + /// + /// + /// Custom Properties are a set of string keys and arbitrary values which is synchronized + /// for the players in a Room. They are available when the client enters the room, as + /// they are in the response of OpJoin and OpCreate. + /// + /// Custom Properties either relate to the (current) Room or a Player (in that Room). + /// + /// Both classes locally cache the current key/values and make them available as + /// property: CustomProperties. This is provided only to read them. + /// You must use the method SetCustomProperties to set/modify them. + /// + /// Any client can set any Custom Properties anytime (when in a room). + /// It's up to the game logic to organize how they are best used. + /// + /// You should call SetCustomProperties only with key/values that are new or changed. This reduces + /// traffic and performance. + /// + /// Unless you define some expectedProperties, setting key/values is always permitted. + /// In this case, the property-setting client will not receive the new values from the server but + /// instead update its local cache in SetCustomProperties. + /// + /// If you define expectedProperties, the server will skip updates if the server property-cache + /// does not contain all expectedProperties with the same values. + /// In this case, the property-setting client will get an update from the server and update it's + /// cached key/values at about the same time as everyone else. + /// + /// The benefit of using expectedProperties can be only one client successfully sets a key from + /// one known value to another. + /// As example: Store who owns an item in a Custom Property "ownedBy". It's 0 initally. + /// When multiple players reach the item, they all attempt to change "ownedBy" from 0 to their + /// actorNumber. If you use expectedProperties {"ownedBy", 0} as condition, the first player to + /// take the item will have it (and the others fail to set the ownership). + /// + /// Properties get saved with the game state for Turnbased games (which use IsPersistent = true). + /// + /// Hashtable of Custom Properties that changes. + /// Provide some keys/values to use as condition for setting the new values. + /// Defines web flags for an optional PathProperties webhook. + /// + /// False if propertiesToSet is null or empty or have zero string keys. + /// Otherwise, returns if the operation could be sent to the server. + /// + public bool OpSetCustomPropertiesOfRoom(Hashtable propertiesToSet, Hashtable expectedProperties = null, WebFlags webFlags = null) + { + if (propertiesToSet == null || propertiesToSet.Count == 0) + { + this.DebugReturn(DebugLevel.ERROR, "OpSetCustomPropertiesOfRoom() failed. propertiesToSet must not be null nor empty."); + return false; + } + Hashtable customGameProps = new Hashtable(); + customGameProps.MergeStringKeys(propertiesToSet); + if (customGameProps.Count == 0) + { + this.DebugReturn(DebugLevel.ERROR, "OpSetCustomPropertiesOfRoom() failed. Only string keys are allowed for custom properties."); + return false; + } + return this.OpSetPropertiesOfRoom(customGameProps, expectedProperties, webFlags); + } + + + protected internal bool OpSetPropertyOfRoom(byte propCode, object value) + { + Hashtable properties = new Hashtable(); + properties[propCode] = value; + return this.OpSetPropertiesOfRoom(properties); + } + + /// Internally used to cache and set properties (including well known properties). + /// Requires being in a room (because this attempts to send an operation which will fail otherwise). + protected internal bool OpSetPropertiesOfRoom(Hashtable gameProperties, Hashtable expectedProperties = null, WebFlags webFlags = null) + { + if (!this.CheckIfOpCanBeSent(OperationCode.SetProperties, this.Server, "SetProperties")) + { + return false; + } + + if (gameProperties == null || gameProperties.Count == 0) + { + this.DebugReturn(DebugLevel.ERROR, "OpSetPropertiesOfRoom() failed. gameProperties must not be null nor empty."); + return false; + } + bool res = this.LoadBalancingPeer.OpSetPropertiesOfRoom(gameProperties, expectedProperties, webFlags); + if (res && !this.CurrentRoom.BroadcastPropertiesChangeToAll && (expectedProperties == null || expectedProperties.Count == 0)) + { + this.CurrentRoom.InternalCacheProperties(gameProperties); + this.InRoomCallbackTargets.OnRoomPropertiesUpdate(gameProperties); + } + return res; + } + + + /// + /// Send an event with custom code/type and any content to the other players in the same room. + /// + /// Identifies this type of event (and the content). Your game's event codes can start with 0. + /// Any serializable datatype (including Hashtable like the other OpRaiseEvent overloads). + /// Contains used send options. If you pass null, the default options will be used. + /// Send options for reliable, encryption etc + /// If operation could be enqueued for sending. Sent when calling: Service or SendOutgoingCommands. + public virtual bool OpRaiseEvent(byte eventCode, object customEventContent, RaiseEventOptions raiseEventOptions, SendOptions sendOptions) + { + if (!this.CheckIfOpCanBeSent(OperationCode.RaiseEvent, this.Server, "RaiseEvent")) + { + return false; + } + + return this.LoadBalancingPeer.OpRaiseEvent(eventCode, customEventContent, raiseEventOptions, sendOptions); + } + + + + /// + /// Operation to handle this client's interest groups (for events in room). + /// + /// + /// Note the difference between passing null and byte[0]: + /// null won't add/remove any groups. + /// byte[0] will add/remove all (existing) groups. + /// First, removing groups is executed. This way, you could leave all groups and join only the ones provided. + /// + /// Changes become active not immediately but when the server executes this operation (approximately RTT/2). + /// + /// Groups to remove from interest. Null will not remove any. A byte[0] will remove all. + /// Groups to add to interest. Null will not add any. A byte[0] will add all current. + /// If operation could be enqueued for sending. Sent when calling: Service or SendOutgoingCommands. + public virtual bool OpChangeGroups(byte[] groupsToRemove, byte[] groupsToAdd) + { + if (!this.CheckIfOpCanBeSent(OperationCode.ChangeGroups, this.Server, "ChangeGroups")) + { + return false; + } + + return this.LoadBalancingPeer.OpChangeGroups(groupsToRemove, groupsToAdd); + } + + + #endregion + + #region Helpers + + /// + /// Privately used to read-out properties coming from the server in events and operation responses (which might be a bit tricky). + /// + private void ReadoutProperties(Hashtable gameProperties, Hashtable actorProperties, int targetActorNr) + { + // read game properties and cache them locally + if (this.CurrentRoom != null && gameProperties != null) + { + this.CurrentRoom.InternalCacheProperties(gameProperties); + if (this.InRoom) + { + this.InRoomCallbackTargets.OnRoomPropertiesUpdate(gameProperties); + } + } + + if (actorProperties != null && actorProperties.Count > 0) + { + if (targetActorNr > 0) + { + // we have a single entry in the actorProperties with one user's name + // targets MUST exist before you set properties + Player target = this.CurrentRoom.GetPlayer(targetActorNr); + if (target != null) + { + Hashtable props = this.ReadoutPropertiesForActorNr(actorProperties, targetActorNr); + target.InternalCacheProperties(props); + this.InRoomCallbackTargets.OnPlayerPropertiesUpdate(target, props); + } + } + else + { + // in this case, we've got a key-value pair per actor (each + // value is a hashtable with the actor's properties then) + int actorNr; + Hashtable props; + string newName; + Player target; + + foreach (object key in actorProperties.Keys) + { + actorNr = (int)key; + if (actorNr == 0) + { + continue; + } + + props = (Hashtable)actorProperties[key]; + newName = (string)props[ActorProperties.PlayerName]; + + target = this.CurrentRoom.GetPlayer(actorNr); + if (target == null) + { + target = this.CreatePlayer(newName, actorNr, false, props); + this.CurrentRoom.StorePlayer(target); + } + target.InternalCacheProperties(props); + } + } + } + } + + + /// + /// Privately used only to read properties for a distinct actor (which might be the hashtable OR a key-pair value IN the actorProperties). + /// + private Hashtable ReadoutPropertiesForActorNr(Hashtable actorProperties, int actorNr) + { + if (actorProperties.ContainsKey(actorNr)) + { + return (Hashtable)actorProperties[actorNr]; + } + + return actorProperties; + } + + /// + /// Internally used to set the LocalPlayer's ID (from -1 to the actual in-room ID). + /// + /// New actor ID (a.k.a actorNr) assigned when joining a room. + public void ChangeLocalID(int newID) + { + if (this.LocalPlayer == null) + { + this.DebugReturn(DebugLevel.WARNING, string.Format("Local actor is null or not in mActors! mLocalActor: {0} mActors==null: {1} newID: {2}", this.LocalPlayer, this.CurrentRoom.Players == null, newID)); + } + + if (this.CurrentRoom == null) + { + // change to new actor/player ID and make sure the player does not have a room reference left + this.LocalPlayer.ChangeLocalID(newID); + this.LocalPlayer.RoomReference = null; + } + else + { + // remove old actorId from actor list + this.CurrentRoom.RemovePlayer(this.LocalPlayer); + + // change to new actor/player ID + this.LocalPlayer.ChangeLocalID(newID); + + // update the room's list with the new reference + this.CurrentRoom.StorePlayer(this.LocalPlayer); + } + } + + + + /// + /// Called internally, when a game was joined or created on the game server successfully. + /// + /// + /// This reads the response, finds out the local player's actorNumber (a.k.a. Player.ID) and applies properties of the room and players. + /// Errors for these operations are to be handled before this method is called. + /// + /// Contains the server's response for an operation called by this peer. + private void GameEnteredOnGameServer(OperationResponse operationResponse) + { + this.CurrentRoom = this.CreateRoom(this.enterRoomParamsCache.RoomName, this.enterRoomParamsCache.RoomOptions); + this.CurrentRoom.LoadBalancingClient = this; + + // first change the local id, instead of first updating the actorList since actorList uses ID to update itself + + // the local player's actor-properties are not returned in join-result. add this player to the list + int localActorNr = (int)operationResponse[ParameterCode.ActorNr]; + this.ChangeLocalID(localActorNr); + + if (operationResponse.Parameters.ContainsKey(ParameterCode.ActorList)) + { + int[] actorsInRoom = (int[])operationResponse.Parameters[ParameterCode.ActorList]; + this.UpdatedActorList(actorsInRoom); + } + + + Hashtable actorProperties = (Hashtable)operationResponse[ParameterCode.PlayerProperties]; + Hashtable gameProperties = (Hashtable)operationResponse[ParameterCode.GameProperties]; + this.ReadoutProperties(gameProperties, actorProperties, 0); + + object temp; + if (operationResponse.Parameters.TryGetValue(ParameterCode.RoomOptionFlags, out temp)) + { + this.CurrentRoom.InternalCacheRoomFlags((int)temp); + } + + this.State = ClientState.Joined; + + + // the callbacks OnCreatedRoom and OnJoinedRoom are called in the event join. it contains important info about the room and players. + // unless there will be no room events (RoomOptions.SuppressRoomEvents = true) + if (this.CurrentRoom.SuppressRoomEvents) + { + if (this.lastJoinType == JoinType.CreateRoom || (this.lastJoinType == JoinType.JoinOrCreateRoom && this.LocalPlayer.ActorNumber == 1)) + { + this.MatchMakingCallbackTargets.OnCreatedRoom(); + } + + this.MatchMakingCallbackTargets.OnJoinedRoom(); + } + } + + + private void UpdatedActorList(int[] actorsInGame) + { + if (actorsInGame != null) + { + foreach (int actorNumber in actorsInGame) + { + if (actorNumber == 0) + { + continue; + } + + Player target = this.CurrentRoom.GetPlayer(actorNumber); + if (target == null) + { + this.CurrentRoom.StorePlayer(this.CreatePlayer(string.Empty, actorNumber, false, null)); + } + } + } + } + + /// + /// Factory method to create a player instance - override to get your own player-type with custom features. + /// + /// The name of the player to be created. + /// The player ID (a.k.a. actorNumber) of the player to be created. + /// Sets the distinction if the player to be created is your player or if its assigned to someone else. + /// The custom properties for this new player + /// The newly created player + protected internal virtual Player CreatePlayer(string actorName, int actorNumber, bool isLocal, Hashtable actorProperties) + { + Player newPlayer = new Player(actorName, actorNumber, isLocal, actorProperties); + return newPlayer; + } + + /// Internal "factory" method to create a room-instance. + protected internal virtual Room CreateRoom(string roomName, RoomOptions opt) + { + Room r = new Room(roomName, opt); + return r; + } + + private bool CheckIfOpAllowedOnServer(byte opCode, ServerConnection serverConnection) + { + switch (serverConnection) + { + case ServerConnection.MasterServer: + switch (opCode) + { + case OperationCode.CreateGame: + case OperationCode.Authenticate: + case OperationCode.AuthenticateOnce: + case OperationCode.FindFriends: + case OperationCode.GetGameList: + case OperationCode.GetLobbyStats: + case OperationCode.JoinGame: + case OperationCode.JoinLobby: + case OperationCode.LeaveLobby: + case OperationCode.WebRpc: + case OperationCode.ServerSettings: + case OperationCode.JoinRandomGame: + return true; + } + break; + case ServerConnection.GameServer: + switch (opCode) + { + case OperationCode.CreateGame: + case OperationCode.Authenticate: + case OperationCode.AuthenticateOnce: + case OperationCode.ChangeGroups: + case OperationCode.GetProperties: + case OperationCode.JoinGame: + case OperationCode.Leave: + case OperationCode.WebRpc: + case OperationCode.ServerSettings: + case OperationCode.SetProperties: + case OperationCode.RaiseEvent: + return true; + } + break; + case ServerConnection.NameServer: + switch (opCode) + { + case OperationCode.Authenticate: + case OperationCode.AuthenticateOnce: + case OperationCode.GetRegions: + case OperationCode.ServerSettings: + return true; + } + break; + default: + throw new ArgumentOutOfRangeException("serverConnection", serverConnection, null); + } + return false; + } + + private bool CheckIfOpCanBeSent(byte opCode, ServerConnection serverConnection, string opName) + { + if (this.LoadBalancingPeer == null) + { + this.DebugReturn(DebugLevel.ERROR, string.Format("Operation {0} ({1}) can't be sent because peer is null", opName, opCode)); + return false; + } + + if (!this.CheckIfOpAllowedOnServer(opCode, serverConnection)) + { + if (this.LoadBalancingPeer.DebugOut >= DebugLevel.ERROR) + { + this.DebugReturn(DebugLevel.ERROR, string.Format("Operation {0} ({1}) not allowed on current server ({2})", opName, opCode, serverConnection)); + } + return false; + } + + if (!this.CheckIfClientIsReadyToCallOperation(opCode)) + { + DebugLevel levelToReport = DebugLevel.ERROR; + if (opCode == OperationCode.RaiseEvent && (this.State == ClientState.Leaving || this.State == ClientState.Disconnecting || this.State == ClientState.DisconnectingFromGameServer)) + { + levelToReport = DebugLevel.INFO; + } + + if (this.LoadBalancingPeer.DebugOut >= levelToReport) + { + this.DebugReturn(levelToReport, string.Format("Operation {0} ({1}) not called because client is not connected or not ready yet, client state: {2}", opName, opCode, Enum.GetName(typeof(ClientState), this.State))); + } + + return false; + } + + if (this.LoadBalancingPeer.PeerState != PeerStateValue.Connected) + { + this.DebugReturn(DebugLevel.ERROR, string.Format("Operation {0} ({1}) can't be sent because peer is not connected, peer state: {2}", opName, opCode, this.LoadBalancingPeer.PeerState)); + return false; + } + return true; + } + + private bool CheckIfClientIsReadyToCallOperation(byte opCode) + { + switch (opCode) + { + //case OperationCode.ServerSettings: // ?? + //case OperationCode.WebRpc: // WebRPC works on MS and GS and I think it does not need the client to be ready + + case OperationCode.Authenticate: + case OperationCode.AuthenticateOnce: + return this.IsConnectedAndReady || + this.State == ClientState.ConnectingToNameServer || // this is required since we do not set state to ConnectedToNameServer before authentication + this.State == ClientState.ConnectingToMasterServer || // this is required since we do not set state to ConnectedToMasterServer before authentication + this.State == ClientState.ConnectingToGameServer; // this is required since we do not set state to ConnectedToGameServer before authentication + + case OperationCode.ChangeGroups: + case OperationCode.GetProperties: + case OperationCode.SetProperties: + case OperationCode.RaiseEvent: + case OperationCode.Leave: + return this.InRoom; + + case OperationCode.JoinGame: + case OperationCode.CreateGame: + return this.State == ClientState.ConnectedToMasterServer || this.InLobby || this.State == ClientState.ConnectedToGameServer; // CurrentRoom can be not null in case of quick rejoin + + case OperationCode.LeaveLobby: + return this.InLobby; + + case OperationCode.JoinRandomGame: + case OperationCode.FindFriends: + case OperationCode.GetGameList: + case OperationCode.GetLobbyStats: // do we need to be inside lobby to call this? + case OperationCode.JoinLobby: // You don't have to explicitly leave a lobby to join another (client can be in one max, at any time) + return this.State == ClientState.ConnectedToMasterServer || this.InLobby; + case OperationCode.GetRegions: + return this.State == ClientState.ConnectedToNameServer; + } + return this.IsConnected; + } + + #endregion + + #region Implementation of IPhotonPeerListener + + /// Debug output of low level api (and this client). + /// This method is not responsible to keep up the state of a LoadBalancingClient. Calling base.DebugReturn on overrides is optional. + public virtual void DebugReturn(DebugLevel level, string message) + { + if (this.LoadBalancingPeer.DebugOut != DebugLevel.ALL && level > this.LoadBalancingPeer.DebugOut) + { + return; + } + #if !SUPPORTED_UNITY + Debug.WriteLine(message); + #else + if (level == DebugLevel.ERROR) + { + Debug.LogError(message); + } + else if (level == DebugLevel.WARNING) + { + Debug.LogWarning(message); + } + else if (level == DebugLevel.INFO) + { + Debug.Log(message); + } + else if (level == DebugLevel.ALL) + { + Debug.Log(message); + } + #endif + } + + private void CallbackRoomEnterFailed(OperationResponse operationResponse) + { + if (operationResponse.ReturnCode != 0) + { + if (operationResponse.OperationCode == OperationCode.JoinGame) + { + this.MatchMakingCallbackTargets.OnJoinRoomFailed(operationResponse.ReturnCode, operationResponse.DebugMessage); + } + else if (operationResponse.OperationCode == OperationCode.CreateGame) + { + this.MatchMakingCallbackTargets.OnCreateRoomFailed(operationResponse.ReturnCode, operationResponse.DebugMessage); + } + else if (operationResponse.OperationCode == OperationCode.JoinRandomGame) + { + this.MatchMakingCallbackTargets.OnJoinRandomFailed(operationResponse.ReturnCode, operationResponse.DebugMessage); + } + } + } + + /// + /// Uses the OperationResponses provided by the server to advance the internal state and call ops as needed. + /// + /// + /// When this method finishes, it will call your OnOpResponseAction (if any). This way, you can get any + /// operation response without overriding this class. + /// + /// To implement a more complex game/app logic, you should implement your own class that inherits the + /// LoadBalancingClient. Override this method to use your own operation-responses easily. + /// + /// This method is essential to update the internal state of a LoadBalancingClient, so overriding methods + /// must call base.OnOperationResponse(). + /// + /// Contains the server's response for an operation called by this peer. + public virtual void OnOperationResponse(OperationResponse operationResponse) + { + // if (operationResponse.ReturnCode != 0) this.DebugReturn(DebugLevel.ERROR, operationResponse.ToStringFull()); + + // use the "secret" or "token" whenever we get it. doesn't really matter if it's in AuthResponse. + if (operationResponse.Parameters.ContainsKey(ParameterCode.Token)) + { + if (this.AuthValues == null) + { + this.AuthValues = new AuthenticationValues(); + //this.DebugReturn(DebugLevel.ERROR, "Server returned secret. Created AuthValues."); + } + + this.AuthValues.Token = operationResponse.Parameters[ParameterCode.Token]; + this.tokenCache = this.AuthValues.Token; + } + + // if the operation limit was reached, disconnect (but still execute the operation response). + if (operationResponse.ReturnCode == ErrorCode.OperationLimitReached) + { + this.Disconnect(DisconnectCause.DisconnectByOperationLimit); + } + + switch (operationResponse.OperationCode) + { + case OperationCode.Authenticate: + case OperationCode.AuthenticateOnce: + { + if (operationResponse.ReturnCode != 0) + { + this.DebugReturn(DebugLevel.ERROR, operationResponse.ToStringFull() + " Server: " + this.Server + " Address: " + this.LoadBalancingPeer.ServerAddress); + + switch (operationResponse.ReturnCode) + { + case ErrorCode.InvalidAuthentication: + this.DisconnectedCause = DisconnectCause.InvalidAuthentication; + break; + case ErrorCode.CustomAuthenticationFailed: + this.DisconnectedCause = DisconnectCause.CustomAuthenticationFailed; + this.ConnectionCallbackTargets.OnCustomAuthenticationFailed(operationResponse.DebugMessage); + break; + case ErrorCode.InvalidRegion: + this.DisconnectedCause = DisconnectCause.InvalidRegion; + break; + case ErrorCode.MaxCcuReached: + this.DisconnectedCause = DisconnectCause.MaxCcuReached; + break; + case ErrorCode.InvalidOperation: + case ErrorCode.OperationNotAllowedInCurrentState: + this.DisconnectedCause = DisconnectCause.OperationNotAllowedInCurrentState; + break; + case ErrorCode.AuthenticationTicketExpired: + this.DisconnectedCause = DisconnectCause.AuthenticationTicketExpired; + break; + } + + this.Disconnect(this.DisconnectedCause); + break; // if auth didn't succeed, we disconnect (above) and exit this operation's handling + } + + if (this.Server == ServerConnection.NameServer || this.Server == ServerConnection.MasterServer) + { + if (operationResponse.Parameters.ContainsKey(ParameterCode.UserId)) + { + string incomingId = (string)operationResponse.Parameters[ParameterCode.UserId]; + if (!string.IsNullOrEmpty(incomingId)) + { + this.UserId = incomingId; + this.LocalPlayer.UserId = incomingId; + this.DebugReturn(DebugLevel.INFO, string.Format("Received your UserID from server. Updating local value to: {0}", this.UserId)); + } + } + if (operationResponse.Parameters.ContainsKey(ParameterCode.NickName)) + { + this.NickName = (string)operationResponse.Parameters[ParameterCode.NickName]; + this.DebugReturn(DebugLevel.INFO, string.Format("Received your NickName from server. Updating local value to: {0}", this.NickName)); + } + + if (operationResponse.Parameters.ContainsKey(ParameterCode.EncryptionData)) + { + this.SetupEncryption((Dictionary)operationResponse.Parameters[ParameterCode.EncryptionData]); + } + } + + if (this.Server == ServerConnection.NameServer) + { + string receivedCluster = operationResponse[ParameterCode.Cluster] as string; + if (!string.IsNullOrEmpty(receivedCluster)) + { + this.CurrentCluster = receivedCluster; + } + + // on the NameServer, authenticate returns the MasterServer address for a region and we hop off to there + this.MasterServerAddress = operationResponse[ParameterCode.Address] as string; + if (this.ServerPortOverrides.MasterServerPort != 0) + { + //Debug.LogWarning("Incoming MasterServer Address: "+this.MasterServerAddress); + this.MasterServerAddress = ReplacePortWithAlternative(this.MasterServerAddress, this.ServerPortOverrides.MasterServerPort); + //Debug.LogWarning("New MasterServer Address: "+this.MasterServerAddress); + } + + if (this.AuthMode == AuthModeOption.AuthOnceWss && this.ExpectedProtocol != null) + { + this.DebugReturn(DebugLevel.INFO, string.Format("AuthOnceWss mode. Auth response switches TransportProtocol to ExpectedProtocol: {0}.", this.ExpectedProtocol)); + this.LoadBalancingPeer.TransportProtocol = (ConnectionProtocol)this.ExpectedProtocol; + this.ExpectedProtocol = null; + } + this.DisconnectToReconnect(); + } + else if (this.Server == ServerConnection.MasterServer) + { + this.State = ClientState.ConnectedToMasterServer; + if (this.failedRoomEntryOperation == null) + { + this.ConnectionCallbackTargets.OnConnectedToMaster(); + } + else + { + this.CallbackRoomEnterFailed(this.failedRoomEntryOperation); + this.failedRoomEntryOperation = null; + } + + if (this.AuthMode != AuthModeOption.Auth) + { + this.LoadBalancingPeer.OpSettings(this.EnableLobbyStatistics); + } + } + else if (this.Server == ServerConnection.GameServer) + { + this.State = ClientState.Joining; + + if (this.enterRoomParamsCache.JoinMode == JoinMode.RejoinOnly) + { + this.enterRoomParamsCache.PlayerProperties = null; + } + else + { + Hashtable allProps = new Hashtable(); + allProps.Merge(this.LocalPlayer.CustomProperties); + + if (!string.IsNullOrEmpty(this.LocalPlayer.NickName)) + { + allProps[ActorProperties.PlayerName] = this.LocalPlayer.NickName; + } + + this.enterRoomParamsCache.PlayerProperties = allProps; + } + + this.enterRoomParamsCache.OnGameServer = true; + + if (this.lastJoinType == JoinType.JoinRoom || this.lastJoinType == JoinType.JoinRandomRoom || this.lastJoinType == JoinType.JoinRandomOrCreateRoom || this.lastJoinType == JoinType.JoinOrCreateRoom) + { + this.LoadBalancingPeer.OpJoinRoom(this.enterRoomParamsCache); + } + else if (this.lastJoinType == JoinType.CreateRoom) + { + this.LoadBalancingPeer.OpCreateRoom(this.enterRoomParamsCache); + } + break; + } + + // optionally, OpAuth may return some data for the client to use. if it's available, call OnCustomAuthenticationResponse + Dictionary data = (Dictionary)operationResponse[ParameterCode.Data]; + if (data != null) + { + this.ConnectionCallbackTargets.OnCustomAuthenticationResponse(data); + } + break; + } + + case OperationCode.GetRegions: + // Debug.Log("GetRegions returned: " + operationResponse.ToStringFull()); + + if (operationResponse.ReturnCode == ErrorCode.InvalidAuthentication) + { + this.DebugReturn(DebugLevel.ERROR, string.Format("GetRegions failed. AppId is unknown on the (cloud) server. "+operationResponse.DebugMessage)); + this.Disconnect(DisconnectCause.InvalidAuthentication); + break; + } + if (operationResponse.ReturnCode != ErrorCode.Ok) + { + this.DebugReturn(DebugLevel.ERROR, "GetRegions failed. Can't provide regions list. ReturnCode: " + operationResponse.ReturnCode + ": " + operationResponse.DebugMessage); + this.Disconnect(DisconnectCause.InvalidAuthentication); + break; + } + if (this.RegionHandler == null) + { + this.RegionHandler = new RegionHandler(this.ServerPortOverrides.MasterServerPort); + } + + if (this.RegionHandler.IsPinging) + { + this.DebugReturn(DebugLevel.WARNING, "Received an response for OpGetRegions while the RegionHandler is pinging regions already. Skipping this response in favor of completing the current region-pinging."); + return; // in this particular case, we suppress the duplicate GetRegion response. we don't want a callback for this, cause there is a warning already. + } + + this.RegionHandler.SetRegions(operationResponse); + this.ConnectionCallbackTargets.OnRegionListReceived(this.RegionHandler); + + if (this.connectToBestRegion) + { + // ping minimal regions (if one is known) and connect + this.RegionHandler.PingMinimumOfRegions(this.OnRegionPingCompleted, this.bestRegionSummaryFromStorage); + } + break; + + case OperationCode.JoinRandomGame: // this happens only on the master server. on gameserver this is a "regular" join + case OperationCode.CreateGame: + case OperationCode.JoinGame: + + if (operationResponse.ReturnCode != 0) + { + if (this.Server == ServerConnection.GameServer) + { + this.failedRoomEntryOperation = operationResponse; + this.DisconnectToReconnect(); + } + else + { + this.State = (this.InLobby) ? ClientState.JoinedLobby : ClientState.ConnectedToMasterServer; + this.CallbackRoomEnterFailed(operationResponse); + } + } + else + { + if (this.Server == ServerConnection.GameServer) + { + this.GameEnteredOnGameServer(operationResponse); + } + else + { + this.GameServerAddress = (string)operationResponse[ParameterCode.Address]; + if (this.ServerPortOverrides.GameServerPort != 0) + { + //Debug.LogWarning("Incoming GameServer Address: " + this.GameServerAddress); + this.GameServerAddress = ReplacePortWithAlternative(this.GameServerAddress, this.ServerPortOverrides.GameServerPort); + //Debug.LogWarning("New GameServer Address: " + this.GameServerAddress); + } + + string roomName = operationResponse[ParameterCode.RoomName] as string; + if (!string.IsNullOrEmpty(roomName)) + { + this.enterRoomParamsCache.RoomName = roomName; + } + + this.DisconnectToReconnect(); + } + } + break; + + case OperationCode.GetGameList: + if (operationResponse.ReturnCode != 0) + { + this.DebugReturn(DebugLevel.ERROR, "GetGameList failed: " + operationResponse.ToStringFull()); + break; + } + + List _RoomInfoList = new List(); + + Hashtable games = (Hashtable)operationResponse[ParameterCode.GameList]; + foreach (string gameName in games.Keys) + { + _RoomInfoList.Add(new RoomInfo(gameName, (Hashtable)games[gameName])); + } + + this.LobbyCallbackTargets.OnRoomListUpdate(_RoomInfoList); + break; + + case OperationCode.JoinLobby: + this.State = ClientState.JoinedLobby; + this.LobbyCallbackTargets.OnJoinedLobby(); + break; + + case OperationCode.LeaveLobby: + this.State = ClientState.ConnectedToMasterServer; + this.LobbyCallbackTargets.OnLeftLobby(); + break; + + case OperationCode.Leave: + this.DisconnectToReconnect(); + break; + + case OperationCode.FindFriends: + if (operationResponse.ReturnCode != 0) + { + this.DebugReturn(DebugLevel.ERROR, "OpFindFriends failed: " + operationResponse.ToStringFull()); + this.friendListRequested = null; + break; + } + + bool[] onlineList = operationResponse[ParameterCode.FindFriendsResponseOnlineList] as bool[]; + string[] roomList = operationResponse[ParameterCode.FindFriendsResponseRoomIdList] as string[]; + + //if (onlineList == null || roomList == null || this.friendListRequested == null || onlineList.Length != this.friendListRequested.Length) + //{ + // // TODO: Check if we should handle this case better / more extensively + // this.DebugReturn(DebugLevel.ERROR, "OpFindFriends failed. Some list is not set. OpResponse: " + operationResponse.ToStringFull()); + // this.friendListRequested = null; + // this.isFetchingFriendList = false; + // break; + //} + + List friendList = new List(this.friendListRequested.Length); + for (int index = 0; index < this.friendListRequested.Length; index++) + { + FriendInfo friend = new FriendInfo(); + friend.UserId = this.friendListRequested[index]; + friend.Room = roomList[index]; + friend.IsOnline = onlineList[index]; + friendList.Insert(index, friend); + } + + this.friendListRequested = null; + + this.MatchMakingCallbackTargets.OnFriendListUpdate(friendList); + break; + + case OperationCode.WebRpc: + this.WebRpcCallbackTargets.OnWebRpcResponse(operationResponse); + break; + } + + if (this.OpResponseReceived != null) this.OpResponseReceived(operationResponse); + } + + /// + /// Uses the connection's statusCodes to advance the internal state and call operations as needed. + /// + /// This method is essential to update the internal state of a LoadBalancingClient. Overriding methods must call base.OnStatusChanged. + public virtual void OnStatusChanged(StatusCode statusCode) + { + switch (statusCode) + { + case StatusCode.Connect: + if (this.State == ClientState.ConnectingToNameServer) + { + if (this.LoadBalancingPeer.DebugOut >= DebugLevel.ALL) + { + this.DebugReturn(DebugLevel.ALL, "Connected to nameserver."); + } + + this.Server = ServerConnection.NameServer; + if (this.AuthValues != null) + { + this.AuthValues.Token = null; // when connecting to NameServer, invalidate the secret (only) + } + } + + if (this.State == ClientState.ConnectingToGameServer) + { + if (this.LoadBalancingPeer.DebugOut >= DebugLevel.ALL) + { + this.DebugReturn(DebugLevel.ALL, "Connected to gameserver."); + } + + this.Server = ServerConnection.GameServer; + } + + if (this.State == ClientState.ConnectingToMasterServer) + { + if (this.LoadBalancingPeer.DebugOut >= DebugLevel.ALL) + { + this.DebugReturn(DebugLevel.ALL, "Connected to masterserver."); + } + + this.Server = ServerConnection.MasterServer; + this.ConnectionCallbackTargets.OnConnected(); // if initial connect + } + + + if (this.LoadBalancingPeer.TransportProtocol != ConnectionProtocol.WebSocketSecure) + { + if (this.Server == ServerConnection.NameServer || this.AuthMode == AuthModeOption.Auth) + { + this.LoadBalancingPeer.EstablishEncryption(); + } + } + else + { + goto case StatusCode.EncryptionEstablished; + } + + break; + + case StatusCode.EncryptionEstablished: + if (this.Server == ServerConnection.NameServer) + { + this.State = ClientState.ConnectedToNameServer; + + // if there is no specific region to connect to, get available regions from the Name Server. the result triggers next actions in workflow + if (string.IsNullOrEmpty(this.CloudRegion)) + { + this.OpGetRegions(); + break; + } + } + else + { + // auth AuthOnce, no explicit authentication is needed on Master Server and Game Server. this is done via token, so: break + if (this.AuthMode == AuthModeOption.AuthOnce || this.AuthMode == AuthModeOption.AuthOnceWss) + { + break; + } + } + + // authenticate in all other cases (using the CloudRegion, if available) + bool authenticating = this.CallAuthenticate(); + if (authenticating) + { + this.State = ClientState.Authenticating; + } + else + { + this.DebugReturn(DebugLevel.ERROR, "OpAuthenticate failed. Check log output and AuthValues. State: " + this.State); + } + break; + + case StatusCode.Disconnect: + // disconnect due to connection exception is handled below (don't connect to GS or master in that case) + this.friendListRequested = null; + + bool wasInRoom = this.CurrentRoom != null; + this.CurrentRoom = null; // players get cleaned up inside this, too, except LocalPlayer (which we keep) + this.ChangeLocalID(-1); // depends on this.CurrentRoom, so it must be called after updating that + + if (this.Server == ServerConnection.GameServer && wasInRoom) + { + this.MatchMakingCallbackTargets.OnLeftRoom(); + } + + if (this.ExpectedProtocol != null && this.LoadBalancingPeer.TransportProtocol != this.ExpectedProtocol) + { + this.DebugReturn(DebugLevel.INFO, string.Format("On disconnect switches TransportProtocol to ExpectedProtocol: {0}.", this.ExpectedProtocol)); + this.LoadBalancingPeer.TransportProtocol = (ConnectionProtocol)this.ExpectedProtocol; + this.ExpectedProtocol = null; + } + + switch (this.State) + { + case ClientState.ConnectWithFallbackProtocol: + this.EnableProtocolFallback = false; // the client does a fallback only one time + this.LoadBalancingPeer.TransportProtocol = (this.LoadBalancingPeer.TransportProtocol == ConnectionProtocol.Tcp) ? ConnectionProtocol.Udp : ConnectionProtocol.Tcp; + this.NameServerPortInAppSettings = 0; // this does not affect the ServerSettings file, just a variable at runtime + this.ServerPortOverrides = new PhotonPortDefinition(); // use default ports for the fallback + + if (!this.LoadBalancingPeer.Connect(this.NameServerAddress, this.ProxyServerAddress, this.AppId, this.TokenForInit)) + { + return; + } + this.State = ClientState.ConnectingToNameServer; + break; + case ClientState.PeerCreated: + case ClientState.Disconnecting: + if (this.AuthValues != null) + { + this.AuthValues.Token = null; // when leaving the server, invalidate the secret (but not the auth values) + } + this.State = ClientState.Disconnected; + this.ConnectionCallbackTargets.OnDisconnected(this.DisconnectedCause); + break; + + case ClientState.DisconnectingFromGameServer: + case ClientState.DisconnectingFromNameServer: + this.ConnectToMasterServer(); // this gets the client back to the Master Server + break; + + case ClientState.DisconnectingFromMasterServer: + this.Connect(this.GameServerAddress, this.ProxyServerAddress, ServerConnection.GameServer); // this connects the client with the Game Server (when joining/creating a room) + break; + + case ClientState.Disconnected: + // this client is already Disconnected, so no further action is needed. + // this.DebugReturn(DebugLevel.INFO, "LBC.OnStatusChanged(Disconnect) this.State: " + this.State + ". Server: " + this.Server); + break; + + default: + string stacktrace = ""; + #if DEBUG && !NETFX_CORE + stacktrace = new System.Diagnostics.StackTrace(true).ToString(); + #endif + this.DebugReturn(DebugLevel.WARNING, "Got a unexpected Disconnect in LoadBalancingClient State: " + this.State + ". Server: " + this.Server + " Trace: " + stacktrace); + + if (this.AuthValues != null) + { + this.AuthValues.Token = null; // when leaving the server, invalidate the secret (but not the auth values) + } + this.State = ClientState.Disconnected; + this.ConnectionCallbackTargets.OnDisconnected(this.DisconnectedCause); + break; + } + break; + + case StatusCode.DisconnectByServerUserLimit: + this.DebugReturn(DebugLevel.ERROR, "This connection was rejected due to the apps CCU limit."); + this.DisconnectedCause = DisconnectCause.MaxCcuReached; + this.State = ClientState.Disconnecting; + break; + case StatusCode.DnsExceptionOnConnect: + this.DisconnectedCause = DisconnectCause.DnsExceptionOnConnect; + this.State = ClientState.Disconnecting; + break; + case StatusCode.ServerAddressInvalid: + this.DisconnectedCause = DisconnectCause.ServerAddressInvalid; + this.State = ClientState.Disconnecting; + break; + case StatusCode.ExceptionOnConnect: + case StatusCode.SecurityExceptionOnConnect: + case StatusCode.EncryptionFailedToEstablish: + this.DisconnectedCause = DisconnectCause.ExceptionOnConnect; + + // if enabled, the client can attempt to connect with another networking-protocol to check if that connects + if (this.EnableProtocolFallback && this.State == ClientState.ConnectingToNameServer) + { + this.State = ClientState.ConnectWithFallbackProtocol; + } + else + { + this.State = ClientState.Disconnecting; + } + break; + case StatusCode.Exception: + case StatusCode.ExceptionOnReceive: + case StatusCode.SendError: + this.DisconnectedCause = DisconnectCause.Exception; + this.State = ClientState.Disconnecting; + break; + case StatusCode.DisconnectByServerTimeout: + this.DisconnectedCause = DisconnectCause.ServerTimeout; + this.State = ClientState.Disconnecting; + break; + case StatusCode.DisconnectByServerLogic: + this.DisconnectedCause = DisconnectCause.DisconnectByServerLogic; + this.State = ClientState.Disconnecting; + break; + case StatusCode.DisconnectByServerReasonUnknown: + this.DisconnectedCause = DisconnectCause.DisconnectByServerReasonUnknown; + this.State = ClientState.Disconnecting; + break; + case StatusCode.TimeoutDisconnect: + this.DisconnectedCause = DisconnectCause.ClientTimeout; + + // if enabled, the client can attempt to connect with another networking-protocol to check if that connects + if (this.EnableProtocolFallback && this.State == ClientState.ConnectingToNameServer) + { + this.State = ClientState.ConnectWithFallbackProtocol; + } + else + { + this.State = ClientState.Disconnecting; + } + break; + } + } + + + /// + /// Uses the photonEvent's provided by the server to advance the internal state and call ops as needed. + /// + /// This method is essential to update the internal state of a LoadBalancingClient. Overriding methods must call base.OnEvent. + public virtual void OnEvent(EventData photonEvent) + { + int actorNr = photonEvent.Sender; + Player originatingPlayer = (this.CurrentRoom != null) ? this.CurrentRoom.GetPlayer(actorNr) : null; + + switch (photonEvent.Code) + { + case EventCode.GameList: + case EventCode.GameListUpdate: + List _RoomInfoList = new List(); + + Hashtable games = (Hashtable)photonEvent[ParameterCode.GameList]; + foreach (string gameName in games.Keys) + { + _RoomInfoList.Add(new RoomInfo(gameName, (Hashtable)games[gameName])); + } + + this.LobbyCallbackTargets.OnRoomListUpdate(_RoomInfoList); + + break; + + case EventCode.Join: + Hashtable actorProperties = (Hashtable)photonEvent[ParameterCode.PlayerProperties]; + + if (originatingPlayer == null) + { + if (actorNr > 0) + { + originatingPlayer = this.CreatePlayer(string.Empty, actorNr, false, actorProperties); + this.CurrentRoom.StorePlayer(originatingPlayer); + } + } + else + { + originatingPlayer.InternalCacheProperties(actorProperties); + originatingPlayer.IsInactive = false; + originatingPlayer.HasRejoined = actorNr != this.LocalPlayer.ActorNumber; // event is for non-local player, who is known (by ActorNumber), so it's a returning player + } + + if (actorNr == this.LocalPlayer.ActorNumber) + { + // in this player's own join event, we get a complete list of players in the room, so check if we know each of the + int[] actorsInRoom = (int[])photonEvent[ParameterCode.ActorList]; + this.UpdatedActorList(actorsInRoom); + + // any operation that does a "rejoin" will set this value to true. this can indicate if the local player returns to a room. + originatingPlayer.HasRejoined = this.enterRoomParamsCache.JoinMode == JoinMode.RejoinOnly; + + // joinWithCreateOnDemand can turn an OpJoin into creating the room. Then actorNumber is 1 and callback: OnCreatedRoom() + if (this.lastJoinType == JoinType.CreateRoom || (this.lastJoinType == JoinType.JoinOrCreateRoom && this.LocalPlayer.ActorNumber == 1)) + { + this.MatchMakingCallbackTargets.OnCreatedRoom(); + } + + this.MatchMakingCallbackTargets.OnJoinedRoom(); + } + else + { + this.InRoomCallbackTargets.OnPlayerEnteredRoom(originatingPlayer); + } + break; + + case EventCode.Leave: + if (originatingPlayer != null) + { + bool isInactive = false; + if (photonEvent.Parameters.ContainsKey(ParameterCode.IsInactive)) + { + isInactive = (bool)photonEvent.Parameters[ParameterCode.IsInactive]; + } + + if (isInactive) + { + originatingPlayer.IsInactive = true; + } + else + { + originatingPlayer.IsInactive = false; + this.CurrentRoom.RemovePlayer(actorNr); + } + } + + if (photonEvent.Parameters.ContainsKey(ParameterCode.MasterClientId)) + { + int newMaster = (int)photonEvent[ParameterCode.MasterClientId]; + if (newMaster != 0) + { + this.CurrentRoom.masterClientId = newMaster; + this.InRoomCallbackTargets.OnMasterClientSwitched(this.CurrentRoom.GetPlayer(newMaster)); + } + } + // finally, send notification that a player left + this.InRoomCallbackTargets.OnPlayerLeftRoom(originatingPlayer); + break; + + case EventCode.PropertiesChanged: + // whenever properties are sent in-room, they can be broadcasted as event (which we handle here) + // we get PLAYERproperties if actorNr > 0 or ROOMproperties if actorNumber is not set or 0 + int targetActorNr = 0; + if (photonEvent.Parameters.ContainsKey(ParameterCode.TargetActorNr)) + { + targetActorNr = (int)photonEvent[ParameterCode.TargetActorNr]; + } + + Hashtable gameProperties = null; + Hashtable actorProps = null; + if (targetActorNr == 0) + { + gameProperties = (Hashtable)photonEvent[ParameterCode.Properties]; + } + else + { + actorProps = (Hashtable)photonEvent[ParameterCode.Properties]; + } + + this.ReadoutProperties(gameProperties, actorProps, targetActorNr); + break; + + case EventCode.AppStats: + // only the master server sends these in (1 minute) intervals + this.PlayersInRoomsCount = (int)photonEvent[ParameterCode.PeerCount]; + this.RoomsCount = (int)photonEvent[ParameterCode.GameCount]; + this.PlayersOnMasterCount = (int)photonEvent[ParameterCode.MasterPeerCount]; + break; + + case EventCode.LobbyStats: + string[] names = photonEvent[ParameterCode.LobbyName] as string[]; + int[] peers = photonEvent[ParameterCode.PeerCount] as int[]; + int[] rooms = photonEvent[ParameterCode.GameCount] as int[]; + + byte[] types; + ByteArraySlice slice = photonEvent[ParameterCode.LobbyType] as ByteArraySlice; + bool useByteArraySlice = slice != null; + + if (useByteArraySlice) + { + types = slice.Buffer; + } + else + { + types = photonEvent[ParameterCode.LobbyType] as byte[]; + } + + this.lobbyStatistics.Clear(); + for (int i = 0; i < names.Length; i++) + { + TypedLobbyInfo info = new TypedLobbyInfo(); + info.Name = names[i]; + info.Type = (LobbyType)types[i]; + info.PlayerCount = peers[i]; + info.RoomCount = rooms[i]; + + this.lobbyStatistics.Add(info); + } + + if (useByteArraySlice) + { + slice.Release(); + } + + this.LobbyCallbackTargets.OnLobbyStatisticsUpdate(this.lobbyStatistics); + break; + + case EventCode.ErrorInfo: + this.ErrorInfoCallbackTargets.OnErrorInfo(new ErrorInfo(photonEvent)); + break; + + case EventCode.AuthEvent: + if (this.AuthValues == null) + { + this.AuthValues = new AuthenticationValues(); + } + + this.AuthValues.Token = photonEvent[ParameterCode.Token]; + this.tokenCache = this.AuthValues.Token; + break; + + } + + this.UpdateCallbackTargets(); + if (this.EventReceived != null) + { + this.EventReceived(photonEvent); + } + } + + /// In Photon 4, "raw messages" will get their own callback method in the interface. Not used yet. + public virtual void OnMessage(object message) + { + this.DebugReturn(DebugLevel.ALL, string.Format("got OnMessage {0}", message)); + } + + #endregion + + + private void OnDisconnectMessageReceived(DisconnectMessage obj) + { + this.DebugReturn(DebugLevel.ERROR, string.Format("Got DisconnectMessage. Code: {0} Msg: \"{1}\". Debug Info: {2}", obj.Code, obj.DebugMessage, obj.Parameters.ToStringFull())); + this.Disconnect(DisconnectCause.DisconnectByDisconnectMessage); + } + + + /// A callback of the RegionHandler, provided in OnRegionListReceived. + /// The regionHandler wraps up best region and other region relevant info. + private void OnRegionPingCompleted(RegionHandler regionHandler) + { + //Debug.Log("OnRegionPingCompleted " + regionHandler.BestRegion); + //Debug.Log("RegionPingSummary: " + regionHandler.SummaryToCache); + this.SummaryToCache = regionHandler.SummaryToCache; + this.ConnectToRegionMaster(regionHandler.BestRegion.Code); + } + + + protected internal static string ReplacePortWithAlternative(string address, ushort replacementPort) + { + bool webSocket = address.StartsWith("ws"); + if (webSocket) + { + UriBuilder urib = new UriBuilder(address); + urib.Port = replacementPort; + return urib.ToString(); + } + else + { + UriBuilder urib = new UriBuilder(string.Format("scheme://{0}", address)); + return string.Format("{0}:{1}", urib.Host, replacementPort); + } + } + + private void SetupEncryption(Dictionary encryptionData) + { + var mode = (EncryptionMode)(byte)encryptionData[EncryptionDataParameters.Mode]; + switch (mode) + { + case EncryptionMode.PayloadEncryption: + byte[] encryptionSecret = (byte[])encryptionData[EncryptionDataParameters.Secret1]; + this.LoadBalancingPeer.InitPayloadEncryption(encryptionSecret); + break; + case EncryptionMode.DatagramEncryption: + case EncryptionMode.DatagramEncryptionRandomSequence: + { + byte[] secret1 = (byte[])encryptionData[EncryptionDataParameters.Secret1]; + byte[] secret2 = (byte[])encryptionData[EncryptionDataParameters.Secret2]; + this.LoadBalancingPeer.InitDatagramEncryption(secret1, secret2, mode == EncryptionMode.DatagramEncryptionRandomSequence); + } + break; + case EncryptionMode.DatagramEncryptionGCM: + { + byte[] secret1 = (byte[])encryptionData[EncryptionDataParameters.Secret1]; + this.LoadBalancingPeer.InitDatagramEncryption(secret1, null, true, true); + } + break; + default: + throw new ArgumentOutOfRangeException(); + } + } + + + + /// + /// This operation makes Photon call your custom web-service by path/name with the given parameters (converted into Json). + /// Use as a callback. + /// + /// + /// A WebRPC calls a custom, http-based function on a server you provide. The uriPath is relative to a "base path" + /// which is configured server-side. The sent parameters get converted from C# types to Json. Vice versa, the response + /// of the web-service will be converted to C# types and sent back as normal operation response. + /// + /// To use this feature, you have to setup your server: + /// + /// For a Photon Cloud application, + /// visit the Dashboard and setup "WebHooks". The BaseUrl is used for WebRPCs as well. + /// + /// The class is a helper-class that extracts the most valuable content from the WebRPC + /// response. + /// + /// The url path to call, relative to the baseUrl configured on Photon's server-side. + /// The parameters to send to the web-service method. + /// Defines if the authentication cookie gets sent to a WebHook (if setup). + public bool OpWebRpc(string uriPath, object parameters, bool sendAuthCookie = false) + { + if (string.IsNullOrEmpty(uriPath)) + { + this.DebugReturn(DebugLevel.ERROR, "WebRPC method name must not be null nor empty."); + return false; + } + if (!this.CheckIfOpCanBeSent(OperationCode.WebRpc, this.Server, "WebRpc")) + { + return false; + } + Dictionary opParameters = new Dictionary(); + opParameters.Add(ParameterCode.UriPath, uriPath); + if (parameters != null) + { + opParameters.Add(ParameterCode.WebRpcParameters, parameters); + } + if (sendAuthCookie) + { + opParameters.Add(ParameterCode.EventForward, WebFlags.SendAuthCookieConst); + } + + //return this.LoadBalancingPeer.OpCustom(OperationCode.WebRpc, opParameters, true); + return this.LoadBalancingPeer.SendOperation(OperationCode.WebRpc, opParameters, SendOptions.SendReliable); + } + + + /// + /// Registers an object for callbacks for the implemented callback-interfaces. + /// + /// + /// Adding and removing callback targets is queued to not mess with callbacks in execution. + /// Internally, this means that the addition/removal is done before the LoadBalancingClient + /// calls the next callbacks. This detail should not affect a game's workflow. + /// + /// The covered callback interfaces are: IConnectionCallbacks, IMatchmakingCallbacks, + /// ILobbyCallbacks, IInRoomCallbacks, IOnEventCallback and IWebRpcCallback. + /// + /// See: + /// + /// The object that registers to get callbacks from this client. + public void AddCallbackTarget(object target) + { + this.callbackTargetChanges.Enqueue(new CallbackTargetChange(target, true)); + } + + /// + /// Unregisters an object from callbacks for the implemented callback-interfaces. + /// + /// + /// Adding and removing callback targets is queued to not mess with callbacks in execution. + /// Internally, this means that the addition/removal is done before the LoadBalancingClient + /// calls the next callbacks. This detail should not affect a game's workflow. + /// + /// The covered callback interfaces are: IConnectionCallbacks, IMatchmakingCallbacks, + /// ILobbyCallbacks, IInRoomCallbacks, IOnEventCallback and IWebRpcCallback. + /// + /// See: + /// + /// The object that unregisters from getting callbacks. + public void RemoveCallbackTarget(object target) + { + this.callbackTargetChanges.Enqueue(new CallbackTargetChange(target, false)); + } + + + /// + /// Applies queued callback cahnges from a queue to the actual containers. Will cause exceptions if used while callbacks execute. + /// + /// + /// There is no explicit check that this is not called during callbacks, however the implemented, private logic takes care of this. + /// + protected internal void UpdateCallbackTargets() + { + while (this.callbackTargetChanges.Count > 0) + { + CallbackTargetChange change = this.callbackTargetChanges.Dequeue(); + + if (change.AddTarget) + { + if (this.callbackTargets.Contains(change.Target)) + { + //Debug.Log("UpdateCallbackTargets skipped adding a target, as the object is already registered. Target: " + change.Target); + continue; + } + + this.callbackTargets.Add(change.Target); + } + else + { + if (!this.callbackTargets.Contains(change.Target)) + { + //Debug.Log("UpdateCallbackTargets skipped removing a target, as the object is not registered. Target: " + change.Target); + continue; + } + + this.callbackTargets.Remove(change.Target); + } + + this.UpdateCallbackTarget(change, this.InRoomCallbackTargets); + this.UpdateCallbackTarget(change, this.ConnectionCallbackTargets); + this.UpdateCallbackTarget(change, this.MatchMakingCallbackTargets); + this.UpdateCallbackTarget(change, this.LobbyCallbackTargets); + this.UpdateCallbackTarget(change, this.WebRpcCallbackTargets); + this.UpdateCallbackTarget(change, this.ErrorInfoCallbackTargets); + + IOnEventCallback onEventCallback = change.Target as IOnEventCallback; + if (onEventCallback != null) + { + if (change.AddTarget) + { + EventReceived += onEventCallback.OnEvent; + } + else + { + EventReceived -= onEventCallback.OnEvent; + } + } + } + } + + /// Helper method to cast and apply a target per (interface) type. + /// Either of the interfaces for callbacks. + /// The queued change to apply (add or remove) some target. + /// The container that calls callbacks on it's list of targets. + private void UpdateCallbackTarget(CallbackTargetChange change, List container) where T : class + { + T target = change.Target as T; + if (target != null) + { + if (change.AddTarget) + { + container.Add(target); + } + else + { + container.Remove(target); + } + } + } + } + + + /// + /// Collection of "organizational" callbacks for the Realtime Api to cover: Connection and Regions. + /// + /// + /// Classes that implement this interface must be registered to get callbacks for various situations. + /// + /// To register for callbacks, call and pass the class implementing this interface + /// To stop getting callbacks, call and pass the class implementing this interface + /// + /// + /// \ingroup callbacks + public interface IConnectionCallbacks + { + /// + /// Called to signal that the "low level connection" got established but before the client can call operation on the server. + /// + /// + /// After the (low level transport) connection is established, the client will automatically send + /// the Authentication operation, which needs to get a response before the client can call other operations. + /// + /// Your logic should wait for either: OnRegionListReceived or OnConnectedToMaster. + /// + /// This callback is useful to detect if the server can be reached at all (technically). + /// Most often, it's enough to implement OnDisconnected(DisconnectCause cause) and check for the cause. + /// + /// This is not called for transitions from the masterserver to game servers. + /// + void OnConnected(); + + /// + /// Called when the client is connected to the Master Server and ready for matchmaking and other tasks. + /// + /// + /// The list of available rooms won't become available unless you join a lobby via LoadBalancingClient.OpJoinLobby. + /// You can join rooms and create them even without being in a lobby. The default lobby is used in that case. + /// + void OnConnectedToMaster(); + + /// + /// Called after disconnecting from the Photon server. It could be a failure or an explicit disconnect call + /// + /// + /// The reason for this disconnect is provided as DisconnectCause. + /// + void OnDisconnected(DisconnectCause cause); + + /// + /// Called when the Name Server provided a list of regions for your title. + /// + /// + /// This callback is called as soon as the list is available. No pings were sent for Best Region selection yet. + /// If the client is set to connect to the Best Region (lowest ping), one or more regions get pinged. + /// Not all regions are pinged. As soon as the results are final, the client will connect to the best region, + /// so you can check the ping results when connected to the Master Server. + /// + /// Check the RegionHandler class description, to make use of the provided values. + /// + /// The currently used RegionHandler. + void OnRegionListReceived(RegionHandler regionHandler); + + + /// + /// Called when your Custom Authentication service responds with additional data. + /// + /// + /// Custom Authentication services can include some custom data in their response. + /// When present, that data is made available in this callback as Dictionary. + /// While the keys of your data have to be strings, the values can be either string or a number (in Json). + /// You need to make extra sure, that the value type is the one you expect. Numbers become (currently) int64. + /// + /// Example: void OnCustomAuthenticationResponse(Dictionary<string, object> data) { ... } + /// + /// + void OnCustomAuthenticationResponse(Dictionary data); + + /// + /// Called when the custom authentication failed. Followed by disconnect! + /// + /// + /// Custom Authentication can fail due to user-input, bad tokens/secrets. + /// If authentication is successful, this method is not called. Implement OnJoinedLobby() or OnConnectedToMaster() (as usual). + /// + /// During development of a game, it might also fail due to wrong configuration on the server side. + /// In those cases, logging the debugMessage is very important. + /// + /// Unless you setup a custom authentication service for your app (in the [Dashboard](https://dashboard.photonengine.com)), + /// this won't be called! + /// + /// Contains a debug message why authentication failed. This has to be fixed during development. + void OnCustomAuthenticationFailed(string debugMessage); + + } + + + /// + /// Collection of "organizational" callbacks for the Realtime Api to cover the Lobby. + /// + /// + /// Classes that implement this interface must be registered to get callbacks for various situations. + /// + /// To register for callbacks, call and pass the class implementing this interface + /// To stop getting callbacks, call and pass the class implementing this interface + /// + /// + /// \ingroup callbacks + public interface ILobbyCallbacks + { + + /// + /// Called on entering a lobby on the Master Server. The actual room-list updates will call OnRoomListUpdate. + /// + /// + /// While in the lobby, the roomlist is automatically updated in fixed intervals (which you can't modify in the public cloud). + /// The room list gets available via OnRoomListUpdate. + /// + void OnJoinedLobby(); + + /// + /// Called after leaving a lobby. + /// + /// + /// When you leave a lobby, [OpCreateRoom](@ref OpCreateRoom) and [OpJoinRandomRoom](@ref OpJoinRandomRoom) + /// automatically refer to the default lobby. + /// + void OnLeftLobby(); + + /// + /// Called for any update of the room-listing while in a lobby (InLobby) on the Master Server. + /// + /// + /// Each item is a RoomInfo which might include custom properties (provided you defined those as lobby-listed when creating a room). + /// Not all types of lobbies provide a listing of rooms to the client. Some are silent and specialized for server-side matchmaking. + /// + /// The list is sorted using two criteria: open or closed, full or not. So the list is composed of three groups, in this order: + /// + /// first group: open and not full (joinable).
    + /// second group: full but not closed (not joinable).
    + /// third group: closed (not joinable, could be full or not).
    + /// + /// In each group, entries do not have any particular order (random). + /// + /// The list of rooms (or rooms' updates) is also limited in number, see Lobby Limits. + ///
    + void OnRoomListUpdate(List roomList); + + /// + /// Called when the Master Server sent an update for the Lobby Statistics. + /// + /// + /// This callback has two preconditions: + /// EnableLobbyStatistics must be set to true, before this client connects. + /// And the client has to be connected to the Master Server, which is providing the info about lobbies. + /// + void OnLobbyStatisticsUpdate(List lobbyStatistics); + } + + + /// + /// Collection of "organizational" callbacks for the Realtime Api to cover Matchmaking. + /// + /// + /// Classes that implement this interface must be registered to get callbacks for various situations. + /// + /// To register for callbacks, call and pass the class implementing this interface + /// To stop getting callbacks, call and pass the class implementing this interface + /// + /// + /// \ingroup callbacks + public interface IMatchmakingCallbacks + { + + /// + /// Called when the server sent the response to a FindFriends request. + /// + /// + /// After calling OpFindFriends, the Master Server will cache the friend list and send updates to the friend + /// list. The friends includes the name, userId, online state and the room (if any) for each requested user/friend. + /// + /// Use the friendList to update your UI and store it, if the UI should highlight changes. + /// + void OnFriendListUpdate(List friendList); + + /// + /// Called when this client created a room and entered it. OnJoinedRoom() will be called as well. + /// + /// + /// This callback is only called on the client which created a room (see OpCreateRoom). + /// + /// As any client might close (or drop connection) anytime, there is a chance that the + /// creator of a room does not execute OnCreatedRoom. + /// + /// If you need specific room properties or a "start signal", implement OnMasterClientSwitched() + /// and make each new MasterClient check the room's state. + /// + void OnCreatedRoom(); + + /// + /// Called when the server couldn't create a room (OpCreateRoom failed). + /// + /// + /// Creating a room may fail for various reasons. Most often, the room already exists (roomname in use) or + /// the RoomOptions clash and it's impossible to create the room. + /// + /// When creating a room fails on a Game Server: + /// The client will cache the failure internally and returns to the Master Server before it calls the fail-callback. + /// This way, the client is ready to find/create a room at the moment of the callback. + /// In this case, the client skips calling OnConnectedToMaster but returning to the Master Server will still call OnConnected. + /// Treat callbacks of OnConnected as pure information that the client could connect. + /// + /// Operation ReturnCode from the server. + /// Debug message for the error. + void OnCreateRoomFailed(short returnCode, string message); + + /// + /// Called when the LoadBalancingClient entered a room, no matter if this client created it or simply joined. + /// + /// + /// When this is called, you can access the existing players in Room.Players, their custom properties and Room.CustomProperties. + /// + /// In this callback, you could create player objects. For example in Unity, instantiate a prefab for the player. + /// + /// If you want a match to be started "actively", enable the user to signal "ready" (using OpRaiseEvent or a Custom Property). + /// + void OnJoinedRoom(); + + /// + /// Called when a previous OpJoinRoom call failed on the server. + /// + /// + /// Joining a room may fail for various reasons. Most often, the room is full or does not exist anymore + /// (due to someone else being faster or closing the room). + /// + /// When joining a room fails on a Game Server: + /// The client will cache the failure internally and returns to the Master Server before it calls the fail-callback. + /// This way, the client is ready to find/create a room at the moment of the callback. + /// In this case, the client skips calling OnConnectedToMaster but returning to the Master Server will still call OnConnected. + /// Treat callbacks of OnConnected as pure information that the client could connect. + /// + /// Operation ReturnCode from the server. + /// Debug message for the error. + void OnJoinRoomFailed(short returnCode, string message); + + /// + /// Called when a previous OpJoinRandom call failed on the server. + /// + /// + /// The most common causes are that a room is full or does not exist (due to someone else being faster or closing the room). + /// + /// This operation is only ever sent to the Master Server. Once a room is found by the Master Server, the client will + /// head off to the designated Game Server and use the operation Join on the Game Server. + /// + /// When using multiple lobbies (via OpJoinLobby or a TypedLobby parameter), another lobby might have more/fitting rooms.
    + ///
    + /// Operation ReturnCode from the server. + /// Debug message for the error. + void OnJoinRandomFailed(short returnCode, string message); + + /// + /// Called when the local user/client left a room, so the game's logic can clean up it's internal state. + /// + /// + /// When leaving a room, the LoadBalancingClient will disconnect the Game Server and connect to the Master Server. + /// This wraps up multiple internal actions. + /// + /// Wait for the callback OnConnectedToMaster, before you use lobbies and join or create rooms. + /// + /// OnLeftRoom also gets called, when the application quits. + /// It makes sense to check static ConnectionHandler.AppQuits before loading scenes in OnLeftRoom(). + /// + void OnLeftRoom(); + } + + /// + /// Collection of "in room" callbacks for the Realtime Api to cover: Players entering or leaving, property updates and Master Client switching. + /// + /// + /// Classes that implement this interface must be registered to get callbacks for various situations. + /// + /// To register for callbacks, call and pass the class implementing this interface + /// To stop getting callbacks, call and pass the class implementing this interface + /// + /// + /// \ingroup callbacks + public interface IInRoomCallbacks + { + /// + /// Called when a remote player entered the room. This Player is already added to the playerlist. + /// + /// + /// If your game starts with a certain number of players, this callback can be useful to check the + /// Room.playerCount and find out if you can start. + /// + void OnPlayerEnteredRoom(Player newPlayer); + + /// + /// Called when a remote player left the room or became inactive. Check otherPlayer.IsInactive. + /// + /// + /// If another player leaves the room or if the server detects a lost connection, this callback will + /// be used to notify your game logic. + /// + /// Depending on the room's setup, players may become inactive, which means they may return and retake + /// their spot in the room. In such cases, the Player stays in the Room.Players dictionary. + /// + /// If the player is not just inactive, it gets removed from the Room.Players dictionary, before + /// the callback is called. + /// + void OnPlayerLeftRoom(Player otherPlayer); + + + /// + /// Called when room properties changed. The propertiesThatChanged contain only the keys that changed. + /// + /// + /// In most cases, this method gets called when some player changes the Room Properties. + /// However, there are also "Well Known Properties" (which use byte keys) and this callback may include them. + /// Especially when entering a room, the server will also send the required Well Known Properties and they + /// are not filtered out for the OnRoomPropertiesUpdate callback. + /// + /// You can safely ignore the byte typed keys in propertiesThatChanged. + /// + /// Changing properties is usually done by Room.SetCustomProperties. + /// + /// + void OnRoomPropertiesUpdate(Hashtable propertiesThatChanged); + + /// + /// Called when custom player-properties are changed. + /// + /// + /// Changing properties must be done by Player.SetCustomProperties, which causes this callback locally, too. + /// + /// Contains Player that changed. + /// Contains the properties that changed. + void OnPlayerPropertiesUpdate(Player targetPlayer, Hashtable changedProps); + + /// + /// Called after switching to a new MasterClient when the current one leaves. + /// + /// + /// This is not called when this client enters a room. + /// The former MasterClient is still in the player list when this method get called. + /// + void OnMasterClientSwitched(Player newMasterClient); + } + + + /// + /// Event callback for the Realtime Api. Covers events from the server and those sent by clients via OpRaiseEvent. + /// + /// + /// Classes that implement this interface must be registered to get callbacks for various situations. + /// + /// To register for callbacks, call and pass the class implementing this interface + /// To stop getting callbacks, call and pass the class implementing this interface + /// + /// + /// \ingroup callbacks + public interface IOnEventCallback + { + /// Called for any incoming events. + /// + /// To receive events, implement IOnEventCallback in any class and register it via AddCallbackTarget + /// (either in LoadBalancingClient or PhotonNetwork). + /// + /// With the EventData.Sender you can look up the Player who sent the event. + /// + /// It is best practice to assign an eventCode for each different type of content and action, so the Code + /// will be essential to read the incoming events. + /// + void OnEvent(EventData photonEvent); + } + + /// + /// Interface for "WebRpc" callbacks for the Realtime Api. Currently includes only responses for Web RPCs. + /// + /// + /// Classes that implement this interface must be registered to get callbacks for various situations. + /// + /// To register for callbacks, call and pass the class implementing this interface + /// To stop getting callbacks, call and pass the class implementing this interface + /// + /// + /// \ingroup callbacks + public interface IWebRpcCallback + { + /// + /// Called when the response to a WebRPC is available. See . + /// + /// + /// Important: The response.ReturnCode is 0 if Photon was able to reach your web-service.
    + /// The content of the response is what your web-service sent. You can create a WebRpcResponse from it.
    + /// Example: WebRpcResponse webResponse = new WebRpcResponse(operationResponse);
    + /// + /// Please note: Class OperationResponse is in a namespace which needs to be "used":
    + /// using ExitGames.Client.Photon; // includes OperationResponse (and other classes) + ///
    + /// + /// public void OnWebRpcResponse(OperationResponse response) + /// { + /// Debug.LogFormat("WebRPC operation response {0}", response.ToStringFull()); + /// switch (response.ReturnCode) + /// { + /// case ErrorCode.Ok: + /// WebRpcResponse webRpcResponse = new WebRpcResponse(response); + /// Debug.LogFormat("Parsed WebRPC response {0}", response.ToStringFull()); + /// if (string.IsNullOrEmpty(webRpcResponse.Name)) + /// { + /// Debug.LogError("Unexpected: WebRPC response did not contain WebRPC method name"); + /// } + /// if (webRpcResponse.ResultCode == 0) // success + /// { + /// switch (webRpcResponse.Name) + /// { + /// // todo: add your code here + /// case GetGameListWebRpcMethodName: // example + /// // ... + /// break; + /// } + /// } + /// else if (webRpcResponse.ResultCode == -1) + /// { + /// Debug.LogErrorFormat("Web server did not return ResultCode for WebRPC method=\"{0}\", Message={1}", webRpcResponse.Name, webRpcResponse.Message); + /// } + /// else + /// { + /// Debug.LogErrorFormat("Web server returned ResultCode={0} for WebRPC method=\"{1}\", Message={2}", webRpcResponse.ResultCode, webRpcResponse.Name, webRpcResponse.Message); + /// } + /// break; + /// case ErrorCode.ExternalHttpCallFailed: // web service unreachable + /// Debug.LogErrorFormat("WebRPC call failed as request could not be sent to the server. {0}", response.DebugMessage); + /// break; + /// case ErrorCode.HttpLimitReached: // too many WebRPCs in a short period of time + /// // the debug message should contain the limit exceeded + /// Debug.LogErrorFormat("WebRPCs rate limit exceeded: {0}", response.DebugMessage); + /// break; + /// case ErrorCode.InvalidOperation: // WebRPC not configured at all OR not configured properly OR trying to send on name server + /// if (PhotonNetwork.Server == ServerConnection.NameServer) + /// { + /// Debug.LogErrorFormat("WebRPC not supported on NameServer. {0}", response.DebugMessage); + /// } + /// else + /// { + /// Debug.LogErrorFormat("WebRPC not properly configured or not configured at all. {0}", response.DebugMessage); + /// } + /// break; + /// default: + /// // other unknown error, unexpected + /// Debug.LogErrorFormat("Unexpected error, {0} {1}", response.ReturnCode, response.DebugMessage); + /// break; + /// } + /// } + /// + /// + void OnWebRpcResponse(OperationResponse response); + } + + /// + /// Interface for event callback for the Realtime Api. + /// + /// + /// Classes that implement this interface must be registered to get callbacks for various situations. + /// + /// To register for callbacks, call and pass the class implementing this interface + /// To stop getting callbacks, call and pass the class implementing this interface + /// + /// + /// \ingroup callbacks + public interface IErrorInfoCallback + { + /// + /// Called when the client receives an event from the server indicating that an error happened there. + /// + /// + /// In most cases this could be either: + /// 1. an error from webhooks plugin (if HasErrorInfo is enabled), read more here: + /// https://doc.photonengine.com/en-us/realtime/current/gameplay/web-extensions/webhooks#options + /// 2. an error sent from a custom server plugin via PluginHost.BroadcastErrorInfoEvent, see example here: + /// https://doc.photonengine.com/en-us/server/current/plugins/manual#handling_http_response + /// 3. an error sent from the server, for example, when the limit of cached events has been exceeded in the room + /// (all clients will be disconnected and the room will be closed in this case) + /// read more here: https://doc.photonengine.com/en-us/realtime/current/gameplay/cached-events#special_considerations + /// + /// If you implement or you will also get this event. + /// + /// Object containing information about the error + void OnErrorInfo(ErrorInfo errorInfo); + } + + /// + /// Container type for callbacks defined by IConnectionCallbacks. See LoadBalancingCallbackTargets. + /// + /// + /// While the interfaces of callbacks wrap up the methods that will be called, + /// the container classes implement a simple way to call a method on all registered objects. + /// + public class ConnectionCallbacksContainer : List, IConnectionCallbacks + { + private readonly LoadBalancingClient client; + + public ConnectionCallbacksContainer(LoadBalancingClient client) + { + this.client = client; + } + + public void OnConnected() + { + this.client.UpdateCallbackTargets(); + + foreach (IConnectionCallbacks target in this) + { + target.OnConnected(); + } + } + + public void OnConnectedToMaster() + { + this.client.UpdateCallbackTargets(); + + foreach (IConnectionCallbacks target in this) + { + target.OnConnectedToMaster(); + } + } + + public void OnRegionListReceived(RegionHandler regionHandler) + { + this.client.UpdateCallbackTargets(); + + foreach (IConnectionCallbacks target in this) + { + target.OnRegionListReceived(regionHandler); + } + } + + public void OnDisconnected(DisconnectCause cause) + { + this.client.UpdateCallbackTargets(); + + foreach (IConnectionCallbacks target in this) + { + target.OnDisconnected(cause); + } + } + + public void OnCustomAuthenticationResponse(Dictionary data) + { + this.client.UpdateCallbackTargets(); + + foreach (IConnectionCallbacks target in this) + { + target.OnCustomAuthenticationResponse(data); + } + } + + public void OnCustomAuthenticationFailed(string debugMessage) + { + this.client.UpdateCallbackTargets(); + + foreach (IConnectionCallbacks target in this) + { + target.OnCustomAuthenticationFailed(debugMessage); + } + } + } + + /// + /// Container type for callbacks defined by IMatchmakingCallbacks. See MatchMakingCallbackTargets. + /// + /// + /// While the interfaces of callbacks wrap up the methods that will be called, + /// the container classes implement a simple way to call a method on all registered objects. + /// + public class MatchMakingCallbacksContainer : List, IMatchmakingCallbacks + { + private readonly LoadBalancingClient client; + + public MatchMakingCallbacksContainer(LoadBalancingClient client) + { + this.client = client; + } + + public void OnCreatedRoom() + { + this.client.UpdateCallbackTargets(); + + foreach (IMatchmakingCallbacks target in this) + { + target.OnCreatedRoom(); + } + } + + public void OnJoinedRoom() + { + this.client.UpdateCallbackTargets(); + + foreach (IMatchmakingCallbacks target in this) + { + target.OnJoinedRoom(); + } + } + + public void OnCreateRoomFailed(short returnCode, string message) + { + this.client.UpdateCallbackTargets(); + + foreach (IMatchmakingCallbacks target in this) + { + target.OnCreateRoomFailed(returnCode, message); + } + } + + public void OnJoinRandomFailed(short returnCode, string message) + { + this.client.UpdateCallbackTargets(); + + foreach (IMatchmakingCallbacks target in this) + { + target.OnJoinRandomFailed(returnCode, message); + } + } + + public void OnJoinRoomFailed(short returnCode, string message) + { + this.client.UpdateCallbackTargets(); + + foreach (IMatchmakingCallbacks target in this) + { + target.OnJoinRoomFailed(returnCode, message); + } + } + + public void OnLeftRoom() + { + this.client.UpdateCallbackTargets(); + + foreach (IMatchmakingCallbacks target in this) + { + target.OnLeftRoom(); + } + } + + public void OnFriendListUpdate(List friendList) + { + this.client.UpdateCallbackTargets(); + + foreach (IMatchmakingCallbacks target in this) + { + target.OnFriendListUpdate(friendList); + } + } + } + + + /// + /// Container type for callbacks defined by IInRoomCallbacks. See InRoomCallbackTargets. + /// + /// + /// While the interfaces of callbacks wrap up the methods that will be called, + /// the container classes implement a simple way to call a method on all registered objects. + /// + internal class InRoomCallbacksContainer : List, IInRoomCallbacks + { + private readonly LoadBalancingClient client; + + public InRoomCallbacksContainer(LoadBalancingClient client) + { + this.client = client; + } + + public void OnPlayerEnteredRoom(Player newPlayer) + { + this.client.UpdateCallbackTargets(); + + foreach (IInRoomCallbacks target in this) + { + target.OnPlayerEnteredRoom(newPlayer); + } + } + + public void OnPlayerLeftRoom(Player otherPlayer) + { + this.client.UpdateCallbackTargets(); + + foreach (IInRoomCallbacks target in this) + { + target.OnPlayerLeftRoom(otherPlayer); + } + } + + public void OnRoomPropertiesUpdate(Hashtable propertiesThatChanged) + { + this.client.UpdateCallbackTargets(); + + foreach (IInRoomCallbacks target in this) + { + target.OnRoomPropertiesUpdate(propertiesThatChanged); + } + } + + public void OnPlayerPropertiesUpdate(Player targetPlayer, Hashtable changedProp) + { + this.client.UpdateCallbackTargets(); + + foreach (IInRoomCallbacks target in this) + { + target.OnPlayerPropertiesUpdate(targetPlayer, changedProp); + } + } + + public void OnMasterClientSwitched(Player newMasterClient) + { + this.client.UpdateCallbackTargets(); + + foreach (IInRoomCallbacks target in this) + { + target.OnMasterClientSwitched(newMasterClient); + } + } + } + + /// + /// Container type for callbacks defined by ILobbyCallbacks. See LobbyCallbackTargets. + /// + /// + /// While the interfaces of callbacks wrap up the methods that will be called, + /// the container classes implement a simple way to call a method on all registered objects. + /// + internal class LobbyCallbacksContainer : List, ILobbyCallbacks + { + private readonly LoadBalancingClient client; + + public LobbyCallbacksContainer(LoadBalancingClient client) + { + this.client = client; + } + + public void OnJoinedLobby() + { + this.client.UpdateCallbackTargets(); + + foreach (ILobbyCallbacks target in this) + { + target.OnJoinedLobby(); + } + } + + public void OnLeftLobby() + { + this.client.UpdateCallbackTargets(); + + foreach (ILobbyCallbacks target in this) + { + target.OnLeftLobby(); + } + } + + public void OnRoomListUpdate(List roomList) + { + this.client.UpdateCallbackTargets(); + + foreach (ILobbyCallbacks target in this) + { + target.OnRoomListUpdate(roomList); + } + } + + public void OnLobbyStatisticsUpdate(List lobbyStatistics) + { + this.client.UpdateCallbackTargets(); + + foreach (ILobbyCallbacks target in this) + { + target.OnLobbyStatisticsUpdate(lobbyStatistics); + } + } + } + + /// + /// Container type for callbacks defined by IWebRpcCallback. See WebRpcCallbackTargets. + /// + /// + /// While the interfaces of callbacks wrap up the methods that will be called, + /// the container classes implement a simple way to call a method on all registered objects. + /// + internal class WebRpcCallbacksContainer : List, IWebRpcCallback + { + private LoadBalancingClient client; + + public WebRpcCallbacksContainer(LoadBalancingClient client) + { + this.client = client; + } + + public void OnWebRpcResponse(OperationResponse response) + { + this.client.UpdateCallbackTargets(); + + foreach (IWebRpcCallback target in this) + { + target.OnWebRpcResponse(response); + } + } + } + + + /// + /// Container type for callbacks defined by . See . + /// + /// + /// While the interfaces of callbacks wrap up the methods that will be called, + /// the container classes implement a simple way to call a method on all registered objects. + /// + internal class ErrorInfoCallbacksContainer : List, IErrorInfoCallback + { + private LoadBalancingClient client; + + public ErrorInfoCallbacksContainer(LoadBalancingClient client) + { + this.client = client; + } + + public void OnErrorInfo(ErrorInfo errorInfo) + { + this.client.UpdateCallbackTargets(); + foreach (IErrorInfoCallback target in this) + { + target.OnErrorInfo(errorInfo); + } + } + } + + /// + /// Class wrapping the received event. + /// + /// + /// This is passed inside callback. + /// If you implement or you will also get but not parsed. + /// + /// In most cases this could be either: + /// 1. an error from webhooks plugin (if HasErrorInfo is enabled), read more here: + /// https://doc.photonengine.com/en-us/realtime/current/gameplay/web-extensions/webhooks#options + /// 2. an error sent from a custom server plugin via PluginHost.BroadcastErrorInfoEvent, see example here: + /// https://doc.photonengine.com/en-us/server/current/plugins/manual#handling_http_response + /// 3. an error sent from the server, for example, when the limit of cached events has been exceeded in the room + /// (all clients will be disconnected and the room will be closed in this case) + /// read more here: https://doc.photonengine.com/en-us/realtime/current/gameplay/cached-events#special_considerations + /// + public class ErrorInfo + { + /// + /// String containing information about the error. + /// + public readonly string Info; + + public ErrorInfo(EventData eventData) + { + this.Info = eventData[ParameterCode.Info] as string; + } + + public override string ToString() + { + return string.Format("ErrorInfo: {0}", this.Info); + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonRealtime/Code/LoadBalancingClient.cs.meta b/Assets/Photon/PhotonRealtime/Code/LoadBalancingClient.cs.meta new file mode 100644 index 00000000..91a2d99b --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/LoadBalancingClient.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f4e65968c7102bf42a77b6a5cade8743 +timeCreated: 1497614756 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonRealtime/Code/LoadbalancingPeer.cs b/Assets/Photon/PhotonRealtime/Code/LoadbalancingPeer.cs new file mode 100644 index 00000000..89688c51 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/LoadbalancingPeer.cs @@ -0,0 +1,2242 @@ +// ---------------------------------------------------------------------------- +// +// Loadbalancing Framework for Photon - Copyright (C) 2018 Exit Games GmbH +// +// +// Provides operations to use the LoadBalancing and Cloud photon servers. +// No logic is implemented here. +// +// developer@photonengine.com +// ---------------------------------------------------------------------------- + +#if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER +#define SUPPORTED_UNITY +#endif + + +namespace Photon.Realtime +{ + using System; + using System.Collections; + using System.Collections.Generic; + using ExitGames.Client.Photon; + + #if SUPPORTED_UNITY + using UnityEngine; + using Debug = UnityEngine.Debug; + #endif + #if SUPPORTED_UNITY || NETFX_CORE + using Hashtable = ExitGames.Client.Photon.Hashtable; + using SupportClass = ExitGames.Client.Photon.SupportClass; + #endif + + + /// + /// A LoadBalancingPeer provides the operations and enum definitions needed to use the LoadBalancing server application which is also used in Photon Cloud. + /// + /// + /// This class is internally used. + /// The LoadBalancingPeer does not keep a state, instead this is done by a LoadBalancingClient. + /// + public class LoadBalancingPeer : PhotonPeer + { + /// Obsolete accessor to the RegionHandler.PingImplementation. + [Obsolete("Use RegionHandler.PingImplementation directly.")] + protected internal static Type PingImplementation + { + get { return RegionHandler.PingImplementation; } + set { RegionHandler.PingImplementation = value; } + } + + + private readonly Pool paramDictionaryPool = new Pool( + () => new ParameterDictionary(), + x => x.Clear(), + 1); // used in OpRaiseEvent() (avoids lots of new Dictionary() calls) + + + /// + /// Creates a Peer with specified connection protocol. You need to set the Listener before using the peer. + /// + /// Each connection protocol has it's own default networking ports for Photon. + /// The preferred option is UDP. + public LoadBalancingPeer(ConnectionProtocol protocolType) : base(protocolType) + { + // this does not require a Listener, so: + // make sure to set this.Listener before using a peer! + + this.ConfigUnitySockets(); + } + + /// + /// Creates a Peer with specified connection protocol and a Listener for callbacks. + /// + public LoadBalancingPeer(IPhotonPeerListener listener, ConnectionProtocol protocolType) : this(protocolType) + { + this.Listener = listener; + } + + + // Sets up the socket implementations to use, depending on platform + [System.Diagnostics.Conditional("SUPPORTED_UNITY")] + private void ConfigUnitySockets() + { + Type websocketType = null; + #if (UNITY_XBOXONE || UNITY_GAMECORE) && !UNITY_EDITOR + websocketType = Type.GetType("ExitGames.Client.Photon.SocketNativeSource, Assembly-CSharp", false); + if (websocketType == null) + { + websocketType = Type.GetType("ExitGames.Client.Photon.SocketNativeSource, Assembly-CSharp-firstpass", false); + } + if (websocketType == null) + { + websocketType = Type.GetType("ExitGames.Client.Photon.SocketNativeSource, PhotonRealtime", false); + } + if (websocketType != null) + { + this.SocketImplementationConfig[ConnectionProtocol.Udp] = websocketType; // on Xbox, the native socket plugin supports UDP as well + } + #else + // to support WebGL export in Unity, we find and assign the SocketWebTcp class (if it's in the project). + // alternatively class SocketWebTcp might be in the Photon3Unity3D.dll + websocketType = Type.GetType("ExitGames.Client.Photon.SocketWebTcp, PhotonWebSocket", false); + if (websocketType == null) + { + websocketType = Type.GetType("ExitGames.Client.Photon.SocketWebTcp, Assembly-CSharp-firstpass", false); + } + if (websocketType == null) + { + websocketType = Type.GetType("ExitGames.Client.Photon.SocketWebTcp, Assembly-CSharp", false); + } + #if UNITY_WEBGL + if (websocketType == null && this.DebugOut >= DebugLevel.WARNING) + { + this.Listener.DebugReturn(DebugLevel.WARNING, "SocketWebTcp type not found in the usual Assemblies. This is required as wrapper for the browser WebSocket API. Make sure to make the PhotonLibs\\WebSocket code available."); + } + #endif + #endif + + if (websocketType != null) + { + this.SocketImplementationConfig[ConnectionProtocol.WebSocket] = websocketType; + this.SocketImplementationConfig[ConnectionProtocol.WebSocketSecure] = websocketType; + } + + #if NET_4_6 && (UNITY_EDITOR || !ENABLE_IL2CPP) && !NETFX_CORE + this.SocketImplementationConfig[ConnectionProtocol.Udp] = typeof(SocketUdpAsync); + this.SocketImplementationConfig[ConnectionProtocol.Tcp] = typeof(SocketTcpAsync); + #endif + } + + + public virtual bool OpGetRegions(string appId) + { + Dictionary parameters = new Dictionary(1); + parameters[(byte)ParameterCode.ApplicationId] = appId; + + return this.SendOperation(OperationCode.GetRegions, parameters, new SendOptions() { Reliability = true, Encrypt = true }); + } + + /// + /// Joins the lobby on the Master Server, where you get a list of RoomInfos of currently open rooms. + /// This is an async request which triggers a OnOperationResponse() call. + /// + /// The lobby join to. + /// If the operation could be sent (has to be connected). + public virtual bool OpJoinLobby(TypedLobby lobby = null) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpJoinLobby()"); + } + + Dictionary parameters = null; + if (lobby != null && !lobby.IsDefault) + { + parameters = new Dictionary(); + parameters[(byte)ParameterCode.LobbyName] = lobby.Name; + parameters[(byte)ParameterCode.LobbyType] = (byte)lobby.Type; + } + + return this.SendOperation(OperationCode.JoinLobby, parameters, SendOptions.SendReliable); + } + + + /// + /// Leaves the lobby on the Master Server. + /// This is an async request which triggers a OnOperationResponse() call. + /// + /// If the operation could be sent (requires connection). + public virtual bool OpLeaveLobby() + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpLeaveLobby()"); + } + + return this.SendOperation(OperationCode.LeaveLobby, (Dictionary)null, SendOptions.SendReliable); + } + + + /// Used by OpJoinRoom and by OpCreateRoom alike. + private void RoomOptionsToOpParameters(Dictionary op, RoomOptions roomOptions, bool usePropertiesKey = false) + { + if (roomOptions == null) + { + roomOptions = new RoomOptions(); + } + + Hashtable gameProperties = new Hashtable(); + gameProperties[GamePropertyKey.IsOpen] = roomOptions.IsOpen; + gameProperties[GamePropertyKey.IsVisible] = roomOptions.IsVisible; + gameProperties[GamePropertyKey.PropsListedInLobby] = (roomOptions.CustomRoomPropertiesForLobby == null) ? new string[0] : roomOptions.CustomRoomPropertiesForLobby; + gameProperties.MergeStringKeys(roomOptions.CustomRoomProperties); + if (roomOptions.MaxPlayers > 0) + { + gameProperties[GamePropertyKey.MaxPlayers] = roomOptions.MaxPlayers; + } + + if (!usePropertiesKey) + { + op[ParameterCode.GameProperties] = gameProperties; // typically, the key for game props is 248 + } + else + { + op[ParameterCode.Properties] = gameProperties; // when an op uses 248 as filter, the "create room" props can be set as 251 + } + + + int flags = 0; // a new way to send the room options as bitwise-flags + + if (roomOptions.CleanupCacheOnLeave) + { + op[ParameterCode.CleanupCacheOnLeave] = true; // this defines the server's room settings and logic + flags = flags | (int)RoomOptionBit.DeleteCacheOnLeave; // this defines the server's room settings and logic (for servers that support flags) + } + else + { + op[ParameterCode.CleanupCacheOnLeave] = false; // this defines the server's room settings and logic + gameProperties[GamePropertyKey.CleanupCacheOnLeave] = false; // this is only informational for the clients which join + } + + #if SERVERSDK + op[ParameterCode.CheckUserOnJoin] = roomOptions.CheckUserOnJoin; + if (roomOptions.CheckUserOnJoin) + { + flags = flags | (int) RoomOptionBit.CheckUserOnJoin; + } + #else + // in PUN v1.88 and PUN 2, CheckUserOnJoin is set by default: + flags = flags | (int) RoomOptionBit.CheckUserOnJoin; + op[ParameterCode.CheckUserOnJoin] = true; + #endif + + if (roomOptions.PlayerTtl > 0 || roomOptions.PlayerTtl == -1) + { + op[ParameterCode.PlayerTTL] = roomOptions.PlayerTtl; // TURNBASED + } + + if (roomOptions.EmptyRoomTtl > 0) + { + op[ParameterCode.EmptyRoomTTL] = roomOptions.EmptyRoomTtl; //TURNBASED + } + + if (roomOptions.SuppressRoomEvents) + { + flags = flags | (int)RoomOptionBit.SuppressRoomEvents; + op[ParameterCode.SuppressRoomEvents] = true; + } + if (roomOptions.SuppressPlayerInfo) + { + flags = flags | (int)RoomOptionBit.SuppressPlayerInfo; + } + + if (roomOptions.Plugins != null) + { + op[ParameterCode.Plugins] = roomOptions.Plugins; + } + if (roomOptions.PublishUserId) + { + flags = flags | (int)RoomOptionBit.PublishUserId; + op[ParameterCode.PublishUserId] = true; + } + if (roomOptions.DeleteNullProperties) + { + flags = flags | (int)RoomOptionBit.DeleteNullProps; // this is only settable as flag + } + if (roomOptions.BroadcastPropsChangeToAll) + { + flags = flags | (int)RoomOptionBit.BroadcastPropsChangeToAll; // this is only settable as flag + } + + op[ParameterCode.RoomOptionFlags] = flags; + } + + + /// + /// Creates a room (on either Master or Game Server). + /// The OperationResponse depends on the server the peer is connected to: + /// Master will return a Game Server to connect to. + /// Game Server will return the joined Room's data. + /// This is an async request which triggers a OnOperationResponse() call. + /// + /// + /// If the room is already existing, the OperationResponse will have a returnCode of ErrorCode.GameAlreadyExists. + /// + public virtual bool OpCreateRoom(EnterRoomParams opParams) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpCreateRoom()"); + } + + Dictionary op = new Dictionary(); + + if (!string.IsNullOrEmpty(opParams.RoomName)) + { + op[ParameterCode.RoomName] = opParams.RoomName; + } + if (opParams.Lobby != null && !opParams.Lobby.IsDefault) + { + op[ParameterCode.LobbyName] = opParams.Lobby.Name; + op[ParameterCode.LobbyType] = (byte)opParams.Lobby.Type; + } + + if (opParams.ExpectedUsers != null && opParams.ExpectedUsers.Length > 0) + { + op[ParameterCode.Add] = opParams.ExpectedUsers; + } + if (opParams.OnGameServer) + { + if (opParams.PlayerProperties != null && opParams.PlayerProperties.Count > 0) + { + op[ParameterCode.PlayerProperties] = opParams.PlayerProperties; + } + op[ParameterCode.Broadcast] = true; // broadcast actor properties + + this.RoomOptionsToOpParameters(op, opParams.RoomOptions); + } + + //this.Listener.DebugReturn(DebugLevel.INFO, "OpCreateRoom: " + SupportClass.DictionaryToString(op)); + return this.SendOperation(OperationCode.CreateGame, op, SendOptions.SendReliable); + } + + /// + /// Joins a room by name or creates new room if room with given name not exists. + /// The OperationResponse depends on the server the peer is connected to: + /// Master will return a Game Server to connect to. + /// Game Server will return the joined Room's data. + /// This is an async request which triggers a OnOperationResponse() call. + /// + /// + /// If the room is not existing (anymore), the OperationResponse will have a returnCode of ErrorCode.GameDoesNotExist. + /// Other possible ErrorCodes are: GameClosed, GameFull. + /// + /// If the operation could be sent (requires connection). + public virtual bool OpJoinRoom(EnterRoomParams opParams) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpJoinRoom()"); + } + Dictionary op = new Dictionary(); + + if (!string.IsNullOrEmpty(opParams.RoomName)) + { + op[ParameterCode.RoomName] = opParams.RoomName; + } + + if (opParams.JoinMode == JoinMode.CreateIfNotExists) + { + op[ParameterCode.JoinMode] = (byte)JoinMode.CreateIfNotExists; + if (opParams.Lobby != null && !opParams.Lobby.IsDefault) + { + op[ParameterCode.LobbyName] = opParams.Lobby.Name; + op[ParameterCode.LobbyType] = (byte)opParams.Lobby.Type; + } + } + else if (opParams.JoinMode == JoinMode.RejoinOnly) + { + op[ParameterCode.JoinMode] = (byte)JoinMode.RejoinOnly; // changed from JoinMode.JoinOrRejoin + } + + if (opParams.ExpectedUsers != null && opParams.ExpectedUsers.Length > 0) + { + op[ParameterCode.Add] = opParams.ExpectedUsers; + } + + if (opParams.OnGameServer) + { + if (opParams.PlayerProperties != null && opParams.PlayerProperties.Count > 0) + { + op[ParameterCode.PlayerProperties] = opParams.PlayerProperties; + } + op[ParameterCode.Broadcast] = true; // broadcast actor properties + } + + if (opParams.OnGameServer || opParams.JoinMode == JoinMode.CreateIfNotExists) + { + this.RoomOptionsToOpParameters(op, opParams.RoomOptions); + } + + //this.Listener.DebugReturn(DebugLevel.INFO, "OpJoinRoom: " + SupportClass.DictionaryToString(op)); + return this.SendOperation(OperationCode.JoinGame, op, SendOptions.SendReliable); + } + + + /// + /// Operation to join a random, available room. Overloads take additional player properties. + /// This is an async request which triggers a OnOperationResponse() call. + /// If all rooms are closed or full, the OperationResponse will have a returnCode of ErrorCode.NoRandomMatchFound. + /// If successful, the OperationResponse contains a gameserver address and the name of some room. + /// + /// If the operation could be sent currently (requires connection). + public virtual bool OpJoinRandomRoom(OpJoinRandomRoomParams opJoinRandomRoomParams) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpJoinRandomRoom()"); + } + + Hashtable expectedRoomProperties = new Hashtable(); + expectedRoomProperties.MergeStringKeys(opJoinRandomRoomParams.ExpectedCustomRoomProperties); + if (opJoinRandomRoomParams.ExpectedMaxPlayers > 0) + { + expectedRoomProperties[GamePropertyKey.MaxPlayers] = opJoinRandomRoomParams.ExpectedMaxPlayers; + } + + Dictionary opParameters = new Dictionary(); + if (expectedRoomProperties.Count > 0) + { + opParameters[ParameterCode.GameProperties] = expectedRoomProperties; + } + + if (opJoinRandomRoomParams.MatchingType != MatchmakingMode.FillRoom) + { + opParameters[ParameterCode.MatchMakingType] = (byte)opJoinRandomRoomParams.MatchingType; + } + + if (opJoinRandomRoomParams.TypedLobby != null && !opJoinRandomRoomParams.TypedLobby.IsDefault) + { + opParameters[ParameterCode.LobbyName] = opJoinRandomRoomParams.TypedLobby.Name; + opParameters[ParameterCode.LobbyType] = (byte)opJoinRandomRoomParams.TypedLobby.Type; + } + + if (!string.IsNullOrEmpty(opJoinRandomRoomParams.SqlLobbyFilter)) + { + opParameters[ParameterCode.Data] = opJoinRandomRoomParams.SqlLobbyFilter; + } + + if (opJoinRandomRoomParams.ExpectedUsers != null && opJoinRandomRoomParams.ExpectedUsers.Length > 0) + { + opParameters[ParameterCode.Add] = opJoinRandomRoomParams.ExpectedUsers; + } + + //this.Listener.DebugReturn(DebugLevel.INFO, "OpJoinRandomRoom: " + SupportClass.DictionaryToString(opParameters)); + return this.SendOperation(OperationCode.JoinRandomGame, opParameters, SendOptions.SendReliable); + } + + /// + /// Only used on the Master Server. It will assign a game server and room to join-or-create. + /// On the Game Server, the OpJoin is used with option "create if not exists". + /// + public virtual bool OpJoinRandomOrCreateRoom(OpJoinRandomRoomParams opJoinRandomRoomParams, EnterRoomParams createRoomParams) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpJoinRandomOrCreateRoom()"); + } + + // join random room parameters: + + Hashtable expectedRoomProperties = new Hashtable(); + expectedRoomProperties.MergeStringKeys(opJoinRandomRoomParams.ExpectedCustomRoomProperties); + if (opJoinRandomRoomParams.ExpectedMaxPlayers > 0) + { + expectedRoomProperties[GamePropertyKey.MaxPlayers] = opJoinRandomRoomParams.ExpectedMaxPlayers; + } + + Dictionary opParameters = new Dictionary(); + if (expectedRoomProperties.Count > 0) + { + opParameters[ParameterCode.GameProperties] = expectedRoomProperties; // used as filter. below, RoomOptionsToOpParameters has usePropertiesKey = true + } + + if (opJoinRandomRoomParams.MatchingType != MatchmakingMode.FillRoom) + { + opParameters[ParameterCode.MatchMakingType] = (byte)opJoinRandomRoomParams.MatchingType; + } + + if (opJoinRandomRoomParams.TypedLobby != null && !opJoinRandomRoomParams.TypedLobby.IsDefault) + { + opParameters[ParameterCode.LobbyName] = opJoinRandomRoomParams.TypedLobby.Name; + opParameters[ParameterCode.LobbyType] = (byte)opJoinRandomRoomParams.TypedLobby.Type; + } + + if (!string.IsNullOrEmpty(opJoinRandomRoomParams.SqlLobbyFilter)) + { + opParameters[ParameterCode.Data] = opJoinRandomRoomParams.SqlLobbyFilter; + } + + if (opJoinRandomRoomParams.ExpectedUsers != null && opJoinRandomRoomParams.ExpectedUsers.Length > 0) + { + opParameters[ParameterCode.Add] = opJoinRandomRoomParams.ExpectedUsers; + } + + + // parameters for creating a room if needed ("or create" part of the operation) + // partial copy of OpCreateRoom + + opParameters[ParameterCode.JoinMode] = (byte)JoinMode.CreateIfNotExists; + + if (createRoomParams != null) + { + if (!string.IsNullOrEmpty(createRoomParams.RoomName)) + { + opParameters[ParameterCode.RoomName] = createRoomParams.RoomName; + } + + this.RoomOptionsToOpParameters(opParameters, createRoomParams.RoomOptions, true); + } + + //this.Listener.DebugReturn(DebugLevel.INFO, "OpJoinRandomOrCreateRoom: " + SupportClass.DictionaryToString(opParameters, false)); + return this.SendOperation(OperationCode.JoinRandomGame, opParameters, SendOptions.SendReliable); + } + + + /// + /// Leaves a room with option to come back later or "for good". + /// + /// Async games can be re-joined (loaded) later on. Set to false, if you want to abandon a game entirely. + /// WebFlag: Securely transmit the encrypted object AuthCookie to the web service in PathLeave webhook when available + /// If the opteration can be send currently. + public virtual bool OpLeaveRoom(bool becomeInactive, bool sendAuthCookie = false) + { + Dictionary opParameters = new Dictionary(); + if (becomeInactive) + { + opParameters[ParameterCode.IsInactive] = true; + } + if (sendAuthCookie) + { + opParameters[ParameterCode.EventForward] = WebFlags.SendAuthCookieConst; + } + return this.SendOperation(OperationCode.Leave, opParameters, SendOptions.SendReliable); + } + + /// Gets a list of games matching a SQL-like where clause. + /// + /// Operation is only available in lobbies of type SqlLobby. + /// This is an async request which triggers a OnOperationResponse() call. + /// Returned game list is stored in RoomInfoList. + /// + /// + /// The lobby to query. Has to be of type SqlLobby. + /// The sql query statement. + /// If the operation could be sent (has to be connected). + public virtual bool OpGetGameList(TypedLobby lobby, string queryData) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpGetGameList()"); + } + + if (lobby == null) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpGetGameList not sent. Lobby cannot be null."); + } + return false; + } + + if (lobby.Type != LobbyType.SqlLobby) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpGetGameList not sent. LobbyType must be SqlLobby."); + } + return false; + } + + if (lobby.IsDefault) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpGetGameList not sent. LobbyName must be not null and not empty."); + } + return false; + } + + if (string.IsNullOrEmpty(queryData)) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpGetGameList not sent. queryData must be not null and not empty."); + } + return false; + } + + Dictionary opParameters = new Dictionary(); + opParameters[(byte)ParameterCode.LobbyName] = lobby.Name; + opParameters[(byte)ParameterCode.LobbyType] = (byte)lobby.Type; + opParameters[(byte)ParameterCode.Data] = queryData; + + return this.SendOperation(OperationCode.GetGameList, opParameters, SendOptions.SendReliable); + } + + /// + /// Request the rooms and online status for a list of friends (each client must set a unique username via OpAuthenticate). + /// + /// + /// Used on Master Server to find the rooms played by a selected list of users. + /// Users identify themselves by using OpAuthenticate with a unique user ID. + /// The list of user IDs must be fetched from some other source (not provided by Photon). + /// + /// The server response includes 2 arrays of info (each index matching a friend from the request):
    + /// ParameterCode.FindFriendsResponseOnlineList = bool[] of online states
    + /// ParameterCode.FindFriendsResponseRoomIdList = string[] of room names (empty string if not in a room)
    + ///
    + /// The options may be used to define which state a room must match to be returned. + ///
    + /// Array of friend's names (make sure they are unique). + /// Options that affect the result of the FindFriends operation. + /// If the operation could be sent (requires connection). + public virtual bool OpFindFriends(string[] friendsToFind, FindFriendsOptions options = null) + { + Dictionary opParameters = new Dictionary(); + if (friendsToFind != null && friendsToFind.Length > 0) + { + opParameters[ParameterCode.FindFriendsRequestList] = friendsToFind; + } + + if (options != null) + { + opParameters[ParameterCode.FindFriendsOptions] = options.ToIntFlags(); + } + + return this.SendOperation(OperationCode.FindFriends, opParameters, SendOptions.SendReliable); + } + + public bool OpSetCustomPropertiesOfActor(int actorNr, Hashtable actorProperties) + { + return this.OpSetPropertiesOfActor(actorNr, actorProperties.StripToStringKeys(), null); + } + + /// + /// Sets properties of a player / actor. + /// Internally this uses OpSetProperties, which can be used to either set room or player properties. + /// + /// The payer ID (a.k.a. actorNumber) of the player to attach these properties to. + /// The properties to add or update. + /// If set, these must be in the current properties-set (on the server) to set actorProperties: CAS. + /// Set these to forward the properties to a WebHook as defined for this app (in Dashboard). + /// If the operation could be sent (requires connection). + protected internal bool OpSetPropertiesOfActor(int actorNr, Hashtable actorProperties, Hashtable expectedProperties = null, WebFlags webflags = null) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpSetPropertiesOfActor()"); + } + + if (actorNr <= 0 || actorProperties == null || actorProperties.Count == 0) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpSetPropertiesOfActor not sent. ActorNr must be > 0 and actorProperties must be not null nor empty."); + } + return false; + } + + Dictionary opParameters = new Dictionary(); + opParameters.Add(ParameterCode.Properties, actorProperties); + opParameters.Add(ParameterCode.ActorNr, actorNr); + opParameters.Add(ParameterCode.Broadcast, true); + if (expectedProperties != null && expectedProperties.Count != 0) + { + opParameters.Add(ParameterCode.ExpectedValues, expectedProperties); + } + + if (webflags != null && webflags.HttpForward) + { + opParameters[ParameterCode.EventForward] = webflags.WebhookFlags; + } + + return this.SendOperation(OperationCode.SetProperties, opParameters, SendOptions.SendReliable); + } + + + protected bool OpSetPropertyOfRoom(byte propCode, object value) + { + Hashtable properties = new Hashtable(); + properties[propCode] = value; + return this.OpSetPropertiesOfRoom(properties); + } + + public bool OpSetCustomPropertiesOfRoom(Hashtable gameProperties) + { + return this.OpSetPropertiesOfRoom(gameProperties.StripToStringKeys()); + } + + /// + /// Sets properties of a room. + /// Internally this uses OpSetProperties, which can be used to either set room or player properties. + /// + /// The properties to add or update. + /// The properties expected when update occurs. (CAS : "Check And Swap") + /// WebFlag to indicate if request should be forwarded as "PathProperties" webhook or not. + /// If the operation could be sent (has to be connected). + protected internal bool OpSetPropertiesOfRoom(Hashtable gameProperties, Hashtable expectedProperties = null, WebFlags webflags = null) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpSetPropertiesOfRoom()"); + } + if (gameProperties == null || gameProperties.Count == 0) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpSetPropertiesOfRoom not sent. gameProperties must be not null nor empty."); + } + return false; + } + + Dictionary opParameters = new Dictionary(); + opParameters.Add(ParameterCode.Properties, gameProperties); + opParameters.Add(ParameterCode.Broadcast, true); + if (expectedProperties != null && expectedProperties.Count != 0) + { + opParameters.Add(ParameterCode.ExpectedValues, expectedProperties); + } + + if (webflags!=null && webflags.HttpForward) + { + opParameters[ParameterCode.EventForward] = webflags.WebhookFlags; + } + + return this.SendOperation(OperationCode.SetProperties, opParameters, SendOptions.SendReliable); + } + + /// + /// Sends this app's appId and appVersion to identify this application server side. + /// This is an async request which triggers a OnOperationResponse() call. + /// + /// + /// This operation makes use of encryption, if that is established before. + /// See: EstablishEncryption(). Check encryption with IsEncryptionAvailable. + /// This operation is allowed only once per connection (multiple calls will have ErrorCode != Ok). + /// + /// Your application's name or ID to authenticate. This is assigned by Photon Cloud (webpage). + /// The client's version (clients with differing client appVersions are separated and players don't meet). + /// Contains all values relevant for authentication. Even without account system (external Custom Auth), the clients are allowed to identify themselves. + /// Optional region code, if the client should connect to a specific Photon Cloud Region. + /// Set to true on Master Server to receive "Lobby Statistics" events. + /// If the operation could be sent (has to be connected). + public virtual bool OpAuthenticate(string appId, string appVersion, AuthenticationValues authValues, string regionCode, bool getLobbyStatistics) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpAuthenticate()"); + } + + Dictionary opParameters = new Dictionary(); + if (getLobbyStatistics) + { + // must be sent in operation, even if a Token is available + opParameters[ParameterCode.LobbyStats] = true; + } + + // shortcut, if we have a Token + if (authValues != null && authValues.Token != null) + { + opParameters[ParameterCode.Token] = authValues.Token; + return this.SendOperation(OperationCode.Authenticate, opParameters, SendOptions.SendReliable); // we don't have to encrypt, when we have a token (which is encrypted) + } + + + // without a token, we send a complete op auth + + opParameters[ParameterCode.AppVersion] = appVersion; + opParameters[ParameterCode.ApplicationId] = appId; + + if (!string.IsNullOrEmpty(regionCode)) + { + opParameters[ParameterCode.Region] = regionCode; + } + + if (authValues != null) + { + + if (!string.IsNullOrEmpty(authValues.UserId)) + { + opParameters[ParameterCode.UserId] = authValues.UserId; + } + + if (authValues.AuthType != CustomAuthenticationType.None) + { + opParameters[ParameterCode.ClientAuthenticationType] = (byte)authValues.AuthType; + // if we had a token, the code above would use it. here, we send parameters: + if (!string.IsNullOrEmpty(authValues.AuthGetParameters)) + { + opParameters[ParameterCode.ClientAuthenticationParams] = authValues.AuthGetParameters; + } + if (authValues.AuthPostData != null) + { + opParameters[ParameterCode.ClientAuthenticationData] = authValues.AuthPostData; + } + } + } + + return this.SendOperation(OperationCode.Authenticate, opParameters, new SendOptions() { Reliability = true, Encrypt = true }); + } + + + /// + /// Sends this app's appId and appVersion to identify this application server side. + /// This is an async request which triggers a OnOperationResponse() call. + /// + /// + /// This operation makes use of encryption, if that is established before. + /// See: EstablishEncryption(). Check encryption with IsEncryptionAvailable. + /// This operation is allowed only once per connection (multiple calls will have ErrorCode != Ok). + /// + /// Your application's name or ID to authenticate. This is assigned by Photon Cloud (webpage). + /// The client's version (clients with differing client appVersions are separated and players don't meet). + /// Optional authentication values. The client can set no values or a UserId or some parameters for Custom Authentication by a server. + /// Optional region code, if the client should connect to a specific Photon Cloud Region. + /// + /// + /// If the operation could be sent (has to be connected). + public virtual bool OpAuthenticateOnce(string appId, string appVersion, AuthenticationValues authValues, string regionCode, EncryptionMode encryptionMode, ConnectionProtocol expectedProtocol) + { + if (this.DebugOut >= DebugLevel.INFO) + { + this.Listener.DebugReturn(DebugLevel.INFO, "OpAuthenticateOnce(): authValues = " + authValues + ", region = " + regionCode + ", encryption = " + encryptionMode); + } + + var opParameters = new Dictionary(); + + // shortcut, if we have a Token + if (authValues != null && authValues.Token != null) + { + opParameters[ParameterCode.Token] = authValues.Token; + return this.SendOperation(OperationCode.AuthenticateOnce, opParameters, SendOptions.SendReliable); // we don't have to encrypt, when we have a token (which is encrypted) + } + + if (encryptionMode == EncryptionMode.DatagramEncryption && expectedProtocol != ConnectionProtocol.Udp) + { + // TODO disconnect?! + throw new NotSupportedException("Expected protocol set to UDP, due to encryption mode DatagramEncryption."); // TODO use some other form of callback?! + } + + opParameters[ParameterCode.ExpectedProtocol] = (byte)expectedProtocol; + opParameters[ParameterCode.EncryptionMode] = (byte)encryptionMode; + + opParameters[ParameterCode.AppVersion] = appVersion; + opParameters[ParameterCode.ApplicationId] = appId; + + if (!string.IsNullOrEmpty(regionCode)) + { + opParameters[ParameterCode.Region] = regionCode; + } + + if (authValues != null) + { + if (!string.IsNullOrEmpty(authValues.UserId)) + { + opParameters[ParameterCode.UserId] = authValues.UserId; + } + + if (authValues.AuthType != CustomAuthenticationType.None) + { + opParameters[ParameterCode.ClientAuthenticationType] = (byte)authValues.AuthType; + if (authValues.Token != null) + { + opParameters[ParameterCode.Token] = authValues.Token; + } + else + { + if (!string.IsNullOrEmpty(authValues.AuthGetParameters)) + { + opParameters[ParameterCode.ClientAuthenticationParams] = authValues.AuthGetParameters; + } + if (authValues.AuthPostData != null) + { + opParameters[ParameterCode.ClientAuthenticationData] = authValues.AuthPostData; + } + } + } + } + + return this.SendOperation(OperationCode.AuthenticateOnce, opParameters, new SendOptions() { Reliability = true, Encrypt = true }); + } + + /// + /// Operation to handle this client's interest groups (for events in room). + /// + /// + /// Note the difference between passing null and byte[0]: + /// null won't add/remove any groups. + /// byte[0] will add/remove all (existing) groups. + /// First, removing groups is executed. This way, you could leave all groups and join only the ones provided. + /// + /// Changes become active not immediately but when the server executes this operation (approximately RTT/2). + /// + /// Groups to remove from interest. Null will not remove any. A byte[0] will remove all. + /// Groups to add to interest. Null will not add any. A byte[0] will add all current. + /// If operation could be enqueued for sending. Sent when calling: Service or SendOutgoingCommands. + public virtual bool OpChangeGroups(byte[] groupsToRemove, byte[] groupsToAdd) + { + if (this.DebugOut >= DebugLevel.ALL) + { + this.Listener.DebugReturn(DebugLevel.ALL, "OpChangeGroups()"); + } + + Dictionary opParameters = new Dictionary(); + if (groupsToRemove != null) + { + opParameters[(byte)ParameterCode.Remove] = groupsToRemove; + } + if (groupsToAdd != null) + { + opParameters[(byte)ParameterCode.Add] = groupsToAdd; + } + + return this.SendOperation(OperationCode.ChangeGroups, opParameters, SendOptions.SendReliable); + } + + + /// + /// Send an event with custom code/type and any content to the other players in the same room. + /// + /// This override explicitly uses another parameter order to not mix it up with the implementation for Hashtable only. + /// Identifies this type of event (and the content). Your game's event codes can start with 0. + /// Any serializable datatype (including Hashtable like the other OpRaiseEvent overloads). + /// Contains (slightly) less often used options. If you pass null, the default options will be used. + /// Send options for reliable, encryption etc + /// If operation could be enqueued for sending. Sent when calling: Service or SendOutgoingCommands. + public virtual bool OpRaiseEvent(byte eventCode, object customEventContent, RaiseEventOptions raiseEventOptions, SendOptions sendOptions) + { + var paramDict = this.paramDictionaryPool.Acquire(); + try + { + if (raiseEventOptions != null) + { + if (raiseEventOptions.CachingOption != EventCaching.DoNotCache) + { + paramDict.Add(ParameterCode.Cache, (byte)raiseEventOptions.CachingOption); + } + switch (raiseEventOptions.CachingOption) + { + case EventCaching.SliceSetIndex: + case EventCaching.SlicePurgeIndex: + case EventCaching.SlicePurgeUpToIndex: + //this.opParameters[(byte) ParameterCode.CacheSliceIndex] = + // (byte) raiseEventOptions.CacheSliceIndex; + return this.SendOperation(OperationCode.RaiseEvent, paramDict, sendOptions); + case EventCaching.SliceIncreaseIndex: + case EventCaching.RemoveFromRoomCacheForActorsLeft: + return this.SendOperation(OperationCode.RaiseEvent, paramDict, sendOptions); + case EventCaching.RemoveFromRoomCache: + if (raiseEventOptions.TargetActors != null) + { + paramDict.Add(ParameterCode.ActorList, raiseEventOptions.TargetActors); + } + break; + default: + if (raiseEventOptions.TargetActors != null) + { + paramDict.Add(ParameterCode.ActorList, raiseEventOptions.TargetActors); + } + else if (raiseEventOptions.InterestGroup != 0) + { + paramDict.Add(ParameterCode.Group, (byte)raiseEventOptions.InterestGroup); + } + else if (raiseEventOptions.Receivers != ReceiverGroup.Others) + { + paramDict.Add(ParameterCode.ReceiverGroup, (byte)raiseEventOptions.Receivers); + } + if (raiseEventOptions.Flags.HttpForward) + { + paramDict.Add(ParameterCode.EventForward, (byte)raiseEventOptions.Flags.WebhookFlags); + } + break; + } + } + paramDict.Add(ParameterCode.Code, (byte)eventCode); + if (customEventContent != null) + { + paramDict.Add(ParameterCode.Data, (object)customEventContent); + } + return this.SendOperation(OperationCode.RaiseEvent, paramDict, sendOptions); + } + finally + { + this.paramDictionaryPool.Release(paramDict); + } + } + + + /// + /// Internally used operation to set some "per server" settings. This is for the Master Server. + /// + /// Set to true, to get Lobby Statistics (lists of existing lobbies). + /// False if the operation could not be sent. + public virtual bool OpSettings(bool receiveLobbyStats) + { + if (this.DebugOut >= DebugLevel.ALL) + { + this.Listener.DebugReturn(DebugLevel.ALL, "OpSettings()"); + } + + Dictionary opParameters = new Dictionary(); + + // implementation for Master Server: + if (receiveLobbyStats) + { + opParameters[(byte)0] = receiveLobbyStats; + } + + if (opParameters.Count == 0) + { + // no need to send op in case we set the default values + return true; + } + + return this.SendOperation(OperationCode.ServerSettings, opParameters, SendOptions.SendReliable); + } + } + + /// Used in the RoomOptionFlags parameter, this bitmask toggles options in the room. + internal enum RoomOptionBit : int + { + CheckUserOnJoin = 0x01, // toggles a check of the UserId when joining (enabling returning to a game) + DeleteCacheOnLeave = 0x02, // deletes cache on leave + SuppressRoomEvents = 0x04, // suppresses all room events + PublishUserId = 0x08, // signals that we should publish userId + DeleteNullProps = 0x10, // signals that we should remove property if its value was set to null. see RoomOption to Delete Null Properties + BroadcastPropsChangeToAll = 0x20, // signals that we should send PropertyChanged event to all room players including initiator + SuppressPlayerInfo = 0x40, // disables events join and leave from the server as well as property broadcasts in a room (to minimize traffic) + } + + /// + /// Options for OpFindFriends can be combined to filter which rooms of friends are returned. + /// + public class FindFriendsOptions + { + /// Include a friend's room only if it is created and confirmed by the game server. + public bool CreatedOnGs = false; //flag: 0x01 + /// Include a friend's room only if it is visible (using Room.IsVisible). + public bool Visible = false; //flag: 0x02 + /// Include a friend's room only if it is open (using Room.IsOpen). + public bool Open = false; //flag: 0x04 + + /// Turns the bool options into an integer, which is sent as option flags for Op FindFriends. + /// The options applied to bits of an integer. + internal int ToIntFlags() + { + int optionFlags = 0; + if (this.CreatedOnGs) + { + optionFlags = optionFlags | 0x1; + } + if (this.Visible) + { + optionFlags = optionFlags | 0x2; + } + if (this.Open) + { + optionFlags = optionFlags | 0x4; + } + return optionFlags; + } + } + + + /// + /// Parameters for the matchmaking of JoinRandomRoom and JoinRandomOrCreateRoom. + /// + /// + /// More about matchmaking: . + /// + public class OpJoinRandomRoomParams + { + /// The custom room properties a room must have to fit. All key-values must be present to match. In SQL Lobby, use SqlLobbyFilter instead. + public Hashtable ExpectedCustomRoomProperties; + /// Filters by the MaxPlayers value of rooms. + public byte ExpectedMaxPlayers; + /// The MatchmakingMode affects how rooms get filled. By default, the server fills rooms. + public MatchmakingMode MatchingType; + /// The lobby in which to match. The type affects how filters are applied. + public TypedLobby TypedLobby; + /// SQL query to filter room matches. For default-typed lobbies, use ExpectedCustomRoomProperties instead. + public string SqlLobbyFilter; + /// The expected users list blocks player slots for your friends or team mates to join the room, too. + /// See: https://doc.photonengine.com/en-us/pun/v2/lobby-and-matchmaking/matchmaking-and-lobby#matchmaking_slot_reservation + public string[] ExpectedUsers; + } + + /// Parameters for creating rooms. + public class EnterRoomParams + { + /// The name of the room to create. If null, the server generates a unique name. If not null, it must be unique and new or will cause an error. + public string RoomName; + /// The RoomOptions define the optional behaviour of rooms. + public RoomOptions RoomOptions; + /// A lobby to attach the new room to. If set, this overrides a joined lobby (if any). + public TypedLobby Lobby; + /// The custom player properties that describe this client / user. Keys must be strings. + public Hashtable PlayerProperties; + /// Internally used value to skip some values when the operation is sent to the Master Server. + protected internal bool OnGameServer = true; // defaults to true! better send more parameter than too few (GS needs all) + /// Internally used value to check which join mode we should call. + protected internal JoinMode JoinMode; + /// A list of users who are expected to join the room along with this client. Reserves slots for rooms with MaxPlayers value. + public string[] ExpectedUsers; + } + + + /// + /// ErrorCode defines the default codes associated with Photon client/server communication. + /// + public class ErrorCode + { + /// (0) is always "OK", anything else an error or specific situation. + public const int Ok = 0; + + // server - Photon low(er) level: <= 0 + + /// + /// (-3) Operation can't be executed yet (e.g. OpJoin can't be called before being authenticated, RaiseEvent cant be used before getting into a room). + /// + /// + /// Before you call any operations on the Cloud servers, the automated client workflow must complete its authorization. + /// Wait until State is: JoinedLobby or ConnectedToMasterServer + /// + public const int OperationNotAllowedInCurrentState = -3; + + /// (-2) The operation you called is not implemented on the server (application) you connect to. Make sure you run the fitting applications. + [Obsolete("Use InvalidOperation.")] + public const int InvalidOperationCode = -2; + + /// (-2) The operation you called could not be executed on the server. + /// + /// Make sure you are connected to the server you expect. + /// + /// This code is used in several cases: + /// The arguments/parameters of the operation might be out of range, missing entirely or conflicting. + /// The operation you called is not implemented on the server (application). Server-side plugins affect the available operations. + /// + public const int InvalidOperation = -2; + + /// (-1) Something went wrong in the server. Try to reproduce and contact Exit Games. + public const int InternalServerError = -1; + + // server - client: 0x7FFF and down + // logic-level error codes start with short.max + + /// (32767) Authentication failed. Possible cause: AppId is unknown to Photon (in cloud service). + public const int InvalidAuthentication = 0x7FFF; + + /// (32766) GameId (name) already in use (can't create another). Change name. + public const int GameIdAlreadyExists = 0x7FFF - 1; + + /// (32765) Game is full. This rarely happens when some player joined the room before your join completed. + public const int GameFull = 0x7FFF - 2; + + /// (32764) Game is closed and can't be joined. Join another game. + public const int GameClosed = 0x7FFF - 3; + + [Obsolete("No longer used, cause random matchmaking is no longer a process.")] + public const int AlreadyMatched = 0x7FFF - 4; + + /// (32762) All servers are busy. This is a temporary issue and the game logic should try again after a brief wait time. + /// + /// This error may happen for all operations that create rooms. The operation response will contain this error code. + /// + /// This error is very unlikely to happen as we monitor load on all servers and add them on demand. + /// However, it's good to be prepared for a shortage of machines or surge in CCUs. + /// + public const int ServerFull = 0x7FFF - 5; + + /// (32761) Not in use currently. + public const int UserBlocked = 0x7FFF - 6; + + /// (32760) Random matchmaking only succeeds if a room exists thats neither closed nor full. Repeat in a few seconds or create a new room. + public const int NoRandomMatchFound = 0x7FFF - 7; + + /// (32758) Join can fail if the room (name) is not existing (anymore). This can happen when players leave while you join. + public const int GameDoesNotExist = 0x7FFF - 9; + + /// (32757) Authorization on the Photon Cloud failed because the concurrent users (CCU) limit of the app's subscription is reached. + /// + /// Unless you have a plan with "CCU Burst", clients might fail the authentication step during connect. + /// Affected client are unable to call operations. Please note that players who end a game and return + /// to the master server will disconnect and re-connect, which means that they just played and are rejected + /// in the next minute / re-connect. + /// This is a temporary measure. Once the CCU is below the limit, players will be able to connect an play again. + /// + /// OpAuthorize is part of connection workflow but only on the Photon Cloud, this error can happen. + /// Self-hosted Photon servers with a CCU limited license won't let a client connect at all. + /// + public const int MaxCcuReached = 0x7FFF - 10; + + /// (32756) Authorization on the Photon Cloud failed because the app's subscription does not allow to use a particular region's server. + /// + /// Some subscription plans for the Photon Cloud are region-bound. Servers of other regions can't be used then. + /// Check your master server address and compare it with your Photon Cloud Dashboard's info. + /// https://dashboard.photonengine.com + /// + /// OpAuthorize is part of connection workflow but only on the Photon Cloud, this error can happen. + /// Self-hosted Photon servers with a CCU limited license won't let a client connect at all. + /// + public const int InvalidRegion = 0x7FFF - 11; + + /// + /// (32755) Custom Authentication of the user failed due to setup reasons (see Cloud Dashboard) or the provided user data (like username or token). Check error message for details. + /// + public const int CustomAuthenticationFailed = 0x7FFF - 12; + + /// (32753) The Authentication ticket expired. Usually, this is refreshed behind the scenes. Connect (and authorize) again. + public const int AuthenticationTicketExpired = 0x7FF1; + + /// + /// (32752) A server-side plugin (or webhook) failed to execute and reported an error. Check the OperationResponse.DebugMessage. + /// + public const int PluginReportedError = 0x7FFF - 15; + + /// + /// (32751) CreateGame/JoinGame/Join operation fails if expected plugin does not correspond to loaded one. + /// + public const int PluginMismatch = 0x7FFF - 16; + + /// + /// (32750) for join requests. Indicates the current peer already called join and is joined to the room. + /// + public const int JoinFailedPeerAlreadyJoined = 32750; // 0x7FFF - 17, + + /// + /// (32749) for join requests. Indicates the list of InactiveActors already contains an actor with the requested ActorNr or UserId. + /// + public const int JoinFailedFoundInactiveJoiner = 32749; // 0x7FFF - 18, + + /// + /// (32748) for join requests. Indicates the list of Actors (active and inactive) did not contain an actor with the requested ActorNr or UserId. + /// + public const int JoinFailedWithRejoinerNotFound = 32748; // 0x7FFF - 19, + + /// + /// (32747) for join requests. Note: for future use - Indicates the requested UserId was found in the ExcludedList. + /// + public const int JoinFailedFoundExcludedUserId = 32747; // 0x7FFF - 20, + + /// + /// (32746) for join requests. Indicates the list of ActiveActors already contains an actor with the requested ActorNr or UserId. + /// + public const int JoinFailedFoundActiveJoiner = 32746; // 0x7FFF - 21, + + /// + /// (32745) for SetProperties and RaiseEvent (if flag HttpForward is true) requests. Indicates the maximum allowed http requests per minute was reached. + /// + public const int HttpLimitReached = 32745; // 0x7FFF - 22, + + /// + /// (32744) for WebRpc requests. Indicates the the call to the external service failed. + /// + public const int ExternalHttpCallFailed = 32744; // 0x7FFF - 23, + + /// + /// (32743) for operations with defined limits (as in calls per second, content count or size). + /// + public const int OperationLimitReached = 32743; // 0x7FFF - 24, + + /// + /// (32742) Server error during matchmaking with slot reservation. E.g. the reserved slots can not exceed MaxPlayers. + /// + public const int SlotError = 32742; // 0x7FFF - 25, + + /// + /// (32741) Server will react with this error if invalid encryption parameters provided by token + /// + public const int InvalidEncryptionParameters = 32741; // 0x7FFF - 24, + +} + + + /// + /// Class for constants. These (byte) values define "well known" properties for an Actor / Player. + /// + /// + /// These constants are used internally. + /// "Custom properties" have to use a string-type as key. They can be assigned at will. + /// + public class ActorProperties + { + /// (255) Name of a player/actor. + public const byte PlayerName = 255; // was: 1 + + /// (254) Tells you if the player is currently in this game (getting events live). + /// A server-set value for async games, where players can leave the game and return later. + public const byte IsInactive = 254; + + /// (253) UserId of the player. Sent when room gets created with RoomOptions.PublishUserId = true. + public const byte UserId = 253; + } + + + /// + /// Class for constants. These (byte) values are for "well known" room/game properties used in Photon LoadBalancing. + /// + /// + /// These constants are used internally. + /// "Custom properties" have to use a string-type as key. They can be assigned at will. + /// + public class GamePropertyKey + { + /// (255) Max number of players that "fit" into this room. 0 is for "unlimited". + public const byte MaxPlayers = 255; + + /// (254) Makes this room listed or not in the lobby on master. + public const byte IsVisible = 254; + + /// (253) Allows more players to join a room (or not). + public const byte IsOpen = 253; + + /// (252) Current count of players in the room. Used only in the lobby on master. + public const byte PlayerCount = 252; + + /// (251) True if the room is to be removed from room listing (used in update to room list in lobby on master) + public const byte Removed = 251; + + /// (250) A list of the room properties to pass to the RoomInfo list in a lobby. This is used in CreateRoom, which defines this list once per room. + public const byte PropsListedInLobby = 250; + + /// (249) Equivalent of Operation Join parameter CleanupCacheOnLeave. + public const byte CleanupCacheOnLeave = 249; + + /// (248) Code for MasterClientId, which is synced by server. When sent as op-parameter this is (byte)203. As room property this is (byte)248. + /// Tightly related to ParameterCode.MasterClientId. + public const byte MasterClientId = (byte)248; + + /// (247) Code for ExpectedUsers in a room. Matchmaking keeps a slot open for the players with these userIDs. + public const byte ExpectedUsers = (byte)247; + + /// (246) Player Time To Live. How long any player can be inactive (due to disconnect or leave) before the user gets removed from the playerlist (freeing a slot). + public const byte PlayerTtl = (byte)246; + + /// (245) Room Time To Live. How long a room stays available (and in server-memory), after the last player becomes inactive. After this time, the room gets persisted or destroyed. + public const byte EmptyRoomTtl = (byte)245; + } + + + /// + /// Class for constants. These values are for events defined by Photon LoadBalancing. + /// + /// They start at 255 and go DOWN. Your own in-game events can start at 0. These constants are used internally. + public class EventCode + { + /// (230) Initial list of RoomInfos (in lobby on Master) + public const byte GameList = 230; + + /// (229) Update of RoomInfos to be merged into "initial" list (in lobby on Master) + public const byte GameListUpdate = 229; + + /// (228) Currently not used. State of queueing in case of server-full + public const byte QueueState = 228; + + /// (227) Currently not used. Event for matchmaking + public const byte Match = 227; + + /// (226) Event with stats about this application (players, rooms, etc) + public const byte AppStats = 226; + + /// (224) This event provides a list of lobbies with their player and game counts. + public const byte LobbyStats = 224; + + /// (210) Internally used in case of hosting by Azure + [Obsolete("TCP routing was removed after becoming obsolete.")] + public const byte AzureNodeInfo = 210; + + /// (255) Event Join: someone joined the game. The new actorNumber is provided as well as the properties of that actor (if set in OpJoin). + public const byte Join = (byte)255; + + /// (254) Event Leave: The player who left the game can be identified by the actorNumber. + public const byte Leave = (byte)254; + + /// (253) When you call OpSetProperties with the broadcast option "on", this event is fired. It contains the properties being set. + public const byte PropertiesChanged = (byte)253; + + /// (253) When you call OpSetProperties with the broadcast option "on", this event is fired. It contains the properties being set. + [Obsolete("Use PropertiesChanged now.")] + public const byte SetProperties = (byte)253; + + /// (252) When player left game unexpected and the room has a playerTtl != 0, this event is fired to let everyone know about the timeout. + /// Obsolete. Replaced by Leave. public const byte Disconnect = LiteEventCode.Disconnect; + + /// (251) Sent by Photon Cloud when a plugin-call or webhook-call failed or events cache limit exceeded. Usually, the execution on the server continues, despite the issue. Contains: ParameterCode.Info. + /// + public const byte ErrorInfo = 251; + + /// (250) Sent by Photon whent he event cache slice was changed. Done by OpRaiseEvent. + public const byte CacheSliceChanged = 250; + + /// (223) Sent by Photon to update a token before it times out. + public const byte AuthEvent = 223; + } + + + /// Class for constants. Codes for parameters of Operations and Events. + /// These constants are used internally. + public class ParameterCode + { + /// (237) A bool parameter for creating games. If set to true, no room events are sent to the clients on join and leave. Default: false (and not sent). + public const byte SuppressRoomEvents = 237; + + /// (236) Time To Live (TTL) for a room when the last player leaves. Keeps room in memory for case a player re-joins soon. In milliseconds. + public const byte EmptyRoomTTL = 236; + + /// (235) Time To Live (TTL) for an 'actor' in a room. If a client disconnects, this actor is inactive first and removed after this timeout. In milliseconds. + public const byte PlayerTTL = 235; + + /// (234) Optional parameter of OpRaiseEvent and OpSetCustomProperties to forward the event/operation to a web-service. + public const byte EventForward = 234; + + /// (233) Optional parameter of OpLeave in async games. If false, the player does abandons the game (forever). By default players become inactive and can re-join. + [Obsolete("Use: IsInactive")] + public const byte IsComingBack = (byte)233; + + /// (233) Used in EvLeave to describe if a user is inactive (and might come back) or not. In rooms with PlayerTTL, becoming inactive is the default case. + public const byte IsInactive = (byte)233; + + /// (232) Used when creating rooms to define if any userid can join the room only once. + public const byte CheckUserOnJoin = (byte)232; + + /// (231) Code for "Check And Swap" (CAS) when changing properties. + public const byte ExpectedValues = (byte)231; + + /// (230) Address of a (game) server to use. + public const byte Address = 230; + + /// (229) Count of players in this application in a rooms (used in stats event) + public const byte PeerCount = 229; + + /// (228) Count of games in this application (used in stats event) + public const byte GameCount = 228; + + /// (227) Count of players on the master server (in this app, looking for rooms) + public const byte MasterPeerCount = 227; + + /// (225) User's ID + public const byte UserId = 225; + + /// (224) Your application's ID: a name on your own Photon or a GUID on the Photon Cloud + public const byte ApplicationId = 224; + + /// (223) Not used currently (as "Position"). If you get queued before connect, this is your position + public const byte Position = 223; + + /// (223) Modifies the matchmaking algorithm used for OpJoinRandom. Allowed parameter values are defined in enum MatchmakingMode. + public const byte MatchMakingType = 223; + + /// (222) List of RoomInfos about open / listed rooms + public const byte GameList = 222; + + /// (221) Internally used to establish encryption + public const byte Token = 221; + + /// (220) Version of your application + public const byte AppVersion = 220; + + /// (210) Internally used in case of hosting by Azure + [Obsolete("TCP routing was removed after becoming obsolete.")] + public const byte AzureNodeInfo = 210; // only used within events, so use: EventCode.AzureNodeInfo + + /// (209) Internally used in case of hosting by Azure + [Obsolete("TCP routing was removed after becoming obsolete.")] + public const byte AzureLocalNodeId = 209; + + /// (208) Internally used in case of hosting by Azure + [Obsolete("TCP routing was removed after becoming obsolete.")] + public const byte AzureMasterNodeId = 208; + + /// (255) Code for the gameId/roomName (a unique name per room). Used in OpJoin and similar. + public const byte RoomName = (byte)255; + + /// (250) Code for broadcast parameter of OpSetProperties method. + public const byte Broadcast = (byte)250; + + /// (252) Code for list of players in a room. + public const byte ActorList = (byte)252; + + /// (254) Code of the Actor of an operation. Used for property get and set. + public const byte ActorNr = (byte)254; + + /// (249) Code for property set (Hashtable). + public const byte PlayerProperties = (byte)249; + + /// (245) Code of data/custom content of an event. Used in OpRaiseEvent. + public const byte CustomEventContent = (byte)245; + + /// (245) Code of data of an event. Used in OpRaiseEvent. + public const byte Data = (byte)245; + + /// (244) Code used when sending some code-related parameter, like OpRaiseEvent's event-code. + /// This is not the same as the Operation's code, which is no longer sent as part of the parameter Dictionary in Photon 3. + public const byte Code = (byte)244; + + /// (248) Code for property set (Hashtable). + public const byte GameProperties = (byte)248; + + /// + /// (251) Code for property-set (Hashtable). This key is used when sending only one set of properties. + /// If either ActorProperties or GameProperties are used (or both), check those keys. + /// + public const byte Properties = (byte)251; + + /// (253) Code of the target Actor of an operation. Used for property set. Is 0 for game + public const byte TargetActorNr = (byte)253; + + /// (246) Code to select the receivers of events (used in Lite, Operation RaiseEvent). + public const byte ReceiverGroup = (byte)246; + + /// (247) Code for caching events while raising them. + public const byte Cache = (byte)247; + + /// (241) Bool parameter of CreateGame Operation. If true, server cleans up roomcache of leaving players (their cached events get removed). + public const byte CleanupCacheOnLeave = (byte)241; + + /// (240) Code for "group" operation-parameter (as used in Op RaiseEvent). + public const byte Group = 240; + + /// (239) The "Remove" operation-parameter can be used to remove something from a list. E.g. remove groups from player's interest groups. + public const byte Remove = 239; + + /// (239) Used in Op Join to define if UserIds of the players are broadcast in the room. Useful for FindFriends and reserving slots for expected users. + public const byte PublishUserId = 239; + + /// (238) The "Add" operation-parameter can be used to add something to some list or set. E.g. add groups to player's interest groups. + public const byte Add = 238; + + /// (218) Content for EventCode.ErrorInfo and internal debug operations. + public const byte Info = 218; + + /// (217) This key's (byte) value defines the target custom authentication type/service the client connects with. Used in OpAuthenticate + public const byte ClientAuthenticationType = 217; + + /// (216) This key's (string) value provides parameters sent to the custom authentication type/service the client connects with. Used in OpAuthenticate + public const byte ClientAuthenticationParams = 216; + + /// (215) Makes the server create a room if it doesn't exist. OpJoin uses this to always enter a room, unless it exists and is full/closed. + // public const byte CreateIfNotExists = 215; + + /// (215) The JoinMode enum defines which variant of joining a room will be executed: Join only if available, create if not exists or re-join. + /// Replaces CreateIfNotExists which was only a bool-value. + public const byte JoinMode = 215; + + /// (214) This key's (string or byte[]) value provides parameters sent to the custom authentication service setup in Photon Dashboard. Used in OpAuthenticate + public const byte ClientAuthenticationData = 214; + + /// (203) Code for MasterClientId, which is synced by server. When sent as op-parameter this is code 203. + /// Tightly related to GamePropertyKey.MasterClientId. + public const byte MasterClientId = (byte)203; + + /// (1) Used in Op FindFriends request. Value must be string[] of friends to look up. + public const byte FindFriendsRequestList = (byte)1; + + /// (2) Used in Op FindFriends request. An integer containing option-flags to filter the results. + public const byte FindFriendsOptions = (byte)2; + + /// (1) Used in Op FindFriends response. Contains bool[] list of online states (false if not online). + public const byte FindFriendsResponseOnlineList = (byte)1; + + /// (2) Used in Op FindFriends response. Contains string[] of room names ("" where not known or no room joined). + public const byte FindFriendsResponseRoomIdList = (byte)2; + + /// (213) Used in matchmaking-related methods and when creating a room to name a lobby (to join or to attach a room to). + public const byte LobbyName = (byte)213; + + /// (212) Used in matchmaking-related methods and when creating a room to define the type of a lobby. Combined with the lobby name this identifies the lobby. + public const byte LobbyType = (byte)212; + + /// (211) This (optional) parameter can be sent in Op Authenticate to turn on Lobby Stats (info about lobby names and their user- and game-counts). + public const byte LobbyStats = (byte)211; + + /// (210) Used for region values in OpAuth and OpGetRegions. + public const byte Region = (byte)210; + + /// (209) Path of the WebRPC that got called. Also known as "WebRpc Name". Type: string. + public const byte UriPath = 209; + + /// (208) Parameters for a WebRPC as: Dictionary<string, object>. This will get serialized to JSon. + public const byte WebRpcParameters = 208; + + /// (207) ReturnCode for the WebRPC, as sent by the web service (not by Photon, which uses ErrorCode). Type: byte. + public const byte WebRpcReturnCode = 207; + + /// (206) Message returned by WebRPC server. Analog to Photon's debug message. Type: string. + public const byte WebRpcReturnMessage = 206; + + /// (205) Used to define a "slice" for cached events. Slices can easily be removed from cache. Type: int. + public const byte CacheSliceIndex = 205; + + /// (204) Informs the server of the expected plugin setup. + /// + /// The operation will fail in case of a plugin mismatch returning error code PluginMismatch 32751(0x7FFF - 16). + /// Setting string[]{} means the client expects no plugin to be setup. + /// Note: for backwards compatibility null omits any check. + /// + public const byte Plugins = 204; + + /// (202) Used by the server in Operation Responses, when it sends the nickname of the client (the user's nickname). + public const byte NickName = 202; + + /// (201) Informs user about name of plugin load to game + public const byte PluginName = 201; + + /// (200) Informs user about version of plugin load to game + public const byte PluginVersion = 200; + + /// (196) Cluster info provided in OpAuthenticate/OpAuthenticateOnce responses. + public const byte Cluster = 196; + + /// (195) Protocol which will be used by client to connect master/game servers. Used for nameserver. + public const byte ExpectedProtocol = 195; + + /// (194) Set of custom parameters which are sent in auth request. + public const byte CustomInitData = 194; + + /// (193) How are we going to encrypt data. + public const byte EncryptionMode = 193; + + /// (192) Parameter of Authentication, which contains encryption keys (depends on AuthMode and EncryptionMode). + public const byte EncryptionData = 192; + + /// (191) An int parameter summarizing several boolean room-options with bit-flags. + public const byte RoomOptionFlags = 191; + } + + + /// + /// Class for constants. Contains operation codes. + /// + /// These constants are used internally. + public class OperationCode + { + [Obsolete("Exchanging encrpytion keys is done internally in the lib now. Don't expect this operation-result.")] + public const byte ExchangeKeysForEncryption = 250; + + /// (255) Code for OpJoin, to get into a room. + [Obsolete] + public const byte Join = 255; + + /// (231) Authenticates this peer and connects to a virtual application + public const byte AuthenticateOnce = 231; + + /// (230) Authenticates this peer and connects to a virtual application + public const byte Authenticate = 230; + + /// (229) Joins lobby (on master) + public const byte JoinLobby = 229; + + /// (228) Leaves lobby (on master) + public const byte LeaveLobby = 228; + + /// (227) Creates a game (or fails if name exists) + public const byte CreateGame = 227; + + /// (226) Join game (by name) + public const byte JoinGame = 226; + + /// (225) Joins random game (on master) + public const byte JoinRandomGame = 225; + + // public const byte CancelJoinRandom = 224; // obsolete, cause JoinRandom no longer is a "process". now provides result immediately + + /// (254) Code for OpLeave, to get out of a room. + public const byte Leave = (byte)254; + + /// (253) Raise event (in a room, for other actors/players) + public const byte RaiseEvent = (byte)253; + + /// (252) Set Properties (of room or actor/player) + public const byte SetProperties = (byte)252; + + /// (251) Get Properties + public const byte GetProperties = (byte)251; + + /// (248) Operation code to change interest groups in Rooms (Lite application and extending ones). + public const byte ChangeGroups = (byte)248; + + /// (222) Request the rooms and online status for a list of friends (by name, which should be unique). + public const byte FindFriends = 222; + + /// (221) Request statistics about a specific list of lobbies (their user and game count). + public const byte GetLobbyStats = 221; + + /// (220) Get list of regional servers from a NameServer. + public const byte GetRegions = 220; + + /// (219) WebRpc Operation. + public const byte WebRpc = 219; + + /// (218) Operation to set some server settings. Used with different parameters on various servers. + public const byte ServerSettings = 218; + + /// (217) Get the game list matching a supplied sql filter (SqlListLobby only) + public const byte GetGameList = 217; + } + + /// Defines possible values for OpJoinRoom and OpJoinOrCreate. It tells the server if the room can be only be joined normally, created implicitly or found on a web-service for Turnbased games. + /// These values are not directly used by a game but implicitly set. + public enum JoinMode : byte + { + /// Regular join. The room must exist. + Default = 0, + + /// Join or create the room if it's not existing. Used for OpJoinOrCreate for example. + CreateIfNotExists = 1, + + /// The room might be out of memory and should be loaded (if possible) from a Turnbased web-service. + JoinOrRejoin = 2, + + /// Only re-join will be allowed. If the user is not yet in the room, this will fail. + RejoinOnly = 3, + } + + /// + /// Options for matchmaking rules for OpJoinRandom. + /// + public enum MatchmakingMode : byte + { + /// Fills up rooms (oldest first) to get players together as fast as possible. Default. + /// Makes most sense with MaxPlayers > 0 and games that can only start with more players. + FillRoom = 0, + + /// Distributes players across available rooms sequentially but takes filter into account. Without filter, rooms get players evenly distributed. + SerialMatching = 1, + + /// Joins a (fully) random room. Expected properties must match but aside from this, any available room might be selected. + RandomMatching = 2 + } + + + /// + /// Lite - OpRaiseEvent lets you chose which actors in the room should receive events. + /// By default, events are sent to "Others" but you can overrule this. + /// + public enum ReceiverGroup : byte + { + /// Default value (not sent). Anyone else gets my event. + Others = 0, + + /// Everyone in the current room (including this peer) will get this event. + All = 1, + + /// The server sends this event only to the actor with the lowest actorNumber. + /// The "master client" does not have special rights but is the one who is in this room the longest time. + MasterClient = 2, + } + + /// + /// Lite - OpRaiseEvent allows you to cache events and automatically send them to joining players in a room. + /// Events are cached per event code and player: Event 100 (example!) can be stored once per player. + /// Cached events can be modified, replaced and removed. + /// + /// + /// Caching works only combination with ReceiverGroup options Others and All. + /// + public enum EventCaching : byte + { + /// Default value (not sent). + DoNotCache = 0, + + /// Will merge this event's keys with those already cached. + [Obsolete] + MergeCache = 1, + + /// Replaces the event cache for this eventCode with this event's content. + [Obsolete] + ReplaceCache = 2, + + /// Removes this event (by eventCode) from the cache. + [Obsolete] + RemoveCache = 3, + + /// Adds an event to the room's cache + AddToRoomCache = 4, + + /// Adds this event to the cache for actor 0 (becoming a "globally owned" event in the cache). + AddToRoomCacheGlobal = 5, + + /// Remove fitting event from the room's cache. + RemoveFromRoomCache = 6, + + /// Removes events of players who already left the room (cleaning up). + RemoveFromRoomCacheForActorsLeft = 7, + + /// Increase the index of the sliced cache. + SliceIncreaseIndex = 10, + + /// Set the index of the sliced cache. You must set RaiseEventOptions.CacheSliceIndex for this. + SliceSetIndex = 11, + + /// Purge cache slice with index. Exactly one slice is removed from cache. You must set RaiseEventOptions.CacheSliceIndex for this. + SlicePurgeIndex = 12, + + /// Purge cache slices with specified index and anything lower than that. You must set RaiseEventOptions.CacheSliceIndex for this. + SlicePurgeUpToIndex = 13, + } + + /// + /// Flags for "types of properties", being used as filter in OpGetProperties. + /// + [Flags] + public enum PropertyTypeFlag : byte + { + /// (0x00) Flag type for no property type. + None = 0x00, + + /// (0x01) Flag type for game-attached properties. + Game = 0x01, + + /// (0x02) Flag type for actor related propeties. + Actor = 0x02, + + /// (0x01) Flag type for game AND actor properties. Equal to 'Game' + GameAndActor = Game | Actor + } + + + /// Wraps up common room properties needed when you create rooms. Read the individual entries for more details. + /// This directly maps to the fields in the Room class. + public class RoomOptions + { + /// Defines if this room is listed in the lobby. If not, it also is not joined randomly. + /// + /// A room that is not visible will be excluded from the room lists that are sent to the clients in lobbies. + /// An invisible room can be joined by name but is excluded from random matchmaking. + /// + /// Use this to "hide" a room and simulate "private rooms". Players can exchange a roomname and create it + /// invisble to avoid anyone else joining it. + /// + public bool IsVisible { get { return this.isVisible; } set { this.isVisible = value; } } + private bool isVisible = true; + + /// Defines if this room can be joined at all. + /// + /// If a room is closed, no player can join this. As example this makes sense when 3 of 4 possible players + /// start their gameplay early and don't want anyone to join during the game. + /// The room can still be listed in the lobby (set isVisible to control lobby-visibility). + /// + public bool IsOpen { get { return this.isOpen; } set { this.isOpen = value; } } + private bool isOpen = true; + + /// Max number of players that can be in the room at any time. 0 means "no limit". + public byte MaxPlayers; + + /// Time To Live (TTL) for an 'actor' in a room. If a client disconnects, this actor is inactive first and removed after this timeout. In milliseconds. + public int PlayerTtl; + + /// Time To Live (TTL) for a room when the last player leaves. Keeps room in memory for case a player re-joins soon. In milliseconds. + public int EmptyRoomTtl; + + /// Removes a user's events and properties from the room when a user leaves. + /// + /// This makes sense when in rooms where players can't place items in the room and just vanish entirely. + /// When you disable this, the event history can become too long to load if the room stays in use indefinitely. + /// Default: true. Cleans up the cache and props of leaving users. + /// + public bool CleanupCacheOnLeave { get { return this.cleanupCacheOnLeave; } set { this.cleanupCacheOnLeave = value; } } + private bool cleanupCacheOnLeave = true; + + /// The room's custom properties to set. Use string keys! + /// + /// Custom room properties are any key-values you need to define the game's setup. + /// The shorter your keys are, the better. + /// Example: Map, Mode (could be "m" when used with "Map"), TileSet (could be "t"). + /// + public Hashtable CustomRoomProperties; + + /// Defines the custom room properties that get listed in the lobby. + /// + /// Name the custom room properties that should be available to clients that are in a lobby. + /// Use with care. Unless a custom property is essential for matchmaking or user info, it should + /// not be sent to the lobby, which causes traffic and delays for clients in the lobby. + /// + /// Default: No custom properties are sent to the lobby. + /// + public string[] CustomRoomPropertiesForLobby = new string[0]; + + /// Informs the server of the expected plugin setup. + /// + /// The operation will fail in case of a plugin missmatch returning error code PluginMismatch 32757(0x7FFF - 10). + /// Setting string[]{} means the client expects no plugin to be setup. + /// Note: for backwards compatibility null omits any check. + /// + public string[] Plugins; + + /// + /// Tells the server to skip room events for joining and leaving players. + /// + /// + /// Using this makes the client unaware of the other players in a room. + /// That can save some traffic if you have some server logic that updates players + /// but it can also limit the client's usability. + /// + public bool SuppressRoomEvents { get; set; } + + /// Disables events join and leave from the server as well as property broadcasts in a room (to minimize traffic) + public bool SuppressPlayerInfo { get; set; } + + /// + /// Defines if the UserIds of players get "published" in the room. Useful for FindFriends, if players want to play another game together. + /// + /// + /// When you set this to true, Photon will publish the UserIds of the players in that room. + /// In that case, you can use PhotonPlayer.userId, to access any player's userID. + /// This is useful for FindFriends and to set "expected users" to reserve slots in a room. + /// + public bool PublishUserId { get; set; } + + /// Optionally, properties get deleted, when null gets assigned as value. Defaults to off / false. + /// + /// When Op SetProperties is setting a key's value to null, the server and clients should remove the key/value from the Custom Properties. + /// By default, the server keeps the keys (and null values) and sends them to joining players. + /// + /// Important: Only when SetProperties does a "broadcast", the change (key, value = null) is sent to clients to update accordingly. + /// This applies to Custom Properties for rooms and actors/players. + /// + public bool DeleteNullProperties { get; set; } + + /// By default, property changes are sent back to the client that's setting them to avoid de-sync when properties are set concurrently. + /// + /// This option is enables by default to fix this scenario: + /// + /// 1) On server, room property ABC is set to value FOO, which triggers notifications to all the clients telling them that the property changed. + /// 2) While that notification is in flight, a client sets the ABC property to value BAR. + /// 3) Client receives notification from the server and changes it�s local copy of ABC to FOO. + /// 4) Server receives the set operation and changes the official value of ABC to BAR, but never notifies the client that sent the set operation that the value is now BAR. + /// + /// Without this option, the client that set the value to BAR never hears from the server that the official copy has been updated to BAR, and thus gets stuck with a value of FOO. + /// + public bool BroadcastPropsChangeToAll { get { return this.broadcastPropsChangeToAll; } set { this.broadcastPropsChangeToAll = value; } } + private bool broadcastPropsChangeToAll = true; + + #if SERVERSDK + public bool CheckUserOnJoin { get; set; } + #endif + } + + + /// Aggregates several less-often used options for operation RaiseEvent. See field descriptions for usage details. + public class RaiseEventOptions + { + /// Default options: CachingOption: DoNotCache, InterestGroup: 0, targetActors: null, receivers: Others, sequenceChannel: 0. + public readonly static RaiseEventOptions Default = new RaiseEventOptions(); + + /// Defines if the server should simply send the event, put it in the cache or remove events that are like this one. + /// + /// When using option: SliceSetIndex, SlicePurgeIndex or SlicePurgeUpToIndex, set a CacheSliceIndex. All other options except SequenceChannel get ignored. + /// + public EventCaching CachingOption; + + /// The number of the Interest Group to send this to. 0 goes to all users but to get 1 and up, clients must subscribe to the group first. + public byte InterestGroup; + + /// A list of Player.ActorNumbers to send this event to. You can implement events that just go to specific users this way. + public int[] TargetActors; + + /// Sends the event to All, MasterClient or Others (default). Be careful with MasterClient, as the client might disconnect before it got the event and it gets lost. + public ReceiverGroup Receivers; + + /// Events are ordered per "channel". If you have events that are independent of others, they can go into another sequence or channel. + [Obsolete("Not used where SendOptions are a parameter too. Use SendOptions.Channel instead.")] + public byte SequenceChannel; + + /// Optional flags to be used in Photon client SDKs with Op RaiseEvent and Op SetProperties. + /// Introduced mainly for webhooks 1.2 to control behavior of forwarded HTTP requests. + public WebFlags Flags = WebFlags.Default; + + ///// Used along with CachingOption SliceSetIndex, SlicePurgeIndex or SlicePurgeUpToIndex if you want to set or purge a specific cache-slice. + //public int CacheSliceIndex; + } + + /// Types of lobbies define their behaviour and capabilities. Check each value for details. + /// Values of this enum must be matched by the server. + public enum LobbyType :byte + { + /// Standard type and behaviour: While joined to this lobby clients get room-lists and JoinRandomRoom can use a simple filter to match properties (perfectly). + Default = 0, + /// This lobby type lists rooms like Default but JoinRandom has a parameter for SQL-like "where" clauses for filtering. This allows bigger, less, or and and combinations. + SqlLobby = 2, + /// This lobby does not send lists of games. It is only used for OpJoinRandomRoom. It keeps rooms available for a while when there are only inactive users left. + AsyncRandomLobby = 3 + } + + /// Refers to a specific lobby on the server. + /// + /// Name and Type combined are the unique identifier for a lobby.
    + /// The server will create lobbies "on demand", so no registration or setup is required.
    + /// An empty or null Name always points to the "default lobby" as special case. + ///
    + public class TypedLobby + { + /// + /// Name of the lobby. Default: null, pointing to the "default lobby". + /// + /// + /// If Name is null or empty, a TypedLobby will point to the "default lobby". This ignores the Type value and always acts as . + /// + public string Name; + + /// + /// Type (and behaviour) of the lobby. + /// + /// + /// An empty or null Name always points to the "default lobby" as special case. + /// + public LobbyType Type; + + /// + /// A reference to the default lobby which is the unique lobby that uses null as name and is of type . + /// + /// + /// There is only a single lobby with an empty name on the server. It is always of type .
    + /// On the other hand, this is a shortcut and reusable reference to the default lobby.
    + /// Do not change Name or Type.
    + ///
    + public static readonly TypedLobby Default = new TypedLobby(); + + /// + /// Returns whether or not this instance points to the "default lobby" (). + /// + /// + /// This comes up to checking if the Name is null or empty. + /// is not the same thing as the "default lobby" (). + /// + public bool IsDefault { get { return string.IsNullOrEmpty(this.Name); } } + + + /// + /// Creates a TypedLobby instance. Unless Name is changed, this points to the "default lobby" (). + /// + internal TypedLobby() + { + } + + /// + /// Sets Name and Type of the new instance. Make sure name is not empty or null, as that always points to the "default lobby" (). + /// + /// Some string to identify a lobby. + /// The type of a lobby defines it's capabilities and behaviour. + public TypedLobby(string name, LobbyType type) + { + this.Name = name; + this.Type = type; + } + + public override string ToString() + { + return string.Format("lobby '{0}'[{1}]", this.Name, this.Type); + } + } + + + /// + /// Info for a lobby on the server. Used when is true. + /// + public class TypedLobbyInfo : TypedLobby + { + /// Count of players that currently joined this lobby. + public int PlayerCount; + + /// Count of rooms currently associated with this lobby. + public int RoomCount; + + public override string ToString() + { + return string.Format("TypedLobbyInfo '{0}'[{1}] rooms: {2} players: {3}", this.Name, this.Type, this.RoomCount, this.PlayerCount); + } + } + + + /// + /// Options for authentication modes. From "classic" auth on each server to AuthOnce (on NameServer). + /// + public enum AuthModeOption { Auth, AuthOnce, AuthOnceWss } + + + /// + /// Options for optional "Custom Authentication" services used with Photon. Used by OpAuthenticate after connecting to Photon. + /// + public enum CustomAuthenticationType : byte + { + /// Use a custom authentication service. Currently the only implemented option. + Custom = 0, + + /// Authenticates users by their Steam Account. Set Steam's ticket as "ticket" via AddAuthParameter(). + Steam = 1, + + /// Authenticates users by their Facebook Account. Set Facebooks's tocken as "token" via AddAuthParameter(). + Facebook = 2, + + /// Authenticates users by their Oculus Account and token. Set Oculus' userid as "userid" and nonce as "nonce" via AddAuthParameter(). + Oculus = 3, + + /// Authenticates users by their PSN Account and token on PS4. Set token as "token", env as "env" and userName as "userName" via AddAuthParameter(). + PlayStation4 = 4, + [Obsolete("Use PlayStation4 or PlayStation5 as needed")] + PlayStation = 4, + + /// Authenticates users by their Xbox Account. Pass the XSTS token via SetAuthPostData(). + Xbox = 5, + + /// Authenticates users by their HTC Viveport Account. Set userToken as "userToken" via AddAuthParameter(). + Viveport = 10, + + /// Authenticates users by their NSA ID. Set token as "token" and appversion as "appversion" via AddAuthParameter(). The appversion is optional. + NintendoSwitch = 11, + + /// Authenticates users by their PSN Account and token on PS5. Set token as "token", env as "env" and userName as "userName" via AddAuthParameter(). + PlayStation5 = 12, + [Obsolete("Use PlayStation4 or PlayStation5 as needed")] + Playstation5 = 12, + + /// Authenticates users with Epic Online Services (EOS). Set token as "token" and ownershipToken as "ownershipToken" via AddAuthParameter(). The ownershipToken is optional. + Epic = 13, + + /// Authenticates users with Facebook Gaming api. Set token as "token" via AddAuthParameter(). + FacebookGaming = 15, + + /// Disables custom authentication. Same as not providing any AuthenticationValues for connect (more precisely for: OpAuthenticate). + None = byte.MaxValue + } + + + /// + /// Container for user authentication in Photon. Set AuthValues before you connect - all else is handled. + /// + /// + /// On Photon, user authentication is optional but can be useful in many cases. + /// If you want to FindFriends, a unique ID per user is very practical. + /// + /// There are basically three options for user authentication: None at all, the client sets some UserId + /// or you can use some account web-service to authenticate a user (and set the UserId server-side). + /// + /// Custom Authentication lets you verify end-users by some kind of login or token. It sends those + /// values to Photon which will verify them before granting access or disconnecting the client. + /// + /// The AuthValues are sent in OpAuthenticate when you connect, so they must be set before you connect. + /// If the AuthValues.UserId is null or empty when it's sent to the server, then the Photon Server assigns a UserId! + /// + /// The Photon Cloud Dashboard will let you enable this feature and set important server values for it. + /// https://dashboard.photonengine.com + /// + public class AuthenticationValues + { + /// See AuthType. + private CustomAuthenticationType authType = CustomAuthenticationType.None; + + /// The type of authentication provider that should be used. Defaults to None (no auth whatsoever). + /// Several auth providers are available and CustomAuthenticationType.Custom can be used if you build your own service. + public CustomAuthenticationType AuthType + { + get { return authType; } + set { authType = value; } + } + + /// This string must contain any (http get) parameters expected by the used authentication service. By default, username and token. + /// + /// Maps to operation parameter 216. + /// Standard http get parameters are used here and passed on to the service that's defined in the server (Photon Cloud Dashboard). + /// + public string AuthGetParameters { get; set; } + + /// Data to be passed-on to the auth service via POST. Default: null (not sent). Either string or byte[] (see setters). + /// Maps to operation parameter 214. + public object AuthPostData { get; private set; } + + /// Internal Photon token. After initial authentication, Photon provides a token for this client, subsequently used as (cached) validation. + /// Any token for custom authentication should be set via SetAuthPostData or AddAuthParameter. + public object Token { get; protected internal set; } + + /// The UserId should be a unique identifier per user. This is for finding friends, etc.. + /// See remarks of AuthValues for info about how this is set and used. + public string UserId { get; set; } + + + /// Creates empty auth values without any info. + public AuthenticationValues() + { + } + + /// Creates minimal info about the user. If this is authenticated or not, depends on the set AuthType. + /// Some UserId to set in Photon. + public AuthenticationValues(string userId) + { + this.UserId = userId; + } + + /// Sets the data to be passed-on to the auth service via POST. + /// AuthPostData is just one value. Each SetAuthPostData replaces any previous value. It can be either a string, a byte[] or a dictionary. + /// String data to be used in the body of the POST request. Null or empty string will set AuthPostData to null. + public virtual void SetAuthPostData(string stringData) + { + this.AuthPostData = (string.IsNullOrEmpty(stringData)) ? null : stringData; + } + + /// Sets the data to be passed-on to the auth service via POST. + /// AuthPostData is just one value. Each SetAuthPostData replaces any previous value. It can be either a string, a byte[] or a dictionary. + /// Binary token / auth-data to pass on. + public virtual void SetAuthPostData(byte[] byteData) + { + this.AuthPostData = byteData; + } + + /// Sets data to be passed-on to the auth service as Json (Content-Type: "application/json") via Post. + /// AuthPostData is just one value. Each SetAuthPostData replaces any previous value. It can be either a string, a byte[] or a dictionary. + /// A authentication-data dictionary will be converted to Json and passed to the Auth webservice via HTTP Post. + public virtual void SetAuthPostData(Dictionary dictData) + { + this.AuthPostData = dictData; + } + + /// Adds a key-value pair to the get-parameters used for Custom Auth (AuthGetParameters). + /// This method does uri-encoding for you. + /// Key for the value to set. + /// Some value relevant for Custom Authentication. + public virtual void AddAuthParameter(string key, string value) + { + string ampersand = string.IsNullOrEmpty(this.AuthGetParameters) ? "" : "&"; + this.AuthGetParameters = string.Format("{0}{1}{2}={3}", this.AuthGetParameters, ampersand, System.Uri.EscapeDataString(key), System.Uri.EscapeDataString(value)); + } + + /// + /// Transform this object into string. + /// + /// String info about this object's values. + public override string ToString() + { + return string.Format("AuthenticationValues = AuthType: {0} UserId: {1}{2}{3}{4}", + this.AuthType, + this.UserId, + string.IsNullOrEmpty(this.AuthGetParameters) ? " GetParameters: yes" : "", + this.AuthPostData == null ? "" : " PostData: yes", + this.Token == null ? "" : " Token: yes"); + } + + /// + /// Make a copy of the current object. + /// + /// The object to be copied into. + /// The copied object. + public AuthenticationValues CopyTo(AuthenticationValues copy) + { + copy.AuthType = this.AuthType; + copy.AuthGetParameters = this.AuthGetParameters; + copy.AuthPostData = this.AuthPostData; + copy.UserId = this.UserId; + return copy; + } + } +} diff --git a/Assets/Photon/PhotonRealtime/Code/LoadbalancingPeer.cs.meta b/Assets/Photon/PhotonRealtime/Code/LoadbalancingPeer.cs.meta new file mode 100644 index 00000000..989f399e --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/LoadbalancingPeer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 35c989013c977244186e524a4c90dcee +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonRealtime/Code/PhotonPing.cs b/Assets/Photon/PhotonRealtime/Code/PhotonPing.cs new file mode 100644 index 00000000..5ac5c879 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/PhotonPing.cs @@ -0,0 +1,481 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// This file includes various PhotonPing implementations for different APIs, +// platforms and protocols. +// The RegionPinger class is the instance which selects the Ping implementation +// to use. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Realtime +{ + using System; + using System.Collections; + using System.Threading; + + #if NETFX_CORE + using System.Diagnostics; + using Windows.Foundation; + using Windows.Networking; + using Windows.Networking.Sockets; + using Windows.Storage.Streams; + #endif + + #if !NO_SOCKET && !NETFX_CORE + using System.Collections.Generic; + using System.Diagnostics; + using System.Net.Sockets; + #endif + + #if UNITY_WEBGL + // import UnityWebRequest + using UnityEngine.Networking; + #endif + + /// + /// Abstract implementation of PhotonPing, ase for pinging servers to find the "Best Region". + /// + public abstract class PhotonPing : IDisposable + { + public string DebugString = ""; + + public bool Successful; + + protected internal bool GotResult; + + protected internal int PingLength = 13; + + protected internal byte[] PingBytes = new byte[] { 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x00 }; + + protected internal byte PingId; + + private static readonly System.Random RandomIdProvider = new System.Random(); + + public virtual bool StartPing(string ip) + { + throw new NotImplementedException(); + } + + public virtual bool Done() + { + throw new NotImplementedException(); + } + + public virtual void Dispose() + { + throw new NotImplementedException(); + } + + protected internal void Init() + { + this.GotResult = false; + this.Successful = false; + this.PingId = (byte)(RandomIdProvider.Next(255)); + } + } + + + #if !NETFX_CORE && !NO_SOCKET + /// Uses C# Socket class from System.Net.Sockets (as Unity usually does). + /// Incompatible with Windows 8 Store/Phone API. + public class PingMono : PhotonPing + { + private Socket sock; + + /// + /// Sends a "Photon Ping" to a server. + /// + /// Address in IPv4 or IPv6 format. An address containing a '.' will be interpreted as IPv4. + /// True if the Photon Ping could be sent. + public override bool StartPing(string ip) + { + this.Init(); + + try + { + if (this.sock == null) + { + if (ip.Contains(".")) + { + this.sock = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); + } + else + { + this.sock = new Socket(AddressFamily.InterNetworkV6, SocketType.Dgram, ProtocolType.Udp); + } + + this.sock.ReceiveTimeout = 5000; + int port = (RegionHandler.PortToPingOverride != 0) ? RegionHandler.PortToPingOverride : 5055; + this.sock.Connect(ip, port); + } + + + this.PingBytes[this.PingBytes.Length - 1] = this.PingId; + this.sock.Send(this.PingBytes); + this.PingBytes[this.PingBytes.Length - 1] = (byte)(this.PingId+1); // this buffer is re-used for the result/receive. invalidate the result now. + } + catch (Exception e) + { + this.sock = null; + Console.WriteLine(e); + } + + return false; + } + + public override bool Done() + { + if (this.GotResult || this.sock == null) + { + return true; // this just indicates the ping is no longer waiting. this.Successful value defines if the roundtrip completed + } + + int read = 0; + try + { + if (!this.sock.Poll(0, SelectMode.SelectRead)) + { + return false; + } + + read = this.sock.Receive(this.PingBytes, SocketFlags.None); + } + catch (Exception ex) + { + if (this.sock != null) + { + this.sock.Close(); + this.sock = null; + } + this.DebugString += " Exception of socket! " + ex.GetType() + " "; + return true; // this just indicates the ping is no longer waiting. this.Successful value defines if the roundtrip completed + } + + bool replyMatch = this.PingBytes[this.PingBytes.Length - 1] == this.PingId && read == this.PingLength; + if (!replyMatch) + { + this.DebugString += " ReplyMatch is false! "; + } + + + this.Successful = replyMatch; + this.GotResult = true; + return true; + } + + public override void Dispose() + { + try + { + this.sock.Close(); + } + catch + { + } + + this.sock = null; + } + + } + #endif + + + #if NETFX_CORE + /// Windows store API implementation of PhotonPing, based on DatagramSocket for UDP. + public class PingWindowsStore : PhotonPing + { + private DatagramSocket sock; + private readonly object syncer = new object(); + + public override bool StartPing(string host) + { + lock (this.syncer) + { + this.Init(); + + int port = (RegionHandler.PortToPingOverride != 0) ? RegionHandler.PortToPingOverride : 5055; + EndpointPair endPoint = new EndpointPair(null, string.Empty, new HostName(host), port.ToString()); + this.sock = new DatagramSocket(); + this.sock.MessageReceived += this.OnMessageReceived; + + IAsyncAction result = this.sock.ConnectAsync(endPoint); + result.Completed = this.OnConnected; + this.DebugString += " End StartPing"; + return true; + } + } + + public override bool Done() + { + lock (this.syncer) + { + return this.GotResult || this.sock == null; // this just indicates the ping is no longer waiting. this.Successful value defines if the roundtrip completed + } + } + + public override void Dispose() + { + lock (this.syncer) + { + this.sock = null; + } + } + + private void OnConnected(IAsyncAction asyncinfo, AsyncStatus asyncstatus) + { + lock (this.syncer) + { + if (asyncinfo.AsTask().IsCompleted && !asyncinfo.AsTask().IsFaulted && this.sock != null && this.sock.Information.RemoteAddress != null) + { + this.PingBytes[this.PingBytes.Length - 1] = this.PingId; + + DataWriter writer; + writer = new DataWriter(this.sock.OutputStream); + writer.WriteBytes(this.PingBytes); + DataWriterStoreOperation res = writer.StoreAsync(); + res.AsTask().Wait(100); + + this.PingBytes[this.PingBytes.Length - 1] = (byte)(this.PingId + 1); // this buffer is re-used for the result/receive. invalidate the result now. + + writer.DetachStream(); + writer.Dispose(); + } + else + { + this.sock = null; // will cause Done() to return true but this.Successful defines if the roundtrip completed + } + } + } + + private void OnMessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args) + { + lock (this.syncer) + { + DataReader reader = null; + try + { + reader = args.GetDataReader(); + uint receivedByteCount = reader.UnconsumedBufferLength; + if (receivedByteCount > 0) + { + byte[] resultBytes = new byte[receivedByteCount]; + reader.ReadBytes(resultBytes); + + //TODO: check result bytes! + + + this.Successful = receivedByteCount == this.PingLength && resultBytes[resultBytes.Length - 1] == this.PingId; + this.GotResult = true; + } + } + catch + { + // TODO: handle error + } + } + } + } + #endif + + + #if NATIVE_SOCKETS + /// Abstract base class to provide proper resource management for the below native ping implementations + public abstract class PingNative : PhotonPing + { + // Native socket states - according to EnetConnect.h state definitions + protected enum NativeSocketState : byte + { + Disconnected = 0, + Connecting = 1, + Connected = 2, + ConnectionError = 3, + SendError = 4, + ReceiveError = 5, + Disconnecting = 6 + } + + protected IntPtr pConnectionHandler = IntPtr.Zero; + + ~PingNative() + { + Dispose(); + } + } + + /// Uses dynamic linked native Photon socket library via DllImport("PhotonSocketPlugin") attribute (as done by Unity Android and Unity PS3). + public class PingNativeDynamic : PingNative + { + public override bool StartPing(string ip) + { + lock (SocketUdpNativeDynamic.syncer) + { + base.Init(); + + if(pConnectionHandler == IntPtr.Zero) + { + pConnectionHandler = SocketUdpNativeDynamic.egconnect(ip); + SocketUdpNativeDynamic.egservice(pConnectionHandler); + byte state = SocketUdpNativeDynamic.eggetState(pConnectionHandler); + while (state == (byte) NativeSocketState.Connecting) + { + SocketUdpNativeDynamic.egservice(pConnectionHandler); + state = SocketUdpNativeDynamic.eggetState(pConnectionHandler); + } + } + + PingBytes[PingBytes.Length - 1] = PingId; + SocketUdpNativeDynamic.egsend(pConnectionHandler, PingBytes, PingBytes.Length); + SocketUdpNativeDynamic.egservice(pConnectionHandler); + + PingBytes[PingBytes.Length - 1] = (byte) (PingId - 1); + return true; + } + } + + public override bool Done() + { + lock (SocketUdpNativeDynamic.syncer) + { + if (this.GotResult || pConnectionHandler == IntPtr.Zero) + { + return true; + } + + int available = SocketUdpNativeDynamic.egservice(pConnectionHandler); + if (available < PingLength) + { + return false; + } + + int pingBytesLength = PingBytes.Length; + int bytesInRemainginDatagrams = SocketUdpNativeDynamic.egread(pConnectionHandler, PingBytes, ref pingBytesLength); + this.Successful = (PingBytes != null && PingBytes[PingBytes.Length - 1] == PingId); + //Debug.Log("Successful: " + this.Successful + " bytesInRemainginDatagrams: " + bytesInRemainginDatagrams + " PingId: " + PingId); + + this.GotResult = true; + return true; + } + } + + public override void Dispose() + { + lock (SocketUdpNativeDynamic.syncer) + { + if (this.pConnectionHandler != IntPtr.Zero) + SocketUdpNativeDynamic.egdisconnect(this.pConnectionHandler); + this.pConnectionHandler = IntPtr.Zero; + } + GC.SuppressFinalize(this); + } + } + + #if NATIVE_SOCKETS && NATIVE_SOCKETS_STATIC + /// Uses static linked native Photon socket library via DllImport("__Internal") attribute (as done by Unity iOS and Unity Switch). + public class PingNativeStatic : PingNative + { + public override bool StartPing(string ip) + { + base.Init(); + + lock (SocketUdpNativeStatic.syncer) + { + if(pConnectionHandler == IntPtr.Zero) + { + pConnectionHandler = SocketUdpNativeStatic.egconnect(ip); + SocketUdpNativeStatic.egservice(pConnectionHandler); + byte state = SocketUdpNativeStatic.eggetState(pConnectionHandler); + while (state == (byte) NativeSocketState.Connecting) + { + SocketUdpNativeStatic.egservice(pConnectionHandler); + state = SocketUdpNativeStatic.eggetState(pConnectionHandler); + Thread.Sleep(0); // suspending execution for a moment is critical on Switch for the OS to update the socket + } + } + + PingBytes[PingBytes.Length - 1] = PingId; + SocketUdpNativeStatic.egsend(pConnectionHandler, PingBytes, PingBytes.Length); + SocketUdpNativeStatic.egservice(pConnectionHandler); + + PingBytes[PingBytes.Length - 1] = (byte) (PingId - 1); + return true; + } + } + + public override bool Done() + { + lock (SocketUdpNativeStatic.syncer) + { + if (this.GotResult || pConnectionHandler == IntPtr.Zero) + { + return true; + } + + int available = SocketUdpNativeStatic.egservice(pConnectionHandler); + if (available < PingLength) + { + return false; + } + + int pingBytesLength = PingBytes.Length; + int bytesInRemainginDatagrams = SocketUdpNativeStatic.egread(pConnectionHandler, PingBytes, ref pingBytesLength); + this.Successful = (PingBytes != null && PingBytes[PingBytes.Length - 1] == PingId); + //Debug.Log("Successful: " + this.Successful + " bytesInRemainginDatagrams: " + bytesInRemainginDatagrams + " PingId: " + PingId); + + this.GotResult = true; + return true; + } + } + + public override void Dispose() + { + lock (SocketUdpNativeStatic.syncer) + { + if (pConnectionHandler != IntPtr.Zero) + SocketUdpNativeStatic.egdisconnect(pConnectionHandler); + pConnectionHandler = IntPtr.Zero; + } + GC.SuppressFinalize(this); + } + } + #endif + #endif + + + #if UNITY_WEBGL + public class PingHttp : PhotonPing + { + private UnityWebRequest webRequest; + + public override bool StartPing(string address) + { + base.Init(); + + address = "https://" + address + "/photon/m/?ping&r=" + UnityEngine.Random.Range(0, 10000); + this.webRequest = UnityWebRequest.Get(address); + this.webRequest.SendWebRequest(); + return true; + } + + public override bool Done() + { + if (this.webRequest.isDone) + { + Successful = true; + return true; + } + + return false; + } + + public override void Dispose() + { + this.webRequest.Dispose(); + } + } + #endif +} \ No newline at end of file diff --git a/Assets/Photon/PhotonRealtime/Code/PhotonPing.cs.meta b/Assets/Photon/PhotonRealtime/Code/PhotonPing.cs.meta new file mode 100644 index 00000000..060b0063 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/PhotonPing.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 5a2f6055139b44142954461627d344bc +timeCreated: 1524653911 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonRealtime/Code/PhotonPingClasses.cs b/Assets/Photon/PhotonRealtime/Code/PhotonPingClasses.cs new file mode 100644 index 00000000..70f03374 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/PhotonPingClasses.cs @@ -0,0 +1 @@ +// this file is no longer used. it can be deleted safely. \ No newline at end of file diff --git a/Assets/Photon/PhotonRealtime/Code/PhotonPingClasses.cs.meta b/Assets/Photon/PhotonRealtime/Code/PhotonPingClasses.cs.meta new file mode 100644 index 00000000..a60b48a6 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/PhotonPingClasses.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: d93148764d7961d4a8b8112bd166cf35 +timeCreated: 1494420905 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonRealtime/Code/PhotonRealtime.asmdef b/Assets/Photon/PhotonRealtime/Code/PhotonRealtime.asmdef new file mode 100644 index 00000000..b472f01b --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/PhotonRealtime.asmdef @@ -0,0 +1,6 @@ +{ + "name": "PhotonRealtime", + "references": [], + "includePlatforms": [], + "excludePlatforms": [] +} \ No newline at end of file diff --git a/Assets/Photon/PhotonRealtime/Code/PhotonRealtime.asmdef.meta b/Assets/Photon/PhotonRealtime/Code/PhotonRealtime.asmdef.meta new file mode 100644 index 00000000..dff23ae8 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/PhotonRealtime.asmdef.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 831409e8f9d13b5479a3baef9822ad34 +timeCreated: 1537459565 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonRealtime/Code/Player.cs b/Assets/Photon/PhotonRealtime/Code/Player.cs new file mode 100644 index 00000000..40588890 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/Player.cs @@ -0,0 +1,452 @@ +// ---------------------------------------------------------------------------- +// +// Loadbalancing Framework for Photon - Copyright (C) 2018 Exit Games GmbH +// +// +// Per client in a room, a Player is created. This client's Player is also +// known as PhotonClient.LocalPlayer and the only one you might change +// properties for. +// +// developer@photonengine.com +// ---------------------------------------------------------------------------- + +#if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER +#define SUPPORTED_UNITY +#endif + + +namespace Photon.Realtime +{ + using System; + using System.Collections; + using System.Collections.Generic; + using ExitGames.Client.Photon; + + #if SUPPORTED_UNITY + using UnityEngine; + #endif + #if SUPPORTED_UNITY || NETFX_CORE + using Hashtable = ExitGames.Client.Photon.Hashtable; + using SupportClass = ExitGames.Client.Photon.SupportClass; + #endif + + + /// + /// Summarizes a "player" within a room, identified (in that room) by ID (or "actorNumber"). + /// + /// + /// Each player has a actorNumber, valid for that room. It's -1 until assigned by server (and client logic). + /// + public class Player + { + /// + /// Used internally to identify the masterclient of a room. + /// + protected internal Room RoomReference { get; set; } + + + /// Backing field for property. + private int actorNumber = -1; + + /// Identifier of this player in current room. Also known as: actorNumber or actorNumber. It's -1 outside of rooms. + /// The ID is assigned per room and only valid in that context. It will change even on leave and re-join. IDs are never re-used per room. + public int ActorNumber + { + get { return this.actorNumber; } + } + + + /// Only one player is controlled by each client. Others are not local. + public readonly bool IsLocal; + + + public bool HasRejoined + { + get; internal set; + } + + + /// Background field for nickName. + private string nickName = string.Empty; + + /// Non-unique nickname of this player. Synced automatically in a room. + /// + /// A player might change his own playername in a room (it's only a property). + /// Setting this value updates the server and other players (using an operation). + /// + public string NickName + { + get + { + return this.nickName; + } + set + { + if (!string.IsNullOrEmpty(this.nickName) && this.nickName.Equals(value)) + { + return; + } + + this.nickName = value; + + // update a room, if we changed our nickName locally + if (this.IsLocal) + { + this.SetPlayerNameProperty(); + } + } + } + + /// UserId of the player, available when the room got created with RoomOptions.PublishUserId = true. + /// Useful for and blocking slots in a room for expected players (e.g. in ). + public string UserId { get; internal set; } + + /// + /// True if this player is the Master Client of the current room. + /// + public bool IsMasterClient + { + get + { + if (this.RoomReference == null) + { + return false; + } + + return this.ActorNumber == this.RoomReference.MasterClientId; + } + } + + /// If this player is active in the room (and getting events which are currently being sent). + /// + /// Inactive players keep their spot in a room but otherwise behave as if offline (no matter what their actual connection status is). + /// The room needs a PlayerTTL != 0. If a player is inactive for longer than PlayerTTL, the server will remove this player from the room. + /// For a client "rejoining" a room, is the same as joining it: It gets properties, cached events and then the live events. + /// + public bool IsInactive { get; protected internal set; } + + /// Read-only cache for custom properties of player. Set via Player.SetCustomProperties. + /// + /// Don't modify the content of this Hashtable. Use SetCustomProperties and the + /// properties of this class to modify values. When you use those, the client will + /// sync values with the server. + /// + /// + public Hashtable CustomProperties { get; set; } + + /// Can be used to store a reference that's useful to know "by player". + /// Example: Set a player's character as Tag by assigning the GameObject on Instantiate. + public object TagObject; + + + /// + /// Creates a player instance. + /// To extend and replace this Player, override LoadBalancingPeer.CreatePlayer(). + /// + /// NickName of the player (a "well known property"). + /// ID or ActorNumber of this player in the current room (a shortcut to identify each player in room) + /// If this is the local peer's player (or a remote one). + protected internal Player(string nickName, int actorNumber, bool isLocal) : this(nickName, actorNumber, isLocal, null) + { + } + + /// + /// Creates a player instance. + /// To extend and replace this Player, override LoadBalancingPeer.CreatePlayer(). + /// + /// NickName of the player (a "well known property"). + /// ID or ActorNumber of this player in the current room (a shortcut to identify each player in room) + /// If this is the local peer's player (or a remote one). + /// A Hashtable of custom properties to be synced. Must use String-typed keys and serializable datatypes as values. + protected internal Player(string nickName, int actorNumber, bool isLocal, Hashtable playerProperties) + { + this.IsLocal = isLocal; + this.actorNumber = actorNumber; + this.NickName = nickName; + + this.CustomProperties = new Hashtable(); + this.InternalCacheProperties(playerProperties); + } + + + /// + /// Get a Player by ActorNumber (Player.ID). + /// + /// ActorNumber of the a player in this room. + /// Player or null. + public Player Get(int id) + { + if (this.RoomReference == null) + { + return null; + } + + return this.RoomReference.GetPlayer(id); + } + + /// Gets this Player's next Player, as sorted by ActorNumber (Player.ID). Wraps around. + /// Player or null. + public Player GetNext() + { + return GetNextFor(this.ActorNumber); + } + + /// Gets a Player's next Player, as sorted by ActorNumber (Player.ID). Wraps around. + /// Useful when you pass something to the next player. For example: passing the turn to the next player. + /// The Player for which the next is being needed. + /// Player or null. + public Player GetNextFor(Player currentPlayer) + { + if (currentPlayer == null) + { + return null; + } + return GetNextFor(currentPlayer.ActorNumber); + } + + /// Gets a Player's next Player, as sorted by ActorNumber (Player.ID). Wraps around. + /// Useful when you pass something to the next player. For example: passing the turn to the next player. + /// The ActorNumber (Player.ID) for which the next is being needed. + /// Player or null. + public Player GetNextFor(int currentPlayerId) + { + if (this.RoomReference == null || this.RoomReference.Players == null || this.RoomReference.Players.Count < 2) + { + return null; + } + + Dictionary players = this.RoomReference.Players; + int nextHigherId = int.MaxValue; // we look for the next higher ID + int lowestId = currentPlayerId; // if we are the player with the highest ID, there is no higher and we return to the lowest player's id + + foreach (int playerid in players.Keys) + { + if (playerid < lowestId) + { + lowestId = playerid; // less than any other ID (which must be at least less than this player's id). + } + else if (playerid > currentPlayerId && playerid < nextHigherId) + { + nextHigherId = playerid; // more than our ID and less than those found so far. + } + } + + //UnityEngine.Debug.LogWarning("Debug. " + currentPlayerId + " lower: " + lowestId + " higher: " + nextHigherId + " "); + //UnityEngine.Debug.LogWarning(this.RoomReference.GetPlayer(currentPlayerId)); + //UnityEngine.Debug.LogWarning(this.RoomReference.GetPlayer(lowestId)); + //if (nextHigherId != int.MaxValue) UnityEngine.Debug.LogWarning(this.RoomReference.GetPlayer(nextHigherId)); + return (nextHigherId != int.MaxValue) ? players[nextHigherId] : players[lowestId]; + } + + + /// Caches properties for new Players or when updates of remote players are received. Use SetCustomProperties() for a synced update. + /// + /// This only updates the CustomProperties and doesn't send them to the server. + /// Mostly used when creating new remote players, where the server sends their properties. + /// + protected internal virtual void InternalCacheProperties(Hashtable properties) + { + if (properties == null || properties.Count == 0 || this.CustomProperties.Equals(properties)) + { + return; + } + + if (properties.ContainsKey(ActorProperties.PlayerName)) + { + string nameInServersProperties = (string)properties[ActorProperties.PlayerName]; + if (nameInServersProperties != null) + { + if (this.IsLocal) + { + // the local playername is different than in the properties coming from the server + // so the local nickName was changed and the server is outdated -> update server + // update property instead of using the outdated nickName coming from server + if (!nameInServersProperties.Equals(this.nickName)) + { + this.SetPlayerNameProperty(); + } + } + else + { + this.NickName = nameInServersProperties; + } + } + } + if (properties.ContainsKey(ActorProperties.UserId)) + { + this.UserId = (string)properties[ActorProperties.UserId]; + } + if (properties.ContainsKey(ActorProperties.IsInactive)) + { + this.IsInactive = (bool)properties[ActorProperties.IsInactive]; //TURNBASED new well-known propery for players + } + + this.CustomProperties.MergeStringKeys(properties); + this.CustomProperties.StripKeysWithNullValues(); + } + + + /// + /// Brief summary string of the Player: ActorNumber and NickName + /// + public override string ToString() + { + return string.Format("#{0:00} '{1}'",this.ActorNumber, this.NickName); + } + + /// + /// String summary of the Player: player.ID, name and all custom properties of this user. + /// + /// + /// Use with care and not every frame! + /// Converts the customProperties to a String on every single call. + /// + public string ToStringFull() + { + return string.Format("#{0:00} '{1}'{2} {3}", this.ActorNumber, this.NickName, this.IsInactive ? " (inactive)" : "", this.CustomProperties.ToStringFull()); + } + + /// + /// If players are equal (by GetHasCode, which returns this.ID). + /// + public override bool Equals(object p) + { + Player pp = p as Player; + return (pp != null && this.GetHashCode() == pp.GetHashCode()); + } + + /// + /// Accompanies Equals, using the ID (actorNumber) as HashCode to return. + /// + public override int GetHashCode() + { + return this.ActorNumber; + } + + /// + /// Used internally, to update this client's playerID when assigned (doesn't change after assignment). + /// + protected internal void ChangeLocalID(int newID) + { + if (!this.IsLocal) + { + //Debug.LogError("ERROR You should never change Player IDs!"); + return; + } + + this.actorNumber = newID; + } + + + + /// + /// Updates and synchronizes this Player's Custom Properties. Optionally, expectedProperties can be provided as condition. + /// + /// + /// Custom Properties are a set of string keys and arbitrary values which is synchronized + /// for the players in a Room. They are available when the client enters the room, as + /// they are in the response of OpJoin and OpCreate. + /// + /// Custom Properties either relate to the (current) Room or a Player (in that Room). + /// + /// Both classes locally cache the current key/values and make them available as + /// property: CustomProperties. This is provided only to read them. + /// You must use the method SetCustomProperties to set/modify them. + /// + /// Any client can set any Custom Properties anytime (when in a room). + /// It's up to the game logic to organize how they are best used. + /// + /// You should call SetCustomProperties only with key/values that are new or changed. This reduces + /// traffic and performance. + /// + /// Unless you define some expectedProperties, setting key/values is always permitted. + /// In this case, the property-setting client will not receive the new values from the server but + /// instead update its local cache in SetCustomProperties. + /// + /// If you define expectedProperties, the server will skip updates if the server property-cache + /// does not contain all expectedProperties with the same values. + /// In this case, the property-setting client will get an update from the server and update it's + /// cached key/values at about the same time as everyone else. + /// + /// The benefit of using expectedProperties can be only one client successfully sets a key from + /// one known value to another. + /// As example: Store who owns an item in a Custom Property "ownedBy". It's 0 initally. + /// When multiple players reach the item, they all attempt to change "ownedBy" from 0 to their + /// actorNumber. If you use expectedProperties {"ownedBy", 0} as condition, the first player to + /// take the item will have it (and the others fail to set the ownership). + /// + /// Properties get saved with the game state for Turnbased games (which use IsPersistent = true). + /// + /// Hashtable of Custom Properties to be set. + /// If non-null, these are the property-values the server will check as condition for this update. + /// Defines if this SetCustomProperties-operation gets forwarded to your WebHooks. Client must be in room. + /// + /// False if propertiesToSet is null or empty or have zero string keys. + /// True in offline mode even if expectedProperties or webFlags are used. + /// If not in a room, returns true if local player and expectedValues and webFlags are null. + /// (Use this to cache properties to be sent when joining a room). + /// Otherwise, returns if this operation could be sent to the server. + /// + public bool SetCustomProperties(Hashtable propertiesToSet, Hashtable expectedValues = null, WebFlags webFlags = null) + { + if (propertiesToSet == null || propertiesToSet.Count == 0) + { + return false; + } + + Hashtable customProps = propertiesToSet.StripToStringKeys() as Hashtable; + + if (this.RoomReference != null) + { + if (this.RoomReference.IsOffline) + { + if (customProps.Count == 0) + { + return false; + } + this.CustomProperties.Merge(customProps); + this.CustomProperties.StripKeysWithNullValues(); + // invoking callbacks + this.RoomReference.LoadBalancingClient.InRoomCallbackTargets.OnPlayerPropertiesUpdate(this, customProps); + return true; + } + else + { + Hashtable customPropsToCheck = expectedValues.StripToStringKeys() as Hashtable; + + // send (sync) these new values if in online room + return this.RoomReference.LoadBalancingClient.OpSetPropertiesOfActor(this.actorNumber, customProps, customPropsToCheck, webFlags); + } + } + if (this.IsLocal) + { + if (customProps.Count == 0) + { + return false; + } + if (expectedValues == null && webFlags == null) + { + this.CustomProperties.Merge(customProps); + this.CustomProperties.StripKeysWithNullValues(); + return true; + } + } + + return false; + } + + + /// Uses OpSetPropertiesOfActor to sync this player's NickName (server is being updated with this.NickName). + private bool SetPlayerNameProperty() + { + if (this.RoomReference != null && !this.RoomReference.IsOffline) + { + Hashtable properties = new Hashtable(); + properties[ActorProperties.PlayerName] = this.nickName; + return this.RoomReference.LoadBalancingClient.OpSetPropertiesOfActor(this.ActorNumber, properties); + } + + return false; + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonRealtime/Code/Player.cs.meta b/Assets/Photon/PhotonRealtime/Code/Player.cs.meta new file mode 100644 index 00000000..d494ca76 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/Player.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e3e4b5bebc687044b9c6c2803c36be3d +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonRealtime/Code/Region.cs b/Assets/Photon/PhotonRealtime/Code/Region.cs new file mode 100644 index 00000000..94ec853e --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/Region.cs @@ -0,0 +1,95 @@ +// ---------------------------------------------------------------------------- +// +// Loadbalancing Framework for Photon - Copyright (C) 2018 Exit Games GmbH +// +// +// Represents regions in the Photon Cloud. +// +// developer@photonengine.com +// ---------------------------------------------------------------------------- + +#if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER +#define SUPPORTED_UNITY +#endif + + +namespace Photon.Realtime +{ + using ExitGames.Client.Photon; + + #if SUPPORTED_UNITY || NETFX_CORE + using Hashtable = ExitGames.Client.Photon.Hashtable; + using SupportClass = ExitGames.Client.Photon.SupportClass; + #endif + + + public class Region + { + public string Code { get; private set; } + + /// Unlike the CloudRegionCode, this may contain cluster information. + public string Cluster { get; private set; } + + public string HostAndPort { get; protected internal set; } + + /// Weighted ping time. + /// + /// Regions gets pinged 5 times (RegionPinger.Attempts). + /// Out of those, the worst rtt is discarded and the best will be counted two times for a weighted average. + /// + public int Ping { get; set; } + + public bool WasPinged { get { return this.Ping != int.MaxValue; } } + + public Region(string code, string address) + { + this.SetCodeAndCluster(code); + this.HostAndPort = address; + this.Ping = int.MaxValue; + } + + public Region(string code, int ping) + { + this.SetCodeAndCluster(code); + this.Ping = ping; + } + + private void SetCodeAndCluster(string codeAsString) + { + if (codeAsString == null) + { + this.Code = ""; + this.Cluster = ""; + return; + } + + codeAsString = codeAsString.ToLower(); + int slash = codeAsString.IndexOf('/'); + this.Code = slash <= 0 ? codeAsString : codeAsString.Substring(0, slash); + this.Cluster = slash <= 0 ? "" : codeAsString.Substring(slash+1, codeAsString.Length-slash-1); + } + + public override string ToString() + { + return this.ToString(false); + } + + public string ToString(bool compact = false) + { + string regionCluster = this.Code; + if (!string.IsNullOrEmpty(this.Cluster)) + { + regionCluster += "/" + this.Cluster; + } + + if (compact) + { + return string.Format("{0}:{1}", regionCluster, this.Ping); + } + else + { + return string.Format("{0}[{2}]: {1}ms", regionCluster, this.Ping, this.HostAndPort); + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonRealtime/Code/Region.cs.meta b/Assets/Photon/PhotonRealtime/Code/Region.cs.meta new file mode 100644 index 00000000..49030f54 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/Region.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: bddf4f4bde2f8dd46927411229ce1302 +timeCreated: 1494420905 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonRealtime/Code/RegionHandler.cs b/Assets/Photon/PhotonRealtime/Code/RegionHandler.cs new file mode 100644 index 00000000..237d959a --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/RegionHandler.cs @@ -0,0 +1,714 @@ +// ---------------------------------------------------------------------------- +// +// Loadbalancing Framework for Photon - Copyright (C) 2018 Exit Games GmbH +// +// +// The RegionHandler class provides methods to ping a list of regions, +// to find the one with best ping. +// +// developer@photonengine.com +// ---------------------------------------------------------------------------- + + +#if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER +#define SUPPORTED_UNITY +#endif + +#if UNITY_WEBGL +#define PING_VIA_COROUTINE +#endif + +namespace Photon.Realtime +{ + using System; + using System.Text; + using System.Threading; + using System.Net; + using System.Collections; + using System.Collections.Generic; + using System.Diagnostics; + using ExitGames.Client.Photon; + using System.Linq; + + #if SUPPORTED_UNITY + using UnityEngine; + using Debug = UnityEngine.Debug; + #endif + #if SUPPORTED_UNITY || NETFX_CORE + using Hashtable = ExitGames.Client.Photon.Hashtable; + using SupportClass = ExitGames.Client.Photon.SupportClass; + #endif + + /// + /// Provides methods to work with Photon's regions (Photon Cloud) and can be use to find the one with best ping. + /// + /// + /// When a client uses a Name Server to fetch the list of available regions, the LoadBalancingClient will create a RegionHandler + /// and provide it via the OnRegionListReceived callback, as soon as the list is available. No pings were sent for Best Region selection yet. + /// + /// Your logic can decide to either connect to one of those regional servers, or it may use PingMinimumOfRegions to test + /// which region provides the best ping. Alternatively the client may be set to connect to the Best Region (lowest ping), one or + /// more regions get pinged. + /// Not all regions will be pinged. As soon as the results are final, the client will connect to the best region, + /// so you can check the ping results when connected to the Master Server. + /// + /// Regions gets pinged 5 times (RegionPinger.Attempts). + /// Out of those, the worst rtt is discarded and the best will be counted two times for a weighted average. + /// + /// Usually UDP will be used to ping the Master Servers. In WebGL, WSS is used instead. + /// + /// It makes sense to make clients "sticky" to a region when one gets selected. + /// This can be achieved by storing the SummaryToCache value, once pinging was done. + /// When the client connects again, the previous SummaryToCache helps limiting the number of regions to ping. + /// In best case, only the previously selected region gets re-pinged and if the current ping is not much worse, this one region is used again. + /// + public class RegionHandler + { + /// The implementation of PhotonPing to use for region pinging (Best Region detection). + /// Defaults to null, which means the Type is set automatically. + public static Type PingImplementation; + + /// A list of region names for the Photon Cloud. Set by the result of OpGetRegions(). + /// + /// Implement ILoadBalancingCallbacks and register for the callbacks to get OnRegionListReceived(RegionHandler regionHandler). + /// You can also put a "case OperationCode.GetRegions:" into your OnOperationResponse method to notice when the result is available. + /// + public List EnabledRegions { get; protected internal set; } + + private string availableRegionCodes; + + private Region bestRegionCache; + + /// + /// When PingMinimumOfRegions was called and completed, the BestRegion is identified by best ping. + /// + public Region BestRegion + { + get + { + if (this.EnabledRegions == null) + { + return null; + } + if (this.bestRegionCache != null) + { + return this.bestRegionCache; + } + + this.EnabledRegions.Sort((a, b) => a.Ping.CompareTo(b.Ping) ); + + this.bestRegionCache = this.EnabledRegions[0]; + return this.bestRegionCache; + } + } + + /// + /// This value summarizes the results of pinging currently available regions (after PingMinimumOfRegions finished). + /// + /// + /// This value should be stored in the client by the game logic. + /// When connecting again, use it as previous summary to speed up pinging regions and to make the best region sticky for the client. + /// + public string SummaryToCache + { + get + { + if (this.BestRegion != null) { + return this.BestRegion.Code + ";" + this.BestRegion.Ping + ";" + this.availableRegionCodes; + } + + return this.availableRegionCodes; + } + } + + public string GetResults() + { + StringBuilder sb = new StringBuilder(); + + sb.AppendFormat("Region Pinging Result: {0}\n", this.BestRegion.ToString()); + foreach (RegionPinger region in this.pingerList) + { + sb.AppendFormat(region.GetResults() + "\n"); + } + sb.AppendFormat("Previous summary: {0}", this.previousSummaryProvided); + + return sb.ToString(); + } + + public void SetRegions(OperationResponse opGetRegions) + { + if (opGetRegions.OperationCode != OperationCode.GetRegions) + { + return; + } + if (opGetRegions.ReturnCode != ErrorCode.Ok) + { + return; + } + + string[] regions = opGetRegions[ParameterCode.Region] as string[]; + string[] servers = opGetRegions[ParameterCode.Address] as string[]; + if (regions == null || servers == null || regions.Length != servers.Length) + { + //TODO: log error + //Debug.LogError("The region arrays from Name Server are not ok. Must be non-null and same length. " + (regions == null) + " " + (servers == null) + "\n" + opGetRegions.ToStringFull()); + return; + } + + this.bestRegionCache = null; + this.EnabledRegions = new List(regions.Length); + + for (int i = 0; i < regions.Length; i++) + { + string server = servers[i]; + if (PortToPingOverride != 0) + { + server = LoadBalancingClient.ReplacePortWithAlternative(servers[i], PortToPingOverride); + } + + Region tmp = new Region(regions[i], server); + if (string.IsNullOrEmpty(tmp.Code)) + { + continue; + } + + this.EnabledRegions.Add(tmp); + } + + Array.Sort(regions); + this.availableRegionCodes = string.Join(",", regions); + } + + private List pingerList = new List(); + private Action onCompleteCall; + private int previousPing; + public bool IsPinging { get; private set; } + private string previousSummaryProvided; + + protected internal static ushort PortToPingOverride; + + + public RegionHandler(ushort masterServerPortOverride = 0) + { + PortToPingOverride = masterServerPortOverride; + } + + + public bool PingMinimumOfRegions(Action onCompleteCallback, string previousSummary) + { + if (this.EnabledRegions == null || this.EnabledRegions.Count == 0) + { + //TODO: log error + //Debug.LogError("No regions available. Maybe all got filtered out or the AppId is not correctly configured."); + return false; + } + + if (this.IsPinging) + { + //TODO: log warning + //Debug.LogWarning("PingMinimumOfRegions() skipped, because this RegionHandler is already pinging some regions."); + return false; + } + + this.IsPinging = true; + this.onCompleteCall = onCompleteCallback; + this.previousSummaryProvided = previousSummary; + + if (string.IsNullOrEmpty(previousSummary)) + { + return this.PingEnabledRegions(); + } + + string[] values = previousSummary.Split(';'); + if (values.Length < 3) + { + return this.PingEnabledRegions(); + } + + int prevBestRegionPing; + bool secondValueIsInt = Int32.TryParse(values[1], out prevBestRegionPing); + if (!secondValueIsInt) + { + return this.PingEnabledRegions(); + } + + string prevBestRegionCode = values[0]; + string prevAvailableRegionCodes = values[2]; + + + if (string.IsNullOrEmpty(prevBestRegionCode)) + { + return this.PingEnabledRegions(); + } + if (string.IsNullOrEmpty(prevAvailableRegionCodes)) + { + return this.PingEnabledRegions(); + } + if (!this.availableRegionCodes.Equals(prevAvailableRegionCodes) || !this.availableRegionCodes.Contains(prevBestRegionCode)) + { + return this.PingEnabledRegions(); + } + if (prevBestRegionPing >= RegionPinger.PingWhenFailed) + { + return this.PingEnabledRegions(); + } + + // let's check only the preferred region to detect if it's still "good enough" + this.previousPing = prevBestRegionPing; + + + Region preferred = this.EnabledRegions.Find(r => r.Code.Equals(prevBestRegionCode)); + RegionPinger singlePinger = new RegionPinger(preferred, this.OnPreferredRegionPinged); + + lock (this.pingerList) + { + this.pingerList.Add(singlePinger); + } + + singlePinger.Start(); + return true; + } + + private void OnPreferredRegionPinged(Region preferredRegion) + { + if (preferredRegion.Ping > this.previousPing * 1.50f) + { + this.PingEnabledRegions(); + } + else + { + this.IsPinging = false; + this.onCompleteCall(this); + #if PING_VIA_COROUTINE + MonoBehaviourEmpty.SelfDestroy(); + #endif + } + } + + + private bool PingEnabledRegions() + { + if (this.EnabledRegions == null || this.EnabledRegions.Count == 0) + { + //TODO: log + //Debug.LogError("No regions available. Maybe all got filtered out or the AppId is not correctly configured."); + return false; + } + + lock (this.pingerList) + { + this.pingerList.Clear(); + + foreach (Region region in this.EnabledRegions) + { + RegionPinger rp = new RegionPinger(region, this.OnRegionDone); + this.pingerList.Add(rp); + rp.Start(); // TODO: check return value + } + } + + return true; + } + + private void OnRegionDone(Region region) + { + lock (this.pingerList) + { + if (this.IsPinging == false) + { + return; + } + + this.bestRegionCache = null; + foreach (RegionPinger pinger in this.pingerList) + { + if (!pinger.Done) + { + return; + } + } + + this.IsPinging = false; + } + + this.onCompleteCall(this); + #if PING_VIA_COROUTINE + MonoBehaviourEmpty.SelfDestroy(); + #endif + } + } + + public class RegionPinger + { + public static int Attempts = 5; + public static int MaxMilliseconsPerPing = 800; // enter a value you're sure some server can beat (have a lower rtt) + public static int PingWhenFailed = Attempts * MaxMilliseconsPerPing; + + private Region region; + private string regionAddress; + public int CurrentAttempt = 0; + + public bool Done { get; private set; } + private Action onDoneCall; + + private PhotonPing ping; + + private List rttResults; + + public RegionPinger(Region region, Action onDoneCallback) + { + this.region = region; + this.region.Ping = PingWhenFailed; + this.Done = false; + this.onDoneCall = onDoneCallback; + } + + /// Selects the best fitting ping implementation or uses the one set in RegionHandler.PingImplementation. + /// PhotonPing instance to use. + private PhotonPing GetPingImplementation() + { + PhotonPing ping = null; + + // using each type explicitly in the conditional code, makes sure Unity doesn't strip the class / constructor. + + #if !UNITY_EDITOR && NETFX_CORE + if (RegionHandler.PingImplementation == null || RegionHandler.PingImplementation == typeof(PingWindowsStore)) + { + ping = new PingWindowsStore(); + } + #elif NATIVE_SOCKETS || NO_SOCKET + if (RegionHandler.PingImplementation == null || RegionHandler.PingImplementation == typeof(PingNativeDynamic)) + { + ping = new PingNativeDynamic(); + } + #elif UNITY_WEBGL + if (RegionHandler.PingImplementation == null || RegionHandler.PingImplementation == typeof(PingHttp)) + { + ping = new PingHttp(); + } + #else + if (RegionHandler.PingImplementation == null || RegionHandler.PingImplementation == typeof(PingMono)) + { + ping = new PingMono(); + } + #endif + + if (ping == null) + { + if (RegionHandler.PingImplementation != null) + { + ping = (PhotonPing)Activator.CreateInstance(RegionHandler.PingImplementation); + } + } + + return ping; + } + + + /// + /// Starts the ping routine for the assigned region. + /// + /// + /// Pinging runs in a ThreadPool worker item or (if needed) in a Thread. + /// WebGL runs pinging on the Main Thread as coroutine. + /// + /// Always true. + public bool Start() + { + // all addresses for Photon region servers will contain a :port ending. this needs to be removed first. + // PhotonPing.StartPing() requires a plain (IP) address without port or protocol-prefix (on all but Windows 8.1 and WebGL platforms). + string address = this.region.HostAndPort; + int indexOfColon = address.LastIndexOf(':'); + if (indexOfColon > 1) + { + address = address.Substring(0, indexOfColon); + } + this.regionAddress = ResolveHost(address); + + + this.ping = this.GetPingImplementation(); + + + this.Done = false; + this.CurrentAttempt = 0; + this.rttResults = new List(Attempts); + + + #if PING_VIA_COROUTINE + MonoBehaviourEmpty.Instance.StartCoroutine(this.RegionPingCoroutine()); + #else + bool queued = false; + #if !NETFX_CORE + try + { + queued = ThreadPool.QueueUserWorkItem(o => this.RegionPingThreaded()); + } + catch + { + queued = false; + } + #endif + if (!queued) + { + SupportClass.StartBackgroundCalls(this.RegionPingThreaded, 0, "RegionPing_" + this.region.Code + "_" + this.region.Cluster); + } + #endif + + + return true; + } + + + protected internal bool RegionPingThreaded() + { + this.region.Ping = PingWhenFailed; + + int rttSum = 0; + int replyCount = 0; + + + Stopwatch sw = new Stopwatch(); + for (this.CurrentAttempt = 0; this.CurrentAttempt < Attempts; this.CurrentAttempt++) + { + bool overtime = false; + sw.Reset(); + sw.Start(); + + try + { + this.ping.StartPing(this.regionAddress); + } + catch (Exception e) + { + System.Diagnostics.Debug.WriteLine("RegionPinger.RegionPingThreaded() caught exception for ping.StartPing(). Exception: " + e + " Source: " + e.Source + " Message: " + e.Message); + break; + } + + + while (!this.ping.Done()) + { + if (sw.ElapsedMilliseconds >= MaxMilliseconsPerPing) + { + overtime = true; + break; + } + #if !NETFX_CORE + System.Threading.Thread.Sleep(1); + #endif + } + + + sw.Stop(); + int rtt = this.ping.Successful ? (int)sw.ElapsedMilliseconds : MaxMilliseconsPerPing; // if the reply didn't match the sent ping + this.rttResults.Add(rtt); + + rttSum += rtt; + replyCount++; + this.region.Ping = (int)((rttSum) / replyCount); + + #if !NETFX_CORE + int i = 4; + while (!this.ping.Done() && i > 0) + { + i--; + System.Threading.Thread.Sleep(100); + } + System.Threading.Thread.Sleep(10); + #endif + } + + + //Debug.Log("Done: "+ this.region.Code); + this.Done = true; + this.ping.Dispose(); + + int bestRtt = this.rttResults.Min(); + int worstRtt = this.rttResults.Max(); + int weighedRttSum = rttSum - worstRtt + bestRtt; + this.region.Ping = (int)(weighedRttSum / replyCount); // now, we can create a weighted ping value + + this.onDoneCall(this.region); + return false; + } + + + #if SUPPORTED_UNITY + + /// + /// Affected by frame-rate of app, as this Coroutine checks the socket for a result once per frame. + /// + protected internal IEnumerator RegionPingCoroutine() + { + this.region.Ping = PingWhenFailed; + + int rttSum = 0; + int replyCount = 0; + + + Stopwatch sw = new Stopwatch(); + for (this.CurrentAttempt = 0; this.CurrentAttempt < Attempts; this.CurrentAttempt++) + { + bool overtime = false; + sw.Reset(); + sw.Start(); + + try + { + this.ping.StartPing(this.regionAddress); + } + catch (Exception e) + { + Debug.Log("RegionPinger.RegionPingCoroutine() caught exception for ping.StartPing(). Exception: " + e + " Source: " + e.Source + " Message: " + e.Message); + break; + } + + + while (!this.ping.Done()) + { + if (sw.ElapsedMilliseconds >= MaxMilliseconsPerPing) + { + overtime = true; + break; + } + + yield return new WaitForSecondsRealtime(0.01f); // keep this loop tight, to avoid adding local lag to rtt. + } + + + sw.Stop(); + int rtt = this.ping.Successful ? (int)sw.ElapsedMilliseconds : MaxMilliseconsPerPing; // if the reply didn't match the sent ping + this.rttResults.Add(rtt); + + + rttSum += rtt; + replyCount++; + this.region.Ping = (int)((rttSum) / replyCount); + + int i = 4; + while (!this.ping.Done() && i > 0) + { + i--; + yield return new WaitForSeconds(0.1f); + } + + yield return new WaitForSeconds(0.1f); + } + + + //Debug.Log("Done: "+ this.region.Code); + this.Done = true; + this.ping.Dispose(); + int bestRtt = this.rttResults.Min(); + int worstRtt = this.rttResults.Max(); + int weighedRttSum = rttSum - worstRtt + bestRtt; + this.region.Ping = (int)(weighedRttSum / replyCount); // now, we can create a weighted ping value + this.onDoneCall(this.region); + yield return null; + } + + #endif + + + + public string GetResults() + { + return string.Format("{0}: {1} ({2})", this.region.Code, this.region.Ping, this.rttResults.ToStringFull()); + } + + /// + /// Attempts to resolve a hostname into an IP string or returns empty string if that fails. + /// + /// + /// To be compatible with most platforms, the address family is checked like this:
    + /// if (ipAddress.AddressFamily.ToString().Contains("6")) // ipv6... + ///
    + /// Hostname to resolve. + /// IP string or empty string if resolution fails + public static string ResolveHost(string hostName) + { + + if (hostName.StartsWith("wss://")) + { + hostName = hostName.Substring(6); + } + if (hostName.StartsWith("ws://")) + { + hostName = hostName.Substring(5); + } + + string ipv4Address = string.Empty; + + try + { + #if UNITY_WSA || NETFX_CORE || UNITY_WEBGL + return hostName; + #else + + IPAddress[] address = Dns.GetHostAddresses(hostName); + if (address.Length == 1) + { + return address[0].ToString(); + } + + // if we got more addresses, try to pick a IPv6 one + // checking ipAddress.ToString() means we don't have to import System.Net.Sockets, which is not available on some platforms (Metro) + for (int index = 0; index < address.Length; index++) + { + IPAddress ipAddress = address[index]; + if (ipAddress != null) + { + if (ipAddress.ToString().Contains(":")) + { + return ipAddress.ToString(); + } + if (string.IsNullOrEmpty(ipv4Address)) + { + ipv4Address = address.ToString(); + } + } + } + #endif + } + catch (System.Exception e) + { + System.Diagnostics.Debug.WriteLine("RegionPinger.ResolveHost() caught an exception for Dns.GetHostAddresses(). Exception: " + e + " Source: " + e.Source + " Message: " + e.Message); + } + + return ipv4Address; + } + } + + #if PING_VIA_COROUTINE + internal class MonoBehaviourEmpty : MonoBehaviour + { + private static bool instanceSet; // to avoid instance null check which may be incorrect + private static MonoBehaviourEmpty instance; + + public static MonoBehaviourEmpty Instance + { + get + { + if (instanceSet) + { + return instance; + } + GameObject go = new GameObject(); + DontDestroyOnLoad(go); + go.name = "RegionPinger"; + instance = go.AddComponent(); + instanceSet = true; + return instance; + } + } + + public static void SelfDestroy() + { + if (instanceSet) + { + instanceSet = false; + Destroy(instance.gameObject); + } + } + } + #endif +} diff --git a/Assets/Photon/PhotonRealtime/Code/RegionHandler.cs.meta b/Assets/Photon/PhotonRealtime/Code/RegionHandler.cs.meta new file mode 100644 index 00000000..2e900019 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/RegionHandler.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 207807222df026f40ac3688a3a051e38 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonRealtime/Code/Room.cs b/Assets/Photon/PhotonRealtime/Code/Room.cs new file mode 100644 index 00000000..5f4036f5 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/Room.cs @@ -0,0 +1,630 @@ +// ---------------------------------------------------------------------------- +// +// Loadbalancing Framework for Photon - Copyright (C) 2018 Exit Games GmbH +// +// +// The Room class resembles the properties known about the room in which +// a game/match happens. +// +// developer@photonengine.com +// ---------------------------------------------------------------------------- + +#if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER +#define SUPPORTED_UNITY +#endif + + +namespace Photon.Realtime +{ + using System; + using System.Collections; + using System.Collections.Generic; + using ExitGames.Client.Photon; + + #if SUPPORTED_UNITY || NETFX_CORE + using Hashtable = ExitGames.Client.Photon.Hashtable; + using SupportClass = ExitGames.Client.Photon.SupportClass; + #endif + + + /// + /// This class represents a room a client joins/joined. + /// + /// + /// Contains a list of current players, their properties and those of this room, too. + /// A room instance has a number of "well known" properties like IsOpen, MaxPlayers which can be changed. + /// Your own, custom properties can be set via SetCustomProperties() while being in the room. + /// + /// Typically, this class should be extended by a game-specific implementation with logic and extra features. + /// + public class Room : RoomInfo + { + /// + /// A reference to the LoadBalancingClient which is currently keeping the connection and state. + /// + public LoadBalancingClient LoadBalancingClient { get; set; } + + /// The name of a room. Unique identifier (per region and virtual appid) for a room/match. + /// The name can't be changed once it's set by the server. + public new string Name + { + get + { + return this.name; + } + + internal set + { + this.name = value; + } + } + + private bool isOffline; + + public bool IsOffline + { + get + { + return isOffline; + } + + private set + { + isOffline = value; + } + } + + /// + /// Defines if the room can be joined. + /// + /// + /// This does not affect listing in a lobby but joining the room will fail if not open. + /// If not open, the room is excluded from random matchmaking. + /// Due to racing conditions, found matches might become closed while users are trying to join. + /// Simply re-connect to master and find another. + /// Use property "IsVisible" to not list the room. + /// + /// As part of RoomInfo this can't be set. + /// As part of a Room (which the player joined), the setter will update the server and all clients. + /// + public new bool IsOpen + { + get + { + return this.isOpen; + } + + set + { + if (value != this.isOpen) + { + if (!this.isOffline) + { + this.LoadBalancingClient.OpSetPropertiesOfRoom(new Hashtable() { { GamePropertyKey.IsOpen, value } }); + } + } + + this.isOpen = value; + } + } + + /// + /// Defines if the room is listed in its lobby. + /// + /// + /// Rooms can be created invisible, or changed to invisible. + /// To change if a room can be joined, use property: open. + /// + /// As part of RoomInfo this can't be set. + /// As part of a Room (which the player joined), the setter will update the server and all clients. + /// + public new bool IsVisible + { + get + { + return this.isVisible; + } + + set + { + if (value != this.isVisible) + { + if (!this.isOffline) + { + this.LoadBalancingClient.OpSetPropertiesOfRoom(new Hashtable() { { GamePropertyKey.IsVisible, value } }); + } + } + + this.isVisible = value; + } + } + + /// + /// Sets a limit of players to this room. This property is synced and shown in lobby, too. + /// If the room is full (players count == maxplayers), joining this room will fail. + /// + /// + /// As part of RoomInfo this can't be set. + /// As part of a Room (which the player joined), the setter will update the server and all clients. + /// + public new byte MaxPlayers + { + get + { + return this.maxPlayers; + } + + set + { + if (value != this.maxPlayers) + { + if (!this.isOffline) + { + this.LoadBalancingClient.OpSetPropertiesOfRoom(new Hashtable() { { GamePropertyKey.MaxPlayers, value } }); + } + } + + this.maxPlayers = value; + } + } + + /// The count of players in this Room (using this.Players.Count). + public new byte PlayerCount + { + get + { + if (this.Players == null) + { + return 0; + } + + return (byte)this.Players.Count; + } + } + + /// While inside a Room, this is the list of players who are also in that room. + private Dictionary players = new Dictionary(); + + /// While inside a Room, this is the list of players who are also in that room. + public Dictionary Players + { + get + { + return this.players; + } + + private set + { + this.players = value; + } + } + + /// + /// List of users who are expected to join this room. In matchmaking, Photon blocks a slot for each of these UserIDs out of the MaxPlayers. + /// + /// + /// The corresponding feature in Photon is called "Slot Reservation" and can be found in the doc pages. + /// Define expected players in the methods: , and . + /// + public string[] ExpectedUsers + { + get { return this.expectedUsers; } + } + + /// Player Time To Live. How long any player can be inactive (due to disconnect or leave) before the user gets removed from the playerlist (freeing a slot). + public int PlayerTtl + { + get { return this.playerTtl; } + + set + { + if (value != this.playerTtl) + { + if (!this.isOffline) + { + this.LoadBalancingClient.OpSetPropertyOfRoom(GamePropertyKey.PlayerTtl, value); // TODO: implement Offline Mode + } + } + + this.playerTtl = value; + } + } + + /// Room Time To Live. How long a room stays available (and in server-memory), after the last player becomes inactive. After this time, the room gets persisted or destroyed. + public int EmptyRoomTtl + { + get { return this.emptyRoomTtl; } + + set + { + if (value != this.emptyRoomTtl) + { + if (!this.isOffline) + { + this.LoadBalancingClient.OpSetPropertyOfRoom(GamePropertyKey.EmptyRoomTtl, value); // TODO: implement Offline Mode + } + } + + this.emptyRoomTtl = value; + } + } + + /// + /// The ID (actorNumber, actorNumber) of the player who's the master of this Room. + /// Note: This changes when the current master leaves the room. + /// + public int MasterClientId { get { return this.masterClientId; } } + + /// + /// Gets a list of custom properties that are in the RoomInfo of the Lobby. + /// This list is defined when creating the room and can't be changed afterwards. Compare: LoadBalancingClient.OpCreateRoom() + /// + /// You could name properties that are not set from the beginning. Those will be synced with the lobby when added later on. + public string[] PropertiesListedInLobby + { + get + { + return this.propertiesListedInLobby; + } + + private set + { + this.propertiesListedInLobby = value; + } + } + + /// + /// Gets if this room cleans up the event cache when a player (actor) leaves. + /// + /// + /// This affects which events joining players get. + /// + /// Set in room creation via RoomOptions.CleanupCacheOnLeave. + /// + /// Within PUN, auto cleanup of events means that cached RPCs and instantiated networked objects are deleted from the room. + /// + public bool AutoCleanUp + { + get + { + return this.autoCleanUp; + } + } + + /// Define if the client who calls SetProperties should receive the properties update event or not. + public bool BroadcastPropertiesChangeToAll { get; private set; } + /// Define if Join and Leave events should not be sent to clients in the room. + public bool SuppressRoomEvents { get; private set; } + /// Extends SuppressRoomEvents: Define if Join and Leave events but also the actors' list and their respective properties should not be sent to clients. + public bool SuppressPlayerInfo { get; private set; } + /// Define if UserIds of the players are broadcast in the room. Useful for FindFriends and reserving slots for expected users. + public bool PublishUserId { get; private set; } + /// Define if actor or room properties with null values are removed on the server or kept. + public bool DeleteNullProperties { get; private set; } + + #if SERVERSDK + /// Define if rooms should have unique UserId per actor and that UserIds are used instead of actor number in rejoin. + public bool CheckUserOnJoin { get; private set; } + #endif + + + /// Creates a Room (representation) with given name and properties and the "listing options" as provided by parameters. + /// Name of the room (can be null until it's actually created on server). + /// Room options. + public Room(string roomName, RoomOptions options, bool isOffline = false) : base(roomName, options != null ? options.CustomRoomProperties : null) + { + // base() sets name and (custom)properties. here we set "well known" properties + if (options != null) + { + this.isVisible = options.IsVisible; + this.isOpen = options.IsOpen; + this.maxPlayers = options.MaxPlayers; + this.propertiesListedInLobby = options.CustomRoomPropertiesForLobby; + //this.playerTtl = options.PlayerTtl; // set via well known properties + //this.emptyRoomTtl = options.EmptyRoomTtl; // set via well known properties + } + + this.isOffline = isOffline; + } + + + /// Read (received) room option flags into related bool parameters. + /// This is for internal use. The operation response for join and create room operations is read this way. + /// + internal void InternalCacheRoomFlags(int roomFlags) + { + this.BroadcastPropertiesChangeToAll = (roomFlags & (int)RoomOptionBit.BroadcastPropsChangeToAll) != 0; + this.SuppressRoomEvents = (roomFlags & (int)RoomOptionBit.SuppressRoomEvents) != 0; + this.SuppressPlayerInfo = (roomFlags & (int)RoomOptionBit.SuppressPlayerInfo) != 0; + this.PublishUserId = (roomFlags & (int)RoomOptionBit.PublishUserId) != 0; + this.DeleteNullProperties = (roomFlags & (int)RoomOptionBit.DeleteNullProps) != 0; + #if SERVERSDK + this.CheckUserOnJoin = (roomFlags & (int)RoomOptionBit.CheckUserOnJoin) != 0; + #endif + this.autoCleanUp = (roomFlags & (int)RoomOptionBit.DeleteCacheOnLeave) != 0; + } + + protected internal override void InternalCacheProperties(Hashtable propertiesToCache) + { + int oldMasterId = this.masterClientId; + + base.InternalCacheProperties(propertiesToCache); // important: updating the properties fields has no way to do callbacks on change + + if (oldMasterId != 0 && this.masterClientId != oldMasterId) + { + this.LoadBalancingClient.InRoomCallbackTargets.OnMasterClientSwitched(this.GetPlayer(this.masterClientId)); + } + } + + /// + /// Updates and synchronizes this Room's Custom Properties. Optionally, expectedProperties can be provided as condition. + /// + /// + /// Custom Properties are a set of string keys and arbitrary values which is synchronized + /// for the players in a Room. They are available when the client enters the room, as + /// they are in the response of OpJoin and OpCreate. + /// + /// Custom Properties either relate to the (current) Room or a Player (in that Room). + /// + /// Both classes locally cache the current key/values and make them available as + /// property: CustomProperties. This is provided only to read them. + /// You must use the method SetCustomProperties to set/modify them. + /// + /// Any client can set any Custom Properties anytime (when in a room). + /// It's up to the game logic to organize how they are best used. + /// + /// You should call SetCustomProperties only with key/values that are new or changed. This reduces + /// traffic and performance. + /// + /// Unless you define some expectedProperties, setting key/values is always permitted. + /// In this case, the property-setting client will not receive the new values from the server but + /// instead update its local cache in SetCustomProperties. + /// + /// If you define expectedProperties, the server will skip updates if the server property-cache + /// does not contain all expectedProperties with the same values. + /// In this case, the property-setting client will get an update from the server and update it's + /// cached key/values at about the same time as everyone else. + /// + /// The benefit of using expectedProperties can be only one client successfully sets a key from + /// one known value to another. + /// As example: Store who owns an item in a Custom Property "ownedBy". It's 0 initally. + /// When multiple players reach the item, they all attempt to change "ownedBy" from 0 to their + /// actorNumber. If you use expectedProperties {"ownedBy", 0} as condition, the first player to + /// take the item will have it (and the others fail to set the ownership). + /// + /// Properties get saved with the game state for Turnbased games (which use IsPersistent = true). + /// + /// Hashtable of Custom Properties that changes. + /// Provide some keys/values to use as condition for setting the new values. Client must be in room. + /// Defines if this SetCustomProperties-operation gets forwarded to your WebHooks. Client must be in room. + /// + /// False if propertiesToSet is null or empty or have zero string keys. + /// True in offline mode even if expectedProperties or webFlags are used. + /// Otherwise, returns if this operation could be sent to the server. + /// + public virtual bool SetCustomProperties(Hashtable propertiesToSet, Hashtable expectedProperties = null, WebFlags webFlags = null) + { + if (propertiesToSet == null || propertiesToSet.Count == 0) + { + return false; + } + Hashtable customProps = propertiesToSet.StripToStringKeys() as Hashtable; + + if (this.isOffline) + { + if (customProps.Count == 0) + { + return false; + } + // Merge and delete values. + this.CustomProperties.Merge(customProps); + this.CustomProperties.StripKeysWithNullValues(); + + // invoking callbacks + this.LoadBalancingClient.InRoomCallbackTargets.OnRoomPropertiesUpdate(propertiesToSet); + + } + else + { + // send (sync) these new values if in online room + return this.LoadBalancingClient.OpSetPropertiesOfRoom(customProps, expectedProperties, webFlags); + } + + return true; + } + + /// + /// Enables you to define the properties available in the lobby if not all properties are needed to pick a room. + /// + /// + /// Limit the amount of properties sent to users in the lobby to improve speed and stability. + /// + /// An array of custom room property names to forward to the lobby. + /// If the operation could be sent to the server. + public bool SetPropertiesListedInLobby(string[] lobbyProps) + { + if (this.isOffline) + { + return false; + } + Hashtable customProps = new Hashtable(); + customProps[GamePropertyKey.PropsListedInLobby] = lobbyProps; + return this.LoadBalancingClient.OpSetPropertiesOfRoom(customProps); + } + + + /// + /// Removes a player from this room's Players Dictionary. + /// This is internally used by the LoadBalancing API. There is usually no need to remove players yourself. + /// This is not a way to "kick" players. + /// + protected internal virtual void RemovePlayer(Player player) + { + this.Players.Remove(player.ActorNumber); + player.RoomReference = null; + } + + /// + /// Removes a player from this room's Players Dictionary. + /// + protected internal virtual void RemovePlayer(int id) + { + this.RemovePlayer(this.GetPlayer(id)); + } + + /// + /// Asks the server to assign another player as Master Client of your current room. + /// + /// + /// RaiseEvent has the option to send messages only to the Master Client of a room. + /// SetMasterClient affects which client gets those messages. + /// + /// This method calls an operation on the server to set a new Master Client, which takes a roundtrip. + /// In case of success, this client and the others get the new Master Client from the server. + /// + /// SetMasterClient tells the server which current Master Client should be replaced with the new one. + /// It will fail, if anything switches the Master Client moments earlier. There is no callback for this + /// error. All clients should get the new Master Client assigned by the server anyways. + /// + /// See also: MasterClientId + /// + /// The player to become the next Master Client. + /// False when this operation couldn't be done currently. Requires a v4 Photon Server. + public bool SetMasterClient(Player masterClientPlayer) + { + if (this.isOffline) + { + return false; + } + Hashtable newProps = new Hashtable() { { GamePropertyKey.MasterClientId, masterClientPlayer.ActorNumber } }; + Hashtable prevProps = new Hashtable() { { GamePropertyKey.MasterClientId, this.MasterClientId } }; + return this.LoadBalancingClient.OpSetPropertiesOfRoom(newProps, prevProps); + } + + /// + /// Checks if the player is in the room's list already and calls StorePlayer() if not. + /// + /// The new player - identified by ID. + /// False if the player could not be added (cause it was in the list already). + public virtual bool AddPlayer(Player player) + { + if (!this.Players.ContainsKey(player.ActorNumber)) + { + this.StorePlayer(player); + return true; + } + + return false; + } + + /// + /// Updates a player reference in the Players dictionary (no matter if it existed before or not). + /// + /// The Player instance to insert into the room. + public virtual Player StorePlayer(Player player) + { + this.Players[player.ActorNumber] = player; + player.RoomReference = this; + + //// while initializing the room, the players are not guaranteed to be added in-order + //if (this.MasterClientId == 0 || player.ActorNumber < this.MasterClientId) + //{ + // this.masterClientId = player.ActorNumber; + //} + + return player; + } + + /// + /// Tries to find the player with given actorNumber (a.k.a. ID). + /// Only useful when in a Room, as IDs are only valid per Room. + /// + /// ID to look for. + /// If true, the Master Client is returned for ID == 0. + /// The player with the ID or null. + public virtual Player GetPlayer(int id, bool findMaster = false) + { + int idToFind = (findMaster && id == 0) ? this.MasterClientId : id; + + Player result = null; + this.Players.TryGetValue(idToFind, out result); + + return result; + } + + /// + /// Attempts to remove all current expected users from the server's Slot Reservation list. + /// + /// + /// Note that this operation can conflict with new/other users joining. They might be + /// adding users to the list of expected users before or after this client called ClearExpectedUsers. + /// + /// This room's expectedUsers value will update, when the server sends a successful update. + /// + /// Internals: This methods wraps up setting the ExpectedUsers property of a room. + /// + /// If the operation could be sent to the server. + public bool ClearExpectedUsers() + { + if (this.ExpectedUsers == null || this.ExpectedUsers.Length == 0) + { + return false; + } + return this.SetExpectedUsers(new string[0], this.ExpectedUsers); + } + + /// + /// Attempts to update the expected users from the server's Slot Reservation list. + /// + /// + /// Note that this operation can conflict with new/other users joining. They might be + /// adding users to the list of expected users before or after this client called SetExpectedUsers. + /// + /// This room's expectedUsers value will update, when the server sends a successful update. + /// + /// Internals: This methods wraps up setting the ExpectedUsers property of a room. + /// + /// The new array of UserIDs to be reserved in the room. + /// If the operation could be sent to the server. + public bool SetExpectedUsers(string[] newExpectedUsers) + { + if (newExpectedUsers == null || newExpectedUsers.Length == 0) + { + this.LoadBalancingClient.DebugReturn(DebugLevel.ERROR, "newExpectedUsers array is null or empty, call Room.ClearExpectedUsers() instead if this is what you want."); + return false; + } + return this.SetExpectedUsers(newExpectedUsers, this.ExpectedUsers); + } + + private bool SetExpectedUsers(string[] newExpectedUsers, string[] oldExpectedUsers) + { + if (this.isOffline) + { + return false; + } + Hashtable gameProperties = new Hashtable(1); + gameProperties.Add(GamePropertyKey.ExpectedUsers, newExpectedUsers); + Hashtable expectedProperties = null; + if (oldExpectedUsers != null) + { + expectedProperties = new Hashtable(1); + expectedProperties.Add(GamePropertyKey.ExpectedUsers, oldExpectedUsers); + } + return this.LoadBalancingClient.OpSetPropertiesOfRoom(gameProperties, expectedProperties); + } + + /// Returns a summary of this Room instance as string. + /// Summary of this Room instance. + public override string ToString() + { + return string.Format("Room: '{0}' {1},{2} {4}/{3} players.", this.name, this.isVisible ? "visible" : "hidden", this.isOpen ? "open" : "closed", this.maxPlayers, this.PlayerCount); + } + + /// Returns a summary of this Room instance as longer string, including Custom Properties. + /// Summary of this Room instance. + public new string ToStringFull() + { + return string.Format("Room: '{0}' {1},{2} {4}/{3} players.\ncustomProps: {5}", this.name, this.isVisible ? "visible" : "hidden", this.isOpen ? "open" : "closed", this.maxPlayers, this.PlayerCount, this.CustomProperties.ToStringFull()); + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonRealtime/Code/Room.cs.meta b/Assets/Photon/PhotonRealtime/Code/Room.cs.meta new file mode 100644 index 00000000..66ccb6ca --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/Room.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 17568a7a5552c09428dd48e73548b8b8 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonRealtime/Code/RoomInfo.cs b/Assets/Photon/PhotonRealtime/Code/RoomInfo.cs new file mode 100644 index 00000000..6d775452 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/RoomInfo.cs @@ -0,0 +1,274 @@ +// ---------------------------------------------------------------------------- +// +// Loadbalancing Framework for Photon - Copyright (C) 2018 Exit Games GmbH +// +// +// This class resembles info about available rooms, as sent by the Master +// server's lobby. Consider all values as readonly. +// +// developer@photonengine.com +// ---------------------------------------------------------------------------- + +#if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER +#define SUPPORTED_UNITY +#endif + + +namespace Photon.Realtime +{ + using System.Collections; + using ExitGames.Client.Photon; + + #if SUPPORTED_UNITY || NETFX_CORE + using Hashtable = ExitGames.Client.Photon.Hashtable; + using SupportClass = ExitGames.Client.Photon.SupportClass; + #endif + + + /// + /// A simplified room with just the info required to list and join, used for the room listing in the lobby. + /// The properties are not settable (IsOpen, MaxPlayers, etc). + /// + /// + /// This class resembles info about available rooms, as sent by the Master server's lobby. + /// Consider all values as readonly. None are synced (only updated by events by server). + /// + public class RoomInfo + { + /// Used in lobby, to mark rooms that are no longer listed (for being full, closed or hidden). + public bool RemovedFromList; + + /// Backing field for property. + private Hashtable customProperties = new Hashtable(); + + /// Backing field for property. + protected byte maxPlayers = 0; + + /// Backing field for property. + protected int emptyRoomTtl = 0; + + /// Backing field for property. + protected int playerTtl = 0; + + /// Backing field for property. + protected string[] expectedUsers; + + /// Backing field for property. + protected bool isOpen = true; + + /// Backing field for property. + protected bool isVisible = true; + + /// Backing field for property. False unless the GameProperty is set to true (else it's not sent). + protected bool autoCleanUp = true; + + /// Backing field for property. + protected string name; + + /// Backing field for master client id (actorNumber). defined by server in room props and ev leave. + public int masterClientId; + + /// Backing field for property. + protected string[] propertiesListedInLobby; + + /// Read-only "cache" of custom properties of a room. Set via Room.SetCustomProperties (not available for RoomInfo class!). + /// All keys are string-typed and the values depend on the game/application. + /// + public Hashtable CustomProperties + { + get + { + return this.customProperties; + } + } + + /// The name of a room. Unique identifier for a room/match (per AppId + game-Version). + public string Name + { + get + { + return this.name; + } + } + + /// + /// Count of players currently in room. This property is overwritten by the Room class (used when you're in a Room). + /// + public int PlayerCount { get; private set; } + + /// + /// The limit of players for this room. This property is shown in lobby, too. + /// If the room is full (players count == maxplayers), joining this room will fail. + /// + /// + /// As part of RoomInfo this can't be set. + /// As part of a Room (which the player joined), the setter will update the server and all clients. + /// + public byte MaxPlayers + { + get + { + return this.maxPlayers; + } + } + + /// + /// Defines if the room can be joined. + /// This does not affect listing in a lobby but joining the room will fail if not open. + /// If not open, the room is excluded from random matchmaking. + /// Due to racing conditions, found matches might become closed even while you join them. + /// Simply re-connect to master and find another. + /// Use property "IsVisible" to not list the room. + /// + /// + /// As part of RoomInfo this can't be set. + /// As part of a Room (which the player joined), the setter will update the server and all clients. + /// + public bool IsOpen + { + get + { + return this.isOpen; + } + } + + /// + /// Defines if the room is listed in its lobby. + /// Rooms can be created invisible, or changed to invisible. + /// To change if a room can be joined, use property: open. + /// + /// + /// As part of RoomInfo this can't be set. + /// As part of a Room (which the player joined), the setter will update the server and all clients. + /// + public bool IsVisible + { + get + { + return this.isVisible; + } + } + + /// + /// Constructs a RoomInfo to be used in room listings in lobby. + /// + /// Name of the room and unique ID at the same time. + /// Properties for this room. + protected internal RoomInfo(string roomName, Hashtable roomProperties) + { + this.InternalCacheProperties(roomProperties); + + this.name = roomName; + } + + /// + /// Makes RoomInfo comparable (by name). + /// + public override bool Equals(object other) + { + RoomInfo otherRoomInfo = other as RoomInfo; + return (otherRoomInfo != null && this.Name.Equals(otherRoomInfo.name)); + } + + /// + /// Accompanies Equals, using the name's HashCode as return. + /// + /// + public override int GetHashCode() + { + return this.name.GetHashCode(); + } + + + /// Returns most interesting room values as string. + /// Summary of this RoomInfo instance. + public override string ToString() + { + return string.Format("Room: '{0}' {1},{2} {4}/{3} players.", this.name, this.isVisible ? "visible" : "hidden", this.isOpen ? "open" : "closed", this.maxPlayers, this.PlayerCount); + } + + /// Returns most interesting room values as string, including custom properties. + /// Summary of this RoomInfo instance. + public string ToStringFull() + { + return string.Format("Room: '{0}' {1},{2} {4}/{3} players.\ncustomProps: {5}", this.name, this.isVisible ? "visible" : "hidden", this.isOpen ? "open" : "closed", this.maxPlayers, this.PlayerCount, this.customProperties.ToStringFull()); + } + + /// Copies "well known" properties to fields (IsVisible, etc) and caches the custom properties (string-keys only) in a local hashtable. + /// New or updated properties to store in this RoomInfo. + protected internal virtual void InternalCacheProperties(Hashtable propertiesToCache) + { + if (propertiesToCache == null || propertiesToCache.Count == 0 || this.customProperties.Equals(propertiesToCache)) + { + return; + } + + // check of this game was removed from the list. in that case, we don't + // need to read any further properties + // list updates will remove this game from the game listing + if (propertiesToCache.ContainsKey(GamePropertyKey.Removed)) + { + this.RemovedFromList = (bool)propertiesToCache[GamePropertyKey.Removed]; + if (this.RemovedFromList) + { + return; + } + } + + // fetch the "well known" properties of the room, if available + if (propertiesToCache.ContainsKey(GamePropertyKey.MaxPlayers)) + { + this.maxPlayers = (byte)propertiesToCache[GamePropertyKey.MaxPlayers]; + } + + if (propertiesToCache.ContainsKey(GamePropertyKey.IsOpen)) + { + this.isOpen = (bool)propertiesToCache[GamePropertyKey.IsOpen]; + } + + if (propertiesToCache.ContainsKey(GamePropertyKey.IsVisible)) + { + this.isVisible = (bool)propertiesToCache[GamePropertyKey.IsVisible]; + } + + if (propertiesToCache.ContainsKey(GamePropertyKey.PlayerCount)) + { + this.PlayerCount = (int)((byte)propertiesToCache[GamePropertyKey.PlayerCount]); + } + + if (propertiesToCache.ContainsKey(GamePropertyKey.CleanupCacheOnLeave)) + { + this.autoCleanUp = (bool)propertiesToCache[GamePropertyKey.CleanupCacheOnLeave]; + } + + if (propertiesToCache.ContainsKey(GamePropertyKey.MasterClientId)) + { + this.masterClientId = (int)propertiesToCache[GamePropertyKey.MasterClientId]; + } + + if (propertiesToCache.ContainsKey(GamePropertyKey.PropsListedInLobby)) + { + this.propertiesListedInLobby = propertiesToCache[GamePropertyKey.PropsListedInLobby] as string[]; + } + + if (propertiesToCache.ContainsKey((byte)GamePropertyKey.ExpectedUsers)) + { + this.expectedUsers = (string[])propertiesToCache[GamePropertyKey.ExpectedUsers]; + } + + if (propertiesToCache.ContainsKey((byte)GamePropertyKey.EmptyRoomTtl)) + { + this.emptyRoomTtl = (int)propertiesToCache[GamePropertyKey.EmptyRoomTtl]; + } + + if (propertiesToCache.ContainsKey((byte)GamePropertyKey.PlayerTtl)) + { + this.playerTtl = (int)propertiesToCache[GamePropertyKey.PlayerTtl]; + } + + // merge the custom properties (from your application) to the cache (only string-typed keys will be kept) + this.customProperties.MergeStringKeys(propertiesToCache); + this.customProperties.StripKeysWithNullValues(); + } + } +} diff --git a/Assets/Photon/PhotonRealtime/Code/RoomInfo.cs.meta b/Assets/Photon/PhotonRealtime/Code/RoomInfo.cs.meta new file mode 100644 index 00000000..a1188f0c --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/RoomInfo.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 71760b65ad7d5b842942c797a0366fa7 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonRealtime/Code/SupportLogger.cs b/Assets/Photon/PhotonRealtime/Code/SupportLogger.cs new file mode 100644 index 00000000..36fb0dd0 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/SupportLogger.cs @@ -0,0 +1,434 @@ +// ---------------------------------------------------------------------------- +// +// Loadbalancing Framework for Photon - Copyright (C) 2018 Exit Games GmbH +// +// +// Implements callbacks of the Realtime API to logs selected information +// for support cases. +// +// developer@photonengine.com +// ---------------------------------------------------------------------------- + + + +#if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER +#define SUPPORTED_UNITY +#endif + + +namespace Photon.Realtime +{ + using System; + using System.Text; + using System.Collections; + using System.Collections.Generic; + + using Stopwatch = System.Diagnostics.Stopwatch; + + using ExitGames.Client.Photon; + + #if SUPPORTED_UNITY + using UnityEngine; + #endif + + #if SUPPORTED_UNITY || NETFX_CORE + using Hashtable = ExitGames.Client.Photon.Hashtable; + using SupportClass = ExitGames.Client.Photon.SupportClass; + #endif + + /// + /// Helper class to debug log basic information about Photon client and vital traffic statistics. + /// + /// + /// Set SupportLogger.Client for this to work. + /// + #if SUPPORTED_UNITY + [DisallowMultipleComponent] + #if PUN_2_OR_NEWER || FUSION_UNITY + [AddComponentMenu("")] // hide from Unity Menus and searches + #endif + public class SupportLogger : MonoBehaviour, IConnectionCallbacks , IMatchmakingCallbacks , IInRoomCallbacks, ILobbyCallbacks, IErrorInfoCallback + #else + public class SupportLogger : IConnectionCallbacks, IInRoomCallbacks, IMatchmakingCallbacks , ILobbyCallbacks + #endif + { + /// + /// Toggle to enable or disable traffic statistics logging. + /// + public bool LogTrafficStats = true; + //private bool loggedStillOfflineMessage; + + private LoadBalancingClient client; + + private Stopwatch startStopwatch; + + /// helps skip the initial OnApplicationPause call, which is not really of interest on start + private bool initialOnApplicationPauseSkipped = false; + + private int pingMax; + private int pingMin; + + /// + /// Photon client to log information and statistics from. + /// + public LoadBalancingClient Client + { + get { return this.client; } + set + { + if (this.client != value) + { + if (this.client != null) + { + this.client.RemoveCallbackTarget(this); + } + this.client = value; + if (this.client != null) + { + this.client.AddCallbackTarget(this); + } + } + } + } + + + #if SUPPORTED_UNITY + protected void Start() + { + this.LogBasics(); + + if (this.startStopwatch == null) + { + this.startStopwatch = new Stopwatch(); + this.startStopwatch.Start(); + } + } + + protected void OnDestroy() + { + this.Client = null; // will remove this SupportLogger as callback target + } + + protected void OnApplicationPause(bool pause) + { + if (!this.initialOnApplicationPauseSkipped) + { + this.initialOnApplicationPauseSkipped = true; + return; + } + + Debug.Log(string.Format("{0} SupportLogger OnApplicationPause({1}). Client: {2}.", this.GetFormattedTimestamp(), pause, this.client == null ? "null" : this.client.State.ToString())); + } + + protected void OnApplicationQuit() + { + this.CancelInvoke(); + } + #endif + + public void StartLogStats() + { + #if SUPPORTED_UNITY + this.InvokeRepeating("LogStats", 10, 10); + #else + Debug.Log("Not implemented for non-Unity projects."); + #endif + } + + public void StopLogStats() + { + #if SUPPORTED_UNITY + this.CancelInvoke("LogStats"); + #else + Debug.Log("Not implemented for non-Unity projects."); + #endif + } + + private void StartTrackValues() + { + #if SUPPORTED_UNITY + this.InvokeRepeating("TrackValues", 0.5f, 0.5f); + #else + Debug.Log("Not implemented for non-Unity projects."); + #endif + } + + private void StopTrackValues() + { + #if SUPPORTED_UNITY + this.CancelInvoke("TrackValues"); + #else + Debug.Log("Not implemented for non-Unity projects."); + #endif + } + + private string GetFormattedTimestamp() + { + if (this.startStopwatch == null) + { + this.startStopwatch = new Stopwatch(); + this.startStopwatch.Start(); + } + + TimeSpan span = this.startStopwatch.Elapsed; + if (span.Minutes > 0) + { + return string.Format("[{0}:{1}.{1}]", span.Minutes, span.Seconds, span.Milliseconds); + } + + return string.Format("[{0}.{1}]", span.Seconds, span.Milliseconds); + } + + + // called via InvokeRepeatedly + private void TrackValues() + { + if (this.client != null) + { + int currentRtt = this.client.LoadBalancingPeer.RoundTripTime; + if (currentRtt > this.pingMax) + { + this.pingMax = currentRtt; + } + if (currentRtt < this.pingMin) + { + this.pingMin = currentRtt; + } + } + } + + + /// + /// Debug logs vital traffic statistics about the attached Photon Client. + /// + public void LogStats() + { + if (this.client == null || this.client.State == ClientState.PeerCreated) + { + return; + } + + if (this.LogTrafficStats) + { + Debug.Log(string.Format("{0} SupportLogger {1} Ping min/max: {2}/{3}", this.GetFormattedTimestamp() , this.client.LoadBalancingPeer.VitalStatsToString(false) , this.pingMin , this.pingMax)); + } + } + + /// + /// Debug logs basic information (AppId, AppVersion, PeerID, Server address, Region) about the attached Photon Client. + /// + private void LogBasics() + { + if (this.client != null) + { + List buildProperties = new List(10); + #if SUPPORTED_UNITY + buildProperties.Add(Application.unityVersion); + buildProperties.Add(Application.platform.ToString()); + #endif + #if ENABLE_IL2CPP + buildProperties.Add("ENABLE_IL2CPP"); + #endif + #if ENABLE_MONO + buildProperties.Add("ENABLE_MONO"); + #endif + #if DEBUG + buildProperties.Add("DEBUG"); + #endif + #if MASTER + buildProperties.Add("MASTER"); + #endif + #if NET_4_6 + buildProperties.Add("NET_4_6"); + #endif + #if NET_STANDARD_2_0 + buildProperties.Add("NET_STANDARD_2_0"); + #endif + #if NETFX_CORE + buildProperties.Add("NETFX_CORE"); + #endif + #if NET_LEGACY + buildProperties.Add("NET_LEGACY"); + #endif + #if UNITY_64 + buildProperties.Add("UNITY_64"); + #endif + #if UNITY_FUSION + buildProperties.Add("UNITY_FUSION"); + #endif + + + StringBuilder sb = new StringBuilder(); + + string appIdShort = string.IsNullOrEmpty(this.client.AppId) || this.client.AppId.Length < 8 ? this.client.AppId : string.Concat(this.client.AppId.Substring(0, 8), "***"); + + sb.AppendFormat("{0} SupportLogger Info: ", this.GetFormattedTimestamp()); + sb.AppendFormat("AppID: \"{0}\" AppVersion: \"{1}\" Client: v{2} ({4}) Build: {3} ", appIdShort, this.client.AppVersion, PhotonPeer.Version, string.Join(", ", buildProperties.ToArray()), this.client.LoadBalancingPeer.TargetFramework); + if (this.client != null && this.client.LoadBalancingPeer != null && this.client.LoadBalancingPeer.SocketImplementation != null) + { + sb.AppendFormat("Socket: {0} ", this.client.LoadBalancingPeer.SocketImplementation.Name); + } + + sb.AppendFormat("UserId: \"{0}\" AuthType: {1} AuthMode: {2} {3} ", this.client.UserId, (this.client.AuthValues != null) ? this.client.AuthValues.AuthType.ToString() : "N/A", this.client.AuthMode, this.client.EncryptionMode); + + sb.AppendFormat("State: {0} ", this.client.State); + sb.AppendFormat("PeerID: {0} ", this.client.LoadBalancingPeer.PeerID); + sb.AppendFormat("NameServer: {0} Current Server: {1} IP: {2} Region: {3} ", this.client.NameServerHost, this.client.CurrentServerAddress, this.client.LoadBalancingPeer.ServerIpAddress, this.client.CloudRegion); + + Debug.LogWarning(sb.ToString()); + } + } + + + public void OnConnected() + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnConnected()."); + this.pingMax = 0; + this.pingMin = this.client.LoadBalancingPeer.RoundTripTime; + this.LogBasics(); + + if (this.LogTrafficStats) + { + this.client.LoadBalancingPeer.TrafficStatsEnabled = false; + this.client.LoadBalancingPeer.TrafficStatsEnabled = true; + this.StartLogStats(); + } + + this.StartTrackValues(); + } + + public void OnConnectedToMaster() + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnConnectedToMaster()."); + } + + public void OnFriendListUpdate(List friendList) + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnFriendListUpdate(friendList)."); + } + + public void OnJoinedLobby() + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnJoinedLobby(" + this.client.CurrentLobby + ")."); + } + + public void OnLeftLobby() + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnLeftLobby()."); + } + + public void OnCreateRoomFailed(short returnCode, string message) + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnCreateRoomFailed(" + returnCode+","+message+")."); + } + + public void OnJoinedRoom() + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnJoinedRoom(" + this.client.CurrentRoom + "). " + this.client.CurrentLobby + " GameServer:" + this.client.GameServerAddress); + } + + public void OnJoinRoomFailed(short returnCode, string message) + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnJoinRoomFailed(" + returnCode+","+message+")."); + } + + public void OnJoinRandomFailed(short returnCode, string message) + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnJoinRandomFailed(" + returnCode+","+message+")."); + } + + public void OnCreatedRoom() + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnCreatedRoom(" + this.client.CurrentRoom + "). " + this.client.CurrentLobby + " GameServer:" + this.client.GameServerAddress); + } + + public void OnLeftRoom() + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnLeftRoom()."); + } + + public void OnDisconnected(DisconnectCause cause) + { + this.StopLogStats(); + this.StopTrackValues(); + + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnDisconnected(" + cause + ")."); + this.LogBasics(); + this.LogStats(); + } + + public void OnRegionListReceived(RegionHandler regionHandler) + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnRegionListReceived(regionHandler)."); + } + + public void OnRoomListUpdate(List roomList) + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnRoomListUpdate(roomList). roomList.Count: " + roomList.Count); + } + + public void OnPlayerEnteredRoom(Player newPlayer) + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnPlayerEnteredRoom(" + newPlayer+")."); + } + + public void OnPlayerLeftRoom(Player otherPlayer) + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnPlayerLeftRoom(" + otherPlayer+")."); + } + + public void OnRoomPropertiesUpdate(Hashtable propertiesThatChanged) + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnRoomPropertiesUpdate(propertiesThatChanged)."); + } + + public void OnPlayerPropertiesUpdate(Player targetPlayer, Hashtable changedProps) + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnPlayerPropertiesUpdate(targetPlayer,changedProps)."); + } + + public void OnMasterClientSwitched(Player newMasterClient) + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnMasterClientSwitched(" + newMasterClient+")."); + } + + public void OnCustomAuthenticationResponse(Dictionary data) + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnCustomAuthenticationResponse(" + data.ToStringFull()+")."); + } + + public void OnCustomAuthenticationFailed (string debugMessage) + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnCustomAuthenticationFailed(" + debugMessage+")."); + } + + public void OnLobbyStatisticsUpdate(List lobbyStatistics) + { + Debug.Log(this.GetFormattedTimestamp() + " SupportLogger OnLobbyStatisticsUpdate(lobbyStatistics)."); + } + + + #if !SUPPORTED_UNITY + private static class Debug + { + public static void Log(string msg) + { + System.Diagnostics.Debug.WriteLine(msg); + } + public static void LogWarning(string msg) + { + System.Diagnostics.Debug.WriteLine(msg); + } + public static void LogError(string msg) + { + System.Diagnostics.Debug.WriteLine(msg); + } + } + #endif + + public void OnErrorInfo(ErrorInfo errorInfo) + { + Debug.LogError(errorInfo.ToString()); + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonRealtime/Code/SupportLogger.cs.meta b/Assets/Photon/PhotonRealtime/Code/SupportLogger.cs.meta new file mode 100644 index 00000000..7e8b7ccb --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/SupportLogger.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9b61c60d38639484ebbd7f2100dd3d08 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonRealtime/Code/Unity.meta b/Assets/Photon/PhotonRealtime/Code/Unity.meta new file mode 100644 index 00000000..96bf0eed --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/Unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: fa14aa576f7e18f4bb6c4c93368a235d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonRealtime/Code/Unity/Editor.meta b/Assets/Photon/PhotonRealtime/Code/Unity/Editor.meta new file mode 100644 index 00000000..4d10118c --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/Unity/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a02814c0303a60f488813e6111993aaa +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonRealtime/Code/Unity/Editor/AccountService.cs b/Assets/Photon/PhotonRealtime/Code/Unity/Editor/AccountService.cs new file mode 100644 index 00000000..e3f2397b --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/Unity/Editor/AccountService.cs @@ -0,0 +1,260 @@ +// ---------------------------------------------------------------------------- +// +// Photon Cloud Account Service - Copyright (C) 2012 Exit Games GmbH +// +// +// Provides methods to register a new user-account for the Photon Cloud and +// get the resulting appId. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +#if UNITY_2017_4_OR_NEWER +#define SUPPORTED_UNITY +#endif + + +#if UNITY_EDITOR + +namespace Photon.Realtime +{ + using System; + using UnityEngine; + using System.Collections.Generic; + using System.Text.RegularExpressions; + using ExitGames.Client.Photon; + + + /// + /// Creates a instance of the Account Service to register Photon Cloud accounts. + /// + public class AccountService + { + private const string ServiceUrl = "https://partner.photonengine.com/api/{0}/User/RegisterEx"; + + private readonly Dictionary RequestHeaders = new Dictionary + { + { "Content-Type", "application/json" }, + { "x-functions-key", "" } + }; + + private const string DefaultContext = "Unity"; + + private const string DefaultToken = "VQ920wVUieLHT9c3v1ZCbytaLXpXbktUztKb3iYLCdiRKjUagcl6eg=="; + + /// + /// third parties custom context, if null, defaults to DefaultContext property value + /// + public string CustomContext = null; // "PartnerCode" on the server + + /// + /// third parties custom token. If null, defaults to DefaultToken property value + /// + public string CustomToken = null; + + /// + /// If this AccountService instance is currently waiting for a response. While pending, RegisterByEmail is blocked. + /// + public bool RequestPendingResult = false; + + /// + /// Attempts to create a Photon Cloud Account asynchronously. Blocked while RequestPendingResult is true. + /// + /// + /// Once your callback is called, check ReturnCode, Message and AppId to get the result of this attempt. + /// + /// Email of the account. + /// Defines which type of Photon-service is being requested. + /// Called when the result is available. + /// Called when the request failed. + /// Can be used to identify the origin of the registration (which package is being used). + public bool RegisterByEmail(string email, List serviceTypes, Action callback = null, Action errorCallback = null, string origin = null) + { + if (this.RequestPendingResult) + { + Debug.LogError("Registration request pending result. Not sending another."); + return false; + } + + if (!IsValidEmail(email)) + { + Debug.LogErrorFormat("Email \"{0}\" is not valid", email); + return false; + } + + string serviceTypeString = GetServiceTypesFromList(serviceTypes); + if (string.IsNullOrEmpty(serviceTypeString)) + { + Debug.LogError("serviceTypes string is null or empty"); + return false; + } + + string fullUrl = GetUrlWithQueryStringEscaped(email, serviceTypeString, origin); + + RequestHeaders["x-functions-key"] = string.IsNullOrEmpty(CustomToken) ? DefaultToken : CustomToken; + + + this.RequestPendingResult = true; + + PhotonEditorUtils.StartCoroutine( + PhotonEditorUtils.HttpPost(fullUrl, + RequestHeaders, + null, + s => + { + this.RequestPendingResult = false; + //Debug.LogWarningFormat("received response {0}", s); + if (string.IsNullOrEmpty(s)) + { + if (errorCallback != null) + { + errorCallback("Server's response was empty. Please register through account website during this service interruption."); + } + } + else + { + AccountServiceResponse ase = this.ParseResult(s); + if (ase == null) + { + if (errorCallback != null) + { + errorCallback("Error parsing registration response. Please try registering from account website"); + } + } + else if (callback != null) + { + callback(ase); + } + } + }, + e => + { + this.RequestPendingResult = false; + if (errorCallback != null) + { + errorCallback(e); + } + }) + ); + return true; + } + + + private string GetUrlWithQueryStringEscaped(string email, string serviceTypes, string originAv) + { + string emailEscaped = UnityEngine.Networking.UnityWebRequest.EscapeURL(email); + string st = UnityEngine.Networking.UnityWebRequest.EscapeURL(serviceTypes); + string uv = UnityEngine.Networking.UnityWebRequest.EscapeURL(Application.unityVersion); + string serviceUrl = string.Format(ServiceUrl, string.IsNullOrEmpty(CustomContext) ? DefaultContext : CustomContext ); + + return string.Format("{0}?email={1}&st={2}&uv={3}&av={4}", serviceUrl, emailEscaped, st, uv, originAv); + } + + /// + /// Reads the Json response and applies it to local properties. + /// + /// + private AccountServiceResponse ParseResult(string result) + { + try + { + AccountServiceResponse res = JsonUtility.FromJson(result); + // Unity's JsonUtility does not support deserializing Dictionary, we manually parse it, dirty & ugly af, better then using a 3rd party lib + if (res.ReturnCode == AccountServiceReturnCodes.Success) + { + string[] parts = result.Split(new[] { "\"ApplicationIds\":{" }, StringSplitOptions.RemoveEmptyEntries); + parts = parts[1].Split('}'); + string applicationIds = parts[0]; + if (!string.IsNullOrEmpty(applicationIds)) + { + parts = applicationIds.Split(new[] { ',', '"', ':' }, StringSplitOptions.RemoveEmptyEntries); + res.ApplicationIds = new Dictionary(parts.Length / 2); + for (int i = 0; i < parts.Length; i = i + 2) + { + res.ApplicationIds.Add(parts[i], parts[i + 1]); + } + } + else + { + Debug.LogError("The server did not return any AppId, ApplicationIds was empty in the response."); + return null; + } + } + return res; + } + catch (Exception ex) // probably JSON parsing exception, check if returned string is valid JSON + { + Debug.LogException(ex); + return null; + } + } + + /// + /// Turns the list items to a comma separated string. Returns null if list is null or empty. + /// + /// List of service types. + /// Returns null if list is null or empty. + private static string GetServiceTypesFromList(List appTypes) + { + if (appTypes == null || appTypes.Count <= 0) + { + return null; + } + + string serviceTypes = ((int)appTypes[0]).ToString(); + for (int i = 1; i < appTypes.Count; i++) + { + int appType = (int)appTypes[i]; + serviceTypes = string.Format("{0},{1}", serviceTypes, appType); + } + + return serviceTypes; + } + + // RFC2822 compliant matching 99.9% of all email addresses in actual use today + // according to http://www.regular-expressions.info/email.html [22.02.2012] + private static Regex reg = new Regex("^((?>[a-zA-Z\\d!#$%&'*+\\-/=?^_{|}~]+\\x20*|\"((?=[\\x01-\\x7f])[^\"\\]|\\[\\x01-\\x7f])*\"\\x20*)*(?<))?((?!\\.)(?>\\.?[a-zA-Z\\d!#$%&'*+\\-/=?^_{|}~]+)+|\"((?=[\\x01-\\x7f])[^\"\\]|\\[\\x01-\\x7f])*\")@(((?!-)[a-zA-Z\\d\\-]+(?)$", + RegexOptions.CultureInvariant | RegexOptions.IgnoreCase); + public static bool IsValidEmail(string mailAddress) + { + if (string.IsNullOrEmpty(mailAddress)) + { + return false; + } + var result = reg.Match(mailAddress); + return result.Success; + } + } + + [Serializable] + public class AccountServiceResponse + { + public int ReturnCode; + public string Message; + public Dictionary ApplicationIds; // Unity's JsonUtility does not support deserializing Dictionary + } + + + public class AccountServiceReturnCodes + { + public static int Success = 0; + public static int EmailAlreadyRegistered = 8; + public static int InvalidParameters = 12; + } + + public enum ServiceTypes + { + Realtime = 0, + Turnbased = 1, + Chat = 2, + Voice = 3, + TrueSync = 4, + Pun = 5, + Thunder = 6, + Quantum = 7, + Fusion = 8, + Bolt = 20 + } +} + +#endif \ No newline at end of file diff --git a/Assets/Photon/PhotonRealtime/Code/Unity/Editor/AccountService.cs.meta b/Assets/Photon/PhotonRealtime/Code/Unity/Editor/AccountService.cs.meta new file mode 100644 index 00000000..a070b17d --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/Unity/Editor/AccountService.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 166dfe22956ef0341b28e18d0499e363 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonRealtime/Code/Unity/Editor/PhotonEditorUtils.cs b/Assets/Photon/PhotonRealtime/Code/Unity/Editor/PhotonEditorUtils.cs new file mode 100644 index 00000000..ced6a0f5 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/Unity/Editor/PhotonEditorUtils.cs @@ -0,0 +1,333 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// Unity Editor Utils +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +#pragma warning disable 618 // Deprecation warnings + + +#if UNITY_2017_4_OR_NEWER +#define SUPPORTED_UNITY +#endif + + +#if UNITY_EDITOR + +namespace Photon.Realtime +{ + using System; + using System.Collections.Generic; + using System.Linq; + + using UnityEditor; + using UnityEngine; + + using System.IO; + using System.Text; + using UnityEngine.Networking; + + + [InitializeOnLoad] + public static class PhotonEditorUtils + { + /// Stores a flag which tells Editor scripts if the PhotonEditor.OnProjectChanged got called since initialization. + /// If not, the AssetDatabase is likely not usable yet and instances of ScriptableObject can't be loaded. + public static bool ProjectChangedWasCalled; + + + /// True if the ChatClient of the Photon Chat API is available. If so, the editor may (e.g.) show additional options in settings. + public static bool HasChat; + + /// True if the VoiceClient of the Photon Voice API is available. If so, the editor may (e.g.) show additional options in settings. + public static bool HasVoice; + + /// True if PUN is in the project. + public static bool HasPun; + + /// True if Photon Fusion is available in the project (and enabled). + public static bool HasFusion; + + /// True if the PhotonEditorUtils checked the available products / APIs. If so, the editor may (e.g.) show additional options in settings. + public static bool HasCheckedProducts; + + static PhotonEditorUtils() + { + HasVoice = Type.GetType("Photon.Voice.VoiceClient, Assembly-CSharp") != null || Type.GetType("Photon.Voice.VoiceClient, Assembly-CSharp-firstpass") != null || Type.GetType("Photon.Voice.VoiceClient, PhotonVoice.API") != null; + HasChat = Type.GetType("Photon.Chat.ChatClient, Assembly-CSharp") != null || Type.GetType("Photon.Chat.ChatClient, Assembly-CSharp-firstpass") != null || Type.GetType("Photon.Chat.ChatClient, PhotonChat") != null; + HasPun = Type.GetType("Photon.Pun.PhotonNetwork, Assembly-CSharp") != null || Type.GetType("Photon.Pun.PhotonNetwork, Assembly-CSharp-firstpass") != null || Type.GetType("Photon.Pun.PhotonNetwork, PhotonUnityNetworking") != null; + #if FUSION_WEAVER + HasFusion = true; + #endif + PhotonEditorUtils.HasCheckedProducts = true; + + if (EditorPrefs.HasKey("DisablePun") && EditorPrefs.GetBool("DisablePun")) + { + HasPun = false; + } + + if (HasPun) + { + // MOUNTING SYMBOLS + #if !PHOTON_UNITY_NETWORKING + AddScriptingDefineSymbolToAllBuildTargetGroups("PHOTON_UNITY_NETWORKING"); + #endif + + #if !PUN_2_0_OR_NEWER + AddScriptingDefineSymbolToAllBuildTargetGroups("PUN_2_0_OR_NEWER"); + #endif + + #if !PUN_2_OR_NEWER + AddScriptingDefineSymbolToAllBuildTargetGroups("PUN_2_OR_NEWER"); + #endif + + #if !PUN_2_19_OR_NEWER + AddScriptingDefineSymbolToAllBuildTargetGroups("PUN_2_19_OR_NEWER"); + #endif + } + } + + /// + /// Adds a given scripting define symbol to all build target groups + /// You can see all scripting define symbols ( not the internal ones, only the one for this project), in the PlayerSettings inspector + /// + /// Define symbol. + public static void AddScriptingDefineSymbolToAllBuildTargetGroups(string defineSymbol) + { + foreach (BuildTarget target in Enum.GetValues(typeof(BuildTarget))) + { + BuildTargetGroup group = BuildPipeline.GetBuildTargetGroup(target); + + if (group == BuildTargetGroup.Unknown) + { + continue; + } + + var defineSymbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(group).Split(';').Select(d => d.Trim()).ToList(); + + if (!defineSymbols.Contains(defineSymbol)) + { + defineSymbols.Add(defineSymbol); + + try + { + PlayerSettings.SetScriptingDefineSymbolsForGroup(group, string.Join(";", defineSymbols.ToArray())); + } + catch (Exception e) + { + Debug.Log("Could not set Photon " + defineSymbol + " defines for build target: " + target + " group: " + group + " " + e); + } + } + } + } + + + /// + /// Removes PUN2's Script Define Symbols from project + /// + public static void CleanUpPunDefineSymbols() + { + foreach (BuildTarget target in Enum.GetValues(typeof(BuildTarget))) + { + BuildTargetGroup group = BuildPipeline.GetBuildTargetGroup(target); + + if (group == BuildTargetGroup.Unknown) + { + continue; + } + + var defineSymbols = PlayerSettings.GetScriptingDefineSymbolsForGroup(group) + .Split(';') + .Select(d => d.Trim()) + .ToList(); + + List newDefineSymbols = new List(); + foreach (var symbol in defineSymbols) + { + if ("PHOTON_UNITY_NETWORKING".Equals(symbol) || symbol.StartsWith("PUN_2_")) + { + continue; + } + + newDefineSymbols.Add(symbol); + } + + try + { + PlayerSettings.SetScriptingDefineSymbolsForGroup(group, string.Join(";", newDefineSymbols.ToArray())); + } + catch (Exception e) + { + Debug.LogErrorFormat("Could not set clean up PUN2's define symbols for build target: {0} group: {1}, {2}", target, group, e); + } + } + } + + + /// + /// Gets the parent directory of a path. Recursive Function, will return null if parentName not found + /// + /// The parent directory + /// Path. + /// Parent name. + public static string GetParent(string path, string parentName) + { + var dir = new DirectoryInfo(path); + + if (dir.Parent == null) + { + return null; + } + + if (string.IsNullOrEmpty(parentName)) + { + return dir.Parent.FullName; + } + + if (dir.Parent.Name == parentName) + { + return dir.Parent.FullName; + } + + return GetParent(dir.Parent.FullName, parentName); + } + + /// + /// Check if a GameObject is a prefab asset or part of a prefab asset, as opposed to an instance in the scene hierarchy + /// + /// true, if a prefab asset or part of it, false otherwise. + /// The GameObject to check + public static bool IsPrefab(GameObject go) + { + #if UNITY_2021_2_OR_NEWER + return UnityEditor.SceneManagement.PrefabStageUtility.GetPrefabStage(go) != null || EditorUtility.IsPersistent(go); + #elif UNITY_2018_3_OR_NEWER + return UnityEditor.Experimental.SceneManagement.PrefabStageUtility.GetPrefabStage(go) != null || EditorUtility.IsPersistent(go); + #else + return EditorUtility.IsPersistent(go); + #endif + } + + //https://forum.unity.com/threads/using-unitywebrequest-in-editor-tools.397466/#post-4485181 + public static void StartCoroutine(System.Collections.IEnumerator update) + { + EditorApplication.CallbackFunction closureCallback = null; + + closureCallback = () => + { + try + { + if (update.MoveNext() == false) + { + EditorApplication.update -= closureCallback; + } + } + catch (Exception ex) + { + Debug.LogException(ex); + EditorApplication.update -= closureCallback; + } + }; + + EditorApplication.update += closureCallback; + } + + public static System.Collections.IEnumerator HttpPost(string url, Dictionary headers, byte[] payload, Action successCallback, Action errorCallback) + { + using (UnityWebRequest w = new UnityWebRequest(url, "POST")) + { + if (payload != null) + { + w.uploadHandler = new UploadHandlerRaw(payload); + } + w.downloadHandler = new DownloadHandlerBuffer(); + if (headers != null) + { + foreach (var header in headers) + { + w.SetRequestHeader(header.Key, header.Value); + } + } + + #if UNITY_2017_2_OR_NEWER + yield return w.SendWebRequest(); + #else + yield return w.Send(); + #endif + + while (w.isDone == false) + yield return null; + + #if UNITY_2020_2_OR_NEWER + if (w.result == UnityWebRequest.Result.ProtocolError || w.result == UnityWebRequest.Result.ConnectionError || w.result == UnityWebRequest.Result.DataProcessingError) + #elif UNITY_2017_1_OR_NEWER + if (w.isNetworkError || w.isHttpError) + #endif + { + if (errorCallback != null) + { + errorCallback(w.error); + } + } + else + { + if (successCallback != null) + { + successCallback(w.downloadHandler.text); + } + } + } + } + /// + /// Creates a Foldout using a toggle with (GUIStyle)"Foldout") and a separate label. This is a workaround for 2019.3 foldout arrows not working. + /// + /// + /// + /// Returns the new isExpanded value. + public static bool Foldout(this SerializedProperty isExpanded, GUIContent label) + { + var rect = EditorGUILayout.GetControlRect(); + bool newvalue = EditorGUI.Toggle(new Rect(rect) { xMin = rect.xMin + 2 }, GUIContent.none, isExpanded.boolValue, (GUIStyle)"Foldout"); + EditorGUI.LabelField(new Rect(rect) { xMin = rect.xMin + 15 }, label); + if (newvalue != isExpanded.boolValue) + { + isExpanded.boolValue = newvalue; + isExpanded.serializedObject.ApplyModifiedProperties(); + } + return newvalue; + } + + /// + /// Creates a Foldout using a toggle with (GUIStyle)"Foldout") and a separate label. This is a workaround for 2019.3 foldout arrows not working. + /// + /// + /// + /// Returns the new isExpanded value. + public static bool Foldout(this bool isExpanded, GUIContent label) + { + var rect = EditorGUILayout.GetControlRect(); + bool newvalue = EditorGUI.Toggle(new Rect(rect) { xMin = rect.xMin + 2 }, GUIContent.none, isExpanded, (GUIStyle)"Foldout"); + EditorGUI.LabelField(new Rect(rect) { xMin = rect.xMin + 15 }, label); + return newvalue; + } + } + + + public class CleanUpDefinesOnPunDelete : UnityEditor.AssetModificationProcessor + { + public static AssetDeleteResult OnWillDeleteAsset(string assetPath, RemoveAssetOptions rao) + { + if ("Assets/Photon/PhotonUnityNetworking".Equals(assetPath)) + { + PhotonEditorUtils.CleanUpPunDefineSymbols(); + } + + return AssetDeleteResult.DidNotDelete; + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Photon/PhotonRealtime/Code/Unity/Editor/PhotonEditorUtils.cs.meta b/Assets/Photon/PhotonRealtime/Code/Unity/Editor/PhotonEditorUtils.cs.meta new file mode 100644 index 00000000..90d608f3 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/Unity/Editor/PhotonEditorUtils.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 607340ca505d53d4f8e785423fac7964 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonRealtime/Code/Unity/PhotonAppSettings.cs b/Assets/Photon/PhotonRealtime/Code/Unity/PhotonAppSettings.cs new file mode 100644 index 00000000..66b57ebc --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/Unity/PhotonAppSettings.cs @@ -0,0 +1,116 @@ +// ----------------------------------------------------------------------- +// +// +// developer@photonengine.com +// ---------------------------------------------------------------------------- + +#if UNITY_2017_4_OR_NEWER +#define SUPPORTED_UNITY +#endif + + +#if !PHOTON_UNITY_NETWORKING + +namespace Photon.Realtime +{ + using System; + using System.IO; + using UnityEditor; + using UnityEngine; + /// + /// Collection of connection-relevant settings, used internally by PhotonNetwork.ConnectUsingSettings. + /// + /// + /// Includes the AppSettings class from the Realtime APIs plus some other, PUN-relevant, settings. + [Serializable] + [HelpURL("https://doc.photonengine.com/en-us/pun/v2/getting-started/initial-setup")] + public class PhotonAppSettings : ScriptableObject + { + [Tooltip("Core Photon Server/Cloud settings.")] + public AppSettings AppSettings; + + #if UNITY_EDITOR + [HideInInspector] + public bool DisableAutoOpenWizard; + //public bool ShowSettings; + //public bool DevRegionSetOnce; + #endif + + private static PhotonAppSettings instance; + + /// Serialized server settings, written by the Setup Wizard for use in ConnectUsingSettings. + public static PhotonAppSettings Instance + { + get + { + if (instance == null) + { + LoadOrCreateSettings(); + } + + return instance; + } + + private set { instance = value; } + } + + + + public static void LoadOrCreateSettings() + { + if (instance != null) + { + Debug.LogWarning("Instance is not null. Will not LoadOrCreateSettings()."); + return; + } + + + #if UNITY_EDITOR + // let's check if the AssetDatabase finds the file; aimed to avoid multiple files being created, potentially a futile step + AssetDatabase.Refresh(); + #endif + + // try to load the resource / asset (ServerSettings a.k.a. PhotonServerSettings) + instance = (PhotonAppSettings)Resources.Load(typeof(PhotonAppSettings).Name, typeof(PhotonAppSettings)); + if (instance != null) + { + //Debug.LogWarning("Settings from Resources."); // DEBUG + return; + } + + + // create it if not loaded + if (instance == null) + { + instance = (PhotonAppSettings)CreateInstance(typeof(PhotonAppSettings)); + if (instance == null) + { + Debug.LogError("Failed to create ServerSettings. PUN is unable to run this way. If you deleted it from the project, reload the Editor."); + return; + } + + //Debug.LogWarning("Settings created!"); // DEBUG + } + + // in the editor, store the settings file as it's not loaded + #if UNITY_EDITOR + string punResourcesDirectory = "Assets/Photon/Resources/"; + string serverSettingsAssetPath = punResourcesDirectory + typeof(PhotonAppSettings).Name + ".asset"; + string serverSettingsDirectory = Path.GetDirectoryName(serverSettingsAssetPath); + + if (!Directory.Exists(serverSettingsDirectory)) + { + Directory.CreateDirectory(serverSettingsDirectory); + AssetDatabase.ImportAsset(serverSettingsDirectory); + } + + AssetDatabase.CreateAsset(instance, serverSettingsAssetPath); + AssetDatabase.SaveAssets(); + + + //Debug.Log("Settings stored to DB."); // DEBUG + #endif + } + } +} +#endif \ No newline at end of file diff --git a/Assets/Photon/PhotonRealtime/Code/Unity/PhotonAppSettings.cs.meta b/Assets/Photon/PhotonRealtime/Code/Unity/PhotonAppSettings.cs.meta new file mode 100644 index 00000000..63c192e1 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/Unity/PhotonAppSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a389b614f52fbf347a1533dbbf245033 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonRealtime/Code/WebRpc.cs b/Assets/Photon/PhotonRealtime/Code/WebRpc.cs new file mode 100644 index 00000000..b0177e3a --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/WebRpc.cs @@ -0,0 +1,187 @@ +// ---------------------------------------------------------------------------- +// +// Loadbalancing Framework for Photon - Copyright (C) 2018 Exit Games GmbH +// +// +// This class wraps responses of a Photon WebRPC call, coming from a +// third party web service. +// +// developer@photonengine.com +// ---------------------------------------------------------------------------- + +#if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER +#define SUPPORTED_UNITY +#endif + + +namespace Photon.Realtime +{ + using System.Collections.Generic; + using ExitGames.Client.Photon; + + #if SUPPORTED_UNITY || NETFX_CORE + using Hashtable = ExitGames.Client.Photon.Hashtable; + using SupportClass = ExitGames.Client.Photon.SupportClass; + #endif + + + /// Reads an operation response of a WebRpc and provides convenient access to most common values. + /// + /// See LoadBalancingClient.OpWebRpc.
    + /// Create a WebRpcResponse to access common result values.
    + /// The operationResponse.OperationCode should be: OperationCode.WebRpc.
    + ///
    + public class WebRpcResponse + { + /// Name of the WebRpc that was called. + public string Name { get; private set; } + + /// ResultCode of the WebService that answered the WebRpc. + /// + /// 0 is: "OK" for WebRPCs.
    + /// -1 is: No ResultCode by WebRpc service (check ).
    + /// Other ResultCode are defined by the individual WebRpc and service. + ///
    + public int ResultCode { get; private set; } + [System.Obsolete("Use ResultCode instead")] + public int ReturnCode + { + get { return ResultCode; } + } + + /// Might be empty or null. + public string Message { get; private set; } + [System.Obsolete("Use Message instead")] + public string DebugMessage + { + get { return Message; } + } + + + /// Other key/values returned by the webservice that answered the WebRpc. + public Dictionary Parameters { get; private set; } + + /// An OperationResponse for a WebRpc is needed to read it's values. + public WebRpcResponse(OperationResponse response) + { + object value; + if (response.Parameters.TryGetValue(ParameterCode.UriPath, out value)) + { + this.Name = value as string; + } + + this.ResultCode = -1; + if (response.Parameters.TryGetValue(ParameterCode.WebRpcReturnCode, out value)) + { + this.ResultCode = (byte)value; + } + + if (response.Parameters.TryGetValue(ParameterCode.WebRpcParameters, out value)) + { + this.Parameters = value as Dictionary; + } + + if (response.Parameters.TryGetValue(ParameterCode.WebRpcReturnMessage, out value)) + { + this.Message = value as string; + } + } + + /// Turns the response into an easier to read string. + /// String resembling the result. + public string ToStringFull() + { + return string.Format("{0}={2}: {1} \"{3}\"", this.Name, SupportClass.DictionaryToString(this.Parameters), this.ResultCode, this.Message); + } + } + + + /// + /// Optional flags to be used in Photon client SDKs with Op RaiseEvent and Op SetProperties. + /// Introduced mainly for webhooks 1.2 to control behavior of forwarded HTTP requests. + /// + public class WebFlags + { + + public readonly static WebFlags Default = new WebFlags(0); + public byte WebhookFlags; + /// + /// Indicates whether to forward HTTP request to web service or not. + /// + public bool HttpForward + { + get { return (WebhookFlags & HttpForwardConst) != 0; } + set { + if (value) + { + WebhookFlags |= HttpForwardConst; + } + else + { + WebhookFlags = (byte) (WebhookFlags & ~(1 << 0)); + } + } + } + public const byte HttpForwardConst = 0x01; + /// + /// Indicates whether to send AuthCookie of actor in the HTTP request to web service or not. + /// + public bool SendAuthCookie + { + get { return (WebhookFlags & SendAuthCookieConst) != 0; } + set { + if (value) + { + WebhookFlags |= SendAuthCookieConst; + } + else + { + WebhookFlags = (byte)(WebhookFlags & ~(1 << 1)); + } + } + } + public const byte SendAuthCookieConst = 0x02; + /// + /// Indicates whether to send HTTP request synchronously or asynchronously to web service. + /// + public bool SendSync + { + get { return (WebhookFlags & SendSyncConst) != 0; } + set { + if (value) + { + WebhookFlags |= SendSyncConst; + } + else + { + WebhookFlags = (byte)(WebhookFlags & ~(1 << 2)); + } + } + } + public const byte SendSyncConst = 0x04; + /// + /// Indicates whether to send serialized game state in HTTP request to web service or not. + /// + public bool SendState + { + get { return (WebhookFlags & SendStateConst) != 0; } + set { + if (value) + { + WebhookFlags |= SendStateConst; + } + else + { + WebhookFlags = (byte)(WebhookFlags & ~(1 << 3)); + } + } + } + public const byte SendStateConst = 0x08; + + public WebFlags(byte webhookFlags) + { + WebhookFlags = webhookFlags; + } + } + +} diff --git a/Assets/Photon/PhotonRealtime/Code/WebRpc.cs.meta b/Assets/Photon/PhotonRealtime/Code/WebRpc.cs.meta new file mode 100644 index 00000000..8a235c93 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/WebRpc.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 294b0a24f6c841f48acf4bf696a4d764 +timeCreated: 1493901324 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonRealtime/Code/changes-realtime.txt b/Assets/Photon/PhotonRealtime/Code/changes-realtime.txt new file mode 100644 index 00000000..e1883504 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/changes-realtime.txt @@ -0,0 +1,401 @@ + +Photon Realtime C# Client - Changelog +Exit Games GmbH - www.photonengine.com - forum.photonengine.com + + +Version 4.1.6.17 (02. August 2022) + Added: DisconnectCause.ApplicationQuit. Can be used when your app disconnects on application quit: lbc.Disconnect(DisconnectCause.ApplicationQuit). + Note: The ConnectionHandler will use this to differentiate a regular disconnect from one that is triggered by Unity / app-quit. + +Version 4.1.6.16 (22. June 2022) + Fixed: Formatting issue in debug logs for WebGL exports. + Changed: Best Region selection. A weighted ping value is used now. Out of the 5 attempts, the worst is discarded (usually the first) and the best is counted in twice (it is the fastest). In WebGL, HTTP is used to ping servers and when a request didn't finish, the next attempt will be delayed a bit. + Changed: HTTP Ping class for Best Region selection in WebGL changed from Unity's WWW class to UnityWebRequest. + +Version 4.1.6.15 (10. June 2022) + Changed: Sharding / Clustering support. Clients will no longer connect to a random cluster by default. To do so, make sure to add "/*" to the region code, if your game supports sharding / multiple clusters. This is only done in very high CCU cases. + +Version 4.1.6.14 (26. April 2022) + Added: Warning log if SocketWebTcp could not be found at runtime in Unity WebGL exports. + +Version 4.1.6.11 (22. November 2021) + Changed: For Unity, PhotonEditorUtils.IsPrefab to use the correct prefab stage utility for Unity 2021.2 and up. + Added: CustomAuthenticationType.Epic to authenticate via Epic Online Services (EOS). + Added: CustomAuthenticationType.FacebookGaming to authenticate via Facebook Gaming services. + +Version 4.1.6.8 (12. October 2021) + Changed: CustomTypesUnity. The default Quaternion is now Quaternion.identity (which is a legit Quaterion, as opposed to the previously used new Quaternion). Added const values for each type's byte-size. + Added: Checks to avoid creating a player for actorNumber 0. + Added: CheckIfOpCanBeSent to OpJoinOrCreateRoom and OpRejoinRoom. Avoids changing state and repeating operation. + Removed: Surplus checks if the LoadBalancingPeer is non-null. This is done in CheckIfOpCanBeSent(), too. + +Version 4.1.6.7 (27. September 2021) + Replaced: Pointer_stringify with UTF8ToString in WebSocket.jslib. It was removed from newer Emscripten versions and is no longer working when exporting from Unity 2021.2. betas. Replaced with UTF8ToString. Tested in 2018.4.x and a current beta. + Fixed: Usage of websocketType for console. + +Version 4.1.6.6 (17. September 2021) + Removed: Usage of class EncryptorNative. This needs to be replaced by EncryptorNativeSource where the Native Socket Plugin should be used. + Changed: The Native Socket Plugin can also be used for UDP on Xbox (not in Editor). + Removed: CheckConnectSetupXboxOne() as platform requirements were turned into recommendations. + Changed: For Xbox, order of checked assemblies when getting Type SocketNativeSource. It's more likely to be in Assembly-CSharp. + +Version 4.1.6.5 (24. August 2021) + Updated: The default name server host to "ns.photonengine.io". When using WSS on this, it expects TLS1.2 (Win 7 and old Unity versions may not support this). + Fixed: Internally used OpJoinRoom() will now send custom room properties (all RoomOptions set) to the Master Server, too. This allows the Master Server to immediately find the room, even if property filtering is used. This was affecting matchmaking with OpJoinOrCreateRoom. + +Version 4.1.6.4 (26. July 2021) + Internal: Added PhotonEditorTools.HasFusion value and added AppSettings.AppIdFusion as well as ClientAppType.Fusion. + Added: ConnectionHandler.DisconnectAfterKeepAlive to let the fallback thread call Disconnect after the KeepAliveInBackground time. Default: false. + Changed: ConnectionHandler timer implementation to use a Stopwatch, which is a little more clear about what happens. PUN does not expose this value, so you need to set it in code (change the default). + Added: Hashtable specific extension methods StripKeysWithNullValues and StripToStringKeys which allocates less. + +Version 4.1.6.3 (06. July 2021) + Added: Handling of ErrorCode Invalid Operation (-2) for Authenticate requests. This becomes a DisconnectCause = OperationNotAllowedInCurrentState. + +Version 4.1.6.2 (17. June 2021) + Changed: The enumeration CustomAuthenticationType was changed to fix naming inconsistencies. Use PlayStation4 and PlayStation5 respectively. Old variants are available as obsolete. + +Version 4.1.6.0 (19. May 2021) + Changed: As tokenless auth is no longer allowed when using a Name Server, there is now an error log and authentication will not be done from the client. This is not happening in the normal workflow but a precaution to detect issues, should something unpredicted happen. + Changed: SupportLogger formatting of the timestamp to include the minutes (if available). Hours will not be logged (so in the logs, there is a wrap around of log-timestamps after 60 min). + +Version 4.1.5.4 (13. April 2021) + Changed: Connect-methods in the LoadBalancingClient now fail "early" when the peer is already connected. This prevents unintentional modifications of the state and auth token. + Added: The LoadBalancingClient will now check if the token is available when the AuthMode 'AuthOnce' or 'AuthOnceWss' require it. If it's not available, the client will log an error and prevent the connection attempt. If this happens, the client is already in a bad state and won't connect anyways. + +Version 4.1.5.3 (07. April 2021) + Fixed: Protocol Fallback will now connect correctly when a fixed region is set. + Changed: ConnectUsingSettings internally sets connectToBestRegion value, based on CloudRegion (equals appSettings.FixedRegion). This avoids pinging when a fixed region is set. Leads to callback OnDisconnected(InvalidRegion). + +Version 4.1.5.2 (12. March 2021) + Changed: Region pinging will now apply port overrides for the Master Server port for UDP and address-based pinging (in the address and the UDP pings). + Changed: The RegionHandler gets the override port from lbc.ServerPortOverrides.MasterServerPort. If it's 0, the default port 5055 is being used. + Changed: The LoadBalancingClient.ReplacePortWithAlternative is now static and internal and can be used by the RegionHandler. + Added: TargetFramework (of the used dll) to SupportLogger output. + Added: Room.GetPlayer() option to find the Master Client, if the id is 0 (which is commonly used as "owned/controlled by the room, so it requires the Master Client). + +Version 4.1.5.1 (09. March 2021) + Removed: Setting of protocol 1.6 when connecting directly to a Master Server. This was a workaround for older Photon Server SDKs. + Note: If you host Photon yourself, you can set the LoadBalancingClient.SerializationProtocol to SerializationProtocol.GpBinaryV16, before you connect. + Changed: OpLeaveRoom will now clear the GameServerAddress and private room-entering cache. This cleans the state and prevents accidental success for ReconnectAndRejoinRoom calls. + Changed: ReconnectToMaster will check if MasterServerAddress and authToken are known. These are minimum requirements to reconnect to the master (after a connection loss). + Added: CustomAuthenticationType.Playstation5 (value 12). + +Version 4.1.5.0 (23. February 2021) + Added: LoadBalancingClient.ClientType and related code. Defines which sort of AppId should be expected. The LoadBalancingClient supports Realtime and Voice app types. Default: Realtime. + Note: This allows using AppSettings for Voice and Realtime clients more easily. ConnectUsingSettings will pick the relevant appid with this info. + Moved: EncryptionDataParameters class to become an internal class of the LoadBalancingClient (it was not used outside of LBC). + Removed: Room.StorePlayer was trying to calculate the Master Client (and was wrong about it). This triggered a OnMasterClientSwitched() callback in some cases of rejoining a room. + +Version 4.1.4.9 (12. January 2021) + Internal: EncryptionMode.DatagramEncryptionGCMRandomSequence (12) with .DatagramEncryptionGCM (13). + Internal: TokenForInit is now an object instead of a string. This also affects the AuthenticationValues class. This enables the server to send a byte[], which is more effective than a string. + Changed: Exposed all RoomOptions in Room class. Room.PublishUserId, Room.DeleteNullProperties. + Changed: Room.AutoCleanUp can also be set from room options flag. + Internal: EnterRoomParams and OpJoinRoom now use a JoinMode (replacing EnterRoomParams.CreateIfNotExists and EnterRoomParams.RejoinOnly). + Fixed: Unity-specific CustomTypes.cs to actually only compile for Unity. + Updated: EncryptionMode.DatagramEncryptionGCMRandomSequence (12) with .DatagramEncryptionGCM in the LoadBalancingClient. + Added: Room.SetExpectedUsers() to let the server know who's also coming (or no longer coming). + +Version 4.1.4.8 (30. November 2020) + Added: Conditional compilation in methods which are only for UNITY_WEBGL and UNITY_XBOXONE. The code needed to compile for any platform, even though it should not run anywhere else. + Added: Support for UNITY_GAMECORE. + Added: Parameter checks for GetGameList (and PUN GetCustomRoomList). The operation is not sent unless the parameters are OK. + Added: SupportLogger.OnDestroy to be removed from callback targets. + Added: RoomOptions.SuppressPlayerInfo. It can be used to skip join and leave events as well as properties broadcasts in rooms. + +Version 4.1.4.7 (25. November 2020) + Fixed: It was possible to trigger multiple calls of Authenticate by calling ConnectToRegionMaster(region) multiple times while being connected to the Name Server. + Changed: AuthenticationValues.ToString() to expose less data while showing which values are set. + +Version 4.1.4.6 (17. November 2020) + Added: Unity-specific types will now be registered for de/serialization automatically (in Unity projects) using CustomTypesUnity (in LoadBalancingClient constructor). + Note: The Player class needs to reference the current room to deserialize, so it is not a serializable type in the Realtime API (but in PUN). Send the Player.ActorNumber instead and the receiver looks up the ActorNumber in the room. + Changed: The client will now call disconnect if any operation response has a ReturnCode == ErrorCode.OperationLimitReached. The resulting OnDisconnect callback gets the new DisconnectCause.DisconnectByOperationLimit value. + Added: DisconnectCause.DisconnectByDisconnectMessage. If the server has a "low level" reason to disconnect a client, it can now send a Disconnect Message with some debug info. The LoadBalancingClient will log this message as error and disconnect. When this gets used will be added to the docs. + Changed: The BroadcastProperties parameter is now always sent to the Game Server, no matter if there are properties. This fixes a recent issue where UserIds were not broadcast in rooms, if no other player properties were used (see v4.1.4.5 changes). + Changed: UseAlternativeUdpPorts is replaced by ServerPortOverrides, which allow configuration of ports per server (including using no override). + Changed: UseAlternativeUdpPorts is obsolete and no longer used. + Changed: LoadBalancingClient.NameServerPortOverride is now named NameServerPortInAppSettings, which is closer to what it resembles. It is overwritten by the ServerPortOverrides if the nameserver port is > 0 there. + Added: Struct PhotonPortDefinition. + Added: ReplacePortWithAlternative method to wrap up the replacement as per our address rules. + Changed: When the client does not connect initially and EnableProtocolFallback is enabled, the ServerPortOverrides are reset and the fallback protocol will use the default ports for the Name Server (defined per protocol). + Changed: ReconnectAndRejoin() no longer affects the value IsUsingNameServer. This is only about reconnecting. + Changed: ReconnectAndRejoin() was logging error-level messages for expected situations. Now, there are only warnings in the logs. You can simply check the return value, which is false on error (then you should connect again, as usual). + Internal: The pool type for paramDictionaryPool, which is used in OpRaiseEvent. It is now a ParameterDictionary, which will wrap some value-types into pooled objects. This helps avoid some memory allocation. + Internal: ParameterCode.Secret is now .Token to match the server naming. + Changed: Logging level when OpRaiseEvent fails due to leaving a room. It reports as INFO level, when leaving or disconnecting. + Added: Error log for Op Authenticate, if the client does not have a token to authenticate on a Master or Game Server. That token comes from the Name Server and should be automatically present and used. Note: The client will send the auth but may fail due to missing token. + Changed: LoadBalancingClient.Disconnect() now checks if the client was just created or is disconnecting already. Those cases won't trigger a callback, so there is no surplus attempt to disconnect the peer. Also, the State does not change. An INFO level debug message helps detect those cases. + +Version 4.1.4.5 (02. September 2020) + Added: Unity-only ConnectionHandler.StaticReset() to allow entering playmode without domain reload. + Added: ErrorCode definition for OperationLimitReached (32743). The client will become unable to call any further operations (to safeguard the room/server) and get disconnected soon after. Currently used for SetProperties only. + Fixed: Region pinging for the case that none of the regions answered anything. Then, all region results caused a callback. + Added: Support for rooms that suppress room-events. + Added: Field bool Room.SuppressRoomEvents to allow checking if room events are suppressed. + Changed: If room events are suppressed, the callbacks OnCreatedRoom() and OnJoinedRoom() are now called by the operation response (not waiting for the suppressed events). + Renamed: Room.SetRoomFlags() to InternalCacheRoomFlags(). + Changed: When entering a room, the local players NickName property (255) is not sent if NullOrEmpty. + Changed: LoadBalancingApi should not use Unity.Debug unconditionally. + Updated: AuthenticationValues reference slightly. Better wording. + Updated: Token setter to be protected internal. Only needs to be set by Photon LB API. + Fixed: Csproject files for Chat API and LoadBalancing API. The two projects now import the dll based on the current target framework (dynamic). + +Version 4.1.4.4 (6. July 2020) + Fixed: AppSettings.CopyTo method. It was not copying the new value EnableProtocolFallback yet. + Fixed: The date of version 4.1.4.3 in this changelog. + Updated: Error handling in PingWindowsStore. + +Version 4.1.4.3 (24. June 2020) + Added: Check that the Dev Region override is in the list of available regions (from Name Server). If not, the first available region is being used. + Changed: RegionPinger.Start() now attempts to use a ThreadPool WorkerItem to ping individual regions. Only if that fails, a separate managed Thread is used. This should help avoid running into Thread limits (if any). Builds for NETFX_CORE don't use this. + Changed: Error handling in PingMono. SocketExceptions were not handled entirely. + Changed: PhotonPingClasses is no longer used. It's empty and can be removed. + Changed: Handling of event LobbyStats in case of LoadBalancingPeer.UseByteArraySlicePoolForEvents. This relates to a new option in the PhotonPeer to use pooled memory (wrapped byte[] basically) when incoming events only contain a byte[]. See changes-library.txt and API reference. + Added: Initial puzzle pieces for WSS Proxy support. This is not yet funtional. To actually use the proxy settings, a special WebSocket implementation is needed. + Changed: The AppSettings.Port value is now also usable when connecting to a Name Server initially. This allows custom ports on a (custom) Name Server. + Added: Various details to the SupportLogger output. + Changed: Callback OnCreatedRoom() is now also triggered by the event Join. This is the same trigger as for JoinOrCreateRoom (if that created a new room). + Added: Player.HasRejoined value. This is set for the local and remote players and can help define the workflow on ReJoin. + Added: LoadBalancingClient.EnableProtocolFallback. If enabled, the client will try another protocol if the initial connect to the Name Server fails. + Added: AppSettings.EnableProtocolFallback with a default of true. Used in ConnectUsingSettings to set the client's value accordingly. + Internal: Added setting the LoadBalancingClient.Server in Connect and other places, so it should be accurate. + Added: Checks for connections on WebGL and Xbox One. Settings that can be corrected (to match the platform's requirements) are corrected with a log note. An Exception is thrown, if the settings can't be corrected automatically. This means Connect methods may throw an Exception in some cases, which are to be fixed during development time. + +Version 4.1.4.2 (8. May 2020 - rev5519) + Fixed: EventLeave handling. The IsInactive property is to false before doing the OnPlayerLeftRoom callback. + Note: Use Player.IsInactive to know the 'reason' for the callback. + +Version 4.1.4.0 (27. April 2020 rev5469) + Fixed: When connecting directly to a Master Server (self hosted), the serialization protocol 1.6 is used (not the detault 1.8). This was changed accidentally in v4.1.3.0 (and thus PUN 2.17). + Added: Connection state check in CheckIfOpCanBeSent() to fail early if an op can't be sent. + Updated: WebRPC handling and added an example to the doc of OnWebRpcResponse. + Added: Logging of OnJoinRoomFailed to SupportLogger. + Changed: StripKeysWithNullValues to reuse a list of key with null-values. This causes less allocations and garbage to clean. As a downside, the method now runs only for one thread (even for distinct IDictionary instances). This should not be a problem for the expected use case. + Changed: The LoadBalancingClient.OnStatusChanged will handle StatusCode.SendError as disconnect due to Exception. Log level INFO should log the inner exception when sending. + Fixed: Cleanup of the RoomReference for the local player object on disconnect. This prevents issues when setting properties, after joining and leaving a room (back on Master Server). + Internal: LoadBalancingClient.ExpectedProtocol is now a nullable property with private setter. It's used internally (only) to switch to the target transport protocol when Authmode AuthOnceWss is "done". + Fixed: EventLeave handling. When a player gets removed from the room, the IsInactive property must be set to false before doing the OnPlayerLeftRoom callback. Use Player.IsInactive to know the 'reason' for the callback. + +Version 4.1.3.0 (23.03.2020 rev5394) + Changed: Trying to set empty custom properties Hashtable will fail (return false) and log error. + Changed: In online mode, trying to set properties while not joined to a room will fail (return false) and log error. Caching local player properties could be allowed though. + Changed: Player.InternalCacheProperties is now "protected internal" and no longer "public". + Changed: LoadBalancingClient.OpSetPropertiesOfRoom is now "protected internal" and no longer "public". Use LoadBalancingClient.OpSetCustomPropertiesOfRoom or Room.SetCustomProperties. + Changed: StatusCode.EncryptionFailedToEstablish will cause disconnection with DisconnectCause.ExceptionOnConnect. + Changed: Fix for Unity cloud build context to prevent sanitization of server settings, it's not needed and for some reason doesn't detect the current server settings. + Changed: AppSettings. The NonSerialized attribute is now only used in Unity builds. + Changed: With the updated Photon library (v4.1.3.0), the encryption can be set to true on any connection, including WSS. It should not be used conditionally for Auth. + Changed: GetPingImplementation() new sets a default PhotonPingImplementation for UNITY_WEBGL, NETFX_CORE and regular Mono/.Net. + Internal: New datagram encryption mode DatagramEncryptionGCMRandomSequence (value 12). To be used later on. + Internal: The SocketWebTcp.SerializationProtocol is now selected by the PhotonSocket with the Peer's current value. It no longer needs to be set. + +Version 4.1.2.20 (12. December 2019 - rev5296) + Added: New callback IErrorInfoCallback.OnErrorInfo when the client receives an ErrorInfo event from the server. + Changed: RegionPinger use a singleton MonoBehaviourEmpty for coroutine ping in WebGL in Unity. + Added: LoadBalancingClient.SerializationProtocol property to get or set the binary protocol version. Use this always instead of setting it via LoadBalancingPeer.SerializationProtocolType. + Added: LoadBalancingClient.ConnectUsingSettings(AppSettings appSettings). This allows Best Region connect, setting a custom name server and much more. + Changed: Connect() is now ConnectToMasterServer(). Unlike ConnectUsingSettings(), this requires some settings to be done on the client. + Added: Return parameter for all methods that set properties on the server. + Note: Room.SetCustomProperties returns bool. If you did override this, your project will have errors, make sure to fix the return type. + Changed: Failed Authentication will no longer call the OnDisconnected callback twice. This should better align with expectations. + Internal: Pinging regions via coroutine (when Threads are unavailable) now uses only one GameObject for all pinging. + +Version 4.1.2.19 (12. November 2019 - rev5266) + Fixed: The ExpectedProtocol is now also set for Authmode "AuthOnce" for ConnectToNameServer and ConnectToRegionMaster. + Changed: Player.ToString() to show ActorNumber and NickName. The PlayerProperties are included in ToStringFull(). + Changed: Logging message for OpAuthenticateOnce (only logged at info level and up). + Changed: Avoiding a potential nullreference exception on leave of another player. + Updated: Cluster support. The LoadBalancingClient.CurrentCluster gives access to the current cluster. Region.SetCodeAndCluster() now separates the cluster string properly. See ConnectToRegionMaster, too. + Fixed: Changing the SupportLogger.Client now skips registering for callbacks, if the new value is null. + Changed: Logging of SupportLogger. + Added: LoadBalancingClient.OpJoinRandomOrCreateRoom. This can be used to create a room, should random matchmaking fail. This helps avoid race conditons where players can't find one another. + Added: Extra null-check in handling of event leave. + +Version 4.1.2.17 (9. August 2019 - rev5188) + Changed: SupportLogger. Traffic stats are enabled by default. The PhotonHandler no longer has to enable this. + Added: Min/max ping to logged statistics. SupportLogger.TrackValues is invoked to keep track of min/max ping for each connection. + Fixed: Statistics logging is started on Connect and stopped OnDisconnected(). + Changed: Callback registration. + Changed: All callback target changes are now queued in one queue and executed in order. This avoids cases where our implementation defined if a callback got added or removed, when a target got added and removed. + Changed: Duplicate addition and removal is now prevented. + Changed: The callback containers now know and use the LoadBalancingClient to update the targets. This means they don't need lists for additions and removals anymore. + Changed: Events will now also update the callback targets before executing the event callback. + Changed: WebRpcCallbacksContainer is now also a List like the other containers. This is simpler to maintain. The only "custom" callback implementation is that for events. This was an event delegate before and remains one. No change for this. + Changed: The callbacks to OnDisconnected(reason). On timeout or exception, there is now only one callback which happens after the client/peer is actually disconnected. The peer's status changes (timeout, etc.) are used to identify the reason but don't cause a callback on their own. Previously, you could run into more than one OnDisconnected call and fail to reconnect in the first one. + Changed: There are now fewer calls of OnDisconnected(). Example: A timeout disconnect caused two calls because signalled the timeout and the second signalled when the client locally finished disconnecting. Now, the DisconnectCause stores the reason and there is only one callback. + Changed: Internal use of DisconnectCause. It's now set in LBC.Disconnect() and by errors from the Peer. It's reset to "None" before calls to Peer.Connect(). + Removed: DisconnectCause enum values that were obsolete already. DisconnectByServerUserLimit is now MaxCcuReached. TimeoutDisconnect is now ClientTimeout. DisconnectByServer is now ServerTimeout. + Changed: OnStatusChanged() case Disconnect always sets the CurrentRoom to null. It is no longer used to store the roomname from the Master Server to use on the Game Server. + Removed: LoadBalancingClient.didAuthenticate, which is no longer needed for the cleaned up logic. + Changed: WebRpcResponse.ReturnCode -> ResultCode and WebRpcResponse.DebugMessage -> Message. + Changed: AuthenticationValues.ToString() to include more useful info. + Changed: Execution order for disconnect on quit. As OnApplicationQuit is followed by OnDisable, PUN now disconnects in OnDisable, if OnApplicationQuit was called previously. This means that you can now send a final message in OnApplicationQuit. It's not guaranteed to arrive anywhere, as the message won't be repeated on loss. + Removed: PhotonHandler.OnDestroy which was not needed anymore. OnDisable is also called when the app quits, so it's adequate to tear down the thread there. + Removed: Outdated and unused PingMonoEditor. + Changed: Random ID for each ping is now truly randomized. + Changed: Region pinging result logging. Per region, all rtts are available, as well as a previous summary (if any). Pun gets it via RegionHandler.GetResults(). + +Version 4.1.2.15 (7. June 2019 - rev5137) + Added: Options for OpFindFriends to filter which rooms should be returned by the server. The default is the same as before but now the friend list may exclude rooms which are not yet on the game server, invisible, closed (or any combination). + Added: SimulateConnectionLoss(bool) to simplify testing of connection loss. This uses the built-in network simulation to get a client timeout disconnect. + Removed: EventExt class, which only contained obsolete methods. + +Version 4.1.2.14 (6. May 2019 - rev5097) + Changed: Realtime API changes are now listed in a separate changes file. + Updated: Demos to make use of Sender and CustomData. + +Version 4.1.2.13 (3. May 2019 - rev5086) + Changed: Renamed ClientState items which ended on "Gameserver" and "Masterserver" to using PascalCase "GameServer" and "MasterServer". The previous names are obsolete to ease upgrading this, if needed. + Updated: Checks if any given operation can be sent (to the currently connected server) or not. As not all operations are available on all server types, this may help avoid some mismatches. + Fixed: BroadcastPropsChangeToAll is applied correctly (it wasn't used properly, when false). + Fixed: When in offline mode, OpSetPropertiesOfActor does not get called (it failed due to not being connected). + +Version 4.1.2.11 (15. April 2019 - rev5043) + Changed: InLobby property is now checking the State == JoinedLobby, which is analog to InRoom. + Changed: IsConnectedAndReady is now also false for ClientState.DisconnectingFromGameserver, DisconnectingFromMasterserver and DisconnectingFromNameServer. + Changed: GetGameList check if the filter is null or empty. It's not sent for empty filters. + Added: Nintendo Switch as CustomAuthenticationType. + +Version 4.1.2.10 (11. March 2019 - rev5023) + Changed: The cached "best region" is cleared whenever a region's pinging finishes. This fixes a potential issue when the BestRegion value is used before the pinging is done. Then, you end up with a wrong selection. + Changed: PhotonPing now reuses the Socket per region. + Changed: The RegionHandler now checks #if PING_VIA_COROUTINE to use a coroutine instead of a thread (per region). This is for WebGL exports from Unity. + Changed: The SupportLogger now uses a Stopwatch to log the time (not depending on Unity's APIs). + +Version 4.1.2.1 (31. July 2018 - rev4787) + Changed: OnStateChangeAction is now named StateChanged and provides a "previous state" value. State changes only trigger the event-call when the value actually changes. + Renamed: OnEventAction to EventReceived and OnOpResponseAction to OpResponseReceived. + Added: LoadBalancingClient now has AddCallbackTarget and RemoveCallbackTarget to simplify registering for various callbacks. + +Version 4.1.2.0 (3. May 2018 - rev4660) + Changed: The namespace to the simpler "Photon.Realtime". + Added: Various callbacks to signal specific situations / events. To get those, a class must implement the interface and be added to a list of "Targets". See: ILoadBalancingCallbacks. + Added: RegionHandler, which provides methods to ping a list of regions and to find the one with best ping. This moves PUN's "Best Region" feature to the LoadBalancing API. + Moved: The PhotonPing was part of the dll but is now part of LoadBalancing. + Added: LoadBalancingClient.UseAlternativeUdpPorts. This way, UDP may use ports of the Steam Multiplayer port-range by simply replacing existing port strings in addresses. + Changed: RaiseEvent now has an overload, that uses RaiseEventOptions and SendOptions. The old variant is obsolete but will still work. + Changed: CheckUserOnJoin is now set by default. The RoomOptions.CheckUserOnJoin got removed. + Added: Client-side checks and limits for OpFindFriends. + Added: Optional parameter sendAuthCookie to OpLeaveRoom. The app can control what's passed from Photon to a server via WebHook. + Changes: The room list for lobbies is no longer part of the LoadBalancingClient. Instead, implement the callback for the changed room list. + Added: AppSettings, a base class to host AppId and some settings for a title. This will help make it available across products. Right now, the LoadBalancingClient is not using it yet. + Changed: Player.ID is now .ActorNumber, which mirrors the server's naming. + Fixed: Unity compile defines to support Unity 2018, + +Version 4.1.1.18 (19. December 2017 - rev4540) + Changed: FriendInfo.Name is now "UserId", which is up to date with it's usage. + Changed: CheckUserOnJoin is now set by default. The RoomOptions.CheckUserOnJoin got removed. + +Version 4.1.1.17 (11. October 2017 - rev4465) + Changed: OperationCode const byte Join = 255 is now marked obsolete. We use "JoinGame" instead. + Added: DisconnectCause.AuthenticationTicketExpired. + Fixed: DebugReturn call in Unity WebGL. + +Version 4.1.1.15 (17. July 2017 - rev4232) + Added: LoadBalancingClient.TransportProtocol as shortcut to the use PhotonPeer's TransportProtocol value. This enables setting the protocol easily while not connected. + Added: LoadBalancingClient.SocketImplementationConfig as shortcut to modify PhotonPeer's SocketImplementationConfig. This enables you to setup which IPhotonSocket implementation to use for which network protocol. + Changed: LoadBalancingPeer.ConfigUnitySockets() to try to find our websocket implementations in the assembly, making the SocketWebTcpCoroutine and SocketWebTcpThread classes optional. + Removed: Class "SocketWebTcp" is no longer found by ConfigUnitySockets(). + +Version 4.1.1.14 (5. July 2017 - rev4191) + Changed: The ClientState "Uninitialized" is now "PeerCreated". This is the initial state. ConnectedToMaster is now ConnectedToMasterserver (both use the same value). + Updated: ClientState values descriptions. + Internal: GameEnteredOnGameServer() first sets the local player's actorNumber, then updates the player lists. + +Version 4.1.1.8 (24. February 2017 - rev3873) + Added: Player.UserId field and code to read published UserIds from the player properties in CacheProperties(). When publishing the UserId in a room (RoomOptions.PublishUserId = true), the UserId becomes available for all players in a room. Good to find/make friends or follow a team player into another room. + Added: New matchmaking operation: OpGetGameList(typedLobby, sqlFilter). This fetches a list of rooms that match the filter. You can show lists of rooms with specific properties, if needed (or still use OpJoinRandom). + Fixed: WebFlags properties setters. + +Version 4.1.1.7 (16. December 2016) + Fixed: Demos with persistent (Turnbased) games. The Memory Demo was not setting up rooms correctly (which led to errors joining them) and used a "join" rather than a "rejoin" to get into saved games (getting added to the room once more). + +Version 4.1.1.6 (9. December 2016 - rev3801) + Added: OpJoinRandom will now "remember" to send ExpectedUsers to the Game Server (by caching the value). + Added: AuthEvent and it's handling. This (internally sent) event can now update the client's token anytime (before that expires). + Added: LoadBalancingClient.OpChangeGroups(). + Changed: LoadBalancingClient.Disconnect() no longer sets it's own State to Disconnected. It waits till the state-change callback gets called by the lib. + +Version 4.1.1.2 (13. September 2016 - rev3652) + Removed: LoadBalancingClient.PlayerName and Player.Name. Were obsolete for more than a year. There is a NickName and the UserId can be set in the AuthValues. + Removed: OpJoinRoom() overload with actorNumber. This was obsolete. To enable clients to return to a room, set AuthValues and a userID. + Changed: LoadBalancingClient no longer overrides the protocol for Unity WebGL. This is done in the LoadBalancingPeer.ConfigUnitySockets(). + Changed: GetNameServerAddress() is the same in Chat and LoadBalancing APIs now. + Added: DisconnectCause.DisconnectByServerLogic and handling for this case. You can check this DisconnectedCause when the LoadBalancingClient.State is ClientState.Disconnected. + Added: Hashtable definition to use Photon's own implementation for Windows Store builds (NETFX_CORE). This must be used but it means you to use the same Hashtable definition in all builds (no matter if 8.1 or 10). + Added: Support for WebGL export in Unity. + Changed: OnStateChangeAction, OnEventAction and OnOpResponseAction are now events. To register a method in one of those, use += and to deregister you need to use -=. This prevents assigning a new method and de-registering any previously registered ones. + +Version 4.1.1.0 (15. August 2016 - rev3536) + Fixed: Room.ClearExpectedUsers() is now sending it's current, local "expected users" to update the server with "CAS" (Check and Swap). This gives the client an update when the values become valid (which updates the local cache after the roundtrip). + Added: Support for the 'Server Side Master Client' feature. The Room will read master client updates from the server accordingly. Room.SetMasterClient() enables you to override the server's selection (provided it did not change before your operation gets executed). + Changed: Option for bool WebForward into the new "WebFlags". This allows fine control of which data is being sent to WebHooks. This affects all SetProperties, OpWebRPC and the RaiseEventOptions. + Added: WebRPC.cs to the LoadBalancing API folder (was available separately before). It contains WebFlags and WebRpcResponse. + +Version 4.1.0.6 (21. June 2016 - rev3376) + Fixed: LoadBalancingPeer.OpRaiseEvent(...) to send operations (and events) unencrypted again. + +Version 4.1.0.2 (21. April 2016 - rev3283) + Added: Expected Users. This affects the Room, LoadBalancingClient, JoinRoom, JoinOrCreateRoom and CreateRoom. + Added: null check in Extensions.StripToStringKeys(). + Fixed: FriendInfo.IsInRoom, which returned the opposite of it's naming! Also changed FriendInfo ToString() according to PUN's. + Added: RoomInfo expectedUsersField, which is updated with room properties (well known ones). + Added: Room.ExpectedUsers and ClearExpectedUsers() to expose the list of expected players. + Added: RoomInfo.serverSideMasterClient and masterClientIdField (also updated with well known properties). + Changed: OpRaiseEvent now re-uses a Dictionary in the LoadBalancingPeer. It uses Clear(), rather than creating a new Dict each time. + Changed: AuthenticationValues to also use C# properties and and backup-fields. This is guaranteed to work in Unity. + Updated: EventCode ErrorInfo reference with a link to "WebHooks" doc online. + Changed: Disconnect handling in the LoadBalancingClient. The client should reset correctly and log info, if it's in a State where a disconnect is a proper error. Note: In some cases like "switching server", a disconnect is expected, so it's not an error then. + Fixed: PlayerProperties sent to game server will now include well-known properties again. This fixes the "NickName missing" bug. + Fixed: LoadBalancingClient.State value when the client fails to join or create a game on the Master Server. The state is correctly re-set to ClientState.JoinedLobby or ClientState.ConnectedToMaster. + Internal: Added private inLobby value, to store if the client was/is in a lobby on the Master Server. + Fixed: DemoClient (in demo-loadbalancing) now makes use of the Name Server by using: ConnectToRegionMaster("eu"). + Added: DemoClient now has debug output when the connection times out or can't be established. + +Version 4.0.5.1 (18. January 2016 - rev3187) + Added: OpSetCustomPropertiesOfActor() and OpSetCustomPropertiesOfRoom() now check locally, if the client is currently in a room. It must be, to be able to set these properties. An exception exists for setting properties for the local player's actorNumber, but those are better set via LoadBalancingClient.LocalPlayer. + +Version 4.0.0.11 (28. October 2015 - rev3093) + Added: LeaveLobby handling in OnOperationResponse(), which sets the client's state correctly. + Changed: Order of execution for Ev Join. If user is known (inactive user rejoins), the player's props are read. The actor list is used, if available. + Changed: RoomOptions to use properties with backup-fields to avoid issues in Unity which has issues with Object Initializer (curly brackets). + Changed: JoinMode 2 is now "JoinOrRejoin". Was: "Rejoin". + Added: ErrorCode constant AuthenticationTicketExpired. + Internal: OpJoinRoom, OpCreateRoom and OpJoinRandomRoom no longer use a (growing) list of properties. Instead, classes were created to "sum up" their parameters. The api for games didn't change. + Internal: Related to the refactoring of Join/Create, the LoadBalancingClient now creates a Room instance when the client arrived on the GameServer (before, it got created in the initial "create" call). + +Version 4.0.0.10 (14. July 2015 - rev2988) + Updated: Description for IsConnectedAndReady. + Changed: NameServerAddress to return a fitting address depending on protocol (including WebSocket but not yet RHTTP). + Updated: The only name server host is now "ns.exitgames.com", which gets turned into a proper address by protocol. + Changed: LoadBalancingClient.CustomAuthenticationValues is now .AuthValues. You can use those values to identify a user, even if you don't setup an external, custom authentication service. + Changed: LoadBalancingClient.UserId no longer directly stores the id but puts it into AuthValues. This means, the UserId could also be set via setting AuthValues. + Changed: The API of AuthenticationValues. There is now the UserId and AddAuthParameter() replaces the less general SetAuthParameters() (which only set specific key/values). + Changed: PlayerName gets renamed to NickName, so PhotonPlayer.Name becomes .NickName and LoadBalancingClient.Name becomes .NickName, too. The old naming is marked as obsolete. + Changed: Particle Demo now connects to the Cloud by default (because it's easier to setup and try). You can define your own Master Server (Photon OnPremise) of course. + Added: GamePropertyKey.MasterClientId (248) and ParameterCode.MasterClientId (203) + Added: ParameterCode.ExpectedValues (231) + Added: ParameterCode.SuppressRoomEvents (237) + +Version 4.0.0.6 (05. December 2014 - rev2758) + Added: LoadBalancingClient.OpJoinOrCreateRoom overload which has lobby as parameter. If a room gets created, this defines in which lobby it belongs. + Changed: LoadBalancingPeer: Added new error code PluginMismatch, documentation for Plugins parameter code. + +Version 4.0.0.1 (17. June 2014 - rev2663) + Added: LoadBalancingClient.OpRaiseEvent(). Now that LoadBalancingClient USES a loadBalancingPeer (and doesn't extend it), things are much easier by offering this method, too! + Added: LoadBalancingClient.IsConnected and .IsConnectedAndReady to LB API. Going to be part of the API from now on. + Removed: Unused fields clientId and clientCount. + Changed: Field for internal use "lastJoinActorNumber" is now private as intended. + Changed: LoadBalancingClient.Disconnect is now setting it's own state to Disconnected if the connection got closed (as expected). + +Version 4.0.0.0 (23. May 2014 - rev2614) + Changed: LoadBalancingClient.FriendList creation/update is delayed until the server's response is available. This avoids cases where the friends are offline for the moment between requesting the update and getting it. Initially, it is null as before. + Added: some methods to Player to find next player, etc. Useful for turnbased games to find an opponent. + Added: LoadBalancingClient.UserId, which is the ID of a user(account). This is used in FindFriends and when you fetch account-related data (like save-games for Turnbased games). Set it before Connect*(). As fallback when empty during connect, the PlayerName is used instead. + Removed: LoadBalancingPeer.OpSetCustomPropertiesOfActor and OpSetPropertyOfRoom which were too special to be so low level. Could be implemented to LBClient. + Fixed: OpJoinRandomRoom and OpCreateRoom which didn't reset the ActorNr to claim when entering the room. Depending on previous actions, some calls of those methods did fail when the actorNumber wasn't available. + Changed: OperationCode.Rpc is now called OperationCode.WebRpc. It's simply much cleaner (considering PUN has RPCs as well but in a different context). + Changed: WebRpcResponse reading to be able to handle additional data. + Added: Parameter webForward to: OpSetCustomPropertiesOfRoom and OpSetPropertiesOfRoom. The "old" overloads of these methods are still there, too. If webForward is true, the properties are sent to the WebHooks. \ No newline at end of file diff --git a/Assets/Photon/PhotonRealtime/Code/changes-realtime.txt.meta b/Assets/Photon/PhotonRealtime/Code/changes-realtime.txt.meta new file mode 100644 index 00000000..4e58ca30 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Code/changes-realtime.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 530dcba8d8fbbc24a8894ca925cadd8a +timeCreated: 1558358700 +licenseType: Store +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonRealtime/Demos.meta b/Assets/Photon/PhotonRealtime/Demos.meta new file mode 100644 index 00000000..efe46cec --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Demos.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5456c843f3eadef4f86166dc7f3ab583 +folderAsset: yes +timeCreated: 1523527335 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing.meta b/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing.meta new file mode 100644 index 00000000..f743f6a5 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 32dc3abb17a2b434a9b7b347bdbea7b3 +folderAsset: yes +timeCreated: 1513266233 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/ConnectAndJoinRandomLb.cs b/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/ConnectAndJoinRandomLb.cs new file mode 100644 index 00000000..996e1752 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/ConnectAndJoinRandomLb.cs @@ -0,0 +1,145 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Prototyping / sample code for Photon Realtime. +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + +using System.Collections.Generic; +using ExitGames.Client.Photon; +using UnityEngine; +using UnityEngine.UI; + +namespace Photon.Realtime.Demo +{ + public class ConnectAndJoinRandomLb : MonoBehaviour, IConnectionCallbacks, IMatchmakingCallbacks, ILobbyCallbacks + { + [SerializeField] + private AppSettings appSettings = new AppSettings(); + private LoadBalancingClient lbc; + + private ConnectionHandler ch; + public Text StateUiText; + + public void Start() + { + this.lbc = new LoadBalancingClient(); + this.lbc.AddCallbackTarget(this); + + if (!this.lbc.ConnectUsingSettings(appSettings)) + { + Debug.LogError("Error while connecting"); + } + + this.ch = this.gameObject.GetComponent(); + if (this.ch != null) + { + this.ch.Client = this.lbc; + this.ch.StartFallbackSendAckThread(); + } + } + + public void Update() + { + LoadBalancingClient client = this.lbc; + if (client != null) + { + client.Service(); + + + Text uiText = this.StateUiText; + string state = client.State.ToString(); + if (uiText != null && !uiText.text.Equals(state)) + { + uiText.text = "State: " + state; + } + } + } + + + public void OnConnected() + { + } + + public void OnConnectedToMaster() + { + Debug.Log("OnConnectedToMaster"); + this.lbc.OpJoinRandomRoom(); // joins any open room (no filter) + } + + public void OnDisconnected(DisconnectCause cause) + { + Debug.Log("OnDisconnected(" + cause + ")"); + } + + public void OnCustomAuthenticationResponse(Dictionary data) + { + } + + public void OnCustomAuthenticationFailed(string debugMessage) + { + } + + public void OnRegionListReceived(RegionHandler regionHandler) + { + Debug.Log("OnRegionListReceived"); + regionHandler.PingMinimumOfRegions(this.OnRegionPingCompleted, null); + } + + public void OnRoomListUpdate(List roomList) + { + } + + public void OnLobbyStatisticsUpdate(List lobbyStatistics) + { + } + + public void OnJoinedLobby() + { + } + + public void OnLeftLobby() + { + } + + public void OnFriendListUpdate(List friendList) + { + } + + public void OnCreatedRoom() + { + } + + public void OnCreateRoomFailed(short returnCode, string message) + { + } + + public void OnJoinedRoom() + { + Debug.Log("OnJoinedRoom"); + } + + public void OnJoinRoomFailed(short returnCode, string message) + { + } + + public void OnJoinRandomFailed(short returnCode, string message) + { + Debug.Log("OnJoinRandomFailed"); + this.lbc.OpCreateRoom(new EnterRoomParams()); + } + + public void OnLeftRoom() + { + } + + + /// A callback of the RegionHandler, provided in OnRegionListReceived. + /// The regionHandler wraps up best region and other region relevant info. + private void OnRegionPingCompleted(RegionHandler regionHandler) + { + Debug.Log("OnRegionPingCompleted " + regionHandler.BestRegion); + Debug.Log("RegionPingSummary: " + regionHandler.SummaryToCache); + this.lbc.ConnectToRegionMaster(regionHandler.BestRegion.Code); + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/ConnectAndJoinRandomLb.cs.meta b/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/ConnectAndJoinRandomLb.cs.meta new file mode 100644 index 00000000..206b9301 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/ConnectAndJoinRandomLb.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 72e8756202d0dfc488140c228938043b +timeCreated: 1510583920 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/DemoLoadBalancing-Scene.unity b/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/DemoLoadBalancing-Scene.unity new file mode 100644 index 00000000..ad84155a --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/DemoLoadBalancing-Scene.unity @@ -0,0 +1,711 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 8 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 9 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 0 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &383751291 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 383751293} + - component: {fileID: 383751292} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &383751292 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383751291} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &383751293 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 383751291} + m_LocalRotation: {x: 0.40821794, y: -0.23456973, z: 0.109381676, w: 0.87542605} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &572142180 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 572142185} + - component: {fileID: 572142184} + - component: {fileID: 572142182} + - component: {fileID: 572142181} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &572142181 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 572142180} + m_Enabled: 1 +--- !u!124 &572142182 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 572142180} + m_Enabled: 1 +--- !u!20 &572142184 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 572142180} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.92782223, g: 0.941594, b: 0.9632353, a: 0.019607844} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &572142185 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 572142180} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1200790913 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1200790914} + - component: {fileID: 1200790916} + - component: {fileID: 1200790915} + m_Layer: 5 + m_Name: Title + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1200790914 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1200790913} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1364508574} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -20} + m_SizeDelta: {x: 0, y: 60} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1200790915 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1200790913} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.13235295, g: 0.13235295, b: 0.13235295, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 4a4df204c321f9c40b0dbfb1baaffb4c, type: 3} + m_FontSize: 35 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 300 + m_Alignment: 1 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Demo Realtime +--- !u!222 &1200790916 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1200790913} +--- !u!1 &1235673705 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1235673708} + - component: {fileID: 1235673707} + - component: {fileID: 1235673706} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1235673706 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1235673705} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1077351063, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &1235673707 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1235673705} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -619905303, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 5 +--- !u!4 &1235673708 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1235673705} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1302440785 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1302440786} + - component: {fileID: 1302440788} + - component: {fileID: 1302440787} + m_Layer: 5 + m_Name: State Txt + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1302440786 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1302440785} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1364508574} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -150} + m_SizeDelta: {x: 0, y: 30} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1302440787 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1302440785} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.13235295, g: 0.13235295, b: 0.13235295, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 4a4df204c321f9c40b0dbfb1baaffb4c, type: 3} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'State: n/a' +--- !u!222 &1302440788 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1302440785} +--- !u!1 &1337127108 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1337127110} + - component: {fileID: 1337127109} + - component: {fileID: 1337127111} + m_Layer: 0 + m_Name: Scripts + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1337127109 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1337127108} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 72e8756202d0dfc488140c228938043b, type: 3} + m_Name: + m_EditorClassIdentifier: + appSettings: + AppIdRealtime: + AppIdChat: + AppIdVoice: + AppVersion: + UseNameServer: 1 + FixedRegion: + Server: + Port: 0 + Protocol: 0 + AuthMode: 0 + EnableLobbyStatistics: 0 + NetworkLogging: 1 + StateUiText: {fileID: 1302440787} +--- !u!4 &1337127110 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1337127108} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1337127111 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1337127108} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f0b3ce6748186d3468e0dbaecb38b04c, type: 3} + m_Name: + m_EditorClassIdentifier: + KeepAliveInBackground: 5000 + ApplyDontDestroyOnLoad: 1 +--- !u!1 &1364508570 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1364508574} + - component: {fileID: 1364508573} + - component: {fileID: 1364508572} + - component: {fileID: 1364508571} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1364508571 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1364508570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &1364508572 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1364508570} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &1364508573 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1364508570} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1364508574 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1364508570} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1200790914} + - {fileID: 1423237584} + - {fileID: 1302440786} + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &1423237583 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1423237584} + - component: {fileID: 1423237586} + - component: {fileID: 1423237585} + m_Layer: 5 + m_Name: Info + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1423237584 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1423237583} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1364508574} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -60} + m_SizeDelta: {x: 0, y: 90} + m_Pivot: {x: 0.5, y: 1} +--- !u!114 &1423237585 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1423237583} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.13235295, g: 0.13235295, b: 0.13235295, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 4a4df204c321f9c40b0dbfb1baaffb4c, type: 3} + m_FontSize: 16 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: "This very simple demo shows how to directly use the Realtime API.\r\nOn + play, the state will cycle through various values and finish with \"Joined\".\r\nAt + that point, your game logic should kick in." +--- !u!222 &1423237586 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1423237583} diff --git a/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/DemoLoadBalancing-Scene.unity.meta b/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/DemoLoadBalancing-Scene.unity.meta new file mode 100644 index 00000000..5a8b0ced --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/DemoLoadBalancing-Scene.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a73b0cac1a73cc346aaeb5f8dd0b53f1 +timeCreated: 1513264275 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/Jura-Medium-LB.ttf b/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/Jura-Medium-LB.ttf new file mode 100644 index 0000000000000000000000000000000000000000..acaa33e08288fd98be336b9a2102041ab415bd03 GIT binary patch literal 345824 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 z6QDBzIuoEX0Xh?)GXXjipfdqF6QDBzIuoEX0Xh?)GXXjipfdqF6QDBzIuoEX0Xh?) zGXXjipfdqF6QDBzIuoEX0Xh?)GXXjipfdqF6QDBzIuoEX0Xh?)GXXjipfdqF6QDBz zIuoEX0Xh?)GXXjipfdqF6QDBzIuoEX0Xh?)GXXjipfdqF6QDBzIuoEX0Xh?)GXXji zpfdqF6QDBzIuoEX0Xh?)GXXjipfdqF6QDBzIuoEX0Xh?)GXXjipfdqF6QDBzIuoEX z0Xh?)GXXjipfdqF6QDBzIuoEX0Xh?)GXXjipfdqF6QDBzIuoEX0Xh?)GXXjipfdqF z6QDBzIuoEX0Xh?)GXXjipfdqF6QDBzIuoEX0Xh?)GXXjipfdqF6QDBzIuoEX0Xh?) zGXXjipfdqF6QDBzIuoEX0Xh?)GXXjipfdqF6QDBzIuoEX0Xh?)GXXjipfdqF6QDBz zIuoEX0Xh?)GXXjipfdqF6QDBzIuoEX0Xh?)GXXjipfdqF6QDBzIuoEX0Xh?)GXXji zpfdqF6QDBzIuoEX0Xh?+Ga)(?qB9{n6QVOAIuoKZAvzPHGa)(?qB9{n6QVOAIuoKZ zAvzPHGa)(?qB9{n6QVOAIuoKZAvzPHGa)(?qB9{n6QVOAIuoKZAvzPHGa)(?qB9{n z6QVOAIuoKZAvzPHGa)(?qB9{n6QVOAIuoKZAvzPHGa)(?qB9{n6QVOAIuoKZAvzPH zGa)(?qB9{n6QVOAIuoKZAvzPHGa)(?qB9{n6QVOAIuoKZAvzPHGa)(?qB9{n6QVOA zIuoKZAvzPHGa)(?qB9{n6QVOAIuoKZAvzPHGa)(?qB9{n6QVOAIuoKZAvzPHGa)(? zqB9{n6QVOAIuoKZAvzPHGa)(?qB9{n6QVOAIuoKZAvzPHGa)(?qB9{n6QVOAIuoKZ zAvzPHGa)(?qB9{n6QVOAIuoKZAvzPHGa)(?qB9{n6QVOAIuoKZAvzPHGa)(?qB9{n z6QVOAIuoKZAvzPHGa)(?qB9{n6QVOAIuoKZAvzPHGa)(?qB9{n6QVOAIuoKZAvzPH zGa)(?qB9{n6QVOAIuoKZAvzPHGa)(?qB9{n6QVOAIuoKZAvzPHGa)(?qB9{n6QVOA zIuoKZAvzPHGa)(?qB9{n6QMH^IuoHY5jqp0GZ8uyp)(OW6QMH^IuoHY5jqp0GZ8uy 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 literal 0 HcmV?d00001 diff --git a/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/Jura-Medium-LB.ttf.meta b/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/Jura-Medium-LB.ttf.meta new file mode 100644 index 00000000..4a3d5ad1 --- /dev/null +++ b/Assets/Photon/PhotonRealtime/Demos/DemoLoadBalancing/Jura-Medium-LB.ttf.meta @@ -0,0 +1,20 @@ +fileFormatVersion: 2 +guid: 4a4df204c321f9c40b0dbfb1baaffb4c +timeCreated: 1533028308 +licenseType: Store +TrueTypeFontImporter: + serializedVersion: 3 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 1 + characterPadding: 0 + includeFontData: 1 + fontNames: [] + fallbackFontReferences: + - {fileID: 12800000, guid: e00995507c2406448b4c8429136104dd, type: 3} + customCharacters: + fontRenderingMode: 0 + ascentCalculationMode: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking.meta b/Assets/Photon/PhotonUnityNetworking.meta new file mode 100644 index 00000000..bb50e895 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: d2b6672cc770a19438ff06fcb2637630 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Code.meta b/Assets/Photon/PhotonUnityNetworking/Code.meta new file mode 100644 index 00000000..7bb5219e --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 9a312e4dbb5268d4e859200f68478e0c +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/CustomTypes.cs b/Assets/Photon/PhotonUnityNetworking/Code/CustomTypes.cs new file mode 100644 index 00000000..3a6b993b --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/CustomTypes.cs @@ -0,0 +1,74 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// Sets up support for Unity-specific types. Can be a blueprint how to register your own Custom Types for sending. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + using UnityEngine; + using Photon.Realtime; + using ExitGames.Client.Photon; + + + /// + /// Internally used class, containing de/serialization method for PUN specific classes. + /// + internal static class CustomTypes + { + /// Register de/serializer methods for PUN specific types. Makes the type usable in RaiseEvent, RPC and sync updates of PhotonViews. + internal static void Register() + { + PhotonPeer.RegisterType(typeof(Player), (byte) 'P', SerializePhotonPlayer, DeserializePhotonPlayer); + } + + + #region Custom De/Serializer Methods + + public static readonly byte[] memPlayer = new byte[4]; + + private static short SerializePhotonPlayer(StreamBuffer outStream, object customobject) + { + int ID = ((Player) customobject).ActorNumber; + + lock (memPlayer) + { + byte[] bytes = memPlayer; + int off = 0; + Protocol.Serialize(ID, bytes, ref off); + outStream.Write(bytes, 0, 4); + return 4; + } + } + + private static object DeserializePhotonPlayer(StreamBuffer inStream, short length) + { + if (length != 4) + { + return null; + } + + int ID; + lock (memPlayer) + { + inStream.Read(memPlayer, 0, length); + int off = 0; + Protocol.Deserialize(out ID, memPlayer, ref off); + } + + if (PhotonNetwork.CurrentRoom != null) + { + Player player = PhotonNetwork.CurrentRoom.GetPlayer(ID); + return player; + } + return null; + } + + #endregion + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/CustomTypes.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/CustomTypes.cs.meta new file mode 100644 index 00000000..82e3a5cd --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/CustomTypes.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: ab517bd36a2b2504b83979fcad45d4a2 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor.meta new file mode 100644 index 00000000..6f60006f --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: e14293cef01c2f742a605d63babcb803 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/CopyIcon.png b/Assets/Photon/PhotonUnityNetworking/Code/Editor/CopyIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..429019e6155d0645e4b2ba43c3a23a92ba61a09e GIT binary patch literal 131 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 WE+=r3xRWpd0000 +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// MenuItems and in-Editor scripts for PhotonNetwork. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; + +using UnityEditor; +using UnityEditor.Callbacks; +using UnityEditor.Compilation; +using UnityEngine; + +namespace Photon.Pun +{ + using Realtime; + + + public class PunWizardText + { + public string WindowTitle = "PUN Wizard"; + public string SetupWizardWarningTitle = "Warning"; + public string SetupWizardWarningMessage = "You have not yet run the Photon setup wizard! Your game won't be able to connect. See Windows -> Photon Unity Networking."; + public string MainMenuButton = "Main Menu"; + public string SetupWizardTitle = "PUN Setup"; + public string SetupWizardInfo = "Thanks for importing Photon Unity Networking.\nThis window should set you up.\n\n- To use an existing Photon Cloud App, enter your AppId.\n- To register an account or access an existing one, enter the account's mail address.\n- To use Photon OnPremise, skip this step."; + public string EmailOrAppIdLabel = "AppId or Email"; + public string AlreadyRegisteredInfo = "The email is registered so we can't fetch your AppId (without password).\n\nPlease login online to get your AppId and paste it above."; + public string SkipRegistrationInfo = "Skipping? No problem:\nEdit your server settings in the PhotonServerSettings file."; + public string RegisteredNewAccountInfo = "We created a (free) account and fetched you an AppId.\nWelcome. Your PUN project is setup."; + public string AppliedToSettingsInfo = "Your AppId is now applied to this project."; + public string SetupCompleteInfo = "Done!\nAll connection settings can be edited in the PhotonServerSettings now.\nHave a look."; + public string CloseWindowButton = "Close"; + public string SkipButton = "Skip"; + public string SetupButton = "Setup Project"; + public string CancelButton = "Cancel"; + public string PUNWizardLabel = "PUN Wizard"; + public string SettingsButton = "Settings:"; + public string SetupServerCloudLabel = "Setup wizard for setting up your own server or the cloud."; + public string WarningPhotonDisconnect = "Disconnecting PUN due to recompile. Exit PlayMode."; + public string StartButton = "Start"; + public string LocateSettingsButton = "Locate PhotonServerSettings"; + public string SettingsHighlightLabel = "Highlights the used photon settings file in the project."; + public string DocumentationLabel = "Documentation:"; + public string OpenPDFText = "Reference PDF"; + public string OpenPDFTooltip = "Opens the local documentation pdf."; + public string OpenDevNetText = "Doc Pages / Manual"; + public string OpenDevNetTooltip = "Online documentation for Photon."; + public string OpenCloudDashboardText = "Cloud Dashboard Login"; + public string OpenCloudDashboardTooltip = "Review Cloud App information and statistics."; + public string OpenForumText = "Open Forum"; + public string OpenForumTooltip = "Online support for Photon."; + public string OkButton = "Ok"; + public string OwnHostCloudCompareLabel = "How 'my own host' compares to 'cloud'."; + public string ComparisonPageButton = "Cloud versus OnPremise"; + public string ConnectionTitle = "Connecting"; + public string ConnectionInfo = "Connecting to the account service..."; + public string ErrorTextTitle = "Error"; + public string IncorrectRPCListTitle = "Warning: RPC-list becoming incompatible!"; + public string IncorrectRPCListLabel = "Your project's RPC-list is full, so we can't add some RPCs just compiled.\n\nBy removing outdated RPCs, the list will be long enough but incompatible with older client builds!\n\nMake sure you change the game version where you use PhotonNetwork.ConnectUsingSettings()."; + public string RemoveOutdatedRPCsLabel = "Remove outdated RPCs"; + public string FullRPCListTitle = "Warning: RPC-list is full!"; + public string FullRPCListLabel = "Your project's RPC-list is too long for PUN.\n\nYou can change PUN's source to use short-typed RPC index. Look for comments 'LIMITS RPC COUNT'\n\nAlternatively, remove some RPC methods (use more parameters per RPC maybe).\n\nAfter a RPC-list refresh, make sure you change the game version where you use PhotonNetwork.ConnectUsingSettings()."; + public string SkipRPCListUpdateLabel = "Skip RPC-list update"; + public string PUNNameReplaceTitle = "Warning: RPC-list Compatibility"; + public string PUNNameReplaceLabel = "PUN replaces RPC names with numbers by using the RPC-list. All clients must use the same list for that.\n\nClearing it most likely makes your client incompatible with previous versions! Change your game version or make sure the RPC-list matches other clients."; + public string RPCListCleared = "Clear RPC-list"; + public string ServerSettingsCleanedWarning = "Cleared the PhotonServerSettings.RpcList, which breaks compatibility with older builds. You should update the \"App Version\" in the PhotonServerSettings to avoid issues."; + public string WizardMainWindowInfo = "This window should help you find important settings for PUN, as well as documentation."; + } + + + public class PhotonEditor : EditorWindow + { + protected static Type WindowType = typeof(PhotonEditor); + + protected Vector2 scrollPos = Vector2.zero; + + private readonly Vector2 preferredSize = new Vector2(350, 400); + + private static Texture2D BackgroundImage; + + public static PunWizardText CurrentLang = new PunWizardText(); + + /// + /// third parties custom token + /// + public static string CustomToken = null; + + /// + /// third parties custom context + /// + public static string CustomContext = null; + + protected static string DocumentationLocation = "Assets/Photon/PhotonNetworking-Documentation.pdf"; + + protected static string UrlFreeLicense = "https://dashboard.photonengine.com/en-US/SelfHosted"; + + public const string UrlDevNet = "https://doc.photonengine.com/en-us/pun/v2"; + + protected static string UrlForum = "https://forum.photonengine.com"; + + protected static string UrlCompare = "https://doc.photonengine.com/en-us/realtime/current/getting-started/onpremise-or-saas"; + + protected static string UrlHowToSetup = "https://doc.photonengine.com/en-us/onpremise/current/getting-started/photon-server-in-5min"; + + protected static string UrlAppIDExplained = "https://doc.photonengine.com/en-us/realtime/current/getting-started/obtain-your-app-id"; + + public const string UrlCloudDashboard = "https://dashboard.photonengine.com/en-US/account/signin?email="; + + public const string UrlPunSettings = "https://doc.photonengine.com/en-us/pun/v2/getting-started/initial-setup"; // the SeverSettings class has this url directly in it's HelpURL attribute. + + private enum PhotonSetupStates + { + MainUi, + + RegisterForPhotonCloud, + + EmailAlreadyRegistered, + + GoEditPhotonServerSettings, + + EmailRegistrationPending + } + + private bool isSetupWizard = false; + + private PhotonSetupStates photonSetupState = PhotonSetupStates.RegisterForPhotonCloud; + + + private bool minimumInput = false; + private bool useMail = false; + private bool useAppId = false; + private bool useSkip = false; + private bool highlightedSettings = false; + private bool close = false; + private string mailOrAppId = string.Empty; + + + private static double lastWarning = 0; + private static bool postInspectorUpdate; + + + + [MenuItem("Window/Photon Unity Networking/PUN Wizard &p", false, 0)] + protected static void MenuItemOpenWizard() + { + PhotonEditor win = GetWindow(false, CurrentLang.WindowTitle, true); + if (win == null) + { + return; + } + win.photonSetupState = PhotonSetupStates.MainUi; + win.isSetupWizard = false; + } + + [MenuItem("Window/Photon Unity Networking/Highlight Server Settings %#&p", false, 1)] + protected static void MenuItemHighlightSettings() + { + HighlightSettings(); + } + + + + [UnityEditor.InitializeOnLoadMethod] + public static void InitializeOnLoadMethod() + { + //Debug.Log("InitializeOnLoadMethod()"); + EditorApplication.delayCall += OnDelayCall; + } + + + // used to register for various events (post-load) + private static void OnDelayCall() + { + //Debug.Log("OnDelayCall()"); + + postInspectorUpdate = true; + + EditorApplication.playModeStateChanged -= PlayModeStateChanged; + EditorApplication.playModeStateChanged += PlayModeStateChanged; + + #if UNITY_2021_1_OR_NEWER + CompilationPipeline.compilationStarted -= OnCompileStarted21; + CompilationPipeline.compilationStarted += OnCompileStarted21; + #else + CompilationPipeline.assemblyCompilationStarted -= OnCompileStarted; + CompilationPipeline.assemblyCompilationStarted += OnCompileStarted; + #endif + + #if (UNITY_2018 || UNITY_2018_1_OR_NEWER) + EditorApplication.projectChanged -= OnProjectChanged; + EditorApplication.projectChanged += OnProjectChanged; + #else + EditorApplication.projectWindowChanged -= OnProjectChanged; + EditorApplication.projectWindowChanged += OnProjectChanged; + #endif + + + if (!EditorApplication.isPlaying && !EditorApplication.isPlayingOrWillChangePlaymode) + { + OnProjectChanged(); // call this initially from here, as the project change events happened earlier (on start of the Editor) + PhotonEditor.UpdateRpcList(); + } + } + + + + // called in editor, opens wizard for initial setup, keeps scene PhotonViews up to date and closes connections when compiling (to avoid issues) + private static void OnProjectChanged() + { + PhotonEditorUtils.ProjectChangedWasCalled = true; + + + // Prevent issues with Unity Cloud Builds where ServerSettings are not found. + // Also, within the context of a Unity Cloud Build, ServerSettings is already present anyway. + #if UNITY_CLOUD_BUILD + return; + #else + + if (PhotonNetwork.PhotonServerSettings == null || PhotonNetwork.PhotonServerSettings.AppSettings == null || string.IsNullOrEmpty(PhotonNetwork.PhotonServerSettings.AppSettings.AppIdRealtime)) + { + PhotonNetwork.LoadOrCreateSettings(true); + } + + if (PhotonNetwork.PhotonServerSettings == null) + { + // the PhotonServerSettings are loaded or created. If both fails, the Editor should probably not run (anymore). + return; + } + + PunSceneSettings.SanitizeSceneSettings(); + + + // serverSetting is null when the file gets deleted. otherwise, the wizard should only run once and only if hosting option is not (yet) set + if (!PhotonNetwork.PhotonServerSettings.DisableAutoOpenWizard) + { + ShowRegistrationWizard(); + PhotonNetwork.PhotonServerSettings.DisableAutoOpenWizard = true; + PhotonEditor.SaveSettings(); + } + #endif + } + + + #if UNITY_2021_1_OR_NEWER + private static void OnCompileStarted21(object obj) + { + OnCompileStarted(obj as string); + } + #endif + + private static void OnCompileStarted(string obj) + { + if (PhotonNetwork.IsConnected) + { + // log warning, unless there was one recently + if (EditorApplication.timeSinceStartup - lastWarning > 3) + { + Debug.LogWarning(CurrentLang.WarningPhotonDisconnect); + lastWarning = EditorApplication.timeSinceStartup; + } + + PhotonNetwork.Disconnect(); + PhotonNetwork.NetworkingClient.LoadBalancingPeer.DispatchIncomingCommands(); + #if UNITY_2019_4_OR_NEWER && UNITY_EDITOR + EditorApplication.ExitPlaymode(); + #endif + } + } + + + [DidReloadScripts] + private static void OnDidReloadScripts() + { + //Debug.Log("OnDidReloadScripts() postInspectorUpdate: "+postInspectorUpdate + " isPlayingOrWillChangePlaymode: "+EditorApplication.isPlayingOrWillChangePlaymode); + if (postInspectorUpdate && !EditorApplication.isPlayingOrWillChangePlaymode) + { + PhotonEditor.UpdateRpcList(); // could be called when compilation finished (instead of when reload / compile starts) + } + } + + private static void PlayModeStateChanged(PlayModeStateChange state) + { + //Debug.Log("PlayModeStateChanged"); + if (EditorApplication.isPlaying || !EditorApplication.isPlayingOrWillChangePlaymode) + { + return; + } + + if (string.IsNullOrEmpty(PhotonNetwork.PhotonServerSettings.AppSettings.AppIdRealtime) && !PhotonNetwork.PhotonServerSettings.AppSettings.IsMasterServerAddress) + { + EditorUtility.DisplayDialog(CurrentLang.SetupWizardWarningTitle, CurrentLang.SetupWizardWarningMessage, CurrentLang.OkButton); + } + } + + + #region GUI and Wizard + + + // setup per window + public PhotonEditor() + { + this.minSize = this.preferredSize; + } + + protected void Awake() + { + // check if some appid is set. if so, we can avoid registration calls. + if (PhotonNetwork.PhotonServerSettings != null && PhotonNetwork.PhotonServerSettings.AppSettings != null && !string.IsNullOrEmpty(PhotonNetwork.PhotonServerSettings.AppSettings.AppIdRealtime)) + { + this.mailOrAppId = PhotonNetwork.PhotonServerSettings.AppSettings.AppIdRealtime; + } + } + + /// Creates an Editor window, showing the cloud-registration wizard for Photon (entry point to setup PUN). + protected static void ShowRegistrationWizard() + { + PhotonEditor win = GetWindow(WindowType, false, CurrentLang.WindowTitle, true) as PhotonEditor; + if (win == null) + { + return; + } + + win.photonSetupState = PhotonSetupStates.RegisterForPhotonCloud; + win.isSetupWizard = true; + } + + // Window Update() callback. On-demand, when Window is open + protected void Update() + { + if (this.close) + { + this.Close(); + } + } + + protected virtual void OnGUI() + { + if (BackgroundImage == null) + { + string[] paths = AssetDatabase.FindAssets("PunGradient t:Texture2D"); + if (paths != null && paths.Length > 0) + { + BackgroundImage = AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(paths[0])); + } + } + + PhotonSetupStates oldGuiState = this.photonSetupState; // used to fix an annoying Editor input field issue: wont refresh until focus is changed. + + GUI.SetNextControlName(string.Empty); + this.scrollPos = GUILayout.BeginScrollView(this.scrollPos); + + + if (this.photonSetupState == PhotonSetupStates.MainUi) + { + this.UiMainWizard(); + } + else + { + EditorGUI.BeginDisabledGroup(this.photonSetupState == PhotonSetupStates.EmailRegistrationPending); + this.UiSetupApp(); + EditorGUI.EndDisabledGroup(); + } + + + GUILayout.EndScrollView(); + + if (oldGuiState != this.photonSetupState) + { + GUI.FocusControl(string.Empty); + } + } + + private string emailSentToAccount; + private bool emailSentToAccountIsRegistered; + + + protected virtual void UiSetupApp() + { + GUI.skin.label.wordWrap = true; + if (!this.isSetupWizard) + { + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button(CurrentLang.MainMenuButton, GUILayout.ExpandWidth(false))) + { + this.photonSetupState = PhotonSetupStates.MainUi; + } + + GUILayout.EndHorizontal(); + } + + + // setup header + this.UiTitleBox(CurrentLang.SetupWizardTitle, BackgroundImage); + + // setup info text + GUI.skin.label.richText = true; + GUILayout.Label(CurrentLang.SetupWizardInfo); + + // input of appid or mail + EditorGUILayout.Separator(); + GUILayout.Label(CurrentLang.EmailOrAppIdLabel); + this.minimumInput = false; + this.useMail = false; + this.useAppId = false; + this.mailOrAppId = EditorGUILayout.TextField(this.mailOrAppId); + if (!string.IsNullOrEmpty(this.mailOrAppId)) + { + this.mailOrAppId = this.mailOrAppId.Trim(); // note: we trim all input + if (AccountService.IsValidEmail(this.mailOrAppId)) + { + // input should be a mail address + this.useMail = true; + + // check if the current input equals earlier input, which is known to be registered already + this.minimumInput = !this.mailOrAppId.Equals(this.emailSentToAccount) || !this.emailSentToAccountIsRegistered; + } + else if (ServerSettings.IsAppId(this.mailOrAppId)) + { + // this should be an appId + this.minimumInput = true; + this.useAppId = true; + } + } + + // button to skip setup + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button(CurrentLang.SkipButton, GUILayout.Width(100))) + { + this.photonSetupState = PhotonSetupStates.GoEditPhotonServerSettings; + this.useSkip = true; + this.useMail = false; + this.useAppId = false; + } + + // SETUP button + EditorGUI.BeginDisabledGroup(!this.minimumInput); + if (GUILayout.Button(CurrentLang.SetupButton, GUILayout.Width(100))) + { + this.useSkip = false; + GUIUtility.keyboardControl = 0; + if (this.useMail) + { + this.RegisterWithEmail(this.mailOrAppId); // sets state + } + else if (this.useAppId) + { + this.photonSetupState = PhotonSetupStates.GoEditPhotonServerSettings; + Undo.RecordObject(PhotonNetwork.PhotonServerSettings, "Update PhotonServerSettings for PUN"); + PhotonNetwork.PhotonServerSettings.UseCloud(this.mailOrAppId); + PhotonEditor.SaveSettings(); + } + } + EditorGUI.EndDisabledGroup(); + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + + + // existing account needs to fetch AppId online + if (this.photonSetupState == PhotonSetupStates.EmailAlreadyRegistered) + { + // button to open dashboard and get the AppId + GUILayout.Space(15); + GUILayout.Label(CurrentLang.AlreadyRegisteredInfo); + + + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button(new GUIContent(CurrentLang.OpenCloudDashboardText, CurrentLang.OpenCloudDashboardTooltip), GUILayout.Width(205))) + { + Application.OpenURL(string.Concat(UrlCloudDashboard, Uri.EscapeUriString(this.mailOrAppId))); + this.mailOrAppId = string.Empty; + } + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + } + + + else if (this.photonSetupState == PhotonSetupStates.GoEditPhotonServerSettings) + { + if (!this.highlightedSettings) + { + this.highlightedSettings = true; + HighlightSettings(); + } + + GUILayout.Space(15); + if (this.useSkip) + { + GUILayout.Label(CurrentLang.SkipRegistrationInfo); + } + else if (this.useMail) + { + GUILayout.Label(CurrentLang.RegisteredNewAccountInfo); + } + else if (this.useAppId) + { + GUILayout.Label(CurrentLang.AppliedToSettingsInfo); + } + + + // setup-complete info + GUILayout.Space(15); + GUILayout.Label(CurrentLang.SetupCompleteInfo); + + + // close window (done) + GUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + if (GUILayout.Button(CurrentLang.CloseWindowButton, GUILayout.Width(205))) + { + this.close = true; + } + GUILayout.FlexibleSpace(); + GUILayout.EndHorizontal(); + } + GUI.skin.label.richText = false; + } + + private void UiTitleBox(string title, Texture2D bgIcon) + { + GUIStyle bgStyle = EditorGUIUtility.isProSkin ? new GUIStyle(GUI.skin.GetStyle("Label")) : new GUIStyle(GUI.skin.GetStyle("WhiteLabel")); + bgStyle.padding = new RectOffset(10, 10, 10, 10); + bgStyle.fontSize = 22; + bgStyle.fontStyle = FontStyle.Bold; + if (bgIcon != null) + { + bgStyle.normal.background = bgIcon; + } + + EditorGUILayout.BeginHorizontal(); + GUILayout.FlexibleSpace(); + EditorGUILayout.EndHorizontal(); + Rect scale = GUILayoutUtility.GetLastRect(); + scale.height = 44; + + GUI.Label(scale, title, bgStyle); + GUILayout.Space(scale.height + 5); + } + + protected virtual void UiMainWizard() + { + GUILayout.Space(15); + + // title + this.UiTitleBox(CurrentLang.PUNWizardLabel, BackgroundImage); + + EditorGUILayout.BeginVertical(new GUIStyle() { padding = new RectOffset(10, 10, 10, 10) }); + + // wizard info text + GUILayout.Label(CurrentLang.WizardMainWindowInfo, new GUIStyle("Label") { wordWrap = true }); + GUILayout.Space(15); + + + // settings button + GUILayout.Label(CurrentLang.SettingsButton, EditorStyles.boldLabel); + + if (GUILayout.Button(new GUIContent(CurrentLang.LocateSettingsButton, CurrentLang.SettingsHighlightLabel))) + { + HighlightSettings(); + } + if (GUILayout.Button(new GUIContent(CurrentLang.OpenCloudDashboardText, CurrentLang.OpenCloudDashboardTooltip))) + { + Application.OpenURL(UrlCloudDashboard + Uri.EscapeUriString(this.mailOrAppId)); + } + if (GUILayout.Button(new GUIContent(CurrentLang.SetupButton, CurrentLang.SetupServerCloudLabel))) + { + this.photonSetupState = PhotonSetupStates.RegisterForPhotonCloud; + } + + GUILayout.Space(15); + + + // documentation + GUILayout.Label(CurrentLang.DocumentationLabel, EditorStyles.boldLabel); + + if (GUILayout.Button(new GUIContent(CurrentLang.OpenPDFText, CurrentLang.OpenPDFTooltip))) + { + EditorUtility.OpenWithDefaultApp(DocumentationLocation); + } + + if (GUILayout.Button(new GUIContent(CurrentLang.OpenDevNetText, CurrentLang.OpenDevNetTooltip))) + { + Application.OpenURL(UrlDevNet); + } + + GUI.skin.label.wordWrap = true; + GUILayout.Label(CurrentLang.OwnHostCloudCompareLabel); + if (GUILayout.Button(CurrentLang.ComparisonPageButton)) + { + Application.OpenURL(UrlCompare); + } + + + if (GUILayout.Button(new GUIContent(CurrentLang.OpenForumText, CurrentLang.OpenForumTooltip))) + { + Application.OpenURL(UrlForum); + } + + GUILayout.EndVertical(); + + } + + #endregion + + + private AccountService serviceClient; + protected virtual void RegisterWithEmail(string email) + { + List types = new List(); + types.Add(ServiceTypes.Pun); + if (PhotonEditorUtils.HasChat) + { + types.Add(ServiceTypes.Chat); + } + if (PhotonEditorUtils.HasVoice) + { + types.Add(ServiceTypes.Voice); + } + + + if (this.serviceClient == null) + { + this.serviceClient = new AccountService(); + this.serviceClient.CustomToken = CustomToken; + this.serviceClient.CustomContext = CustomContext; + } + else + { + // while RegisterByEmail will check RequestPendingResult below, it would also display an error message. no needed in this case + if (this.serviceClient.RequestPendingResult) + { + Debug.LogWarning("Registration request is pending a response. Please wait."); + return; + } + } + + this.emailSentToAccount = email; + this.emailSentToAccountIsRegistered = false; + + if (this.serviceClient.RegisterByEmail(email, types, RegisterWithEmailSuccessCallback, RegisterWithEmailErrorCallback, "PUN"+PhotonNetwork.PunVersion)) + { + this.photonSetupState = PhotonSetupStates.EmailRegistrationPending; + EditorUtility.DisplayProgressBar(CurrentLang.ConnectionTitle, CurrentLang.ConnectionInfo, 0.5f); + } + else + { + this.DisplayErrorMessage("Email registration request could not be sent. Retry again or check error logs and contact support."); + } + } + + private void RegisterWithEmailSuccessCallback(AccountServiceResponse res) + { + EditorUtility.ClearProgressBar(); + this.emailSentToAccountIsRegistered = true; // email is either registered now, or was already + + if (res.ReturnCode == AccountServiceReturnCodes.Success) + { + string key = ((int) ServiceTypes.Pun).ToString(); + string appId; + if (res.ApplicationIds.TryGetValue(key, out appId)) + { + this.mailOrAppId = appId; + PhotonNetwork.PhotonServerSettings.UseCloud(this.mailOrAppId, null); + key = ((int) ServiceTypes.Chat).ToString(); + if (res.ApplicationIds.TryGetValue(key, out appId)) + { + PhotonNetwork.PhotonServerSettings.AppSettings.AppIdChat = appId; + } + else if (PhotonEditorUtils.HasChat) + { + Debug.LogWarning("Registration successful but no Chat AppId returned"); + } + key = ((int) ServiceTypes.Voice).ToString(); + if (res.ApplicationIds.TryGetValue(key, out appId)) + { + PhotonNetwork.PhotonServerSettings.AppSettings.AppIdVoice = appId; + } + else if (PhotonEditorUtils.HasVoice) + { + Debug.LogWarning("Registration successful but no Voice AppId returned"); + } + PhotonEditor.SaveSettings(); + this.photonSetupState = PhotonSetupStates.GoEditPhotonServerSettings; + } + else + { + DisplayErrorMessage("Registration successful but no PUN AppId returned"); + } + } + else + { + PhotonEditor.SaveSettings(); + + if (res.ReturnCode == AccountServiceReturnCodes.EmailAlreadyRegistered) + { + this.photonSetupState = PhotonSetupStates.EmailAlreadyRegistered; + } + else + { + DisplayErrorMessage(res.Message); + } + } + } + + private void RegisterWithEmailErrorCallback(string error) + { + EditorUtility.ClearProgressBar(); + DisplayErrorMessage(error); + } + + private void DisplayErrorMessage(string error) + { + EditorUtility.DisplayDialog(CurrentLang.ErrorTextTitle, error, CurrentLang.OkButton); + this.photonSetupState = PhotonSetupStates.RegisterForPhotonCloud; + } + + // Pings PhotonServerSettings and makes it selected (show in Inspector) + private static void HighlightSettings() + { + ServerSettings serverSettings = (ServerSettings)Resources.Load(PhotonNetwork.ServerSettingsFileName, typeof(ServerSettings)); + Selection.objects = new UnityEngine.Object[] { serverSettings }; + EditorGUIUtility.PingObject(serverSettings); + } + + // Marks settings object as dirty, so it gets saved. + // unity 5.3 changes the usecase for SetDirty(). but here we don't modify a scene object! so it's ok to use + private static void SaveSettings() + { + EditorUtility.SetDirty(PhotonNetwork.PhotonServerSettings); + } + + #region RPC List Handling + + + public static void UpdateRpcList() + { + //Debug.Log("UpdateRpcList()"); + + if (PhotonNetwork.PhotonServerSettings == null) + { + Debug.LogWarning("UpdateRpcList() wasn not able to access the PhotonServerSettings. Not updating the RPCs."); + return; + } + + + // check all "script assemblies" for methods with PunRPC attribute + List additionalRpcs = new List(); // not yet listed rpc-method names go here + List allRpcs = new List(); + + + #if UNITY_2019_2_OR_NEWER + + // we can make use of the new TypeCache to find methods with PunRPC attribute + var extractedMethods = TypeCache.GetMethodsWithAttribute(); + foreach (var methodInfo in extractedMethods) + { + allRpcs.Add(methodInfo.Name); + if (!PhotonNetwork.PhotonServerSettings.RpcList.Contains(methodInfo.Name) && !additionalRpcs.Contains(methodInfo.Name)) + { + additionalRpcs.Add(methodInfo.Name); + } + } + + #else + + System.Reflection.Assembly[] assemblies = System.AppDomain.CurrentDomain.GetAssemblies().Where(a => !(a.ManifestModule is System.Reflection.Emit.ModuleBuilder)).ToArray(); + + foreach (var assembly in assemblies) + { + if (!assembly.Location.Contains("ScriptAssemblies") || assembly.FullName.StartsWith("Assembly-CSharp-Editor")) + { + continue; + } + + var types = assembly.GetTypes().Where(t => t.IsSubclassOf(typeof(MonoBehaviour))); + var methodInfos = types.SelectMany(t => t.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)); + var methodNames = methodInfos.Where(m => m.IsDefined(typeof(PunRPC), false)).Select(mi => mi.Name).ToArray(); + var additional = methodNames.Where(n => !PhotonNetwork.PhotonServerSettings.RpcList.Contains(n) && !additionalRpcs.Contains(n)); + + allRpcs.AddRange(methodNames); + additionalRpcs.AddRange(additional); + } + + #endif + + + if (additionalRpcs.Count <= 0) + { + //Debug.Log("UpdateRPCs did not found new."); + return; + } + + + if (additionalRpcs.Count + PhotonNetwork.PhotonServerSettings.RpcList.Count >= byte.MaxValue) + { + if (allRpcs.Count <= byte.MaxValue) + { + bool clearList = EditorUtility.DisplayDialog(CurrentLang.IncorrectRPCListTitle, CurrentLang.IncorrectRPCListLabel, CurrentLang.RemoveOutdatedRPCsLabel, CurrentLang.CancelButton); + if (clearList) + { + PhotonNetwork.PhotonServerSettings.RpcList.Clear(); + additionalRpcs = allRpcs.Distinct().ToList(); // we add all unique names + } + else + { + return; + } + } + else + { + EditorUtility.DisplayDialog(CurrentLang.FullRPCListTitle, CurrentLang.FullRPCListLabel, CurrentLang.SkipRPCListUpdateLabel); + return; + } + } + + + additionalRpcs.Sort(); + Undo.RecordObject(PhotonNetwork.PhotonServerSettings, "RPC-list update of PUN."); + PhotonNetwork.PhotonServerSettings.RpcList.AddRange(additionalRpcs); + EditorUtility.SetDirty(PhotonNetwork.PhotonServerSettings); + + //Debug.Log("Updated RPCs. Added: "+additionalRpcs.Count); + } + + + public static void ClearRpcList() + { + bool clearList = EditorUtility.DisplayDialog(CurrentLang.PUNNameReplaceTitle, CurrentLang.PUNNameReplaceLabel, CurrentLang.RPCListCleared, CurrentLang.CancelButton); + if (clearList) + { + ServerSettings serverSettings = PhotonNetwork.PhotonServerSettings; + + Undo.RecordObject(serverSettings, "RPC-list cleared for PUN."); + serverSettings.RpcList.Clear(); + EditorUtility.SetDirty(serverSettings); + + Debug.LogWarning(CurrentLang.ServerSettingsCleanedWarning); + } + } + + #endregion + + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonEditor.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonEditor.cs.meta new file mode 100644 index 00000000..beda65ac --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonEditor.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: dabbbed2a74eac44dac281f20d706ba8 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonGUI.cs b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonGUI.cs new file mode 100644 index 00000000..54a6be22 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonGUI.cs @@ -0,0 +1,363 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// GUI scripts for the Editor. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +using UnityEngine; +using UnityEditor; + +namespace Photon.Pun +{ + public class PhotonGUI + { + #region Styles + + static GUIStyle m_DefaultTitleStyle; + + public static GUIStyle DefaultTitleStyle + { + get + { + if (m_DefaultTitleStyle == null) + { + m_DefaultTitleStyle = new GUIStyle(); + m_DefaultTitleStyle.border = new RectOffset(2, 2, 2, 1); + m_DefaultTitleStyle.margin = new RectOffset(5, 5, 5, 0); + m_DefaultTitleStyle.padding = new RectOffset(5, 5, 0, 0); + m_DefaultTitleStyle.alignment = TextAnchor.MiddleLeft; + m_DefaultTitleStyle.normal.background = ReorderableListResources.texTitleBackground; + m_DefaultTitleStyle.normal.textColor = EditorGUIUtility.isProSkin + ? new Color(0.8f, 0.8f, 0.8f) + : new Color(0.2f, 0.2f, 0.2f); + } + + return m_DefaultTitleStyle; + } + } + + static GUIStyle m_DefaultContainerStyle; + + public static GUIStyle DefaultContainerStyle + { + get + { + if (m_DefaultContainerStyle == null) + { + m_DefaultContainerStyle = new GUIStyle(); + m_DefaultContainerStyle.border = new RectOffset(2, 2, 1, 2); + m_DefaultContainerStyle.margin = new RectOffset(5, 5, 5, 5); + m_DefaultContainerStyle.padding = new RectOffset(1, 1, 2, 2); + m_DefaultContainerStyle.normal.background = ReorderableListResources.texContainerBackground; + } + + return m_DefaultContainerStyle; + } + } + + static GUIStyle m_DefaultAddButtonStyle; + + public static GUIStyle DefaultAddButtonStyle + { + get + { + if (m_DefaultAddButtonStyle == null) + { + m_DefaultAddButtonStyle = new GUIStyle(); + m_DefaultAddButtonStyle.fixedWidth = 30; + m_DefaultAddButtonStyle.fixedHeight = 16; + m_DefaultAddButtonStyle.normal.background = ReorderableListResources.texAddButton; + m_DefaultAddButtonStyle.active.background = ReorderableListResources.texAddButtonActive; + } + + return m_DefaultAddButtonStyle; + } + } + + static GUIStyle m_DefaultRemoveButtonStyle; + + public static GUIStyle DefaultRemoveButtonStyle + { + get + { + if (m_DefaultRemoveButtonStyle == null) + { + m_DefaultRemoveButtonStyle = new GUIStyle(); + m_DefaultRemoveButtonStyle.fixedWidth = 30; + m_DefaultRemoveButtonStyle.fixedHeight = 20; + m_DefaultRemoveButtonStyle.active.background = ReorderableListResources.CreatePixelTexture("Dark Pixel (List GUI)", new Color32(18, 18, 18, 255)); + m_DefaultRemoveButtonStyle.imagePosition = ImagePosition.ImageOnly; + m_DefaultRemoveButtonStyle.alignment = TextAnchor.MiddleCenter; + } + + return m_DefaultRemoveButtonStyle; + } + } + + static GUIStyle m_DefaultContainerRowStyle; + + public static GUIStyle DefaultContainerRowStyle + { + get + { + if (m_DefaultContainerRowStyle == null) + { + m_DefaultContainerRowStyle = new GUIStyle(); + m_DefaultContainerRowStyle.border = new RectOffset(2, 2, 2, 2); + + m_DefaultContainerRowStyle.margin = new RectOffset(5, 5, 5, 5); + m_DefaultContainerRowStyle.padding = new RectOffset(1, 1, 2, 2); + m_DefaultContainerRowStyle.normal.background = ReorderableListResources.texContainerBackground; + } + + return m_DefaultContainerRowStyle; + } + } + + static GUIStyle m_FoldoutBold; + + public static GUIStyle FoldoutBold + { + get + { + if (m_FoldoutBold == null) + { + m_FoldoutBold = new GUIStyle(EditorStyles.foldout); + m_FoldoutBold.fontStyle = FontStyle.Bold; + } + + return m_FoldoutBold; + } + } + + static GUIStyle m_RichLabel; + + public static GUIStyle RichLabel + { + get + { + if (m_RichLabel == null) + { + m_RichLabel = new GUIStyle(GUI.skin.label); + m_RichLabel.richText = true; + m_RichLabel.wordWrap = true; + } + + return m_RichLabel; + } + } + + #endregion + + + internal static string GetIconPath(string iconFileName) + { + string _thisIconPath = PhotonNetwork.FindAssetPath ("PhotonGUI"); + + if (string.IsNullOrEmpty(_thisIconPath)) + { + _thisIconPath = "Assets/Photon/PhotonUnityNetworking/Code/Editor/"+iconFileName; + } + else + { + _thisIconPath = _thisIconPath.Replace("PhotonGUI.cs", iconFileName); + } + + return _thisIconPath; + } + + static Texture2D m_HelpIcon; + + public static Texture2D HelpIcon + { + get + { + if (m_HelpIcon == null) + { + m_HelpIcon = AssetDatabase.LoadAssetAtPath(GetIconPath("help.png"), typeof(Texture2D)) as Texture2D; + } + + + return m_HelpIcon; + } + } + + + static Texture2D m_CopyIcon; + static Texture2D m_CopyIconPro; + + public static Texture2D CopyIcon + { + get + { + if (EditorGUIUtility.isProSkin) + { + if (m_CopyIconPro == null) + { + m_CopyIconPro = AssetDatabase.LoadAssetAtPath(GetIconPath("CopyIconPro.png"), typeof(Texture2D)) as Texture2D; + } + + return m_CopyIconPro; + } + + if (m_CopyIcon == null) + { + m_CopyIcon = AssetDatabase.LoadAssetAtPath(GetIconPath("CopyIcon.png"), typeof(Texture2D)) as Texture2D; + } + + return m_CopyIcon; + } + } + + #region Interface + + public static void ContainerHeader(string headline) + { + DoContainerHeader(headline, 27, 0); + } + + public static bool ContainerHeaderToggle(string headline, bool toggle) + { + return DoContainerHeaderToggle(headline, toggle); + } + + public static bool ContainerHeaderFoldout(string headline, bool foldout, System.Action buttonAction = null, string buttonName = null) + { + return DoContainerHeaderFoldout(headline, foldout, buttonAction, buttonName); + } + + public static Rect ContainerBody(float height) + { + return DoContainerBody(height); + } + + public static bool AddButton() + { + Rect controlRect = EditorGUILayout.GetControlRect(false, DefaultAddButtonStyle.fixedHeight - 5); + controlRect.yMin -= 5; + controlRect.yMax -= 5; + + Rect addButtonRect = new Rect(controlRect.xMax - DefaultAddButtonStyle.fixedWidth, + controlRect.yMin, + DefaultAddButtonStyle.fixedWidth, + DefaultAddButtonStyle.fixedHeight); + + return GUI.Button(addButtonRect, "", DefaultAddButtonStyle); + } + + public static void DrawSplitter(Rect position) + { + ReorderableListResources.DrawTexture(position, ReorderableListResources.texItemSplitter); + } + + public static void DrawGizmoOptions( + Rect position, + string label, + SerializedProperty gizmoEnabledProperty, + SerializedProperty gizmoColorProperty, + SerializedProperty gizmoTypeProperty, + SerializedProperty gizmoSizeProperty) + { + float height = EditorGUIUtility.singleLineHeight; + float flexibleWidth = Mathf.Max(40, position.width - EditorGUIUtility.labelWidth - 20 - 75 - 5 - 40 - 5); + + Rect labelRect = new Rect(position.xMin, position.yMin, EditorGUIUtility.labelWidth, height); + GUI.Label(labelRect, label); + + Rect enabledRect = new Rect(labelRect.xMax, labelRect.yMin, 20, height); + EditorGUI.PropertyField(enabledRect, gizmoEnabledProperty, GUIContent.none); + + bool oldGUIEnabled = GUI.enabled; + GUI.enabled = gizmoEnabledProperty.boolValue; + + Rect colorRect = new Rect(enabledRect.xMax + 5, labelRect.yMin, 70, height); + EditorGUI.PropertyField(colorRect, gizmoColorProperty, GUIContent.none); + + Rect typeRect = new Rect(colorRect.xMax + 5, labelRect.yMin, flexibleWidth * 0.7f, height); + EditorGUI.PropertyField(typeRect, gizmoTypeProperty, GUIContent.none); + + Rect sizeLabelRect = new Rect(typeRect.xMax + 10, labelRect.yMin, 30, height); + GUI.Label(sizeLabelRect, "Size"); + + Rect sizeRect = new Rect(sizeLabelRect.xMax + 5, labelRect.yMin, flexibleWidth * 0.3f, height); + EditorGUI.PropertyField(sizeRect, gizmoSizeProperty, GUIContent.none); + + GUI.enabled = oldGUIEnabled; + } + + #endregion + + #region Implementation + + static Rect DoContainerBody(float height) + { + Rect controlRect = EditorGUILayout.GetControlRect(false, height); + controlRect.yMin -= 3; + controlRect.yMax -= 2; + + int controlID = GUIUtility.GetControlID(FocusType.Passive, controlRect); + + if (Event.current.type == EventType.Repaint) + { + PhotonGUI.DefaultContainerStyle.Draw(controlRect, GUIContent.none, controlID); + } + + return controlRect; + } + + static bool DoContainerHeaderToggle(string headline, bool toggle) + { + Rect rect = DoContainerHeader(headline, 27, 15); + Rect toggleRect = new Rect(rect.xMin + 5, rect.yMin + 5, EditorGUIUtility.labelWidth, rect.height); + + return EditorGUI.Toggle(toggleRect, toggle); + } + + + static bool DoContainerHeaderFoldout(string headline, bool foldout, System.Action buttonAction = null, string buttonLabel = null, float buttonWidth = 48) + { + bool showButton = buttonAction != null; + + Rect rect = DoContainerHeader("", 27, 0f); + + // Shorten foldout label if button is present, so it doesn't interfere with clicking. + float foldoutWidth = rect.width - (showButton ? 15 + buttonWidth: 15); + Rect foldoutRect = new Rect(rect.xMin + 15, rect.yMin + 5, foldoutWidth, 16); + + bool expanded = EditorGUI.Foldout(foldoutRect, foldout, headline, FoldoutBold); + + // If a button is defined show it, and invoke action on click. + if (showButton && GUI.Button(new Rect(foldoutRect) { x = foldoutRect.xMax, height = 17, width = buttonWidth - 4 }, buttonLabel == null ? "" : buttonLabel)) + { + buttonAction.Invoke(); + } + + return expanded; + } + + static Rect DoContainerHeader(string headline, float height, float contentOffset) + { + GUILayout.Space(5); + Rect controlRect = EditorGUILayout.GetControlRect(false, height); + + int controlID = GUIUtility.GetControlID(FocusType.Passive, controlRect); + + if (Event.current.type == EventType.Repaint) + { + PhotonGUI.DefaultTitleStyle.Draw(controlRect, GUIContent.none, controlID); + + Rect labelRect = new Rect(controlRect.xMin + 5 + contentOffset, controlRect.yMin + 5, controlRect.width, controlRect.height); + GUI.Label(labelRect, headline, EditorStyles.boldLabel); + } + + return controlRect; + } + + #endregion + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonGUI.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonGUI.cs.meta new file mode 100644 index 00000000..247a4eb2 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonGUI.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3d2cadb1ccf05074e8ce96b1393846cf +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonUnityNetworking.Editor.asmdef b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonUnityNetworking.Editor.asmdef new file mode 100644 index 00000000..2aa5d2bf --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonUnityNetworking.Editor.asmdef @@ -0,0 +1,13 @@ +{ + "name": "PhotonUnityNetworking.Editor", + "references": [ + "PhotonRealtime", + "PhotonUnityNetworking" + ], + "optionalUnityReferences": [], + "includePlatforms": [ + "Editor" + ], + "excludePlatforms": [], + "allowUnsafeCode": false +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonUnityNetworking.Editor.asmdef.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonUnityNetworking.Editor.asmdef.meta new file mode 100644 index 00000000..f38d07ed --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonUnityNetworking.Editor.asmdef.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4025d00f1ce60da4ea2d0830acf5ebfb +timeCreated: 1537863428 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonViewHandler.cs b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonViewHandler.cs new file mode 100644 index 00000000..4f5b340a --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonViewHandler.cs @@ -0,0 +1,191 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// This is a Editor script to initialize PhotonView components. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + using System.Collections.Generic; + using Realtime; + using UnityEditor; + using UnityEngine; + using Debug = UnityEngine.Debug; + + + [InitializeOnLoad] + public class PhotonViewHandler : EditorWindow + { + static PhotonViewHandler() + { + // called once per change (per key-press in inspectors) and once after play-mode ends. + #if (UNITY_2018 || UNITY_2018_1_OR_NEWER) + EditorApplication.hierarchyChanged += OnHierarchyChanged; + #else + EditorApplication.hierarchyWindowChanged += OnHierarchyChanged; + #endif + } + + + internal static void OnHierarchyChanged() + { + // set prefabs to viewID 0 if needed + // organize resource PVs in a list per viewID + + // process the lists: if more than one photonView is in a list, we have to resolve the clash + // check if only one view had the viewId earlier + // apply a new viewID to the others + + // update the cached list of instances and their viewID + + + //Debug.LogWarning("OnHierarchyChanged(). isPlaying: " + Application.isPlaying); + if (Application.isPlaying) + { + return; + } + + + PhotonView[] photonViewResources = Resources.FindObjectsOfTypeAll(); + List photonViewInstances = new List(); + Dictionary> viewInstancesPerViewId = new Dictionary>(); + List photonViewsToReassign = new List(); + + foreach (PhotonView view in photonViewResources) + { + if (PhotonEditorUtils.IsPrefab(view.gameObject)) + { + // prefabs should use 0 as ViewID and sceneViewId + if (view.ViewID != 0 || view.sceneViewId != 0) + { + view.ViewID = 0; + view.sceneViewId = 0; + EditorUtility.SetDirty(view); + } + + continue; // skip prefabs in further processing + } + + photonViewInstances.Add(view); + + + // assign a new viewID if the viewId is lower than the minimum for this scene + if (!IsViewIdOkForScene(view)) + { + photonViewsToReassign.Add(view); + continue; // this view definitely gets cleaned up, so it does not count versus duplicates, checked below + } + + + // organize the viewInstances into lists per viewID, so we know duplicate usage + if (!viewInstancesPerViewId.ContainsKey(view.sceneViewId)) + { + viewInstancesPerViewId[view.sceneViewId] = new List(); + } + viewInstancesPerViewId[view.sceneViewId].Add(view); + } + + //Debug.Log("PreviousAssignments: "+PunSceneViews.Instance.Views.Count); + + foreach (List list in viewInstancesPerViewId.Values) + { + if (list.Count <= 1) + { + continue; // skip lists with just one entry (the viewID is unique) + } + + + PhotonView previousAssignment = null; + bool wasAssigned = PunSceneViews.Instance.Views.TryGetValue(list[0].sceneViewId, out previousAssignment); + + foreach (PhotonView view in list) + { + if (wasAssigned && view.Equals(previousAssignment)) + { + // previously, we cached the used viewID as assigned to the current view. we don't change this. + continue; + } + + //Debug.LogWarning("View to reassign due to viewID: "+view, view.gameObject); + photonViewsToReassign.Add(view); + } + } + + int i; + foreach (PhotonView view in photonViewsToReassign) + { + i = MinSceneViewId(view); + while (viewInstancesPerViewId.ContainsKey(i)) + { + i++; + } + view.sceneViewId = i; + viewInstancesPerViewId.Add(i, null); // we don't need the lists anymore but we care about getting the viewIDs listed + EditorUtility.SetDirty(view); + } + + + // update the "semi persistent" list of viewIDs and their PhotonViews + PunSceneViews.Instance.Views.Clear(); + foreach (PhotonView view in photonViewInstances) + { + if (PunSceneViews.Instance.Views.ContainsKey(view.sceneViewId)) + { + Debug.LogError("ViewIDs should no longer have duplicates! "+view.sceneViewId, view); + continue; + } + + PunSceneViews.Instance.Views[view.sceneViewId] = view; + } + + //Debug.Log("photonViewsToReassign.Count: "+photonViewsToReassign.Count + " count of viewIDs in use: "+viewInstancesPerViewId.Values.Count); + //Debug.Log("PreviousAssignments now counts: "+PunSceneViews.Instance.Views.Count); + } + + + private static int MinSceneViewId(PhotonView view) + { + int result = PunSceneSettings.MinViewIdForScene(view.gameObject.scene.name); + return result; + } + + private static bool IsViewIdOkForScene(PhotonView view) + { + return view.sceneViewId >= MinSceneViewId(view); + } + } + + /// + /// Stores a PhotonView instances per viewId (key). Instance is used as cache storage in-Editor. + /// + public class PunSceneViews : ScriptableObject + { + [SerializeField] + public Dictionary Views = new Dictionary(); + + private static PunSceneViews instanceField; + public static PunSceneViews Instance + { + get + { + if (instanceField != null) + { + return instanceField; + } + + instanceField = GameObject.FindObjectOfType(); + if (instanceField == null) + { + instanceField = ScriptableObject.CreateInstance(); + } + + return instanceField; + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonViewHandler.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonViewHandler.cs.meta new file mode 100644 index 00000000..74dfe3fb --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonViewHandler.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 57b538e62a0ca6248bfd354def935e57 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonViewInspector.cs b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonViewInspector.cs new file mode 100644 index 00000000..a4a09772 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonViewInspector.cs @@ -0,0 +1,394 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// Custom inspector for the PhotonView component. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +using System; +using UnityEditor; +using UnityEngine; + +using Photon.Realtime; + +namespace Photon.Pun +{ + [CustomEditor(typeof(PhotonView))] + [CanEditMultipleObjects] + internal class PhotonViewInspector : Editor + { + private PhotonView m_Target; + + private static GUIContent ownerTransferGuiContent = new GUIContent("Ownership Transfer", "Determines how ownership changes may be initiated."); + private static GUIContent syncronizationGuiContent = new GUIContent("Synchronization", "Determines how sync updates are culled and sent."); + private static GUIContent observableSearchGuiContent = new GUIContent("Observable Search", "When set to Auto, On Awake, Observables on this GameObject (and child GameObjects) will be found and populate the Observables List." + + "\n\nNested PhotonViews (children with a PhotonView) and their children will not be included in the search."); + + public void OnEnable() + { + this.m_Target = (PhotonView)this.target; + + if (!Application.isPlaying) + m_Target.FindObservables(); + } + public override void OnInspectorGUI() + { + + + this.m_Target = (PhotonView)this.target; + bool isProjectPrefab = PhotonEditorUtils.IsPrefab(this.m_Target.gameObject); + bool multiSelected = Selection.gameObjects.Length > 1; + + if (this.m_Target.ObservedComponents == null) + { + this.m_Target.ObservedComponents = new System.Collections.Generic.List(); + } + + if (this.m_Target.ObservedComponents.Count == 0) + { + this.m_Target.ObservedComponents.Add(null); + } + + GUILayout.Space(5); + + EditorGUILayout.BeginVertical((GUIStyle)"HelpBox"); + // View ID - Hide if we are multi-selected + if (!multiSelected) + { + if (isProjectPrefab) + { + EditorGUILayout.LabelField("View ID", "Set at runtime", new GUIStyle("Label") { richText = true }); + } + else if (EditorApplication.isPlaying) + { + EditorGUILayout.LabelField("View ID", this.m_Target.ViewID.ToString()); + } + else + { + // this is an object in a scene, modified at edit-time. we can store this as sceneViewId + int idValue = EditorGUILayout.IntField("View ID [1.." + (PhotonNetwork.MAX_VIEW_IDS - 1) + "]", this.m_Target.sceneViewId); + if (this.m_Target.sceneViewId != idValue) + { + Undo.RecordObject(this.m_Target, "Change PhotonView viewID"); + this.m_Target.sceneViewId = idValue; + } + } + } + + // Locally Controlled + if (EditorApplication.isPlaying) + { + string masterClientHint = PhotonNetwork.IsMasterClient ? " (master)" : ""; + EditorGUILayout.LabelField("IsMine:", this.m_Target.IsMine.ToString() + masterClientHint); + Room room = PhotonNetwork.CurrentRoom; + int cretrId = this.m_Target.CreatorActorNr; + Player cretr = (room != null) ? room.GetPlayer(cretrId) : null; + Player owner = this.m_Target.Owner; + Player ctrlr = this.m_Target.Controller; + EditorGUILayout.LabelField("Controller:", (ctrlr != null ? ("[" + ctrlr.ActorNumber + "] '" + ctrlr.NickName + "' " + (ctrlr.IsMasterClient ? " (master)" : "")) : "[0] ")); + EditorGUILayout.LabelField("Owner:", (owner != null ? ("[" + owner.ActorNumber + "] '" + owner.NickName + "' " + (owner.IsMasterClient ? " (master)" : "")) : "[0] ")); + EditorGUILayout.LabelField("Creator:", (cretr != null ? ("[" +cretrId + "] '" + cretr.NickName + "' " + (cretr.IsMasterClient ? " (master)" : "")) : "[0] ")); + + } + + EditorGUILayout.EndVertical(); + + EditorGUI.BeginDisabledGroup(Application.isPlaying); + + GUILayout.Space(5); + + // Ownership section + + EditorGUILayout.LabelField("Ownership", (GUIStyle)"BoldLabel"); + + OwnershipOption own = (OwnershipOption)EditorGUILayout.EnumPopup(ownerTransferGuiContent, this.m_Target.OwnershipTransfer/*, GUILayout.MaxWidth(68), GUILayout.MinWidth(68)*/); + if (own != this.m_Target.OwnershipTransfer) + { + // jf: fixed 5 and up prefab not accepting changes if you quit Unity straight after change. + // not touching the define nor the rest of the code to avoid bringing more problem than solving. + EditorUtility.SetDirty(this.m_Target); + + Undo.RecordObject(this.m_Target, "Change PhotonView Ownership Transfer"); + this.m_Target.OwnershipTransfer = own; + } + + + GUILayout.Space(5); + + // Observables section + + EditorGUILayout.LabelField("Observables", (GUIStyle)"BoldLabel"); + + EditorGUILayout.PropertyField(this.serializedObject.FindProperty("Synchronization"), syncronizationGuiContent); + + if (this.m_Target.Synchronization == ViewSynchronization.Off) + { + // Show warning if there are any observables. The null check is because the list allows nulls. + var observed = m_Target.ObservedComponents; + if (observed.Count > 0) + { + for (int i = 0, cnt = observed.Count; i < cnt; ++i) + if (observed[i] != null) + { + EditorGUILayout.HelpBox("Synchronization is set to Off. Select a Synchronization setting in order to sync the listed Observables.", MessageType.Warning); + break; + } + } + } + + + PhotonView.ObservableSearch autoFindObservables = (PhotonView.ObservableSearch)EditorGUILayout.EnumPopup(observableSearchGuiContent, m_Target.observableSearch); + + if (m_Target.observableSearch != autoFindObservables) + { + Undo.RecordObject(this.m_Target, "Change Auto Find Observables Toggle"); + m_Target.observableSearch = autoFindObservables; + } + + m_Target.FindObservables(); + + if (!multiSelected) + { + bool disableList = Application.isPlaying || autoFindObservables != PhotonView.ObservableSearch.Manual; + + if (disableList) + EditorGUI.BeginDisabledGroup(true); + + this.DrawObservedComponentsList(disableList); + + if (disableList) + EditorGUI.EndDisabledGroup(); + } + + // Cleanup: save and fix look + if (GUI.changed) + { + PhotonViewHandler.OnHierarchyChanged(); // TODO: check if needed + } + + EditorGUI.EndDisabledGroup(); + } + + + + private int GetObservedComponentsCount() + { + int count = 0; + + for (int i = 0; i < this.m_Target.ObservedComponents.Count; ++i) + { + if (this.m_Target.ObservedComponents[i] != null) + { + count++; + } + } + + return count; + } + + /// + /// Find Observables, and then baking them into the serialized object. + /// + private void EditorFindObservables() + { + Undo.RecordObject(serializedObject.targetObject, "Find Observables"); + var property = serializedObject.FindProperty("ObservedComponents"); + + // Just doing a Find updates the Observables list, but Unity fails to save that change. + // Instead we do the find, and then iterate the found objects into the serialize property, then apply that. + property.ClearArray(); + m_Target.FindObservables(true); + for(int i = 0; i < m_Target.ObservedComponents.Count; ++i) + { + property.InsertArrayElementAtIndex(i); + property.GetArrayElementAtIndex(i).objectReferenceValue = m_Target.ObservedComponents[i]; + } + serializedObject.ApplyModifiedProperties(); + } + + private void DrawObservedComponentsList(bool disabled = false) + { + SerializedProperty listProperty = this.serializedObject.FindProperty("ObservedComponents"); + + if (listProperty == null) + { + return; + } + + float containerElementHeight = 22; + float containerHeight = listProperty.arraySize * containerElementHeight; + + string foldoutLabel = "Observed Components (" + this.GetObservedComponentsCount() + ")"; + bool isOpen = PhotonGUI.ContainerHeaderFoldout(foldoutLabel, this.serializedObject.FindProperty("ObservedComponentsFoldoutOpen").boolValue, () => EditorFindObservables(), "Find"); + this.serializedObject.FindProperty("ObservedComponentsFoldoutOpen").boolValue = isOpen; + + if (isOpen == false) + { + containerHeight = 0; + } + + //Texture2D statsIcon = AssetDatabase.LoadAssetAtPath( "Assets/Photon Unity Networking/Editor/PhotonNetwork/PhotonViewStats.png", typeof( Texture2D ) ) as Texture2D; + + Rect containerRect = PhotonGUI.ContainerBody(containerHeight); + + + bool wasObservedComponentsEmpty = this.m_Target.ObservedComponents.FindAll(item => item != null).Count == 0; + if (isOpen == true) + { + for (int i = 0; i < listProperty.arraySize; ++i) + { + Rect elementRect = new Rect(containerRect.xMin, containerRect.yMin + containerElementHeight * i, containerRect.width, containerElementHeight); + { + Rect texturePosition = new Rect(elementRect.xMin + 6, elementRect.yMin + elementRect.height / 2f - 1, 9, 5); + ReorderableListResources.DrawTexture(texturePosition, ReorderableListResources.texGrabHandle); + + Rect propertyPosition = new Rect(elementRect.xMin + 20, elementRect.yMin + 3, elementRect.width - 45, 16); + + // keep track of old type to catch when a new type is observed + Type _oldType = listProperty.GetArrayElementAtIndex(i).objectReferenceValue != null ? listProperty.GetArrayElementAtIndex(i).objectReferenceValue.GetType() : null; + + EditorGUI.PropertyField(propertyPosition, listProperty.GetArrayElementAtIndex(i), new GUIContent()); + + // new type, could be different from old type + Type _newType = listProperty.GetArrayElementAtIndex(i).objectReferenceValue != null ? listProperty.GetArrayElementAtIndex(i).objectReferenceValue.GetType() : null; + + // the user dropped a Transform, we must change it by adding a PhotonTransformView and observe that instead + if (_oldType != _newType) + { + if (_newType == typeof(PhotonView)) + { + listProperty.GetArrayElementAtIndex(i).objectReferenceValue = null; + Debug.LogError("PhotonView Detected you dropped a PhotonView, this is not allowed. \n It's been removed from observed field."); + + } + else if (_newType == typeof(Transform)) + { + + // try to get an existing PhotonTransformView ( we don't want any duplicates...) + PhotonTransformView _ptv = this.m_Target.gameObject.GetComponent(); + if (_ptv == null) + { + // no ptv yet, we create one and enable position and rotation, no scaling, as it's too rarely needed to take bandwidth for nothing + _ptv = Undo.AddComponent(this.m_Target.gameObject); + } + // switch observe from transform to _ptv + listProperty.GetArrayElementAtIndex(i).objectReferenceValue = _ptv; + Debug.Log("PhotonView has detected you dropped a Transform. Instead it's better to observe a PhotonTransformView for better control and performances"); + } + else if (_newType == typeof(Rigidbody)) + { + + Rigidbody _rb = listProperty.GetArrayElementAtIndex(i).objectReferenceValue as Rigidbody; + + // try to get an existing PhotonRigidbodyView ( we don't want any duplicates...) + PhotonRigidbodyView _prbv = _rb.gameObject.GetComponent(); + if (_prbv == null) + { + // no _prbv yet, we create one + _prbv = Undo.AddComponent(_rb.gameObject); + } + // switch observe from transform to _prbv + listProperty.GetArrayElementAtIndex(i).objectReferenceValue = _prbv; + Debug.Log("PhotonView has detected you dropped a RigidBody. Instead it's better to observe a PhotonRigidbodyView for better control and performances"); + } + else if (_newType == typeof(Rigidbody2D)) + { + + // try to get an existing PhotonRigidbody2DView ( we don't want any duplicates...) + PhotonRigidbody2DView _prb2dv = this.m_Target.gameObject.GetComponent(); + if (_prb2dv == null) + { + // no _prb2dv yet, we create one + _prb2dv = Undo.AddComponent(this.m_Target.gameObject); + } + // switch observe from transform to _prb2dv + listProperty.GetArrayElementAtIndex(i).objectReferenceValue = _prb2dv; + Debug.Log("PhotonView has detected you dropped a Rigidbody2D. Instead it's better to observe a PhotonRigidbody2DView for better control and performances"); + } + else if (_newType == typeof(Animator)) + { + + // try to get an existing PhotonAnimatorView ( we don't want any duplicates...) + PhotonAnimatorView _pav = this.m_Target.gameObject.GetComponent(); + if (_pav == null) + { + // no _pav yet, we create one + _pav = Undo.AddComponent(this.m_Target.gameObject); + } + // switch observe from transform to _prb2dv + listProperty.GetArrayElementAtIndex(i).objectReferenceValue = _pav; + Debug.Log("PhotonView has detected you dropped a Animator, so we switched to PhotonAnimatorView so that you can serialized the Animator variables"); + } + else if (!typeof(IPunObservable).IsAssignableFrom(_newType)) + { + bool _ignore = false; +#if PLAYMAKER + _ignore = _newType == typeof(PlayMakerFSM);// Photon Integration for PlayMaker will swap at runtime to a proxy using iPunObservable. +#endif + + if (_newType == null || _newType == typeof(Rigidbody) || _newType == typeof(Rigidbody2D)) + { + _ignore = true; + } + + if (!_ignore) + { + listProperty.GetArrayElementAtIndex(i).objectReferenceValue = null; + Debug.LogError("PhotonView Detected you dropped a Component missing IPunObservable Interface,\n You dropped a <" + _newType + "> instead. It's been removed from observed field."); + } + } + } + + //Debug.Log( listProperty.GetArrayElementAtIndex( i ).objectReferenceValue.GetType() ); + //Rect statsPosition = new Rect( propertyPosition.xMax + 7, propertyPosition.yMin, statsIcon.width, statsIcon.height ); + //ReorderableListResources.DrawTexture( statsPosition, statsIcon ); + + Rect removeButtonRect = new Rect(elementRect.xMax - PhotonGUI.DefaultRemoveButtonStyle.fixedWidth, + elementRect.yMin + 2, + PhotonGUI.DefaultRemoveButtonStyle.fixedWidth, + PhotonGUI.DefaultRemoveButtonStyle.fixedHeight); + + GUI.enabled = !disabled && listProperty.arraySize > 1; + if (GUI.Button(removeButtonRect, new GUIContent(ReorderableListResources.texRemoveButton), PhotonGUI.DefaultRemoveButtonStyle)) + { + listProperty.DeleteArrayElementAtIndex(i); + } + GUI.enabled = !disabled; + + if (i < listProperty.arraySize - 1) + { + texturePosition = new Rect(elementRect.xMin + 2, elementRect.yMax, elementRect.width - 4, 1); + PhotonGUI.DrawSplitter(texturePosition); + } + } + } + } + + if (PhotonGUI.AddButton()) + { + listProperty.InsertArrayElementAtIndex(Mathf.Max(0, listProperty.arraySize - 1)); + } + + this.serializedObject.ApplyModifiedProperties(); + + bool isObservedComponentsEmpty = this.m_Target.ObservedComponents.FindAll(item => item != null).Count == 0; + + if (wasObservedComponentsEmpty == true && isObservedComponentsEmpty == false && this.m_Target.Synchronization == ViewSynchronization.Off) + { + Undo.RecordObject(this.m_Target, "Change PhotonView"); + this.m_Target.Synchronization = ViewSynchronization.UnreliableOnChange; + this.serializedObject.Update(); + } + + if (wasObservedComponentsEmpty == false && isObservedComponentsEmpty == true) + { + Undo.RecordObject(this.m_Target, "Change PhotonView"); + this.m_Target.Synchronization = ViewSynchronization.Off; + this.serializedObject.Update(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonViewInspector.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonViewInspector.cs.meta new file mode 100644 index 00000000..200b1ee2 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PhotonViewInspector.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: e73a30c46df19194f873ea7a9ce12753 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/PunGradient.png b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PunGradient.png new file mode 100644 index 0000000000000000000000000000000000000000..15d054da5892bee1d67cf48a6cc9da704dbd8278 GIT binary patch literal 308 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K56gZfGWYKBE%|ME?z$3Dlfq`2Hgc&d0t@{HM zeCFxm7*a9k?M+{)EkXZxnr@xHZLUGh-wsvN{Z}3~-7bytU3)+4QT0B9IIH`cuRZ=a z?_Y88@A%2DpO +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// Optional lowest-viewID setting per-scene. So PhotonViews don't get the same ID. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +using System; +using System.Collections.Generic; +using System.IO; + +using UnityEditor; +using UnityEngine; + +namespace Photon.Pun +{ + [Serializable] + public class SceneSetting + { + public SceneAsset sceneAsset; + public string sceneName; + public int minViewId; + } + + [HelpURL("https://doc.photonengine.com/en-us/pun/current/getting-started/feature-overview#scene_photonviews_in_multiple_scenes")] + public class PunSceneSettings : ScriptableObject + { + + #if UNITY_EDITOR + // Suppressing compiler warning "this variable is never used". Only used in the CustomEditor, only in Editor + #pragma warning disable 0414 + [SerializeField] + bool SceneSettingsListFoldoutOpen = true; + #pragma warning restore 0414 + #endif + + [SerializeField] + public List MinViewIdPerScene = new List(); + + + private const string SceneSettingsFileName = "PunSceneSettingsFile.asset"; + + // we use the path to PunSceneSettings.cs as path to create a scene settings file + private static string punSceneSettingsCsPath; + + public static string PunSceneSettingsCsPath + { + get + { + if (!string.IsNullOrEmpty(punSceneSettingsCsPath)) + { + return punSceneSettingsCsPath; + } + + // Unity 4.3.4 does not yet have AssetDatabase.FindAssets(). Would be easier. + var result = Directory.GetFiles(Application.dataPath, "PunSceneSettings.cs", SearchOption.AllDirectories); + if (result.Length >= 1) + { + punSceneSettingsCsPath = Path.GetDirectoryName(result[0]); + punSceneSettingsCsPath = punSceneSettingsCsPath.Replace('\\', '/'); + punSceneSettingsCsPath = punSceneSettingsCsPath.Replace(Application.dataPath, "Assets"); + + // AssetDatabase paths have to use '/' and are relative to the project's folder. Always. + punSceneSettingsCsPath = punSceneSettingsCsPath + "/" + SceneSettingsFileName; + } + + return punSceneSettingsCsPath; + } + } + + + private static PunSceneSettings instanceField; + + public static PunSceneSettings Instance + { + get + { + if (instanceField != null) + { + return instanceField; + } + + instanceField = (PunSceneSettings)AssetDatabase.LoadAssetAtPath(PunSceneSettingsCsPath, typeof(PunSceneSettings)); + if (instanceField == null) + { + instanceField = CreateInstance(); + #pragma warning disable 0168 + try + { + AssetDatabase.CreateAsset(instanceField, PunSceneSettingsCsPath); + } + catch (Exception e) + { + #if PHOTON_UNITY_NETWORKING + Debug.LogError("-- WARNING: PROJECT CLEANUP NECESSARY -- If you delete pun from your project, make sure you also clean up the Scripting define symbols from any reference to PUN like 'PHOTON_UNITY_NETWORKING "); + #endif + } + #pragma warning restore 0168 + } + + return instanceField; + } + } + + + public static int MinViewIdForScene(string sceneName) + { + if (string.IsNullOrEmpty(sceneName)) + { + return 1; + } + + PunSceneSettings pss = Instance; + if (pss == null) + { + Debug.LogError("pss cant be null"); + return 1; + } + + foreach (SceneSetting setting in pss.MinViewIdPerScene) + { + if (setting.sceneName.Equals(sceneName)) + { + return setting.minViewId; + } + } + return 1; + } + + public static void SanitizeSceneSettings() + { + if (Instance == null) + { + return; + } + + #if UNITY_EDITOR + foreach (SceneSetting sceneSetting in Instance.MinViewIdPerScene) + { + if (sceneSetting.sceneAsset == null && !string.IsNullOrEmpty(sceneSetting.sceneName)) + { + + string[] guids = AssetDatabase.FindAssets(sceneSetting.sceneName + " t:SceneAsset"); + + foreach (string guid in guids) + { + string path = AssetDatabase.GUIDToAssetPath(guid); + if (Path.GetFileNameWithoutExtension(path) == sceneSetting.sceneName) + { + sceneSetting.sceneAsset = + AssetDatabase.LoadAssetAtPath( + AssetDatabase.GUIDToAssetPath(guid)); + + // Debug.Log("SceneSettings : ''"+sceneSetting.sceneName+"'' scene is missing: Issue corrected",Instance); + break; + } + } + + //Debug.Log("SceneSettings : ''"+sceneSetting.sceneName+"'' scene is missing",Instance); + + continue; + } + + if (sceneSetting.sceneAsset != null && sceneSetting.sceneName!= sceneSetting.sceneAsset.name ) + { + // Debug.Log("SceneSettings : '"+sceneSetting.sceneName+"' mismatch with sceneAsset: '"+sceneSetting.sceneAsset.name+"' : Issue corrected",Instance); + sceneSetting.sceneName = sceneSetting.sceneAsset.name; + continue; + } + } + #endif + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettings.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettings.cs.meta new file mode 100644 index 00000000..065e2d89 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettings.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: fc3284eace5a64d4bb516df7d7effdb9 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettingsFile.asset b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettingsFile.asset new file mode 100644 index 00000000..a8784019 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettingsFile.asset @@ -0,0 +1,21 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fc3284eace5a64d4bb516df7d7effdb9, type: 3} + m_Name: PunSceneSettingsFile + m_EditorClassIdentifier: + SceneSettingsListFoldoutOpen: 1 + MinViewIdPerScene: + - sceneAsset: {fileID: 102900000, guid: 559222f4671e440cba71aecba1de3505, type: 3} + sceneName: SceneView_A + minViewId: 2 + - sceneAsset: {fileID: 102900000, guid: a81615022a16c489aac8daadf8f51fae, type: 3} + sceneName: SceneView_B + minViewId: 10 diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettingsFile.asset.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettingsFile.asset.meta new file mode 100644 index 00000000..5125fa91 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettingsFile.asset.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: d0aacb83307022d449e90a09d28222ae diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettingsInspector.cs b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettingsInspector.cs new file mode 100644 index 00000000..4a683e84 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettingsInspector.cs @@ -0,0 +1,260 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2019 Exit Games GmbH +// +// +// Custom inspector for the PunSceneSettings component. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using UnityEditor; +using UnityEngine; + +namespace Photon.Pun +{ + [CustomEditor(typeof(PunSceneSettings))] + internal class PunSceneSettingsInspector : Editor + { + private PunSceneSettings m_Target; + private bool isOpen; + private List _duplicateScenesDefinition; + private List _duplicateViewIdDefinition; + + private SerializedProperty listProperty; + private SerializedProperty _sceneSettings_i; + private SerializedProperty sceneNameProperty; + private SerializedProperty sceneAssetProperty; + private SerializedProperty minViewIdProperty; + + private bool _firstTime; + + + public override void OnInspectorGUI() + { + this.m_Target = (PunSceneSettings) this.target; + + // error checking + _duplicateScenesDefinition = m_Target.MinViewIdPerScene.GroupBy(x => x.sceneName) + .Where(g => g.Count() > 1) + .Select(y => y.Key) + .ToList(); + + _duplicateViewIdDefinition = m_Target.MinViewIdPerScene.GroupBy(x => x.minViewId) + .Where(g => g.Count() > 1) + .Select(y => y.Key) + .ToList(); + + DrawSceneSettingsList(); + + foreach (string dup in _duplicateScenesDefinition) + { + EditorGUILayout.LabelField("Found duplicates for scene",dup); + } + + + foreach (SceneSetting sceneSettings in m_Target.MinViewIdPerScene) + { + if (_duplicateViewIdDefinition.Contains(sceneSettings.minViewId)) + { + GUILayout.Label("Found view Id duplicates '"+sceneSettings.minViewId+"' for scene: " +sceneSettings.sceneName); + } + + if (sceneSettings.minViewId > PhotonNetwork.MAX_VIEW_IDS) + { + GUILayout.Label(sceneSettings.sceneName+" view Id can not exceed the max view Id "+PhotonNetwork.MAX_VIEW_IDS); + } + + if (sceneSettings.minViewId < 1) + { + GUILayout.Label(sceneSettings.sceneName+" view Id can not be less than 1"); + } + + if (sceneSettings.sceneAsset == null && !string.IsNullOrEmpty(sceneSettings.sceneName)) + { + GUILayout.Label("'"+sceneSettings.sceneName+"' scene is missing in the project"); + } + } + + _firstTime = false; + } + + private void OnEnable() + { + _firstTime = true; + } + + private void DrawSceneSettingsList() + { + GUILayout.Space(5); + + // check for changes ( from undo for example) + this.serializedObject.Update(); + + listProperty = this.serializedObject.FindProperty("MinViewIdPerScene"); + + if (listProperty == null) + { + return; + } + + float containerElementHeight = 44; + float containerHeight = listProperty.arraySize * containerElementHeight; + + isOpen = PhotonGUI.ContainerHeaderFoldout("Scene Settings (" + listProperty.arraySize + ")", this.serializedObject.FindProperty("SceneSettingsListFoldoutOpen").boolValue); + this.serializedObject.FindProperty("SceneSettingsListFoldoutOpen").boolValue = isOpen; + + if (isOpen == false) + { + containerHeight = 0; + } + + Rect containerRect = PhotonGUI.ContainerBody(containerHeight); + if (isOpen == true) + { + for (int i = 0; i < listProperty.arraySize; ++i) + { + Rect elementRect = new Rect(containerRect.xMin, containerRect.yMin + containerElementHeight * i, + containerRect.width, containerElementHeight); + { + Rect texturePosition = new Rect(elementRect.xMin + 6, + elementRect.yMin + elementRect.height / 2f - 1, 9, 5); + ReorderableListResources.DrawTexture(texturePosition, ReorderableListResources.texGrabHandle); + + Rect propertyPosition = new Rect(elementRect.xMin + 20, elementRect.yMin + 3, + elementRect.width - 45, 16); + + _sceneSettings_i = listProperty.GetArrayElementAtIndex(i); + + sceneNameProperty = _sceneSettings_i.FindPropertyRelative("sceneName"); + sceneAssetProperty = _sceneSettings_i.FindPropertyRelative("sceneAsset"); + minViewIdProperty = _sceneSettings_i.FindPropertyRelative("minViewId"); + + string _sceneName = sceneNameProperty.stringValue; + SceneAsset _sceneAsset = m_Target.MinViewIdPerScene[i].sceneAsset; + + // check if we need to find the scene asset based on the scene name. This is for backward compatibility or when the scene asset was deleted + if (_firstTime) + { + if (_sceneAsset == null && !string.IsNullOrEmpty(_sceneName)) + { + string[] guids = AssetDatabase.FindAssets(_sceneName + " t:SceneAsset"); + + foreach (string guid in guids) + { + string path = AssetDatabase.GUIDToAssetPath(guid); + if (Path.GetFileNameWithoutExtension(path) == _sceneName) + { + sceneAssetProperty.objectReferenceValue = + AssetDatabase.LoadAssetAtPath( + AssetDatabase.GUIDToAssetPath(guid)); + break; + } + } + } + } + + bool _missingSceneAsset = _sceneAsset == null && !string.IsNullOrEmpty(_sceneName); + // if we don't have a scene asset for the serialized scene named, we show an error. + if (_missingSceneAsset || + (sceneNameProperty!=null && _duplicateScenesDefinition!=null && _duplicateScenesDefinition.Contains(sceneNameProperty.stringValue)) + ) + { + GUI.color = Color.red; + } + + EditorGUI.BeginChangeCheck(); + string _label = _missingSceneAsset + ? "Scene Asset: Missing '" + _sceneName + "'" + : "Scene Asset"; + + EditorGUI.PropertyField(propertyPosition,sceneAssetProperty, new GUIContent(_label)); + + if (EditorGUI.EndChangeCheck()) + { + _sceneAsset = sceneAssetProperty.objectReferenceValue as SceneAsset; + if (_sceneAsset == null && !string.IsNullOrEmpty(sceneNameProperty.stringValue)) + { + sceneNameProperty.stringValue = null; + } + else if (sceneNameProperty.stringValue != _sceneAsset.name) + { + sceneNameProperty.stringValue = _sceneAsset.name; + } + } + + + // EditorGUI.PropertyField(propertyPosition, sceneNameProperty, + // new GUIContent("Scene Name")); + + GUI.color = Color.white; + + if ( minViewIdProperty.intValue<1 || minViewIdProperty.intValue> PhotonNetwork.MAX_VIEW_IDS) + { + GUI.color = Color.red; + } + Rect secondPropertyPosition = new Rect(elementRect.xMin + 20, elementRect.yMin + containerElementHeight/2, + elementRect.width - 45, 16); + + EditorGUI.PropertyField(secondPropertyPosition, _sceneSettings_i.FindPropertyRelative("minViewId"), + new GUIContent("Minimum View ID")); + + GUI.color = Color.white; + + //Debug.Log( listProperty.GetArrayElementAtIndex( i ).objectReferenceValue.GetType() ); + //Rect statsPosition = new Rect( propertyPosition.xMax + 7, propertyPosition.yMin, statsIcon.width, statsIcon.height ); + //ReorderableListResources.DrawTexture( statsPosition, statsIcon ); + + + Rect removeButtonRect = new Rect( + elementRect.xMax - PhotonGUI.DefaultRemoveButtonStyle.fixedWidth, + elementRect.yMin + 2, + PhotonGUI.DefaultRemoveButtonStyle.fixedWidth, + PhotonGUI.DefaultRemoveButtonStyle.fixedHeight); + + + if (GUI.Button(removeButtonRect, new GUIContent(ReorderableListResources.texRemoveButton), + PhotonGUI.DefaultRemoveButtonStyle)) + { + listProperty.DeleteArrayElementAtIndex(i); + + Undo.RecordObject(this.m_Target, "Removed SceneSettings Entry"); + + } + + + if (i < listProperty.arraySize - 1) + { + texturePosition = new Rect(elementRect.xMin + 2, elementRect.yMax, elementRect.width - 4, + 1); + PhotonGUI.DrawSplitter(texturePosition); + } + } + } + } + + if (PhotonGUI.AddButton()) + { + this.listProperty.InsertArrayElementAtIndex(Mathf.Max(0, listProperty.arraySize - 1)); + _sceneSettings_i = this.listProperty.GetArrayElementAtIndex(listProperty.arraySize - 1); + sceneNameProperty = _sceneSettings_i.FindPropertyRelative("sceneName"); + sceneAssetProperty = _sceneSettings_i.FindPropertyRelative("sceneAsset"); + minViewIdProperty = _sceneSettings_i.FindPropertyRelative("minViewId"); + + sceneAssetProperty.objectReferenceValue = null; + sceneNameProperty.stringValue = ""; + minViewIdProperty.intValue = 1; + + Undo.RecordObject(this.m_Target, "Added SceneSettings Entry"); + } + + this.serializedObject.ApplyModifiedProperties(); + + + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettingsInspector.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettingsInspector.cs.meta new file mode 100644 index 00000000..800c63c6 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/PunSceneSettingsInspector.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1ad59deacfd0848dcb64a51b0a0eb960 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList.meta new file mode 100644 index 00000000..22f4297e --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 62126d9bb7b8eb64ea07a039d902d0ac +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList/LICENSE.txt b/Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList/LICENSE.txt new file mode 100644 index 00000000..99bae577 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList/LICENSE.txt @@ -0,0 +1,26 @@ +Copyright (c) 2013, Rotorz Limited +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +The views and conclusions contained in the software and documentation are those +of the authors and should not be interpreted as representing official policies, +either expressed or implied, of the FreeBSD Project. \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList/LICENSE.txt.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList/LICENSE.txt.meta new file mode 100644 index 00000000..944ba4cc --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList/LICENSE.txt.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c2fbd2e43c3dfae4d9830e9921238cf5 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList/ReorderableListResources.cs b/Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList/ReorderableListResources.cs new file mode 100644 index 00000000..b2185d8c --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList/ReorderableListResources.cs @@ -0,0 +1,237 @@ +// Copyright (c) 2012-2013 Rotorz Limited. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +using UnityEngine; +using UnityEditor; + +using System; + +namespace Photon.Pun +{ + + /// + /// Resources to assist with reorderable list control. + /// + internal static class ReorderableListResources + { + + static ReorderableListResources() + { + GenerateSpecialTextures(); + LoadResourceAssets(); + } + + #region Texture Resources + + private enum ResourceName + { + add_button = 0, + add_button_active, + container_background, + grab_handle, + remove_button, + remove_button_active, + title_background, + } + + /// + /// Resource assets for light skin. + /// + /// + /// Resource assets are PNG images which have been encoded using a base-64 + /// string so that actual asset files are not necessary. + /// + private static string[] s_LightSkin = { + "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAQCAYAAAABOs/SAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAW0lEQVRIS+3NywnAQAhF0anI4mzVCmzBBl7QEBgGE5JFhBAXd+OHM5gZZgYRKcktNxu+HRFF2e6qhtOjtQM7K/tZ+xY89wSbazg9eqOfw6oag4rcChjY8coAjA2l1RxFDY8IFAAAAABJRU5ErkJggg==", + "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAQCAYAAAABOs/SAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAGlJREFUeNpiFBER+f/jxw8GNjY2BnqAX79+MXBwcDAwMQwQGHoWnzp1CoxHjo8pBSykBi8+MTMzs2HmY2QfwXxKii9HExdZgNwgHuFB/efPH7pZCLOL8f///wyioqL/6enbL1++MAIEGABvGSLA+9GPZwAAAABJRU5ErkJggg==", + "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAMElEQVQYV2P4//8/Q1FR0X8YBvHBAp8+ffp/+fJlMA3igwUfPnwIFgDRYEFM7f8ZAG1EOYL9INrfAAAAAElFTkSuQmCC", + "iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAIElEQVQYV2P49OnTf0KYobCw8D8hzPD/P2FMLesK/wMAs5yJpK+6aN4AAAAASUVORK5CYII=", + "iVBORw0KGgoAAAANSUhEUgAAAAgAAAACCAIAAADq9gq6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABVJREFUeNpiVFZWZsAGmBhwAIAAAwAURgBt4C03ZwAAAABJRU5ErkJggg==", + "iVBORw0KGgoAAAANSUhEUgAAAAgAAAACCAIAAADq9gq6AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABVJREFUeNpivHPnDgM2wMSAAwAEGAB8VgKYlvqkBwAAAABJRU5ErkJggg==", + "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAEFJREFUeNpi/P//P0NxcfF/BgRgZP78+fN/VVVVhpCQEAZjY2OGs2fPNrCApBwdHRkePHgAVwoWnDVrFgMyAAgwAAt4E1dCq1obAAAAAElFTkSuQmCC" + }; + /// + /// Resource assets for dark skin. + /// + /// + /// Resource assets are PNG images which have been encoded using a base-64 + /// string so that actual asset files are not necessary. + /// + private static string[] s_DarkSkin = { + "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAQCAYAAAABOs/SAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIBJREFUeNpiVFZW/u/i4sLw4sULBnoACQkJhj179jAwMQwQGHoWl5aWgvHI8TGlgIXU4MUn1t3dPcx8HB8fD2cvXLgQQ0xHR4c2FmMzmBTLhl5QYwt2cn1MtsXkWjg4gvrt27fgWoMeAGQXCDD+//+fQUVF5T89fXvnzh1GgAADAFmSI1Ed3FqgAAAAAElFTkSuQmCC", + "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAQCAYAAAABOs/SAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHlJREFUeNpiFBER+f/jxw8GNjY2BnqAX79+MXBwcDAwMQwQGHoWv3nzBoxHjo8pBSykBi8+MWAOGWY+5uLigrO/ffuGIYbMppnF5Fg2tFM1yKfk+pbkoKZGEA+OVP3nzx+6WQizi/H///8MoqKi/+np2y9fvjACBBgAoTYjgvihfz0AAAAASUVORK5CYII=", + "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAD1JREFUeNpi/P//P4OKisp/Bii4c+cOIwtIwMXFheHFixcMEhISYAVMINm3b9+CBUA0CDCiazc0NGQECDAAdH0YelA27kgAAAAASUVORK5CYII=", + "iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACRJREFUeNpizM3N/c9AADAqKysTVMTi5eXFSFAREFPHOoAAAwBCfwcAO8g48QAAAABJRU5ErkJggg==", + "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAYAAACzzX7wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi/P//PwM+wHL06FG8KpgYCABGZWVlvCYABBgA7/sHvGw+cz8AAAAASUVORK5CYII=", + "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAECAYAAACzzX7wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi/P//PwM+wPKfgAomBgKAhYuLC68CgAADAAxjByOjCHIRAAAAAElFTkSuQmCC", + "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAECAYAAABGM/VAAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADtJREFUeNpi/P//P4OKisp/Bii4c+cOIwtIQE9Pj+HLly9gQRCfBcQACbx69QqmmAEseO/ePQZkABBgAD04FXsmmijSAAAAAElFTkSuQmCC" + }; + + /// + /// Gets light or dark texture "add_button.png". + /// + public static Texture2D texAddButton + { + get { return s_Cached[ (int)ResourceName.add_button ]; } + } + /// + /// Gets light or dark texture "add_button_active.png". + /// + public static Texture2D texAddButtonActive + { + get { return s_Cached[ (int)ResourceName.add_button_active ]; } + } + /// + /// Gets light or dark texture "container_background.png". + /// + public static Texture2D texContainerBackground + { + get { return s_Cached[ (int)ResourceName.container_background ]; } + } + /// + /// Gets light or dark texture "grab_handle.png". + /// + public static Texture2D texGrabHandle + { + get { return s_Cached[ (int)ResourceName.grab_handle ]; } + } + /// + /// Gets light or dark texture "remove_button.png". + /// + public static Texture2D texRemoveButton + { + get { return s_Cached[ (int)ResourceName.remove_button ]; } + } + /// + /// Gets light or dark texture "remove_button_active.png". + /// + public static Texture2D texRemoveButtonActive + { + get { return s_Cached[ (int)ResourceName.remove_button_active ]; } + } + /// + /// Gets light or dark texture "title_background.png". + /// + public static Texture2D texTitleBackground + { + get { return s_Cached[ (int)ResourceName.title_background ]; } + } + + #endregion + + #region Generated Resources + + public static Texture2D texItemSplitter { get; private set; } + + /// + /// Generate special textures. + /// + private static void GenerateSpecialTextures() + { + var splitterColor = EditorGUIUtility.isProSkin + ? new Color( 1f, 1f, 1f, 0.14f ) + : new Color( 0.59f, 0.59f, 0.59f, 0.55f ) + ; + texItemSplitter = CreatePixelTexture( "(Generated) Item Splitter", splitterColor ); + } + + /// + /// Create 1x1 pixel texture of specified color. + /// + /// Name for texture object. + /// Pixel color. + /// + /// The new Texture2D instance. + /// + public static Texture2D CreatePixelTexture( string name, Color color ) + { + var tex = new Texture2D( 1, 1, TextureFormat.ARGB32, false, true ); + tex.name = name; + tex.hideFlags = HideFlags.HideAndDontSave; + tex.filterMode = FilterMode.Point; + tex.SetPixel( 0, 0, color ); + tex.Apply(); + return tex; + } + + #endregion + + #region Load PNG from Base-64 Encoded String + + private static Texture2D[] s_Cached; + + /// + /// Read textures from base-64 encoded strings. Automatically selects assets based + /// upon whether the light or dark (pro) skin is active. + /// + private static void LoadResourceAssets() + { + var skin = EditorGUIUtility.isProSkin ? s_DarkSkin : s_LightSkin; + s_Cached = new Texture2D[ skin.Length ]; + + for( int i = 0; i < s_Cached.Length; ++i ) + { + // Get image data (PNG) from base64 encoded strings. + byte[] imageData = Convert.FromBase64String( skin[ i ] ); + + // Gather image size from image data. + int texWidth, texHeight; + GetImageSize( imageData, out texWidth, out texHeight ); + + // Generate texture asset. + var tex = new Texture2D( texWidth, texHeight, TextureFormat.ARGB32, false, true ); + tex.hideFlags = HideFlags.HideAndDontSave; + tex.name = "(Generated) ReorderableList:" + i; + tex.filterMode = FilterMode.Point; + tex.LoadImage( imageData ); + + s_Cached[ i ] = tex; + } + + s_LightSkin = null; + s_DarkSkin = null; + } + + /// + /// Read width and height if PNG file in pixels. + /// + /// PNG image data. + /// Width of image in pixels. + /// Height of image in pixels. + private static void GetImageSize( byte[] imageData, out int width, out int height ) + { + width = ReadInt( imageData, 3 + 15 ); + height = ReadInt( imageData, 3 + 15 + 2 + 2 ); + } + + private static int ReadInt( byte[] imageData, int offset ) + { + return ( imageData[ offset ] << 8 ) | imageData[ offset + 1 ]; + } + + #endregion + + #region GUI Helper + private static GUIStyle s_TempStyle = new GUIStyle(); + + /// + /// Draw texture using to workaround bug in Unity where + /// flickers when embedded inside a property drawer. + /// + /// Position of which to draw texture in space of GUI. + /// Texture. + public static void DrawTexture( Rect position, Texture2D texture ) + { + if( Event.current.type != EventType.Repaint ) + return; + + s_TempStyle.normal.background = texture; + + s_TempStyle.Draw( position, GUIContent.none, false, false, false, false ); + } + #endregion + + } + +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList/ReorderableListResources.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList/ReorderableListResources.cs.meta new file mode 100644 index 00000000..7f43a218 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/ReordableList/ReorderableListResources.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 60c609ded101b0a468fb5cf27b31cf27 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/ServerSettingsInspector.cs b/Assets/Photon/PhotonUnityNetworking/Code/Editor/ServerSettingsInspector.cs new file mode 100644 index 00000000..0d5da290 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/ServerSettingsInspector.cs @@ -0,0 +1,322 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// This is a custom editor for the ServerSettings scriptable object. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +using System; +using UnityEditor; +using UnityEngine; + +using Photon.Pun; + +using ExitGames.Client.Photon; +using System.Collections.Generic; +using System.Reflection; +using Photon.Realtime; + +namespace Photon.Pun +{ + [CustomEditor(typeof(ServerSettings))] + public class ServerSettingsInspector : Editor + { + private string versionPhoton; + + private string[] regionsPrefsList; + + private string prefLabel; + private const string notAvailableLabel = "n/a"; + + private string rpcCrc; + private bool showRpcs; + + private GUIStyle vertboxStyle; + + public void Awake() + { + this.versionPhoton = System.Reflection.Assembly.GetAssembly(typeof(PhotonPeer)).GetName().Version.ToString(); + } + + + public override void OnInspectorGUI() + { + if (vertboxStyle == null) + vertboxStyle = new GUIStyle("HelpBox") { padding = new RectOffset(6, 6, 6, 6) }; + + SerializedObject sObj = new SerializedObject(this.target); + ServerSettings settings = this.target as ServerSettings; + + + EditorGUI.BeginChangeCheck(); + + #region Version Vertical Box + + EditorGUILayout.BeginVertical(/*vertboxStyle*/); + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PrefixLabel(new GUIContent("Version:", "Version of PUN and Photon3Unity3d.dll.")); + GUILayout.FlexibleSpace(); + var helpicorect = EditorGUILayout.GetControlRect(GUILayout.MaxWidth(16)); + EditorGUIUtility.AddCursorRect(helpicorect, MouseCursor.Link); + if (GUI.Button(helpicorect, PhotonGUI.HelpIcon, GUIStyle.none)) + { + Application.OpenURL(PhotonEditor.UrlPunSettings); + } + EditorGUILayout.EndHorizontal(); + EditorGUILayout.LabelField("Pun: " + PhotonNetwork.PunVersion + " Photon lib: " + this.versionPhoton); + EditorGUILayout.EndVertical(); + + #endregion Version Vertical Box + + EditorGUI.indentLevel--; + SerializedProperty showSettingsProp = this.serializedObject.FindProperty("ShowSettings"); + bool showSettings = showSettingsProp.Foldout(new GUIContent("Server/Cloud Settings", "Core Photon Server/Cloud settings.")); + EditorGUI.indentLevel++; + + + if (showSettings != settings.ShowSettings) + { + showSettingsProp.boolValue = showSettings; + } + + if (showSettingsProp.boolValue) + { + SerializedProperty settingsSp = this.serializedObject.FindProperty("AppSettings"); + + EditorGUI.indentLevel++; + + //Realtime APP ID + this.BuildAppIdField(settingsSp.FindPropertyRelative("AppIdRealtime"), "App Id PUN"); + + if (PhotonEditorUtils.HasChat) + { + this.BuildAppIdField(settingsSp.FindPropertyRelative("AppIdChat")); + } + if (PhotonEditorUtils.HasVoice) + { + this.BuildAppIdField(settingsSp.FindPropertyRelative("AppIdVoice")); + } + + EditorGUILayout.PropertyField(settingsSp.FindPropertyRelative("AppVersion")); + EditorGUILayout.PropertyField(settingsSp.FindPropertyRelative("UseNameServer"), new GUIContent("Use Name Server", "Photon Cloud requires this checked.\nUncheck for Photon Server SDK (OnPremise).")); + EditorGUILayout.PropertyField(settingsSp.FindPropertyRelative("FixedRegion"), new GUIContent("Fixed Region", "Photon Cloud setting, needs a Name Server.\nDefine one region to always connect to.\nLeave empty to use the best region from a server-side region list.")); + EditorGUILayout.PropertyField(settingsSp.FindPropertyRelative("Server"), new GUIContent("Server", "Typically empty for Photon Cloud.\nFor Photon OnPremise, enter your host name or IP. Also uncheck \"Use Name Server\" for older Photon OnPremise servers.")); + EditorGUILayout.PropertyField(settingsSp.FindPropertyRelative("Port"), new GUIContent("Port", "Leave 0 to use default Photon Cloud ports for the Name Server.\nOnPremise defaults to 5055 for UDP and 4530 for TCP.")); + EditorGUILayout.PropertyField(settingsSp.FindPropertyRelative("ProxyServer"), new GUIContent("Proxy Server", "HTTP Proxy Server for WebSocket connection. See LoadBalancingClient.ProxyServerAddress for options.")); + EditorGUILayout.PropertyField(settingsSp.FindPropertyRelative("Protocol"), new GUIContent("Protocol", "Use UDP where possible.\nWSS works on WebGL and Xbox exports.\nDefine WEBSOCKET for use on other platforms.")); + EditorGUILayout.PropertyField(settingsSp.FindPropertyRelative("EnableProtocolFallback"), new GUIContent("Protocol Fallback", "Automatically try another network protocol, if initial connect fails.\nWill use default Name Server ports.")); + EditorGUILayout.PropertyField(settingsSp.FindPropertyRelative("EnableLobbyStatistics"), new GUIContent("Lobby Statistics", "When using multiple room lists (lobbies), the server can send info about their usage.")); + EditorGUILayout.PropertyField(settingsSp.FindPropertyRelative("NetworkLogging"), new GUIContent("Network Logging", "Log level for the Photon libraries.")); + EditorGUI.indentLevel--; + } + + EditorGUILayout.PropertyField(this.serializedObject.FindProperty("PunLogging"), new GUIContent("PUN Logging", "Log level for the PUN layer.")); + EditorGUILayout.PropertyField(this.serializedObject.FindProperty("EnableSupportLogger"), new GUIContent("Support Logger", "Logs additional info for debugging.\nUse this when you submit bugs to the Photon Team.")); + EditorGUILayout.PropertyField(this.serializedObject.FindProperty("RunInBackground"), new GUIContent("Run In Background", "Enables apps to keep the connection without focus. Android and iOS ignore this.")); + EditorGUILayout.PropertyField(this.serializedObject.FindProperty("StartInOfflineMode"), new GUIContent("Start In Offline Mode", "Simulates an online connection.\nPUN can be used as usual.")); + + EditorGUILayout.PropertyField(this.serializedObject.FindProperty("DevRegion"), new GUIContent("Dev Region", "Photon Cloud setting, needs a Name Server.\nDefine region the Editor and Development builds will always connect to - ensuring all users can find common rooms.\nLeave empty to use the Fixed Region or best region from a server-side region list. This value will be ignored for non-Development builds.")); + + #region Best Region Box + + EditorGUILayout.BeginVertical(vertboxStyle); + + if (!string.IsNullOrEmpty(PhotonNetwork.BestRegionSummaryInPreferences)) + { + this.regionsPrefsList = PhotonNetwork.BestRegionSummaryInPreferences.Split(new[] {';'}, StringSplitOptions.RemoveEmptyEntries); + if (this.regionsPrefsList.Length < 2) + { + this.prefLabel = notAvailableLabel; + } + else + { + this.prefLabel = string.Format("'{0}' ping:{1}ms ", this.regionsPrefsList[0], this.regionsPrefsList[1]); + } + } + else + { + this.prefLabel = notAvailableLabel; + } + + EditorGUILayout.LabelField(new GUIContent("Best Region Preference: " + prefLabel, "Best region is used if Fixed Region is empty.")); + + EditorGUILayout.BeginHorizontal(); + + var resetrect = EditorGUILayout.GetControlRect(GUILayout.MinWidth(64)); + var editrect = EditorGUILayout.GetControlRect(GUILayout.MinWidth(64)); + if (GUI.Button(resetrect, "Reset", EditorStyles.miniButton)) + { + ServerSettings.ResetBestRegionCodeInPreferences(); + } + + if (GUI.Button(editrect, "Edit WhiteList", EditorStyles.miniButton)) + { + Application.OpenURL("https://dashboard.photonengine.com/en-US/App/RegionsWhitelistEdit/" + PhotonNetwork.PhotonServerSettings.AppSettings.AppIdRealtime); + + } + + EditorGUILayout.EndHorizontal(); + EditorGUILayout.EndVertical(); + + #endregion Best Region Box + + + //this.showRpcs = EditorGUILayout.Foldout(this.showRpcs, new GUIContent("RPCs", "RPC shortcut list.")); + EditorGUI.indentLevel--; + this.showRpcs = this.showRpcs.Foldout(new GUIContent("RPCs", "RPC shortcut list.")); + EditorGUI.indentLevel++; + + if (this.showRpcs) + { + // first time check to get the rpc has proper + if (string.IsNullOrEmpty(this.rpcCrc)) + { + this.rpcCrc = this.RpcListHashCode().ToString("X"); + } + + #region Begin Vertical Box CRC + + EditorGUILayout.BeginVertical(vertboxStyle); + + EditorGUILayout.BeginHorizontal(); + EditorGUILayout.PrefixLabel("List CRC"); + + EditorGUI.indentLevel--; + var copyrect = EditorGUILayout.GetControlRect(GUILayout.MaxWidth(16)); + EditorGUILayout.GetControlRect(GUILayout.MaxWidth(12)); + var hashrect = EditorGUILayout.GetControlRect(GUILayout.MinWidth(16)); // new Rect(copyrect) { xMin = copyrect.xMin + 32 }; + + EditorGUIUtility.AddCursorRect(copyrect, MouseCursor.Link); + EditorGUI.LabelField(copyrect, new GUIContent("", "Copy Hashcode to Clipboard")); + if (GUI.Button(copyrect, PhotonGUI.CopyIcon, GUIStyle.none)) + { + Debug.Log("RPC-List HashCode copied into your ClipBoard: " + this.rpcCrc + ". Make sure clients that send each other RPCs have the same RPC-List."); + EditorGUIUtility.systemCopyBuffer = this.rpcCrc; + } + EditorGUI.SelectableLabel(hashrect, this.rpcCrc); + + EditorGUILayout.EndHorizontal(); + + EditorGUI.indentLevel++; + + EditorGUILayout.BeginHorizontal(); + + var refreshrect = EditorGUILayout.GetControlRect(GUILayout.MinWidth(64)); + var clearrect = EditorGUILayout.GetControlRect(GUILayout.MinWidth(64)); + + if (GUI.Button(refreshrect, "Refresh RPCs", EditorStyles.miniButton)) + { + PhotonEditor.UpdateRpcList(); + this.Repaint(); + } + + if (GUI.Button(clearrect, "Clear RPCs", EditorStyles.miniButton)) + { + PhotonEditor.ClearRpcList(); + } + + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.EndVertical(); + + #endregion End Vertical Box CRC + + EditorGUI.indentLevel++; + + SerializedProperty sRpcs = sObj.FindProperty("RpcList"); + EditorGUILayout.PropertyField(sRpcs, true); + + EditorGUI.indentLevel--; + } + + if (EditorGUI.EndChangeCheck()) + { + sObj.ApplyModifiedProperties(); + this.serializedObject.ApplyModifiedProperties(); + + // cache the rpc hash + this.rpcCrc = this.RpcListHashCode().ToString("X"); + } + + #region Simple Settings + + /// Conditional Simple Sync Settings DrawGUI - Uses reflection to avoid having to hard connect the libraries + var SettingsScriptableObjectBaseType = GetType("Photon.Utilities.SettingsScriptableObjectBase"); + if (SettingsScriptableObjectBaseType != null) + { + EditorGUILayout.GetControlRect(false, 3); + + EditorGUILayout.LabelField("Simple Extension Settings", (GUIStyle)"BoldLabel"); + + var drawAllMethod = SettingsScriptableObjectBaseType.GetMethod("DrawAllSettings"); + + if (drawAllMethod != null && this != null) + { + bool initializeAsOpen = false; + drawAllMethod.Invoke(null, new object[2] { this, initializeAsOpen }); + + } + } + + + #endregion + } + + private static Type GetType(string typeName) + { + var type = Type.GetType(typeName); + if (type != null) return type; + foreach (var a in AppDomain.CurrentDomain.GetAssemblies()) + { + type = a.GetType(typeName); + if (type != null) + return type; + } + return null; + } + + private int RpcListHashCode() + { + // this is a hashcode generated to (more) easily compare this Editor's RPC List with some other + int hashCode = PhotonNetwork.PhotonServerSettings.RpcList.Count + 1; + foreach (string s in PhotonNetwork.PhotonServerSettings.RpcList) + { + int h1 = s.GetHashCode(); + hashCode = ((h1 << 5) + h1) ^ hashCode; + } + return hashCode; + } + + private void BuildAppIdField(SerializedProperty property, string label = null) + { + EditorGUILayout.BeginHorizontal(); + + if (label != null) + { + EditorGUILayout.PropertyField(property, new GUIContent(label), GUILayout.MinWidth(32)); + } + else + { + EditorGUILayout.PropertyField(property, GUILayout.MinWidth(32)); + } + + property.stringValue = property.stringValue.Trim(); + string appId = property.stringValue; + + string url = "https://dashboard.photonengine.com/en-US/PublicCloud"; + + if (!string.IsNullOrEmpty(appId)) + { + url = string.Format("https://dashboard.photonengine.com/en-US/App/Manage/{0}", appId); + } + if (GUILayout.Button("Dashboard", EditorStyles.miniButton, GUILayout.MinWidth(78), GUILayout.MaxWidth(78))) + { + Application.OpenURL(url); + } + EditorGUILayout.EndHorizontal(); + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/ServerSettingsInspector.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/ServerSettingsInspector.cs.meta new file mode 100644 index 00000000..d9f769d2 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/ServerSettingsInspector.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 21239ba77ac4b534f958e8617ef13ede +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views.meta new file mode 100644 index 00000000..666c47e9 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: c6024eaa234f94341af9e45cc99285c7 +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/MonoBehaviourPunEditor.cs b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/MonoBehaviourPunEditor.cs new file mode 100644 index 00000000..6d50f534 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/MonoBehaviourPunEditor.cs @@ -0,0 +1,40 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// This is a custom editor for the AnimatorView component. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + +namespace Photon.Pun +{ + using UnityEditor; + using UnityEngine; + + [CustomEditor(typeof(MonoBehaviourPun))] + public abstract class MonoBehaviourPunEditor : Editor + { + MonoBehaviourPun mbTarget; + + private void OnEnable() + { + mbTarget = target as MonoBehaviourPun; + } + + public override void OnInspectorGUI() + { + mbTarget = target as MonoBehaviourPun; + + base.OnInspectorGUI(); + + if (mbTarget.photonView == null) + { + EditorGUILayout.HelpBox("Unable to find a PhotonView on this GameObject or on any parent GameObject.", MessageType.Warning); + } + } + + + } +} diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/MonoBehaviourPunEditor.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/MonoBehaviourPunEditor.cs.meta new file mode 100644 index 00000000..9fbb5e94 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/MonoBehaviourPunEditor.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6da457ee57ad5794782f1f76644536e4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonAnimatorViewEditor.cs b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonAnimatorViewEditor.cs new file mode 100644 index 00000000..4bd51437 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonAnimatorViewEditor.cs @@ -0,0 +1,295 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// This is a custom editor for the AnimatorView component. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + using System.Collections.Generic; + using UnityEditor; + using UnityEditor.Animations; + using UnityEngine; + + + [CustomEditor(typeof(PhotonAnimatorView))] + public class PhotonAnimatorViewEditor : MonoBehaviourPunEditor + { + private Animator m_Animator; + private PhotonAnimatorView m_Target; + private AnimatorController m_Controller; + + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + + if (this.m_Animator == null) + { + EditorGUILayout.HelpBox("GameObject doesn't have an Animator component to synchronize", MessageType.Warning); + return; + } + + this.DrawWeightInspector(); + + if (this.GetLayerCount() == 0) + { + EditorGUILayout.HelpBox("Animator doesn't have any layers setup to synchronize", MessageType.Warning); + } + + this.DrawParameterInspector(); + + if (this.GetParameterCount() == 0) + { + EditorGUILayout.HelpBox("Animator doesn't have any parameters setup to synchronize", MessageType.Warning); + } + + this.serializedObject.ApplyModifiedProperties(); + + //GUILayout.Label( "m_SynchronizeLayers " + serializedObject.FindProperty( "m_SynchronizeLayers" ).arraySize ); + //GUILayout.Label( "m_SynchronizeParameters " + serializedObject.FindProperty( "m_SynchronizeParameters" ).arraySize ); + } + + + private int GetLayerCount() + { + return (this.m_Controller == null) ? 0 : this.m_Controller.layers.Length; + } + + private int GetParameterCount() + { + return (this.m_Controller == null) ? 0 : this.m_Controller.parameters.Length; + } + + private AnimatorControllerParameter GetAnimatorControllerParameter(int i) + { + return this.m_Controller.parameters[i]; + } + + + private RuntimeAnimatorController GetEffectiveController(Animator animator) + { + RuntimeAnimatorController controller = animator.runtimeAnimatorController; + + AnimatorOverrideController overrideController = controller as AnimatorOverrideController; + while (overrideController != null) + { + controller = overrideController.runtimeAnimatorController; + overrideController = controller as AnimatorOverrideController; + } + + return controller; + } + + private void OnEnable() + { + this.m_Target = (PhotonAnimatorView)this.target; + this.m_Animator = this.m_Target.GetComponent(); + + if (m_Animator) + { + this.m_Controller = this.GetEffectiveController(this.m_Animator) as AnimatorController; + + this.CheckIfStoredParametersExist(); + } + } + + private void DrawWeightInspector() + { + SerializedProperty foldoutProperty = this.serializedObject.FindProperty("ShowLayerWeightsInspector"); + foldoutProperty.boolValue = PhotonGUI.ContainerHeaderFoldout("Synchronize Layer Weights", foldoutProperty.boolValue); + + if (foldoutProperty.boolValue == false) + { + return; + } + + float lineHeight = 20; + Rect containerRect = PhotonGUI.ContainerBody(this.GetLayerCount() * lineHeight); + + for (int i = 0; i < this.GetLayerCount(); ++i) + { + if (this.m_Target.DoesLayerSynchronizeTypeExist(i) == false) + { + this.m_Target.SetLayerSynchronized(i, PhotonAnimatorView.SynchronizeType.Disabled); + } + + PhotonAnimatorView.SynchronizeType syncType = this.m_Target.GetLayerSynchronizeType(i); + + Rect elementRect = new Rect(containerRect.xMin, containerRect.yMin + i * lineHeight, containerRect.width, lineHeight); + + Rect labelRect = new Rect(elementRect.xMin + 5, elementRect.yMin + 2, EditorGUIUtility.labelWidth - 5, elementRect.height); + GUI.Label(labelRect, "Layer " + i); + + Rect popupRect = new Rect(elementRect.xMin + EditorGUIUtility.labelWidth, elementRect.yMin + 2, elementRect.width - EditorGUIUtility.labelWidth - 5, EditorGUIUtility.singleLineHeight); + syncType = (PhotonAnimatorView.SynchronizeType)EditorGUI.EnumPopup(popupRect, syncType); + + if (i < this.GetLayerCount() - 1) + { + Rect splitterRect = new Rect(elementRect.xMin + 2, elementRect.yMax, elementRect.width - 4, 1); + PhotonGUI.DrawSplitter(splitterRect); + } + + if (syncType != this.m_Target.GetLayerSynchronizeType(i)) + { + Undo.RecordObject(this.target, "Modify Synchronize Layer Weights"); + this.m_Target.SetLayerSynchronized(i, syncType); + } + } + } + + private bool DoesParameterExist(string name) + { + for (int i = 0; i < this.GetParameterCount(); ++i) + { + if (this.GetAnimatorControllerParameter(i).name == name) + { + return true; + } + } + + return false; + } + + private void CheckIfStoredParametersExist() + { + var syncedParams = this.m_Target.GetSynchronizedParameters(); + List paramsToRemove = new List(); + + for (int i = 0; i < syncedParams.Count; ++i) + { + string parameterName = syncedParams[i].Name; + if (this.DoesParameterExist(parameterName) == false) + { + Debug.LogWarning("Parameter '" + this.m_Target.GetSynchronizedParameters()[i].Name + "' doesn't exist anymore. Removing it from the list of synchronized parameters"); + paramsToRemove.Add(parameterName); + } + } + + if (paramsToRemove.Count > 0) + { + foreach (string param in paramsToRemove) + { + this.m_Target.GetSynchronizedParameters().RemoveAll(item => item.Name == param); + } + } + } + + + private void DrawParameterInspector() + { + // flag to expose a note in Interface if one or more trigger(s) are synchronized + bool isUsingTriggers = false; + + SerializedProperty foldoutProperty = this.serializedObject.FindProperty("ShowParameterInspector"); + foldoutProperty.boolValue = PhotonGUI.ContainerHeaderFoldout("Synchronize Parameters", foldoutProperty.boolValue); + + if (foldoutProperty.boolValue == false) + { + return; + } + + float lineHeight = 20; + Rect containerRect = PhotonGUI.ContainerBody(this.GetParameterCount() * lineHeight); + + for (int i = 0; i < this.GetParameterCount(); i++) + { + AnimatorControllerParameter parameter = null; + parameter = this.GetAnimatorControllerParameter(i); + + string defaultValue = ""; + + if (parameter.type == AnimatorControllerParameterType.Bool) + { + if (Application.isPlaying && this.m_Animator.gameObject.activeInHierarchy) + { + defaultValue += this.m_Animator.GetBool(parameter.name); + } + else + { + defaultValue += parameter.defaultBool.ToString(); + } + } + else if (parameter.type == AnimatorControllerParameterType.Float) + { + if (Application.isPlaying && this.m_Animator.gameObject.activeInHierarchy) + { + defaultValue += this.m_Animator.GetFloat(parameter.name).ToString("0.00"); + } + else + { + defaultValue += parameter.defaultFloat.ToString(); + } + } + else if (parameter.type == AnimatorControllerParameterType.Int) + { + if (Application.isPlaying && this.m_Animator.gameObject.activeInHierarchy) + { + defaultValue += this.m_Animator.GetInteger(parameter.name); + } + else + { + defaultValue += parameter.defaultInt.ToString(); + } + } + else if (parameter.type == AnimatorControllerParameterType.Trigger) + { + if (Application.isPlaying && this.m_Animator.gameObject.activeInHierarchy) + { + defaultValue += this.m_Animator.GetBool(parameter.name); + } + else + { + defaultValue += parameter.defaultBool.ToString(); + } + } + + if (this.m_Target.DoesParameterSynchronizeTypeExist(parameter.name) == false) + { + this.m_Target.SetParameterSynchronized(parameter.name, (PhotonAnimatorView.ParameterType)parameter.type, PhotonAnimatorView.SynchronizeType.Disabled); + } + + PhotonAnimatorView.SynchronizeType value = this.m_Target.GetParameterSynchronizeType(parameter.name); + + // check if using trigger and actually synchronizing it + if (value != PhotonAnimatorView.SynchronizeType.Disabled && parameter.type == AnimatorControllerParameterType.Trigger) + { + isUsingTriggers = true; + } + + Rect elementRect = new Rect(containerRect.xMin, containerRect.yMin + i * lineHeight, containerRect.width, lineHeight); + + Rect labelRect = new Rect(elementRect.xMin + 5, elementRect.yMin + 2, EditorGUIUtility.labelWidth - 5, elementRect.height); + GUI.Label(labelRect, parameter.name + " (" + defaultValue + ")"); + + Rect popupRect = new Rect(elementRect.xMin + EditorGUIUtility.labelWidth, elementRect.yMin + 2, elementRect.width - EditorGUIUtility.labelWidth - 5, EditorGUIUtility.singleLineHeight); + value = (PhotonAnimatorView.SynchronizeType)EditorGUI.EnumPopup(popupRect, value); + + if (i < this.GetParameterCount() - 1) + { + Rect splitterRect = new Rect(elementRect.xMin + 2, elementRect.yMax, elementRect.width - 4, 1); + PhotonGUI.DrawSplitter(splitterRect); + } + + if (value != this.m_Target.GetParameterSynchronizeType(parameter.name)) + { + Undo.RecordObject(this.target, "Modify Synchronize Parameter " + parameter.name); + this.m_Target.SetParameterSynchronized(parameter.name, (PhotonAnimatorView.ParameterType)parameter.type, value); + } + } + + // display note when synchronized triggers are detected. + if (isUsingTriggers) + { + EditorGUILayout.HelpBox("When using triggers, make sure this component is last in the stack. " + + "If you still experience issues, implement triggers as a regular RPC " + + "or in custom IPunObservable component instead.", MessageType.Warning); + + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonAnimatorViewEditor.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonAnimatorViewEditor.cs.meta new file mode 100644 index 00000000..c6e48af4 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonAnimatorViewEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a3f61bade114730459f7ad45f5f292c1 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonRigidbody2DViewEditor.cs b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonRigidbody2DViewEditor.cs new file mode 100644 index 00000000..ffeb6dbc --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonRigidbody2DViewEditor.cs @@ -0,0 +1,50 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// This is a custom editor for the PhotonRigidbody2DView component. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + using UnityEditor; + using UnityEngine; + + + [CustomEditor(typeof (PhotonRigidbody2DView))] + public class PhotonRigidbody2DViewEditor : MonoBehaviourPunEditor + { + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + + if (Application.isPlaying) + { + EditorGUILayout.HelpBox("Editing is disabled in play mode.", MessageType.Info); + return; + } + + PhotonRigidbody2DView view = (PhotonRigidbody2DView)target; + + view.m_TeleportEnabled = PhotonGUI.ContainerHeaderToggle("Enable teleport for large distances", view.m_TeleportEnabled); + + if (view.m_TeleportEnabled) + { + Rect rect = PhotonGUI.ContainerBody(20.0f); + view.m_TeleportIfDistanceGreaterThan = EditorGUI.FloatField(rect, "Teleport if distance greater than", view.m_TeleportIfDistanceGreaterThan); + } + + view.m_SynchronizeVelocity = PhotonGUI.ContainerHeaderToggle("Synchronize Velocity", view.m_SynchronizeVelocity); + view.m_SynchronizeAngularVelocity = PhotonGUI.ContainerHeaderToggle("Synchronize Angular Velocity", view.m_SynchronizeAngularVelocity); + + if (GUI.changed) + { + EditorUtility.SetDirty(view); + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonRigidbody2DViewEditor.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonRigidbody2DViewEditor.cs.meta new file mode 100644 index 00000000..9e509610 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonRigidbody2DViewEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3a82e8e86b9eecb40ac3f6ebc949f6ef +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonRigidbodyViewEditor.cs b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonRigidbodyViewEditor.cs new file mode 100644 index 00000000..835605f0 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonRigidbodyViewEditor.cs @@ -0,0 +1,50 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// This is a custom editor for the RigidbodyView component. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + using UnityEditor; + using UnityEngine; + + + [CustomEditor(typeof (PhotonRigidbodyView))] + public class PhotonRigidbodyViewEditor : MonoBehaviourPunEditor + { + public override void OnInspectorGUI() + { + base.OnInspectorGUI(); + + if (Application.isPlaying) + { + EditorGUILayout.HelpBox("Editing is disabled in play mode.", MessageType.Info); + return; + } + + PhotonRigidbodyView view = (PhotonRigidbodyView)target; + + view.m_TeleportEnabled = PhotonGUI.ContainerHeaderToggle("Enable teleport for large distances", view.m_TeleportEnabled); + + if (view.m_TeleportEnabled) + { + Rect rect = PhotonGUI.ContainerBody(20.0f); + view.m_TeleportIfDistanceGreaterThan = EditorGUI.FloatField(rect, "Teleport if distance greater than", view.m_TeleportIfDistanceGreaterThan); + } + + view.m_SynchronizeVelocity = PhotonGUI.ContainerHeaderToggle("Synchronize Velocity", view.m_SynchronizeVelocity); + view.m_SynchronizeAngularVelocity = PhotonGUI.ContainerHeaderToggle("Synchronize Angular Velocity", view.m_SynchronizeAngularVelocity); + + if (GUI.changed) + { + EditorUtility.SetDirty(view); + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonRigidbodyViewEditor.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonRigidbodyViewEditor.cs.meta new file mode 100644 index 00000000..b4fa5b9b --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonRigidbodyViewEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4bcfebc9a2f1074488adedd1fe84e6c9 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonTransformViewClassicEditor.cs b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonTransformViewClassicEditor.cs new file mode 100644 index 00000000..22c8e358 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonTransformViewClassicEditor.cs @@ -0,0 +1,412 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// This is a custom editor for the TransformView component. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + using UnityEditor; + using UnityEngine; + + + [CustomEditor(typeof(PhotonTransformViewClassic))] + public class PhotonTransformViewClassicEditor : MonoBehaviourPunEditor + { + //private PhotonTransformViewClassic m_Target; + + private SerializedProperty m_SynchronizePositionProperty; + private SerializedProperty m_SynchronizeRotationProperty; + private SerializedProperty m_SynchronizeScaleProperty; + + private bool m_InterpolateHelpOpen; + private bool m_ExtrapolateHelpOpen; + private bool m_InterpolateRotationHelpOpen; + private bool m_InterpolateScaleHelpOpen; + + private const int EDITOR_LINE_HEIGHT = 20; + + private const string INTERPOLATE_TOOLTIP = + "Choose between synchronizing the value directly (by disabling interpolation) or smoothly move it towards the newest update."; + + private const string INTERPOLATE_HELP = + "You can use interpolation to smoothly move your GameObject towards a new position that is received via the network. " + + "This helps to reduce the stuttering movement that results because the network updates only arrive 10 times per second.\n" + + "As a side effect, the GameObject is always lagging behind the actual position a little bit. This can be addressed with extrapolation."; + + private const string EXTRAPOLATE_TOOLTIP = "Extrapolation is used to predict where the GameObject actually is"; + + private const string EXTRAPOLATE_HELP = + "Whenever you deal with network values, all values you receive will be a little bit out of date since that data needs " + + "to reach you first. You can use extrapolation to try to predict where the player actually is, based on the movement data you have received.\n" + + + "This has to be tweaked carefully for each specific game in order to insure the optimal prediction. Sometimes it is very easy to extrapolate states, because " + + + "the GameObject behaves very predictable (for example for vehicles). Other times it can be very hard because the user input is translated directly to the game " + + "and you cannot really predict what the user is going to do (for example in fighting games)"; + + private const string INTERPOLATE_HELP_URL = "https://doc.photonengine.com/en-us/pun/current/demos-and-tutorials/package-demos/rpg-movement#interpolate_options"; + private const string EXTRAPOLATE_HELP_URL = "https://doc.photonengine.com/en-us/pun/current/demos-and-tutorials/package-demos/rpg-movement#extrapolate_options"; + + public void OnEnable() + { + SetupSerializedProperties(); + } + + public override void OnInspectorGUI() + { + serializedObject.Update(); + + base.OnInspectorGUI(); + + //this.m_Target = (PhotonTransformViewClassic) target; + + DrawIsPlayingWarning(); + GUI.enabled = !Application.isPlaying; + + DrawSynchronizePositionHeader(); + DrawSynchronizePositionData(); + + GUI.enabled = !Application.isPlaying; + DrawSynchronizeRotationHeader(); + DrawSynchronizeRotationData(); + + GUI.enabled = !Application.isPlaying; + DrawSynchronizeScaleHeader(); + DrawSynchronizeScaleData(); + + serializedObject.ApplyModifiedProperties(); + + GUI.enabled = true; + } + + private void DrawIsPlayingWarning() + { + if (Application.isPlaying == false) + { + return; + } + + GUILayout.BeginVertical(GUI.skin.box); + { + GUILayout.Label("Editing is disabled in play mode so the two objects don't go out of sync"); + } + GUILayout.EndVertical(); + } + + private void SetupSerializedProperties() + { + this.m_SynchronizePositionProperty = serializedObject.FindProperty("m_PositionModel.SynchronizeEnabled"); + this.m_SynchronizeRotationProperty = serializedObject.FindProperty("m_RotationModel.SynchronizeEnabled"); + this.m_SynchronizeScaleProperty = serializedObject.FindProperty("m_ScaleModel.SynchronizeEnabled"); + } + + private void DrawSynchronizePositionHeader() + { + DrawHeader("Synchronize Position", this.m_SynchronizePositionProperty); + } + + private void DrawSynchronizePositionData() + { + if (this.m_SynchronizePositionProperty == null || this.m_SynchronizePositionProperty.boolValue == false) + { + return; + } + + SerializedProperty interpolatePositionProperty = serializedObject.FindProperty("m_PositionModel.InterpolateOption"); + PhotonTransformViewPositionModel.InterpolateOptions interpolateOption = (PhotonTransformViewPositionModel.InterpolateOptions)interpolatePositionProperty.enumValueIndex; + + SerializedProperty extrapolatePositionProperty = serializedObject.FindProperty("m_PositionModel.ExtrapolateOption"); + PhotonTransformViewPositionModel.ExtrapolateOptions extrapolateOption = (PhotonTransformViewPositionModel.ExtrapolateOptions)extrapolatePositionProperty.enumValueIndex; + + float containerHeight = 155; + + switch (interpolateOption) + { + case PhotonTransformViewPositionModel.InterpolateOptions.FixedSpeed: + case PhotonTransformViewPositionModel.InterpolateOptions.Lerp: + containerHeight += EDITOR_LINE_HEIGHT; + break; + /*case PhotonTransformViewPositionModel.InterpolateOptions.MoveTowardsComplex: + containerHeight += EDITOR_LINE_HEIGHT*3; + break;*/ + } + + if (extrapolateOption != PhotonTransformViewPositionModel.ExtrapolateOptions.Disabled) + { + containerHeight += EDITOR_LINE_HEIGHT; + } + + switch (extrapolateOption) + { + case PhotonTransformViewPositionModel.ExtrapolateOptions.FixedSpeed: + containerHeight += EDITOR_LINE_HEIGHT; + break; + } + + if (this.m_InterpolateHelpOpen == true) + { + containerHeight += GetInterpolateHelpBoxHeight(); + } + + if (this.m_ExtrapolateHelpOpen == true) + { + containerHeight += GetExtrapolateHelpBoxHeight(); + } + + // removed Gizmo Options. -3 lines, -1 splitter + containerHeight -= EDITOR_LINE_HEIGHT * 3; + + Rect rect = PhotonGUI.ContainerBody(containerHeight); + + Rect propertyRect = new Rect(rect.xMin + 5, rect.yMin + 2, rect.width - 10, EditorGUIUtility.singleLineHeight); + + DrawTeleport(ref propertyRect); + DrawSplitter(ref propertyRect); + + DrawSynchronizePositionDataInterpolation(ref propertyRect, interpolatePositionProperty, interpolateOption); + DrawSplitter(ref propertyRect); + + DrawSynchronizePositionDataExtrapolation(ref propertyRect, extrapolatePositionProperty, extrapolateOption); + } + + private float GetInterpolateHelpBoxHeight() + { + return PhotonGUI.RichLabel.CalcHeight(new GUIContent(INTERPOLATE_HELP), Screen.width - 54) + 35; + } + + private float GetExtrapolateHelpBoxHeight() + { + return PhotonGUI.RichLabel.CalcHeight(new GUIContent(EXTRAPOLATE_HELP), Screen.width - 54) + 35; + } + + private void DrawSplitter(ref Rect propertyRect) + { + Rect splitterRect = new Rect(propertyRect.xMin - 3, propertyRect.yMin, propertyRect.width + 6, 1); + PhotonGUI.DrawSplitter(splitterRect); + + propertyRect.y += 5; + } + + private void DrawHelpBox(ref Rect propertyRect, bool isOpen, float height, string helpText, string url) + { + if (isOpen == true) + { + Rect helpRect = new Rect(propertyRect.xMin, propertyRect.yMin, propertyRect.width, height - 5); + GUI.BeginGroup(helpRect, GUI.skin.box); + GUI.Label(new Rect(5, 5, propertyRect.width - 10, height - 30), helpText, PhotonGUI.RichLabel); + if (GUI.Button(new Rect(5, height - 30, propertyRect.width - 10, 20), "Read more in our documentation")) + { + Application.OpenURL(url); + } + + GUI.EndGroup(); + + propertyRect.y += height; + } + } + + private void DrawPropertyWithHelpIcon(ref Rect propertyRect, ref bool isHelpOpen, SerializedProperty property, string tooltip) + { + Rect propertyFieldRect = new Rect(propertyRect.xMin, propertyRect.yMin, propertyRect.width - 20, propertyRect.height); + string propertyName = ObjectNames.NicifyVariableName(property.name); + EditorGUI.PropertyField(propertyFieldRect, property, new GUIContent(propertyName, tooltip)); + + Rect helpIconRect = new Rect(propertyFieldRect.xMax + 5, propertyFieldRect.yMin, 20, propertyFieldRect.height); + isHelpOpen = GUI.Toggle(helpIconRect, isHelpOpen, PhotonGUI.HelpIcon, GUIStyle.none); + + propertyRect.y += EDITOR_LINE_HEIGHT; + } + + private void DrawSynchronizePositionDataExtrapolation(ref Rect propertyRect, SerializedProperty extrapolatePositionProperty, + PhotonTransformViewPositionModel.ExtrapolateOptions extrapolateOption) + { + DrawPropertyWithHelpIcon(ref propertyRect, ref this.m_ExtrapolateHelpOpen, extrapolatePositionProperty, EXTRAPOLATE_TOOLTIP); + DrawHelpBox(ref propertyRect, this.m_ExtrapolateHelpOpen, GetExtrapolateHelpBoxHeight(), EXTRAPOLATE_HELP, EXTRAPOLATE_HELP_URL); + + if (extrapolateOption != PhotonTransformViewPositionModel.ExtrapolateOptions.Disabled) + { + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_PositionModel.ExtrapolateIncludingRoundTripTime")); + propertyRect.y += EDITOR_LINE_HEIGHT; + } + + switch (extrapolateOption) + { + case PhotonTransformViewPositionModel.ExtrapolateOptions.FixedSpeed: + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_PositionModel.ExtrapolateSpeed")); + propertyRect.y += EDITOR_LINE_HEIGHT; + break; + } + } + + private void DrawTeleport(ref Rect propertyRect) + { + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_PositionModel.TeleportEnabled"), + new GUIContent("Enable teleport for great distances")); + propertyRect.y += EDITOR_LINE_HEIGHT; + + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_PositionModel.TeleportIfDistanceGreaterThan"), + new GUIContent("Teleport if distance greater than")); + propertyRect.y += EDITOR_LINE_HEIGHT; + } + + private void DrawSynchronizePositionDataInterpolation(ref Rect propertyRect, SerializedProperty interpolatePositionProperty, + PhotonTransformViewPositionModel.InterpolateOptions interpolateOption) + { + DrawPropertyWithHelpIcon(ref propertyRect, ref this.m_InterpolateHelpOpen, interpolatePositionProperty, INTERPOLATE_TOOLTIP); + DrawHelpBox(ref propertyRect, this.m_InterpolateHelpOpen, GetInterpolateHelpBoxHeight(), INTERPOLATE_HELP, INTERPOLATE_HELP_URL); + + switch (interpolateOption) + { + case PhotonTransformViewPositionModel.InterpolateOptions.FixedSpeed: + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_PositionModel.InterpolateMoveTowardsSpeed"), + new GUIContent("MoveTowards Speed")); + propertyRect.y += EDITOR_LINE_HEIGHT; + break; + + case PhotonTransformViewPositionModel.InterpolateOptions.Lerp: + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_PositionModel.InterpolateLerpSpeed"), new GUIContent("Lerp Speed")); + propertyRect.y += EDITOR_LINE_HEIGHT; + break; + + /*case PhotonTransformViewPositionModel.InterpolateOptions.MoveTowardsComplex: + Rect curveRect = new Rect(propertyRect.xMin, propertyRect.yMin, propertyRect.width - 100, propertyRect.height); + EditorGUI.PropertyField(curveRect, serializedObject.FindProperty("m_PositionModel.InterpolateSpeedCurve"), new GUIContent("MoveTowards Speed Curve")); + + Rect labelRect = new Rect(propertyRect.xMax - 95, propertyRect.yMin, 10, propertyRect.height); + GUI.Label(labelRect, "x"); + + Rect multiplierRect = new Rect(propertyRect.xMax - 80, propertyRect.yMin, 80, propertyRect.height); + EditorGUI.PropertyField(multiplierRect, serializedObject.FindProperty("m_PositionModel.InterpolateMoveTowardsSpeed"), GUIContent.none); + propertyRect.y += EDITOR_LINE_HEIGHT; + + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_PositionModel.InterpolateMoveTowardsAcceleration"), + new GUIContent("Acceleration")); + propertyRect.y += EDITOR_LINE_HEIGHT; + + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_PositionModel.InterpolateMoveTowardsDeceleration"), + new GUIContent("Deceleration")); + propertyRect.y += EDITOR_LINE_HEIGHT; + break;*/ + } + } + + private void DrawSynchronizeRotationHeader() + { + DrawHeader("Synchronize Rotation", this.m_SynchronizeRotationProperty); + } + + private void DrawSynchronizeRotationData() + { + if (this.m_SynchronizeRotationProperty == null || this.m_SynchronizeRotationProperty.boolValue == false) + { + return; + } + + SerializedProperty interpolateRotationProperty = serializedObject.FindProperty("m_RotationModel.InterpolateOption"); + PhotonTransformViewRotationModel.InterpolateOptions interpolateOption = + (PhotonTransformViewRotationModel.InterpolateOptions)interpolateRotationProperty.enumValueIndex; + + float containerHeight = 20; + + switch (interpolateOption) + { + case PhotonTransformViewRotationModel.InterpolateOptions.RotateTowards: + case PhotonTransformViewRotationModel.InterpolateOptions.Lerp: + containerHeight += EDITOR_LINE_HEIGHT; + break; + } + + if (this.m_InterpolateRotationHelpOpen == true) + { + containerHeight += GetInterpolateHelpBoxHeight(); + } + + Rect rect = PhotonGUI.ContainerBody(containerHeight); + Rect propertyRect = new Rect(rect.xMin + 5, rect.yMin + 2, rect.width - 10, EditorGUIUtility.singleLineHeight); + + DrawPropertyWithHelpIcon(ref propertyRect, ref this.m_InterpolateRotationHelpOpen, interpolateRotationProperty, INTERPOLATE_TOOLTIP); + DrawHelpBox(ref propertyRect, this.m_InterpolateRotationHelpOpen, GetInterpolateHelpBoxHeight(), INTERPOLATE_HELP, INTERPOLATE_HELP_URL); + + switch (interpolateOption) + { + case PhotonTransformViewRotationModel.InterpolateOptions.RotateTowards: + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_RotationModel.InterpolateRotateTowardsSpeed"), + new GUIContent("RotateTowards Speed")); + break; + case PhotonTransformViewRotationModel.InterpolateOptions.Lerp: + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_RotationModel.InterpolateLerpSpeed"), new GUIContent("Lerp Speed")); + break; + } + } + + private void DrawSynchronizeScaleHeader() + { + DrawHeader("Synchronize Scale", this.m_SynchronizeScaleProperty); + } + + private void DrawSynchronizeScaleData() + { + if (this.m_SynchronizeScaleProperty == null || this.m_SynchronizeScaleProperty.boolValue == false) + { + return; + } + + SerializedProperty interpolateScaleProperty = serializedObject.FindProperty("m_ScaleModel.InterpolateOption"); + PhotonTransformViewScaleModel.InterpolateOptions interpolateOption = (PhotonTransformViewScaleModel.InterpolateOptions)interpolateScaleProperty.enumValueIndex; + + float containerHeight = EDITOR_LINE_HEIGHT; + + switch (interpolateOption) + { + case PhotonTransformViewScaleModel.InterpolateOptions.MoveTowards: + case PhotonTransformViewScaleModel.InterpolateOptions.Lerp: + containerHeight += EDITOR_LINE_HEIGHT; + break; + } + + if (this.m_InterpolateScaleHelpOpen == true) + { + containerHeight += GetInterpolateHelpBoxHeight(); + } + + Rect rect = PhotonGUI.ContainerBody(containerHeight); + Rect propertyRect = new Rect(rect.xMin + 5, rect.yMin + 2, rect.width - 10, EditorGUIUtility.singleLineHeight); + + DrawPropertyWithHelpIcon(ref propertyRect, ref this.m_InterpolateScaleHelpOpen, interpolateScaleProperty, INTERPOLATE_TOOLTIP); + DrawHelpBox(ref propertyRect, this.m_InterpolateScaleHelpOpen, GetInterpolateHelpBoxHeight(), INTERPOLATE_HELP, INTERPOLATE_HELP_URL); + + switch (interpolateOption) + { + case PhotonTransformViewScaleModel.InterpolateOptions.MoveTowards: + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_ScaleModel.InterpolateMoveTowardsSpeed"), + new GUIContent("MoveTowards Speed")); + break; + case PhotonTransformViewScaleModel.InterpolateOptions.Lerp: + EditorGUI.PropertyField(propertyRect, serializedObject.FindProperty("m_ScaleModel.InterpolateLerpSpeed"), new GUIContent("Lerp Speed")); + break; + } + } + + private void DrawHeader(string label, SerializedProperty property) + { + if (property == null) + { + return; + } + + bool newValue = PhotonGUI.ContainerHeaderToggle(label, property.boolValue); + + if (newValue != property.boolValue) + { + property.boolValue = newValue; + property.serializedObject.ApplyModifiedProperties(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonTransformViewClassicEditor.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonTransformViewClassicEditor.cs.meta new file mode 100644 index 00000000..58d59efa --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonTransformViewClassicEditor.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 22292ca8ffb574945bedfaf49266672e +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonTransformViewEditor.cs b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonTransformViewEditor.cs new file mode 100644 index 00000000..8fb439ba --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonTransformViewEditor.cs @@ -0,0 +1,72 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// This is a custom editor for the TransformView component. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + using UnityEditor; + using UnityEngine; + + + [CustomEditor(typeof(PhotonTransformView))] + public class PhotonTransformViewEditor : Editor + { + private bool helpToggle = false; + + SerializedProperty pos, rot, scl, lcl; + + public void OnEnable() + { + pos = serializedObject.FindProperty("m_SynchronizePosition"); + rot = serializedObject.FindProperty("m_SynchronizeRotation"); + scl = serializedObject.FindProperty("m_SynchronizeScale"); + lcl = serializedObject.FindProperty("m_UseLocal"); + } + + public override void OnInspectorGUI() + { + if (Application.isPlaying) + { + EditorGUILayout.HelpBox("Editing is disabled in play mode.", MessageType.Info); + return; + } + + PhotonTransformView view = (PhotonTransformView)target; + + + EditorGUILayout.LabelField("Synchronize Options"); + + + EditorGUI.BeginChangeCheck(); + { + EditorGUILayout.BeginVertical("HelpBox"); + { + EditorGUILayout.PropertyField(pos, new GUIContent("Position", pos.tooltip)); + EditorGUILayout.PropertyField(rot, new GUIContent("Rotation", rot.tooltip)); + EditorGUILayout.PropertyField(scl, new GUIContent("Scale", scl.tooltip)); + } + EditorGUILayout.EndHorizontal(); + + EditorGUILayout.PropertyField(lcl, new GUIContent("Use Local", lcl.tooltip)); + } + + if (EditorGUI.EndChangeCheck()) + { + serializedObject.ApplyModifiedProperties(); + } + + this.helpToggle = EditorGUILayout.Foldout(this.helpToggle, "Info"); + if (this.helpToggle) + { + EditorGUILayout.HelpBox("The Photon Transform View of PUN 2 is simple by design.\nReplace it with the Photon Transform View Classic if you want the old options.\nThe best solution is a custom IPunObservable implementation.", MessageType.Info, true); + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonTransformViewEditor.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonTransformViewEditor.cs.meta new file mode 100644 index 00000000..b8948327 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/Views/PhotonTransformViewEditor.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: a8c9ec475ad103b43b901d942ff66e02 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/help.png b/Assets/Photon/PhotonUnityNetworking/Code/Editor/help.png new file mode 100644 index 0000000000000000000000000000000000000000..a421667f6076e7384a0c9f53ecce90929444ac75 GIT binary patch literal 3379 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 JPDHLkV1mEGKA`{r literal 0 HcmV?d00001 diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Editor/help.png.meta b/Assets/Photon/PhotonUnityNetworking/Code/Editor/help.png.meta new file mode 100644 index 00000000..cb312ac9 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Editor/help.png.meta @@ -0,0 +1,45 @@ +fileFormatVersion: 2 +guid: 9f1212502533cb34188dd6ef094188cb +TextureImporter: + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + linearTexture: 1 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: .25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + seamlessCubemap: 0 + textureFormat: -3 + maxTextureSize: 1024 + textureSettings: + filterMode: -1 + aniso: 1 + mipBias: -1 + wrapMode: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: .5, y: .5} + spritePixelsToUnits: 100 + alphaIsTransparency: 1 + textureType: 2 + buildTargetSettings: [] + spriteSheet: + sprites: [] + spritePackingTag: + userData: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Enums.cs b/Assets/Photon/PhotonUnityNetworking/Code/Enums.cs new file mode 100644 index 00000000..1a3928ea --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Enums.cs @@ -0,0 +1,94 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// Wraps up several enumerations for PUN. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + /// Which PhotonNetwork method was called to connect (which influences the regions we want pinged). + /// PhotonNetwork.ConnectUsingSettings will call either ConnectToMaster, ConnectToRegion or ConnectToBest, depending on the settings. + public enum ConnectMethod { NotCalled, ConnectToMaster, ConnectToRegion, ConnectToBest } + + + /// Used to define the level of logging output created by the PUN classes. Either log errors, info (some more) or full. + /// \ingroup publicApi + public enum PunLogLevel + { + /// Show only errors. Minimal output. Note: Some might be "runtime errors" which you have to expect. + ErrorsOnly, + + /// Logs some of the workflow, calls and results. + Informational, + + /// Every available log call gets into the console/log. Only use for debugging. + Full + } + + + /// Enum of "target" options for RPCs. These define which remote clients get your RPC call. + /// \ingroup publicApi + public enum RpcTarget + { + /// Sends the RPC to everyone else and executes it immediately on this client. Player who join later will not execute this RPC. + All, + + /// Sends the RPC to everyone else. This client does not execute the RPC. Player who join later will not execute this RPC. + Others, + + /// Sends the RPC to MasterClient only. Careful: The MasterClient might disconnect before it executes the RPC and that might cause dropped RPCs. + MasterClient, + + /// Sends the RPC to everyone else and executes it immediately on this client. New players get the RPC when they join as it's buffered (until this client leaves). + AllBuffered, + + /// Sends the RPC to everyone. This client does not execute the RPC. New players get the RPC when they join as it's buffered (until this client leaves). + OthersBuffered, + + /// Sends the RPC to everyone (including this client) through the server. + /// + /// This client executes the RPC like any other when it received it from the server. + /// Benefit: The server's order of sending the RPCs is the same on all clients. + /// + AllViaServer, + + /// Sends the RPC to everyone (including this client) through the server and buffers it for players joining later. + /// + /// This client executes the RPC like any other when it received it from the server. + /// Benefit: The server's order of sending the RPCs is the same on all clients. + /// + AllBufferedViaServer + } + + + public enum ViewSynchronization { Off, ReliableDeltaCompressed, Unreliable, UnreliableOnChange } + + + /// + /// Options to define how Ownership Transfer is handled per PhotonView. + /// + /// + /// This setting affects how RequestOwnership and TransferOwnership work at runtime. + /// + public enum OwnershipOption + { + /// + /// Ownership is fixed. Instantiated objects stick with their creator, room objects always belong to the Master Client. + /// + Fixed, + /// + /// Ownership can be taken away from the current owner who can't object. + /// + Takeover, + /// + /// Ownership can be requested with PhotonView.RequestOwnership but the current owner has to agree to give up ownership. + /// + /// The current owner has to implement IPunCallbacks.OnOwnershipRequest to react to the ownership request. + Request + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Enums.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Enums.cs.meta new file mode 100644 index 00000000..d612c91e --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Enums.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b7962bbdaba2a4940b1341d755abd40d +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Interfaces.meta b/Assets/Photon/PhotonUnityNetworking/Code/Interfaces.meta new file mode 100644 index 00000000..3a203755 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Interfaces.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 38ae0eecc6fe5d340b82bb221198aa89 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Interfaces/IPhotonViewCallbacks.cs b/Assets/Photon/PhotonUnityNetworking/Code/Interfaces/IPhotonViewCallbacks.cs new file mode 100644 index 00000000..ff083c03 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Interfaces/IPhotonViewCallbacks.cs @@ -0,0 +1,50 @@ +namespace Photon.Pun +{ + using Photon.Realtime; + + /// + /// Empty Base class for all PhotonView callbacks. + /// + public interface IPhotonViewCallback + { + + } + + /// + /// This interface defines a callback which fires prior to the PhotonNetwork destroying the PhotonView and Gameobject. + /// + public interface IOnPhotonViewPreNetDestroy : IPhotonViewCallback + { + /// + /// This method is called before Destroy() is initiated for a networked object. + /// + /// + void OnPreNetDestroy(PhotonView rootView); + } + + /// + /// This interface defines a callback for changes to the PhotonView's owner. + /// + public interface IOnPhotonViewOwnerChange : IPhotonViewCallback + { + /// + /// This method will be called when the PhotonView's owner changes. + /// + /// + /// + void OnOwnerChange(Player newOwner, Player previousOwner); + } + + /// + /// This interface defines a callback for changes to the PhotonView's controller. + /// + public interface IOnPhotonViewControllerChange : IPhotonViewCallback + { + /// + /// This method will be called when the PhotonView's controller changes. + /// + /// + /// + void OnControllerChange(Player newController, Player previousController); + } +} diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Interfaces/IPhotonViewCallbacks.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Interfaces/IPhotonViewCallbacks.cs.meta new file mode 100644 index 00000000..2ff2dd51 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Interfaces/IPhotonViewCallbacks.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d67b3e094fcbf004da7f8771c17126f3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Interfaces/IPunCallbacks.cs b/Assets/Photon/PhotonUnityNetworking/Code/Interfaces/IPunCallbacks.cs new file mode 100644 index 00000000..4a5387c4 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Interfaces/IPunCallbacks.cs @@ -0,0 +1,141 @@ + +namespace Photon.Pun +{ + using UnityEngine; + using Photon.Realtime; + + + /// Defines the OnPhotonSerializeView method to make it easy to implement correctly for observable scripts. + /// \ingroup callbacks + public interface IPunObservable + { + /// + /// Called by PUN several times per second, so that your script can write and read synchronization data for the PhotonView. + /// + /// + /// This method will be called in scripts that are assigned as Observed component of a PhotonView.
    + /// PhotonNetwork.SerializationRate affects how often this method is called.
    + /// PhotonNetwork.SendRate affects how often packages are sent by this client.
    + /// + /// Implementing this method, you can customize which data a PhotonView regularly synchronizes. + /// Your code defines what is being sent (content) and how your data is used by receiving clients. + /// + /// Unlike other callbacks, OnPhotonSerializeView only gets called when it is assigned + /// to a PhotonView as PhotonView.observed script. + /// + /// To make use of this method, the PhotonStream is essential. It will be in "writing" mode" on the + /// client that controls a PhotonView (PhotonStream.IsWriting == true) and in "reading mode" on the + /// remote clients that just receive that the controlling client sends. + /// + /// If you skip writing any value into the stream, PUN will skip the update. Used carefully, this can + /// conserve bandwidth and messages (which have a limit per room/second). + /// + /// Note that OnPhotonSerializeView is not called on remote clients when the sender does not send + /// any update. This can't be used as "x-times per second Update()". + ///
    + /// \ingroup publicApi + void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info); + } + + + /// + /// Global Callback interface for ownership changes. These callbacks will fire for changes to ANY PhotonView that changes. + /// Consider using IOnPhotonViewControllerChange for callbacks from a specific PhotonView. + /// + public interface IPunOwnershipCallbacks + { + /// + /// Called when another player requests ownership of a PhotonView. + /// Called on all clients, so check if (targetView.IsMine) or (targetView.Owner == PhotonNetwork.LocalPlayer) + /// to determine if a targetView.TransferOwnership(requestingPlayer) response should be given. + /// + /// + /// The parameter viewAndPlayer contains: + /// + /// PhotonView view = viewAndPlayer[0] as PhotonView; + /// + /// Player requestingPlayer = viewAndPlayer[1] as Player; + /// + /// PhotonView for which ownership gets requested. + /// Player who requests ownership. + void OnOwnershipRequest(PhotonView targetView, Player requestingPlayer); + + /// + /// Called when ownership of a PhotonView is transfered to another player. + /// + /// + /// The parameter viewAndPlayers contains: + /// + /// PhotonView view = viewAndPlayers[0] as PhotonView; + /// + /// Player newOwner = viewAndPlayers[1] as Player; + /// + /// Player oldOwner = viewAndPlayers[2] as Player; + /// + /// void OnOwnershipTransfered(object[] viewAndPlayers) {} // + /// PhotonView for which ownership changed. + /// Player who was the previous owner (or null, if none). + void OnOwnershipTransfered(PhotonView targetView, Player previousOwner); + + /// + /// Called when an Ownership Request fails for objects with "takeover" setting. + /// + /// + /// Each request asks to take ownership from a specific controlling player. This can fail if anyone + /// else took over ownership briefly before the request arrived. + /// + /// + /// + void OnOwnershipTransferFailed(PhotonView targetView, Player senderOfFailedRequest); + } + + /// \ingroup callbacks + public interface IPunInstantiateMagicCallback + { + void OnPhotonInstantiate(PhotonMessageInfo info); + } + + /// + /// Defines an interface for object pooling, used in PhotonNetwork.Instantiate and PhotonNetwork.Destroy. + /// + /// + /// To apply your custom IPunPrefabPool, set PhotonNetwork.PrefabPool. + /// + /// The pool has to return a valid, disabled GameObject when PUN calls Instantiate. + /// Also, the position and rotation must be applied. + /// + /// Note that Awake and Start are only called once by Unity, so scripts on re-used GameObjects + /// should make use of OnEnable and or OnDisable. When OnEnable gets called, the PhotonView + /// is already updated to the new values. + /// + /// To be able to enable a GameObject, Instantiate must return an inactive object. + /// + /// Before PUN "destroys" GameObjects, it will disable them. + /// + /// If a component implements IPunInstantiateMagicCallback, PUN will call OnPhotonInstantiate + /// when the networked object gets instantiated. If no components implement this on a prefab, + /// PUN will optimize the instantiation and no longer looks up IPunInstantiateMagicCallback + /// via GetComponents. + /// + public interface IPunPrefabPool + { + /// + /// Called to get an instance of a prefab. Must return valid, disabled GameObject with PhotonView. + /// + /// The id of this prefab. + /// The position for the instance. + /// The rotation for the instance. + /// A disabled instance to use by PUN or null if the prefabId is unknown. + GameObject Instantiate(string prefabId, Vector3 position, Quaternion rotation); + + /// + /// Called to destroy (or just return) the instance of a prefab. It's disabled and the pool may reset and cache it for later use in Instantiate. + /// + /// + /// A pool needs some way to find out which type of GameObject got returned via Destroy(). + /// It could be a tag, name, a component or anything similar. + /// + /// The instance to destroy. + void Destroy(GameObject gameObject); + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Interfaces/IPunCallbacks.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Interfaces/IPunCallbacks.cs.meta new file mode 100644 index 00000000..d0bdc193 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Interfaces/IPunCallbacks.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 421c323e36c065045b2c44e16a184a9a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/PhotonHandler.cs b/Assets/Photon/PhotonUnityNetworking/Code/PhotonHandler.cs new file mode 100644 index 00000000..de82a73f --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/PhotonHandler.cs @@ -0,0 +1,405 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// PhotonHandler is a runtime MonoBehaviour to include PUN into the main loop. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + using System; + using System.Collections.Generic; + using ExitGames.Client.Photon; + using Photon.Realtime; + using UnityEngine; + using UnityEngine.Profiling; + + + /// + /// Internal MonoBehaviour that allows Photon to run an Update loop. + /// + public class PhotonHandler : ConnectionHandler, IInRoomCallbacks, IMatchmakingCallbacks + { + + private static PhotonHandler instance; + internal static PhotonHandler Instance + { + get + { + if (instance == null) + { + instance = FindObjectOfType(); + if (instance == null) + { + GameObject obj = new GameObject(); + obj.name = "PhotonMono"; + instance = obj.AddComponent(); + } + } + + return instance; + } + } + + + /// Limits the number of datagrams that are created in each LateUpdate. + /// Helps spreading out sending of messages minimally. + public static int MaxDatagrams = 10; + + /// Signals that outgoing messages should be sent in the next LateUpdate call. + /// Up to MaxDatagrams are created to send queued messages. + public static bool SendAsap; + + /// This corrects the "next time to serialize the state" value by some ms. + /// As LateUpdate typically gets called every 15ms it's better to be early(er) than late to achieve a SerializeRate. + private const int SerializeRateFrameCorrection = 8; + + protected internal int UpdateInterval; // time [ms] between consecutive SendOutgoingCommands calls + + protected internal int UpdateIntervalOnSerialize; // time [ms] between consecutive RunViewUpdate calls (sending syncs, etc) + + private int nextSendTickCount; + + private int nextSendTickCountOnSerialize; + + private SupportLogger supportLoggerComponent; + + + protected override void Awake() + { + if (instance == null || ReferenceEquals(this, instance)) + { + instance = this; + base.Awake(); + } + else + { + Destroy(this); + } + } + + protected virtual void OnEnable() + { + if (Instance != this) + { + Debug.LogError("PhotonHandler is a singleton but there are multiple instances. this != Instance."); + return; + } + + this.Client = PhotonNetwork.NetworkingClient; + + if (PhotonNetwork.PhotonServerSettings.EnableSupportLogger) + { + SupportLogger supportLogger = this.gameObject.GetComponent(); + if (supportLogger == null) + { + supportLogger = this.gameObject.AddComponent(); + } + if (this.supportLoggerComponent != null) + { + if (supportLogger.GetInstanceID() != this.supportLoggerComponent.GetInstanceID()) + { + Debug.LogWarningFormat("Cached SupportLogger component is different from the one attached to PhotonMono GameObject"); + } + } + this.supportLoggerComponent = supportLogger; + this.supportLoggerComponent.Client = PhotonNetwork.NetworkingClient; + } + + this.UpdateInterval = 1000 / PhotonNetwork.SendRate; + this.UpdateIntervalOnSerialize = 1000 / PhotonNetwork.SerializationRate; + + PhotonNetwork.AddCallbackTarget(this); + this.StartFallbackSendAckThread(); // this is not done in the base class + } + + protected void Start() + { + UnityEngine.SceneManagement.SceneManager.sceneLoaded += (scene, loadingMode) => + { + PhotonNetwork.NewSceneLoaded(); + }; + } + + protected override void OnDisable() + { + PhotonNetwork.RemoveCallbackTarget(this); + base.OnDisable(); + } + + + /// Called in intervals by UnityEngine. Affected by Time.timeScale. + protected void FixedUpdate() + { + #if PUN_DISPATCH_IN_FIXEDUPDATE + this.Dispatch(); + #elif PUN_DISPATCH_IN_LATEUPDATE + // do not dispatch here + #else + if (Time.timeScale > PhotonNetwork.MinimalTimeScaleToDispatchInFixedUpdate) + { + this.Dispatch(); + } + #endif + } + + /// Called in intervals by UnityEngine, after running the normal game code and physics. + protected void LateUpdate() + { + #if PUN_DISPATCH_IN_LATEUPDATE + this.Dispatch(); + #elif PUN_DISPATCH_IN_FIXEDUPDATE + // do not dispatch here + #else + // see MinimalTimeScaleToDispatchInFixedUpdate and FixedUpdate for explanation: + if (Time.timeScale <= PhotonNetwork.MinimalTimeScaleToDispatchInFixedUpdate) + { + this.Dispatch(); + } + #endif + + int currentMsSinceStart = (int)(Time.realtimeSinceStartup * 1000); // avoiding Environment.TickCount, which could be negative on long-running platforms + if (PhotonNetwork.IsMessageQueueRunning && currentMsSinceStart > this.nextSendTickCountOnSerialize) + { + PhotonNetwork.RunViewUpdate(); + this.nextSendTickCountOnSerialize = currentMsSinceStart + this.UpdateIntervalOnSerialize - SerializeRateFrameCorrection; + this.nextSendTickCount = 0; // immediately send when synchronization code was running + } + + currentMsSinceStart = (int)(Time.realtimeSinceStartup * 1000); + if (SendAsap || currentMsSinceStart > this.nextSendTickCount) + { + SendAsap = false; + bool doSend = true; + int sendCounter = 0; + while (PhotonNetwork.IsMessageQueueRunning && doSend && sendCounter < MaxDatagrams) + { + // Send all outgoing commands + Profiler.BeginSample("SendOutgoingCommands"); + doSend = PhotonNetwork.NetworkingClient.LoadBalancingPeer.SendOutgoingCommands(); + sendCounter++; + Profiler.EndSample(); + } + if (sendCounter >= MaxDatagrams) + { + SendAsap = true; + } + + this.nextSendTickCount = currentMsSinceStart + this.UpdateInterval; + } + } + + /// Dispatches incoming network messages for PUN. Called in FixedUpdate or LateUpdate. + /// + /// It may make sense to dispatch incoming messages, even if the timeScale is near 0. + /// That can be configured with PhotonNetwork.MinimalTimeScaleToDispatchInFixedUpdate. + /// + /// Without dispatching messages, PUN won't change state and does not handle updates. + /// + protected void Dispatch() + { + if (PhotonNetwork.NetworkingClient == null) + { + Debug.LogError("NetworkPeer broke!"); + return; + } + + //if (PhotonNetwork.NetworkClientState == ClientState.PeerCreated || PhotonNetwork.NetworkClientState == ClientState.Disconnected || PhotonNetwork.OfflineMode) + //{ + // return; + //} + + + bool doDispatch = true; + Exception ex = null; + int exceptionCount = 0; + while (PhotonNetwork.IsMessageQueueRunning && doDispatch) + { + // DispatchIncomingCommands() returns true of it dispatched any command (event, response or state change) + Profiler.BeginSample("DispatchIncomingCommands"); + try + { + doDispatch = PhotonNetwork.NetworkingClient.LoadBalancingPeer.DispatchIncomingCommands(); + } + catch (Exception e) + { + exceptionCount++; + if (ex == null) + { + ex = e; + } + } + + Profiler.EndSample(); + } + + if (ex != null) + { + throw new AggregateException("Caught " + exceptionCount + " exception(s) in methods called by DispatchIncomingCommands(). Rethrowing first only (see above).", ex); + } + } + + + public void OnCreatedRoom() + { + PhotonNetwork.SetLevelInPropsIfSynced(SceneManagerHelper.ActiveSceneName); + } + + public void OnRoomPropertiesUpdate(Hashtable propertiesThatChanged) + { + PhotonNetwork.LoadLevelIfSynced(); + } + + + public void OnPlayerPropertiesUpdate(Player targetPlayer, Hashtable changedProps) { } + + public void OnMasterClientSwitched(Player newMasterClient) + { + var views = PhotonNetwork.PhotonViewCollection; + foreach (var view in views) + { + if (view.IsRoomView) + { + view.OwnerActorNr= newMasterClient.ActorNumber; + view.ControllerActorNr = newMasterClient.ActorNumber; + } + } + } + + public void OnFriendListUpdate(System.Collections.Generic.List friendList) { } + + public void OnCreateRoomFailed(short returnCode, string message) { } + + public void OnJoinRoomFailed(short returnCode, string message) { } + + public void OnJoinRandomFailed(short returnCode, string message) { } + + protected List reusableIntList = new List(); + + public void OnJoinedRoom() + { + + if (PhotonNetwork.ViewCount == 0) + return; + + var views = PhotonNetwork.PhotonViewCollection; + + bool amMasterClient = PhotonNetwork.IsMasterClient; + bool amRejoiningMaster = amMasterClient && PhotonNetwork.CurrentRoom.PlayerCount > 1; + + if (amRejoiningMaster) + reusableIntList.Clear(); + + // If this is the master rejoining, reassert ownership of non-creator owners + foreach (var view in views) + { + int viewOwnerId = view.OwnerActorNr; + int viewCreatorId = view.CreatorActorNr; + + // on join / rejoin, assign control to either the Master Client (for room objects) or the owner (for anything else) + view.RebuildControllerCache(); + + // Rejoining master should enforce its world view, and override any changes that happened while it was soft disconnected + if (amRejoiningMaster) + if (viewOwnerId != viewCreatorId) + { + reusableIntList.Add(view.ViewID); + reusableIntList.Add(viewOwnerId); + } + } + + if (amRejoiningMaster && reusableIntList.Count > 0) + { + PhotonNetwork.OwnershipUpdate(reusableIntList.ToArray()); + } + } + + public void OnLeftRoom() + { + // Destroy spawned objects and reset scene objects + PhotonNetwork.LocalCleanupAnythingInstantiated(true); + } + + + public void OnPlayerEnteredRoom(Player newPlayer) + { + // note: if the master client becomes inactive, someone else becomes master. so there is no case where the active master client reconnects + // what may happen is that the Master Client disconnects locally and uses ReconnectAndRejoin before anyone (including the server) notices. + + bool amMasterClient = PhotonNetwork.IsMasterClient; + + var views = PhotonNetwork.PhotonViewCollection; + if (amMasterClient) + { + reusableIntList.Clear(); + } + + foreach (var view in views) + { + view.RebuildControllerCache(); // all clients will potentially have to clean up owner and controller, if someone re-joins + + // the master client notifies joining players of any non-creator ownership + if (amMasterClient) + { + int viewOwnerId = view.OwnerActorNr; + if (viewOwnerId != view.CreatorActorNr) + { + reusableIntList.Add(view.ViewID); + reusableIntList.Add(viewOwnerId); + } + } + } + + // update the joining player of non-creator ownership in the room + if (amMasterClient && reusableIntList.Count > 0) + { + PhotonNetwork.OwnershipUpdate(reusableIntList.ToArray(), newPlayer.ActorNumber); + } + + } + + public void OnPlayerLeftRoom(Player otherPlayer) + { + var views = PhotonNetwork.PhotonViewCollection; + + int leavingPlayerId = otherPlayer.ActorNumber; + bool isInactive = otherPlayer.IsInactive; + + // SOFT DISCONNECT: A player has timed out to the relay but has not yet exceeded PlayerTTL and may reconnect. + // Master will take control of this objects until the player hard disconnects, or returns. + if (isInactive) + { + foreach (var view in views) + { + // v2.27: changed from owner-check to controller-check + if (view.ControllerActorNr == leavingPlayerId) + view.ControllerActorNr = PhotonNetwork.MasterClient.ActorNumber; + } + + } + // HARD DISCONNECT: Player permanently removed. Remove that actor as owner for all items they created (Unless AutoCleanUp is false) + else + { + bool autocleanup = PhotonNetwork.CurrentRoom.AutoCleanUp; + + foreach (var view in views) + { + // Skip changing Owner/Controller for items that will be cleaned up. + if (autocleanup && view.CreatorActorNr == leavingPlayerId) + continue; + + // Any views owned by the leaving player, default to null owner (which will become master controlled). + if (view.OwnerActorNr == leavingPlayerId || view.ControllerActorNr == leavingPlayerId) + { + view.OwnerActorNr = 0; + view.ControllerActorNr = PhotonNetwork.MasterClient.ActorNumber; + } + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/PhotonHandler.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/PhotonHandler.cs.meta new file mode 100644 index 00000000..97b4d82f --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/PhotonHandler.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 177bddf229f8d8445a70c0652f03b7df +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonUnityNetworking/Code/PhotonNetwork.cs b/Assets/Photon/PhotonUnityNetworking/Code/PhotonNetwork.cs new file mode 100644 index 00000000..c5846b56 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/PhotonNetwork.cs @@ -0,0 +1,3312 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// PhotonNetwork is the central class of the PUN package. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + using System.Diagnostics; + using UnityEngine; + using System; + using System.Linq; + using System.Collections.Generic; + using ExitGames.Client.Photon; + using UnityEngine.SceneManagement; + + using Photon.Realtime; + using Debug = UnityEngine.Debug; + using Hashtable = ExitGames.Client.Photon.Hashtable; + + #if UNITY_EDITOR + using UnityEditor; + using System.IO; + #endif + + + public struct InstantiateParameters + { + public int[] viewIDs; + public byte objLevelPrefix; + public object[] data; + public byte @group; + public Quaternion rotation; + public Vector3 position; + public string prefabName; + public Player creator; + public int timestamp; + + public InstantiateParameters(string prefabName, Vector3 position, Quaternion rotation, byte @group, object[] data, byte objLevelPrefix, int[] viewIDs, Player creator, int timestamp) + { + this.prefabName = prefabName; + this.position = position; + this.rotation = rotation; + this.@group = @group; + this.data = data; + this.objLevelPrefix = objLevelPrefix; + this.viewIDs = viewIDs; + this.creator = creator; + this.timestamp = timestamp; + } + } + + + /// + /// The main class to use the PhotonNetwork plugin. + /// This class is static. + /// + /// \ingroup publicApi + public static partial class PhotonNetwork + { + /// Version number of PUN. Used in the AppVersion, which separates your playerbase in matchmaking. + public const string PunVersion = "2.41"; + + /// Version number of your game. Setting this updates the AppVersion, which separates your playerbase in matchmaking. + /// + /// In PUN, the GameVersion is only one component of the LoadBalancingClient.AppVersion. + /// Setting the GameVersion will also set the LoadBalancingClient.AppVersion to: value+'_'+ PhotonNetwork.PunVersion. + /// + /// The AppVersion is used to split your playerbase as needed. + /// One AppId may have various AppVersions and each is a separate set of users for matchmaking. + /// + /// The AppVersion gets sent in the "Authenticate" step. + /// This means you can set the GameVersion right after calling ConnectUsingSettings (e.g.) and the new value will be used on the server. + /// Once the client is connected, authentication is done and the value won't be sent to the server anymore. + /// + public static string GameVersion + { + get { return gameVersion; } + set + { + gameVersion = value; + NetworkingClient.AppVersion = string.Format("{0}_{1}", value, PhotonNetwork.PunVersion); + } + } + + private static string gameVersion; + + /// Sent to Photon Server to specify the "Virtual AppId". + /// Sent with the operation Authenticate. When using PUN, you should set the GameVersion or use ConnectUsingSettings(). + public static string AppVersion + { + get { return NetworkingClient.AppVersion; } + } + + /// The LoadBalancingClient is part of Photon Realtime and wraps up multiple servers and states for PUN. + public static LoadBalancingClient NetworkingClient; + + /// + /// The maximum number of assigned PhotonViews per player (or scene). See the [General Documentation](@ref general) topic "Limitations" on how to raise this limitation. + /// + public static readonly int MAX_VIEW_IDS = 1000; // VIEW & PLAYER LIMIT CAN BE EASILY CHANGED, SEE DOCS + + + /// Name of the PhotonServerSettings file (used to load and by PhotonEditor to save new files). + public const string ServerSettingsFileName = "PhotonServerSettings"; + + private static ServerSettings photonServerSettings; + + /// Serialized server settings, written by the Setup Wizard for use in ConnectUsingSettings. + public static ServerSettings PhotonServerSettings + { + get + { + if (photonServerSettings == null) + { + LoadOrCreateSettings(); + } + + return photonServerSettings; + } + private set { photonServerSettings = value; } + } + + /// Currently used server address (no matter if master or game server). + public static string ServerAddress { get { return (NetworkingClient != null) ? NetworkingClient.CurrentServerAddress : ""; } } + + /// Currently used Cloud Region (if any). As long as the client is not on a Master Server or Game Server, the region is not yet defined. + public static string CloudRegion { get { return (NetworkingClient != null && IsConnected && Server!=ServerConnection.NameServer) ? NetworkingClient.CloudRegion : null; } } + + /// The cluster name provided by the Name Server. + /// + /// The value is provided by the OpResponse for OpAuthenticate/OpAuthenticateOnce. See ConnectToRegion. + /// + /// Null until set. + /// + /// Note that the Name Server may assign another cluster, if the requested one is not configured or available. + /// + public static string CurrentCluster { get { return (NetworkingClient != null ) ? NetworkingClient.CurrentCluster : null; } } + + /// Key to save the "Best Region Summary" in the Player Preferences. + private const string PlayerPrefsKey = "PUNCloudBestRegion"; + + /// Used to store and access the "Best Region Summary" in the Player Preferences. + /// + /// Set this value to null before you connect, to discard the previously selected Best Region for the client. + /// + public static string BestRegionSummaryInPreferences + { + get + { + return PlayerPrefs.GetString(PlayerPrefsKey, null); + } + internal set + { + if (String.IsNullOrEmpty(value)) + { + PlayerPrefs.DeleteKey(PlayerPrefsKey); + } + else + { + PlayerPrefs.SetString(PlayerPrefsKey, value.ToString()); + } + } + } + + /// + /// False until you connected to Photon initially. True immediately after Connect-call, in offline mode, while connected to any server and even while switching servers. + /// + /// + /// It is recommended to use the IConnectionCallbacks to establish a connection workflow. + /// Also have a look at IsConnectedAndReady, which provides more info on when you can call operations at all. + /// + public static bool IsConnected + { + get + { + if (OfflineMode) + { + return true; + } + + if (NetworkingClient == null) + { + return false; + } + + return NetworkingClient.IsConnected; + } + } + + /// + /// A refined version of connected which is true only if your connection to the server is ready to accept operations like join, leave, etc. + /// + public static bool IsConnectedAndReady + { + get + { + if (OfflineMode) + { + return true; + } + if (NetworkingClient == null) + { + return false; + } + + return NetworkingClient.IsConnectedAndReady; + } + } + + /// + /// Directly provides the network-level client state, unless in OfflineMode. + /// + /// + /// In context of PUN, you should usually use IsConnected or IsConnectedAndReady. + /// + /// This is the lower level connection state. Keep in mind that PUN uses more than one server, + /// so the client may become Disconnected, even though it's just switching servers. + /// + /// While OfflineMode is true, this is ClientState.Joined (after create/join) or ConnectedToMasterServer in all other cases. + /// + public static ClientState NetworkClientState + { + get + { + if (OfflineMode) + { + return (offlineModeRoom != null) ? ClientState.Joined : ClientState.ConnectedToMasterServer; + } + + if (NetworkingClient == null) + { + return ClientState.Disconnected; + } + + return NetworkingClient.State; + } + } + + /// Tracks, which Connect method was called last. + /// + /// ConnectToMaster sets this to ConnectToMaster. + /// ConnectToRegion sets this to ConnectToRegion. + /// ConnectToBestCloudServer sets this to ConnectToBest. + /// PhotonNetwork.ConnectUsingSettings will call either ConnectToMaster, ConnectToRegion or ConnectToBest, depending on the settings. + /// + public static ConnectMethod ConnectMethod = ConnectMethod.NotCalled; + + + /// The server (type) this client is currently connected or connecting to. + /// Photon uses 3 different roles of servers: Name Server, Master Server and Game Server. + public static ServerConnection Server + { + get + { + if (OfflineMode) + { + return CurrentRoom == null ? ServerConnection.MasterServer : ServerConnection.GameServer; + } + return (PhotonNetwork.NetworkingClient != null) ? PhotonNetwork.NetworkingClient.Server : ServerConnection.NameServer; + } + } + + /// + /// A user's authentication values used during connect. + /// + /// + /// Set these before calling Connect if you want custom authentication. + /// These values set the userId, if and how that userId gets verified (server-side), etc.. + /// + /// If authentication fails for any values, PUN will call your implementation of OnCustomAuthenticationFailed(string debugMessage). + /// See . + /// + public static AuthenticationValues AuthValues + { + get { return (NetworkingClient != null) ? NetworkingClient.AuthValues : null; } + set { if (NetworkingClient != null) NetworkingClient.AuthValues = value; } + } + + /// + /// The lobby that will be used when PUN joins a lobby or creates a game. + /// This is defined when joining a lobby or creating rooms + /// + /// + /// The default lobby uses an empty string as name. + /// So when you connect or leave a room, PUN automatically gets you into a lobby again. + /// + /// Check PhotonNetwork.InLobby if the client is in a lobby. + /// (@ref masterServerAndLobby) + /// + public static TypedLobby CurrentLobby + { + get { return NetworkingClient.CurrentLobby; } + } + + /// + /// Get the room we're currently in (also when in OfflineMode). Null if we aren't in any room. + /// + /// + /// LoadBalancing Client is not aware of the Photon Offline Mode, so never use PhotonNetwork.NetworkingClient.CurrentRoom will be null if you are using OffLine Mode, while PhotonNetwork.CurrentRoom will be set when offlineMode is true + /// + public static Room CurrentRoom + { + get + { + if (offlineMode) + { + return offlineModeRoom; + } + + return NetworkingClient == null ? null : NetworkingClient.CurrentRoom; + } + } + + /// + /// Controls how verbose PUN is. + /// + public static PunLogLevel LogLevel = PunLogLevel.ErrorsOnly; + + /// + /// This client's Player instance is always available, unless the app shuts down. + /// + /// + /// Useful (e.g.) to set the Custom Player Properties or the NickName for this client anytime. + /// When the client joins a room, the Custom Properties and other values are synced. + /// + public static Player LocalPlayer + { + get + { + if (NetworkingClient == null) + { + return null; // suppress ExitApplication errors + } + + return NetworkingClient.LocalPlayer; + } + } + + /// + /// Set to synchronize the player's nickname with everyone in the room(s) you enter. This sets PhotonNetwork.player.NickName. + /// + /// + /// The NickName is just a nickname and does not have to be unique or backed up with some account.
    + /// Set the value any time (e.g. before you connect) and it will be available to everyone you play with.
    + /// Access the names of players by: Player.NickName.
    + /// PhotonNetwork.PlayerListOthers is a list of other players - each contains the NickName the remote player set. + ///
    + public static string NickName + { + get + { + return NetworkingClient.NickName; + } + + set + { + NetworkingClient.NickName = value; + } + } + + /// + /// A sorted copy of the players-list of the current room. This is using Linq, so better cache this value. Update when players join / leave. + /// + public static Player[] PlayerList + { + get + { + Room room = CurrentRoom; + if (room != null) + { + // TODO: implement more effectively. maybe cache?! + return room.Players.Values.OrderBy((x) => x.ActorNumber).ToArray(); + } + return new Player[0]; + } + } + + /// + /// A sorted copy of the players-list of the current room, excluding this client. This is using Linq, so better cache this value. Update when players join / leave. + /// + public static Player[] PlayerListOthers + { + get + { + Room room = CurrentRoom; + if (room != null) + { + // TODO: implement more effectively. maybe cache?! + return room.Players.Values.OrderBy((x) => x.ActorNumber).Where(x => !x.IsLocal).ToArray(); + } + return new Player[0]; + } + } + + /// + /// Used to enable reaction to CloseConnection events. Default: false. + /// + /// + /// Using CloseConnection is a security risk, as exploiters can send the event as Master Client. + /// + /// In best case, a game would implement this "disconnect others" independently from PUN in game-code + /// with some security checks. + /// + public static bool EnableCloseConnection = false; + + /// + /// The minimum difference that a Vector2 or Vector3(e.g. a transforms rotation) needs to change before we send it via a PhotonView's OnSerialize/ObservingComponent. + /// + /// + /// Note that this is the sqrMagnitude. E.g. to send only after a 0.01 change on the Y-axix, we use 0.01f*0.01f=0.0001f. As a remedy against float inaccuracy we use 0.000099f instead of 0.0001f. + /// + public static float PrecisionForVectorSynchronization = 0.000099f; + + /// + /// The minimum angle that a rotation needs to change before we send it via a PhotonView's OnSerialize/ObservingComponent. + /// + public static float PrecisionForQuaternionSynchronization = 1.0f; + + /// + /// The minimum difference between floats before we send it via a PhotonView's OnSerialize/ObservingComponent. + /// + public static float PrecisionForFloatSynchronization = 0.01f; + + + /// + /// Offline mode can be set to re-use your multiplayer code in singleplayer game modes. + /// When this is on PhotonNetwork will not create any connections and there is near to + /// no overhead. Mostly usefull for reusing RPC's and PhotonNetwork.Instantiate + /// + public static bool OfflineMode + { + get + { + return offlineMode; + } + + set + { + if (value == offlineMode) + { + return; + } + + if (value && IsConnected) + { + Debug.LogError("Can't start OFFLINE mode while connected!"); + return; + } + + if (NetworkingClient.IsConnected) + { + NetworkingClient.Disconnect(); // Cleanup (also calls OnLeftRoom to reset stuff) + } + + offlineMode = value; + + if (offlineMode) + { + NetworkingClient.ChangeLocalID(-1); + //SendMonoMessage(PhotonNetworkingMessage.OnConnectedToMaster); + NetworkingClient.ConnectionCallbackTargets.OnConnectedToMaster(); + } + else + { + bool wasInOfflineRoom = offlineModeRoom != null; + + if (wasInOfflineRoom) + { + LeftRoomCleanup(); + } + offlineModeRoom = null; + PhotonNetwork.NetworkingClient.CurrentRoom = null; + NetworkingClient.ChangeLocalID(-1); + if (wasInOfflineRoom) + { + NetworkingClient.MatchMakingCallbackTargets.OnLeftRoom(); + } + } + } + } + + private static bool offlineMode = false; + private static Room offlineModeRoom = null; + + + /// Defines if all clients in a room should automatically load the same level as the Master Client. + /// + /// When enabled, clients load the same scene that is active on the Master Client. + /// When a client joins a room, the scene gets loaded even before the callback OnJoinedRoom gets called. + /// + /// To synchronize the loaded level, the Master Client should use PhotonNetwork.LoadLevel, which + /// notifies the other clients before starting to load the scene. + /// If the Master Client loads a level directly via Unity's API, PUN will notify the other players after + /// the scene loading completed (using SceneManager.sceneLoaded). + /// + /// Internally, a Custom Room Property is set for the loaded scene. On change, clients use LoadLevel + /// if they are not in the same scene. + /// + /// Note that this works only for a single active scene and that reloading the scene is not supported. + /// The Master Client will actually reload a scene but other clients won't. + /// To get everyone to reload, the game can send an RPC or event to trigger the loading. + /// + public static bool AutomaticallySyncScene + { + get + { + return automaticallySyncScene; + } + set + { + automaticallySyncScene = value; + if (automaticallySyncScene && CurrentRoom != null) + { + LoadLevelIfSynced(); + } + } + } + + private static bool automaticallySyncScene = false; + + /// + /// If enabled, the client will get a list of available lobbies from the Master Server. + /// + /// + /// Set this value before the client connects to the Master Server. While connected to the Master + /// Server, a change has no effect. + /// + /// Implement OptionalInfoCallbacks.OnLobbyStatisticsUpdate, to get the list of used lobbies. + /// + /// The lobby statistics can be useful if your title dynamically uses lobbies, depending (e.g.) + /// on current player activity or such. + /// In this case, getting a list of available lobbies, their room-count and player-count can + /// be useful info. + /// + /// ConnectUsingSettings sets this to the PhotonServerSettings value. + /// + public static bool EnableLobbyStatistics + { + get + { + return NetworkingClient.EnableLobbyStatistics; + } + } + + + /// True while this client is in a lobby. + /// + /// Implement IPunCallbacks.OnRoomListUpdate() for a notification when the list of rooms + /// becomes available or updated. + /// + /// You are automatically leaving any lobby when you join a room! + /// Lobbies only exist on the Master Server (whereas rooms are handled by Game Servers). + /// + public static bool InLobby + { + get + { + return NetworkingClient.InLobby; + } + } + + + /// + /// Defines how many times per second the PhotonHandler should send data, if any is queued. Default: 30. + /// + /// + /// This value defines how often PUN will call the low level PhotonPeer to put queued outgoing messages + /// into a datagram to be sent. This is implemented in the PhotonHandler component, which integrates PUN + /// into the Unity game loop. + /// The PhotonHandler.MaxDatagrams value defines how many datagrams can be sent in one iteration. + /// + /// This value does not affect how often updates are written by PhotonViews. That is controlled by the + /// SerializationRate. To avoid send-delays for PhotonView updates, PUN will also send data at the end + /// of frames that wrote data in OnPhotonSerializeView, so sending may actually be more frequent than + /// the SendRate. + /// + /// Messages queued due to RPCs and RaiseEvent, will be sent with at least SendRate frequency. They + /// are included, when OnPhotonSerialize wrote updates and triggers early sending. + /// + /// Setting this value does not adjust the SerializationRate anymore (as of PUN 2.24). + /// + /// Sending less often will aggregate messages in datagrams, which avoids overhead on the network. + /// It is also important to not push too many datagrams per frame. Three to five seem to be the sweet spot. + /// + /// Keep your target platform in mind: mobile networks are usually slower. + /// WiFi is slower with more variance and bursts of loss. + /// + /// A low framerate (as in Update calls) will affect sending of messages. + /// + public static int SendRate + { + get + { + return 1000 / sendFrequency; + } + + set + { + sendFrequency = 1000 / value; + if (PhotonHandler.Instance != null) + { + PhotonHandler.Instance.UpdateInterval = sendFrequency; + } + } + } + + private static int sendFrequency = 33; // in milliseconds. + + /// + /// Defines how many times per second OnPhotonSerialize should be called on PhotonViews for controlled objects. + /// + /// + /// This value defines how often PUN will call OnPhotonSerialize on controlled network objects. + /// This is implemented in the PhotonHandler component, which integrates PUN into the Unity game loop. + /// + /// The updates written in OnPhotonSerialize will be queued temporarily and sent in the next LateUpdate, + /// so a high SerializationRate also causes more sends. The idea is to keep the delay short during + /// which written updates are queued. + /// + /// Calling RPCs will not trigger a send. + /// + /// A low framerate will affect how frequent updates are written and how "on time" they are. + /// + /// A lower rate takes up less performance but the receiving side needs to interpolate longer times + /// between updates. + /// + public static int SerializationRate + { + get + { + return 1000 / serializationFrequency; + } + + set + { + serializationFrequency = 1000 / value; + if (PhotonHandler.Instance != null) + { + PhotonHandler.Instance.UpdateIntervalOnSerialize = serializationFrequency; + } + } + } + + private static int serializationFrequency = 100; // in milliseconds. I.e. 100 = 100ms which makes 10 times/second + + + /// + /// Can be used to pause dispatching of incoming events (RPCs, Instantiates and anything else incoming). + /// + /// + /// While IsMessageQueueRunning == false, the OnPhotonSerializeView calls are not done and nothing is sent by + /// a client. Also, incoming messages will be queued until you re-activate the message queue. + /// + /// This can be useful if you first want to load a level, then go on receiving data of PhotonViews and RPCs. + /// The client will go on receiving and sending acknowledgements for incoming packages and your RPCs/Events. + /// This adds "lag" and can cause issues when the pause is longer, as all incoming messages are just queued. + /// + public static bool IsMessageQueueRunning + { + get + { + return isMessageQueueRunning; + } + + set + { + isMessageQueueRunning = value; + } + } + + /// Backup for property IsMessageQueueRunning. + private static bool isMessageQueueRunning = true; + + + /// + /// Photon network time, synched with the server. + /// + /// + /// v1.55
    + /// This time value depends on the server's Environment.TickCount. It is different per server + /// but inside a Room, all clients should have the same value (Rooms are on one server only).
    + /// This is not a DateTime!
    + /// + /// Use this value with care:
    + /// It can start with any positive value.
    + /// It will "wrap around" from 4294967.295 to 0! + ///
    + public static double Time + { + get + { + if (UnityEngine.Time.frameCount == frame) + { + return frametime; + } + + uint u = (uint)ServerTimestamp; + double t = u; + frametime = t / 1000.0d; + frame = UnityEngine.Time.frameCount; + return frametime; + } + } + + private static double frametime; + private static int frame; + + /// + /// The current server's millisecond timestamp. + /// + /// + /// This can be useful to sync actions and events on all clients in one room. + /// The timestamp is based on the server's Environment.TickCount. + /// + /// It will overflow from a positive to a negative value every so often, so + /// be careful to use only time-differences to check the Time delta when things + /// happen. + /// + /// This is the basis for PhotonNetwork.Time. + /// + public static int ServerTimestamp + { + get + { + if (OfflineMode) + { + if (StartupStopwatch != null && StartupStopwatch.IsRunning) + { + return (int)StartupStopwatch.ElapsedMilliseconds; + } + return Environment.TickCount; + } + + return NetworkingClient.LoadBalancingPeer.ServerTimeInMilliSeconds; // TODO: implement ServerTimeInMilliSeconds in LBC + } + } + + /// Used for Photon/PUN timing, as Time.time can't be called from Threads. + private static Stopwatch StartupStopwatch; + + + /// + /// Defines how many seconds PUN keeps the connection after Unity's OnApplicationPause(true) call. Default: 60 seconds. + /// + /// + /// It's best practice to disconnect inactive apps/connections after a while but to also allow users to take calls, etc.. + /// We think a reasonable background timeout is 60 seconds. + /// + /// To handle the timeout, implement: OnDisconnected(), as usual. + /// Your application will "notice" the background disconnect when it becomes active again (running the Update() loop). + /// + /// If you need to separate this case from others, you need to track if the app was in the background + /// (there is no special callback by PUN). + /// + /// + /// Info: + /// PUN is running a "fallback thread" to send ACKs to the server, even when Unity is not calling Update() regularly. + /// This helps keeping the connection while loading scenes and assets and when the app is in the background. + /// + /// Note: + /// Some platforms (e.g. iOS) don't allow to keep a connection while the app is in background. + /// In those cases, this value does not change anything, the app immediately loses connection in background. + /// + /// Unity's OnApplicationPause() callback is broken in some exports (Android) of some Unity versions. + /// Make sure OnApplicationPause() gets the callbacks you expect on the platform you target! + /// Check PhotonHandler.OnApplicationPause(bool pause) to see the implementation. + /// + public static float KeepAliveInBackground + { + set + { + if (PhotonHandler.Instance != null) + { + PhotonHandler.Instance.KeepAliveInBackground = (int)Mathf.Round(value * 1000.0f); + } + } + + get { return PhotonHandler.Instance != null ? Mathf.Round(PhotonHandler.Instance.KeepAliveInBackground / 1000.0f) : 60.0f; } + } + + + /// Affects if the PhotonHandler dispatches incoming messages in LateUpdate or FixedUpdate (default). + /// + /// By default the PhotonHandler component dispatches incoming messages in FixedUpdate. + /// + /// When the Time.timeScale is low, FixedUpdate is called less frequently up to a point where updates may get paused. + /// PUN can automatically dispatch messages in LateUpdate for low timeScale values (when Time.timeScale is lower than this value). + /// + /// PUN will use either FixedUpdate or LateUpdate but not both (as of v2.23). + /// + /// When you use this value, be aware that Instantiates and RPCs execute with a changed timing within a frame. + /// If Instantiate is called from FixedUpdate, the physics engine seems to run for instantiated objects before the engine calls Start() on them. + /// + /// By default, this value is -1f, so there is no fallback to LateUpdate. + /// + public static float MinimalTimeScaleToDispatchInFixedUpdate = -1f; + + + /// + /// Are we the master client? + /// + public static bool IsMasterClient + { + get + { + if (OfflineMode) + { + return true; + } + + return NetworkingClient.CurrentRoom != null && NetworkingClient.CurrentRoom.MasterClientId == LocalPlayer.ActorNumber; // TODO: implement MasterClient shortcut in LBC? + } + } + + /// + /// The Master Client of the current room or null (outside of rooms). + /// + /// + /// Can be used as "authoritative" client/player to make descisions, run AI or other. + /// + /// If the current Master Client leaves the room (leave/disconnect), the server will quickly assign someone else. + /// If the current Master Client times out (closed app, lost connection, etc), messages sent to this client are + /// effectively lost for the others! A timeout can take 10 seconds in which no Master Client is active. + /// + /// Implement the method IPunCallbacks.OnMasterClientSwitched to be called when the Master Client switched. + /// + /// Use PhotonNetwork.SetMasterClient, to switch manually to some other player / client. + /// + /// With OfflineMode == true, this always returns the PhotonNetwork.player. + /// + public static Player MasterClient + { + get + { + if (OfflineMode) + { + return PhotonNetwork.LocalPlayer; + } + + if (NetworkingClient == null || NetworkingClient.CurrentRoom == null) + { + return null; + } + + return NetworkingClient.CurrentRoom.GetPlayer(NetworkingClient.CurrentRoom.MasterClientId); + } + } + + /// Is true while being in a room (NetworkClientState == ClientState.Joined). + /// + /// Aside from polling this value, game logic should implement IMatchmakingCallbacks in some class + /// and react when that gets called.
    + /// + /// Many actions can only be executed in a room, like Instantiate or Leave, etc.
    + /// A client can join a room in offline mode. In that case, don't use LoadBalancingClient.InRoom, which + /// does not cover offline mode. + ///
    + public static bool InRoom + { + get + { + // in offline mode, you can be in a room too and NetworkClientState then returns Joined like on online mode! + return NetworkClientState == ClientState.Joined; + } + } + + + /// + /// The count of players currently looking for a room (available on MasterServer in 5sec intervals). + /// + public static int CountOfPlayersOnMaster + { + get + { + return NetworkingClient.PlayersOnMasterCount; + } + } + + /// + /// Count of users currently playing your app in some room (sent every 5sec by Master Server). + /// Use PhotonNetwork.PlayerList.Length or PhotonNetwork.CurrentRoom.PlayerCount to get the count of players in the room you're in! + /// + public static int CountOfPlayersInRooms + { + get + { + return NetworkingClient.PlayersInRoomsCount; + } + } + + /// + /// The count of players currently using this application (available on MasterServer in 5sec intervals). + /// + public static int CountOfPlayers + { + get + { + return NetworkingClient.PlayersInRoomsCount + NetworkingClient.PlayersOnMasterCount; + } + } + + /// + /// The count of rooms currently in use (available on MasterServer in 5sec intervals). + /// + public static int CountOfRooms + { + get + { + return NetworkingClient.RoomsCount; + } + } + + /// + /// Enables or disables the collection of statistics about this client's traffic. + /// + /// + /// If you encounter issues with clients, the traffic stats are a good starting point to find solutions. + /// Only with enabled stats, you can use GetVitalStats + /// + public static bool NetworkStatisticsEnabled + { + get + { + return NetworkingClient.LoadBalancingPeer.TrafficStatsEnabled; + } + + set + { + NetworkingClient.LoadBalancingPeer.TrafficStatsEnabled = value; + } + } + + /// + /// Count of commands that got repeated (due to local repeat-timing before an ACK was received). + /// + /// + /// If this value increases a lot, there is a good chance that a timeout disconnect will happen due to bad conditions. + /// + public static int ResentReliableCommands + { + get { return NetworkingClient.LoadBalancingPeer.ResentReliableCommands; } + } + + /// Crc checks can be useful to detect and avoid issues with broken datagrams. Can be enabled while not connected. + public static bool CrcCheckEnabled + { + get { return NetworkingClient.LoadBalancingPeer.CrcEnabled; } + set + { + if (!IsConnected) + { + NetworkingClient.LoadBalancingPeer.CrcEnabled = value; + } + else + { + Debug.Log("Can't change CrcCheckEnabled while being connected. CrcCheckEnabled stays " + NetworkingClient.LoadBalancingPeer.CrcEnabled); + } + } + } + + /// If CrcCheckEnabled, this counts the incoming packages that don't have a valid CRC checksum and got rejected. + public static int PacketLossByCrcCheck + { + get { return NetworkingClient.LoadBalancingPeer.PacketLossByCrc; } + } + + /// Defines the number of times a reliable message can be resent before not getting an ACK for it will trigger a disconnect. Default: 5. + /// Less resends mean quicker disconnects, while more can lead to much more lag without helping. Min: 3. Max: 10. + public static int MaxResendsBeforeDisconnect + { + get { return NetworkingClient.LoadBalancingPeer.SentCountAllowance; } + set + { + if (value < 3) value = 3; + if (value > 10) value = 10; + NetworkingClient.LoadBalancingPeer.SentCountAllowance = value; + } + } + + /// In case of network loss, reliable messages can be repeated quickly up to 3 times. + /// + /// When reliable messages get lost more than once, subsequent repeats are delayed a bit + /// to allow the network to recover.
    + /// With this option, the repeats 2 and 3 can be sped up. This can help avoid timeouts but + /// also it increases the speed in which gaps are closed.
    + /// When you set this, increase PhotonNetwork.MaxResendsBeforeDisconnect to 6 or 7. + ///
    + public static int QuickResends + { + get { return NetworkingClient.LoadBalancingPeer.QuickResendAttempts; } + set + { + if (value < 0) value = 0; + if (value > 3) value = 3; + NetworkingClient.LoadBalancingPeer.QuickResendAttempts = (byte)value; + } + } + + + /// Replaced by ServerPortOverrides. + [Obsolete("Set port overrides in ServerPortOverrides. Not used anymore!")] + public static bool UseAlternativeUdpPorts { get; set; } + + /// Defines overrides for server ports. Used per server-type if > 0. Important: If you change the transport protocol, adjust the overrides, too. + /// + public static PhotonPortDefinition ServerPortOverrides + { + get { return (NetworkingClient == null) ? new PhotonPortDefinition() : NetworkingClient.ServerPortOverrides; } + set { if (NetworkingClient != null) NetworkingClient.ServerPortOverrides = value; } + } + + + private static int lastUsedViewSubId = 0; // each player only needs to remember it's own (!) last used subId to speed up assignment + private static int lastUsedViewSubIdStatic = 0; // per room, the master is able to instantiate GOs. the subId for this must be unique too + + + /// + /// Static constructor used for basic setup. + /// + static PhotonNetwork() + { + #if !UNITY_EDITOR + StaticReset(); // in builds, we just reset/init the client once + #else + + #if UNITY_2019_4_OR_NEWER + if (NetworkingClient == null) + { + NetworkingClient = new LoadBalancingClient(); + } + #else + StaticReset(); // in OLDER unity editor versions there is no RuntimeInitializeOnLoadMethod, so call reset + #endif + + #endif + } + + #if UNITY_EDITOR && UNITY_2019_4_OR_NEWER + [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterAssembliesLoaded)] + #endif + private static void StaticReset() + { + #if UNITY_EDITOR + if (!EditorApplication.isPlayingOrWillChangePlaymode) + { + return; + } + #endif + + // This clear is for when Domain Reloading is disabled. Typically will already be empty. + monoRPCMethodsCache.Clear(); + + // set up the NetworkingClient, protocol, etc + OfflineMode = false; + ConnectionProtocol protocol = PhotonNetwork.PhotonServerSettings.AppSettings.Protocol; + NetworkingClient = new LoadBalancingClient(protocol); + NetworkingClient.LoadBalancingPeer.QuickResendAttempts = 2; + NetworkingClient.LoadBalancingPeer.SentCountAllowance = 9; + + NetworkingClient.EventReceived -= OnEvent; + NetworkingClient.EventReceived += OnEvent; + NetworkingClient.OpResponseReceived -= OnOperation; + NetworkingClient.OpResponseReceived += OnOperation; + NetworkingClient.StateChanged -= OnClientStateChanged; + NetworkingClient.StateChanged += OnClientStateChanged; + + StartupStopwatch = new Stopwatch(); + StartupStopwatch.Start(); + + // using a singleton PhotonHandler to control the new client (which is also a singleton for PUN) + PhotonHandler.Instance.Client = NetworkingClient; + + + Application.runInBackground = PhotonServerSettings.RunInBackground; + PrefabPool = new DefaultPool(); + + // RPC shortcut lookup creation (from list of RPCs, which is updated by Editor scripts) + rpcShortcuts = new Dictionary(PhotonNetwork.PhotonServerSettings.RpcList.Count); + for (int index = 0; index < PhotonNetwork.PhotonServerSettings.RpcList.Count; index++) + { + var name = PhotonNetwork.PhotonServerSettings.RpcList[index]; + rpcShortcuts[name] = index; + } + + // PUN custom types (typical for Unity) + CustomTypes.Register(); + } + + /// Connect to Photon as configured in the PhotonServerSettings file. + /// + /// Implement IConnectionCallbacks, to make your game logic aware of state changes. + /// Especially, IConnectionCallbacks.ConnectedToMasterServer is useful to react when + /// the client can do matchmaking. + /// + /// This method will disable OfflineMode (which won't destroy any instantiated GOs) and it + /// will set IsMessageQueueRunning to true. + /// + /// Your Photon configuration is created by the PUN Wizard and contains the AppId, + /// region for Photon Cloud games, the server address among other things. + /// + /// To ignore the settings file, set the relevant values and connect by calling + /// ConnectToMaster, ConnectToRegion. + /// + /// To connect to the Photon Cloud, a valid AppId must be in the settings file + /// (shown in the Photon Cloud Dashboard). + /// + /// Connecting to the Photon Cloud might fail due to: + /// - Invalid AppId + /// - Network issues + /// - Invalid region + /// - Subscription CCU limit reached + /// - etc. + /// + /// In general check out the from the callback. + /// + public static bool ConnectUsingSettings() + { + if (PhotonServerSettings == null) + { + Debug.LogError("Can't connect: Loading settings failed. ServerSettings asset must be in any 'Resources' folder as: " + ServerSettingsFileName); + return false; + } + + return ConnectUsingSettings(PhotonServerSettings.AppSettings, PhotonServerSettings.StartInOfflineMode); + } + + public static bool ConnectUsingSettings(AppSettings appSettings, bool startInOfflineMode = false) // parameter name hides static class member + { + if (NetworkingClient.LoadBalancingPeer.PeerState != PeerStateValue.Disconnected) + { + Debug.LogWarning("ConnectUsingSettings() failed. Can only connect while in state 'Disconnected'. Current state: " + NetworkingClient.LoadBalancingPeer.PeerState); + return false; + } + if (PhotonHandler.AppQuits) + { + Debug.LogWarning("Can't connect: Application is closing. Unity called OnApplicationQuit()."); + return false; + } + if (PhotonServerSettings == null) + { + Debug.LogError("Can't connect: Loading settings failed. ServerSettings asset must be in any 'Resources' folder as: " + ServerSettingsFileName); + return false; + } + + SetupLogging(); + + + NetworkingClient.LoadBalancingPeer.TransportProtocol = appSettings.Protocol; + NetworkingClient.ExpectedProtocol = null; + NetworkingClient.EnableProtocolFallback = appSettings.EnableProtocolFallback; + NetworkingClient.AuthMode = appSettings.AuthMode; + + + IsMessageQueueRunning = true; + NetworkingClient.AppId = appSettings.AppIdRealtime; + GameVersion = appSettings.AppVersion; + + + + if (startInOfflineMode) + { + OfflineMode = true; + return true; + } + + if (OfflineMode) + { + OfflineMode = false; // Cleanup offline mode + // someone can set OfflineMode in code and then call ConnectUsingSettings() with non-offline settings. Warning for that case: + Debug.LogWarning("ConnectUsingSettings() disabled the offline mode. No longer offline."); + } + + + NetworkingClient.EnableLobbyStatistics = appSettings.EnableLobbyStatistics; + NetworkingClient.ProxyServerAddress = appSettings.ProxyServer; + + + if (appSettings.IsMasterServerAddress) + { + if (AuthValues == null) + { + AuthValues = new AuthenticationValues(Guid.NewGuid().ToString()); + } + else if (string.IsNullOrEmpty(AuthValues.UserId)) + { + AuthValues.UserId = Guid.NewGuid().ToString(); + } + return ConnectToMaster(appSettings.Server, appSettings.Port, appSettings.AppIdRealtime); + } + + + NetworkingClient.NameServerPortInAppSettings = appSettings.Port; + if (!appSettings.IsDefaultNameServer) + { + NetworkingClient.NameServerHost = appSettings.Server; + } + + + if (appSettings.IsBestRegion) + { + return ConnectToBestCloudServer(); + } + + return ConnectToRegion(appSettings.FixedRegion); + } + + + /// Connect to a Photon Master Server by address, port, appID. + /// + /// To connect to the Photon Cloud, a valid AppId must be in the settings file (shown in the Photon Cloud Dashboard). + /// https://dashboard.photonengine.com + /// + /// Connecting to the Photon Cloud might fail due to: + /// - Invalid AppId + /// - Network issues + /// - Invalid region + /// - Subscription CCU limit reached + /// - etc. + /// + /// In general check out the from the callback. + /// + /// The server's address (either your own or Photon Cloud address). + /// The server's port to connect to. + /// Your application ID (Photon Cloud provides you with a GUID for your game). + public static bool ConnectToMaster(string masterServerAddress, int port, string appID) + { + // TODO: refactor NetworkingClient.LoadBalancingPeer.PeerState to not use the peer but LBC.connected or so + if (NetworkingClient.LoadBalancingPeer.PeerState != PeerStateValue.Disconnected) + { + Debug.LogWarning("ConnectToMaster() failed. Can only connect while in state 'Disconnected'. Current state: " + NetworkingClient.LoadBalancingPeer.PeerState); + return false; + } + if (PhotonHandler.AppQuits) + { + Debug.LogWarning("Can't connect: Application is closing. Unity called OnApplicationQuit()."); + return false; + } + + if (OfflineMode) + { + OfflineMode = false; // Cleanup offline mode + Debug.LogWarning("ConnectToMaster() disabled the offline mode. No longer offline."); + } + + if (!IsMessageQueueRunning) + { + IsMessageQueueRunning = true; + Debug.LogWarning("ConnectToMaster() enabled IsMessageQueueRunning. Needs to be able to dispatch incoming messages."); + } + + SetupLogging(); + ConnectMethod = ConnectMethod.ConnectToMaster; + + NetworkingClient.IsUsingNameServer = false; + NetworkingClient.MasterServerAddress = (port == 0) ? masterServerAddress : masterServerAddress + ":" + port; + NetworkingClient.AppId = appID; + + return NetworkingClient.ConnectToMasterServer(); + } + + + /// + /// Connect to the Photon Cloud region with the lowest ping (on platforms that support Unity's Ping). + /// + /// + /// Will save the result of pinging all cloud servers in PlayerPrefs. Calling this the first time can take +-2 seconds. + /// The ping result can be overridden via PhotonNetwork.OverrideBestCloudServer(..) + /// This call can take up to 2 seconds if it is the first time you are using this, all cloud servers will be pinged to check for the best region. + /// + /// The PUN Setup Wizard stores your appID in a settings file and applies a server address/port. + /// To connect to the Photon Cloud, a valid AppId must be in the settings file (shown in the Photon Cloud Dashboard). + /// https://dashboard.photonengine.com + /// + /// Connecting to the Photon Cloud might fail due to: + /// - Invalid AppId + /// - Network issues + /// - Invalid region + /// - Subscription CCU limit reached + /// - etc. + /// + /// In general check out the from the callback. + /// + /// If this client is going to connect to cloud server based on ping. Even if true, this does not guarantee a connection but the attempt is being made. + public static bool ConnectToBestCloudServer() + { + if (NetworkingClient.LoadBalancingPeer.PeerState != PeerStateValue.Disconnected) + { + Debug.LogWarning("ConnectToBestCloudServer() failed. Can only connect while in state 'Disconnected'. Current state: " + NetworkingClient.LoadBalancingPeer.PeerState); + return false; + } + if (PhotonHandler.AppQuits) + { + Debug.LogWarning("Can't connect: Application is closing. Unity called OnApplicationQuit()."); + return false; + } + + SetupLogging(); + ConnectMethod = ConnectMethod.ConnectToBest; + + // Connecting to "Best Region" begins with connecting to the Name Server. + bool couldConnect = PhotonNetwork.NetworkingClient.ConnectToNameServer(); + return couldConnect; + } + + + /// + /// Connects to the Photon Cloud region of choice. + /// + /// + /// It's typically enough to define the region code ("eu", "us", etc). + /// Connecting to a specific cluster may be necessary, when regions get sharded and you support friends / invites. + /// + /// In all other cases, you should not define a cluster as this allows the Name Server to distribute + /// clients as needed. A random, load balanced cluster will be selected. + /// + /// The Name Server has the final say to assign a cluster as available. + /// If the requested cluster is not available another will be assigned. + /// + /// Once connected, check the value of CurrentCluster. + /// + public static bool ConnectToRegion(string region) + { + if (NetworkingClient.LoadBalancingPeer.PeerState != PeerStateValue.Disconnected && NetworkingClient.Server != ServerConnection.NameServer) + { + Debug.LogWarning("ConnectToRegion() failed. Can only connect while in state 'Disconnected'. Current state: " + NetworkingClient.LoadBalancingPeer.PeerState); + return false; + } + if (PhotonHandler.AppQuits) + { + Debug.LogWarning("Can't connect: Application is closing. Unity called OnApplicationQuit()."); + return false; + } + + SetupLogging(); + ConnectMethod = ConnectMethod.ConnectToRegion; + + if (!string.IsNullOrEmpty(region)) + { + return NetworkingClient.ConnectToRegionMaster(region); + } + + return false; + } + + + /// + /// Makes this client disconnect from the photon server, a process that leaves any room and calls OnDisconnected on completion. + /// + /// + /// When you disconnect, the client will send a "disconnecting" message to the server. This speeds up leave/disconnect + /// messages for players in the same room as you (otherwise the server would timeout this client's connection). + /// When used in OfflineMode, the state-change and event-call OnDisconnected are immediate. + /// Offline mode is set to false as well. + /// Once disconnected, the client can connect again. Use ConnectUsingSettings. + /// + public static void Disconnect() + { + if (OfflineMode) + { + OfflineMode = false; + offlineModeRoom = null; + NetworkingClient.State = ClientState.Disconnecting; + NetworkingClient.OnStatusChanged(StatusCode.Disconnect); + return; + } + + if (NetworkingClient == null) + { + return; // Surpress error when quitting playmode in the editor + } + + NetworkingClient.Disconnect(); + } + + /// Can be used to reconnect to the master server after a disconnect. + /// + /// After losing connection, you can use this to connect a client to the region Master Server again. + /// Cache the room name you're in and use RejoinRoom(roomname) to return to a game. + /// Common use case: Press the Lock Button on a iOS device and you get disconnected immediately. + /// + public static bool Reconnect() + { + if (string.IsNullOrEmpty(NetworkingClient.MasterServerAddress)) + { + Debug.LogWarning("Reconnect() failed. It seems the client wasn't connected before?! Current state: " + NetworkingClient.LoadBalancingPeer.PeerState); + return false; + } + + if (NetworkingClient.LoadBalancingPeer.PeerState != PeerStateValue.Disconnected) + { + Debug.LogWarning("Reconnect() failed. Can only connect while in state 'Disconnected'. Current state: " + NetworkingClient.LoadBalancingPeer.PeerState); + return false; + } + + if (OfflineMode) + { + OfflineMode = false; // Cleanup offline mode + Debug.LogWarning("Reconnect() disabled the offline mode. No longer offline."); + } + + if (!IsMessageQueueRunning) + { + IsMessageQueueRunning = true; + Debug.LogWarning("Reconnect() enabled IsMessageQueueRunning. Needs to be able to dispatch incoming messages."); + } + + NetworkingClient.IsUsingNameServer = false; + return NetworkingClient.ReconnectToMaster(); + } + + + /// + /// Resets the traffic stats and re-enables them. + /// + public static void NetworkStatisticsReset() + { + NetworkingClient.LoadBalancingPeer.TrafficStatsReset(); + } + + + /// + /// Only available when NetworkStatisticsEnabled was used to gather some stats. + /// + /// A string with vital networking statistics. + public static string NetworkStatisticsToString() + { + if (NetworkingClient == null || OfflineMode) + { + return "Offline or in OfflineMode. No VitalStats available."; + } + + return NetworkingClient.LoadBalancingPeer.VitalStatsToString(false); + } + + + /// + /// Helper function which is called inside this class to erify if certain functions can be used (e.g. RPC when not connected) + /// + /// + private static bool VerifyCanUseNetwork() + { + if (IsConnected) + { + return true; + } + + Debug.LogError("Cannot send messages when not connected. Either connect to Photon OR use offline mode!"); + return false; + } + + + /// + /// The current roundtrip time to the photon server. + /// + /// Roundtrip time (to server and back). + public static int GetPing() + { + return NetworkingClient.LoadBalancingPeer.RoundTripTime; + } + + /// Refreshes the server timestamp (async operation, takes a roundtrip). + /// Can be useful if a bad connection made the timestamp unusable or imprecise. + public static void FetchServerTimestamp() + { + if (NetworkingClient != null) + { + NetworkingClient.LoadBalancingPeer.FetchServerTimestamp(); + } + } + + /// + /// Can be used to immediately send the RPCs and Instantiates just called, so they are on their way to the other players. + /// + /// + /// This could be useful if you do a RPC to load a level and then load it yourself. + /// While loading, no RPCs are sent to others, so this would delay the "load" RPC. + /// You can send the RPC to "others", use this method, disable the message queue + /// (by IsMessageQueueRunning) and then load. + /// + public static void SendAllOutgoingCommands() + { + if (!VerifyCanUseNetwork()) + { + return; + } + + while (NetworkingClient.LoadBalancingPeer.SendOutgoingCommands()) + { + } + } + + /// Request a client to disconnect/kick, which happens if EnableCloseConnection is set to true. Only the master client can do this. + /// Only the target player gets this event. That player will disconnect if EnableCloseConnection = true. + /// The Player to kick. + public static bool CloseConnection(Player kickPlayer) + { + if (!VerifyCanUseNetwork()) + { + return false; + } + + if (!PhotonNetwork.EnableCloseConnection) + { + Debug.LogError("CloseConnection is disabled. No need to call it."); + return false; + } + + if (!LocalPlayer.IsMasterClient) + { + Debug.LogError("CloseConnection: Only the masterclient can kick another player."); + return false; + } + + if (kickPlayer == null) + { + Debug.LogError("CloseConnection: No such player connected!"); + return false; + } + + RaiseEventOptions options = new RaiseEventOptions() { TargetActors = new int[] { kickPlayer.ActorNumber } }; + return NetworkingClient.OpRaiseEvent(PunEvent.CloseConnection, null, options, SendOptions.SendReliable); + } + + + /// + /// Asks the server to assign another player as Master Client of your current room. + /// + /// + /// RPCs and RaiseEvent have the option to send messages only to the Master Client of a room. + /// SetMasterClient affects which client gets those messages. + /// + /// This method calls an operation on the server to set a new Master Client, which takes a roundtrip. + /// In case of success, this client and the others get the new Master Client from the server. + /// + /// SetMasterClient tells the server which current Master Client should be replaced with the new one. + /// It will fail, if anything switches the Master Client moments earlier. There is no callback for this + /// error. All clients should get the new Master Client assigned by the server anyways. + /// + /// See also: PhotonNetwork.MasterClient + /// + /// On v3 servers: + /// The ReceiverGroup.MasterClient (usable in RPCs) is not affected by this (still points to lowest player.ID in room). + /// Avoid using this enum value (and send to a specific player instead). + /// + /// If the current Master Client leaves, PUN will detect a new one by "lowest player ID". Implement OnMasterClientSwitched + /// to get a callback in this case. The PUN-selected Master Client might assign a new one. + /// + /// Make sure you don't create an endless loop of Master-assigning! When selecting a custom Master Client, all clients + /// should point to the same player, no matter who actually assigns this player. + /// + /// Locally the Master Client is immediately switched, while remote clients get an event. This means the game + /// is tempoarily without Master Client like when a current Master Client leaves. + /// + /// When switching the Master Client manually, keep in mind that this user might leave and not do it's work, just like + /// any Master Client. + /// + /// + /// The player to become the next Master Client. + /// False when this operation couldn't be done. Must be in a room (not in OfflineMode). + public static bool SetMasterClient(Player masterClientPlayer) + { + if (!InRoom || !VerifyCanUseNetwork() || OfflineMode) + { + if (LogLevel == PunLogLevel.Informational) Debug.Log("Can not SetMasterClient(). Not in room or in OfflineMode."); + return false; + } + + return CurrentRoom.SetMasterClient(masterClientPlayer); + } + + + /// + /// Joins a random room that matches the filter. Will callback: OnJoinedRoom or OnJoinRandomFailed. + /// + /// + /// Used for random matchmaking. You can join any room or one with specific properties defined in opJoinRandomRoomParams. + /// + /// This operation fails if no rooms are fitting or available (all full, closed, in another lobby or not visible). + /// It may also fail when actually joining the room which was found. Rooms may close, become full or empty anytime. + /// + /// This method can only be called while the client is connected to a Master Server so you should + /// implement the callback OnConnectedToMaster. + /// Check the return value to make sure the operation will be called on the server. + /// Note: There will be no callbacks if this method returned false. + /// + /// More about PUN matchmaking: + /// https://doc.photonengine.com/en-us/pun/v2/lobby-and-matchmaking/matchmaking-and-lobby + /// + public static bool JoinRandomRoom() + { + return JoinRandomRoom(null, 0, MatchmakingMode.FillRoom, null, null); + } + + /// + /// Joins a random room that matches the filter. Will callback: OnJoinedRoom or OnJoinRandomFailed. + /// + /// + /// Used for random matchmaking. You can join any room or one with specific properties defined in opJoinRandomRoomParams. + /// + /// This operation fails if no rooms are fitting or available (all full, closed, in another lobby or not visible). + /// It may also fail when actually joining the room which was found. Rooms may close, become full or empty anytime. + /// + /// This method can only be called while the client is connected to a Master Server so you should + /// implement the callback OnConnectedToMaster. + /// Check the return value to make sure the operation will be called on the server. + /// Note: There will be no callbacks if this method returned false. + /// + /// More about PUN matchmaking: + /// https://doc.photonengine.com/en-us/pun/v2/lobby-and-matchmaking/matchmaking-and-lobby + /// + /// Filters for rooms that match these custom properties (string keys and values). To ignore, pass null. + /// Filters for a particular maxplayer setting. Use 0 to accept any maxPlayer value. + /// If the operation got queued and will be sent. + public static bool JoinRandomRoom(Hashtable expectedCustomRoomProperties, byte expectedMaxPlayers) + { + return JoinRandomRoom(expectedCustomRoomProperties, expectedMaxPlayers, MatchmakingMode.FillRoom, null, null); + } + + /// + /// Joins a random room that matches the filter. Will callback: OnJoinedRoom or OnJoinRandomFailed. + /// + /// + /// Used for random matchmaking. You can join any room or one with specific properties defined in opJoinRandomRoomParams. + /// + /// This operation fails if no rooms are fitting or available (all full, closed, in another lobby or not visible). + /// It may also fail when actually joining the room which was found. Rooms may close, become full or empty anytime. + /// + /// This method can only be called while the client is connected to a Master Server so you should + /// implement the callback OnConnectedToMaster. + /// Check the return value to make sure the operation will be called on the server. + /// Note: There will be no callbacks if this method returned false. + /// + /// More about PUN matchmaking: + /// https://doc.photonengine.com/en-us/pun/v2/lobby-and-matchmaking/matchmaking-and-lobby + /// + /// Filters for rooms that match these custom properties (string keys and values). To ignore, pass null. + /// Filters for a particular maxplayer setting. Use 0 to accept any maxPlayer value. + /// Selects one of the available matchmaking algorithms. See MatchmakingMode enum for options. + /// The lobby in which you want to lookup a room. Pass null, to use the default lobby. This does not join that lobby and neither sets the lobby property. + /// A filter-string for SQL-typed lobbies. + /// Optional list of users (by UserId) who are expected to join this game and who you want to block a slot for. + /// If the operation got queued and will be sent. + public static bool JoinRandomRoom(Hashtable expectedCustomRoomProperties, byte expectedMaxPlayers, MatchmakingMode matchingType, TypedLobby typedLobby, string sqlLobbyFilter, string[] expectedUsers = null) + { + if (OfflineMode) + { + if (offlineModeRoom != null) + { + Debug.LogError("JoinRandomRoom failed. In offline mode you still have to leave a room to enter another."); + return false; + } + EnterOfflineRoom("offline room", null, true); + return true; + } + if (NetworkingClient.Server != ServerConnection.MasterServer || !IsConnectedAndReady) + { + Debug.LogError("JoinRandomRoom failed. Client is on "+ NetworkingClient.Server+ " (must be Master Server for matchmaking)" + (IsConnectedAndReady ? " and ready" : " but not ready for operations (State: "+ NetworkingClient.State + ")") + ". Wait for callback: OnJoinedLobby or OnConnectedToMaster."); + return false; + } + + typedLobby = typedLobby ?? ((NetworkingClient.InLobby) ? NetworkingClient.CurrentLobby : null); // use given lobby, or active lobby (if any active) or none + + OpJoinRandomRoomParams opParams = new OpJoinRandomRoomParams(); + opParams.ExpectedCustomRoomProperties = expectedCustomRoomProperties; + opParams.ExpectedMaxPlayers = expectedMaxPlayers; + opParams.MatchingType = matchingType; + opParams.TypedLobby = typedLobby; + opParams.SqlLobbyFilter = sqlLobbyFilter; + opParams.ExpectedUsers = expectedUsers; + + return NetworkingClient.OpJoinRandomRoom(opParams); + } + + + /// + /// Attempts to join a room that matches the specified filter and creates a room if none found. + /// + /// + /// This operation is a combination of filter-based random matchmaking with the option to create a new room, + /// if no fitting room exists. + /// The benefit of that is that the room creation is done by the same operation and the room can be found + /// by the very next client, looking for similar rooms. + /// + /// There are separate parameters for joining and creating a room. + /// + /// This method can only be called while connected to a Master Server. + /// This client's State is set to ClientState.Joining immediately. + /// + /// Either IMatchmakingCallbacks.OnJoinedRoom or IMatchmakingCallbacks.OnCreatedRoom gets called. + /// + /// Should the creation on the Master Server, IMatchmakingCallbacks.OnJoinRandomFailed gets called. + /// Should the "join" on the Game Server fail, IMatchmakingCallbacks.OnJoinRoomFailed gets called. + /// + /// + /// Check the return value to make sure the operation will be called on the server. + /// Note: There will be no callbacks if this method returned false. + /// + /// If the operation will be sent (requires connection to Master Server). + public static bool JoinRandomOrCreateRoom(Hashtable expectedCustomRoomProperties = null, byte expectedMaxPlayers = 0, MatchmakingMode matchingType = MatchmakingMode.FillRoom, TypedLobby typedLobby = null, string sqlLobbyFilter = null, string roomName = null, RoomOptions roomOptions = null, string[] expectedUsers = null) + { + if (OfflineMode) + { + if (offlineModeRoom != null) + { + Debug.LogError("JoinRandomOrCreateRoom failed. In offline mode you still have to leave a room to enter another."); + return false; + } + EnterOfflineRoom("offline room", null, true); + return true; + } + if (NetworkingClient.Server != ServerConnection.MasterServer || !IsConnectedAndReady) + { + Debug.LogError("JoinRandomOrCreateRoom failed. Client is on "+ NetworkingClient.Server+ " (must be Master Server for matchmaking)" + (IsConnectedAndReady ? " and ready" : " but not ready for operations (State: "+ NetworkingClient.State + ")") + ". Wait for callback: OnJoinedLobby or OnConnectedToMaster."); + return false; + } + + typedLobby = typedLobby ?? ((NetworkingClient.InLobby) ? NetworkingClient.CurrentLobby : null); // use given lobby, or active lobby (if any active) or none + + OpJoinRandomRoomParams opParams = new OpJoinRandomRoomParams(); + opParams.ExpectedCustomRoomProperties = expectedCustomRoomProperties; + opParams.ExpectedMaxPlayers = expectedMaxPlayers; + opParams.MatchingType = matchingType; + opParams.TypedLobby = typedLobby; + opParams.SqlLobbyFilter = sqlLobbyFilter; + opParams.ExpectedUsers = expectedUsers; + + EnterRoomParams enterRoomParams = new EnterRoomParams(); + enterRoomParams.RoomName = roomName; + enterRoomParams.RoomOptions = roomOptions; + enterRoomParams.Lobby = typedLobby; + enterRoomParams.ExpectedUsers = expectedUsers; + + return NetworkingClient.OpJoinRandomOrCreateRoom(opParams, enterRoomParams); + } + + + /// + /// Creates a new room. Will callback: OnCreatedRoom and OnJoinedRoom or OnCreateRoomFailed. + /// + /// + /// When successful, this calls the callbacks OnCreatedRoom and OnJoinedRoom (the latter, cause you join as first player). + /// In all error cases, OnCreateRoomFailed gets called. + /// + /// Creating a room will fail if the room name is already in use or when the RoomOptions clashing + /// with one another. Check the EnterRoomParams reference for the various room creation options. + /// + /// If you don't want to create a unique room-name, pass null or "" as name and the server will assign a roomName (a GUID as string). + /// + /// This method can only be called while the client is connected to a Master Server so you should + /// implement the callback OnConnectedToMaster. + /// Check the return value to make sure the operation will be called on the server. + /// Note: There will be no callbacks if this method returned false. + /// + /// More about PUN matchmaking: + /// https://doc.photonengine.com/en-us/pun/v2/lobby-and-matchmaking/matchmaking-and-lobby + /// + /// Unique name of the room to create. Pass null or "" to make the server generate a name. + /// Common options for the room like MaxPlayers, initial custom room properties and similar. See RoomOptions type.. + /// If null, the room is automatically created in the currently used lobby (which is "default" when you didn't join one explicitly). + /// Optional list of users (by UserId) who are expected to join this game and who you want to block a slot for. + /// If the operation got queued and will be sent. + public static bool CreateRoom(string roomName, RoomOptions roomOptions = null, TypedLobby typedLobby = null, string[] expectedUsers = null) + { + if (OfflineMode) + { + if (offlineModeRoom != null) + { + Debug.LogError("CreateRoom failed. In offline mode you still have to leave a room to enter another."); + return false; + } + EnterOfflineRoom(roomName, roomOptions, true); + return true; + } + if (NetworkingClient.Server != ServerConnection.MasterServer || !IsConnectedAndReady) + { + Debug.LogError("CreateRoom failed. Client is on " + NetworkingClient.Server + " (must be Master Server for matchmaking)" + (IsConnectedAndReady ? " and ready" : "but not ready for operations (State: " + NetworkingClient.State + ")") + ". Wait for callback: OnJoinedLobby or OnConnectedToMaster."); + return false; + } + + typedLobby = typedLobby ?? ((NetworkingClient.InLobby) ? NetworkingClient.CurrentLobby : null); // use given lobby, or active lobby (if any active) or none + + EnterRoomParams opParams = new EnterRoomParams(); + opParams.RoomName = roomName; + opParams.RoomOptions = roomOptions; + opParams.Lobby = typedLobby; + opParams.ExpectedUsers = expectedUsers; + + return NetworkingClient.OpCreateRoom(opParams); + } + + + /// + /// Joins a specific room by name and creates it on demand. Will callback: OnJoinedRoom or OnJoinRoomFailed. + /// + /// + /// Useful when players make up a room name to meet in: + /// All involved clients call the same method and whoever is first, also creates the room. + /// + /// When successful, the client will enter the specified room. + /// The client which creates the room, will callback both OnCreatedRoom and OnJoinedRoom. + /// Clients that join an existing room will only callback OnJoinedRoom. + /// In all error cases, OnJoinRoomFailed gets called. + /// + /// Joining a room will fail, if the room is full, closed or when the user + /// already is present in the room (checked by userId). + /// + /// To return to a room, use OpRejoinRoom. + /// + /// This method can only be called while the client is connected to a Master Server so you should + /// implement the callback OnConnectedToMaster. + /// Check the return value to make sure the operation will be called on the server. + /// Note: There will be no callbacks if this method returned false. + /// + /// + /// If you set room properties in roomOptions, they get ignored when the room is existing already. + /// This avoids changing the room properties by late joining players. + /// + /// You can define an array of expectedUsers, to block player slots in the room for these users. + /// The corresponding feature in Photon is called "Slot Reservation" and can be found in the doc pages. + /// + /// + /// More about PUN matchmaking: + /// https://doc.photonengine.com/en-us/pun/v2/lobby-and-matchmaking/matchmaking-and-lobby + /// + /// Name of the room to join. Must be non null. + /// Options for the room, in case it does not exist yet. Else these values are ignored. + /// Lobby you want a new room to be listed in. Ignored if the room was existing and got joined. + /// Optional list of users (by UserId) who are expected to join this game and who you want to block a slot for. + /// If the operation got queued and will be sent. + public static bool JoinOrCreateRoom(string roomName, RoomOptions roomOptions, TypedLobby typedLobby, string[] expectedUsers = null) + { + if (OfflineMode) + { + if (offlineModeRoom != null) + { + Debug.LogError("JoinOrCreateRoom failed. In offline mode you still have to leave a room to enter another."); + return false; + } + EnterOfflineRoom(roomName, roomOptions, true); // in offline mode, JoinOrCreateRoom assumes you create the room + return true; + } + if (NetworkingClient.Server != ServerConnection.MasterServer || !IsConnectedAndReady) + { + Debug.LogError("JoinOrCreateRoom failed. Client is on " + NetworkingClient.Server + " (must be Master Server for matchmaking)" + (IsConnectedAndReady ? " and ready" : "but not ready for operations (State: " + NetworkingClient.State + ")") + ". Wait for callback: OnJoinedLobby or OnConnectedToMaster."); + return false; + } + if (string.IsNullOrEmpty(roomName)) + { + Debug.LogError("JoinOrCreateRoom failed. A roomname is required. If you don't know one, how will you join?"); + return false; + } + + typedLobby = typedLobby ?? ((NetworkingClient.InLobby) ? NetworkingClient.CurrentLobby : null); // use given lobby, or active lobby (if any active) or none + + EnterRoomParams opParams = new EnterRoomParams(); + opParams.RoomName = roomName; + opParams.RoomOptions = roomOptions; + opParams.Lobby = typedLobby; + opParams.PlayerProperties = LocalPlayer.CustomProperties; + opParams.ExpectedUsers = expectedUsers; + + return NetworkingClient.OpJoinOrCreateRoom(opParams); + } + + + /// + /// Joins a room by name. Will callback: OnJoinedRoom or OnJoinRoomFailed. + /// + /// + /// Useful when using lobbies or when players follow friends or invite each other. + /// + /// When successful, the client will enter the specified room and callback via OnJoinedRoom. + /// In all error cases, OnJoinRoomFailed gets called. + /// + /// Joining a room will fail if the room is full, closed, not existing or when the user + /// already is present in the room (checked by userId). + /// + /// To return to a room, use OpRejoinRoom. + /// When players invite each other and it's unclear who's first to respond, use OpJoinOrCreateRoom instead. + /// + /// This method can only be called while the client is connected to a Master Server so you should + /// implement the callback OnConnectedToMaster. + /// Check the return value to make sure the operation will be called on the server. + /// Note: There will be no callbacks if this method returned false. + /// + /// + /// More about PUN matchmaking: + /// https://doc.photonengine.com/en-us/pun/v2/lobby-and-matchmaking/matchmaking-and-lobby + /// + /// + /// + /// Unique name of the room to join. + /// Optional list of users (by UserId) who are expected to join this game and who you want to block a slot for. + /// If the operation got queued and will be sent. + public static bool JoinRoom(string roomName, string[] expectedUsers = null) + { + if (OfflineMode) + { + if (offlineModeRoom != null) + { + Debug.LogError("JoinRoom failed. In offline mode you still have to leave a room to enter another."); + return false; + } + EnterOfflineRoom(roomName, null, true); + return true; + } + if (NetworkingClient.Server != ServerConnection.MasterServer || !IsConnectedAndReady) + { + Debug.LogError("JoinRoom failed. Client is on " + NetworkingClient.Server + " (must be Master Server for matchmaking)" + (IsConnectedAndReady ? " and ready" : "but not ready for operations (State: " + NetworkingClient.State + ")") + ". Wait for callback: OnJoinedLobby or OnConnectedToMaster."); + return false; + } + if (string.IsNullOrEmpty(roomName)) + { + Debug.LogError("JoinRoom failed. A roomname is required. If you don't know one, how will you join?"); + return false; + } + + + EnterRoomParams opParams = new EnterRoomParams(); + opParams.RoomName = roomName; + opParams.ExpectedUsers = expectedUsers; + + return NetworkingClient.OpJoinRoom(opParams); + } + + + /// + /// Rejoins a room by roomName (using the userID internally to return). Will callback: OnJoinedRoom or OnJoinRoomFailed. + /// + /// + /// After losing connection, you might be able to return to a room and continue playing, + /// if the client is reconnecting fast enough. Use Reconnect() and this method. + /// Cache the room name you're in and use RejoinRoom(roomname) to return to a game. + /// + /// Note: To be able to Rejoin any room, you need to use UserIDs! + /// You also need to set RoomOptions.PlayerTtl. + /// + /// Important: Instantiate() and use of RPCs is not yet supported. + /// The ownership rules of PhotonViews prevent a seamless return to a game, if you use PhotonViews. + /// Use Custom Properties and RaiseEvent with event caching instead. + /// + /// Common use case: Press the Lock Button on a iOS device and you get disconnected immediately. + /// + /// Rejoining room will not send any player properties. Instead client will receive up-to-date ones from server. + /// If you want to set new player properties, do it once rejoined. + /// + public static bool RejoinRoom(string roomName) + { + if (OfflineMode) + { + Debug.LogError("RejoinRoom failed due to offline mode."); + return false; + } + if (NetworkingClient.Server != ServerConnection.MasterServer || !IsConnectedAndReady) + { + Debug.LogError("RejoinRoom failed. Client is on " + NetworkingClient.Server + " (must be Master Server for matchmaking)" + (IsConnectedAndReady ? " and ready" : "but not ready for operations (State: " + NetworkingClient.State + ")") + ". Wait for callback: OnJoinedLobby or OnConnectedToMaster."); + return false; + } + if (string.IsNullOrEmpty(roomName)) + { + Debug.LogError("RejoinRoom failed. A roomname is required. If you don't know one, how will you join?"); + return false; + } + + return NetworkingClient.OpRejoinRoom(roomName); + } + + + /// When the client lost connection during gameplay, this method attempts to reconnect and rejoin the room. + /// + /// This method re-connects directly to the game server which was hosting the room PUN was in before. + /// If the room was shut down in the meantime, PUN will call OnJoinRoomFailed and return this client to the Master Server. + /// + /// Check the return value, if this client will attempt a reconnect and rejoin (if the conditions are met). + /// If ReconnectAndRejoin returns false, you can still attempt a Reconnect and Rejoin. + /// + /// Similar to PhotonNetwork.RejoinRoom, this requires you to use unique IDs per player (the UserID). + /// + /// Rejoining room will not send any player properties. Instead client will receive up-to-date ones from server. + /// If you want to set new player properties, do it once rejoined. + /// + /// False, if there is no known room or game server to return to. Then, this client does not attempt the ReconnectAndRejoin. + public static bool ReconnectAndRejoin() + { + if (NetworkingClient.LoadBalancingPeer.PeerState != PeerStateValue.Disconnected) + { + Debug.LogWarning("ReconnectAndRejoin() failed. Can only connect while in state 'Disconnected'. Current state: " + NetworkingClient.LoadBalancingPeer.PeerState); + return false; + } + if (OfflineMode) + { + OfflineMode = false; // Cleanup offline mode + Debug.LogWarning("ReconnectAndRejoin() disabled the offline mode. No longer offline."); + } + + if (!IsMessageQueueRunning) + { + IsMessageQueueRunning = true; + Debug.LogWarning("ReconnectAndRejoin() enabled IsMessageQueueRunning. Needs to be able to dispatch incoming messages."); + } + + return NetworkingClient.ReconnectAndRejoin(); + } + + + /// Leave the current room and return to the Master Server where you can join or create rooms (see remarks). + /// + /// This will clean up all (network) GameObjects with a PhotonView, unless you changed autoCleanUp to false. + /// Returns to the Master Server. + /// + /// In OfflineMode, the local "fake" room gets cleaned up and OnLeftRoom gets called immediately. + /// + /// In a room with playerTTL < 0, LeaveRoom just turns a client inactive. The player stays in the room's player list + /// and can return later on. Setting becomeInactive to false deliberately, means to "abandon" the room, despite the + /// playerTTL allowing you to come back. + /// + /// In a room with playerTTL == 0, become inactive has no effect (clients are removed from the room right away). + /// + /// If this client becomes inactive in a room with playerTTL < 0. Defaults to true. + public static bool LeaveRoom(bool becomeInactive = true) + { + if (OfflineMode) + { + offlineModeRoom = null; + NetworkingClient.MatchMakingCallbackTargets.OnLeftRoom(); + NetworkingClient.ConnectionCallbackTargets.OnConnectedToMaster(); + } + else + { + if (CurrentRoom == null) + { + Debug.LogWarning("PhotonNetwork.CurrentRoom is null. You don't have to call LeaveRoom() when you're not in one. State: " + PhotonNetwork.NetworkClientState); + } + else + { + becomeInactive = becomeInactive && CurrentRoom.PlayerTtl != 0; // in a room with playerTTL == 0, the operation "leave" will never turn a client inactive + } + return NetworkingClient.OpLeaveRoom(becomeInactive); + } + + return true; + } + + + + /// + /// Internally used helper-method to setup an offline room, the numbers for actor and master-client and to do the callbacks. + /// + private static void EnterOfflineRoom(string roomName, RoomOptions roomOptions, bool createdRoom) + { + offlineModeRoom = new Room(roomName, roomOptions, true); + NetworkingClient.ChangeLocalID(1); + offlineModeRoom.masterClientId = 1; + offlineModeRoom.AddPlayer(PhotonNetwork.LocalPlayer); + offlineModeRoom.LoadBalancingClient = PhotonNetwork.NetworkingClient; + PhotonNetwork.NetworkingClient.CurrentRoom = offlineModeRoom; + + if (createdRoom) + { + NetworkingClient.MatchMakingCallbackTargets.OnCreatedRoom(); + } + + NetworkingClient.MatchMakingCallbackTargets.OnJoinedRoom(); + } + + /// On MasterServer this joins the default lobby which list rooms currently in use. + /// + /// The room list is sent and refreshed by the server using . + /// + /// Per room you should check if it's full or not before joining. Photon also lists rooms that are + /// full, unless you close and hide them (room.open = false and room.visible = false). + /// + /// In best case, you make your clients join random games, as described here: + /// https://doc.photonengine.com/en-us/pun/v2/lobby-and-matchmaking/matchmaking-and-lobby + /// + /// + /// You can show your current players and room count without joining a lobby (but you must + /// be on the master server). Use: CountOfPlayers, CountOfPlayersOnMaster, CountOfPlayersInRooms and + /// CountOfRooms. + /// + /// You can use more than one lobby to keep the room lists shorter. See JoinLobby(TypedLobby lobby). + /// When creating new rooms, they will be "attached" to the currently used lobby or the default lobby. + /// + /// You can use JoinRandomRoom without being in a lobby! + /// + public static bool JoinLobby() + { + return JoinLobby(null); + } + + /// On a Master Server you can join a lobby to get lists of available rooms. + /// + /// The room list is sent and refreshed by the server using . + /// + /// Any client can "make up" any lobby on the fly. Splitting rooms into multiple lobbies will + /// keep each list shorter. However, having too many lists might ruin the matchmaking experience. + /// + /// In best case, you create a limited number of lobbies. For example, create a lobby per + /// game-mode: "koth" for king of the hill and "ffa" for free for all, etc. + /// + /// There is no listing of lobbies at the moment. + /// + /// Sql-typed lobbies offer a different filtering model for random matchmaking. This might be more + /// suited for skillbased-games. However, you will also need to follow the conventions for naming + /// filterable properties in sql-lobbies! Both is explained in the matchmaking doc linked below. + /// + /// In best case, you make your clients join random games, as described here: + /// https://doc.photonengine.com/en-us/realtime/current/reference/matchmaking-and-lobby + /// + /// + /// Per room you should check if it's full or not before joining. Photon does list rooms that are + /// full, unless you close and hide them (room.open = false and room.visible = false). + /// + /// You can show your games current players and room count without joining a lobby (but you must + /// be on the master server). Use: CountOfPlayers, CountOfPlayersOnMaster, CountOfPlayersInRooms and + /// CountOfRooms. + /// + /// When creating new rooms, they will be "attached" to the currently used lobby or the default lobby. + /// + /// You can use JoinRandomRoom without being in a lobby! + /// + /// A typed lobby to join (must have name and type). + public static bool JoinLobby(TypedLobby typedLobby) + { + if (PhotonNetwork.IsConnected && PhotonNetwork.Server == ServerConnection.MasterServer) + { + return NetworkingClient.OpJoinLobby(typedLobby); + } + + return false; + } + + /// Leave a lobby to stop getting updates about available rooms. + /// + /// This does not reset PhotonNetwork.lobby! This allows you to join this particular lobby later + /// easily. + /// + /// The values CountOfPlayers, CountOfPlayersOnMaster, CountOfPlayersInRooms and CountOfRooms + /// are received even without being in a lobby. + /// + /// You can use JoinRandomRoom without being in a lobby. + /// + public static bool LeaveLobby() + { + if (PhotonNetwork.IsConnected && PhotonNetwork.Server == ServerConnection.MasterServer) + { + return NetworkingClient.OpLeaveLobby(); + } + + return false; + } + + /// + /// Requests the rooms and online status for a list of friends and saves the result in PhotonNetwork.Friends. + /// + /// + /// Works only on Master Server to find the rooms played by a selected list of users. + /// + /// The result will be stored in PhotonNetwork.Friends when available. + /// That list is initialized on first use of OpFindFriends (before that, it is null). + /// To refresh the list, call FindFriends again (in 5 seconds or 10 or 20). + /// + /// Users identify themselves by setting a unique userId in the PhotonNetwork.AuthValues. + /// See remarks of AuthenticationValues for info about how this is set and used. + /// + /// The list of friends must be fetched from some other source (not provided by Photon). + /// + /// + /// Internal: + /// The server response includes 2 arrays of info (each index matching a friend from the request): + /// ParameterCode.FindFriendsResponseOnlineList = bool[] of online states + /// ParameterCode.FindFriendsResponseRoomIdList = string[] of room names (empty string if not in a room) + /// + /// Array of friend (make sure to use unique NickName or AuthValues). + /// If the operation could be sent (requires connection, only one request is allowed at any time). Always false in offline mode. + public static bool FindFriends(string[] friendsToFind) + { + if (NetworkingClient == null || offlineMode) + { + return false; + } + + return NetworkingClient.OpFindFriends(friendsToFind); + } + + /// Fetches a custom list of games from the server, matching a (non-empty) SQL-like filter. Triggers OnRoomListUpdate callback. + /// + /// Operation is only available for lobbies of type SqlLobby and the filter can not be empty. + /// It will check those conditions and fail locally, returning false. + /// This is an async request. + /// + /// Note: You don't have to join a lobby to query it. Rooms need to be "attached" to a lobby, which can be done + /// via the typedLobby parameter in CreateRoom, JoinOrCreateRoom, etc.. + /// + /// When done, OnRoomListUpdate gets called. + /// + /// + /// The lobby to query. Has to be of type SqlLobby. + /// The sql query statement. + /// If the operation could be sent (has to be connected). + public static bool GetCustomRoomList(TypedLobby typedLobby, string sqlLobbyFilter) + { + return NetworkingClient.OpGetGameList(typedLobby, sqlLobbyFilter); + } + + /// + /// Sets this (local) player's properties and synchronizes them to the other players (don't modify them directly). + /// + /// + /// While in a room, your properties are synced with the other players. + /// CreateRoom, JoinRoom and JoinRandomRoom will all apply your player's custom properties when you enter the room. + /// The whole Hashtable will get sent. Minimize the traffic by setting only updated key/values. + /// + /// If the Hashtable is null, the custom properties will be cleared. + /// Custom properties are never cleared automatically, so they carry over to the next room, if you don't change them. + /// + /// Don't set properties by modifying PhotonNetwork.player.customProperties! + /// + /// Only string-typed keys will be used from this hashtable. If null, custom properties are all deleted. + /// + /// False if customProperties is empty or have zero string keys. + /// True in offline mode. + /// True if not in a room and this is the local player + /// (use this to cache properties to be sent when joining a room). + /// Otherwise, returns if this operation could be sent to the server. + /// + public static bool SetPlayerCustomProperties(Hashtable customProperties) + { + if (customProperties == null) + { + customProperties = new Hashtable(); + foreach (object k in LocalPlayer.CustomProperties.Keys) + { + customProperties[(string)k] = null; + } + } + + return LocalPlayer.SetCustomProperties(customProperties); + } + + /// + /// Locally removes Custom Properties of "this" player. Important: This does not synchronize the change! Useful when you switch rooms. + /// + /// + /// Use this method with care. It can create inconsistencies of state between players! + /// This only changes the player.customProperties locally. This can be useful to clear your + /// Custom Properties between games (let's say they store which turn you made, kills, etc). + /// + /// SetPlayerCustomProperties() syncs and can be used to set values to null while in a room. + /// That can be considered "removed" while in a room. + /// + /// If customPropertiesToDelete is null or has 0 entries, all Custom Properties are deleted (replaced with a new Hashtable). + /// If you specify keys to remove, those will be removed from the Hashtable but other keys are unaffected. + /// + /// List of Custom Property keys to remove. See remarks. + public static void RemovePlayerCustomProperties(string[] customPropertiesToDelete) + { + // TODO: decide if this option makes sense + + if (customPropertiesToDelete == null || customPropertiesToDelete.Length == 0 || LocalPlayer.CustomProperties == null) + { + LocalPlayer.CustomProperties = new Hashtable(); + return; + } + + // if a specific list of props should be deleted, we do that here + for (int i = 0; i < customPropertiesToDelete.Length; i++) + { + string key = customPropertiesToDelete[i]; + if (LocalPlayer.CustomProperties.ContainsKey(key)) + { + LocalPlayer.CustomProperties.Remove(key); + } + } + } + + /// + /// Sends fully customizable events in a room. Events consist of at least an EventCode (0..199) and can have content. + /// + /// + /// To receive events, implement IOnEventCallback in any class and register it via PhotonNetwork.AddCallbackTarget. + /// See . + /// + /// The eventContent is optional. If set, eventContent must be a "serializable type", something that + /// the client can turn into a byte[] basically. Most basic types and arrays of them are supported, including + /// Unity's Vector2, Vector3, Quaternion. Transforms are not supported. + /// + /// You can turn a class into a "serializable type" by following the example in CustomTypes.cs. + /// + /// The RaiseEventOptions have some (less intuitive) combination rules: + /// If you set targetActors (an array of Player.ID values), the receivers parameter gets ignored. + /// When using event caching, the targetActors, receivers and interestGroup can't be used. Buffered events go to all. + /// When using cachingOption removeFromRoomCache, the eventCode and content are actually not sent but used as filter. + /// + /// A byte identifying the type of event. You might want to use a code per action or to signal which content can be expected. Allowed: 0..199. + /// Some serializable object like string, byte, integer, float (etc) and arrays of those. Hashtables with byte keys are good to send variable content. + /// Allows more complex usage of events. If null, RaiseEventOptions.Default will be used (which is fine). + /// Send options for reliable, encryption etc.. + /// False if event could not be sent. + public static bool RaiseEvent(byte eventCode, object eventContent, RaiseEventOptions raiseEventOptions, SendOptions sendOptions) + { + if (offlineMode) + { + if (raiseEventOptions.Receivers == ReceiverGroup.Others) + { + return true; + } + + EventData evData = new EventData { Code = eventCode }; // creates the equivalent of a received event + evData.Parameters[ParameterCode.Data] = eventContent; + evData.Parameters[ParameterCode.ActorNr] = 1; + + NetworkingClient.OnEvent(evData); + return true; + } + + if (!InRoom || eventCode >= 200) + { + Debug.LogWarning("RaiseEvent(" + eventCode + ") failed. Your event is not being sent! Check if your are in a Room and the eventCode must be less than 200 (0..199)."); + return false; + } + + return NetworkingClient.OpRaiseEvent(eventCode, eventContent, raiseEventOptions, sendOptions); + } + + /// Sends PUN-specific events to the server, unless in offlineMode. + /// A byte identifying the type of event. + /// Serializable object or container. + /// Allows more complex usage of events. If null, RaiseEventOptions. + /// Send options for reliable, encryption etc.. + /// False if event could not be sent + private static bool RaiseEventInternal(byte eventCode, object eventContent, RaiseEventOptions raiseEventOptions, SendOptions sendOptions) + { + if (offlineMode) + { + return false; + } + + if (!InRoom) + { + Debug.LogWarning("RaiseEvent(" + eventCode + ") failed. Your event is not being sent! Check if your are in a Room"); + return false; + } + + return NetworkingClient.OpRaiseEvent(eventCode, eventContent, raiseEventOptions, sendOptions); + } + + + /// + /// Allocates a viewID for the current/local player. + /// + /// True if a viewId was assigned. False if the PhotonView already had a non-zero viewID. + public static bool AllocateViewID(PhotonView view) + { + if (view.ViewID != 0) + { + Debug.LogError("AllocateViewID() can't be used for PhotonViews that already have a viewID. This view is: " + view.ToString()); + return false; + } + + int manualId = AllocateViewID(LocalPlayer.ActorNumber); + view.ViewID = manualId; + return true; + } + + [Obsolete("Renamed. Use AllocateRoomViewID instead")] + public static bool AllocateSceneViewID(PhotonView view) + { + return AllocateRoomViewID(view); + } + + /// + /// Enables the Master Client to allocate a viewID for room objects. + /// + /// True if a viewId was assigned. False if the PhotonView already had a non-zero viewID or if this client is not the Master Client. + public static bool AllocateRoomViewID(PhotonView view) + { + if (!PhotonNetwork.IsMasterClient) + { + Debug.LogError("Only the Master Client can AllocateRoomViewID(). Check PhotonNetwork.IsMasterClient!"); + return false; + } + + if (view.ViewID != 0) + { + Debug.LogError("AllocateRoomViewID() can't be used for PhotonViews that already have a viewID. This view is: " + view.ToString()); + return false; + } + + int manualId = AllocateViewID(0); + view.ViewID = manualId; + return true; + } + + /// Allocates a viewID for the current/local player or the room. + /// Use true, to allocate a room viewID and false to allocate a viewID for the local player. + /// Returns a viewID (combined owner and sequential number) that can be assigned as PhotonView.ViewID. + public static int AllocateViewID(bool roomObject) + { + if (roomObject && !LocalPlayer.IsMasterClient) + { + Debug.LogError("Only a Master Client can AllocateViewID() for room objects. This client/player is not a Master Client. Returning an invalid viewID: -1."); + return 0; + } + + int ownerActorNumber = roomObject ? 0 : LocalPlayer.ActorNumber; + return AllocateViewID(ownerActorNumber); + } + + /// Allocates a viewID for the current/local player or the room. + /// ActorNumber to allocate a viewID for. + /// Returns a viewID (combined owner and sequential number) that can be assigned as PhotonView.ViewID. + public static int AllocateViewID(int ownerId) + { + if (ownerId == 0) + { + // we look up a fresh subId for the owner "room" (mind the "sub" in subId) + int newSubId = lastUsedViewSubIdStatic; + int newViewId; + int ownerIdOffset = ownerId * MAX_VIEW_IDS; + for (int i = 1; i < MAX_VIEW_IDS; i++) + { + newSubId = (newSubId + 1) % MAX_VIEW_IDS; + if (newSubId == 0) + { + continue; // avoid using subID 0 + } + + newViewId = newSubId + ownerIdOffset; + if (!photonViewList.ContainsKey(newViewId)) + { + lastUsedViewSubIdStatic = newSubId; + return newViewId; + } + } + + // this is the error case: we didn't find any (!) free subId for this user + throw new Exception(string.Format("AllocateViewID() failed. The room (user {0}) is out of 'room' viewIDs. It seems all available are in use.", ownerId)); + } + else + { + // we look up a fresh SUBid for the owner + int newSubId = lastUsedViewSubId; + int newViewId; + int ownerIdOffset = ownerId * MAX_VIEW_IDS; + for (int i = 1; i <= MAX_VIEW_IDS; i++) + { + newSubId = (newSubId + 1) % MAX_VIEW_IDS; + if (newSubId == 0) + { + continue; // avoid using subID 0 + } + + newViewId = newSubId + ownerIdOffset; + if (!photonViewList.ContainsKey(newViewId)) + { + lastUsedViewSubId = newSubId; + return newViewId; + } + } + + throw new Exception(string.Format("AllocateViewID() failed. User {0} is out of viewIDs. It seems all available are in use.", ownerId)); + } + } + + + public static GameObject Instantiate(string prefabName, Vector3 position, Quaternion rotation, byte group = 0, object[] data = null) + { + if (CurrentRoom == null) + { + Debug.LogError("Can not Instantiate before the client joined/created a room. State: "+PhotonNetwork.NetworkClientState); + return null; + } + + Pun.InstantiateParameters netParams = new InstantiateParameters(prefabName, position, rotation, group, data, currentLevelPrefix, null, LocalPlayer, ServerTimestamp); + return NetworkInstantiate(netParams, false); + } + + [Obsolete("Renamed. Use InstantiateRoomObject instead")] + public static GameObject InstantiateSceneObject(string prefabName, Vector3 position, Quaternion rotation, byte group = 0, object[] data = null) + { + return InstantiateRoomObject(prefabName, position, rotation, group, data); + } + + public static GameObject InstantiateRoomObject(string prefabName, Vector3 position, Quaternion rotation, byte group = 0, object[] data = null) + { + if (CurrentRoom == null) + { + Debug.LogError("Can not Instantiate before the client joined/created a room."); + return null; + } + + if (LocalPlayer.IsMasterClient) + { + Pun.InstantiateParameters netParams = new InstantiateParameters(prefabName, position, rotation, group, data, currentLevelPrefix, null, LocalPlayer, ServerTimestamp); + return NetworkInstantiate(netParams, true); + } + + return null; + } + + private static GameObject NetworkInstantiate(Hashtable networkEvent, Player creator) + { + + // some values always present: + string prefabName = (string)networkEvent[keyByteZero]; + int serverTime = (int)networkEvent[keyByteSix]; + int instantiationId = (int)networkEvent[keyByteSeven]; + + Vector3 position; + if (networkEvent.ContainsKey(keyByteOne)) + { + position = (Vector3)networkEvent[keyByteOne]; + } + else + { + position = Vector3.zero; + } + + Quaternion rotation = Quaternion.identity; + if (networkEvent.ContainsKey(keyByteTwo)) + { + rotation = (Quaternion)networkEvent[keyByteTwo]; + } + + byte group = 0; + if (networkEvent.ContainsKey(keyByteThree)) + { + group = (byte)networkEvent[keyByteThree]; + } + + byte objLevelPrefix = 0; + if (networkEvent.ContainsKey(keyByteEight)) + { + objLevelPrefix = (byte)networkEvent[keyByteEight]; + } + + int[] viewsIDs; + if (networkEvent.ContainsKey(keyByteFour)) + { + viewsIDs = (int[])networkEvent[keyByteFour]; + } + else + { + viewsIDs = new int[1] { instantiationId }; + } + + object[] incomingInstantiationData; + if (networkEvent.ContainsKey(keyByteFive)) + { + incomingInstantiationData = (object[])networkEvent[keyByteFive]; + } + else + { + incomingInstantiationData = null; + } + + // SetReceiving filtering + if (group != 0 && !allowedReceivingGroups.Contains(group)) + { + return null; // Ignore group + } + + + Pun.InstantiateParameters netParams = new InstantiateParameters(prefabName, position, rotation, group, incomingInstantiationData, objLevelPrefix, viewsIDs, creator, serverTime); + return NetworkInstantiate(netParams, false, true); + } + + + private static readonly HashSet PrefabsWithoutMagicCallback = new HashSet(); + + private static GameObject NetworkInstantiate(Pun.InstantiateParameters parameters, bool roomObject = false, bool instantiateEvent = false) + { + //Instantiate(name, pos, rot) + //pv[] GetPhotonViewsInChildren() + //if (event==null) init send-params + //Setup of PVs and callback + //if (event == null) SendInstantiate(name, pos, rot, etc...) + + GameObject go = null; + PhotonView[] photonViews; + + go = prefabPool.Instantiate(parameters.prefabName, parameters.position, parameters.rotation); + + + if (go == null) + { + Debug.LogError("Failed to network-Instantiate: " + parameters.prefabName); + return null; + } + + if (go.activeSelf) + { + Debug.LogWarning("PrefabPool.Instantiate() should return an inactive GameObject. " + prefabPool.GetType().Name + " returned an active object. PrefabId: " + parameters.prefabName); + } + + + photonViews = go.GetPhotonViewsInChildren(); + + + if (photonViews.Length == 0) + { + Debug.LogError("PhotonNetwork.Instantiate() can only instantiate objects with a PhotonView component. This prefab does not have one: " + parameters.prefabName); + return null; + } + + bool localInstantiate = !instantiateEvent && LocalPlayer.Equals(parameters.creator); + if (localInstantiate) + { + // init viewIDs array, so it can be filled (below), before it gets sent + parameters.viewIDs = new int[photonViews.Length]; + } + + for (int i = 0; i < photonViews.Length; i++) + { + if (localInstantiate) + { + // when this client instantiates a GO, it has to allocate viewIDs accordingly. + // ROOM objects are created as actorNumber 0 (no matter which number this player has). + parameters.viewIDs[i] = (roomObject) ? AllocateViewID(0) : AllocateViewID(parameters.creator.ActorNumber); + } + + var view = photonViews[i]; + + view.ViewID = 0; + view.sceneViewId = 0; + view.isRuntimeInstantiated = true; + view.lastOnSerializeDataSent = null; + view.lastOnSerializeDataReceived = null; + view.Prefix = parameters.objLevelPrefix; + view.InstantiationId = parameters.viewIDs[0]; + view.InstantiationData = parameters.data; + view.ViewID = parameters.viewIDs[i]; // with didAwake true and viewID == 0, this will also register the view + + view.Group = parameters.group; + } + + if (localInstantiate) + { + // send instantiate network event + SendInstantiate(parameters, roomObject); + } + + go.SetActive(true); + + // if IPunInstantiateMagicCallback is implemented on any script of the instantiated GO, let's call it directly: + if (!PrefabsWithoutMagicCallback.Contains(parameters.prefabName)) + { + var list = go.GetComponents(); + if (list.Length > 0) + { + PhotonMessageInfo pmi = new PhotonMessageInfo(parameters.creator, parameters.timestamp, photonViews[0]); + foreach (IPunInstantiateMagicCallback callbackComponent in list) + { + callbackComponent.OnPhotonInstantiate(pmi); + } + } + else + { + PrefabsWithoutMagicCallback.Add(parameters.prefabName); + } + } + + return go; + } + + + private static readonly Hashtable SendInstantiateEvHashtable = new Hashtable(); // SendInstantiate reuses this to reduce GC + private static readonly RaiseEventOptions SendInstantiateRaiseEventOptions = new RaiseEventOptions(); // SendInstantiate reuses this to reduce GC + + internal static bool SendInstantiate(Pun.InstantiateParameters parameters, bool roomObject = false) + { + // first viewID is now also the gameobject's instantiateId + int instantiateId = parameters.viewIDs[0]; // LIMITS PHOTONVIEWS&PLAYERS + + SendInstantiateEvHashtable.Clear(); // SendInstantiate reuses this Hashtable to reduce GC + + SendInstantiateEvHashtable[keyByteZero] = parameters.prefabName; + + if (parameters.position != Vector3.zero) + { + SendInstantiateEvHashtable[keyByteOne] = parameters.position; + } + + if (parameters.rotation != Quaternion.identity) + { + SendInstantiateEvHashtable[keyByteTwo] = parameters.rotation; + } + + if (parameters.group != 0) + { + SendInstantiateEvHashtable[keyByteThree] = parameters.group; + } + + // send the list of viewIDs only if there are more than one. else the instantiateId is the viewID + if (parameters.viewIDs.Length > 1) + { + SendInstantiateEvHashtable[keyByteFour] = parameters.viewIDs; // LIMITS PHOTONVIEWS&PLAYERS + } + + if (parameters.data != null) + { + SendInstantiateEvHashtable[keyByteFive] = parameters.data; + } + + if (currentLevelPrefix > 0) + { + SendInstantiateEvHashtable[keyByteEight] = currentLevelPrefix; // photonview's / object's level prefix + } + + SendInstantiateEvHashtable[keyByteSix] = PhotonNetwork.ServerTimestamp; + SendInstantiateEvHashtable[keyByteSeven] = instantiateId; + + + SendInstantiateRaiseEventOptions.CachingOption = (roomObject) ? EventCaching.AddToRoomCacheGlobal : EventCaching.AddToRoomCache; + + return PhotonNetwork.RaiseEventInternal(PunEvent.Instantiation, SendInstantiateEvHashtable, SendInstantiateRaiseEventOptions, SendOptions.SendReliable); + } + + + /// + /// Network-Destroy the GameObject associated with the PhotonView, unless the PhotonView is static or not under this client's control. + /// + /// + /// Destroying a networked GameObject while in a Room includes: + /// - Removal of the Instantiate call from the server's room buffer. + /// - Removing RPCs buffered for PhotonViews that got created indirectly with the PhotonNetwork.Instantiate call. + /// - Sending a message to other clients to remove the GameObject also (affected by network lag). + /// + /// Usually, when you leave a room, the GOs get destroyed automatically. + /// If you have to destroy a GO while not in a room, the Destroy is only done locally. + /// + /// Destroying networked objects works only if they got created with PhotonNetwork.Instantiate(). + /// Objects loaded with a scene are ignored, no matter if they have PhotonView components. + /// + /// The GameObject must be under this client's control: + /// - Instantiated and owned by this client. + /// - Instantiated objects of players who left the room are controlled by the Master Client. + /// - Room-owned game objects are controlled by the Master Client. + /// - GameObject can be destroyed while client is not in a room. + /// + /// Nothing. Check error debug log for any issues. + public static void Destroy(PhotonView targetView) + { + if (targetView != null) + { + RemoveInstantiatedGO(targetView.gameObject, !InRoom); + } + else + { + Debug.LogError("Destroy(targetPhotonView) failed, cause targetPhotonView is null."); + } + } + + /// + /// Network-Destroy the GameObject, unless it is static or not under this client's control. + /// + /// + /// Destroying a networked GameObject includes: + /// - Removal of the Instantiate call from the server's room buffer. + /// - Removing RPCs buffered for PhotonViews that got created indirectly with the PhotonNetwork.Instantiate call. + /// - Sending a message to other clients to remove the GameObject also (affected by network lag). + /// + /// Usually, when you leave a room, the GOs get destroyed automatically. + /// If you have to destroy a GO while not in a room, the Destroy is only done locally. + /// + /// Destroying networked objects works only if they got created with PhotonNetwork.Instantiate(). + /// Objects loaded with a scene are ignored, no matter if they have PhotonView components. + /// + /// The GameObject must be under this client's control: + /// - Instantiated and owned by this client. + /// - Instantiated objects of players who left the room are controlled by the Master Client. + /// - Room-owned game objects are controlled by the Master Client. + /// - GameObject can be destroyed while client is not in a room. + /// + /// Nothing. Check error debug log for any issues. + public static void Destroy(GameObject targetGo) + { + RemoveInstantiatedGO(targetGo, !InRoom); + } + + /// + /// Network-Destroy all GameObjects, PhotonViews and their RPCs of targetPlayer. Can only be called on local player (for "self") or Master Client (for anyone). + /// + /// + /// Destroying a networked GameObject includes: + /// - Removal of the Instantiate call from the server's room buffer. + /// - Removing RPCs buffered for PhotonViews that got created indirectly with the PhotonNetwork.Instantiate call. + /// - Sending a message to other clients to remove the GameObject also (affected by network lag). + /// + /// Destroying networked objects works only if they got created with PhotonNetwork.Instantiate(). + /// Objects loaded with a scene are ignored, no matter if they have PhotonView components. + /// + /// Nothing. Check error debug log for any issues. + public static void DestroyPlayerObjects(Player targetPlayer) + { + if (targetPlayer == null) + { + Debug.LogError("DestroyPlayerObjects() failed, cause parameter 'targetPlayer' was null."); + } + + DestroyPlayerObjects(targetPlayer.ActorNumber); + } + + /// + /// Network-Destroy all GameObjects, PhotonViews and their RPCs of this player (by ID). Can only be called on local player (for "self") or Master Client (for anyone). + /// + /// + /// Destroying a networked GameObject includes: + /// - Removal of the Instantiate call from the server's room buffer. + /// - Removing RPCs buffered for PhotonViews that got created indirectly with the PhotonNetwork.Instantiate call. + /// - Sending a message to other clients to remove the GameObject also (affected by network lag). + /// + /// Destroying networked objects works only if they got created with PhotonNetwork.Instantiate(). + /// Objects loaded with a scene are ignored, no matter if they have PhotonView components. + /// + /// Nothing. Check error debug log for any issues. + public static void DestroyPlayerObjects(int targetPlayerId) + { + if (!VerifyCanUseNetwork()) + { + return; + } + if (LocalPlayer.IsMasterClient || targetPlayerId == LocalPlayer.ActorNumber) + { + DestroyPlayerObjects(targetPlayerId, false); + } + else + { + Debug.LogError("DestroyPlayerObjects() failed, cause players can only destroy their own GameObjects. A Master Client can destroy anyone's. This is master: " + PhotonNetwork.IsMasterClient); + } + } + + /// + /// Network-Destroy all GameObjects, PhotonViews and their RPCs in the room. Removes anything buffered from the server. Can only be called by Master Client (for anyone). + /// + /// + /// Can only be called by Master Client (for anyone). + /// Unlike the Destroy methods, this will remove anything from the server's room buffer. If your game + /// buffers anything beyond Instantiate and RPC calls, that will be cleaned as well from server. + /// + /// Destroying all includes: + /// - Remove anything from the server's room buffer (Instantiate, RPCs, anything buffered). + /// - Sending a message to other clients to destroy everything locally, too (affected by network lag). + /// + /// Destroying networked objects works only if they got created with PhotonNetwork.Instantiate(). + /// Objects loaded with a scene are ignored, no matter if they have PhotonView components. + /// + /// Nothing. Check error debug log for any issues. + public static void DestroyAll() + { + if (IsMasterClient) + { + DestroyAll(false); + } + else + { + Debug.LogError("Couldn't call DestroyAll() as only the master client is allowed to call this."); + } + } + + /// + /// Remove all buffered RPCs from server that were sent by targetPlayer. Can only be called on local player (for "self") or Master Client (for anyone). + /// + /// + /// This method requires either: + /// - This is the targetPlayer's client. + /// - This client is the Master Client (can remove any Player's RPCs). + /// + /// If the targetPlayer calls RPCs at the same time that this is called, + /// network lag will determine if those get buffered or cleared like the rest. + /// + /// This player's buffered RPCs get removed from server buffer. + public static void RemoveRPCs(Player targetPlayer) + { + if (!VerifyCanUseNetwork()) + { + return; + } + + if (!targetPlayer.IsLocal && !IsMasterClient) + { + Debug.LogError("Error; Only the MasterClient can call RemoveRPCs for other players."); + return; + } + + OpCleanActorRpcBuffer(targetPlayer.ActorNumber); + } + + /// + /// Remove all buffered RPCs from server that were sent via targetPhotonView. The Master Client and the owner of the targetPhotonView may call this. + /// + /// + /// This method requires either: + /// - The targetPhotonView is owned by this client (Instantiated by it). + /// - This client is the Master Client (can remove any PhotonView's RPCs). + /// + /// RPCs buffered for this PhotonView get removed from server buffer. + public static void RemoveRPCs(PhotonView targetPhotonView) + { + if (!VerifyCanUseNetwork()) + { + return; + } + + CleanRpcBufferIfMine(targetPhotonView); + } + + + /// + /// Internal to send an RPC on given PhotonView. Do not call this directly but use: PhotonView.RPC! + /// + internal static void RPC(PhotonView view, string methodName, RpcTarget target, bool encrypt, params object[] parameters) + { + if (string.IsNullOrEmpty(methodName)) + { + Debug.LogError("RPC method name cannot be null or empty."); + return; + } + + if (!VerifyCanUseNetwork()) + { + return; + } + + if (CurrentRoom == null) + { + Debug.LogWarning("RPCs can only be sent in rooms. Call of \"" + methodName + "\" gets executed locally only, if at all."); + return; + } + + if (NetworkingClient != null) + { + RPC(view, methodName, target, null, encrypt, parameters); + } + else + { + Debug.LogWarning("Could not execute RPC " + methodName + ". Possible scene loading in progress?"); + } + } + + /// + /// Internal to send an RPC on given PhotonView. Do not call this directly but use: PhotonView.RPC! + /// + internal static void RPC(PhotonView view, string methodName, Player targetPlayer, bool encrypt, params object[] parameters) + { + if (!VerifyCanUseNetwork()) + { + return; + } + + if (CurrentRoom == null) + { + Debug.LogWarning("RPCs can only be sent in rooms. Call of \"" + methodName + "\" gets executed locally only, if at all."); + return; + } + + if (LocalPlayer == null) + { + Debug.LogError("RPC can't be sent to target Player being null! Did not send \"" + methodName + "\" call."); + } + + if (NetworkingClient != null) + { + RPC(view, methodName, RpcTarget.Others, targetPlayer, encrypt, parameters); + } + else + { + Debug.LogWarning("Could not execute RPC " + methodName + ". Possible scene loading in progress?"); + } + } + + + /// Finds the GameObjects with Components of a specific type (using FindObjectsOfType). + /// Type must be a Component + /// HashSet with GameObjects that have a specific type of Component. + public static HashSet FindGameObjectsWithComponent(Type type) + { + HashSet objectsWithComponent = new HashSet(); + + Component[] targetComponents = (Component[]) GameObject.FindObjectsOfType(type); + for (int index = 0; index < targetComponents.Length; index++) + { + if (targetComponents[index] != null) + { + objectsWithComponent.Add(targetComponents[index].gameObject); + } + } + + return objectsWithComponent; + } + + + /// Enable/disable receiving events from a given Interest Group. + /// + /// A client can tell the server which Interest Groups it's interested in. + /// The server will only forward events for those Interest Groups to that client (saving bandwidth and performance). + /// + /// See: https://doc.photonengine.com/en-us/pun/v2/gameplay/interestgroups + /// + /// See: https://doc.photonengine.com/en-us/pun/v2/demos-and-tutorials/package-demos/culling-demo + /// + /// The interest group to affect. + /// Sets if receiving from group to enabled (or not). + public static void SetInterestGroups(byte group, bool enabled) + { + if (!VerifyCanUseNetwork()) + { + return; + } + + if (enabled) + { + byte[] groups = new byte[1] { (byte)group }; + SetInterestGroups(null, groups); + } + else + { + byte[] groups = new byte[1] { (byte)group }; + SetInterestGroups(groups, null); + } + } + + + /// This method wraps loading a level asynchronously and pausing network messages during the process. + /// + /// While loading levels in a networked game, it makes sense to not dispatch messages received by other players. + /// LoadLevel takes care of that by setting PhotonNetwork.IsMessageQueueRunning = false until the scene loaded. + /// + /// To sync the loaded level in a room, set PhotonNetwork.AutomaticallySyncScene to true. + /// The Master Client of a room will then sync the loaded level with every other player in the room. + /// Note that this works only for a single active scene and that reloading the scene is not supported. + /// The Master Client will actually reload a scene but other clients won't. + /// + /// You should make sure you don't fire RPCs before you load another scene (which doesn't contain + /// the same GameObjects and PhotonViews). + /// + /// LoadLevel uses SceneManager.LoadSceneAsync(). + /// + /// Check the progress of the LevelLoading using PhotonNetwork.LevelLoadingProgress. + /// + /// Calling LoadLevel before the previous scene finished loading is not recommended. + /// If AutomaticallySyncScene is enabled, PUN cancels the previous load (and prevent that from + /// becoming the active scene). If AutomaticallySyncScene is off, the previous scene loading can finish. + /// In both cases, a new scene is loaded locally. + /// + /// + /// Build-index number of the level to load. When using level numbers, make sure they are identical on all clients. + /// + public static void LoadLevel(int levelNumber) + { + if (PhotonHandler.AppQuits) + { + return; + } + + if (PhotonNetwork.AutomaticallySyncScene) + { + SetLevelInPropsIfSynced(levelNumber); + } + + PhotonNetwork.IsMessageQueueRunning = false; + loadingLevelAndPausedNetwork = true; + _AsyncLevelLoadingOperation = SceneManager.LoadSceneAsync(levelNumber,LoadSceneMode.Single); + } + + /// This method wraps loading a level asynchronously and pausing network messages during the process. + /// + /// While loading levels in a networked game, it makes sense to not dispatch messages received by other players. + /// LoadLevel takes care of that by setting PhotonNetwork.IsMessageQueueRunning = false until the scene loaded. + /// + /// To sync the loaded level in a room, set PhotonNetwork.AutomaticallySyncScene to true. + /// The Master Client of a room will then sync the loaded level with every other player in the room. + /// Note that this works only for a single active scene and that reloading the scene is not supported. + /// The Master Client will actually reload a scene but other clients won't. + /// + /// You should make sure you don't fire RPCs before you load another scene (which doesn't contain + /// the same GameObjects and PhotonViews). + /// + /// LoadLevel uses SceneManager.LoadSceneAsync(). + /// + /// Check the progress of the LevelLoading using PhotonNetwork.LevelLoadingProgress. + /// + /// Calling LoadLevel before the previous scene finished loading is not recommended. + /// If AutomaticallySyncScene is enabled, PUN cancels the previous load (and prevent that from + /// becoming the active scene). If AutomaticallySyncScene is off, the previous scene loading can finish. + /// In both cases, a new scene is loaded locally. + /// + /// + /// Name of the level to load. Make sure it's available to all clients in the same room. + /// + public static void LoadLevel(string levelName) + { + if (PhotonHandler.AppQuits) + { + return; + } + + if (PhotonNetwork.AutomaticallySyncScene) + { + SetLevelInPropsIfSynced(levelName); + } + + PhotonNetwork.IsMessageQueueRunning = false; + loadingLevelAndPausedNetwork = true; + _AsyncLevelLoadingOperation = SceneManager.LoadSceneAsync(levelName, LoadSceneMode.Single); + } + + /// + /// This operation makes Photon call your custom web-service by name (path) with the given parameters. + /// + /// + /// This is a server-side feature which must be setup in the Photon Cloud Dashboard prior to use. + /// + /// The Parameters will be converted into JSon format, so make sure your parameters are compatible. + /// + /// See on how to get a response. + /// + /// It's important to understand that the OperationResponse only tells if the WebRPC could be called. + /// The content of the response contains any values your web-service sent and the error/success code. + /// In case the web-service failed, an error code and a debug message are usually inside the + /// OperationResponse. + /// + /// The class WebRpcResponse is a helper-class that extracts the most valuable content from the WebRPC + /// response. + /// + /// + /// Example callback implementation:
    +        ///
    +        /// public void OnWebRpcResponse(OperationResponse response)
    +        /// {
    +        ///     WebRpcResponse webResponse = new WebRpcResponse(operationResponse);
    +        ///     if (webResponse.ReturnCode != 0) { //...
    +        ///     }
    +        ///
    +        ///     switch (webResponse.Name) { //...
    +        ///     }
    +        ///     // and so on
    +        /// }
    + ///
    + public static bool WebRpc(string name, object parameters, bool sendAuthCookie = false) + { + return NetworkingClient.OpWebRpc(name, parameters, sendAuthCookie); + } + + /// + /// Applies default log settings if they are not set up programmatically. + /// + private static void SetupLogging() + { + // only apply Settings if LogLevel is default ( see ServerSettings.cs), else it means it's been set programmatically + if (PhotonNetwork.LogLevel == PunLogLevel.ErrorsOnly) + { + PhotonNetwork.LogLevel = PhotonServerSettings.PunLogging; + } + + // only apply Settings if LogLevel is default ( see ServerSettings.cs), else it means it's been set programmatically + if (PhotonNetwork.NetworkingClient.LoadBalancingPeer.DebugOut == DebugLevel.ERROR) + { + PhotonNetwork.NetworkingClient.LoadBalancingPeer.DebugOut = PhotonServerSettings.AppSettings.NetworkLogging; + } + } + + + public static void LoadOrCreateSettings(bool reload = false) + { + if (reload) + { + photonServerSettings = null; // PhotonEditor will use this to load and save the settings delayed + } + else if (photonServerSettings != null) + { + Debug.LogWarning("photonServerSettings is not null. Will not LoadOrCreateSettings()."); + return; + } + + + // try to load the resource / asset (ServerSettings a.k.a. PhotonServerSettings) + photonServerSettings = (ServerSettings)Resources.Load(PhotonNetwork.ServerSettingsFileName, typeof(ServerSettings)); + if (photonServerSettings != null) + { + return; + } + + + // create the ScriptableObject if it could not be loaded + if (photonServerSettings == null) + { + photonServerSettings = (ServerSettings)ScriptableObject.CreateInstance("ServerSettings"); + if (photonServerSettings == null) + { + Debug.LogError("Failed to create ServerSettings. PUN is unable to run this way. If you deleted it from the project, reload the Editor."); + return; + } + } + + + // in the editor, store the settings file as it's not loaded + #if UNITY_EDITOR + // don't save the settings before OnProjectUpdated got called (this hints at an ongoing import/load) + if (!PhotonEditorUtils.ProjectChangedWasCalled) + { + return; + } + + string punResourcesDirectory = PhotonNetwork.FindPunAssetFolder() + "Resources/"; + string serverSettingsAssetPath = punResourcesDirectory + PhotonNetwork.ServerSettingsFileName + ".asset"; + string serverSettingsDirectory = Path.GetDirectoryName(serverSettingsAssetPath); + + if (!Directory.Exists(serverSettingsDirectory)) + { + Directory.CreateDirectory(serverSettingsDirectory); + AssetDatabase.ImportAsset(serverSettingsDirectory); + } + + if (!File.Exists(serverSettingsAssetPath)) + { + AssetDatabase.CreateAsset(photonServerSettings, serverSettingsAssetPath); + } + AssetDatabase.SaveAssets(); + + // if the project does not have PhotonServerSettings yet, enable "Development Build" to use the Dev Region. + EditorUserBuildSettings.development = true; + #endif + } + + + #if UNITY_EDITOR + + /// + /// Finds the asset path base on its name or search query: https://docs.unity3d.com/ScriptReference/AssetDatabase.FindAssets.html + /// + /// The asset path. + /// Asset. + public static string FindAssetPath(string asset) + { + string[] guids = AssetDatabase.FindAssets (asset, null); + if (guids.Length != 1) + { + return string.Empty; + } else + { + return AssetDatabase.GUIDToAssetPath (guids [0]); + } + } + + + /// + /// Finds the pun asset folder. Something like Assets/Photon Unity Networking/Resources/ + /// + /// The pun asset folder. + public static string FindPunAssetFolder() + { + string _thisPath = FindAssetPath("PunClasses"); + string _PunFolderPath = string.Empty; + + //Debug.Log("FindPunAssetFolder "+_thisPath); + string[] subdirectoryEntries = _thisPath.Split ('/'); + foreach (string dir in subdirectoryEntries) + { + if (!string.IsNullOrEmpty (dir)) + { + _PunFolderPath += dir +"/"; + + if (string.Equals (dir, "PhotonUnityNetworking")) + { + // Debug.Log("_PunFolderPath "+_PunFolderPath); + return _PunFolderPath; + } + } + } + + //Debug.Log("_PunFolderPath fallback to default Assets/Photon Unity Networking/"); + + return "Assets/Photon/PhotonUnityNetworking/"; + } + + + /// + /// Internally used by Editor scripts, called on Hierarchy change (includes scene save) to remove surplus hidden PhotonHandlers. + /// + /// This is done in this class, because the Editor assembly can't access PhotonHandler. + public static void InternalCleanPhotonMonoFromSceneIfStuck() + { + PhotonHandler[] photonHandlers = GameObject.FindObjectsOfType(typeof(PhotonHandler)) as PhotonHandler[]; + if (photonHandlers != null && photonHandlers.Length > 0) + { + Debug.Log("Cleaning up hidden PhotonHandler instances in scene. Please save the scene to fix the problem."); + foreach (PhotonHandler photonHandler in photonHandlers) + { + // Debug.Log("Removing Handler: " + photonHandler + " photonHandler.gameObject: " + photonHandler.gameObject); + if (photonHandler.gameObject != null && photonHandler.gameObject.name == "PhotonMono") + { + photonHandler.gameObject.hideFlags = 0; + GameObject.DestroyImmediate(photonHandler.gameObject); + } + + Component.DestroyImmediate(photonHandler); + } + } + } + + #endif + + } +} diff --git a/Assets/Photon/PhotonUnityNetworking/Code/PhotonNetwork.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/PhotonNetwork.cs.meta new file mode 100644 index 00000000..23f48a0b --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/PhotonNetwork.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 88e11b3353de7e94d84b1ec5adbdd15e +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonUnityNetworking/Code/PhotonNetworkPart.cs b/Assets/Photon/PhotonUnityNetworking/Code/PhotonNetworkPart.cs new file mode 100644 index 00000000..229c0dc5 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/PhotonNetworkPart.cs @@ -0,0 +1,2559 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// PhotonNetwork is the central class of the PUN package. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + using System; + using System.Linq; + using UnityEngine; + using System.Collections; + using System.Collections.Generic; + using System.Reflection; + + using ExitGames.Client.Photon; + using Photon.Realtime; + + using Hashtable = ExitGames.Client.Photon.Hashtable; + using SupportClassPun = ExitGames.Client.Photon.SupportClass; + + public static partial class PhotonNetwork + { + private static HashSet allowedReceivingGroups = new HashSet(); + + private static HashSet blockedSendingGroups = new HashSet(); + + private static HashSet reusablePVHashset = new HashSet(); + + + /// + /// The photon view list. + /// + private static NonAllocDictionary photonViewList = new NonAllocDictionary(); + + /// + /// Gets the photon views. + /// + /// + /// This is an expensive operation as it returns a copy of the internal list. + /// + /// The photon views. + [System.Obsolete("Use PhotonViewCollection instead for an iterable collection of current photonViews.")] + public static PhotonView[] PhotonViews + { + get + { + var views = new PhotonView[photonViewList.Count]; + int idx = 0; + foreach (var v in photonViewList.Values) + { + views[idx] = v; + idx++; + } + return views; + } + } + + /// + /// Returns a new iterable collection of current photon views. + /// + /// + /// You can iterate over all PhotonViews in a simple foreach loop. + /// To use this in a while-loop, assign the new iterator to a variable and then call MoveNext on that. + /// + public static NonAllocDictionary.ValueIterator PhotonViewCollection + { + get + { + return photonViewList.Values; + } + } + + public static int ViewCount + { + get { return photonViewList.Count; } + } + + /// Parameters: PhotonView for which ownership changed, previous owner of the view. + private static event Action OnOwnershipRequestEv; + /// Parameters: PhotonView for which ownership was requested, player who requests ownership. + private static event Action OnOwnershipTransferedEv; + /// Parameters: PhotonView for which ownership was requested, player who requested (but didn't get) ownership. + private static event Action OnOwnershipTransferFailedEv; + + /// + /// Registers an object for callbacks for the implemented callback-interfaces. + /// + /// + /// The covered callback interfaces are: IConnectionCallbacks, IMatchmakingCallbacks, + /// ILobbyCallbacks, IInRoomCallbacks, IOnEventCallback and IWebRpcCallback. + /// + /// See: .Net Callbacks + /// + /// The object that registers to get callbacks from PUN's LoadBalancingClient. + public static void AddCallbackTarget(object target) + { + if (target is PhotonView) + { + return; + } + + IPunOwnershipCallbacks punOwnershipCallback = target as IPunOwnershipCallbacks; + if (punOwnershipCallback != null) + { + OnOwnershipRequestEv += punOwnershipCallback.OnOwnershipRequest; + OnOwnershipTransferedEv += punOwnershipCallback.OnOwnershipTransfered; + OnOwnershipTransferFailedEv += punOwnershipCallback.OnOwnershipTransferFailed; + } + + NetworkingClient.AddCallbackTarget(target); + } + + + /// + /// Removes the target object from callbacks for its implemented callback-interfaces. + /// + /// + /// The covered callback interfaces are: IConnectionCallbacks, IMatchmakingCallbacks, + /// ILobbyCallbacks, IInRoomCallbacks, IOnEventCallback and IWebRpcCallback. + /// + /// See: .Net Callbacks + /// + /// The object that unregisters from getting callbacks. + public static void RemoveCallbackTarget(object target) + { + if (target is PhotonView || NetworkingClient == null) + { + return; + } + + IPunOwnershipCallbacks punOwnershipCallback = target as IPunOwnershipCallbacks; + if (punOwnershipCallback != null) + { + OnOwnershipRequestEv -= punOwnershipCallback.OnOwnershipRequest; + OnOwnershipTransferedEv -= punOwnershipCallback.OnOwnershipTransfered; + OnOwnershipTransferFailedEv -= punOwnershipCallback.OnOwnershipTransferFailed; + } + + NetworkingClient.RemoveCallbackTarget(target); + } + + internal static string CallbacksToString() + { + var x = NetworkingClient.ConnectionCallbackTargets.Select(m => m.ToString()).ToArray(); + return string.Join(", ", x); + } + + internal static byte currentLevelPrefix = 0; + + /// Internally used to flag if the message queue was disabled by a "scene sync" situation (to re-enable it). + internal static bool loadingLevelAndPausedNetwork = false; + + /// For automatic scene syncing, the loaded scene is put into a room property. This is the name of said prop. + internal const string CurrentSceneProperty = "curScn"; + internal const string CurrentScenePropertyLoadAsync = "curScnLa"; + + + /// + /// An Object Pool can be used to keep and reuse instantiated object instances. Replaces Unity's default Instantiate and Destroy methods. + /// + /// + /// Defaults to the DefaultPool type. + /// To use a GameObject pool, implement IPunPrefabPool and assign it here. + /// Prefabs are identified by name. + /// + public static IPunPrefabPool PrefabPool + { + get + { + return prefabPool; + } + set + { + if (value == null) + { + Debug.LogWarning("PhotonNetwork.PrefabPool cannot be set to null. It will default back to using the 'DefaultPool' Pool"); + prefabPool = new DefaultPool(); + } + else + { + prefabPool = value; + } + } + } + + private static IPunPrefabPool prefabPool; + + /// + /// While enabled, the MonoBehaviours on which we call RPCs are cached, avoiding costly GetComponents<MonoBehaviour>() calls. + /// + /// + /// RPCs are called on the MonoBehaviours of a target PhotonView. Those have to be found via GetComponents. + /// + /// When set this to true, the list of MonoBehaviours gets cached in each PhotonView. + /// You can use photonView.RefreshRpcMonoBehaviourCache() to manually refresh a PhotonView's + /// list of MonoBehaviours on demand (when a new MonoBehaviour gets added to a networked GameObject, e.g.). + /// + public static bool UseRpcMonoBehaviourCache; + + private static readonly Dictionary> monoRPCMethodsCache = new Dictionary>(); + + private static Dictionary rpcShortcuts; // lookup "table" for the index (shortcut) of an RPC name + + /// + /// If an RPC method is implemented as coroutine, it gets started, unless this value is false. + /// + /// + /// As starting coroutines causes a little memnory garbage, you may want to disable this option but it is + /// also good enough to not return IEnumerable from methods with the attribite PunRPC. + /// + public static bool RunRpcCoroutines = true; + + + // for asynchronous network synched loading. + private static AsyncOperation _AsyncLevelLoadingOperation; + + private static float _levelLoadingProgress = 0f; + + /// + /// Represents the scene loading progress when using LoadLevel(). + /// + /// + /// The value is 0 if the app never loaded a scene with LoadLevel().
    + /// During async scene loading, the value is between 0 and 1.
    + /// Once any scene completed loading, it stays at 1 (signaling "done").
    + ///
    + /// The level loading progress. Ranges from 0 to 1. + public static float LevelLoadingProgress + { + get + { + if (_AsyncLevelLoadingOperation != null) + { + _levelLoadingProgress = _AsyncLevelLoadingOperation.progress; + } + else if (_levelLoadingProgress > 0f) + { + _levelLoadingProgress = 1f; + } + + return _levelLoadingProgress; + } + } + + /// + /// Called when "this client" left a room to clean up. + /// + /// + /// if (Server == ServerConnection.GameServer && (state == ClientState.Disconnecting || state == ClientState.DisconnectingFromGameServer)) + /// + private static void LeftRoomCleanup() + { + // Clean up if we were loading asynchronously. + if (_AsyncLevelLoadingOperation != null) + { + _AsyncLevelLoadingOperation.allowSceneActivation = false; + _AsyncLevelLoadingOperation = null; + } + + + bool wasInRoom = NetworkingClient.CurrentRoom != null; + // when leaving a room, we clean up depending on that room's settings. + bool autoCleanupSettingOfRoom = wasInRoom && CurrentRoom.AutoCleanUp; + + allowedReceivingGroups = new HashSet(); + blockedSendingGroups = new HashSet(); + + // Cleanup all network objects (all spawned PhotonViews, local and remote) + if (autoCleanupSettingOfRoom || offlineModeRoom != null) + { + LocalCleanupAnythingInstantiated(true); + } + } + + + /// + /// Cleans up anything that was instantiated in-game (not loaded with the scene). Resets views that are not destroyed. + /// + // TODO: This method name no longer matches is function. It also resets room object's views. + internal static void LocalCleanupAnythingInstantiated(bool destroyInstantiatedGameObjects) + { + //if (tempInstantiationData.Count > 0) + //{ + // Debug.LogWarning("It seems some instantiation is not completed, as instantiation data is used. You should make sure instantiations are paused when calling this method. Cleaning now, despite "); + //} + + // Destroy GO's (if we should) + if (destroyInstantiatedGameObjects) + { + // Fill list with Instantiated objects + HashSet instantiatedGos = new HashSet(); + foreach (PhotonView view in photonViewList.Values) + { + if (view.isRuntimeInstantiated) + { + instantiatedGos.Add(view.gameObject); // HashSet keeps each object only once + } + // For non-instantiated objects (scene objects) - reset the view + else + { + view.ResetPhotonView(true); + } + } + + foreach (GameObject go in instantiatedGos) + { + RemoveInstantiatedGO(go, true); + } + } + + // photonViewList is cleared of anything instantiated (so scene items are left inside) + // any other lists can be + PhotonNetwork.lastUsedViewSubId = 0; + PhotonNetwork.lastUsedViewSubIdStatic = 0; + } + + + /// + /// Resets the PhotonView "lastOnSerializeDataSent" so that "OnReliable" synched PhotonViews send a complete state to new clients (if the state doesnt change, no messages would be send otherwise!). + /// Note that due to this reset, ALL other players will receive the full OnSerialize. + /// + private static void ResetPhotonViewsOnSerialize() + { + foreach (PhotonView photonView in photonViewList.Values) + { + photonView.lastOnSerializeDataSent = null; + } + } + + // PHOTONVIEW/RPC related +#pragma warning disable 0414 + private static readonly Type typePunRPC = typeof(PunRPC); + private static readonly Type typePhotonMessageInfo = typeof(PhotonMessageInfo); + private static readonly object keyByteZero = (byte)0; + private static readonly object keyByteOne = (byte)1; + private static readonly object keyByteTwo = (byte)2; + private static readonly object keyByteThree = (byte)3; + private static readonly object keyByteFour = (byte)4; + private static readonly object keyByteFive = (byte)5; + private static readonly object keyByteSix = (byte)6; + private static readonly object keyByteSeven = (byte)7; + private static readonly object keyByteEight = (byte)8; + private static readonly object[] emptyObjectArray = new object[0]; + private static readonly Type[] emptyTypeArray = new Type[0]; +#pragma warning restore 0414 + + /// + /// Executes a received RPC event + /// + internal static void ExecuteRpc(Hashtable rpcData, Player sender) + { + if (rpcData == null || !rpcData.ContainsKey(keyByteZero)) + { + Debug.LogError("Malformed RPC; this should never occur. Content: " + SupportClassPun.DictionaryToString(rpcData)); + return; + } + + // ts: updated with "flat" event data + int netViewID = (int)rpcData[keyByteZero]; // LIMITS PHOTONVIEWS&PLAYERS + int otherSidePrefix = 0; // by default, the prefix is 0 (and this is not being sent) + if (rpcData.ContainsKey(keyByteOne)) + { + otherSidePrefix = (short)rpcData[keyByteOne]; + } + + + string inMethodName; + if (rpcData.ContainsKey(keyByteFive)) + { + int rpcIndex = (byte)rpcData[keyByteFive]; // LIMITS RPC COUNT + if (rpcIndex > PhotonNetwork.PhotonServerSettings.RpcList.Count - 1) + { + Debug.LogError("Could not find RPC with index: " + rpcIndex + ". Going to ignore! Check PhotonServerSettings.RpcList"); + return; + } + else + { + inMethodName = PhotonNetwork.PhotonServerSettings.RpcList[rpcIndex]; + } + } + else + { + inMethodName = (string)rpcData[keyByteThree]; + } + + object[] arguments = null; + if (rpcData.ContainsKey(keyByteFour)) + { + arguments = (object[])rpcData[keyByteFour]; + } + + PhotonView photonNetview = GetPhotonView(netViewID); + if (photonNetview == null) + { + int viewOwnerId = netViewID / PhotonNetwork.MAX_VIEW_IDS; + bool owningPv = (viewOwnerId == NetworkingClient.LocalPlayer.ActorNumber); + bool ownerSent = sender != null && viewOwnerId == sender.ActorNumber; + + if (owningPv) + { + Debug.LogWarning("Received RPC \"" + inMethodName + "\" for viewID " + netViewID + " but this PhotonView does not exist! View was/is ours." + (ownerSent ? " Owner called." : " Remote called.") + " By: " + sender); + } + else + { + Debug.LogWarning("Received RPC \"" + inMethodName + "\" for viewID " + netViewID + " but this PhotonView does not exist! Was remote PV." + (ownerSent ? " Owner called." : " Remote called.") + " By: " + sender + " Maybe GO was destroyed but RPC not cleaned up."); + } + return; + } + + if (photonNetview.Prefix != otherSidePrefix) + { + Debug.LogError("Received RPC \"" + inMethodName + "\" on viewID " + netViewID + " with a prefix of " + otherSidePrefix + ", our prefix is " + photonNetview.Prefix + ". The RPC has been ignored."); + return; + } + + // Get method name + if (string.IsNullOrEmpty(inMethodName)) + { + Debug.LogError("Malformed RPC; this should never occur. Content: " + SupportClassPun.DictionaryToString(rpcData)); + return; + } + + if (PhotonNetwork.LogLevel >= PunLogLevel.Full) + { + Debug.Log("Received RPC: " + inMethodName); + } + + + // SetReceiving filtering + if (photonNetview.Group != 0 && !allowedReceivingGroups.Contains(photonNetview.Group)) + { + return; // Ignore group + } + + Type[] argumentsTypes = null; + if (arguments != null && arguments.Length > 0) + { + argumentsTypes = new Type[arguments.Length]; + int i = 0; + for (int index = 0; index < arguments.Length; index++) + { + object objX = arguments[index]; + if (objX == null) + { + argumentsTypes[i] = null; + } + else + { + argumentsTypes[i] = objX.GetType(); + } + + i++; + } + } + + + int receivers = 0; + int foundMethods = 0; + if (!PhotonNetwork.UseRpcMonoBehaviourCache || photonNetview.RpcMonoBehaviours == null || photonNetview.RpcMonoBehaviours.Length == 0) + { + photonNetview.RefreshRpcMonoBehaviourCache(); + } + + for (int componentsIndex = 0; componentsIndex < photonNetview.RpcMonoBehaviours.Length; componentsIndex++) + { + MonoBehaviour monob = photonNetview.RpcMonoBehaviours[componentsIndex]; + if (monob == null) + { + Debug.LogError("ERROR You have missing MonoBehaviours on your gameobjects!"); + continue; + } + + Type type = monob.GetType(); + + // Get [PunRPC] methods from cache + List cachedRPCMethods = null; + bool methodsOfTypeInCache = monoRPCMethodsCache.TryGetValue(type, out cachedRPCMethods); + + if (!methodsOfTypeInCache) + { + List entries = SupportClassPun.GetMethods(type, typePunRPC); + + monoRPCMethodsCache[type] = entries; + cachedRPCMethods = entries; + } + + if (cachedRPCMethods == null) + { + continue; + } + + // Check cache for valid methodname+arguments + for (int index = 0; index < cachedRPCMethods.Count; index++) + { + MethodInfo mInfo = cachedRPCMethods[index]; + if (!mInfo.Name.Equals(inMethodName)) + { + continue; + } + + ParameterInfo[] parameters = mInfo.GetCachedParemeters(); + foundMethods++; + + + // if we got no arguments: + if (arguments == null) + { + if (parameters.Length == 0) + { + receivers++; + object o = mInfo.Invoke((object)monob, null); + if (PhotonNetwork.RunRpcCoroutines) + { + IEnumerator ie = null;//o as IEnumerator; + if ((ie = o as IEnumerator) != null) + { + PhotonHandler.Instance.StartCoroutine(ie); + } + } + } + else if (parameters.Length == 1 && parameters[0].ParameterType == typeof(PhotonMessageInfo)) + { + int sendTime = (int)rpcData[keyByteTwo]; + + receivers++; + object o = mInfo.Invoke((object)monob, new object[] { new PhotonMessageInfo(sender, sendTime, photonNetview) }); + if (PhotonNetwork.RunRpcCoroutines) + { + IEnumerator ie = null;//o as IEnumerator; + if ((ie = o as IEnumerator) != null) + { + PhotonHandler.Instance.StartCoroutine(ie); + } + } + } + continue; + } + + + // if there are any arguments (in the incoming call check if the method is compatible + if (parameters.Length == arguments.Length) + { + // Normal, PhotonNetworkMessage left out + if (CheckTypeMatch(parameters, argumentsTypes)) + { + receivers++; + object o = mInfo.Invoke((object)monob, arguments); + if (PhotonNetwork.RunRpcCoroutines) + { + IEnumerator ie = null;//o as IEnumerator; + if ((ie = o as IEnumerator) != null) + { + PhotonHandler.Instance.StartCoroutine(ie); + } + } + } + continue; + } + + if (parameters.Length == arguments.Length + 1) + { + // Check for PhotonNetworkMessage being the last + if (parameters[parameters.Length - 1].ParameterType == typeof(PhotonMessageInfo) && CheckTypeMatch(parameters, argumentsTypes)) + { + int sendTime = (int)rpcData[keyByteTwo]; + object[] argumentsWithInfo = new object[arguments.Length + 1]; + arguments.CopyTo(argumentsWithInfo, 0); + argumentsWithInfo[argumentsWithInfo.Length - 1] = new PhotonMessageInfo(sender, sendTime, photonNetview); + + receivers++; + object o = mInfo.Invoke((object)monob, argumentsWithInfo); + if (PhotonNetwork.RunRpcCoroutines) + { + IEnumerator ie = null;//o as IEnumerator; + if ((ie = o as IEnumerator) != null) + { + PhotonHandler.Instance.StartCoroutine(ie); + } + } + } + continue; + } + + if (parameters.Length == 1 && parameters[0].ParameterType.IsArray) + { + receivers++; + object o = mInfo.Invoke((object)monob, new object[] { arguments }); + if (PhotonNetwork.RunRpcCoroutines) + { + IEnumerator ie = null;//o as IEnumerator; + if ((ie = o as IEnumerator) != null) + { + PhotonHandler.Instance.StartCoroutine(ie); + } + } + continue; + } + } + } + + // Error handling + if (receivers != 1) + { + string argsString = string.Empty; + int argsLength = 0; + if (argumentsTypes != null) + { + argsLength = argumentsTypes.Length; + for (int index = 0; index < argumentsTypes.Length; index++) + { + Type ty = argumentsTypes[index]; + if (argsString != string.Empty) + { + argsString += ", "; + } + + if (ty == null) + { + argsString += "null"; + } + else + { + argsString += ty.Name; + } + } + } + + GameObject context = photonNetview != null ? photonNetview.gameObject : null; + if (receivers == 0) + { + if (foundMethods == 0) + { + // found no method that matches + Debug.LogErrorFormat(context, "RPC method '{0}({2})' not found on object with PhotonView {1}. Implement as non-static. Apply [PunRPC]. Components on children are not found. " + + "Return type must be void or IEnumerator (if you enable RunRpcCoroutines). RPCs are a one-way message.", inMethodName, netViewID, argsString); + } + else + { + // found a method but not the right arguments + Debug.LogErrorFormat(context, "RPC method '{0}' found on object with PhotonView {1} but has wrong parameters. Implement as '{0}({2})'. PhotonMessageInfo is optional as final parameter." + + "Return type must be void or IEnumerator (if you enable RunRpcCoroutines).", inMethodName, netViewID, argsString); + } + } + else + { + // multiple components have the same method + Debug.LogErrorFormat(context, "RPC method '{0}({2})' found {3}x on object with PhotonView {1}. Only one component should implement it." + + "Return type must be void or IEnumerator (if you enable RunRpcCoroutines).", inMethodName, netViewID, argsString, foundMethods); + } + } + } + + /// + /// Check if all types match with parameters. We can have more paramters then types (allow last RPC type to be different). + /// + /// + /// + /// If the types-array has matching parameters (of method) in the parameters array (which may be longer). + private static bool CheckTypeMatch(ParameterInfo[] methodParameters, Type[] callParameterTypes) + { + if (methodParameters.Length < callParameterTypes.Length) + { + return false; + } + + for (int index = 0; index < callParameterTypes.Length; index++) + { +#if NETFX_CORE + TypeInfo methodParamTI = methodParameters[index].ParameterType.GetTypeInfo(); + TypeInfo callParamTI = callParameterTypes[index].GetTypeInfo(); + + if (callParameterTypes[index] != null && !methodParamTI.IsAssignableFrom(callParamTI) && !(callParamTI.IsEnum && System.Enum.GetUnderlyingType(methodParamTI.AsType()).GetTypeInfo().IsAssignableFrom(callParamTI))) + { + return false; + } +#else + Type type = methodParameters[index].ParameterType; + if (callParameterTypes[index] != null && !type.IsAssignableFrom(callParameterTypes[index]) && !(type.IsEnum && System.Enum.GetUnderlyingType(type).IsAssignableFrom(callParameterTypes[index]))) + { + return false; + } +#endif + } + + return true; + } + + + /// + /// Destroys all Instantiates and RPCs locally and (if not localOnly) sends EvDestroy(player) and clears related events in the server buffer. + /// + public static void DestroyPlayerObjects(int playerId, bool localOnly) + { + if (playerId <= 0) + { + Debug.LogError("Failed to Destroy objects of playerId: " + playerId); + return; + } + + if (!localOnly) + { + // clean server's Instantiate and RPC buffers + OpRemoveFromServerInstantiationsOfPlayer(playerId); + OpCleanActorRpcBuffer(playerId); + + // send Destroy(player) to anyone else + SendDestroyOfPlayer(playerId); + } + + // locally cleaning up that player's objects + HashSet playersGameObjects = new HashSet(); + + // with ownership transfer, some objects might lose their owner. + // in that case, the creator becomes the owner again. every client can apply done below. + foreach (PhotonView view in photonViewList.Values) + { + if (view == null) + { + Debug.LogError("Null view"); + continue; + } + + // Mark player created objects for destruction + if (view.CreatorActorNr == playerId) + { + playersGameObjects.Add(view.gameObject); + continue; + } + + if (view.OwnerActorNr == playerId) + { + var previousOwner = view.Owner; + view.OwnerActorNr = view.CreatorActorNr; + view.ControllerActorNr = view.CreatorActorNr; + + // This callback was not originally here. Added with the IsMine caching changes. + if (PhotonNetwork.OnOwnershipTransferedEv != null) + { + PhotonNetwork.OnOwnershipTransferedEv(view, previousOwner); + } + } + } + + // any non-local work is already done, so with the list of that player's objects, we can clean up (locally only) + foreach (GameObject gameObject in playersGameObjects) + { + RemoveInstantiatedGO(gameObject, true); + } + } + + public static void DestroyAll(bool localOnly) + { + if (!localOnly) + { + OpRemoveCompleteCache(); + SendDestroyOfAll(); + } + + LocalCleanupAnythingInstantiated(true); + } + + internal static List foundPVs = new List(); + + /// Removes GameObject and the PhotonViews on it from local lists and optionally updates remotes. GameObject gets destroyed at end. + /// + /// This method might fail and quit early due to several tests. + /// + /// GameObject to cleanup. + /// For localOnly, tests of control are skipped and the server is not updated. + internal static void RemoveInstantiatedGO(GameObject go, bool localOnly) + { + // Avoid cleanup if we are quitting. + if (ConnectionHandler.AppQuits) + return; + + if (go == null) + { + Debug.LogError("Failed to 'network-remove' GameObject because it's null."); + return; + } + + // Don't remove the GO if it doesn't have any PhotonView + go.GetComponentsInChildren(true, foundPVs); + if (foundPVs.Count <= 0) + { + Debug.LogError("Failed to 'network-remove' GameObject because has no PhotonView components: " + go); + return; + } + + PhotonView viewZero = foundPVs[0]; + + // Don't remove GOs that are owned by others (unless this is the master and the remote player left) + if (!localOnly) + { + //Debug.LogWarning("Destroy " + instantiationId + " creator " + creatorId, go); + if (!viewZero.IsMine) + { + Debug.LogError("Failed to 'network-remove' GameObject. Client is neither owner nor MasterClient taking over for owner who left: " + viewZero); + foundPVs.Clear(); // as foundPVs is re-used, clean it to avoid lingering references + return; + } + } + + // cleanup instantiation (event and local list) + if (!localOnly) + { + ServerCleanInstantiateAndDestroy(viewZero); // server cleaning + } + + int creatorActorNr = viewZero.CreatorActorNr; + + // cleanup PhotonViews and their RPCs events (if not localOnly) + for (int j = foundPVs.Count - 1; j >= 0; j--) + { + PhotonView view = foundPVs[j]; + if (view == null) + { + continue; + } + + // TODO: Probably should have a enum that defines when auto-detachment should occur. + // Check nested PVs for different creator. Detach if different, to avoid destroying reparanted objects. + if (j != 0) + { + // view does not belong to the same object as the root PV - unparent this nested PV to avoid destruction. + if (view.CreatorActorNr != creatorActorNr) + { + view.transform.SetParent(null, true); + continue; + } + } + + // Notify all children PVs of impending destruction. Send the root PV (the actual object getting destroyed) to the callbacks. + view.OnPreNetDestroy(viewZero); + + // we only destroy/clean PhotonViews that were created by PhotonNetwork.Instantiate (and those have an instantiationId!) + if (view.InstantiationId >= 1) + { + LocalCleanPhotonView(view); + } + if (!localOnly) + { + OpCleanRpcBuffer(view); + } + } + + if (PhotonNetwork.LogLevel >= PunLogLevel.Full) + { + Debug.Log("Network destroy Instantiated GO: " + go.name); + } + + foundPVs.Clear(); // as foundPVs is re-used, clean it to avoid lingering references + + go.SetActive(false); // PUN 2 disables objects before the return to the pool + prefabPool.Destroy(go); // PUN 2 always uses a PrefabPool (even for the default implementation) + } + + + private static readonly ExitGames.Client.Photon.Hashtable removeFilter = new ExitGames.Client.Photon.Hashtable(); + private static readonly ExitGames.Client.Photon.Hashtable ServerCleanDestroyEvent = new ExitGames.Client.Photon.Hashtable(); + private static readonly RaiseEventOptions ServerCleanOptions = new RaiseEventOptions() { CachingOption = EventCaching.RemoveFromRoomCache }; + + internal static RaiseEventOptions SendToAllOptions = new RaiseEventOptions() { Receivers = ReceiverGroup.All }; + internal static RaiseEventOptions SendToOthersOptions = new RaiseEventOptions() { Receivers = ReceiverGroup.Others }; + internal static RaiseEventOptions SendToSingleOptions = new RaiseEventOptions() { TargetActors = new int[1] }; + + /// + /// Removes an instantiation event from the server's cache. Needs id and actorNr of player who instantiated. + /// + private static void ServerCleanInstantiateAndDestroy(PhotonView photonView) + { + int filterId; + if (photonView.isRuntimeInstantiated) + { + filterId = photonView.InstantiationId; // actual, live InstantiationIds start with 1 and go up + // remove the Instantiate-event from the server cache: + removeFilter[keyByteSeven] = filterId; + ServerCleanOptions.CachingOption = EventCaching.RemoveFromRoomCache; + PhotonNetwork.RaiseEventInternal(PunEvent.Instantiation, removeFilter, ServerCleanOptions, SendOptions.SendReliable); + } + // Don't remove the Instantiation from the server, if it doesn't have a proper ID + else + { + filterId = photonView.ViewID; + } + + // send a Destroy-event to everyone (removing an event from the cache, doesn't send this to anyone else): + ServerCleanDestroyEvent[keyByteZero] = filterId; + ServerCleanOptions.CachingOption = photonView.isRuntimeInstantiated ? EventCaching.DoNotCache : EventCaching.AddToRoomCacheGlobal; // if the view got loaded with the scene, cache EvDestroy for anyone (re)joining later + + PhotonNetwork.RaiseEventInternal(PunEvent.Destroy, ServerCleanDestroyEvent, ServerCleanOptions, SendOptions.SendReliable); + } + + private static void SendDestroyOfPlayer(int actorNr) + { + ExitGames.Client.Photon.Hashtable evData = new ExitGames.Client.Photon.Hashtable(); + evData[keyByteZero] = actorNr; + + PhotonNetwork.RaiseEventInternal(PunEvent.DestroyPlayer, evData, null, SendOptions.SendReliable); + } + + private static void SendDestroyOfAll() + { + ExitGames.Client.Photon.Hashtable evData = new ExitGames.Client.Photon.Hashtable(); + evData[keyByteZero] = -1; + + PhotonNetwork.RaiseEventInternal(PunEvent.DestroyPlayer, evData, null, SendOptions.SendReliable); + } + + private static void OpRemoveFromServerInstantiationsOfPlayer(int actorNr) + { + // removes all "Instantiation" events of player actorNr. this is not an event for anyone else + RaiseEventOptions options = new RaiseEventOptions() { CachingOption = EventCaching.RemoveFromRoomCache, TargetActors = new int[] { actorNr } }; + PhotonNetwork.RaiseEventInternal(PunEvent.Instantiation, null, options, SendOptions.SendReliable); + } + + internal static void RequestOwnership(int viewID, int fromOwner) + { + //Debug.Log("RequestOwnership(): " + viewID + " from: " + fromOwner + " Time: " + Environment.TickCount % 1000); + PhotonNetwork.RaiseEventInternal(PunEvent.OwnershipRequest, new int[] { viewID, fromOwner }, SendToAllOptions, SendOptions.SendReliable); + } + + internal static void TransferOwnership(int viewID, int playerID) + { + //Debug.Log("TransferOwnership() view " + viewID + " to: " + playerID + " Time: " + Environment.TickCount % 1000); + PhotonNetwork.RaiseEventInternal(PunEvent.OwnershipTransfer, new int[] { viewID, playerID }, SendToAllOptions, SendOptions.SendReliable); + } + + /// + /// Call this on the Master to reassert ownership on clients. viewOwnerPairs are [viewId][viewOwnerActorNr] pairs. targetActor of -1 indicates send to all others. + /// + internal static void OwnershipUpdate(int[] viewOwnerPairs, int targetActor = -1) + { + RaiseEventOptions opts; + if (targetActor == -1) + { + opts = SendToOthersOptions; + } + else + { + SendToSingleOptions.TargetActors[0] = targetActor; + opts = SendToSingleOptions; + } + PhotonNetwork.RaiseEventInternal(PunEvent.OwnershipUpdate, viewOwnerPairs, opts, SendOptions.SendReliable); + } + + public static bool LocalCleanPhotonView(PhotonView view) + { + view.removedFromLocalViewList = true; + return photonViewList.Remove(view.ViewID); + } + + public static PhotonView GetPhotonView(int viewID) + { + PhotonView result = null; + photonViewList.TryGetValue(viewID, out result); + + /// Removed aggressive find that likely had no real use case, and was expensive. + //if (result == null) + //{ + // PhotonView[] views = GameObject.FindObjectsOfType(typeof(PhotonView)) as PhotonView[]; + + // for (int i = 0; i < views.Length; i++) + // { + // PhotonView view = views[i]; + // if (view.ViewID == viewID) + // { + // if (view.didAwake) + // { + // Debug.LogWarning("Had to lookup view that wasn't in photonViewList: " + view); + // } + // return view; + // } + // } + //} + + return result; + } + + public static void RegisterPhotonView(PhotonView netView) + { + if (!Application.isPlaying) + { + photonViewList = new NonAllocDictionary(); + return; + } + + if (netView.ViewID == 0) + { + // don't register views with ID 0 (not initialized). they register when a ID is assigned later on + Debug.Log("PhotonView register is ignored, because viewID is 0. No id assigned yet to: " + netView); + return; + } + + PhotonView listedView = null; + bool isViewListed = photonViewList.TryGetValue(netView.ViewID, out listedView); + if (isViewListed) + { + // if some other view is in the list already, we got a problem. it might be indestructible. print out error + if (netView != listedView) + { + Debug.LogError(string.Format("PhotonView ID duplicate found: {0}. New: {1} old: {2}. Maybe one wasn't destroyed on scene load?! Check for 'DontDestroyOnLoad'. Destroying old entry, adding new.", netView.ViewID, netView, listedView)); + } + else + { + return; + } + + RemoveInstantiatedGO(listedView.gameObject, true); + } + + // Debug.Log("adding view to known list: " + netView); + photonViewList.Add(netView.ViewID, netView); + netView.removedFromLocalViewList = false; + + //Debug.LogError("view being added. " + netView); // Exit Games internal log + + if (PhotonNetwork.LogLevel >= PunLogLevel.Full) + { + Debug.Log("Registered PhotonView: " + netView.ViewID); + } + } + + + /// + /// Removes the RPCs of someone else (to be used as master). + /// This won't clean any local caches. It just tells the server to forget a player's RPCs and instantiates. + /// + /// + public static void OpCleanActorRpcBuffer(int actorNumber) + { + RaiseEventOptions options = new RaiseEventOptions() { CachingOption = EventCaching.RemoveFromRoomCache, TargetActors = new int[] { actorNumber } }; + PhotonNetwork.RaiseEventInternal(PunEvent.RPC, null, options, SendOptions.SendReliable); + } + + /// + /// Instead removing RPCs or Instantiates, this removed everything cached by the actor. + /// + /// + public static void OpRemoveCompleteCacheOfPlayer(int actorNumber) + { + RaiseEventOptions options = new RaiseEventOptions() { CachingOption = EventCaching.RemoveFromRoomCache, TargetActors = new int[] { actorNumber } }; + PhotonNetwork.RaiseEventInternal(0, null, options, SendOptions.SendReliable); + } + + + public static void OpRemoveCompleteCache() + { + RaiseEventOptions options = new RaiseEventOptions() { CachingOption = EventCaching.RemoveFromRoomCache, Receivers = ReceiverGroup.MasterClient }; + PhotonNetwork.RaiseEventInternal(0, null, options, SendOptions.SendReliable); + } + + /// This clears the cache of any player/actor who's no longer in the room (making it a simple clean-up option for a new master) + private static void RemoveCacheOfLeftPlayers() + { + Dictionary opParameters = new Dictionary(); + opParameters[ParameterCode.Code] = (byte)0; // any event + opParameters[ParameterCode.Cache] = (byte)EventCaching.RemoveFromRoomCacheForActorsLeft; // option to clear the room cache of all events of players who left + + NetworkingClient.LoadBalancingPeer.SendOperation((byte)OperationCode.RaiseEvent, opParameters, SendOptions.SendReliable); // TODO: Check if this is the best implementation possible + } + + // Remove RPCs of view (if they are local player's RPCs) + public static void CleanRpcBufferIfMine(PhotonView view) + { + if (view.OwnerActorNr != NetworkingClient.LocalPlayer.ActorNumber && !NetworkingClient.LocalPlayer.IsMasterClient) + { + Debug.LogError("Cannot remove cached RPCs on a PhotonView thats not ours! " + view.Owner + " scene: " + view.IsRoomView); + return; + } + + OpCleanRpcBuffer(view); + } + + + private static readonly Hashtable rpcFilterByViewId = new ExitGames.Client.Photon.Hashtable(); + private static readonly RaiseEventOptions OpCleanRpcBufferOptions = new RaiseEventOptions() { CachingOption = EventCaching.RemoveFromRoomCache }; + + /// Cleans server RPCs for PhotonView (without any further checks). + public static void OpCleanRpcBuffer(PhotonView view) + { + rpcFilterByViewId[keyByteZero] = view.ViewID; + PhotonNetwork.RaiseEventInternal(PunEvent.RPC, rpcFilterByViewId, OpCleanRpcBufferOptions, SendOptions.SendReliable); + } + + /// + /// Remove all buffered RPCs from server that were sent in the targetGroup, if this is the Master Client or if this controls the individual PhotonView. + /// + /// + /// This method requires either: + /// - This client is the Master Client (can remove any RPCs per group). + /// - Any other client: each PhotonView is checked if it is under this client's control. Only those RPCs are removed. + /// + /// Interest group that gets all RPCs removed. + public static void RemoveRPCsInGroup(int group) + { + foreach (PhotonView view in photonViewList.Values) + { + if (view.Group == group) + { + CleanRpcBufferIfMine(view); + } + } + } + + /// + /// Clear buffered RPCs based on filter parameters. + /// + /// The viewID of the PhotonView where the RPC has been called on. We actually need its ViewID. If 0 (default) is provided, all PhotonViews/ViewIDs are considered. + /// The RPC method name, if possible we will use its hash shortcut for efficiency. If none (null or empty string) is provided all RPC method names are considered. + /// The actor numbers of the players who called/buffered the RPC. For example if two players buffered the same RPC you can clear the buffered RPC of one and keep the other. If none (null or empty array) is provided all senders are considered. + /// If the operation could be sent to the server. + public static bool RemoveBufferedRPCs(int viewId = 0, string methodName = null, int[] callersActorNumbers = null/*, params object[] parameters*/) + { + Hashtable filter = new Hashtable(2); + if (viewId != 0) + { + filter[keyByteZero] = viewId; + } + if (!string.IsNullOrEmpty(methodName)) + { + // send name or shortcut (if available) + int shortcut; + if (rpcShortcuts.TryGetValue(methodName, out shortcut)) + { + filter[keyByteFive] = (byte)shortcut; // LIMITS RPC COUNT + } + else + { + filter[keyByteThree] = methodName; + } + } + //if (parameters != null && parameters.Length > 0) + //{ + // filter[keyByteFour] = parameters; + //} + RaiseEventOptions raiseEventOptions = new RaiseEventOptions(); + raiseEventOptions.CachingOption = EventCaching.RemoveFromRoomCache; + if (callersActorNumbers != null) + { + raiseEventOptions.TargetActors = callersActorNumbers; + } + return RaiseEventInternal(PunEvent.RPC, filter, raiseEventOptions, SendOptions.SendReliable); + } + + /// + /// Sets level prefix for PhotonViews instantiated later on. Don't set it if you need only one! + /// + /// + /// Important: If you don't use multiple level prefixes, simply don't set this value. The + /// default value is optimized out of the traffic. + /// + /// This won't affect existing PhotonViews (they can't be changed yet for existing PhotonViews). + /// + /// Messages sent with a different level prefix will be received but not executed. This affects + /// RPCs, Instantiates and synchronization. + /// + /// Be aware that PUN never resets this value, you'll have to do so yourself. + /// + /// Max value is short.MaxValue = 255 + public static void SetLevelPrefix(byte prefix) + { + // TODO: check can use network + + currentLevelPrefix = prefix; + // TODO: should we really change the prefix for existing PVs?! better keep it! + //foreach (PhotonView view in photonViewList.Values) + //{ + // view.prefix = prefix; + //} + } + + + /// RPC Hashtable Structure + /// (byte)0 -> (int) ViewId (combined from actorNr and actor-unique-id) + /// (byte)1 -> (short) prefix (level) + /// (byte)2 -> (int) server timestamp + /// (byte)3 -> (string) methodname + /// (byte)4 -> (object[]) parameters + /// (byte)5 -> (byte) method shortcut (alternative to name) + /// + /// This is sent as event (code: 200) which will contain a sender (origin of this RPC). + + static ExitGames.Client.Photon.Hashtable rpcEvent = new ExitGames.Client.Photon.Hashtable(); + static RaiseEventOptions RpcOptionsToAll = new RaiseEventOptions(); + + + internal static void RPC(PhotonView view, string methodName, RpcTarget target, Player player, bool encrypt, params object[] parameters) + { + if (blockedSendingGroups.Contains(view.Group)) + { + return; // Block sending on this group + } + + if (view.ViewID < 1) + { + Debug.LogError("Illegal view ID:" + view.ViewID + " method: " + methodName + " GO:" + view.gameObject.name); + } + + if (PhotonNetwork.LogLevel >= PunLogLevel.Full) + { + Debug.Log("Sending RPC \"" + methodName + "\" to target: " + target + " or player:" + player + "."); + } + + + //ts: changed RPCs to a one-level hashtable as described in internal.txt + rpcEvent.Clear(); + + rpcEvent[keyByteZero] = (int)view.ViewID; // LIMITS NETWORKVIEWS&PLAYERS + if (view.Prefix > 0) + { + rpcEvent[keyByteOne] = (short)view.Prefix; + } + rpcEvent[keyByteTwo] = PhotonNetwork.ServerTimestamp; + + + // send name or shortcut (if available) + int shortcut = 0; + if (rpcShortcuts.TryGetValue(methodName, out shortcut)) + { + rpcEvent[keyByteFive] = (byte)shortcut; // LIMITS RPC COUNT + } + else + { + rpcEvent[keyByteThree] = methodName; + } + + if (parameters != null && parameters.Length > 0) + { + rpcEvent[keyByteFour] = (object[])parameters; + } + + SendOptions sendOptions = new SendOptions() { Reliability = true, Encrypt = encrypt }; + + // if sent to target player, this overrides the target + if (player != null) + { + if (NetworkingClient.LocalPlayer.ActorNumber == player.ActorNumber) + { + ExecuteRpc(rpcEvent, player); + } + else + { + RaiseEventOptions options = new RaiseEventOptions() { TargetActors = new int[] { player.ActorNumber } }; + PhotonNetwork.RaiseEventInternal(PunEvent.RPC, rpcEvent, options, sendOptions); + // NetworkingClient.OpRaiseEvent(PunEvent.RPC, rpcEvent, options, new SendOptions() { Reliability = true, Encrypt = encrypt }); + } + + return; + } + + switch (target) + { + // send to a specific set of players + case RpcTarget.All: + RpcOptionsToAll.InterestGroup = (byte)view.Group; // NOTE: Test-wise, this is static and re-used to avoid memory garbage + PhotonNetwork.RaiseEventInternal(PunEvent.RPC, rpcEvent, RpcOptionsToAll, sendOptions); + + // Execute local + ExecuteRpc(rpcEvent, NetworkingClient.LocalPlayer); + break; + case RpcTarget.Others: + { + RaiseEventOptions options = new RaiseEventOptions() { InterestGroup = (byte)view.Group }; + PhotonNetwork.RaiseEventInternal(PunEvent.RPC, rpcEvent, options, sendOptions); + break; + } + case RpcTarget.AllBuffered: + { + RaiseEventOptions options = new RaiseEventOptions() { CachingOption = EventCaching.AddToRoomCache }; + PhotonNetwork.RaiseEventInternal(PunEvent.RPC, rpcEvent, options, sendOptions); + + // Execute local + ExecuteRpc(rpcEvent, NetworkingClient.LocalPlayer); + break; + } + case RpcTarget.OthersBuffered: + { + RaiseEventOptions options = new RaiseEventOptions() { CachingOption = EventCaching.AddToRoomCache }; + PhotonNetwork.RaiseEventInternal(PunEvent.RPC, rpcEvent, options, sendOptions); + break; + } + case RpcTarget.MasterClient: + { + if (NetworkingClient.LocalPlayer.IsMasterClient) + { + ExecuteRpc(rpcEvent, NetworkingClient.LocalPlayer); + } + else + { + RaiseEventOptions options = new RaiseEventOptions() { Receivers = ReceiverGroup.MasterClient }; + PhotonNetwork.RaiseEventInternal(PunEvent.RPC, rpcEvent, options, sendOptions); + } + + break; + } + case RpcTarget.AllViaServer: + { + RaiseEventOptions options = new RaiseEventOptions() { InterestGroup = (byte)view.Group, Receivers = ReceiverGroup.All }; + PhotonNetwork.RaiseEventInternal(PunEvent.RPC, rpcEvent, options, sendOptions); + if (PhotonNetwork.OfflineMode) + { + ExecuteRpc(rpcEvent, NetworkingClient.LocalPlayer); + } + + break; + } + case RpcTarget.AllBufferedViaServer: + { + RaiseEventOptions options = new RaiseEventOptions() { InterestGroup = (byte)view.Group, Receivers = ReceiverGroup.All, CachingOption = EventCaching.AddToRoomCache }; + PhotonNetwork.RaiseEventInternal(PunEvent.RPC, rpcEvent, options, sendOptions); + if (PhotonNetwork.OfflineMode) + { + ExecuteRpc(rpcEvent, NetworkingClient.LocalPlayer); + } + + break; + } + default: + Debug.LogError("Unsupported target enum: " + target); + break; + } + } + + + /// Enable/disable receiving on given Interest Groups (applied to PhotonViews). + /// + /// A client can tell the server which Interest Groups it's interested in. + /// The server will only forward events for those Interest Groups to that client (saving bandwidth and performance). + /// + /// See: https://doc.photonengine.com/en-us/pun/v2/gameplay/interestgroups + /// + /// See: https://doc.photonengine.com/en-us/pun/v2/demos-and-tutorials/package-demos/culling-demo + /// + /// The interest groups to disable (or null). + /// The interest groups to enable (or null). + public static void SetInterestGroups(byte[] disableGroups, byte[] enableGroups) + { + // TODO: check can use network + + if (disableGroups != null) + { + if (disableGroups.Length == 0) + { + // a byte[0] should disable ALL groups in one step and before any groups are enabled. we do this locally, too. + allowedReceivingGroups.Clear(); + } + else + { + for (int index = 0; index < disableGroups.Length; index++) + { + byte g = disableGroups[index]; + if (g <= 0) + { + Debug.LogError("Error: PhotonNetwork.SetInterestGroups was called with an illegal group number: " + g + ". The Group number should be at least 1."); + continue; + } + + if (allowedReceivingGroups.Contains(g)) + { + allowedReceivingGroups.Remove(g); + } + } + } + } + + if (enableGroups != null) + { + if (enableGroups.Length == 0) + { + // a byte[0] should enable ALL groups in one step. we do this locally, too. + for (byte index = 0; index < byte.MaxValue; index++) + { + allowedReceivingGroups.Add(index); + } + + allowedReceivingGroups.Add(byte.MaxValue); + } + else + { + for (int index = 0; index < enableGroups.Length; index++) + { + byte g = enableGroups[index]; + if (g <= 0) + { + Debug.LogError("Error: PhotonNetwork.SetInterestGroups was called with an illegal group number: " + g + ". The Group number should be at least 1."); + continue; + } + + allowedReceivingGroups.Add(g); + } + } + } + + if (!PhotonNetwork.offlineMode) + { + NetworkingClient.OpChangeGroups(disableGroups, enableGroups); + } + } + + + /// Enable/disable sending on given group (applied to PhotonViews) + /// + /// This does not interact with the Photon server-side. + /// It's just a client-side setting to suppress updates, should they be sent to one of the blocked groups. + /// + /// This setting is not particularly useful, as it means that updates literally never reach the server or anyone else. + /// Use with care. + /// + /// The interest group to affect. + /// Sets if sending to group is enabled (or not). + public static void SetSendingEnabled(byte group, bool enabled) + { + // TODO: check can use network + + if (!enabled) + { + blockedSendingGroups.Add(group); // can be added to HashSet no matter if already in it + } + else + { + blockedSendingGroups.Remove(group); + } + } + + + + /// Enable/disable sending on given groups (applied to PhotonViews) + /// + /// This does not interact with the Photon server-side. + /// It's just a client-side setting to suppress updates, should they be sent to one of the blocked groups. + /// + /// This setting is not particularly useful, as it means that updates literally never reach the server or anyone else. + /// Use with care. + /// The interest groups to enable sending on (or null). + /// The interest groups to disable sending on (or null). + public static void SetSendingEnabled(byte[] disableGroups, byte[] enableGroups) + { + // TODO: check can use network + + if (disableGroups != null) + { + for (int index = 0; index < disableGroups.Length; index++) + { + byte g = disableGroups[index]; + blockedSendingGroups.Add(g); + } + } + + if (enableGroups != null) + { + for (int index = 0; index < enableGroups.Length; index++) + { + byte g = enableGroups[index]; + blockedSendingGroups.Remove(g); + } + } + } + + + internal static void NewSceneLoaded() + { + if (loadingLevelAndPausedNetwork) + { + _AsyncLevelLoadingOperation = null; + loadingLevelAndPausedNetwork = false; + PhotonNetwork.IsMessageQueueRunning = true; + } + else + { + PhotonNetwork.SetLevelInPropsIfSynced(SceneManagerHelper.ActiveSceneName); + } + + // Debug.Log("OnLevelWasLoaded photonViewList.Count: " + photonViewList.Count); // Exit Games internal log + + List removeKeys = new List(); + foreach (KeyValuePair kvp in photonViewList) + { + PhotonView view = kvp.Value; + if (view == null) + { + removeKeys.Add(kvp.Key); + } + } + + for (int index = 0; index < removeKeys.Count; index++) + { + + int key = removeKeys[index]; + photonViewList.Remove(key); + } + + if (removeKeys.Count > 0) + { + if (PhotonNetwork.LogLevel >= PunLogLevel.Informational) + Debug.Log("New level loaded. Removed " + removeKeys.Count + " scene view IDs from last level."); + } + } + + + /// + /// Defines how many updated produced by OnPhotonSerialize() are batched into one message. + /// + /// + /// A low number increases overhead, a high number might lead to fragmented messages. + /// + public static int ObjectsInOneUpdate = 20; + + + private static readonly PhotonStream serializeStreamOut = new PhotonStream(true, null); + private static readonly PhotonStream serializeStreamIn = new PhotonStream(false, null); + + + /// cache the RaiseEventOptions to prevent redundant Memory Allocation + private static RaiseEventOptions serializeRaiseEvOptions = new RaiseEventOptions(); + + private struct RaiseEventBatch : IEquatable + { + public byte Group; + public bool Reliable; + + public override int GetHashCode() + { + return (this.Group << 1) + (this.Reliable ? 1 : 0); + } + + public bool Equals(RaiseEventBatch other) + { + return this.Reliable == other.Reliable && this.Group == other.Group; + } + } + + + private class SerializeViewBatch : IEquatable, IEquatable + { + public readonly RaiseEventBatch Batch; + public List ObjectUpdates; + private int defaultSize = PhotonNetwork.ObjectsInOneUpdate; + private int offset; + + + // the offset enables us to skip the first X entries in the ObjectUpdate(s), leaving room for (e.g.) timestamp of sending and level prefix + public SerializeViewBatch(RaiseEventBatch batch, int offset) + { + this.Batch = batch; + this.ObjectUpdates = new List(this.defaultSize); + this.offset = offset; + for (int i = 0; i < offset; i++) this.ObjectUpdates.Add(null); + } + + public override int GetHashCode() + { + return (this.Batch.Group << 1) + (this.Batch.Reliable ? 1 : 0); + } + + public bool Equals(SerializeViewBatch other) + { + return this.Equals(other.Batch); + } + + public bool Equals(RaiseEventBatch other) + { + return this.Batch.Reliable == other.Reliable && this.Batch.Group == other.Group; + } + + public override bool Equals(object obj) + { + SerializeViewBatch other = obj as SerializeViewBatch; + return other != null && this.Batch.Equals(other.Batch); + } + + public void Clear() + { + this.ObjectUpdates.Clear(); + for (int i = 0; i < offset; i++) this.ObjectUpdates.Add(null); + } + + public void Add(List viewData) + { + if (this.ObjectUpdates.Count >= this.ObjectUpdates.Capacity) + { + // NOTE: we could also trim to new size + throw new Exception("Can't add. Size exceeded."); + } + + this.ObjectUpdates.Add(viewData); + } + } + + + private static readonly Dictionary serializeViewBatches = new Dictionary(); + + + /// Calls all locally controlled PhotonViews to write their updates in OnPhotonSerializeView. Called by a PhotonHandler. + internal static void RunViewUpdate() + { + if (PhotonNetwork.OfflineMode || CurrentRoom == null || CurrentRoom.Players == null) + { + return; + } + + + // no need to send OnSerialize messages while being alone (these are not buffered anyway) +#if !PHOTON_DEVELOP + if (CurrentRoom.Players.Count <= 1) + { + return; + } +#else + serializeRaiseEvOptions.Receivers = (CurrentRoom.Players.Count == 1) ? ReceiverGroup.All : ReceiverGroup.Others; +#endif + + + + /* Format of the event's data object[]: + * [0] = PhotonNetwork.ServerTimestamp; + * [1] = currentLevelPrefix; OPTIONAL! + * [2] = object[] of PhotonView x + * [3] = object[] of PhotonView y or NULL + * [...] + * + * We only combine updates for XY objects into one RaiseEvent to avoid fragmentation. + * The Reliability and Interest Group are only used for RaiseEvent and not contained in the event/data that reaches the other clients. + * This is read in OnEvent(). + */ + + + var enumerator = photonViewList.GetEnumerator(); // replacing foreach (PhotonView view in this.photonViewList.Values) for memory allocation improvement + while (enumerator.MoveNext()) + { + PhotonView view = enumerator.Current.Value; + + // a client only sends updates for active, synchronized PhotonViews that are under it's control (isMine) + if (view.Synchronization == ViewSynchronization.Off || view.IsMine == false || view.isActiveAndEnabled == false) + { + continue; + } + + if (blockedSendingGroups.Contains(view.Group)) + { + continue; // Block sending on this group + } + + + // call the PhotonView's serialize method(s) + List evData = OnSerializeWrite(view); + if (evData == null) + { + continue; + } + + RaiseEventBatch eventBatch = new RaiseEventBatch(); + eventBatch.Reliable = view.Synchronization == ViewSynchronization.ReliableDeltaCompressed || view.mixedModeIsReliable; + eventBatch.Group = view.Group; + + SerializeViewBatch svBatch = null; + bool found = serializeViewBatches.TryGetValue(eventBatch, out svBatch); + if (!found) + { + svBatch = new SerializeViewBatch(eventBatch, 2); // NOTE: the 2 first entries are kept empty for timestamp and level prefix + serializeViewBatches.Add(eventBatch, svBatch); + } + + svBatch.Add(evData); + if (svBatch.ObjectUpdates.Count == svBatch.ObjectUpdates.Capacity) + { + SendSerializeViewBatch(svBatch); + } + } + + var enumeratorB = serializeViewBatches.GetEnumerator(); + while (enumeratorB.MoveNext()) + { + SendSerializeViewBatch(enumeratorB.Current.Value); + } + } + + + private static void SendSerializeViewBatch(SerializeViewBatch batch) + { + if (batch == null || batch.ObjectUpdates.Count <= 2) + { + return; + } + + serializeRaiseEvOptions.InterestGroup = batch.Batch.Group; + batch.ObjectUpdates[0] = PhotonNetwork.ServerTimestamp; + batch.ObjectUpdates[1] = (currentLevelPrefix != 0) ? (object)currentLevelPrefix : null; + byte code = batch.Batch.Reliable ? PunEvent.SendSerializeReliable : PunEvent.SendSerialize; + + PhotonNetwork.RaiseEventInternal(code, batch.ObjectUpdates, serializeRaiseEvOptions, batch.Batch.Reliable ? SendOptions.SendReliable : SendOptions.SendUnreliable); + batch.Clear(); + } + + + // calls OnPhotonSerializeView (through ExecuteOnSerialize) + // the content created here is consumed by receivers in: ReadOnSerialize + private static List OnSerializeWrite(PhotonView view) + { + if (view.Synchronization == ViewSynchronization.Off) + { + return null; + } + + + // each view creates a list of values that should be sent + PhotonMessageInfo info = new PhotonMessageInfo(NetworkingClient.LocalPlayer, PhotonNetwork.ServerTimestamp, view); + + if (view.syncValues == null) view.syncValues = new List(); + view.syncValues.Clear(); + serializeStreamOut.SetWriteStream(view.syncValues); + serializeStreamOut.SendNext(null); //to become: viewID, + serializeStreamOut.SendNext(null); //to become: is compressed + serializeStreamOut.SendNext(null); //to become: null-values (for compression) followed by: values for this object's update + + + view.SerializeView(serializeStreamOut, info); + + // check if there are actual values to be sent (after the "header" of viewId, (bool)compressed and (int[])nullValues) + if (serializeStreamOut.Count <= SyncFirstValue) + { + return null; + } + + + List currentValues = serializeStreamOut.GetWriteStream(); + currentValues[SyncViewId] = view.ViewID; + currentValues[SyncCompressed] = false; // (bool) compression was used. + currentValues[SyncNullValues] = null; // if reliable compressed, this is non-null. + // next: sequence of values in this object's update. + + if (view.Synchronization == ViewSynchronization.Unreliable) + { + return currentValues; + } + + + // ViewSynchronization: Off, Unreliable, UnreliableOnChange, ReliableDeltaCompressed + if (view.Synchronization == ViewSynchronization.UnreliableOnChange) + { + if (AlmostEquals(currentValues, view.lastOnSerializeDataSent)) + { + if (view.mixedModeIsReliable) + { + return null; + } + + view.mixedModeIsReliable = true; + List temp = view.lastOnSerializeDataSent; // TODO: extract "exchange" into method in PV + view.lastOnSerializeDataSent = currentValues; + view.syncValues = temp; + } + else + { + view.mixedModeIsReliable = false; + List temp = view.lastOnSerializeDataSent; // TODO: extract "exchange" into method in PV + view.lastOnSerializeDataSent = currentValues; + view.syncValues = temp; + } + + + return currentValues; + } + + if (view.Synchronization == ViewSynchronization.ReliableDeltaCompressed) + { + // TODO: fix delta compression / comparison + + // compress content of data set (by comparing to view.lastOnSerializeDataSent) + // the "original" dataArray is NOT modified by DeltaCompressionWrite + List dataToSend = DeltaCompressionWrite(view.lastOnSerializeDataSent, currentValues); + + // cache the values that were written this time (not the compressed values) + List temp = view.lastOnSerializeDataSent; // TODO: extract "exchange" into method in PV + view.lastOnSerializeDataSent = currentValues; + view.syncValues = temp; + + return dataToSend; + } + + return null; + } + + /// + /// Reads updates created by OnSerializeWrite + /// + private static void OnSerializeRead(object[] data, Player sender, int networkTime, short correctPrefix) + { + // read view ID from key (byte)0: a int-array (PUN 1.17++) + int viewID = (int)data[SyncViewId]; + + + // debug: + //LogObjectArray(data); + + PhotonView view = GetPhotonView(viewID); + if (view == null) + { + Debug.LogWarning("Received OnSerialization for view ID " + viewID + ". We have no such PhotonView! Ignore this if you're joining or leaving a room. State: " + NetworkingClient.State); + return; + } + + if (view.Prefix > 0 && correctPrefix != view.Prefix) + { + Debug.LogError("Received OnSerialization for view ID " + viewID + " with prefix " + correctPrefix + ". Our prefix is " + view.Prefix); + return; + } + + // SetReceiving filtering + if (view.Group != 0 && !allowedReceivingGroups.Contains(view.Group)) + { + return; // Ignore group + } + + + + + if (view.Synchronization == ViewSynchronization.ReliableDeltaCompressed) + { + object[] uncompressed = DeltaCompressionRead(view.lastOnSerializeDataReceived, data); + //LogObjectArray(uncompressed,"uncompressed "); + if (uncompressed == null) + { + // Skip this packet as we haven't got received complete-copy of this view yet. + if (PhotonNetwork.LogLevel >= PunLogLevel.Informational) + { + Debug.Log("Skipping packet for " + view.name + " [" + view.ViewID + + "] as we haven't received a full packet for delta compression yet. This is OK if it happens for the first few frames after joining a game."); + } + return; + } + + // store last received values (uncompressed) for delta-compression usage + view.lastOnSerializeDataReceived = uncompressed; + data = uncompressed; + } + + // TODO: re-check if ownership needs to be adjusted based on updates. + // most likely, only the PhotonView.Controller should be affected, if anything at all. + // TODO: find a way to sync the owner of a PV for late joiners. + + //// This is when joining late to assign ownership to the sender + //// this has nothing to do with reading the actual synchronization update. + //// We don't do anything if OwnerShip Was Touched, which means we got the infos already. We only possibly act if ownership was never transfered. + //// We do override OwnershipWasTransfered if owner is the masterClient. + //if (sender.ID != view.OwnerActorNr && (!view.OwnershipWasTransfered || view.OwnerActorNr == 0) && view.currentMasterID == -1) + //{ + // // obviously the owner changed and we didn't yet notice. + // //Debug.Log("Adjusting owner to sender of updates. From: " + view.OwnerActorNr + " to: " + sender.ID); + // view.OwnerActorNr = sender.ID; + //} + + serializeStreamIn.SetReadStream(data, 3); + PhotonMessageInfo info = new PhotonMessageInfo(sender, networkTime, view); + + view.DeserializeView(serializeStreamIn, info); + } + + + // compresses currentContent by using NULL as value if currentContent equals previousContent + // skips initial indexes, as defined by SyncFirstValue + // to conserve memory, the previousContent is re-used as buffer for the result! duplicate the values before using this, if needed + // returns null, if nothing must be sent (current content might be null, which also returns null) + // SyncFirstValue should be the index of the first actual data-value (3 in PUN's case, as 0=viewId, 1=(bool)compressed, 2=(int[])values that are now null) + public const int SyncViewId = 0; + public const int SyncCompressed = 1; + public const int SyncNullValues = 2; + public const int SyncFirstValue = 3; + + private static List DeltaCompressionWrite(List previousContent, List currentContent) + { + if (currentContent == null || previousContent == null || previousContent.Count != currentContent.Count) + { + return currentContent; // the current data needs to be sent (which might be null) + } + + if (currentContent.Count <= SyncFirstValue) + { + return null; // this send doesn't contain values (except the "headers"), so it's not being sent + } + + List compressedContent = previousContent; // the previous content is no longer needed, once we compared the values! + compressedContent[SyncCompressed] = false; + int compressedValues = 0; + + Queue valuesThatAreChangedToNull = null; + for (int index = SyncFirstValue; index < currentContent.Count; index++) + { + object newObj = currentContent[index]; + object oldObj = previousContent[index]; + if (AlmostEquals(newObj, oldObj)) + { + // compress (by using null, instead of value, which is same as before) + compressedValues++; + compressedContent[index] = null; + } + else + { + compressedContent[index] = newObj; + + // value changed, we don't replace it with null + // new value is null (like a compressed value): we have to mark it so it STAYS null instead of being replaced with previous value + if (newObj == null) + { + if (valuesThatAreChangedToNull == null) + { + valuesThatAreChangedToNull = new Queue(currentContent.Count); + } + valuesThatAreChangedToNull.Enqueue(index); + } + } + } + + // Only send the list of compressed fields if we actually compressed 1 or more fields. + if (compressedValues > 0) + { + if (compressedValues == currentContent.Count - SyncFirstValue) + { + // all values are compressed to null, we have nothing to send + return null; + } + + compressedContent[SyncCompressed] = true; + if (valuesThatAreChangedToNull != null) + { + compressedContent[SyncNullValues] = valuesThatAreChangedToNull.ToArray(); // data that is actually null (not just cause we didn't want to send it) + } + } + + compressedContent[SyncViewId] = currentContent[SyncViewId]; + return compressedContent; // some data was compressed but we need to send something + } + + + private static object[] DeltaCompressionRead(object[] lastOnSerializeDataReceived, object[] incomingData) + { + if ((bool)incomingData[SyncCompressed] == false) + { + // index 1 marks "compressed" as being true. + return incomingData; + } + + // Compression was applied (as data[1] == true) + // we need a previous "full" list of values to restore values that are null in this msg. else, ignore this + if (lastOnSerializeDataReceived == null) + { + return null; + } + + + int[] indexesThatAreChangedToNull = incomingData[2] as int[]; + for (int index = SyncFirstValue; index < incomingData.Length; index++) + { + if (indexesThatAreChangedToNull != null && indexesThatAreChangedToNull.Contains(index)) + { + continue; // if a value was set to null in this update, we don't need to fetch it from an earlier update + } + if (incomingData[index] == null) + { + // we replace null values in this received msg unless a index is in the "changed to null" list + object lastValue = lastOnSerializeDataReceived[index]; + incomingData[index] = lastValue; + } + } + + return incomingData; + } + + + // startIndex should be the index of the first actual data-value (3 in PUN's case, as 0=viewId, 1=(bool)compressed, 2=(int[])values that are now null) + // returns the incomingData with modified content. any object being null (means: value unchanged) gets replaced with a previously sent value. incomingData is being modified + + + private static bool AlmostEquals(IList lastData, IList currentContent) + { + if (lastData == null && currentContent == null) + { + return true; + } + + if (lastData == null || currentContent == null || (lastData.Count != currentContent.Count)) + { + return false; + } + + for (int index = 0; index < currentContent.Count; index++) + { + object newObj = currentContent[index]; + object oldObj = lastData[index]; + if (!AlmostEquals(newObj, oldObj)) + { + return false; + } + } + + return true; + } + + /// + /// Returns true if both objects are almost identical. + /// Used to check whether two objects are similar enough to skip an update. + /// + static bool AlmostEquals(object one, object two) + { + if (one == null || two == null) + { + return one == null && two == null; + } + + if (!one.Equals(two)) + { + // if A is not B, lets check if A is almost B + if (one is Vector3) + { + Vector3 a = (Vector3)one; + Vector3 b = (Vector3)two; + if (a.AlmostEquals(b, PhotonNetwork.PrecisionForVectorSynchronization)) + { + return true; + } + } + else if (one is Vector2) + { + Vector2 a = (Vector2)one; + Vector2 b = (Vector2)two; + if (a.AlmostEquals(b, PhotonNetwork.PrecisionForVectorSynchronization)) + { + return true; + } + } + else if (one is Quaternion) + { + Quaternion a = (Quaternion)one; + Quaternion b = (Quaternion)two; + if (a.AlmostEquals(b, PhotonNetwork.PrecisionForQuaternionSynchronization)) + { + return true; + } + } + else if (one is float) + { + float a = (float)one; + float b = (float)two; + if (a.AlmostEquals(b, PhotonNetwork.PrecisionForFloatSynchronization)) + { + return true; + } + } + + // one does not equal two + return false; + } + + return true; + } + + // NOTE: Might be used as replacement for the equivalent method in SupportClass. + internal static bool GetMethod(MonoBehaviour monob, string methodType, out MethodInfo mi) + { + mi = null; + + if (monob == null || string.IsNullOrEmpty(methodType)) + { + return false; + } + + List methods = SupportClassPun.GetMethods(monob.GetType(), null); + for (int index = 0; index < methods.Count; index++) + { + MethodInfo methodInfo = methods[index]; + if (methodInfo.Name.Equals(methodType)) + { + mi = methodInfo; + return true; + } + } + + return false; + } + + + /// Internally used to detect the current scene and load it if PhotonNetwork.AutomaticallySyncScene is enabled. + internal static void LoadLevelIfSynced() + { + if (!PhotonNetwork.AutomaticallySyncScene || PhotonNetwork.IsMasterClient || PhotonNetwork.CurrentRoom == null) + { + return; + } + + // check if "current level" is set in props + if (!PhotonNetwork.CurrentRoom.CustomProperties.ContainsKey(CurrentSceneProperty)) + { + return; + } + + // if loaded level is not the one defined by master in props, load that level + object sceneId = PhotonNetwork.CurrentRoom.CustomProperties[CurrentSceneProperty]; + if (sceneId is int) + { + if (SceneManagerHelper.ActiveSceneBuildIndex != (int)sceneId) + { + PhotonNetwork.LoadLevel((int)sceneId); + } + } + else if (sceneId is string) + { + if (SceneManagerHelper.ActiveSceneName != (string)sceneId) + { + PhotonNetwork.LoadLevel((string)sceneId); + } + } + } + + + internal static void SetLevelInPropsIfSynced(object levelId) + { + if (!PhotonNetwork.AutomaticallySyncScene || !PhotonNetwork.IsMasterClient || PhotonNetwork.CurrentRoom == null) + { + return; + } + if (levelId == null) + { + Debug.LogError("Parameter levelId can't be null!"); + return; + } + + + // check if "current level" is already set in the room properties (then we don't set it again) + if (PhotonNetwork.CurrentRoom.CustomProperties.ContainsKey(CurrentSceneProperty)) + { + object levelIdInProps = PhotonNetwork.CurrentRoom.CustomProperties[CurrentSceneProperty]; + //Debug.Log("levelId (to set): "+ levelId + " levelIdInProps: " + levelIdInProps + " SceneManagerHelper.ActiveSceneName: "+ SceneManagerHelper.ActiveSceneName); + + if (levelId.Equals(levelIdInProps)) + { + //Debug.LogWarning("The levelId equals levelIdInProps. Don't set property again."); + return; + } + else + { + // if the new levelId does not equal the level in properties, there is a chance that build index and scene name refer to the same scene. + // as Unity does not provide all scenes with build index, we only check for the currently loaded scene (with a high chance this is the correct one). + int scnIndex = SceneManagerHelper.ActiveSceneBuildIndex; + string scnName = SceneManagerHelper.ActiveSceneName; + + if ((levelId.Equals(scnIndex) && levelIdInProps.Equals(scnName)) || (levelId.Equals(scnName) && levelIdInProps.Equals(scnIndex))) + { + //Debug.LogWarning("The levelId and levelIdInProps refer to the same scene. Don't set property for it."); + return; + } + } + } + + + // if the new levelId does not match the current room-property, we can cancel existing loading (as we start a new one) + if (_AsyncLevelLoadingOperation != null) + { + if (!_AsyncLevelLoadingOperation.isDone) + { + Debug.LogWarning("PUN cancels an ongoing async level load, as another scene should be loaded. Next scene to load: " + levelId); + } + + _AsyncLevelLoadingOperation.allowSceneActivation = false; + _AsyncLevelLoadingOperation = null; + } + + + // current level is not yet in props, or different, so this client has to set it + Hashtable setScene = new Hashtable(); + if (levelId is int) setScene[CurrentSceneProperty] = (int)levelId; + else if (levelId is string) setScene[CurrentSceneProperty] = (string)levelId; + else Debug.LogError("Parameter levelId must be int or string!"); + + PhotonNetwork.CurrentRoom.SetCustomProperties(setScene); + SendAllOutgoingCommands(); // send immediately! because: in most cases the client will begin to load and pause sending anything for a while + } + + + private static void OnEvent(EventData photonEvent) + { + int actorNr = photonEvent.Sender; + Player originatingPlayer = null; + if (actorNr > 0 && NetworkingClient.CurrentRoom != null) + { + originatingPlayer = NetworkingClient.CurrentRoom.GetPlayer(actorNr); + } + + switch (photonEvent.Code) + { + case EventCode.Join: + ResetPhotonViewsOnSerialize(); + break; + + case PunEvent.RPC: + ExecuteRpc(photonEvent.CustomData as Hashtable, originatingPlayer); + break; + + case PunEvent.SendSerialize: + case PunEvent.SendSerializeReliable: + // Debug.Log(photonEvent.ToStringFull()); + + /* This case must match definition in RunViewUpdate() and OnSerializeWrite(). + * Format of the event's data object[]: + * [0] = PhotonNetwork.ServerTimestamp; + * [1] = currentLevelPrefix; OPTIONAL! + * [2] = object[] of PhotonView x + * [3] = object[] of PhotonView y or NULL + * [...] + * + * We only combine updates for XY objects into one RaiseEvent to avoid fragmentation. + * The Reliability and Interest Group are only used for RaiseEvent and not contained in the event/data that reaches the other clients. + * This is read in OnEvent(). + */ + + object[] pvUpdates = (object[])photonEvent[ParameterCode.Data]; + int remoteUpdateServerTimestamp = (int)pvUpdates[0]; + short remoteLevelPrefix = (pvUpdates[1] != null) ? (byte)pvUpdates[1] : (short)0; + + object[] viewUpdate = null; + for (int i = 2; i < pvUpdates.Length; i++) + { + viewUpdate = pvUpdates[i] as object[]; + if (viewUpdate == null) + { + break; + } + OnSerializeRead(viewUpdate, originatingPlayer, remoteUpdateServerTimestamp, remoteLevelPrefix); + } + break; + + case PunEvent.Instantiation: + NetworkInstantiate((Hashtable)photonEvent.CustomData, originatingPlayer); + break; + + case PunEvent.CloseConnection: + + // MasterClient "requests" a disconnection from us + if (PhotonNetwork.EnableCloseConnection == false) + { + Debug.LogWarning("CloseConnection received from " + originatingPlayer + ". PhotonNetwork.EnableCloseConnection is false. Ignoring the request (this client stays in the room)."); + } + else if (originatingPlayer == null || !originatingPlayer.IsMasterClient) + { + Debug.LogWarning("CloseConnection received from " + originatingPlayer + ". That player is not the Master Client. " + PhotonNetwork.MasterClient + " is."); + } + else if (PhotonNetwork.EnableCloseConnection) + { + PhotonNetwork.LeaveRoom(false); + } + + break; + + case PunEvent.DestroyPlayer: + Hashtable evData = (Hashtable)photonEvent.CustomData; + int targetPlayerId = (int)evData[keyByteZero]; + if (targetPlayerId >= 0) + { + DestroyPlayerObjects(targetPlayerId, true); + } + else + { + DestroyAll(true); + } + break; + + case EventCode.Leave: + + // destroy objects & buffered messages + if (CurrentRoom != null && CurrentRoom.AutoCleanUp && (originatingPlayer == null || !originatingPlayer.IsInactive)) + { + DestroyPlayerObjects(actorNr, true); + } + break; + + case PunEvent.Destroy: + evData = (Hashtable)photonEvent.CustomData; + int instantiationId = (int)evData[keyByteZero]; + // Debug.Log("Ev Destroy for viewId: " + instantiationId + " sent by owner: " + (instantiationId / PhotonNetwork.MAX_VIEW_IDS == actorNr) + " this client is owner: " + (instantiationId / PhotonNetwork.MAX_VIEW_IDS == this.LocalPlayer.ID)); + + + PhotonView pvToDestroy = null; + if (photonViewList.TryGetValue(instantiationId, out pvToDestroy)) + { + RemoveInstantiatedGO(pvToDestroy.gameObject, true); + } + else + { + Debug.LogError("Ev Destroy Failed. Could not find PhotonView with instantiationId " + instantiationId + ". Sent by actorNr: " + actorNr); + } + + break; + + case PunEvent.OwnershipRequest: + { + int[] requestValues = (int[])photonEvent.CustomData; + int requestedViewId = requestValues[0]; + int requestedFromOwnerId = requestValues[1]; + + + PhotonView requestedView = GetPhotonView(requestedViewId); + if (requestedView == null) + { + Debug.LogWarning("Can't find PhotonView of incoming OwnershipRequest. ViewId not found: " + requestedViewId); + break; + } + + if (PhotonNetwork.LogLevel == PunLogLevel.Informational) + { + Debug.Log(string.Format("OwnershipRequest. actorNr {0} requests view {1} from {2}. current pv owner: {3} is {4}. isMine: {6} master client: {5}", actorNr, requestedViewId, requestedFromOwnerId, requestedView.OwnerActorNr, requestedView.IsOwnerActive ? "active" : "inactive", MasterClient.ActorNumber, requestedView.IsMine)); + } + + switch (requestedView.OwnershipTransfer) + { + case OwnershipOption.Takeover: + int currentPvOwnerId = requestedView.OwnerActorNr; + if (requestedFromOwnerId == currentPvOwnerId || (requestedFromOwnerId == 0 && currentPvOwnerId == MasterClient.ActorNumber) || currentPvOwnerId == 0) + { + // a takeover is successful automatically, if taken from current owner + Player prevOwner = requestedView.Owner; + + requestedView.OwnerActorNr = actorNr; + requestedView.ControllerActorNr = actorNr; + + if (PhotonNetwork.OnOwnershipTransferedEv != null) + { + PhotonNetwork.OnOwnershipTransferedEv(requestedView, prevOwner); + } + } + else + { + + if (PhotonNetwork.OnOwnershipTransferFailedEv != null) + { + PhotonNetwork.OnOwnershipTransferFailedEv(requestedView, originatingPlayer); + } + //Debug.LogWarning("requestedView.OwnershipTransfer was ignored! "); + } + break; + + case OwnershipOption.Request: + if (PhotonNetwork.OnOwnershipRequestEv != null) + { + PhotonNetwork.OnOwnershipRequestEv(requestedView, originatingPlayer); + } + break; + + default: + Debug.LogWarning("Ownership mode == " + (requestedView.OwnershipTransfer) + ". Ignoring request."); + break; + } + } + break; + + case PunEvent.OwnershipTransfer: + { + int[] transferViewToUserID = (int[])photonEvent.CustomData; + int requestedViewId = transferViewToUserID[0]; + int newOwnerId = transferViewToUserID[1]; + + if (PhotonNetwork.LogLevel >= PunLogLevel.Informational) + { + Debug.Log("Ev OwnershipTransfer. ViewID " + requestedViewId + " to: " + newOwnerId + " Time: " + Environment.TickCount % 1000); + } + + PhotonView requestedView = GetPhotonView(requestedViewId); + if (requestedView != null) + { + // Only apply this if pv allows Takeover, or allows Request and this message originates from the controller or owner. + if (requestedView.OwnershipTransfer == OwnershipOption.Takeover || + (requestedView.OwnershipTransfer == OwnershipOption.Request && (originatingPlayer == requestedView.Controller || originatingPlayer == requestedView.Owner))) + { + Player prevOwner = requestedView.Owner; + + requestedView.OwnerActorNr= newOwnerId; + requestedView.ControllerActorNr = newOwnerId; + + if (PhotonNetwork.OnOwnershipTransferedEv != null) + { + PhotonNetwork.OnOwnershipTransferedEv(requestedView, prevOwner); + } + } + else if (PhotonNetwork.LogLevel >= PunLogLevel.Informational) + { + if (requestedView.OwnershipTransfer == OwnershipOption.Request) + Debug.Log("Failed incoming OwnershipTransfer attempt for '" + requestedView.name + "; " + requestedViewId + + " - photonView has OwnershipTransfer set to OwnershipOption.Request, but Player attempting to change owner is not the current owner/controller."); + else + Debug.Log("Failed incoming OwnershipTransfer attempt for '" + requestedView.name + "; " + requestedViewId + + " - photonView has OwnershipTransfer set to OwnershipOption.Fixed."); + } + } + else if (PhotonNetwork.LogLevel >= PunLogLevel.ErrorsOnly) + { + Debug.LogErrorFormat("Failed to find a PhotonView with ID={0} for incoming OwnershipTransfer event (newOwnerActorNumber={1}), sender={2}", + requestedViewId, newOwnerId, actorNr); + } + + break; + } + + case PunEvent.OwnershipUpdate: + { + reusablePVHashset.Clear(); + + // Deserialize the list of exceptions, these are views on the master who's Owner and Creator didn't match. + int[] viewOwnerPair = (int[])photonEvent.CustomData; + + for (int i = 0, cnt = viewOwnerPair.Length; i < cnt; i++) + { + int viewId = viewOwnerPair[i]; + i++; + int newOwnerId = viewOwnerPair[i]; + + PhotonView view = GetPhotonView(viewId); + if (view == null) + { + if (PhotonNetwork.LogLevel >= PunLogLevel.ErrorsOnly) + { + Debug.LogErrorFormat("Failed to find a PhotonView with ID={0} for incoming OwnershipUpdate event (newOwnerActorNumber={1}), sender={2}. If you load scenes, make sure to pause the message queue.", viewId, newOwnerId, actorNr); + } + + continue; + } + + Player prevOwner = view.Owner; + Player newOwner = CurrentRoom.GetPlayer(newOwnerId, true); + + view.OwnerActorNr= newOwnerId; + view.ControllerActorNr = newOwnerId; + + reusablePVHashset.Add(view); + // If this produces an owner change locally, fire the OnOwnershipTransfered callbacks + if (PhotonNetwork.OnOwnershipTransferedEv != null && newOwner != prevOwner) + { + PhotonNetwork.OnOwnershipTransferedEv(view, prevOwner); + } + } + + // Initialize all views. Typically this is just fired on a new client after it joins a room and gets the first OwnershipUpdate from the Master. + // This was moved from PhotonHandler OnJoinedRoom to here, to allow objects to retain controller = -1 until an controller is actually known. + foreach (var view in PhotonViewCollection) + { + if (!reusablePVHashset.Contains(view)) + view.RebuildControllerCache(); + } + + break; + } + + + } + } + + private static void OnOperation(OperationResponse opResponse) + { + switch (opResponse.OperationCode) + { + case OperationCode.GetRegions: + if (opResponse.ReturnCode != 0) + { + if (PhotonNetwork.LogLevel >= PunLogLevel.Full) + { + Debug.Log("OpGetRegions failed. Will not ping any. ReturnCode: " + opResponse.ReturnCode); + } + return; + } + if (ConnectMethod == ConnectMethod.ConnectToBest) + { + string previousBestRegionSummary = PhotonNetwork.BestRegionSummaryInPreferences; + + if (PhotonNetwork.LogLevel >= PunLogLevel.Informational) + { + Debug.Log("PUN got region list. Going to ping minimum regions, based on this previous result summary: " + previousBestRegionSummary); + } + NetworkingClient.RegionHandler.PingMinimumOfRegions(OnRegionsPinged, previousBestRegionSummary); + } + break; + case OperationCode.JoinGame: + if (Server == ServerConnection.GameServer) + { + PhotonNetwork.LoadLevelIfSynced(); + } + break; + } + } + + private static void OnClientStateChanged(ClientState previousState, ClientState state) + { + if ( + (previousState == ClientState.Joined && state == ClientState.Disconnected) || + (Server == ServerConnection.GameServer && (state == ClientState.Disconnecting || state == ClientState.DisconnectingFromGameServer)) + ) + { + LeftRoomCleanup(); + } + + if (state == ClientState.ConnectedToMasterServer && _cachedRegionHandler != null) + { + BestRegionSummaryInPreferences = _cachedRegionHandler.SummaryToCache; + _cachedRegionHandler = null; + } + } + + // to be used in the main thread. as OnRegionsPinged is called in a separate thread and so we can't use some of the Unity methods (like saving playerPrefs) + private static RegionHandler _cachedRegionHandler; + + private static void OnRegionsPinged(RegionHandler regionHandler) + { + if (PhotonNetwork.LogLevel >= PunLogLevel.Informational) + { + Debug.Log(regionHandler.GetResults()); + } + + _cachedRegionHandler = regionHandler; + //PhotonNetwork.BestRegionSummaryInPreferences = regionHandler.SummaryToCache; // can not be called here, as it's not in the main thread + + + // the dev region overrides the best region selection in "development" builds (unless it was set but is empty). + +#if UNITY_EDITOR + if (!PhotonServerSettings.DevRegionSetOnce) + { + // if no dev region was defined before or if the dev region is unavailable, set a new dev region + PhotonServerSettings.DevRegionSetOnce = true; + PhotonServerSettings.DevRegion = _cachedRegionHandler.BestRegion.Code; + } +#endif + +#if DEVELOPMENT_BUILD || UNITY_EDITOR + if (!string.IsNullOrEmpty(PhotonServerSettings.DevRegion) && ConnectMethod == ConnectMethod.ConnectToBest) + { + Debug.LogWarning("PUN is in development mode (development build). As the 'dev region' is not empty (" + PhotonServerSettings.DevRegion + ") it overrides the found best region. See PhotonServerSettings."); + + string _finalDevRegion = PhotonServerSettings.DevRegion; + if (!_cachedRegionHandler.EnabledRegions.Any(p => p.Code == PhotonServerSettings.DevRegion)) + { + _finalDevRegion = _cachedRegionHandler.EnabledRegions[0].Code; + + Debug.LogWarning("The 'dev region' (" + PhotonServerSettings.DevRegion + ") was not found in the enabled regions, the first enabled region is picked (" + _finalDevRegion + ")"); + } + + PhotonNetwork.NetworkingClient.ConnectToRegionMaster(_finalDevRegion); + return; + } +#endif + + if (NetworkClientState == ClientState.ConnectedToNameServer) + { + PhotonNetwork.NetworkingClient.ConnectToRegionMaster(regionHandler.BestRegion.Code); + } + } + } +} diff --git a/Assets/Photon/PhotonUnityNetworking/Code/PhotonNetworkPart.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/PhotonNetworkPart.cs.meta new file mode 100644 index 00000000..b56fbf00 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/PhotonNetworkPart.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cbf2b3734a024f842bd50f8738feb400 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/PhotonStreamQueue.cs b/Assets/Photon/PhotonUnityNetworking/Code/PhotonStreamQueue.cs new file mode 100644 index 00000000..33a0b8f2 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/PhotonStreamQueue.cs @@ -0,0 +1,197 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// Contains the PhotonStreamQueue. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + using System.Collections.Generic; + using UnityEngine; + + /// + /// The PhotonStreamQueue helps you poll object states at higher frequencies than what + /// PhotonNetwork.SendRate dictates and then sends all those states at once when + /// Serialize() is called. + /// On the receiving end you can call Deserialize() and then the stream will roll out + /// the received object states in the same order and timeStep they were recorded in. + /// + public class PhotonStreamQueue + { + private int m_SampleRate; + private int m_SampleCount; + private int m_ObjectsPerSample = -1; + + private float m_LastSampleTime = -Mathf.Infinity; + private int m_LastFrameCount = -1; + private int m_NextObjectIndex = -1; + + private List m_Objects = new List(); + + private bool m_IsWriting; + + /// + /// Initializes a new instance of the class. + /// + /// How many times per second should the object states be sampled + public PhotonStreamQueue(int sampleRate) + { + this.m_SampleRate = sampleRate; + } + + private void BeginWritePackage() + { + //If not enough time has passed since the last sample, we don't want to write anything + if (Time.realtimeSinceStartup < this.m_LastSampleTime + 1f / this.m_SampleRate) + { + this.m_IsWriting = false; + return; + } + + if (this.m_SampleCount == 1) + { + this.m_ObjectsPerSample = this.m_Objects.Count; + //Debug.Log( "Setting m_ObjectsPerSample to " + m_ObjectsPerSample ); + } + else if (this.m_SampleCount > 1) + { + if (this.m_Objects.Count / this.m_SampleCount != this.m_ObjectsPerSample) + { + Debug.LogWarning("The number of objects sent via a PhotonStreamQueue has to be the same each frame"); + Debug.LogWarning("Objects in List: " + this.m_Objects.Count + " / Sample Count: " + this.m_SampleCount + " = " + this.m_Objects.Count / this.m_SampleCount + " != " + this.m_ObjectsPerSample); + } + } + + this.m_IsWriting = true; + this.m_SampleCount++; + this.m_LastSampleTime = Time.realtimeSinceStartup; + + /*if( m_SampleCount > 1 ) + { + Debug.Log( "Check: " + m_Objects.Count + " / " + m_SampleCount + " = " + ( m_Objects.Count / m_SampleCount ) + " = " + m_ObjectsPerSample ); + }*/ + } + + /// + /// Resets the PhotonStreamQueue. You need to do this whenever the amount of objects you are observing changes + /// + public void Reset() + { + this.m_SampleCount = 0; + this.m_ObjectsPerSample = -1; + + this.m_LastSampleTime = -Mathf.Infinity; + this.m_LastFrameCount = -1; + + this.m_Objects.Clear(); + } + + /// + /// Adds the next object to the queue. This works just like PhotonStream.SendNext + /// + /// The object you want to add to the queue + public void SendNext(object obj) + { + if (Time.frameCount != this.m_LastFrameCount) + { + this.BeginWritePackage(); + } + + this.m_LastFrameCount = Time.frameCount; + + if (this.m_IsWriting == false) + { + return; + } + + this.m_Objects.Add(obj); + } + + /// + /// Determines whether the queue has stored any objects + /// + public bool HasQueuedObjects() + { + return this.m_NextObjectIndex != -1; + } + + /// + /// Receives the next object from the queue. This works just like PhotonStream.ReceiveNext + /// + /// + public object ReceiveNext() + { + if (this.m_NextObjectIndex == -1) + { + return null; + } + + if (this.m_NextObjectIndex >= this.m_Objects.Count) + { + this.m_NextObjectIndex -= this.m_ObjectsPerSample; + } + + return this.m_Objects[this.m_NextObjectIndex++]; + } + + /// + /// Serializes the specified stream. Call this in your OnPhotonSerializeView method to send the whole recorded stream. + /// + /// The PhotonStream you receive as a parameter in OnPhotonSerializeView + public void Serialize(PhotonStream stream) + { + // TODO: find a better solution for this: + // the "if" is a workaround for packages which have only 1 sample/frame. in that case, SendNext didn't set the obj per sample. + if (this.m_Objects.Count > 0 && this.m_ObjectsPerSample < 0) + { + this.m_ObjectsPerSample = this.m_Objects.Count; + } + + stream.SendNext(this.m_SampleCount); + stream.SendNext(this.m_ObjectsPerSample); + + for (int i = 0; i < this.m_Objects.Count; ++i) + { + stream.SendNext(this.m_Objects[i]); + } + + //Debug.Log( "Serialize " + m_SampleCount + " samples with " + m_ObjectsPerSample + " objects per sample. object count: " + m_Objects.Count + " / " + ( m_SampleCount * m_ObjectsPerSample ) ); + + this.m_Objects.Clear(); + this.m_SampleCount = 0; + } + + /// + /// Deserializes the specified stream. Call this in your OnPhotonSerializeView method to receive the whole recorded stream. + /// + /// The PhotonStream you receive as a parameter in OnPhotonSerializeView + public void Deserialize(PhotonStream stream) + { + this.m_Objects.Clear(); + + this.m_SampleCount = (int) stream.ReceiveNext(); + this.m_ObjectsPerSample = (int) stream.ReceiveNext(); + + for (int i = 0; i < this.m_SampleCount * this.m_ObjectsPerSample; ++i) + { + this.m_Objects.Add(stream.ReceiveNext()); + } + + if (this.m_Objects.Count > 0) + { + this.m_NextObjectIndex = 0; + } + else + { + this.m_NextObjectIndex = -1; + } + + //Debug.Log( "Deserialized " + m_SampleCount + " samples with " + m_ObjectsPerSample + " objects per sample. object count: " + m_Objects.Count + " / " + ( m_SampleCount * m_ObjectsPerSample ) ); + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/PhotonStreamQueue.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/PhotonStreamQueue.cs.meta new file mode 100644 index 00000000..b225d0d4 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/PhotonStreamQueue.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 006991e32d9020c4d896f161318a2bc0 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/PhotonUnityNetworking.asmdef b/Assets/Photon/PhotonUnityNetworking/Code/PhotonUnityNetworking.asmdef new file mode 100644 index 00000000..11c54b91 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/PhotonUnityNetworking.asmdef @@ -0,0 +1,10 @@ +{ + "name": "PhotonUnityNetworking", + "references": [ + "PhotonRealtime" + ], + "optionalUnityReferences": [], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/PhotonUnityNetworking.asmdef.meta b/Assets/Photon/PhotonUnityNetworking/Code/PhotonUnityNetworking.asmdef.meta new file mode 100644 index 00000000..e3e63aa8 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/PhotonUnityNetworking.asmdef.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 57c32fc907df0f54e8e6e8f0d2488336 +timeCreated: 1537459565 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/PhotonView.cs b/Assets/Photon/PhotonUnityNetworking/Code/PhotonView.cs new file mode 100644 index 00000000..360e9ac2 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/PhotonView.cs @@ -0,0 +1,826 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// Contains the PhotonView class. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + using System; + using UnityEngine; + using UnityEngine.Serialization; + using System.Collections.Generic; + using Photon.Realtime; + + #if UNITY_EDITOR + using UnityEditor; + #endif + + /// + /// A PhotonView identifies an object across the network (viewID) and configures how the controlling client updates remote instances. + /// + /// \ingroup publicApi + [AddComponentMenu("Photon Networking/Photon View")] + public class PhotonView : MonoBehaviour + { + #if UNITY_EDITOR + [UnityEditor.InitializeOnLoadMethod] + private static void SetPhotonViewExecutionOrder() + { + int photonViewExecutionOrder = -16000; + GameObject go = new GameObject(); + PhotonView pv = go.AddComponent(); + MonoScript monoScript = MonoScript.FromMonoBehaviour(pv); + + if (photonViewExecutionOrder != MonoImporter.GetExecutionOrder(monoScript)) + { + MonoImporter.SetExecutionOrder(monoScript, photonViewExecutionOrder); // very early but allows other scripts to run even earlier... + } + + DestroyImmediate(go); + } + #endif + + #if UNITY_EDITOR + [ContextMenu("Open PUN Wizard")] + void OpenPunWizard() + { + EditorApplication.ExecuteMenuItem("Window/Photon Unity Networking/PUN Wizard"); + } + #endif + + #if UNITY_EDITOR + // Suppressing compiler warning "this variable is never used". Only used in the CustomEditor, only in Editor + #pragma warning disable 0414 + [SerializeField] + bool ObservedComponentsFoldoutOpen = true; + #pragma warning restore 0414 + #endif + + #if UNITY_EDITOR + /// called by Editor to reset the component + private void Reset() + { + observableSearch = ObservableSearch.AutoFindAll; + } + #endif + + + + [FormerlySerializedAs("group")] + public byte Group = 0; + + // NOTE: this is now an integer because unity won't serialize short (needed for instantiation). we SEND only a short though! + // NOTE: prefabs have a prefixField of -1. this is replaced with any currentLevelPrefix that's used at runtime. instantiated GOs get their prefix set pre-instantiation (so those are not -1 anymore) + public int Prefix + { + get + { + if (this.prefixField == -1 && PhotonNetwork.NetworkingClient != null) + { + this.prefixField = PhotonNetwork.currentLevelPrefix; + } + + return this.prefixField; + } + set { this.prefixField = value; } + } + + // this field is serialized by unity. that means it is copied when instantiating a persistent obj into the scene + [FormerlySerializedAs("prefixBackup")] + public int prefixField = -1; + + + + /// + /// This is the InstantiationData that was passed when calling PhotonNetwork.Instantiate* (if that was used to spawn this prefab) + /// + public object[] InstantiationData + { + get { return this.instantiationDataField; } + protected internal set { this.instantiationDataField = value; } + } + + internal object[] instantiationDataField; + + /// + /// For internal use only, don't use + /// + protected internal List lastOnSerializeDataSent = null; + protected internal List syncValues; + + /// + /// For internal use only, don't use + /// + protected internal object[] lastOnSerializeDataReceived = null; + + [FormerlySerializedAs("synchronization")] + public ViewSynchronization Synchronization = ViewSynchronization.UnreliableOnChange; + + protected internal bool mixedModeIsReliable = false; + + /// Defines if ownership of this PhotonView is fixed, can be requested or simply taken. + /// + /// Note that you can't edit this value at runtime. + /// The options are described in enum OwnershipOption. + /// The current owner has to implement IPunCallbacks.OnOwnershipRequest to react to the ownership request. + /// + [FormerlySerializedAs("ownershipTransfer")] + public OwnershipOption OwnershipTransfer = OwnershipOption.Fixed; + + + public enum ObservableSearch { Manual, AutoFindActive, AutoFindAll } + + /// Default to manual so existing PVs in projects default to same as before. Reset() changes this to AutoAll for new implementations. + public ObservableSearch observableSearch = ObservableSearch.Manual; + + public List ObservedComponents; + + + + internal MonoBehaviour[] RpcMonoBehaviours; + + + + [Obsolete("Renamed. Use IsRoomView instead")] + public bool IsSceneView + { + get { return this.IsRoomView; } + } + + /// True if the PhotonView was loaded with the scene (game object) or instantiated with InstantiateRoomObject. + /// + /// Room objects are not owned by a particular player but belong to the scene. Thus they don't get destroyed when their + /// creator leaves the game and the current Master Client can control them (whoever that is). + /// The ownerId is 0 (player IDs are 1 and up). + /// + public bool IsRoomView + { + get { return this.CreatorActorNr == 0; } + } + + public bool IsOwnerActive + { + get { return this.Owner != null && !this.Owner.IsInactive; } + } + + /// + /// True if the PhotonView is "mine" and can be controlled by this client. + /// + /// + /// PUN has an ownership concept that defines who can control and destroy each PhotonView. + /// True in case the controller matches the local Player. + /// True if this is a scene photonview (null owner and ownerId == 0) on the Master client. + /// + public bool IsMine { get; private set; } + public bool AmController + { + get { return this.IsMine; } + } + + public Player Controller { get; private set; } + + public int CreatorActorNr { get; private set; } + + public bool AmOwner { get; private set; } + + + /// + /// The owner of a PhotonView is the creator of an object by default Ownership can be transferred and the owner may not be in the room anymore. Objects in the scene don't have an owner. + /// + /// + /// The owner/controller of a PhotonView is also the client which sends position updates of the GameObject. + /// + /// Ownership can be transferred to another player with PhotonView.TransferOwnership or any player can request + /// ownership by calling the PhotonView's RequestOwnership method. + /// The current owner has to implement IPunCallbacks.OnOwnershipRequest to react to the ownership request. + /// + public Player Owner { get; private set; } + + + + [NonSerialized] + private int ownerActorNr; + + public int OwnerActorNr + { + get { return this.ownerActorNr; } + set + { + if (value != 0 && this.ownerActorNr == value) + { + return; + } + + Player prevOwner = this.Owner; + + this.Owner = PhotonNetwork.CurrentRoom == null ? null : PhotonNetwork.CurrentRoom.GetPlayer(value, true); + this.ownerActorNr = this.Owner != null ? this.Owner.ActorNumber : value; + + this.AmOwner = PhotonNetwork.LocalPlayer != null && this.ownerActorNr == PhotonNetwork.LocalPlayer.ActorNumber; + + this.UpdateCallbackLists(); + if (!ReferenceEquals(this.OnOwnerChangeCallbacks, null)) + { + for (int i = 0, cnt = this.OnOwnerChangeCallbacks.Count; i < cnt; ++i) + { + this.OnOwnerChangeCallbacks[i].OnOwnerChange(this.Owner, prevOwner); + } + } + } + } + + + [NonSerialized] + private int controllerActorNr; + + public int ControllerActorNr + { + get { return this.controllerActorNr; } + set + { + Player prevController = this.Controller; + + this.Controller = PhotonNetwork.CurrentRoom == null ? null : PhotonNetwork.CurrentRoom.GetPlayer(value, true); + if (this.Controller != null && this.Controller.IsInactive) + { + this.Controller = PhotonNetwork.MasterClient; + } + this.controllerActorNr = this.Controller != null ? this.Controller.ActorNumber : value; + + this.IsMine = PhotonNetwork.LocalPlayer != null && this.controllerActorNr == PhotonNetwork.LocalPlayer.ActorNumber; + + if (!ReferenceEquals(this.Controller, prevController)) + { + this.UpdateCallbackLists(); + if (!ReferenceEquals(this.OnControllerChangeCallbacks, null)) + { + for (int i = 0, cnt = this.OnControllerChangeCallbacks.Count; i < cnt; ++i) + { + this.OnControllerChangeCallbacks[i].OnControllerChange(this.Controller, prevController); + } + } + } + } + } + + + /// This field is the Scene ViewID (0 if not used). loaded with the scene, used in Awake(). + [SerializeField] + [FormerlySerializedAs("viewIdField")] + [HideInInspector] + public int sceneViewId = 0; // TODO: in best case, this is not public + + + /// This field is the "runtime" ViewID as backup for the property. + [NonSerialized] + private int viewIdField = 0; + + /// + /// The ID of the PhotonView. Identifies it in a networked game (per room). + /// + /// See: [Network Instantiation](@ref instantiateManual) + public int ViewID + { + get + { + return this.viewIdField; + } + + set + { + // TODO: Check if the isPlaying check is needed when the PhotonViewHandler is updated + if (value != 0 && this.viewIdField != 0) + { + Debug.LogWarning("Changing a ViewID while it's in use is not possible (except setting it to 0 (not being used). Current ViewID: " + this.viewIdField); + return; + } + + if (value == 0 && this.viewIdField != 0) + { + PhotonNetwork.LocalCleanPhotonView(this); + } + + this.viewIdField = value; + this.CreatorActorNr = value / PhotonNetwork.MAX_VIEW_IDS; // the creator can be derived from the viewId. this is also the initial owner and creator. + this.OwnerActorNr = this.CreatorActorNr; + this.ControllerActorNr = this.CreatorActorNr; + this.RebuildControllerCache(); + + + // if the viewID is set to a new, legit value, the view should register in the list of active PVs. + if (value != 0) + { + PhotonNetwork.RegisterPhotonView(this); + } + } + } + + [FormerlySerializedAs("instantiationId")] + public int InstantiationId; // if the view was instantiated with a GO, this GO has a instantiationID (first view's viewID) + + [SerializeField] + [HideInInspector] + public bool isRuntimeInstantiated; + + + protected internal bool removedFromLocalViewList; + + + /// Will FindObservables() and assign the sceneViewId, if that is != 0. This initializes the PhotonView if loaded with the scene. Called once by Unity, when this instance is created. + protected internal void Awake() + { + if (this.ViewID != 0) + { + return; + } + + if (this.sceneViewId != 0) + { + // PhotonNetwork.Instantiate will set a ViewID != 0 before the object awakes. So only objects loaded with the scene ever use the sceneViewId (even if the obj got pooled) + this.ViewID = this.sceneViewId; + } + + this.FindObservables(); + } + + + /// called by PhotonNetwork.LocalCleanupAnythingInstantiated + internal void ResetPhotonView(bool resetOwner) + { + //// If this was fired by this connection rejoining, reset the ownership cache to owner = creator. + //// TODO: This reset may not be needed at all with the ownership being invalidated next. + //if (resetOwner) + // ResetOwnership(); + + //this.ownershipCacheIsValid = OwnershipCacheState.Invalid; + + // Reset the delta check to force a complete update of owned objects, to ensure joining connections get full updates. + this.lastOnSerializeDataSent = null; + } + + + /// called by OnJoinedRoom, OnMasterClientSwitched, OnPlayerEnteredRoom and OnEvent for OwnershipUpdate + /// OnPlayerLeftRoom will set a new controller directly, if the controller or owner left + internal void RebuildControllerCache(bool ownerHasChanged = false) + { + //var prevController = this.controller; + + // objects without controller and room objects (ownerId 0) check if controller update is needed + if (this.controllerActorNr == 0 || this.OwnerActorNr == 0 || this.Owner == null || this.Owner.IsInactive) + { + var masterclient = PhotonNetwork.MasterClient; + this.ControllerActorNr = masterclient == null ? -1 : masterclient.ActorNumber; + } + else + { + this.ControllerActorNr = this.OwnerActorNr; + } + } + + + public void OnPreNetDestroy(PhotonView rootView) + { + UpdateCallbackLists(); + + if (!ReferenceEquals(OnPreNetDestroyCallbacks, null)) + for (int i = 0, cnt = OnPreNetDestroyCallbacks.Count; i < cnt; ++i) + { + OnPreNetDestroyCallbacks[i].OnPreNetDestroy(rootView); + } + } + + protected internal void OnDestroy() + { + if (!this.removedFromLocalViewList) + { + bool wasInList = PhotonNetwork.LocalCleanPhotonView(this); + + if (wasInList && this.InstantiationId > 0 && !PhotonHandler.AppQuits && PhotonNetwork.LogLevel >= PunLogLevel.Informational) + { + Debug.Log("PUN-instantiated '" + this.gameObject.name + "' got destroyed by engine. This is OK when loading levels. Otherwise use: PhotonNetwork.Destroy()."); + } + } + } + + + /// + /// Depending on the PhotonView's OwnershipTransfer setting, any client can request to become owner of the PhotonView. + /// + /// + /// Requesting ownership can give you control over a PhotonView, if the OwnershipTransfer setting allows that. + /// The current owner might have to implement IPunCallbacks.OnOwnershipRequest to react to the ownership request. + /// + /// The owner/controller of a PhotonView is also the client which sends position updates of the GameObject. + /// + public void RequestOwnership() + { + if (OwnershipTransfer != OwnershipOption.Fixed) + { + PhotonNetwork.RequestOwnership(this.ViewID, this.ownerActorNr); + } + else + { + if (PhotonNetwork.LogLevel >= PunLogLevel.Informational) + { + Debug.LogWarning("Attempting to RequestOwnership of GameObject '" + name + "' viewId: " + ViewID + + ", but PhotonView.OwnershipTransfer is set to Fixed."); + } + } + } + + /// + /// Transfers the ownership of this PhotonView (and GameObject) to another player. + /// + /// + /// The owner/controller of a PhotonView is also the client which sends position updates of the GameObject. + /// + public void TransferOwnership(Player newOwner) + { + if (newOwner != null) + TransferOwnership(newOwner.ActorNumber); + else + { + if (PhotonNetwork.LogLevel >= PunLogLevel.Informational) + { + Debug.LogWarning("Attempting to TransferOwnership of GameObject '" + name + "' viewId: " + ViewID + + ", but provided Player newOwner is null."); + } + } + } + + /// + /// Transfers the ownership of this PhotonView (and GameObject) to another player. + /// + /// + /// The owner/controller of a PhotonView is also the client which sends position updates of the GameObject. + /// + public void TransferOwnership(int newOwnerId) + { + if (OwnershipTransfer == OwnershipOption.Takeover || (OwnershipTransfer == OwnershipOption.Request && this.AmController)) + { + PhotonNetwork.TransferOwnership(this.ViewID, newOwnerId); + } + else + { + if (PhotonNetwork.LogLevel >= PunLogLevel.Informational) + { + if (OwnershipTransfer == OwnershipOption.Fixed) + Debug.LogWarning("Attempting to TransferOwnership of GameObject '" + name + "' viewId: " + ViewID + + " without the authority to do so. TransferOwnership is not allowed if PhotonView.OwnershipTransfer is set to Fixed."); + else if (OwnershipTransfer == OwnershipOption.Request) + Debug.LogWarning("Attempting to TransferOwnership of GameObject '" + name + "' viewId: " + ViewID + + " without the authority to do so. PhotonView.OwnershipTransfer is set to Request, so only the controller of this object can TransferOwnership."); + } + } + } + + /// + /// Will find IPunObservable components on this GameObject and nested children and add them to the ObservedComponents list. + /// + /// + /// This is called via PhotonView.Awake(), which in turn is called immediately by the engine's AddComponent method. + /// + /// Changing the ObservedComponents of a PhotonView at runtime can be problematic, if other clients are not also + /// updating their list. + /// + /// If true, FindObservables will work as if observableSearch is AutoFindActive. + public void FindObservables(bool force = false) + { + if (!force && this.observableSearch == ObservableSearch.Manual) + { + return; + } + + if (this.ObservedComponents == null) + { + this.ObservedComponents = new List(); + } + else + { + this.ObservedComponents.Clear(); + } + + this.transform.GetNestedComponentsInChildren(force || this.observableSearch == ObservableSearch.AutoFindAll, this.ObservedComponents); + } + + + public void SerializeView(PhotonStream stream, PhotonMessageInfo info) + { + if (this.ObservedComponents != null && this.ObservedComponents.Count > 0) + { + for (int i = 0; i < this.ObservedComponents.Count; ++i) + { + var component = this.ObservedComponents[i]; + if (component != null) + SerializeComponent(this.ObservedComponents[i], stream, info); + } + } + } + + public void DeserializeView(PhotonStream stream, PhotonMessageInfo info) + { + if (this.ObservedComponents != null && this.ObservedComponents.Count > 0) + { + for (int i = 0; i < this.ObservedComponents.Count; ++i) + { + var component = this.ObservedComponents[i]; + if (component != null) + DeserializeComponent(component, stream, info); + } + } + } + + protected internal void DeserializeComponent(Component component, PhotonStream stream, PhotonMessageInfo info) + { + IPunObservable observable = component as IPunObservable; + if (observable != null) + { + observable.OnPhotonSerializeView(stream, info); + } + else + { + Debug.LogError("Observed scripts have to implement IPunObservable. " + component + " does not. It is Type: " + component.GetType(), component.gameObject); + } + } + + protected internal void SerializeComponent(Component component, PhotonStream stream, PhotonMessageInfo info) + { + IPunObservable observable = component as IPunObservable; + if (observable != null) + { + observable.OnPhotonSerializeView(stream, info); + } + else + { + Debug.LogError("Observed scripts have to implement IPunObservable. " + component + " does not. It is Type: " + component.GetType(), component.gameObject); + } + } + + + /// + /// Can be used to refesh the list of MonoBehaviours on this GameObject while PhotonNetwork.UseRpcMonoBehaviourCache is true. + /// + /// + /// Set PhotonNetwork.UseRpcMonoBehaviourCache to true to enable the caching. + /// Uses this.GetComponents() to get a list of MonoBehaviours to call RPCs on (potentially). + /// + /// While PhotonNetwork.UseRpcMonoBehaviourCache is false, this method has no effect, + /// because the list is refreshed when a RPC gets called. + /// + public void RefreshRpcMonoBehaviourCache() + { + this.RpcMonoBehaviours = this.GetComponents(); + } + + + /// + /// Call a RPC method of this GameObject on remote clients of this room (or on all, including this client). + /// + /// + /// [Remote Procedure Calls](@ref rpcManual) are an essential tool in making multiplayer games with PUN. + /// It enables you to make every client in a room call a specific method. + /// + /// RPC calls can target "All" or the "Others". + /// Usually, the target "All" gets executed locally immediately after sending the RPC. + /// The "*ViaServer" options send the RPC to the server and execute it on this client when it's sent back. + /// Of course, calls are affected by this client's lag and that of remote clients. + /// + /// Each call automatically is routed to the same PhotonView (and GameObject) that was used on the + /// originating client. + /// + /// See: [Remote Procedure Calls](@ref rpcManual). + /// + /// The name of a fitting method that was has the RPC attribute. + /// The group of targets and the way the RPC gets sent. + /// The parameters that the RPC method has (must fit this call!). + public void RPC(string methodName, RpcTarget target, params object[] parameters) + { + PhotonNetwork.RPC(this, methodName, target, false, parameters); + } + + /// + /// Call a RPC method of this GameObject on remote clients of this room (or on all, including this client). + /// + /// + /// [Remote Procedure Calls](@ref rpcManual) are an essential tool in making multiplayer games with PUN. + /// It enables you to make every client in a room call a specific method. + /// + /// RPC calls can target "All" or the "Others". + /// Usually, the target "All" gets executed locally immediately after sending the RPC. + /// The "*ViaServer" options send the RPC to the server and execute it on this client when it's sent back. + /// Of course, calls are affected by this client's lag and that of remote clients. + /// + /// Each call automatically is routed to the same PhotonView (and GameObject) that was used on the + /// originating client. + /// + /// See: [Remote Procedure Calls](@ref rpcManual). + /// + ///The name of a fitting method that was has the RPC attribute. + ///The group of targets and the way the RPC gets sent. + /// + ///The parameters that the RPC method has (must fit this call!). + public void RpcSecure(string methodName, RpcTarget target, bool encrypt, params object[] parameters) + { + PhotonNetwork.RPC(this, methodName, target, encrypt, parameters); + } + + /// + /// Call a RPC method of this GameObject on remote clients of this room (or on all, including this client). + /// + /// + /// [Remote Procedure Calls](@ref rpcManual) are an essential tool in making multiplayer games with PUN. + /// It enables you to make every client in a room call a specific method. + /// + /// This method allows you to make an RPC calls on a specific player's client. + /// Of course, calls are affected by this client's lag and that of remote clients. + /// + /// Each call automatically is routed to the same PhotonView (and GameObject) that was used on the + /// originating client. + /// + /// See: [Remote Procedure Calls](@ref rpcManual). + /// + /// The name of a fitting method that was has the RPC attribute. + /// The group of targets and the way the RPC gets sent. + /// The parameters that the RPC method has (must fit this call!). + public void RPC(string methodName, Player targetPlayer, params object[] parameters) + { + PhotonNetwork.RPC(this, methodName, targetPlayer, false, parameters); + } + + /// + /// Call a RPC method of this GameObject on remote clients of this room (or on all, including this client). + /// + /// + /// [Remote Procedure Calls](@ref rpcManual) are an essential tool in making multiplayer games with PUN. + /// It enables you to make every client in a room call a specific method. + /// + /// This method allows you to make an RPC calls on a specific player's client. + /// Of course, calls are affected by this client's lag and that of remote clients. + /// + /// Each call automatically is routed to the same PhotonView (and GameObject) that was used on the + /// originating client. + /// + /// See: [Remote Procedure Calls](@ref rpcManual). + /// + ///The name of a fitting method that was has the RPC attribute. + ///The group of targets and the way the RPC gets sent. + /// + ///The parameters that the RPC method has (must fit this call!). + public void RpcSecure(string methodName, Player targetPlayer, bool encrypt, params object[] parameters) + { + PhotonNetwork.RPC(this, methodName, targetPlayer, encrypt, parameters); + } + + public static PhotonView Get(Component component) + { + return component.transform.GetParentComponent(); + } + + public static PhotonView Get(GameObject gameObj) + { + return gameObj.transform.GetParentComponent(); + } + + /// + /// Finds the PhotonView Component with a viewID in the scene + /// + /// + /// The PhotonView with ViewID. Returns null if none found + public static PhotonView Find(int viewID) + { + return PhotonNetwork.GetPhotonView(viewID); + } + + + #region Callback Interfaces + + + private struct CallbackTargetChange + { + public IPhotonViewCallback obj; + public Type type; + public bool add; + + public CallbackTargetChange(IPhotonViewCallback obj, Type type, bool add) + { + this.obj = obj; + this.type = type; + this.add = add; + } + } + + private Queue CallbackChangeQueue = new Queue(); + + private List OnPreNetDestroyCallbacks; + private List OnOwnerChangeCallbacks; + private List OnControllerChangeCallbacks; + + /// + /// Add object to all applicable callback interfaces. Object must implement at least one IOnPhotonViewCallback derived interface. + /// + /// An object that implements OnPhotonView callback interface(s). + public void AddCallbackTarget(IPhotonViewCallback obj) + { + CallbackChangeQueue.Enqueue(new CallbackTargetChange(obj, null, true)); + } + + /// + /// Remove object from all applicable callback interfaces. Object must implement at least one IOnPhotonViewCallback derived interface. + /// + /// An object that implements OnPhotonView callback interface(s). + public void RemoveCallbackTarget(IPhotonViewCallback obj) + { + CallbackChangeQueue.Enqueue(new CallbackTargetChange(obj, null, false)); + } + + /// + /// Add object to this PhotonView's callback. + /// T is the IOnPhotonViewCallback derived interface you want added to its associated callback list. + /// Supplying IOnPhotonViewCallback (the interface base class) as T will add ALL implemented IOnPhotonViewCallback Interfaces found on the object. + /// + public void AddCallback(IPhotonViewCallback obj) where T : class, IPhotonViewCallback + { + CallbackChangeQueue.Enqueue(new CallbackTargetChange(obj, typeof(T), true)); + } + + /// + /// Remove object from this PhotonView's callback list for T. + /// T is the IOnPhotonViewCallback derived interface you want removed from its associated callback list. + /// Supplying IOnPhotonViewCallback (the interface base class) as T will remove ALL implemented IOnPhotonViewCallback Interfaces found on the object. + /// + public void RemoveCallback(IPhotonViewCallback obj) where T : class, IPhotonViewCallback + { + CallbackChangeQueue.Enqueue(new CallbackTargetChange(obj, typeof(T), false)); + } + + /// + /// Apply any queued add/remove of interfaces from the callback lists. Typically called before looping callback lists. + /// + private void UpdateCallbackLists() + { + while (CallbackChangeQueue.Count > 0) + { + var item = CallbackChangeQueue.Dequeue(); + var obj = item.obj; + var type = item.type; + var add = item.add; + + if (type == null) + { + TryRegisterCallback(obj, ref OnPreNetDestroyCallbacks, add); + TryRegisterCallback(obj, ref OnOwnerChangeCallbacks, add); + TryRegisterCallback(obj, ref OnControllerChangeCallbacks, add); + } + else if (type == typeof(IOnPhotonViewPreNetDestroy)) + RegisterCallback(obj as IOnPhotonViewPreNetDestroy, ref OnPreNetDestroyCallbacks, add); + + else if (type == typeof(IOnPhotonViewOwnerChange)) + RegisterCallback(obj as IOnPhotonViewOwnerChange, ref OnOwnerChangeCallbacks, add); + + else if (type == typeof(IOnPhotonViewControllerChange)) + RegisterCallback(obj as IOnPhotonViewControllerChange, ref OnControllerChangeCallbacks, add); + } + } + + private void TryRegisterCallback(IPhotonViewCallback obj, ref List list, bool add) where T : class, IPhotonViewCallback + { + T iobj = obj as T; + if (iobj != null) + { + RegisterCallback(iobj, ref list, add); + } + } + + private void RegisterCallback(T obj, ref List list, bool add) where T : class, IPhotonViewCallback + { + if (ReferenceEquals(list, null)) + list = new List(); + + if (add) + { + if (!list.Contains(obj)) + list.Add(obj); + } + else + { + if (list.Contains(obj)) + list.Remove(obj); + } + } + + + #endregion Callback Interfaces + + + public override string ToString() + { + return string.Format("View {0}{3} on {1} {2}", this.ViewID, (this.gameObject != null) ? this.gameObject.name : "GO==null", (this.IsRoomView) ? "(scene)" : string.Empty, this.Prefix > 0 ? "lvl" + this.Prefix : ""); + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/PhotonView.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/PhotonView.cs.meta new file mode 100644 index 00000000..7d5ee1bc --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/PhotonView.cs.meta @@ -0,0 +1,16 @@ +fileFormatVersion: 2 +guid: aa584fbee541324448dd18d8409c7a41 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: -16000 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/PunClasses.cs b/Assets/Photon/PhotonUnityNetworking/Code/PunClasses.cs new file mode 100644 index 00000000..5fb74597 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/PunClasses.cs @@ -0,0 +1,974 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// Wraps up smaller classes that don't need their own file. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +#pragma warning disable 1587 +/// \defgroup publicApi Public API +/// \brief Groups the most important classes that you need to understand early on. +/// +/// \defgroup optionalGui Optional Gui Elements +/// \brief Useful GUI elements for PUN. +/// +/// \defgroup callbacks Callbacks +/// \brief Callback Interfaces +#pragma warning restore 1587 + + +namespace Photon.Pun +{ + using System; + using System.Collections.Generic; + using System.Reflection; + using ExitGames.Client.Photon; + using UnityEngine; + using UnityEngine.SceneManagement; + using Photon.Realtime; + using SupportClassPun = ExitGames.Client.Photon.SupportClass; + + + /// Replacement for RPC attribute with different name. Used to flag methods as remote-callable. + public class PunRPC : Attribute + { + } + + /// + /// This class adds the property photonView, while logging a warning when your game still uses the networkView. + /// + public class MonoBehaviourPun : MonoBehaviour + { + /// Cache field for the PhotonView on this GameObject. + private PhotonView pvCache; + + /// A cached reference to a PhotonView on this GameObject. + /// + /// If you intend to work with a PhotonView in a script, it's usually easier to write this.photonView. + /// + /// If you intend to remove the PhotonView component from the GameObject but keep this Photon.MonoBehaviour, + /// avoid this reference or modify this code to use PhotonView.Get(obj) instead. + /// + public PhotonView photonView + { + get + { + #if UNITY_EDITOR + // In the editor we want to avoid caching this at design time, so changes in PV structure appear immediately. + if (!Application.isPlaying || this.pvCache == null) + { + this.pvCache = PhotonView.Get(this); + } + #else + if (this.pvCache == null) + { + this.pvCache = PhotonView.Get(this); + } + #endif + return this.pvCache; + } + } + + //#if UNITY_EDITOR + //protected virtual void Reset() + //{ + // this.pvCache = this.transform.GetParentComponent(); + + // if (this.pvCache == null) + // { + // Debug.LogWarning(this.GetType().Name + " requires a PhotonView. No PhotonView was found, so one is being added to GameObject '" + this.transform.root.name + "'"); + // this.pvCache = this.transform.root.gameObject.AddComponent(); + // } + //} + //#endif + } + + + /// + /// This class provides a .photonView and all callbacks/events that PUN can call. Override the events/methods you want to use. + /// + /// + /// By extending this class, you can implement individual methods as override. + /// + /// Do not add new MonoBehaviour.OnEnable or MonoBehaviour.OnDisable + /// Instead, you should override those and call base.OnEnable and base.OnDisable. + /// + /// Visual Studio and MonoDevelop should provide the list of methods when you begin typing "override". + /// Your implementation does not have to call "base.method()". + /// + /// This class implements all callback interfaces and extends . + /// + /// \ingroup callbacks + // the documentation for the interface methods becomes inherited when Doxygen builds it. + public class MonoBehaviourPunCallbacks : MonoBehaviourPun, IConnectionCallbacks , IMatchmakingCallbacks , IInRoomCallbacks, ILobbyCallbacks, IWebRpcCallback, IErrorInfoCallback + { + public virtual void OnEnable() + { + PhotonNetwork.AddCallbackTarget(this); + } + + public virtual void OnDisable() + { + PhotonNetwork.RemoveCallbackTarget(this); + } + + /// + /// Called to signal that the raw connection got established but before the client can call operation on the server. + /// + /// + /// After the (low level transport) connection is established, the client will automatically send + /// the Authentication operation, which needs to get a response before the client can call other operations. + /// + /// Your logic should wait for either: OnRegionListReceived or OnConnectedToMaster. + /// + /// This callback is useful to detect if the server can be reached at all (technically). + /// Most often, it's enough to implement OnDisconnected(). + /// + /// This is not called for transitions from the masterserver to game servers. + /// + public virtual void OnConnected() + { + } + + /// + /// Called when the local user/client left a room, so the game's logic can clean up it's internal state. + /// + /// + /// When leaving a room, the LoadBalancingClient will disconnect the Game Server and connect to the Master Server. + /// This wraps up multiple internal actions. + /// + /// Wait for the callback OnConnectedToMaster, before you use lobbies and join or create rooms. + /// + public virtual void OnLeftRoom() + { + } + + /// + /// Called after switching to a new MasterClient when the current one leaves. + /// + /// + /// This is not called when this client enters a room. + /// The former MasterClient is still in the player list when this method get called. + /// + public virtual void OnMasterClientSwitched(Player newMasterClient) + { + } + + /// + /// Called when the server couldn't create a room (OpCreateRoom failed). + /// + /// + /// The most common cause to fail creating a room, is when a title relies on fixed room-names and the room already exists. + /// + /// Operation ReturnCode from the server. + /// Debug message for the error. + public virtual void OnCreateRoomFailed(short returnCode, string message) + { + } + + /// + /// Called when a previous OpJoinRoom call failed on the server. + /// + /// + /// The most common causes are that a room is full or does not exist (due to someone else being faster or closing the room). + /// + /// Operation ReturnCode from the server. + /// Debug message for the error. + public virtual void OnJoinRoomFailed(short returnCode, string message) + { + } + + /// + /// Called when this client created a room and entered it. OnJoinedRoom() will be called as well. + /// + /// + /// This callback is only called on the client which created a room (see OpCreateRoom). + /// + /// As any client might close (or drop connection) anytime, there is a chance that the + /// creator of a room does not execute OnCreatedRoom. + /// + /// If you need specific room properties or a "start signal", implement OnMasterClientSwitched() + /// and make each new MasterClient check the room's state. + /// + public virtual void OnCreatedRoom() + { + } + + /// + /// Called on entering a lobby on the Master Server. The actual room-list updates will call OnRoomListUpdate. + /// + /// + /// While in the lobby, the roomlist is automatically updated in fixed intervals (which you can't modify in the public cloud). + /// The room list gets available via OnRoomListUpdate. + /// + public virtual void OnJoinedLobby() + { + } + + /// + /// Called after leaving a lobby. + /// + /// + /// When you leave a lobby, [OpCreateRoom](@ref OpCreateRoom) and [OpJoinRandomRoom](@ref OpJoinRandomRoom) + /// automatically refer to the default lobby. + /// + public virtual void OnLeftLobby() + { + } + + /// + /// Called after disconnecting from the Photon server. It could be a failure or intentional + /// + /// + /// The reason for this disconnect is provided as DisconnectCause. + /// + public virtual void OnDisconnected(DisconnectCause cause) + { + } + + /// + /// Called when the Name Server provided a list of regions for your title. + /// + /// Check the RegionHandler class description, to make use of the provided values. + /// The currently used RegionHandler. + public virtual void OnRegionListReceived(RegionHandler regionHandler) + { + } + + /// + /// Called for any update of the room-listing while in a lobby (InLobby) on the Master Server. + /// + /// + /// Each item is a RoomInfo which might include custom properties (provided you defined those as lobby-listed when creating a room). + /// Not all types of lobbies provide a listing of rooms to the client. Some are silent and specialized for server-side matchmaking. + /// + public virtual void OnRoomListUpdate(List roomList) + { + } + + /// + /// Called when the LoadBalancingClient entered a room, no matter if this client created it or simply joined. + /// + /// + /// When this is called, you can access the existing players in Room.Players, their custom properties and Room.CustomProperties. + /// + /// In this callback, you could create player objects. For example in Unity, instantiate a prefab for the player. + /// + /// If you want a match to be started "actively", enable the user to signal "ready" (using OpRaiseEvent or a Custom Property). + /// + public virtual void OnJoinedRoom() + { + } + + /// + /// Called when a remote player entered the room. This Player is already added to the playerlist. + /// + /// + /// If your game starts with a certain number of players, this callback can be useful to check the + /// Room.playerCount and find out if you can start. + /// + public virtual void OnPlayerEnteredRoom(Player newPlayer) + { + } + + /// + /// Called when a remote player left the room or became inactive. Check otherPlayer.IsInactive. + /// + /// + /// If another player leaves the room or if the server detects a lost connection, this callback will + /// be used to notify your game logic. + /// + /// Depending on the room's setup, players may become inactive, which means they may return and retake + /// their spot in the room. In such cases, the Player stays in the Room.Players dictionary. + /// + /// If the player is not just inactive, it gets removed from the Room.Players dictionary, before + /// the callback is called. + /// + public virtual void OnPlayerLeftRoom(Player otherPlayer) + { + } + + /// + /// Called when a previous OpJoinRandom call failed on the server. + /// + /// + /// The most common causes are that a room is full or does not exist (due to someone else being faster or closing the room). + /// + /// When using multiple lobbies (via OpJoinLobby or a TypedLobby parameter), another lobby might have more/fitting rooms.
    + ///
    + /// Operation ReturnCode from the server. + /// Debug message for the error. + public virtual void OnJoinRandomFailed(short returnCode, string message) + { + } + + /// + /// Called when the client is connected to the Master Server and ready for matchmaking and other tasks. + /// + /// + /// The list of available rooms won't become available unless you join a lobby via LoadBalancingClient.OpJoinLobby. + /// You can join rooms and create them even without being in a lobby. The default lobby is used in that case. + /// + public virtual void OnConnectedToMaster() + { + } + + /// + /// Called when a room's custom properties changed. The propertiesThatChanged contains all that was set via Room.SetCustomProperties. + /// + /// + /// Since v1.25 this method has one parameter: Hashtable propertiesThatChanged.
    + /// Changing properties must be done by Room.SetCustomProperties, which causes this callback locally, too. + ///
    + /// + public virtual void OnRoomPropertiesUpdate(Hashtable propertiesThatChanged) + { + } + + /// + /// Called when custom player-properties are changed. Player and the changed properties are passed as object[]. + /// + /// + /// Changing properties must be done by Player.SetCustomProperties, which causes this callback locally, too. + /// + /// + /// Contains Player that changed. + /// Contains the properties that changed. + public virtual void OnPlayerPropertiesUpdate(Player targetPlayer, Hashtable changedProps) + { + } + + /// + /// Called when the server sent the response to a FindFriends request. + /// + /// + /// After calling OpFindFriends, the Master Server will cache the friend list and send updates to the friend + /// list. The friends includes the name, userId, online state and the room (if any) for each requested user/friend. + /// + /// Use the friendList to update your UI and store it, if the UI should highlight changes. + /// + public virtual void OnFriendListUpdate(List friendList) + { + } + + /// + /// Called when your Custom Authentication service responds with additional data. + /// + /// + /// Custom Authentication services can include some custom data in their response. + /// When present, that data is made available in this callback as Dictionary. + /// While the keys of your data have to be strings, the values can be either string or a number (in Json). + /// You need to make extra sure, that the value type is the one you expect. Numbers become (currently) int64. + /// + /// Example: void OnCustomAuthenticationResponse(Dictionary<string, object> data) { ... } + /// + /// + public virtual void OnCustomAuthenticationResponse(Dictionary data) + { + } + + /// + /// Called when the custom authentication failed. Followed by disconnect! + /// + /// + /// Custom Authentication can fail due to user-input, bad tokens/secrets. + /// If authentication is successful, this method is not called. Implement OnJoinedLobby() or OnConnectedToMaster() (as usual). + /// + /// During development of a game, it might also fail due to wrong configuration on the server side. + /// In those cases, logging the debugMessage is very important. + /// + /// Unless you setup a custom authentication service for your app (in the [Dashboard](https://dashboard.photonengine.com)), + /// this won't be called! + /// + /// Contains a debug message why authentication failed. This has to be fixed during development. + public virtual void OnCustomAuthenticationFailed (string debugMessage) + { + } + + //TODO: Check if this needs to be implemented + // in: IOptionalInfoCallbacks + public virtual void OnWebRpcResponse(OperationResponse response) + { + } + + //TODO: Check if this needs to be implemented + // in: IOptionalInfoCallbacks + public virtual void OnLobbyStatisticsUpdate(List lobbyStatistics) + { + } + + /// + /// Called when the client receives an event from the server indicating that an error happened there. + /// + /// + /// In most cases this could be either: + /// 1. an error from webhooks plugin (if HasErrorInfo is enabled), read more here: + /// https://doc.photonengine.com/en-us/realtime/current/gameplay/web-extensions/webhooks#options + /// 2. an error sent from a custom server plugin via PluginHost.BroadcastErrorInfoEvent, see example here: + /// https://doc.photonengine.com/en-us/server/current/plugins/manual#handling_http_response + /// 3. an error sent from the server, for example, when the limit of cached events has been exceeded in the room + /// (all clients will be disconnected and the room will be closed in this case) + /// read more here: https://doc.photonengine.com/en-us/realtime/current/gameplay/cached-events#special_considerations + /// + /// object containing information about the error + public virtual void OnErrorInfo(ErrorInfo errorInfo) + { + } + } + + + /// + /// Container class for info about a particular message, RPC or update. + /// + /// \ingroup publicApi + public struct PhotonMessageInfo + { + private readonly int timeInt; + /// The sender of a message / event. May be null. + public readonly Player Sender; + public readonly PhotonView photonView; + + public PhotonMessageInfo(Player player, int timestamp, PhotonView view) + { + this.Sender = player; + this.timeInt = timestamp; + this.photonView = view; + } + + [Obsolete("Use SentServerTime instead.")] + public double timestamp + { + get + { + uint u = (uint) this.timeInt; + double t = u; + return t / 1000.0d; + } + } + + public double SentServerTime + { + get + { + uint u = (uint)this.timeInt; + double t = u; + return t / 1000.0d; + } + } + + public int SentServerTimestamp + { + get { return this.timeInt; } + } + + public override string ToString() + { + return string.Format("[PhotonMessageInfo: Sender='{1}' Senttime={0}]", this.SentServerTime, this.Sender); + } + } + + + + /// Defines Photon event-codes as used by PUN. + internal class PunEvent + { + public const byte RPC = 200; + public const byte SendSerialize = 201; + public const byte Instantiation = 202; + public const byte CloseConnection = 203; + public const byte Destroy = 204; + public const byte RemoveCachedRPCs = 205; + public const byte SendSerializeReliable = 206; // TS: added this but it's not really needed anymore + public const byte DestroyPlayer = 207; // TS: added to make others remove all GOs of a player + public const byte OwnershipRequest = 209; + public const byte OwnershipTransfer = 210; + public const byte VacantViewIds = 211; + public const byte OwnershipUpdate = 212; + } + + + /// + /// This container is used in OnPhotonSerializeView() to either provide incoming data of a PhotonView or for you to provide it. + /// + /// + /// The IsWriting property will be true if this client is the "owner" of the PhotonView (and thus the GameObject). + /// Add data to the stream and it's sent via the server to the other players in a room. + /// On the receiving side, IsWriting is false and the data should be read. + /// + /// Send as few data as possible to keep connection quality up. An empty PhotonStream will not be sent. + /// + /// Use either Serialize() for reading and writing or SendNext() and ReceiveNext(). The latter two are just explicit read and + /// write methods but do about the same work as Serialize(). It's a matter of preference which methods you use. + /// + /// \ingroup publicApi + public class PhotonStream + { + private List writeData; + private object[] readData; + private int currentItem; //Used to track the next item to receive. + + /// If true, this client should add data to the stream to send it. + public bool IsWriting { get; private set; } + + /// If true, this client should read data send by another client. + public bool IsReading + { + get { return !this.IsWriting; } + } + + /// Count of items in the stream. + public int Count + { + get { return this.IsWriting ? this.writeData.Count : this.readData.Length; } + } + + /// + /// Creates a stream and initializes it. Used by PUN internally. + /// + public PhotonStream(bool write, object[] incomingData) + { + this.IsWriting = write; + + if (!write && incomingData != null) + { + this.readData = incomingData; + } + } + + public void SetReadStream(object[] incomingData, int pos = 0) + { + this.readData = incomingData; + this.currentItem = pos; + this.IsWriting = false; + } + + internal void SetWriteStream(List newWriteData, int pos = 0) + { + if (pos != newWriteData.Count) + { + throw new Exception("SetWriteStream failed, because count does not match position value. pos: "+ pos + " newWriteData.Count:" + newWriteData.Count); + } + this.writeData = newWriteData; + this.currentItem = pos; + this.IsWriting = true; + } + + internal List GetWriteStream() + { + return this.writeData; + } + + + [Obsolete("Either SET the writeData with an empty List or use Clear().")] + internal void ResetWriteStream() + { + this.writeData.Clear(); + } + + /// Read next piece of data from the stream when IsReading is true. + public object ReceiveNext() + { + if (this.IsWriting) + { + Debug.LogError("Error: you cannot read this stream that you are writing!"); + return null; + } + + object obj = this.readData[this.currentItem]; + this.currentItem++; + return obj; + } + + /// Read next piece of data from the stream without advancing the "current" item. + public object PeekNext() + { + if (this.IsWriting) + { + Debug.LogError("Error: you cannot read this stream that you are writing!"); + return null; + } + + object obj = this.readData[this.currentItem]; + //this.currentItem++; + return obj; + } + + /// Add another piece of data to send it when IsWriting is true. + public void SendNext(object obj) + { + if (!this.IsWriting) + { + Debug.LogError("Error: you cannot write/send to this stream that you are reading!"); + return; + } + + this.writeData.Add(obj); + } + + [Obsolete("writeData is a list now. Use and re-use it directly.")] + public bool CopyToListAndClear(List target) + { + if (!this.IsWriting) return false; + + target.AddRange(this.writeData); + this.writeData.Clear(); + + return true; + } + + /// Turns the stream into a new object[]. + public object[] ToArray() + { + return this.IsWriting ? this.writeData.ToArray() : this.readData; + } + + /// + /// Will read or write the value, depending on the stream's IsWriting value. + /// + public void Serialize(ref bool myBool) + { + if (this.IsWriting) + { + this.writeData.Add(myBool); + } + else + { + if (this.readData.Length > this.currentItem) + { + myBool = (bool) this.readData[this.currentItem]; + this.currentItem++; + } + } + } + + /// + /// Will read or write the value, depending on the stream's IsWriting value. + /// + public void Serialize(ref int myInt) + { + if (this.IsWriting) + { + this.writeData.Add(myInt); + } + else + { + if (this.readData.Length > this.currentItem) + { + myInt = (int) this.readData[this.currentItem]; + this.currentItem++; + } + } + } + + /// + /// Will read or write the value, depending on the stream's IsWriting value. + /// + public void Serialize(ref string value) + { + if (this.IsWriting) + { + this.writeData.Add(value); + } + else + { + if (this.readData.Length > this.currentItem) + { + value = (string) this.readData[this.currentItem]; + this.currentItem++; + } + } + } + + /// + /// Will read or write the value, depending on the stream's IsWriting value. + /// + public void Serialize(ref char value) + { + if (this.IsWriting) + { + this.writeData.Add(value); + } + else + { + if (this.readData.Length > this.currentItem) + { + value = (char) this.readData[this.currentItem]; + this.currentItem++; + } + } + } + + /// + /// Will read or write the value, depending on the stream's IsWriting value. + /// + public void Serialize(ref short value) + { + if (this.IsWriting) + { + this.writeData.Add(value); + } + else + { + if (this.readData.Length > this.currentItem) + { + value = (short) this.readData[this.currentItem]; + this.currentItem++; + } + } + } + + /// + /// Will read or write the value, depending on the stream's IsWriting value. + /// + public void Serialize(ref float obj) + { + if (this.IsWriting) + { + this.writeData.Add(obj); + } + else + { + if (this.readData.Length > this.currentItem) + { + obj = (float) this.readData[this.currentItem]; + this.currentItem++; + } + } + } + + /// + /// Will read or write the value, depending on the stream's IsWriting value. + /// + public void Serialize(ref Player obj) + { + if (this.IsWriting) + { + this.writeData.Add(obj); + } + else + { + if (this.readData.Length > this.currentItem) + { + obj = (Player) this.readData[this.currentItem]; + this.currentItem++; + } + } + } + + /// + /// Will read or write the value, depending on the stream's IsWriting value. + /// + public void Serialize(ref Vector3 obj) + { + if (this.IsWriting) + { + this.writeData.Add(obj); + } + else + { + if (this.readData.Length > this.currentItem) + { + obj = (Vector3) this.readData[this.currentItem]; + this.currentItem++; + } + } + } + + /// + /// Will read or write the value, depending on the stream's IsWriting value. + /// + public void Serialize(ref Vector2 obj) + { + if (this.IsWriting) + { + this.writeData.Add(obj); + } + else + { + if (this.readData.Length > this.currentItem) + { + obj = (Vector2) this.readData[this.currentItem]; + this.currentItem++; + } + } + } + + /// + /// Will read or write the value, depending on the stream's IsWriting value. + /// + public void Serialize(ref Quaternion obj) + { + if (this.IsWriting) + { + this.writeData.Add(obj); + } + else + { + if (this.readData.Length > this.currentItem) + { + obj = (Quaternion) this.readData[this.currentItem]; + this.currentItem++; + } + } + } + } + + + public class SceneManagerHelper + { + public static string ActiveSceneName + { + get + { + Scene s = SceneManager.GetActiveScene(); + return s.name; + } + } + + public static int ActiveSceneBuildIndex + { + get { return SceneManager.GetActiveScene().buildIndex; } + } + + + #if UNITY_EDITOR + /// In Editor, we can access the active scene's name. + public static string EditorActiveSceneName + { + get { return SceneManager.GetActiveScene().name; } + } + #endif + } + + + /// + /// The default implementation of a PrefabPool for PUN, which actually Instantiates and Destroys GameObjects but pools a resource. + /// + /// + /// This pool is not actually storing GameObjects for later reuse. Instead, it's destroying used GameObjects. + /// However, prefabs will be loaded from a Resources folder and cached, which speeds up Instantiation a bit. + /// + /// The ResourceCache is public, so it can be filled without relying on the Resources folders. + /// + public class DefaultPool : IPunPrefabPool + { + /// Contains a GameObject per prefabId, to speed up instantiation. + public readonly Dictionary ResourceCache = new Dictionary(); + + /// Returns an inactive instance of a networked GameObject, to be used by PUN. + /// String identifier for the networked object. + /// Location of the new object. + /// Rotation of the new object. + /// + public GameObject Instantiate(string prefabId, Vector3 position, Quaternion rotation) + { + GameObject res = null; + bool cached = this.ResourceCache.TryGetValue(prefabId, out res); + if (!cached) + { + res = Resources.Load(prefabId); + if (res == null) + { + Debug.LogError("DefaultPool failed to load \"" + prefabId + "\". Make sure it's in a \"Resources\" folder. Or use a custom IPunPrefabPool."); + } + else + { + this.ResourceCache.Add(prefabId, res); + } + } + + bool wasActive = res.activeSelf; + if (wasActive) res.SetActive(false); + + GameObject instance =GameObject.Instantiate(res, position, rotation) as GameObject; + + if (wasActive) res.SetActive(true); + return instance; + } + + /// Simply destroys a GameObject. + /// The GameObject to get rid of. + public void Destroy(GameObject gameObject) + { + GameObject.Destroy(gameObject); + } + } + + + /// Small number of extension methods that make it easier for PUN to work cross-Unity-versions. + public static class PunExtensions + { + public static Dictionary ParametersOfMethods = new Dictionary(); + + public static ParameterInfo[] GetCachedParemeters(this MethodInfo mo) + { + ParameterInfo[] result; + bool cached = ParametersOfMethods.TryGetValue(mo, out result); + + if (!cached) + { + result = mo.GetParameters(); + ParametersOfMethods[mo] = result; + } + + return result; + } + + public static PhotonView[] GetPhotonViewsInChildren(this UnityEngine.GameObject go) + { + return go.GetComponentsInChildren(true) as PhotonView[]; + } + + public static PhotonView GetPhotonView(this UnityEngine.GameObject go) + { + return go.GetComponent() as PhotonView; + } + + /// compares the squared magnitude of target - second to given float value + public static bool AlmostEquals(this Vector3 target, Vector3 second, float sqrMagnitudePrecision) + { + return (target - second).sqrMagnitude < sqrMagnitudePrecision; // TODO: inline vector methods to optimize? + } + + /// compares the squared magnitude of target - second to given float value + public static bool AlmostEquals(this Vector2 target, Vector2 second, float sqrMagnitudePrecision) + { + return (target - second).sqrMagnitude < sqrMagnitudePrecision; // TODO: inline vector methods to optimize? + } + + /// compares the angle between target and second to given float value + public static bool AlmostEquals(this Quaternion target, Quaternion second, float maxAngle) + { + return Quaternion.Angle(target, second) < maxAngle; + } + + /// compares two floats and returns true of their difference is less than floatDiff + public static bool AlmostEquals(this float target, float second, float floatDiff) + { + return Mathf.Abs(target - second) < floatDiff; + } + + + public static bool CheckIsAssignableFrom(this Type to, Type from) + { + #if !NETFX_CORE + return to.IsAssignableFrom(from); + #else + return to.GetTypeInfo().IsAssignableFrom(from.GetTypeInfo()); + #endif + } + + public static bool CheckIsInterface(this Type to) + { + #if !NETFX_CORE + return to.IsInterface; + #else + return to.GetTypeInfo().IsInterface; + #endif + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/PunClasses.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/PunClasses.cs.meta new file mode 100644 index 00000000..94dc7738 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/PunClasses.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: f40f16a0227e5c14293e269c875c0f9b +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonUnityNetworking/Code/ServerSettings.cs b/Assets/Photon/PhotonUnityNetworking/Code/ServerSettings.cs new file mode 100644 index 00000000..021c85ab --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/ServerSettings.cs @@ -0,0 +1,100 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// ScriptableObject defining a server setup. An instance is created as PhotonServerSettings. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + using System; + using System.Collections.Generic; + using ExitGames.Client.Photon; + using Photon.Realtime; + using UnityEngine; + + /// + /// Collection of connection-relevant settings, used internally by PhotonNetwork.ConnectUsingSettings. + /// + /// + /// Includes the AppSettings class from the Realtime APIs plus some other, PUN-relevant, settings. + [Serializable] + [HelpURL("https://doc.photonengine.com/en-us/pun/v2/getting-started/initial-setup")] + public class ServerSettings : ScriptableObject + { + [Tooltip("Core Photon Server/Cloud settings.")] + public AppSettings AppSettings; + + /// Region that will be used by the Editor and Development Builds. This ensures all users will be in the same region for testing. + [Tooltip("Developer build override for Best Region.")] + public string DevRegion; + + [Tooltip("Log output by PUN.")] + public PunLogLevel PunLogging = PunLogLevel.ErrorsOnly; + + [Tooltip("Logs additional info for debugging.")] + public bool EnableSupportLogger; + + [Tooltip("Enables apps to keep the connection without focus.")] + public bool RunInBackground = true; + + [Tooltip("Simulates an online connection.\nPUN can be used as usual.")] + public bool StartInOfflineMode; + + [Tooltip("RPC name list.\nUsed as shortcut when sending calls.")] + public List RpcList = new List(); // set by scripts and or via Inspector + + #if UNITY_EDITOR + public bool DisableAutoOpenWizard; + public bool ShowSettings; + public bool DevRegionSetOnce; + #endif + + /// Sets appid and region code in the AppSettings. Used in Editor. + public void UseCloud(string cloudAppid, string code = "") + { + this.AppSettings.AppIdRealtime = cloudAppid; + this.AppSettings.Server = null; + this.AppSettings.FixedRegion = string.IsNullOrEmpty(code) ? null : code; + } + + /// Checks if a string is a Guid by attempting to create one. + /// The potential guid to check. + /// True if new Guid(val) did not fail. + public static bool IsAppId(string val) + { + try + { + new Guid(val); + } + catch + { + return false; + } + return true; + } + + /// Gets the "best region summary" from the preferences. + /// The best region code in preferences. + public static string BestRegionSummaryInPreferences + { + get { return PhotonNetwork.BestRegionSummaryInPreferences; } + } + + /// Sets the "best region summary" in the preferences to null. On next start, the client will ping all available. + public static void ResetBestRegionCodeInPreferences() + { + PhotonNetwork.BestRegionSummaryInPreferences = null; + } + + /// String summary of the AppSettings. + public override string ToString() + { + return "ServerSettings: " + this.AppSettings.ToStringFull(); + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/ServerSettings.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/ServerSettings.cs.meta new file mode 100644 index 00000000..401bf342 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/ServerSettings.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 9f3758f8f58fdef43803eb9be1df0608 +labels: +- ExitGames +- PUN +- Photon +- Networking +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Utilities.meta b/Assets/Photon/PhotonUnityNetworking/Code/Utilities.meta new file mode 100644 index 00000000..2b0880b0 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Utilities.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d67e11e5c968e60489b4eeec4d85e165 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Utilities/NestedComponentUtilities.cs b/Assets/Photon/PhotonUnityNetworking/Code/Utilities/NestedComponentUtilities.cs new file mode 100644 index 00000000..d825e9cb --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Utilities/NestedComponentUtilities.cs @@ -0,0 +1,494 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Photon.Pun +{ + + public static class NestedComponentUtilities + { + + public static T EnsureRootComponentExists(this Transform transform) + where T : Component + where NestedT : Component + { + var root = GetParentComponent(transform); + if (root) + { + var comp = root.GetComponent(); + + if (comp) + return comp; + + return root.gameObject.AddComponent(); + } + + return null; + } + + #region GetComponent Replacements + + // Recycled collections + private static Queue nodesQueue = new Queue(); + public static Dictionary searchLists = new Dictionary(); + private static Stack nodeStack = new Stack(); + + /// + /// Find T on supplied transform or any parent. Unlike GetComponentInParent, GameObjects do not need to be active to be found. + /// + public static T GetParentComponent(this Transform t) + where T : Component + { + T found = t.GetComponent(); + + if (found) + return found; + + var par = t.parent; + while (par) + { + found = par.GetComponent(); + if (found) + return found; + par = par.parent; + } + return null; + } + + + /// + /// Returns all T found between the child transform and its root. Order in List from child to parent, with the root/parent most being last. + /// + /// + /// + public static void GetNestedComponentsInParents(this Transform t, List list) + where T : Component + { + list.Clear(); + + while (t != null) + { + T obj = t.GetComponent(); + if (obj) + list.Add(obj); + + t = t.parent; + } + } + + public static T GetNestedComponentInChildren(this Transform t, bool includeInactive) + where T : class + where NestedT : class + { + // Look for the most obvious check first on the root. + var found = t.GetComponent(); + if (!ReferenceEquals(found, null)) + return found; + + // No root found, start testing layer by layer - root is the first layer. Add to queue. + nodesQueue.Clear(); + nodesQueue.Enqueue(t); + + while (nodesQueue.Count > 0) + { + var node = nodesQueue.Dequeue(); + + for (int c = 0, ccnt = node.childCount; c < ccnt; ++c) + { + var child = node.GetChild(c); + + // Ignore branches that are not active + if (!includeInactive && !child.gameObject.activeSelf) + continue; + + // Hit a nested node - don't search this node + if (!ReferenceEquals(child.GetComponent(), null)) + continue; + + // see if what we are looking for is on this node + found = child.GetComponent(); + + // Return if we found what we are looking for + if (!ReferenceEquals(found, null)) + return found; + + // Add node to queue for next depth pass since nothing was found on this layer. + nodesQueue.Enqueue(child); + } + + } + return found; + } + + /// + /// Same as GetComponentInParent, but will always include inactive objects in search. + /// + /// + /// + /// + /// + public static T GetNestedComponentInParent(this Transform t) + where T : class + where NestedT : class + { + T found = null; + + Transform node = t; + do + { + + found = node.GetComponent(); + + if (!ReferenceEquals(found, null)) + return found; + + // stop search on node with PV + if (!ReferenceEquals(node.GetComponent(), null)) + return null; + + node = node.parent; + } + while (!ReferenceEquals(node, null)); + + return null; + } + + /// + /// UNTESTED + /// + /// + /// + /// + /// + public static T GetNestedComponentInParents(this Transform t) + where T : class + where NestedT : class + { + // First try root + var found = t.GetComponent(); + + if (!ReferenceEquals(found, null)) + return found; + + /// Get the reverse list of transforms climbing for start up to netobject + var par = t.parent; + + while (!ReferenceEquals(par, null)) + { + found = par.GetComponent(); + if (!ReferenceEquals(found, null)) + return found; + + /// Stop climbing at the NetObj (this is how we detect nesting + if (!ReferenceEquals(par.GetComponent(), null)) + return null; + + par = par.parent; + }; + + return null; + } + + + /// + /// Finds components of type T on supplied transform, and every parent above that node, inclusively stopping on node StopSearchOnT component. + /// + /// + /// + /// + /// + /// + public static void GetNestedComponentsInParents(this Transform t, List list) + where T : class + where NestedT : class + { + + // Get components on the starting node - this is a given. + t.GetComponents(list); + + // If the starting node has the stop component, we are done. + if (!ReferenceEquals(t.GetComponent(), null)) + return; + + var tnode = t.parent; + + // If there is no parent, we are done. + if (ReferenceEquals(tnode, null)) + return; + + nodeStack.Clear(); + + while (true) + { + // add new parent to stack + nodeStack.Push(tnode); + + // if this node has the Stop, we are done recursing up. + if (!ReferenceEquals(tnode.GetComponent(), null)) + break; + + // Get the next parent node and add it to the stack + tnode = tnode.parent; + + // Stop recursing up if the parent is null + if (ReferenceEquals(tnode, null)) + break; + } + + if (nodeStack.Count == 0) + return; + + System.Type type = typeof(T); + + // Acquire the right searchlist from our pool + List searchList; + if (!searchLists.ContainsKey(type)) + { + searchList = new List(); + searchLists.Add(type, searchList); + } + else + { + searchList = searchLists[type] as List; + } + + // Reverse iterate the nodes found. This produces a GetComponentInParent that starts from the parent Stop down to the provided transform + while (nodeStack.Count > 0) + { + var node = nodeStack.Pop(); + + node.GetComponents(searchList); + list.AddRange(searchList); + } + } + + + /// + /// Same as GetComponentsInChildren, but will not recurse into children with component of the DontRecurseOnT type. This allows nesting of PhotonViews/NetObjects to be respected. + /// + /// + /// + /// Pass null and a reused list will be used. Consume immediately. + public static List GetNestedComponentsInChildren(this Transform t, List list, bool includeInactive = true) + where T : class + where NestedT : class + { + System.Type type = typeof(T); + + // Temp lists are also recycled. Get/Create a reusable List of this type. + List searchList; + if (!searchLists.ContainsKey(type)) + searchLists.Add(type, searchList = new List()); + else + searchList = searchLists[type] as List; + + nodesQueue.Clear(); + + if (list == null) + list = new List(); + + // Get components on starting transform - no exceptions + t.GetComponents(list); + + // Add first layer of children to the queue for next layer processing. + for (int i = 0, cnt = t.childCount; i < cnt; ++i) + { + var child = t.GetChild(i); + + // Ignore inactive nodes (optional) + if (!includeInactive && !child.gameObject.activeSelf) + continue; + + // ignore nested DontRecurseOnT + if (!ReferenceEquals(child.GetComponent(), null)) + continue; + + nodesQueue.Enqueue(child); + } + + // Recurse node layers + while (nodesQueue.Count > 0) + { + var node = nodesQueue.Dequeue(); + + // Add found components on this gameobject node + node.GetComponents(searchList); + list.AddRange(searchList); + + // Add children to the queue for next layer processing. + for (int i = 0, cnt = node.childCount; i < cnt; ++i) + { + var child = node.GetChild(i); + + // Ignore inactive nodes (optional) + if (!includeInactive && !child.gameObject.activeSelf) + continue; + + // ignore nested NestedT + if (!ReferenceEquals(child.GetComponent(), null)) + continue; + + nodesQueue.Enqueue(child); + } + } + + return list; + } + + /// + /// Same as GetComponentsInChildren, but will not recurse into children with component of the DontRecurseOnT type. This allows nesting of PhotonViews/NetObjects to be respected. + /// + /// + /// + /// Pass null and a reused list will be used. Consume immediately. + public static List GetNestedComponentsInChildren(this Transform t, List list, bool includeInactive = true, params System.Type[] stopOn) + where T : class + { + System.Type type = typeof(T); + + // Temp lists are also recycled. Get/Create a reusable List of this type. + List searchList; + if (!searchLists.ContainsKey(type)) + searchLists.Add(type, searchList = new List()); + else + searchList = searchLists[type] as List; + + nodesQueue.Clear(); + + // Get components on starting transform - no exceptions + t.GetComponents(list); + + // Add first layer of children to the queue for next layer processing. + for (int i = 0, cnt = t.childCount; i < cnt; ++i) + { + var child = t.GetChild(i); + + // Ignore inactive nodes (optional) + if (!includeInactive && !child.gameObject.activeSelf) + continue; + + // ignore nested DontRecurseOnT + bool stopRecurse = false; + for (int s = 0, scnt = stopOn.Length; s < scnt; ++s) + { + if (!ReferenceEquals(child.GetComponent(stopOn[s]), null)) + { + stopRecurse = true; + break; + } + } + if (stopRecurse) + continue; + + nodesQueue.Enqueue(child); + } + + // Recurse node layers + while (nodesQueue.Count > 0) + { + var node = nodesQueue.Dequeue(); + + // Add found components on this gameobject node + node.GetComponents(searchList); + list.AddRange(searchList); + + // Add children to the queue for next layer processing. + for (int i = 0, cnt = node.childCount; i < cnt; ++i) + { + var child = node.GetChild(i); + + // Ignore inactive nodes (optional) + if (!includeInactive && !child.gameObject.activeSelf) + continue; + + // ignore nested NestedT + bool stopRecurse = false; + for (int s = 0, scnt = stopOn.Length; s < scnt; ++s) + { + if (!ReferenceEquals(child.GetComponent(stopOn[s]), null)) + { + stopRecurse = true; + break; + } + } + + if (stopRecurse) + continue; + + nodesQueue.Enqueue(child); + } + } + + return list; + } + + /// + /// Same as GetComponentsInChildren, but will not recurse into children with component of the NestedT type. This allows nesting of PhotonViews/NetObjects to be respected. + /// + /// Cast found components to this type. Typically Component, but any other class/interface will work as long as they are assignable from SearchT. + /// Find components of this class or interface type. + /// + /// + /// + /// + /// + public static void GetNestedComponentsInChildren(this Transform t, bool includeInactive, List list) + where T : class + where SearchT : class + { + list.Clear(); + + // If this is inactive, nothing will be found. Give up now if we are restricted to active. + if (!includeInactive && !t.gameObject.activeSelf) + return; + + System.Type searchType = typeof(SearchT); + + // Temp lists are also recycled. Get/Create a reusable List of this type. + List searchList; + if (!searchLists.ContainsKey(searchType)) + searchLists.Add(searchType, searchList = new List()); + else + searchList = searchLists[searchType] as List; + + // Recurse child nodes one layer at a time. Using a Queue allows this to happen without a lot of work. + nodesQueue.Clear(); + nodesQueue.Enqueue(t); + + while (nodesQueue.Count > 0) + { + var node = nodesQueue.Dequeue(); + + // Add found components on this gameobject node + searchList.Clear(); + node.GetComponents(searchList); + foreach (var comp in searchList) + { + var casted = comp as T; + if (!ReferenceEquals(casted, null)) + list.Add(casted); + } + + // Add children to the queue for next layer processing. + for (int i = 0, cnt = node.childCount; i < cnt; ++i) + { + var child = node.GetChild(i); + + // Ignore inactive nodes (optional) + if (!includeInactive && !child.gameObject.activeSelf) + continue; + + // ignore nested DontRecurseOnT + if (!ReferenceEquals(child.GetComponent(), null)) + continue; + + nodesQueue.Enqueue(child); + } + } + + } + + #endregion + } + +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Utilities/NestedComponentUtilities.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Utilities/NestedComponentUtilities.cs.meta new file mode 100644 index 00000000..71efce1d --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Utilities/NestedComponentUtilities.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 40bca7ec270007b40a4de315c071f4d3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Views.meta b/Assets/Photon/PhotonUnityNetworking/Code/Views.meta new file mode 100644 index 00000000..965d75b3 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Views.meta @@ -0,0 +1,5 @@ +fileFormatVersion: 2 +guid: a724ff00b77e85d44a2af6baf46fc6a2 +folderAsset: yes +DefaultImporter: + userData: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonAnimatorView.cs b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonAnimatorView.cs new file mode 100644 index 00000000..10381160 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonAnimatorView.cs @@ -0,0 +1,572 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// Component to synchronize Mecanim animations via PUN. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + using System.Collections.Generic; + using UnityEngine; + + + /// + /// This class helps you to synchronize Mecanim animations + /// Simply add the component to your GameObject and make sure that + /// the PhotonAnimatorView is added to the list of observed components + /// + /// + /// When Using Trigger Parameters, make sure the component that sets the trigger is higher in the stack of Components on the GameObject than 'PhotonAnimatorView' + /// Triggers are raised true during one frame only. + /// + [AddComponentMenu("Photon Networking/Photon Animator View")] + public class PhotonAnimatorView : MonoBehaviourPun, IPunObservable + { + #region Enums + + public enum ParameterType + { + Float = 1, + Int = 3, + Bool = 4, + Trigger = 9, + } + + + public enum SynchronizeType + { + Disabled = 0, + Discrete = 1, + Continuous = 2, + } + + + [System.Serializable] + public class SynchronizedParameter + { + public ParameterType Type; + public SynchronizeType SynchronizeType; + public string Name; + } + + + [System.Serializable] + public class SynchronizedLayer + { + public SynchronizeType SynchronizeType; + public int LayerIndex; + } + + #endregion + + + #region Properties + + #if PHOTON_DEVELOP + public PhotonAnimatorView ReceivingSender; + #endif + + #endregion + + + #region Members + + private bool TriggerUsageWarningDone; + + private Animator m_Animator; + + private PhotonStreamQueue m_StreamQueue = new PhotonStreamQueue(120); + + //These fields are only used in the CustomEditor for this script and would trigger a + //"this variable is never used" warning, which I am suppressing here + #pragma warning disable 0414 + + [HideInInspector] + [SerializeField] + private bool ShowLayerWeightsInspector = true; + + [HideInInspector] + [SerializeField] + private bool ShowParameterInspector = true; + + #pragma warning restore 0414 + + [HideInInspector] + [SerializeField] + private List m_SynchronizeParameters = new List(); + + [HideInInspector] + [SerializeField] + private List m_SynchronizeLayers = new List(); + + private Vector3 m_ReceiverPosition; + private float m_LastDeserializeTime; + private bool m_WasSynchronizeTypeChanged = true; + + /// + /// Cached raised triggers that are set to be synchronized in discrete mode. since a Trigger only stay up for less than a frame, + /// We need to cache it until the next discrete serialization call. + /// + List m_raisedDiscreteTriggersCache = new List(); + + #endregion + + + #region Unity + + private void Awake() + { + this.m_Animator = GetComponent(); + } + + private void Update() + { + if (this.m_Animator.applyRootMotion && this.photonView.IsMine == false && PhotonNetwork.IsConnected == true) + { + this.m_Animator.applyRootMotion = false; + } + + if (PhotonNetwork.InRoom == false || PhotonNetwork.CurrentRoom.PlayerCount <= 1) + { + this.m_StreamQueue.Reset(); + return; + } + + if (this.photonView.IsMine == true) + { + this.SerializeDataContinuously(); + + this.CacheDiscreteTriggers(); + } + else + { + this.DeserializeDataContinuously(); + } + } + + #endregion + + + #region Setup Synchronizing Methods + + /// + /// Caches the discrete triggers values for keeping track of raised triggers, and will be reseted after the sync routine got performed + /// + public void CacheDiscreteTriggers() + { + for (int i = 0; i < this.m_SynchronizeParameters.Count; ++i) + { + SynchronizedParameter parameter = this.m_SynchronizeParameters[i]; + + if (parameter.SynchronizeType == SynchronizeType.Discrete && parameter.Type == ParameterType.Trigger && this.m_Animator.GetBool(parameter.Name)) + { + if (parameter.Type == ParameterType.Trigger) + { + this.m_raisedDiscreteTriggersCache.Add(parameter.Name); + break; + } + } + } + } + + /// + /// Check if a specific layer is configured to be synchronize + /// + /// Index of the layer. + /// True if the layer is synchronized + public bool DoesLayerSynchronizeTypeExist(int layerIndex) + { + return this.m_SynchronizeLayers.FindIndex(item => item.LayerIndex == layerIndex) != -1; + } + + /// + /// Check if the specified parameter is configured to be synchronized + /// + /// The name of the parameter. + /// True if the parameter is synchronized + public bool DoesParameterSynchronizeTypeExist(string name) + { + return this.m_SynchronizeParameters.FindIndex(item => item.Name == name) != -1; + } + + /// + /// Get a list of all synchronized layers + /// + /// List of SynchronizedLayer objects + public List GetSynchronizedLayers() + { + return this.m_SynchronizeLayers; + } + + /// + /// Get a list of all synchronized parameters + /// + /// List of SynchronizedParameter objects + public List GetSynchronizedParameters() + { + return this.m_SynchronizeParameters; + } + + /// + /// Gets the type how the layer is synchronized + /// + /// Index of the layer. + /// Disabled/Discrete/Continuous + public SynchronizeType GetLayerSynchronizeType(int layerIndex) + { + int index = this.m_SynchronizeLayers.FindIndex(item => item.LayerIndex == layerIndex); + + if (index == -1) + { + return SynchronizeType.Disabled; + } + + return this.m_SynchronizeLayers[index].SynchronizeType; + } + + /// + /// Gets the type how the parameter is synchronized + /// + /// The name of the parameter. + /// Disabled/Discrete/Continuous + public SynchronizeType GetParameterSynchronizeType(string name) + { + int index = this.m_SynchronizeParameters.FindIndex(item => item.Name == name); + + if (index == -1) + { + return SynchronizeType.Disabled; + } + + return this.m_SynchronizeParameters[index].SynchronizeType; + } + + /// + /// Sets the how a layer should be synchronized + /// + /// Index of the layer. + /// Disabled/Discrete/Continuous + public void SetLayerSynchronized(int layerIndex, SynchronizeType synchronizeType) + { + if (Application.isPlaying == true) + { + this.m_WasSynchronizeTypeChanged = true; + } + + int index = this.m_SynchronizeLayers.FindIndex(item => item.LayerIndex == layerIndex); + + if (index == -1) + { + this.m_SynchronizeLayers.Add(new SynchronizedLayer {LayerIndex = layerIndex, SynchronizeType = synchronizeType}); + } + else + { + this.m_SynchronizeLayers[index].SynchronizeType = synchronizeType; + } + } + + /// + /// Sets the how a parameter should be synchronized + /// + /// The name of the parameter. + /// The type of the parameter. + /// Disabled/Discrete/Continuous + public void SetParameterSynchronized(string name, ParameterType type, SynchronizeType synchronizeType) + { + if (Application.isPlaying == true) + { + this.m_WasSynchronizeTypeChanged = true; + } + + int index = this.m_SynchronizeParameters.FindIndex(item => item.Name == name); + + if (index == -1) + { + this.m_SynchronizeParameters.Add(new SynchronizedParameter {Name = name, Type = type, SynchronizeType = synchronizeType}); + } + else + { + this.m_SynchronizeParameters[index].SynchronizeType = synchronizeType; + } + } + + #endregion + + + #region Serialization + + private void SerializeDataContinuously() + { + if (this.m_Animator == null) + { + return; + } + + for (int i = 0; i < this.m_SynchronizeLayers.Count; ++i) + { + if (this.m_SynchronizeLayers[i].SynchronizeType == SynchronizeType.Continuous) + { + this.m_StreamQueue.SendNext(this.m_Animator.GetLayerWeight(this.m_SynchronizeLayers[i].LayerIndex)); + } + } + + for (int i = 0; i < this.m_SynchronizeParameters.Count; ++i) + { + SynchronizedParameter parameter = this.m_SynchronizeParameters[i]; + + if (parameter.SynchronizeType == SynchronizeType.Continuous) + { + switch (parameter.Type) + { + case ParameterType.Bool: + this.m_StreamQueue.SendNext(this.m_Animator.GetBool(parameter.Name)); + break; + case ParameterType.Float: + this.m_StreamQueue.SendNext(this.m_Animator.GetFloat(parameter.Name)); + break; + case ParameterType.Int: + this.m_StreamQueue.SendNext(this.m_Animator.GetInteger(parameter.Name)); + break; + case ParameterType.Trigger: + if (!TriggerUsageWarningDone) + { + TriggerUsageWarningDone = true; + Debug.Log("PhotonAnimatorView: When using triggers, make sure this component is last in the stack.\n" + + "If you still experience issues, implement triggers as a regular RPC \n" + + "or in custom IPunObservable component instead",this); + + } + this.m_StreamQueue.SendNext(this.m_Animator.GetBool(parameter.Name)); + break; + } + } + } + } + + + private void DeserializeDataContinuously() + { + if (this.m_StreamQueue.HasQueuedObjects() == false) + { + return; + } + + for (int i = 0; i < this.m_SynchronizeLayers.Count; ++i) + { + if (this.m_SynchronizeLayers[i].SynchronizeType == SynchronizeType.Continuous) + { + this.m_Animator.SetLayerWeight(this.m_SynchronizeLayers[i].LayerIndex, (float) this.m_StreamQueue.ReceiveNext()); + } + } + + for (int i = 0; i < this.m_SynchronizeParameters.Count; ++i) + { + SynchronizedParameter parameter = this.m_SynchronizeParameters[i]; + + if (parameter.SynchronizeType == SynchronizeType.Continuous) + { + switch (parameter.Type) + { + case ParameterType.Bool: + this.m_Animator.SetBool(parameter.Name, (bool) this.m_StreamQueue.ReceiveNext()); + break; + case ParameterType.Float: + this.m_Animator.SetFloat(parameter.Name, (float) this.m_StreamQueue.ReceiveNext()); + break; + case ParameterType.Int: + this.m_Animator.SetInteger(parameter.Name, (int) this.m_StreamQueue.ReceiveNext()); + break; + case ParameterType.Trigger: + this.m_Animator.SetBool(parameter.Name, (bool) this.m_StreamQueue.ReceiveNext()); + break; + } + } + } + } + + private void SerializeDataDiscretly(PhotonStream stream) + { + for (int i = 0; i < this.m_SynchronizeLayers.Count; ++i) + { + if (this.m_SynchronizeLayers[i].SynchronizeType == SynchronizeType.Discrete) + { + stream.SendNext(this.m_Animator.GetLayerWeight(this.m_SynchronizeLayers[i].LayerIndex)); + } + } + + for (int i = 0; i < this.m_SynchronizeParameters.Count; ++i) + { + + SynchronizedParameter parameter = this.m_SynchronizeParameters[i]; + + if (parameter.SynchronizeType == SynchronizeType.Discrete) + { + switch (parameter.Type) + { + case ParameterType.Bool: + stream.SendNext(this.m_Animator.GetBool(parameter.Name)); + break; + case ParameterType.Float: + stream.SendNext(this.m_Animator.GetFloat(parameter.Name)); + break; + case ParameterType.Int: + stream.SendNext(this.m_Animator.GetInteger(parameter.Name)); + break; + case ParameterType.Trigger: + if (!TriggerUsageWarningDone) + { + TriggerUsageWarningDone = true; + Debug.Log("PhotonAnimatorView: When using triggers, make sure this component is last in the stack.\n" + + "If you still experience issues, implement triggers as a regular RPC \n" + + "or in custom IPunObservable component instead",this); + + } + // here we can't rely on the current real state of the trigger, we might have missed its raise + stream.SendNext(this.m_raisedDiscreteTriggersCache.Contains(parameter.Name)); + break; + } + } + } + + // reset the cache, we've synchronized. + this.m_raisedDiscreteTriggersCache.Clear(); + } + + private void DeserializeDataDiscretly(PhotonStream stream) + { + for (int i = 0; i < this.m_SynchronizeLayers.Count; ++i) + { + if (this.m_SynchronizeLayers[i].SynchronizeType == SynchronizeType.Discrete) + { + this.m_Animator.SetLayerWeight(this.m_SynchronizeLayers[i].LayerIndex, (float) stream.ReceiveNext()); + } + } + + for (int i = 0; i < this.m_SynchronizeParameters.Count; ++i) + { + SynchronizedParameter parameter = this.m_SynchronizeParameters[i]; + + if (parameter.SynchronizeType == SynchronizeType.Discrete) + { + switch (parameter.Type) + { + case ParameterType.Bool: + if (stream.PeekNext() is bool == false) + { + return; + } + this.m_Animator.SetBool(parameter.Name, (bool) stream.ReceiveNext()); + break; + case ParameterType.Float: + if (stream.PeekNext() is float == false) + { + return; + } + + this.m_Animator.SetFloat(parameter.Name, (float) stream.ReceiveNext()); + break; + case ParameterType.Int: + if (stream.PeekNext() is int == false) + { + return; + } + + this.m_Animator.SetInteger(parameter.Name, (int) stream.ReceiveNext()); + break; + case ParameterType.Trigger: + if (stream.PeekNext() is bool == false) + { + return; + } + + if ((bool) stream.ReceiveNext()) + { + this.m_Animator.SetTrigger(parameter.Name); + } + break; + } + } + } + } + + private void SerializeSynchronizationTypeState(PhotonStream stream) + { + byte[] states = new byte[this.m_SynchronizeLayers.Count + this.m_SynchronizeParameters.Count]; + + for (int i = 0; i < this.m_SynchronizeLayers.Count; ++i) + { + states[i] = (byte) this.m_SynchronizeLayers[i].SynchronizeType; + } + + for (int i = 0; i < this.m_SynchronizeParameters.Count; ++i) + { + states[this.m_SynchronizeLayers.Count + i] = (byte) this.m_SynchronizeParameters[i].SynchronizeType; + } + + stream.SendNext(states); + } + + private void DeserializeSynchronizationTypeState(PhotonStream stream) + { + byte[] state = (byte[]) stream.ReceiveNext(); + + for (int i = 0; i < this.m_SynchronizeLayers.Count; ++i) + { + this.m_SynchronizeLayers[i].SynchronizeType = (SynchronizeType) state[i]; + } + + for (int i = 0; i < this.m_SynchronizeParameters.Count; ++i) + { + this.m_SynchronizeParameters[i].SynchronizeType = (SynchronizeType) state[this.m_SynchronizeLayers.Count + i]; + } + } + + public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) + { + if (this.m_Animator == null) + { + return; + } + + if (stream.IsWriting == true) + { + if (this.m_WasSynchronizeTypeChanged == true) + { + this.m_StreamQueue.Reset(); + this.SerializeSynchronizationTypeState(stream); + + this.m_WasSynchronizeTypeChanged = false; + } + + this.m_StreamQueue.Serialize(stream); + this.SerializeDataDiscretly(stream); + } + else + { + #if PHOTON_DEVELOP + if( ReceivingSender != null ) + { + ReceivingSender.OnPhotonSerializeView( stream, info ); + } + else + #endif + { + if (stream.PeekNext() is byte[]) + { + this.DeserializeSynchronizationTypeState(stream); + } + + this.m_StreamQueue.Deserialize(stream); + this.DeserializeDataDiscretly(stream); + } + } + } + + #endregion + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonAnimatorView.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonAnimatorView.cs.meta new file mode 100644 index 00000000..9232492e --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonAnimatorView.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9b8c4a61274f60b4ea5fb4299cfdbf14 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonRigidbody2DView.cs b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonRigidbody2DView.cs new file mode 100644 index 00000000..ba6333db --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonRigidbody2DView.cs @@ -0,0 +1,111 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// Component to synchronize 2d rigidbodies via PUN. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + using UnityEngine; + + + [RequireComponent(typeof(Rigidbody2D))] + [AddComponentMenu("Photon Networking/Photon Rigidbody 2D View")] + public class PhotonRigidbody2DView : MonoBehaviourPun, IPunObservable + { + private float m_Distance; + private float m_Angle; + + private Rigidbody2D m_Body; + + private Vector2 m_NetworkPosition; + + private float m_NetworkRotation; + + [HideInInspector] + public bool m_SynchronizeVelocity = true; + [HideInInspector] + public bool m_SynchronizeAngularVelocity = false; + + [HideInInspector] + public bool m_TeleportEnabled = false; + [HideInInspector] + public float m_TeleportIfDistanceGreaterThan = 3.0f; + + public void Awake() + { + this.m_Body = GetComponent(); + + this.m_NetworkPosition = new Vector2(); + } + + public void FixedUpdate() + { + if (!this.photonView.IsMine) + { + this.m_Body.position = Vector2.MoveTowards(this.m_Body.position, this.m_NetworkPosition, this.m_Distance * (1.0f / PhotonNetwork.SerializationRate)); + this.m_Body.rotation = Mathf.MoveTowards(this.m_Body.rotation, this.m_NetworkRotation, this.m_Angle * (1.0f / PhotonNetwork.SerializationRate)); + } + } + + public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) + { + if (stream.IsWriting) + { + stream.SendNext(this.m_Body.position); + stream.SendNext(this.m_Body.rotation); + + if (this.m_SynchronizeVelocity) + { + stream.SendNext(this.m_Body.velocity); + } + + if (this.m_SynchronizeAngularVelocity) + { + stream.SendNext(this.m_Body.angularVelocity); + } + } + else + { + this.m_NetworkPosition = (Vector2)stream.ReceiveNext(); + this.m_NetworkRotation = (float)stream.ReceiveNext(); + + if (this.m_TeleportEnabled) + { + if (Vector3.Distance(this.m_Body.position, this.m_NetworkPosition) > this.m_TeleportIfDistanceGreaterThan) + { + this.m_Body.position = this.m_NetworkPosition; + } + } + + if (this.m_SynchronizeVelocity || this.m_SynchronizeAngularVelocity) + { + float lag = Mathf.Abs((float)(PhotonNetwork.Time - info.SentServerTime)); + + if (m_SynchronizeVelocity) + { + this.m_Body.velocity = (Vector2)stream.ReceiveNext(); + + this.m_NetworkPosition += this.m_Body.velocity * lag; + + this.m_Distance = Vector2.Distance(this.m_Body.position, this.m_NetworkPosition); + } + + if (this.m_SynchronizeAngularVelocity) + { + this.m_Body.angularVelocity = (float)stream.ReceiveNext(); + + this.m_NetworkRotation += this.m_Body.angularVelocity * lag; + + this.m_Angle = Mathf.Abs(this.m_Body.rotation - this.m_NetworkRotation); + } + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonRigidbody2DView.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonRigidbody2DView.cs.meta new file mode 100644 index 00000000..b2e6d087 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonRigidbody2DView.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 0e7cb724808c322458aa4d15f5035fa9 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonRigidbodyView.cs b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonRigidbodyView.cs new file mode 100644 index 00000000..de3405ad --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonRigidbodyView.cs @@ -0,0 +1,112 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// Component to synchronize rigidbodies via PUN. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + using UnityEngine; + + + [RequireComponent(typeof(Rigidbody))] + [AddComponentMenu("Photon Networking/Photon Rigidbody View")] + public class PhotonRigidbodyView : MonoBehaviourPun, IPunObservable + { + private float m_Distance; + private float m_Angle; + + private Rigidbody m_Body; + + private Vector3 m_NetworkPosition; + + private Quaternion m_NetworkRotation; + + [HideInInspector] + public bool m_SynchronizeVelocity = true; + [HideInInspector] + public bool m_SynchronizeAngularVelocity = false; + + [HideInInspector] + public bool m_TeleportEnabled = false; + [HideInInspector] + public float m_TeleportIfDistanceGreaterThan = 3.0f; + + public void Awake() + { + this.m_Body = GetComponent(); + + this.m_NetworkPosition = new Vector3(); + this.m_NetworkRotation = new Quaternion(); + } + + public void FixedUpdate() + { + if (!this.photonView.IsMine) + { + this.m_Body.position = Vector3.MoveTowards(this.m_Body.position, this.m_NetworkPosition, this.m_Distance * (1.0f / PhotonNetwork.SerializationRate)); + this.m_Body.rotation = Quaternion.RotateTowards(this.m_Body.rotation, this.m_NetworkRotation, this.m_Angle * (1.0f / PhotonNetwork.SerializationRate)); + } + } + + public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) + { + if (stream.IsWriting) + { + stream.SendNext(this.m_Body.position); + stream.SendNext(this.m_Body.rotation); + + if (this.m_SynchronizeVelocity) + { + stream.SendNext(this.m_Body.velocity); + } + + if (this.m_SynchronizeAngularVelocity) + { + stream.SendNext(this.m_Body.angularVelocity); + } + } + else + { + this.m_NetworkPosition = (Vector3)stream.ReceiveNext(); + this.m_NetworkRotation = (Quaternion)stream.ReceiveNext(); + + if (this.m_TeleportEnabled) + { + if (Vector3.Distance(this.m_Body.position, this.m_NetworkPosition) > this.m_TeleportIfDistanceGreaterThan) + { + this.m_Body.position = this.m_NetworkPosition; + } + } + + if (this.m_SynchronizeVelocity || this.m_SynchronizeAngularVelocity) + { + float lag = Mathf.Abs((float)(PhotonNetwork.Time - info.SentServerTime)); + + if (this.m_SynchronizeVelocity) + { + this.m_Body.velocity = (Vector3)stream.ReceiveNext(); + + this.m_NetworkPosition += this.m_Body.velocity * lag; + + this.m_Distance = Vector3.Distance(this.m_Body.position, this.m_NetworkPosition); + } + + if (this.m_SynchronizeAngularVelocity) + { + this.m_Body.angularVelocity = (Vector3)stream.ReceiveNext(); + + this.m_NetworkRotation = Quaternion.Euler(this.m_Body.angularVelocity * lag) * this.m_NetworkRotation; + + this.m_Angle = Quaternion.Angle(this.m_Body.rotation, this.m_NetworkRotation); + } + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonRigidbodyView.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonRigidbodyView.cs.meta new file mode 100644 index 00000000..e8c398fb --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonRigidbodyView.cs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 64179f3720bbfe947b7724caa67b7c1d +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonTransformView.cs b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonTransformView.cs new file mode 100644 index 00000000..4745a2b1 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonTransformView.cs @@ -0,0 +1,194 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// Component to synchronize Transforms via PUN PhotonView. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + using UnityEngine; + + [AddComponentMenu("Photon Networking/Photon Transform View")] + [HelpURL("https://doc.photonengine.com/en-us/pun/v2/gameplay/synchronization-and-state")] + public class PhotonTransformView : MonoBehaviourPun, IPunObservable + { + private float m_Distance; + private float m_Angle; + + private Vector3 m_Direction; + private Vector3 m_NetworkPosition; + private Vector3 m_StoredPosition; + + private Quaternion m_NetworkRotation; + + public bool m_SynchronizePosition = true; + public bool m_SynchronizeRotation = true; + public bool m_SynchronizeScale = false; + + [Tooltip("Indicates if localPosition and localRotation should be used. Scale ignores this setting, and always uses localScale to avoid issues with lossyScale.")] + public bool m_UseLocal; + + bool m_firstTake = false; + + public void Awake() + { + m_StoredPosition = transform.localPosition; + m_NetworkPosition = Vector3.zero; + + m_NetworkRotation = Quaternion.identity; + } + + private void Reset() + { + // Only default to true with new instances. useLocal will remain false for old projects that are updating PUN. + m_UseLocal = true; + } + + void OnEnable() + { + m_firstTake = true; + } + + public void Update() + { + var tr = transform; + + if (!this.photonView.IsMine) + { + if (m_UseLocal) + + { + tr.localPosition = Vector3.MoveTowards(tr.localPosition, this.m_NetworkPosition, this.m_Distance * Time.deltaTime * PhotonNetwork.SerializationRate); + tr.localRotation = Quaternion.RotateTowards(tr.localRotation, this.m_NetworkRotation, this.m_Angle * Time.deltaTime * PhotonNetwork.SerializationRate); + } + else + { + tr.position = Vector3.MoveTowards(tr.position, this.m_NetworkPosition, this.m_Distance * Time.deltaTime * PhotonNetwork.SerializationRate); + tr.rotation = Quaternion.RotateTowards(tr.rotation, this.m_NetworkRotation, this.m_Angle * Time.deltaTime * PhotonNetwork.SerializationRate); + } + } + } + + public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) + { + var tr = transform; + + // Write + if (stream.IsWriting) + { + if (this.m_SynchronizePosition) + { + if (m_UseLocal) + { + this.m_Direction = tr.localPosition - this.m_StoredPosition; + this.m_StoredPosition = tr.localPosition; + stream.SendNext(tr.localPosition); + stream.SendNext(this.m_Direction); + } + else + { + this.m_Direction = tr.position - this.m_StoredPosition; + this.m_StoredPosition = tr.position; + stream.SendNext(tr.position); + stream.SendNext(this.m_Direction); + } + } + + if (this.m_SynchronizeRotation) + { + if (m_UseLocal) + { + stream.SendNext(tr.localRotation); + } + else + { + stream.SendNext(tr.rotation); + } + } + + if (this.m_SynchronizeScale) + { + stream.SendNext(tr.localScale); + } + } + // Read + else + { + if (this.m_SynchronizePosition) + { + this.m_NetworkPosition = (Vector3)stream.ReceiveNext(); + this.m_Direction = (Vector3)stream.ReceiveNext(); + + if (m_firstTake) + { + if (m_UseLocal) + tr.localPosition = this.m_NetworkPosition; + else + tr.position = this.m_NetworkPosition; + + this.m_Distance = 0f; + } + else + { + float lag = Mathf.Abs((float)(PhotonNetwork.Time - info.SentServerTime)); + this.m_NetworkPosition += this.m_Direction * lag; + if (m_UseLocal) + { + this.m_Distance = Vector3.Distance(tr.localPosition, this.m_NetworkPosition); + } + else + { + this.m_Distance = Vector3.Distance(tr.position, this.m_NetworkPosition); + } + } + + } + + if (this.m_SynchronizeRotation) + { + this.m_NetworkRotation = (Quaternion)stream.ReceiveNext(); + + if (m_firstTake) + { + this.m_Angle = 0f; + + if (m_UseLocal) + { + tr.localRotation = this.m_NetworkRotation; + } + else + { + tr.rotation = this.m_NetworkRotation; + } + } + else + { + if (m_UseLocal) + { + this.m_Angle = Quaternion.Angle(tr.localRotation, this.m_NetworkRotation); + } + else + { + this.m_Angle = Quaternion.Angle(tr.rotation, this.m_NetworkRotation); + } + } + } + + if (this.m_SynchronizeScale) + { + tr.localScale = (Vector3)stream.ReceiveNext(); + } + + if (m_firstTake) + { + m_firstTake = false; + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonTransformView.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonTransformView.cs.meta new file mode 100644 index 00000000..c6c45cb5 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonTransformView.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 627855c7f81362d41938ffe0b1475957 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonTransformViewClassic.cs b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonTransformViewClassic.cs new file mode 100644 index 00000000..92f64aaa --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonTransformViewClassic.cs @@ -0,0 +1,557 @@ +// ---------------------------------------------------------------------------- +// +// PhotonNetwork Framework for Unity - Copyright (C) 2018 Exit Games GmbH +// +// +// Component to synchronize Transforms via PUN PhotonView. +// +// developer@exitgames.com +// ---------------------------------------------------------------------------- + + +namespace Photon.Pun +{ + using UnityEngine; + using System.Collections.Generic; + + + /// + /// This class helps you to synchronize position, rotation and scale + /// of a GameObject. It also gives you many different options to make + /// the synchronized values appear smooth, even when the data is only + /// send a couple of times per second. + /// Simply add the component to your GameObject and make sure that + /// the PhotonTransformViewClassic is added to the list of observed components + /// + [AddComponentMenu("Photon Networking/Photon Transform View Classic")] + public class PhotonTransformViewClassic : MonoBehaviourPun, IPunObservable + { + //As this component is very complex, we separated it into multiple classes. + //The PositionModel, RotationModel and ScaleMode store the data you are able to + //configure in the inspector while the "control" objects below are actually moving + //the object and calculating all the inter- and extrapolation + + [HideInInspector] + public PhotonTransformViewPositionModel m_PositionModel = new PhotonTransformViewPositionModel(); + + [HideInInspector] + public PhotonTransformViewRotationModel m_RotationModel = new PhotonTransformViewRotationModel(); + + [HideInInspector] + public PhotonTransformViewScaleModel m_ScaleModel = new PhotonTransformViewScaleModel(); + + PhotonTransformViewPositionControl m_PositionControl; + PhotonTransformViewRotationControl m_RotationControl; + PhotonTransformViewScaleControl m_ScaleControl; + + PhotonView m_PhotonView; + + bool m_ReceivedNetworkUpdate = false; + + /// + /// Flag to skip initial data when Object is instantiated and rely on the first deserialized data instead. + /// + bool m_firstTake = false; + + void Awake() + { + this.m_PhotonView = GetComponent(); + + this.m_PositionControl = new PhotonTransformViewPositionControl(this.m_PositionModel); + this.m_RotationControl = new PhotonTransformViewRotationControl(this.m_RotationModel); + this.m_ScaleControl = new PhotonTransformViewScaleControl(this.m_ScaleModel); + } + + void OnEnable() + { + m_firstTake = true; + } + + void Update() + { + if (this.m_PhotonView == null || this.m_PhotonView.IsMine == true || PhotonNetwork.IsConnectedAndReady == false) + { + return; + } + + this.UpdatePosition(); + this.UpdateRotation(); + this.UpdateScale(); + } + + void UpdatePosition() + { + if (this.m_PositionModel.SynchronizeEnabled == false || this.m_ReceivedNetworkUpdate == false) + { + return; + } + + transform.localPosition = this.m_PositionControl.UpdatePosition(transform.localPosition); + } + + void UpdateRotation() + { + if (this.m_RotationModel.SynchronizeEnabled == false || this.m_ReceivedNetworkUpdate == false) + { + return; + } + + transform.localRotation = this.m_RotationControl.GetRotation(transform.localRotation); + } + + void UpdateScale() + { + if (this.m_ScaleModel.SynchronizeEnabled == false || this.m_ReceivedNetworkUpdate == false) + { + return; + } + + transform.localScale = this.m_ScaleControl.GetScale(transform.localScale); + } + + /// + /// These values are synchronized to the remote objects if the interpolation mode + /// or the extrapolation mode SynchronizeValues is used. Your movement script should pass on + /// the current speed (in units/second) and turning speed (in angles/second) so the remote + /// object can use them to predict the objects movement. + /// + /// The current movement vector of the object in units/second. + /// The current turn speed of the object in angles/second. + public void SetSynchronizedValues(Vector3 speed, float turnSpeed) + { + this.m_PositionControl.SetSynchronizedValues(speed, turnSpeed); + } + + + public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info) + { + this.m_PositionControl.OnPhotonSerializeView(transform.localPosition, stream, info); + this.m_RotationControl.OnPhotonSerializeView(transform.localRotation, stream, info); + this.m_ScaleControl.OnPhotonSerializeView(transform.localScale, stream, info); + + if (stream.IsReading == true) + { + this.m_ReceivedNetworkUpdate = true; + + // force latest data to avoid initial drifts when player is instantiated. + if (m_firstTake) + { + m_firstTake = false; + + if (this.m_PositionModel.SynchronizeEnabled) + { + this.transform.localPosition = this.m_PositionControl.GetNetworkPosition(); + } + + if (this.m_RotationModel.SynchronizeEnabled) + { + this.transform.localRotation = this.m_RotationControl.GetNetworkRotation(); + } + + if (this.m_ScaleModel.SynchronizeEnabled) + { + this.transform.localScale = this.m_ScaleControl.GetNetworkScale(); + } + } + } + } + } + + + [System.Serializable] + public class PhotonTransformViewPositionModel + { + public enum InterpolateOptions + { + Disabled, + FixedSpeed, + EstimatedSpeed, + SynchronizeValues, + Lerp + } + + + public enum ExtrapolateOptions + { + Disabled, + SynchronizeValues, + EstimateSpeedAndTurn, + FixedSpeed, + } + + + public bool SynchronizeEnabled; + + public bool TeleportEnabled = true; + public float TeleportIfDistanceGreaterThan = 3f; + + public InterpolateOptions InterpolateOption = InterpolateOptions.EstimatedSpeed; + public float InterpolateMoveTowardsSpeed = 1f; + + public float InterpolateLerpSpeed = 1f; + + public ExtrapolateOptions ExtrapolateOption = ExtrapolateOptions.Disabled; + public float ExtrapolateSpeed = 1f; + public bool ExtrapolateIncludingRoundTripTime = true; + public int ExtrapolateNumberOfStoredPositions = 1; + } + + public class PhotonTransformViewPositionControl + { + PhotonTransformViewPositionModel m_Model; + float m_CurrentSpeed; + double m_LastSerializeTime; + Vector3 m_SynchronizedSpeed = Vector3.zero; + float m_SynchronizedTurnSpeed = 0; + + Vector3 m_NetworkPosition; + Queue m_OldNetworkPositions = new Queue(); + + bool m_UpdatedPositionAfterOnSerialize = true; + + public PhotonTransformViewPositionControl(PhotonTransformViewPositionModel model) + { + m_Model = model; + } + + Vector3 GetOldestStoredNetworkPosition() + { + Vector3 oldPosition = m_NetworkPosition; + + if (m_OldNetworkPositions.Count > 0) + { + oldPosition = m_OldNetworkPositions.Peek(); + } + + return oldPosition; + } + + /// + /// These values are synchronized to the remote objects if the interpolation mode + /// or the extrapolation mode SynchronizeValues is used. Your movement script should pass on + /// the current speed (in units/second) and turning speed (in angles/second) so the remote + /// object can use them to predict the objects movement. + /// + /// The current movement vector of the object in units/second. + /// The current turn speed of the object in angles/second. + public void SetSynchronizedValues(Vector3 speed, float turnSpeed) + { + m_SynchronizedSpeed = speed; + m_SynchronizedTurnSpeed = turnSpeed; + } + + /// + /// Calculates the new position based on the values setup in the inspector + /// + /// The current position. + /// The new position. + public Vector3 UpdatePosition(Vector3 currentPosition) + { + Vector3 targetPosition = GetNetworkPosition() + GetExtrapolatedPositionOffset(); + + switch (m_Model.InterpolateOption) + { + case PhotonTransformViewPositionModel.InterpolateOptions.Disabled: + if (m_UpdatedPositionAfterOnSerialize == false) + { + currentPosition = targetPosition; + m_UpdatedPositionAfterOnSerialize = true; + } + + break; + + case PhotonTransformViewPositionModel.InterpolateOptions.FixedSpeed: + currentPosition = Vector3.MoveTowards(currentPosition, targetPosition, Time.deltaTime * m_Model.InterpolateMoveTowardsSpeed); + break; + + case PhotonTransformViewPositionModel.InterpolateOptions.EstimatedSpeed: + if (m_OldNetworkPositions.Count == 0) + { + // special case: we have no previous updates in memory, so we can't guess a speed! + break; + } + + // knowing the last (incoming) position and the one before, we can guess a speed. + // note that the speed is times sendRateOnSerialize! we send X updates/sec, so our estimate has to factor that in. + float estimatedSpeed = (Vector3.Distance(m_NetworkPosition, GetOldestStoredNetworkPosition()) / m_OldNetworkPositions.Count) * PhotonNetwork.SerializationRate; + + // move towards the targetPosition (including estimates, if that's active) with the speed calculated from the last updates. + currentPosition = Vector3.MoveTowards(currentPosition, targetPosition, Time.deltaTime * estimatedSpeed); + break; + + case PhotonTransformViewPositionModel.InterpolateOptions.SynchronizeValues: + if (m_SynchronizedSpeed.magnitude == 0) + { + currentPosition = targetPosition; + } + else + { + currentPosition = Vector3.MoveTowards(currentPosition, targetPosition, Time.deltaTime * m_SynchronizedSpeed.magnitude); + } + + break; + + case PhotonTransformViewPositionModel.InterpolateOptions.Lerp: + currentPosition = Vector3.Lerp(currentPosition, targetPosition, Time.deltaTime * m_Model.InterpolateLerpSpeed); + break; + } + + if (m_Model.TeleportEnabled == true) + { + if (Vector3.Distance(currentPosition, GetNetworkPosition()) > m_Model.TeleportIfDistanceGreaterThan) + { + currentPosition = GetNetworkPosition(); + } + } + + return currentPosition; + } + + /// + /// Gets the last position that was received through the network + /// + /// + public Vector3 GetNetworkPosition() + { + return m_NetworkPosition; + } + + /// + /// Calculates an estimated position based on the last synchronized position, + /// the time when the last position was received and the movement speed of the object + /// + /// Estimated position of the remote object + public Vector3 GetExtrapolatedPositionOffset() + { + float timePassed = (float)(PhotonNetwork.Time - m_LastSerializeTime); + + if (m_Model.ExtrapolateIncludingRoundTripTime == true) + { + timePassed += (float)PhotonNetwork.GetPing() / 1000f; + } + + Vector3 extrapolatePosition = Vector3.zero; + + switch (m_Model.ExtrapolateOption) + { + case PhotonTransformViewPositionModel.ExtrapolateOptions.SynchronizeValues: + Quaternion turnRotation = Quaternion.Euler(0, m_SynchronizedTurnSpeed * timePassed, 0); + extrapolatePosition = turnRotation * (m_SynchronizedSpeed * timePassed); + break; + case PhotonTransformViewPositionModel.ExtrapolateOptions.FixedSpeed: + Vector3 moveDirection = (m_NetworkPosition - GetOldestStoredNetworkPosition()).normalized; + + extrapolatePosition = moveDirection * m_Model.ExtrapolateSpeed * timePassed; + break; + case PhotonTransformViewPositionModel.ExtrapolateOptions.EstimateSpeedAndTurn: + Vector3 moveDelta = (m_NetworkPosition - GetOldestStoredNetworkPosition()) * PhotonNetwork.SerializationRate; + extrapolatePosition = moveDelta * timePassed; + break; + } + + return extrapolatePosition; + } + + public void OnPhotonSerializeView(Vector3 currentPosition, PhotonStream stream, PhotonMessageInfo info) + { + if (m_Model.SynchronizeEnabled == false) + { + return; + } + + if (stream.IsWriting == true) + { + SerializeData(currentPosition, stream, info); + } + else + { + DeserializeData(stream, info); + } + + m_LastSerializeTime = PhotonNetwork.Time; + m_UpdatedPositionAfterOnSerialize = false; + } + + void SerializeData(Vector3 currentPosition, PhotonStream stream, PhotonMessageInfo info) + { + stream.SendNext(currentPosition); + m_NetworkPosition = currentPosition; + + if (m_Model.ExtrapolateOption == PhotonTransformViewPositionModel.ExtrapolateOptions.SynchronizeValues || + m_Model.InterpolateOption == PhotonTransformViewPositionModel.InterpolateOptions.SynchronizeValues) + { + stream.SendNext(m_SynchronizedSpeed); + stream.SendNext(m_SynchronizedTurnSpeed); + } + } + + void DeserializeData(PhotonStream stream, PhotonMessageInfo info) + { + Vector3 readPosition = (Vector3)stream.ReceiveNext(); + if (m_Model.ExtrapolateOption == PhotonTransformViewPositionModel.ExtrapolateOptions.SynchronizeValues || + m_Model.InterpolateOption == PhotonTransformViewPositionModel.InterpolateOptions.SynchronizeValues) + { + m_SynchronizedSpeed = (Vector3)stream.ReceiveNext(); + m_SynchronizedTurnSpeed = (float)stream.ReceiveNext(); + } + + if (m_OldNetworkPositions.Count == 0) + { + // if we don't have old positions yet, this is the very first update this client reads. let's use this as current AND old position. + m_NetworkPosition = readPosition; + } + + // the previously received position becomes the old(er) one and queued. the new one is the m_NetworkPosition + m_OldNetworkPositions.Enqueue(m_NetworkPosition); + m_NetworkPosition = readPosition; + + // reduce items in queue to defined number of stored positions. + while (m_OldNetworkPositions.Count > m_Model.ExtrapolateNumberOfStoredPositions) + { + m_OldNetworkPositions.Dequeue(); + } + } + } + + + [System.Serializable] + public class PhotonTransformViewRotationModel + { + public enum InterpolateOptions + { + Disabled, + RotateTowards, + Lerp, + } + + + public bool SynchronizeEnabled; + + public InterpolateOptions InterpolateOption = InterpolateOptions.RotateTowards; + public float InterpolateRotateTowardsSpeed = 180; + public float InterpolateLerpSpeed = 5; + } + + public class PhotonTransformViewRotationControl + { + PhotonTransformViewRotationModel m_Model; + Quaternion m_NetworkRotation; + + public PhotonTransformViewRotationControl(PhotonTransformViewRotationModel model) + { + m_Model = model; + } + + /// + /// Gets the last rotation that was received through the network + /// + /// + public Quaternion GetNetworkRotation() + { + return m_NetworkRotation; + } + + public Quaternion GetRotation(Quaternion currentRotation) + { + switch (m_Model.InterpolateOption) + { + default: + case PhotonTransformViewRotationModel.InterpolateOptions.Disabled: + return m_NetworkRotation; + case PhotonTransformViewRotationModel.InterpolateOptions.RotateTowards: + return Quaternion.RotateTowards(currentRotation, m_NetworkRotation, m_Model.InterpolateRotateTowardsSpeed * Time.deltaTime); + case PhotonTransformViewRotationModel.InterpolateOptions.Lerp: + return Quaternion.Lerp(currentRotation, m_NetworkRotation, m_Model.InterpolateLerpSpeed * Time.deltaTime); + } + } + + public void OnPhotonSerializeView(Quaternion currentRotation, PhotonStream stream, PhotonMessageInfo info) + { + if (m_Model.SynchronizeEnabled == false) + { + return; + } + + if (stream.IsWriting == true) + { + stream.SendNext(currentRotation); + m_NetworkRotation = currentRotation; + } + else + { + m_NetworkRotation = (Quaternion)stream.ReceiveNext(); + } + } + } + + + [System.Serializable] + public class PhotonTransformViewScaleModel + { + public enum InterpolateOptions + { + Disabled, + MoveTowards, + Lerp, + } + + + public bool SynchronizeEnabled; + + public InterpolateOptions InterpolateOption = InterpolateOptions.Disabled; + public float InterpolateMoveTowardsSpeed = 1f; + public float InterpolateLerpSpeed; + } + + public class PhotonTransformViewScaleControl + { + PhotonTransformViewScaleModel m_Model; + Vector3 m_NetworkScale = Vector3.one; + + public PhotonTransformViewScaleControl(PhotonTransformViewScaleModel model) + { + m_Model = model; + } + + /// + /// Gets the last scale that was received through the network + /// + /// + public Vector3 GetNetworkScale() + { + return m_NetworkScale; + } + + public Vector3 GetScale(Vector3 currentScale) + { + switch (m_Model.InterpolateOption) + { + default: + case PhotonTransformViewScaleModel.InterpolateOptions.Disabled: + return m_NetworkScale; + case PhotonTransformViewScaleModel.InterpolateOptions.MoveTowards: + return Vector3.MoveTowards(currentScale, m_NetworkScale, m_Model.InterpolateMoveTowardsSpeed * Time.deltaTime); + case PhotonTransformViewScaleModel.InterpolateOptions.Lerp: + return Vector3.Lerp(currentScale, m_NetworkScale, m_Model.InterpolateLerpSpeed * Time.deltaTime); + } + } + + public void OnPhotonSerializeView(Vector3 currentScale, PhotonStream stream, PhotonMessageInfo info) + { + if (m_Model.SynchronizeEnabled == false) + { + return; + } + + if (stream.IsWriting == true) + { + stream.SendNext(currentScale); + m_NetworkScale = currentScale; + } + else + { + m_NetworkScale = (Vector3)stream.ReceiveNext(); + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonTransformViewClassic.cs.meta b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonTransformViewClassic.cs.meta new file mode 100644 index 00000000..7400c645 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Code/Views/PhotonTransformViewClassic.cs.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 8efc6b1d64977384eb3405357896c656 +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos.meta b/Assets/Photon/PhotonUnityNetworking/Demos.meta new file mode 100644 index 00000000..de368b6b --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: cb8ec42b3fa78bd4f9a20b7de289d9cd +folderAsset: yes +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids.meta new file mode 100644 index 00000000..77b85b0c --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 836b5819c0347f0458f3e374fa3c2230 +folderAsset: yes +timeCreated: 1508416790 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials.meta new file mode 100644 index 00000000..cbb77c47 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: eb89ce1e7485b214d8f27d2f3901474c +folderAsset: yes +timeCreated: 1505213271 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/FlyerAsteroid.mat b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/FlyerAsteroid.mat new file mode 100644 index 00000000..8011ccb2 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/FlyerAsteroid.mat @@ -0,0 +1,153 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: FlyerAsteroid + m_Shader: {fileID: 45, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 2800000, guid: bfc02e2f0447eaf4190d17879193f0e2, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _SpecGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: 0.5 + data: + first: + name: _Parallax + second: 0.02 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: 0.3 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + data: + first: + name: _Alpha + second: 1 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0.2, g: 0.2, b: 0.2, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _SpecColor + second: {r: 0.15686275, g: 0.15686275, b: 0.15686275, a: 1} diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/FlyerAsteroid.mat.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/FlyerAsteroid.mat.meta new file mode 100644 index 00000000..71b1eeed --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/FlyerAsteroid.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 968fc57e6928a5448ae7d0644246d534 +timeCreated: 1505213348 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/FlyerPlayership.mat b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/FlyerPlayership.mat new file mode 100644 index 00000000..7c7b2032 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/FlyerPlayership.mat @@ -0,0 +1,149 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: FlyerPlayership + m_Shader: {fileID: 45, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _EMISSION + m_LightmapFlags: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: b28381ec2a3dce5459a8fd396a0eb560, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 2800000, guid: 34b19bc20b665b240af9c0fc9d0086f6, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 2800000, guid: 88217866776ce4c49944ecb360a5c6ca, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 2800000, guid: 2b0c5290f03c1e84dbb05f573458a568, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _SpecGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: 0.5 + data: + first: + name: _Parallax + second: 0.02 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: 0.8 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 1 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 1.8382353, g: 1.8382353, b: 1.8382353, a: 1} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _SpecColor + second: {r: 0.078431375, g: 0.078431375, b: 0.078431375, a: 1} diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/FlyerPlayership.mat.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/FlyerPlayership.mat.meta new file mode 100644 index 00000000..5bc029ce --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/FlyerPlayership.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 99fced4bc2985174cac8512dc765d2bc +timeCreated: 1505213348 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/ParticleAfterburner.mat b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/ParticleAfterburner.mat new file mode 100644 index 00000000..1711a99b --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/ParticleAfterburner.mat @@ -0,0 +1,40 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 3 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: ParticleAfterburner + m_Shader: {fileID: 200, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: [] + m_CustomRenderQueue: -1 + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 10300, guid: 0000000000000000f000000000000000, type: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _InvFade + second: 1.26696432 + m_Colors: + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _TintColor + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _EmisColor + second: {r: .200000003, g: .200000003, b: .200000003, a: 0} diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/ParticleAfterburner.mat.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/ParticleAfterburner.mat.meta new file mode 100644 index 00000000..641b7e21 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/ParticleAfterburner.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dc1a05fba9a6af241a25a35b4caf5e27 +timeCreated: 1505213349 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/WhiteSmooth.mat b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/WhiteSmooth.mat new file mode 100644 index 00000000..102df8e7 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/WhiteSmooth.mat @@ -0,0 +1,174 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: WhiteSmooth + m_Shader: {fileID: 45, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _LIGHTMAPPING_DYNAMIC_LIGHTMAPS _LIGHTMAPPING_REALTIME _UVSEC_UV1 + m_CustomRenderQueue: -1 + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: c798603beb3c1fc4a96620cf6b35cc32, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _Occlusion + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _SpecGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _AlphaTestRef + second: .5 + data: + first: + name: _Lightmapping + second: 1 + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .100000001 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _EmissionScaleUI + second: 0 + data: + first: + name: _Metallic + second: .100000001 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 0} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _SpecularColor + second: {r: .156862751, g: .156862751, b: .156862751, a: 1} + data: + first: + name: _EmissionColorUI + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _EmissionColorWithMapUI + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _SpecColor + second: {r: .117647059, g: .117647059, b: .117647059, a: 1} diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/WhiteSmooth.mat.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/WhiteSmooth.mat.meta new file mode 100644 index 00000000..c58e789b --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/WhiteSmooth.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b05171e12835ff84fb155f51d69d7c31 +timeCreated: 1505213348 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/WhiteUnlit.mat b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/WhiteUnlit.mat new file mode 100644 index 00000000..a2d7e489 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/WhiteUnlit.mat @@ -0,0 +1,180 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: WhiteUnlit + m_Shader: {fileID: 10755, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: _LIGHTMAPPING_DYNAMIC_LIGHTMAPS _LIGHTMAPPING_REALTIME _UVSEC_UV1 + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 2800000, guid: c798603beb3c1fc4a96620cf6b35cc32, type: 3} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _Occlusion + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _SpecGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _AlphaTestRef + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _Lightmapping + second: 1 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .100000001 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: .100000001 + data: + first: + name: _EmissionScaleUI + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 0} + data: + first: + name: _Color + second: {r: 1, g: 1, b: 1, a: 1} + data: + first: + name: _SpecColor + second: {r: .117647059, g: .117647059, b: .117647059, a: 1} + data: + first: + name: _SpecularColor + second: {r: .156862751, g: .156862751, b: .156862751, a: 1} + data: + first: + name: _EmissionColorUI + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _EmissionColorWithMapUI + second: {r: 1, g: 1, b: 1, a: 1} diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/WhiteUnlit.mat.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/WhiteUnlit.mat.meta new file mode 100644 index 00000000..52da6ad7 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Materials/WhiteUnlit.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 073b1ee561def20429e655b5c8893ad4 +timeCreated: 1505213348 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models.meta new file mode 100644 index 00000000..a5aee6d9 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: ffc8b1d9f846b0f4d9e60bafe6e61a83 +folderAsset: yes +timeCreated: 1505213276 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Asteroid01.fbx b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Asteroid01.fbx new file mode 100644 index 0000000000000000000000000000000000000000..f42f8a82300e7139528b14f03954840a948880aa GIT binary patch literal 23152 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 literal 0 HcmV?d00001 diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/FlyerAsteroidB.fbx.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/FlyerAsteroidB.fbx.meta new file mode 100644 index 00000000..b075a4fa --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/FlyerAsteroidB.fbx.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: 757fc9771ce30dc468c775b392518d81 +timeCreated: 1505213349 +licenseType: Store +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: FlyerAsteroidB001 + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleRotations: 1 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/LaserBolt.fbx b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/LaserBolt.fbx new file mode 100644 index 0000000000000000000000000000000000000000..36138567be3fb3fc3a7d25ce211b9f518f417d0b GIT binary patch literal 18560 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 Bu3rEE literal 0 HcmV?d00001 diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/LaserBolt.fbx.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/LaserBolt.fbx.meta new file mode 100644 index 00000000..2a2a5109 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/LaserBolt.fbx.meta @@ -0,0 +1,76 @@ +fileFormatVersion: 2 +guid: efbb13993d8043d4ba5c752ed4b1a2bc +timeCreated: 1505213349 +licenseType: Store +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: LaserBolt + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleRotations: 1 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 0 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials.meta new file mode 100644 index 00000000..0f84162f --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 5b0355c289df177488ae398e713b4769 +folderAsset: yes +timeCreated: 1505213298 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/Asteroid.mat b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/Asteroid.mat new file mode 100644 index 00000000..97a526f4 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/Asteroid.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: Asteroid + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .588235319, g: .588235319, b: .588235319, a: 1} diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/Asteroid.mat.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/Asteroid.mat.meta new file mode 100644 index 00000000..01c912c2 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/Asteroid.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: be2c382f522695c4fa3947ac8e1d4457 +timeCreated: 1505213349 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/FlyerAsteroid1.mat b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/FlyerAsteroid1.mat new file mode 100644 index 00000000..a96cf027 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/FlyerAsteroid1.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: FlyerAsteroid1 + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: 0.5 + data: + first: + name: _Parallax + second: 0.02 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: 0.5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: 0.5, g: 0.5, b: 0.5, a: 1} diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/FlyerAsteroid1.mat.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/FlyerAsteroid1.mat.meta new file mode 100644 index 00000000..56a3c5d5 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/FlyerAsteroid1.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 294f02eac9561704ebe4baa5b1bc4163 +timeCreated: 1505302910 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/SpaceshipGlow.mat b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/SpaceshipGlow.mat new file mode 100644 index 00000000..fbbd1d2b --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/SpaceshipGlow.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: SpaceshipGlow + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .588235319, g: .588235319, b: .588235319, a: 1} diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/SpaceshipGlow.mat.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/SpaceshipGlow.mat.meta new file mode 100644 index 00000000..85e7daaa --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/SpaceshipGlow.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 609dbe3d30c4bf84ca15ce89479d7919 +timeCreated: 1505213348 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/SpaceshipHull.mat b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/SpaceshipHull.mat new file mode 100644 index 00000000..ce594958 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/SpaceshipHull.mat @@ -0,0 +1,138 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_Name: SpaceshipHull + m_Shader: {fileID: 46, guid: 0000000000000000f000000000000000, type: 0} + m_ShaderKeywords: + m_LightmapFlags: 5 + m_CustomRenderQueue: -1 + stringTagMap: {} + m_SavedProperties: + serializedVersion: 2 + m_TexEnvs: + data: + first: + name: _MainTex + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _BumpMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailNormalMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _ParallaxMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _OcclusionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _EmissionMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailMask + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _DetailAlbedoMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + data: + first: + name: _MetallicGlossMap + second: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Floats: + data: + first: + name: _SrcBlend + second: 1 + data: + first: + name: _DstBlend + second: 0 + data: + first: + name: _Cutoff + second: .5 + data: + first: + name: _Parallax + second: .0199999996 + data: + first: + name: _ZWrite + second: 1 + data: + first: + name: _Glossiness + second: .5 + data: + first: + name: _BumpScale + second: 1 + data: + first: + name: _OcclusionStrength + second: 1 + data: + first: + name: _DetailNormalMapScale + second: 1 + data: + first: + name: _UVSec + second: 0 + data: + first: + name: _Mode + second: 0 + data: + first: + name: _Metallic + second: 0 + m_Colors: + data: + first: + name: _EmissionColor + second: {r: 0, g: 0, b: 0, a: 1} + data: + first: + name: _Color + second: {r: .337254912, g: .337254912, b: .337254912, a: 1} diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/SpaceshipHull.mat.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/SpaceshipHull.mat.meta new file mode 100644 index 00000000..049a0ffe --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Materials/SpaceshipHull.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: de6b3d1666741b24597a4349a143eeb7 +timeCreated: 1505213349 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Spaceship.fbx b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Spaceship.fbx new file mode 100644 index 0000000000000000000000000000000000000000..0479ea8c9b7073d4ffea55e3a2b47492f6c9eb52 GIT binary patch literal 22848 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 literal 0 HcmV?d00001 diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Spaceship.fbx.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Spaceship.fbx.meta new file mode 100644 index 00000000..889ed62f --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Models/Spaceship.fbx.meta @@ -0,0 +1,77 @@ +fileFormatVersion: 2 +guid: 65e16ec6a1570944a980e4988e715ae6 +timeCreated: 1505213349 +licenseType: Store +ModelImporter: + serializedVersion: 19 + fileIDToRecycleName: + 100000: //RootNode + 400000: //RootNode + 2300000: //RootNode + 3300000: //RootNode + 4300000: Spaceship + 9500000: //RootNode + materials: + importMaterials: 1 + materialName: 0 + materialSearch: 1 + animations: + legacyGenerateAnimations: 4 + bakeSimulation: 0 + resampleRotations: 1 + optimizeGameObjects: 0 + motionNodeName: + animationImportErrors: + animationImportWarnings: + animationRetargetingWarnings: + animationDoRetargetingWarnings: 0 + animationCompression: 1 + animationRotationError: 0.5 + animationPositionError: 0.5 + animationScaleError: 0.5 + animationWrapMode: 0 + extraExposedTransformPaths: [] + clipAnimations: [] + isReadable: 1 + meshes: + lODScreenPercentages: [] + globalScale: 1 + meshCompression: 0 + addColliders: 0 + importBlendShapes: 1 + swapUVChannels: 0 + generateSecondaryUV: 0 + useFileUnits: 1 + optimizeMeshForGPU: 1 + keepQuads: 0 + weldVertices: 1 + secondaryUVAngleDistortion: 8 + secondaryUVAreaDistortion: 15.000001 + secondaryUVHardAngle: 88 + secondaryUVPackMargin: 4 + useFileScale: 1 + tangentSpace: + normalSmoothAngle: 60 + normalImportMode: 0 + tangentImportMode: 3 + importAnimation: 1 + copyAvatar: 0 + humanDescription: + human: [] + skeleton: [] + armTwist: 0.5 + foreArmTwist: 0.5 + upperLegTwist: 0.5 + legTwist: 0.5 + armStretch: 0.05 + legStretch: 0.05 + feetSpacing: 0 + rootMotionBoneName: + hasTranslationDoF: 0 + lastHumanDescriptionAvatarSource: {instanceID: 0} + animationType: 2 + humanoidOversampling: 1 + additionalBone: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs.meta new file mode 100644 index 00000000..7c7099fd --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: bec40e338146dc14592b49339a98d089 +folderAsset: yes +timeCreated: 1505378214 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/Bullet.prefab b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/Bullet.prefab new file mode 100644 index 00000000..83a46387 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/Bullet.prefab @@ -0,0 +1,118 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &152888 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 490228} + - 33: {fileID: 3315548} + - 23: {fileID: 2373554} + - 135: {fileID: 13586356} + - 54: {fileID: 5434924} + - 114: {fileID: 11494744} + m_Layer: 8 + m_Name: Bullet + m_TagString: Bullet + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &490228 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152888} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!23 &2373554 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152888} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 073b1ee561def20429e655b5c8893ad4, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3315548 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152888} + m_Mesh: {fileID: 4300000, guid: efbb13993d8043d4ba5c752ed4b1a2bc, type: 3} +--- !u!54 &5434924 +Rigidbody: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152888} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 0 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 116 + m_CollisionDetection: 1 +--- !u!114 &11494744 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152888} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6321a7d9112988841b7223ac6a925bfc, type: 3} + m_Name: + m_EditorClassIdentifier: + OriginalDirection: {x: 0, y: 0, z: 0} +--- !u!135 &13586356 +SphereCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 152888} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 152888} + m_IsPrefabParent: 1 diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/Bullet.prefab.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/Bullet.prefab.meta new file mode 100644 index 00000000..13976c01 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/Bullet.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5624ee9da9d10514ea7b808e83979c85 +timeCreated: 1505221345 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/PlayerListEntry.prefab b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/PlayerListEntry.prefab new file mode 100644 index 00000000..42055aa1 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/PlayerListEntry.prefab @@ -0,0 +1,626 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &137106 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22410286} + - 222: {fileID: 22229642} + - 114: {fileID: 11446740} + - 114: {fileID: 11423484} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &149278 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22497082} + - 222: {fileID: 22253856} + - 114: {fileID: 11430814} + - 114: {fileID: 11412146} + - 114: {fileID: 11447404} + m_Layer: 5 + m_Name: PlayerReadyButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &155222 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22434874} + - 222: {fileID: 22225450} + - 114: {fileID: 11450088} + - 114: {fileID: 11491512} + m_Layer: 5 + m_Name: PlayerReadyImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &162990 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22423522} + - 222: {fileID: 22263000} + - 114: {fileID: 11470916} + - 114: {fileID: 11440512} + m_Layer: 5 + m_Name: PlayerNameText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &168016 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22451220} + - 222: {fileID: 22244016} + - 114: {fileID: 11495884} + - 114: {fileID: 11433370} + m_Layer: 5 + m_Name: PlayerColorImage + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &195212 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22441276} + - 222: {fileID: 22226744} + - 114: {fileID: 11475786} + - 114: {fileID: 11493046} + - 114: {fileID: 11413184} + - 114: {fileID: 11475118} + m_Layer: 5 + m_Name: PlayerListEntry + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11412146 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 149278} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 1} + m_HighlightedColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_PressedColor: {r: 0.8784314, g: 0, b: 0, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11430814} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11413184 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 75 + m_PreferredWidth: -1 + m_PreferredHeight: 75 + m_FlexibleWidth: -1 + m_FlexibleHeight: 0 +--- !u!114 &11423484 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 137106} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d234639538a34b8d9e3cc6362a7afd0, type: 3} + m_Name: + m_EditorClassIdentifier: + NormalColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!114 &11430814 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 149278} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11433370 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168016} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 50 + m_MinHeight: 50 + m_PreferredWidth: 50 + m_PreferredHeight: 50 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11440512 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162990} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 +--- !u!114 &11446740 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 137106} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Ready? +--- !u!114 &11447404 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 149278} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 150 + m_MinHeight: -1 + m_PreferredWidth: 150 + m_PreferredHeight: -1 + m_FlexibleWidth: 0 + m_FlexibleHeight: -1 +--- !u!114 &11450088 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 155222} + m_Enabled: 0 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 1, b: 0, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: bd293dc32f4aaf94e8274f2fac2cdf89, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11470916 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162990} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Player Name +--- !u!114 &11475118 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 6b92420fa27b32d43a6a35af7781c5d8, type: 3} + m_Name: + m_EditorClassIdentifier: + PlayerNameText: {fileID: 11470916} + PlayerColorImage: {fileID: 11495884} + PlayerReadyButton: {fileID: 11412146} + PlayerReadyImage: {fileID: 11450088} +--- !u!114 &11475786 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: c222cd02c447941edb09ecb6433229ce, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11491512 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 155222} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 50 + m_MinHeight: 50 + m_PreferredWidth: 50 + m_PreferredHeight: 50 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11493046 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195212} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 3 + m_Spacing: 10 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 1 +--- !u!114 &11495884 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168016} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &22225450 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 155222} +--- !u!222 &22226744 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195212} +--- !u!222 &22229642 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 137106} +--- !u!222 &22244016 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168016} +--- !u!222 &22253856 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 149278} +--- !u!222 &22263000 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162990} +--- !u!224 &22410286 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 137106} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22497082} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22423522 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 162990} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22441276} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22434874 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 155222} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22441276} + m_RootOrder: 3 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22441276 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 195212} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22451220} + - {fileID: 22423522} + - {fileID: 22497082} + - {fileID: 22434874} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22451220 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168016} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22441276} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22497082 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 149278} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22410286} + m_Father: {fileID: 22441276} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 195212} + m_IsPrefabParent: 1 diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/PlayerListEntry.prefab.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/PlayerListEntry.prefab.meta new file mode 100644 index 00000000..c86b1606 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/PlayerListEntry.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d68bf8413681d9b4aa7328277e632e3f +timeCreated: 1505379840 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/PlayerOverviewEntry.prefab b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/PlayerOverviewEntry.prefab new file mode 100644 index 00000000..017ab8e6 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/PlayerOverviewEntry.prefab @@ -0,0 +1,91 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &168392 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22415550} + - 222: {fileID: 22285266} + - 114: {fileID: 11472648} + m_Layer: 5 + m_Name: PlayerOverviewEntry + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11472648 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168392} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Player 12345 + + Score: 123 + + Lives: 10' +--- !u!222 &22285266 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168392} +--- !u!224 &22415550 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 168392} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 168392} + m_IsPrefabParent: 1 diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/PlayerOverviewEntry.prefab.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/PlayerOverviewEntry.prefab.meta new file mode 100644 index 00000000..61c7048b --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/PlayerOverviewEntry.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f03d1c686a26a1d4da99a4186b0bb1ab +timeCreated: 1505982913 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/RoomListEntry.prefab b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/RoomListEntry.prefab new file mode 100644 index 00000000..f65c6e39 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/RoomListEntry.prefab @@ -0,0 +1,543 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &104826 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22447080} + - 222: {fileID: 22294486} + - 114: {fileID: 11471358} + - 114: {fileID: 11459942} + m_Layer: 5 + m_Name: RoomNameText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &114706 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22408730} + - 222: {fileID: 22287926} + - 114: {fileID: 11481936} + - 114: {fileID: 11466726} + - 114: {fileID: 11460614} + - 114: {fileID: 11446524} + m_Layer: 5 + m_Name: RoomListEntry + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &134178 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22483914} + - 222: {fileID: 22240184} + - 114: {fileID: 11498752} + - 114: {fileID: 11484216} + - 114: {fileID: 11414810} + m_Layer: 5 + m_Name: JoinRoomButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &148318 +GameObject: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22419880} + - 222: {fileID: 22204396} + - 114: {fileID: 11440274} + - 114: {fileID: 11460062} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &161226 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 224: {fileID: 22427766} + - 222: {fileID: 22213590} + - 114: {fileID: 11488528} + - 114: {fileID: 11439134} + m_Layer: 5 + m_Name: RoomPlayersText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &11414810 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 134178} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 100 + m_MinHeight: -1 + m_PreferredWidth: 100 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11439134 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161226} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 50 + m_MinHeight: -1 + m_PreferredWidth: 50 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 +--- !u!114 &11440274 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148318} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Join +--- !u!114 &11446524 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 114706} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 40b744eae97c5fa47879a477d0f0b667, type: 3} + m_Name: + m_EditorClassIdentifier: + RoomNameText: {fileID: 11471358} + RoomPlayersText: {fileID: 11488528} + JoinRoomButton: {fileID: 11484216} +--- !u!114 &11459942 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104826} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: 1 + m_FlexibleHeight: -1 +--- !u!114 &11460062 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148318} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d234639538a34b8d9e3cc6362a7afd0, type: 3} + m_Name: + m_EditorClassIdentifier: + NormalColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!114 &11460614 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 114706} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: -1 + m_MinHeight: 50 + m_PreferredWidth: -1 + m_PreferredHeight: 50 + m_FlexibleWidth: -1 + m_FlexibleHeight: 0 +--- !u!114 &11466726 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 114706} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -405508275, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 3 + m_Spacing: 10 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 +--- !u!114 &11471358 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104826} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Room Name +--- !u!114 &11481936 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 114706} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: c222cd02c447941edb09ecb6433229ce, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!114 &11484216 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 134178} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 1} + m_HighlightedColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_PressedColor: {r: 0.8784314, g: 0, b: 0, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 11498752} + m_OnClick: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &11488528 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161226} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 0 / 0 +--- !u!114 &11498752 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 134178} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &22204396 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148318} +--- !u!222 &22213590 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161226} +--- !u!222 &22240184 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 134178} +--- !u!222 &22287926 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 114706} +--- !u!222 &22294486 +CanvasRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104826} +--- !u!224 &22408730 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 114706} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22447080} + - {fileID: 22427766} + - {fileID: 22483914} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22419880 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 148318} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22483914} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22427766 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 161226} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22408730} + m_RootOrder: 1 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22447080 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 104826} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 22408730} + m_RootOrder: 0 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!224 &22483914 +RectTransform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 134178} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 22419880} + m_Father: {fileID: 22408730} + m_RootOrder: 2 + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 114706} + m_IsPrefabParent: 1 diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/RoomListEntry.prefab.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/RoomListEntry.prefab.meta new file mode 100644 index 00000000..f8c755cd --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Prefabs/RoomListEntry.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 03c5e15309335324fba99d68e38cb08b +timeCreated: 1505378968 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources.meta new file mode 100644 index 00000000..fff2d4c3 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 0a944631b9e05c542937258f0681e963 +folderAsset: yes +timeCreated: 1505218998 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/BigAsteroid.prefab b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/BigAsteroid.prefab new file mode 100644 index 00000000..ba1c29fa --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/BigAsteroid.prefab @@ -0,0 +1,155 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &140850 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 418212} + - 33: {fileID: 3340722} + - 23: {fileID: 2393178} + - 136: {fileID: 13680552} + - 114: {fileID: 11407986} + - 114: {fileID: 11488924} + - 114: {fileID: 11434552} + - 54: {fileID: 5432676} + m_Layer: 0 + m_Name: BigAsteroid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &418212 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 140850} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!23 &2393178 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 140850} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 968fc57e6928a5448ae7d0644246d534, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3340722 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 140850} + m_Mesh: {fileID: 4300000, guid: 401fae203bae0ee428e401e7f9af9be8, type: 3} +--- !u!54 &5432676 +Rigidbody: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 140850} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 4 + m_CollisionDetection: 1 +--- !u!114 &11407986 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 140850} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: aa584fbee541324448dd18d8409c7a41, type: 3} + m_Name: + m_EditorClassIdentifier: + ObservedComponentsFoldoutOpen: 1 + Group: 0 + prefixField: -1 + Synchronization: 3 + OwnershipTransfer: 0 + ObservedComponents: + - {fileID: 11488924} + viewIdField: 0 + InstantiationId: -1 + isRuntimeInstantiated: 0 +--- !u!114 &11434552 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 140850} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c852cc8bbc743374083cab6f7df68bb7, type: 3} + m_Name: + m_EditorClassIdentifier: + isLargeAsteroid: 1 +--- !u!114 &11488924 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 140850} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 64179f3720bbfe947b7724caa67b7c1d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SynchronizeVelocity: 1 + m_SynchronizeAngularVelocity: 1 +--- !u!136 &13680552 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 140850} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 9.061199 + m_Height: 28.60951 + m_Direction: 0 + m_Center: {x: 0.03, y: -0.01, z: -0.05} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 140850} + m_IsPrefabParent: 1 diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/BigAsteroid.prefab.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/BigAsteroid.prefab.meta new file mode 100644 index 00000000..872c3ecf --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/BigAsteroid.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 15f43343ba0a60e47a63d28496373c3f +timeCreated: 1505221098 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/SmallAsteroid.prefab b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/SmallAsteroid.prefab new file mode 100644 index 00000000..59ff27b8 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/SmallAsteroid.prefab @@ -0,0 +1,155 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &151774 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 455668} + - 33: {fileID: 3330816} + - 23: {fileID: 2359794} + - 136: {fileID: 13617098} + - 114: {fileID: 11477742} + - 114: {fileID: 11453902} + - 114: {fileID: 11460080} + - 54: {fileID: 5445788} + m_Layer: 0 + m_Name: SmallAsteroid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &455668 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 151774} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!23 &2359794 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 151774} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: 968fc57e6928a5448ae7d0644246d534, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3330816 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 151774} + m_Mesh: {fileID: 4300000, guid: 757fc9771ce30dc468c775b392518d81, type: 3} +--- !u!54 &5445788 +Rigidbody: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 151774} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 1 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 4 + m_CollisionDetection: 1 +--- !u!114 &11453902 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 151774} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 64179f3720bbfe947b7724caa67b7c1d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SynchronizeVelocity: 1 + m_SynchronizeAngularVelocity: 1 +--- !u!114 &11460080 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 151774} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c852cc8bbc743374083cab6f7df68bb7, type: 3} + m_Name: + m_EditorClassIdentifier: + isLargeAsteroid: 0 +--- !u!114 &11477742 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 151774} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: aa584fbee541324448dd18d8409c7a41, type: 3} + m_Name: + m_EditorClassIdentifier: + ObservedComponentsFoldoutOpen: 1 + Group: 0 + prefixField: -1 + Synchronization: 3 + OwnershipTransfer: 0 + ObservedComponents: + - {fileID: 11453902} + viewIdField: 0 + InstantiationId: -1 + isRuntimeInstantiated: 0 +--- !u!136 &13617098 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 151774} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 5 + m_Height: 12 + m_Direction: 0 + m_Center: {x: 0, y: 0, z: 0} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 151774} + m_IsPrefabParent: 1 diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/SmallAsteroid.prefab.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/SmallAsteroid.prefab.meta new file mode 100644 index 00000000..7f9b5937 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/SmallAsteroid.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 18a79aea49b60d342b7a672b7a34edbe +timeCreated: 1505221248 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/Spaceship.prefab b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/Spaceship.prefab new file mode 100644 index 00000000..50c6cc4b --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/Spaceship.prefab @@ -0,0 +1,3275 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &167808 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 476512} + - 198: {fileID: 19801310} + - 199: {fileID: 19957282} + m_Layer: 8 + m_Name: Destruction + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &178952 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 498316} + - 33: {fileID: 3313632} + - 23: {fileID: 2304546} + - 54: {fileID: 5473192} + - 114: {fileID: 11464560} + - 114: {fileID: 11417374} + - 114: {fileID: 11435718} + - 136: {fileID: 13675448} + m_Layer: 8 + m_Name: Spaceship + m_TagString: Player + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!1 &185348 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + serializedVersion: 4 + m_Component: + - 4: {fileID: 472082} + - 198: {fileID: 19832664} + - 199: {fileID: 19915712} + m_Layer: 8 + m_Name: EngineTrail + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &472082 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185348} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1.25, z: -3.25} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 498316} + m_RootOrder: 0 +--- !u!4 &476512 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167808} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} + m_Children: [] + m_Father: {fileID: 498316} + m_RootOrder: 1 +--- !u!4 &498316 +Transform: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178952} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 472082} + - {fileID: 476512} + m_Father: {fileID: 0} + m_RootOrder: 0 +--- !u!23 &2304546 +MeshRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178952} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 2100000, guid: b05171e12835ff84fb155f51d69d7c31, type: 2} + - {fileID: 2100000, guid: 073b1ee561def20429e655b5c8893ad4, type: 2} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 1 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 +--- !u!33 &3313632 +MeshFilter: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178952} + m_Mesh: {fileID: 4300000, guid: 65e16ec6a1570944a980e4988e715ae6, type: 3} +--- !u!54 &5473192 +Rigidbody: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178952} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0.05 + m_UseGravity: 0 + m_IsKinematic: 0 + m_Interpolate: 1 + m_Constraints: 84 + m_CollisionDetection: 1 +--- !u!114 &11417374 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178952} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 64179f3720bbfe947b7724caa67b7c1d, type: 3} + m_Name: + m_EditorClassIdentifier: + m_SynchronizeVelocity: 1 + m_SynchronizeAngularVelocity: 1 + m_TeleportEnabled: 1 + m_TeleportIfDistanceGreaterThan: 3 +--- !u!114 &11435718 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178952} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c565458f43b8ad4469a2ca341c210318, type: 3} + m_Name: + m_EditorClassIdentifier: + RotationSpeed: 90 + MovementSpeed: 2 + MaxSpeed: 0.1 + Destruction: {fileID: 19801310} + EngineTrail: {fileID: 185348} + BulletPrefab: {fileID: 152888, guid: 5624ee9da9d10514ea7b808e83979c85, type: 2} +--- !u!114 &11464560 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178952} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: aa584fbee541324448dd18d8409c7a41, type: 3} + m_Name: + m_EditorClassIdentifier: + ObservedComponentsFoldoutOpen: 1 + Group: 0 + prefixField: -1 + Synchronization: 3 + OwnershipTransfer: 0 + ObservedComponents: + - {fileID: 11417374} + viewIdField: 0 + InstantiationId: -1 + isRuntimeInstantiated: 0 +--- !u!136 &13675448 +CapsuleCollider: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 178952} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + m_Radius: 1.70434 + m_Height: 6.570561 + m_Direction: 2 + m_Center: {x: 0, y: 0.5, z: -0.2} +--- !u!198 &19801310 +ParticleSystem: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167808} + serializedVersion: 2 + lengthInSec: 2 + startDelay: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + speed: 1 + randomSeed: 0 + looping: 0 + prewarm: 0 + playOnAwake: 0 + moveWithTransform: 1 + scalingMode: 2 + InitialModule: + serializedVersion: 2 + enabled: 1 + startLifetime: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0.39999998 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minMaxState: 3 + startSpeed: + scalar: 40 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0.25 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minMaxState: 3 + startColor: + maxGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: + serializedVersion: 2 + rgba: 4294571731 + maxColor: + serializedVersion: 2 + rgba: 4279401179 + minMaxState: 2 + startSize: + scalar: 2 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0.1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minMaxState: 3 + startRotationX: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startRotationY: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startRotation: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + randomizeRotationDirection: 0 + gravityModifier: 0 + maxNumParticles: 1000 + rotation3D: 0 + ShapeModule: + serializedVersion: 2 + enabled: 1 + type: 10 + radius: 1 + angle: 25 + length: 5 + boxX: 1 + boxY: 1 + boxZ: 1 + arc: 360 + placementMode: 0 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + randomDirection: 0 + EmissionModule: + enabled: 1 + serializedVersion: 2 + m_Type: 0 + rate: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + cnt0: 100 + cnt1: 30 + cnt2: 30 + cnt3: 30 + cntmax0: 100 + cntmax1: 30 + cntmax2: 30 + cntmax3: 30 + time0: 0 + time1: 0 + time2: 0 + time3: 0 + m_BurstCount: 1 + SizeModule: + enabled: 0 + curve: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + RotationModule: + enabled: 0 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + curve: + scalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + separateAxes: 0 + ColorModule: + enabled: 1 + gradient: + maxGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 16777215 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 47031 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: + serializedVersion: 2 + rgba: 4294967295 + maxColor: + serializedVersion: 2 + rgba: 4294967295 + minMaxState: 1 + UVModule: + enabled: 0 + frameOverTime: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + randomRow: 1 + VelocityModule: + enabled: 1 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + z: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + ForceModule: + enabled: 0 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + z: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + enabled: 0 + multiplier: 1 + ClampVelocityModule: + enabled: 0 + x: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + z: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + magnitude: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + separateAxis: 0 + inWorldSpace: 0 + dampen: 1 + SizeBySpeedModule: + enabled: 0 + curve: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + range: {x: 0, y: 1} + RotationBySpeedModule: + enabled: 0 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + curve: + scalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + maxGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: + serializedVersion: 2 + rgba: 4294967295 + maxColor: + serializedVersion: 2 + rgba: 4294967295 + minMaxState: 1 + range: {x: 0, y: 1} + CollisionModule: + enabled: 0 + serializedVersion: 2 + type: 0 + collisionMode: 0 + plane0: {fileID: 0} + plane1: {fileID: 0} + plane2: {fileID: 0} + plane3: {fileID: 0} + plane4: {fileID: 0} + plane5: {fileID: 0} + m_Dampen: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + m_Bounce: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + m_EnergyLossOnCollision: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + minKillSpeed: 0 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 1 + SubModule: + enabled: 0 + subEmitterBirth: {fileID: 0} + subEmitterBirth1: {fileID: 0} + subEmitterCollision: {fileID: 0} + subEmitterCollision1: {fileID: 0} + subEmitterDeath: {fileID: 0} + subEmitterDeath1: {fileID: 0} +--- !u!198 &19832664 +ParticleSystem: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185348} + serializedVersion: 2 + lengthInSec: 5 + startDelay: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + speed: 1 + randomSeed: 0 + looping: 1 + prewarm: 0 + playOnAwake: 1 + moveWithTransform: 0 + scalingMode: 2 + InitialModule: + serializedVersion: 2 + enabled: 1 + startLifetime: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startSpeed: + scalar: 2.5 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startColor: + maxGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: + serializedVersion: 2 + rgba: 4294967295 + maxColor: + serializedVersion: 2 + rgba: 4294967295 + minMaxState: 0 + startSize: + scalar: 3 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startRotationX: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startRotationY: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + startRotation: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + randomizeRotationDirection: 0 + gravityModifier: 0 + maxNumParticles: 1000 + rotation3D: 0 + ShapeModule: + serializedVersion: 2 + enabled: 1 + type: 4 + radius: 0.3 + angle: 0 + length: 5 + boxX: 1 + boxY: 1 + boxZ: 1 + arc: 360 + placementMode: 0 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + randomDirection: 0 + EmissionModule: + enabled: 1 + serializedVersion: 2 + m_Type: 0 + rate: + scalar: 40 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + cnt0: 30 + cnt1: 30 + cnt2: 30 + cnt3: 30 + cntmax0: 30 + cntmax1: 30 + cntmax2: 30 + cntmax3: 30 + time0: 0 + time1: 0 + time2: 0 + time3: 0 + m_BurstCount: 0 + SizeModule: + enabled: 1 + curve: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + RotationModule: + enabled: 0 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + curve: + scalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + separateAxes: 0 + ColorModule: + enabled: 1 + gradient: + maxGradient: + key0: + serializedVersion: 2 + rgba: 3372154994 + key1: + serializedVersion: 2 + rgba: 570395392 + key2: + serializedVersion: 2 + rgba: 16051257 + key3: + serializedVersion: 2 + rgba: 15784338 + key4: + serializedVersion: 2 + rgba: 15784343 + key5: + serializedVersion: 2 + rgba: 16771822 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 3470 + ctime2: 8674 + ctime3: 18697 + ctime4: 30647 + ctime5: 65535 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 29491 + atime2: 65535 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 6 + m_NumAlphaKeys: 3 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: + serializedVersion: 2 + rgba: 4294967295 + maxColor: + serializedVersion: 2 + rgba: 4294967295 + minMaxState: 1 + UVModule: + enabled: 0 + frameOverTime: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + randomRow: 1 + VelocityModule: + enabled: 0 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + z: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + ForceModule: + enabled: 0 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + z: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + enabled: 0 + multiplier: 1 + ClampVelocityModule: + enabled: 0 + x: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + z: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + magnitude: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + separateAxis: 0 + inWorldSpace: 0 + dampen: 1 + SizeBySpeedModule: + enabled: 0 + curve: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 1 + range: {x: 0, y: 1} + RotationBySpeedModule: + enabled: 0 + x: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + y: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + curve: + scalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + maxGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + key0: + serializedVersion: 2 + rgba: 4294967295 + key1: + serializedVersion: 2 + rgba: 4294967295 + key2: + serializedVersion: 2 + rgba: 0 + key3: + serializedVersion: 2 + rgba: 0 + key4: + serializedVersion: 2 + rgba: 0 + key5: + serializedVersion: 2 + rgba: 0 + key6: + serializedVersion: 2 + rgba: 0 + key7: + serializedVersion: 2 + rgba: 0 + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minColor: + serializedVersion: 2 + rgba: 4294967295 + maxColor: + serializedVersion: 2 + rgba: 4294967295 + minMaxState: 1 + range: {x: 0, y: 1} + CollisionModule: + enabled: 0 + serializedVersion: 2 + type: 0 + collisionMode: 0 + plane0: {fileID: 0} + plane1: {fileID: 0} + plane2: {fileID: 0} + plane3: {fileID: 0} + plane4: {fileID: 0} + plane5: {fileID: 0} + m_Dampen: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + m_Bounce: + scalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + m_EnergyLossOnCollision: + scalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minMaxState: 0 + minKillSpeed: 0 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 1 + SubModule: + enabled: 0 + subEmitterBirth: {fileID: 0} + subEmitterBirth1: {fileID: 0} + subEmitterCollision: {fileID: 0} + subEmitterCollision1: {fileID: 0} + subEmitterDeath: {fileID: 0} + subEmitterDeath1: {fileID: 0} +--- !u!199 &19915712 +ParticleSystemRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 185348} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 10301, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 0 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_RenderMode: 0 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0 + m_LengthScale: 2 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} +--- !u!199 &19957282 +ParticleSystemRenderer: + m_ObjectHideFlags: 1 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 100100000} + m_GameObject: {fileID: 167808} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_Materials: + - {fileID: 10301, guid: 0000000000000000f000000000000000, type: 0} + m_SubsetIndices: + m_StaticBatchRoot: {fileID: 0} + m_UseLightProbes: 1 + m_ReflectionProbeUsage: 0 + m_ProbeAnchor: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_RenderMode: 0 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0 + m_LengthScale: 2 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} +--- !u!1001 &100100000 +Prefab: + m_ObjectHideFlags: 1 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: [] + m_RemovedComponents: [] + m_ParentPrefab: {fileID: 0} + m_RootGameObject: {fileID: 178952} + m_IsPrefabParent: 1 diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/Spaceship.prefab.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/Spaceship.prefab.meta new file mode 100644 index 00000000..8bf55c4f --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Resources/Spaceship.prefab.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 775dd0a15ad25a544b33ad40ef0da1f0 +timeCreated: 1505220991 +licenseType: Store +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes.meta new file mode 100644 index 00000000..4c814e6e --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 93a466838cecd764a94035c8b6f1596b +folderAsset: yes +timeCreated: 1505212609 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes/DemoAsteroids-GameScene.unity b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes/DemoAsteroids-GameScene.unity new file mode 100644 index 00000000..0dc9085b --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes/DemoAsteroids-GameScene.unity @@ -0,0 +1,4053 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 8 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.4482475, g: 0.49827433, b: 0.57558244, a: 1} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 9 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 0 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &385559766 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 385559770} + - component: {fileID: 385559767} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &385559767 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 385559766} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 68187d3cf4c8746aaa64930f1a766a38, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &385559770 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 385559766} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &502488015 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 502488017} + - component: {fileID: 502488016} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &502488016 +Light: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 502488015} + m_Enabled: 1 + serializedVersion: 8 + m_Type: 1 + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_Intensity: 0.75 + m_Range: 10 + m_SpotAngle: 30 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_Lightmapping: 4 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &502488017 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 502488015} + m_LocalRotation: {x: 0.5609856, y: -0.43045935, z: -0.09229592, w: 0.7010574} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 45, y: -90, z: -60} +--- !u!1 &523789977 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 523789982} + - component: {fileID: 523789981} + - component: {fileID: 523789979} + - component: {fileID: 523789978} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &523789978 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 523789977} + m_Enabled: 1 +--- !u!124 &523789979 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 523789977} + m_Enabled: 1 +--- !u!20 &523789981 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 523789977} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 2 + m_BackGroundColor: {r: 0.11764706, g: 0.11764706, b: 0.1764706, a: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 80 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &523789982 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 523789977} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071067} + m_LocalPosition: {x: 0, y: 20, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!1 &601629550 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 601629551} + - component: {fileID: 601629553} + - component: {fileID: 601629552} + m_Layer: 5 + m_Name: InfoText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &601629551 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 601629550} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2024847293} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 800, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &601629552 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 601629550} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &601629553 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 601629550} +--- !u!1 &964925485 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 964925486} + - component: {fileID: 964925487} + - component: {fileID: 964925488} + - component: {fileID: 964925489} + m_Layer: 0 + m_Name: GameManager + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &964925486 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 964925485} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &964925487 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 964925485} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 86aba39379844aa428b0d3c0a3d92534, type: 3} + m_Name: + m_EditorClassIdentifier: + InfoText: {fileID: 601629552} + AsteroidPrefabs: + - {fileID: 151774, guid: 18a79aea49b60d342b7a672b7a34edbe, type: 2} + - {fileID: 140850, guid: 15f43343ba0a60e47a63d28496373c3f, type: 2} +--- !u!114 &964925488 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 964925485} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b579f4077cd5953489882224d803b137, type: 3} + m_Name: + m_EditorClassIdentifier: + PlayerOverviewEntryPrefab: {fileID: 168392, guid: f03d1c686a26a1d4da99a4186b0bb1ab, + type: 2} +--- !u!114 &964925489 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 964925485} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ffc398cf76e6d458caf303b5fceea504, type: 3} + m_Name: + m_EditorClassIdentifier: + Countdown: 5 + Text: {fileID: 601629552} +--- !u!1 &1363212416 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1363212417} + - component: {fileID: 1363212420} + - component: {fileID: 1363212419} + - component: {fileID: 1363212418} + m_Layer: 5 + m_Name: PlayerOverviewPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1363212417 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1363212416} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 2024847293} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -100} + m_SizeDelta: {x: 0, y: 200} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1363212418 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1363212416} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b579f4077cd5953489882224d803b137, type: 3} + m_Name: + m_EditorClassIdentifier: + PlayerOverviewEntryPrefab: {fileID: 168392, guid: f03d1c686a26a1d4da99a4186b0bb1ab, + type: 2} +--- !u!114 &1363212419 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1363212416} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -2095666955, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 10 + m_Right: 10 + m_Top: 10 + m_Bottom: 10 + m_ChildAlignment: 4 + m_StartCorner: 0 + m_StartAxis: 1 + m_CellSize: {x: 250, y: 150} + m_Spacing: {x: 0, y: 0} + m_Constraint: 0 + m_ConstraintCount: 2 +--- !u!222 &1363212420 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1363212416} +--- !u!1 &1638220037 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1638220040} + - component: {fileID: 1638220039} + - component: {fileID: 1638220038} + m_Layer: 0 + m_Name: StarField + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!199 &1638220038 +ParticleSystemRenderer: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1638220037} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 0 + m_Materials: + - {fileID: 10301, guid: 0000000000000000f000000000000000, type: 0} + - {fileID: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_RenderMode: 0 + m_SortMode: 0 + m_MinParticleSize: 0 + m_MaxParticleSize: 0.5 + m_CameraVelocityScale: 0 + m_VelocityScale: 0 + m_LengthScale: 2 + m_SortingFudge: 0 + m_NormalDirection: 1 + m_RenderAlignment: 0 + m_Pivot: {x: 0, y: 0, z: 0} + m_UseCustomVertexStreams: 0 + m_VertexStreams: 0001030405 + m_Mesh: {fileID: 0} + m_Mesh1: {fileID: 0} + m_Mesh2: {fileID: 0} + m_Mesh3: {fileID: 0} + m_MaskInteraction: 0 +--- !u!198 &1638220039 +ParticleSystem: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1638220037} + serializedVersion: 5 + lengthInSec: 999 + simulationSpeed: 1 + stopAction: 0 + looping: 1 + prewarm: 1 + playOnAwake: 1 + useUnscaledTime: 0 + autoRandomSeed: 1 + useRigidbodyForVelocity: 1 + startDelay: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + moveWithTransform: 0 + moveWithCustomTransform: {fileID: 0} + scalingMode: 2 + randomSeed: 0 + InitialModule: + serializedVersion: 3 + enabled: 1 + startLifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 20 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 5 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startColor: + serializedVersion: 2 + minMaxState: 2 + minColor: {r: 0.8745098, g: 0.99607843, b: 1, a: 1} + maxColor: {r: 1, g: 0.99215686, b: 0.7647059, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + startSize: + serializedVersion: 2 + minMaxState: 3 + scalar: 3 + minScalar: 0.10000001 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0.033333335 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + startSizeY: + serializedVersion: 2 + minMaxState: 3 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startSizeZ: + serializedVersion: 2 + minMaxState: 3 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationX: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotationY: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startRotation: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + randomizeRotationDirection: 0 + maxNumParticles: 500 + size3D: 0 + rotation3D: 0 + gravityModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ShapeModule: + serializedVersion: 5 + enabled: 1 + type: 5 + angle: 25 + length: 5 + boxThickness: {x: 0, y: 0, z: 0} + radiusThickness: 1 + donutRadius: 0.2 + m_Position: {x: 0, y: 0, z: 0} + m_Rotation: {x: 0, y: 0, z: 0} + m_Scale: {x: 300, y: 200, z: 1} + placementMode: 0 + m_MeshMaterialIndex: 0 + m_MeshNormalOffset: 0 + m_Mesh: {fileID: 0} + m_MeshRenderer: {fileID: 0} + m_SkinnedMeshRenderer: {fileID: 0} + m_UseMeshMaterialIndex: 0 + m_UseMeshColors: 1 + alignToDirection: 0 + randomDirectionAmount: 0 + sphericalDirectionAmount: 0 + randomPositionAmount: 0 + radius: + value: 1 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + arc: + value: 360 + mode: 0 + spread: 0 + speed: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + EmissionModule: + enabled: 1 + serializedVersion: 4 + rateOverTime: + serializedVersion: 2 + minMaxState: 0 + scalar: 10 + minScalar: 10 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rateOverDistance: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_BurstCount: 0 + m_Bursts: [] + SizeModule: + enabled: 1 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 0 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + RotationModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + ColorModule: + enabled: 1 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 0} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0.98039216} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 12722 + atime2: 43562 + atime3: 65535 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 4 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + UVModule: + enabled: 0 + mode: 0 + frameOverTime: + serializedVersion: 2 + minMaxState: 1 + scalar: 0.9999 + minScalar: 0.9999 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + startFrame: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + tilesX: 1 + tilesY: 1 + animationType: 0 + rowIndex: 0 + cycles: 1 + uvChannelMask: -1 + flipU: 0 + flipV: 0 + randomRow: 1 + sprites: + - sprite: {fileID: 0} + VelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + speedModifier: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + InheritVelocityModule: + enabled: 0 + m_Mode: 0 + m_Curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + ForceModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + inWorldSpace: 0 + randomizePerFrame: 0 + ExternalForcesModule: + enabled: 0 + multiplier: 1 + ClampVelocityModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + magnitude: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxis: 0 + inWorldSpace: 0 + multiplyDragByParticleSize: 1 + multiplyDragByParticleVelocity: 1 + dampen: 1 + drag: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + NoiseModule: + enabled: 0 + strength: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthY: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + strengthZ: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + frequency: 0.5 + damping: 1 + octaves: 1 + octaveMultiplier: 0.5 + octaveScale: 2 + quality: 2 + scrollSpeed: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remap: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapY: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapZ: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + remapEnabled: 0 + positionAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + rotationAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + sizeAmount: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + SizeBySpeedModule: + enabled: 0 + curve: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + z: + serializedVersion: 2 + minMaxState: 1 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 1 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 1 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + range: {x: 0, y: 1} + separateAxes: 0 + RotationBySpeedModule: + enabled: 0 + x: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + y: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + curve: + serializedVersion: 2 + minMaxState: 0 + scalar: 0.7853982 + minScalar: 0.7853982 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + separateAxes: 0 + range: {x: 0, y: 1} + ColorBySpeedModule: + enabled: 0 + gradient: + serializedVersion: 2 + minMaxState: 1 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + range: {x: 0, y: 1} + CollisionModule: + enabled: 0 + serializedVersion: 3 + type: 0 + collisionMode: 0 + colliderForce: 0 + multiplyColliderForceByParticleSize: 0 + multiplyColliderForceByParticleSpeed: 0 + multiplyColliderForceByCollisionAngle: 1 + plane0: {fileID: 0} + plane1: {fileID: 0} + plane2: {fileID: 0} + plane3: {fileID: 0} + plane4: {fileID: 0} + plane5: {fileID: 0} + m_Dampen: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_Bounce: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + m_EnergyLossOnCollision: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minKillSpeed: 0 + maxKillSpeed: 10000 + radiusScale: 1 + collidesWith: + serializedVersion: 2 + m_Bits: 4294967295 + maxCollisionShapes: 256 + quality: 0 + voxelSize: 0.5 + collisionMessages: 0 + collidesWithDynamic: 1 + interiorCollisions: 1 + TriggerModule: + enabled: 0 + collisionShape0: {fileID: 0} + collisionShape1: {fileID: 0} + collisionShape2: {fileID: 0} + collisionShape3: {fileID: 0} + collisionShape4: {fileID: 0} + collisionShape5: {fileID: 0} + inside: 1 + outside: 0 + enter: 0 + exit: 0 + radiusScale: 1 + SubModule: + serializedVersion: 2 + enabled: 0 + subEmitters: + - serializedVersion: 2 + emitter: {fileID: 0} + type: 0 + properties: 0 + LightsModule: + enabled: 0 + ratio: 0 + light: {fileID: 0} + randomDistribution: 1 + color: 1 + range: 1 + intensity: 1 + rangeCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + intensityCurve: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + maxLights: 20 + TrailModule: + enabled: 0 + mode: 0 + ratio: 1 + lifetime: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minVertexDistance: 0.2 + textureMode: 0 + ribbonCount: 1 + worldSpace: 0 + dieWithParticles: 1 + sizeAffectsWidth: 1 + sizeAffectsLifetime: 0 + inheritParticleColor: 1 + generateLightingData: 0 + splitSubEmitterRibbons: 0 + colorOverLifetime: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + widthOverTrail: + serializedVersion: 2 + minMaxState: 0 + scalar: 1 + minScalar: 1 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 1 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + colorOverTrail: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + CustomDataModule: + enabled: 0 + mode0: 0 + vectorComponentCount0: 4 + color0: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel0: Color + vector0_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_0: X + vector0_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_1: Y + vector0_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_2: Z + vector0_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel0_3: W + mode1: 0 + vectorComponentCount1: 4 + color1: + serializedVersion: 2 + minMaxState: 0 + minColor: {r: 1, g: 1, b: 1, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} + maxGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + minGradient: + serializedVersion: 2 + key0: {r: 1, g: 1, b: 1, a: 1} + key1: {r: 1, g: 1, b: 1, a: 1} + key2: {r: 0, g: 0, b: 0, a: 0} + key3: {r: 0, g: 0, b: 0, a: 0} + key4: {r: 0, g: 0, b: 0, a: 0} + key5: {r: 0, g: 0, b: 0, a: 0} + key6: {r: 0, g: 0, b: 0, a: 0} + key7: {r: 0, g: 0, b: 0, a: 0} + ctime0: 0 + ctime1: 65535 + ctime2: 0 + ctime3: 0 + ctime4: 0 + ctime5: 0 + ctime6: 0 + ctime7: 0 + atime0: 0 + atime1: 65535 + atime2: 0 + atime3: 0 + atime4: 0 + atime5: 0 + atime6: 0 + atime7: 0 + m_Mode: 0 + m_NumColorKeys: 2 + m_NumAlphaKeys: 2 + colorLabel1: Color + vector1_0: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_0: X + vector1_1: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_1: Y + vector1_2: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_2: Z + vector1_3: + serializedVersion: 2 + minMaxState: 0 + scalar: 0 + minScalar: 0 + maxCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + minCurve: + serializedVersion: 2 + m_Curve: + - serializedVersion: 2 + time: 0 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + - serializedVersion: 2 + time: 1 + value: 0 + inSlope: 0 + outSlope: 0 + tangentMode: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 + vectorLabel1_3: W +--- !u!4 &1638220040 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1638220037} + m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: -20, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0} +--- !u!1 &2024847289 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 2024847293} + - component: {fileID: 2024847292} + - component: {fileID: 2024847291} + - component: {fileID: 2024847290} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2024847290 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2024847289} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &2024847291 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2024847289} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1920, y: 1080} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 1 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &2024847292 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2024847289} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &2024847293 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 2024847289} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 601629551} + - {fileID: 1363212417} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes/DemoAsteroids-GameScene.unity.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes/DemoAsteroids-GameScene.unity.meta new file mode 100644 index 00000000..5683a7ef --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes/DemoAsteroids-GameScene.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 98efc37d6307844488eb3e4247dde7e9 +timeCreated: 1505212676 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes/DemoAsteroids-LobbyScene.unity b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes/DemoAsteroids-LobbyScene.unity new file mode 100644 index 00000000..2be034af --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes/DemoAsteroids-LobbyScene.unity @@ -0,0 +1,5045 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 8 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.37311912, g: 0.3807398, b: 0.3587272, a: 1} +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_TemporalCoherenceThreshold: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_LightmapEditorSettings: + serializedVersion: 9 + m_Resolution: 2 + m_BakeResolution: 40 + m_TextureWidth: 1024 + m_TextureHeight: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 0 + m_CompAOExponentDirect: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 1024 + m_ReflectionCompression: 2 + m_MixedBakeMode: 1 + m_BakeBackend: 0 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVRBounces: 2 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringMode: 0 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ShowResolutionOverlay: 1 + m_LightingDataAsset: {fileID: 0} + m_UseShadowmask: 0 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &38029883 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 38029884} + - component: {fileID: 38029888} + - component: {fileID: 38029887} + - component: {fileID: 38029886} + - component: {fileID: 38029885} + m_Layer: 5 + m_Name: LeaveGameButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &38029884 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 38029883} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 971815288} + m_Father: {fileID: 1370510200} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 250, y: 100} + m_SizeDelta: {x: 300, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &38029885 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 38029883} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &38029886 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 38029883} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 1} + m_HighlightedColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_PressedColor: {r: 0.8784314, g: 0, b: 0, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 38029887} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1310044697} + m_MethodName: OnLeaveGameButtonClicked + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &38029887 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 38029883} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &38029888 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 38029883} +--- !u!1 &66803651 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 66803652} + - component: {fileID: 66803655} + - component: {fileID: 66803654} + - component: {fileID: 66803653} + m_Layer: 5 + m_Name: Viewport + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &66803652 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66803651} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 889509551} + m_Father: {fileID: 1953198248} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -17, y: -17} + m_Pivot: {x: 0, y: 1} +--- !u!114 &66803653 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66803651} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &66803654 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66803651} +--- !u!114 &66803655 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 66803651} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -1200242548, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_ShowMaskGraphic: 0 +--- !u!1 &167093379 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 167093380} + - component: {fileID: 167093382} + - component: {fileID: 167093381} + - component: {fileID: 167093383} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &167093380 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 167093379} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1020245480} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &167093381 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 167093379} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 244 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Show Room List +--- !u!222 &167093382 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 167093379} +--- !u!114 &167093383 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 167093379} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d234639538a34b8d9e3cc6362a7afd0, type: 3} + m_Name: + m_EditorClassIdentifier: + Selectable: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!1 &224103365 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 224103366} + - component: {fileID: 224103368} + - component: {fileID: 224103367} + m_Layer: 5 + m_Name: JoinRandomRoomText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &224103366 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224103365} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 751292281} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 972.19775, y: -290} + m_SizeDelta: {x: 1344.3955, y: 380} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &224103367 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224103365} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Trying to join random room... +--- !u!222 &224103368 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 224103365} +--- !u!1 &240084374 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 240084375} + - component: {fileID: 240084378} + - component: {fileID: 240084377} + - component: {fileID: 240084376} + m_Layer: 5 + m_Name: CancelButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &240084375 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 240084374} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 777225157} + m_Father: {fileID: 1406502567} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 797.19775, y: -325} + m_SizeDelta: {x: 300, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &240084376 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 240084374} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 1} + m_HighlightedColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_PressedColor: {r: 0.8784314, g: 0, b: 0, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 240084377} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1310044697} + m_MethodName: OnBackButtonClicked + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: SelectionPanel + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &240084377 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 240084374} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &240084378 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 240084374} +--- !u!1 &300358607 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 300358608} + - component: {fileID: 300358610} + - component: {fileID: 300358609} + - component: {fileID: 300358611} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &300358608 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 300358607} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 800069348} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &300358609 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 300358607} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Start Game +--- !u!222 &300358610 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 300358607} +--- !u!114 &300358611 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 300358607} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d234639538a34b8d9e3cc6362a7afd0, type: 3} + m_Name: + m_EditorClassIdentifier: + Selectable: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!1 &328590475 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 328590476} + - component: {fileID: 328590480} + - component: {fileID: 328590479} + - component: {fileID: 328590478} + m_Layer: 5 + m_Name: PlayerNameInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &328590476 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 328590475} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 453351678} + - {fileID: 1665410345} + m_Father: {fileID: 964844638} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &328590478 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 328590475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 575553740, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 328590479} + m_TextComponent: {fileID: 1665410346} + m_Placeholder: {fileID: 453351679} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 +--- !u!114 &328590479 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 328590475} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &328590480 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 328590475} +--- !u!1 &340491865 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 340491866} + - component: {fileID: 340491868} + - component: {fileID: 340491867} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &340491866 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 340491865} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1683117734} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &340491867 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 340491865} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &340491868 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 340491865} +--- !u!1 &453351677 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 453351678} + - component: {fileID: 453351680} + - component: {fileID: 453351679} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &453351678 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 453351677} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 328590476} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &453351679 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 453351677} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Enter Player Name +--- !u!222 &453351680 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 453351677} +--- !u!1 &516933158 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 516933163} + - component: {fileID: 516933162} + - component: {fileID: 516933161} + - component: {fileID: 516933160} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &516933160 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 516933158} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1301386320, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!114 &516933161 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 516933158} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1980459831, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 1920, y: 1080} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 1 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &516933162 +Canvas: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 516933158} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &516933163 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 516933158} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} + m_Children: + - {fileID: 1165784657} + - {fileID: 1310044696} + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} +--- !u!1 &523789977 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 523789982} + - component: {fileID: 523789981} + - component: {fileID: 523789979} + - component: {fileID: 523789978} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &523789978 +AudioListener: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 523789977} + m_Enabled: 1 +--- !u!124 &523789979 +Behaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 523789977} + m_Enabled: 1 +--- !u!20 &523789981 +Camera: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 523789977} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0.019607844} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &523789982 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 523789977} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &559824083 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 559824084} + - component: {fileID: 559824086} + - component: {fileID: 559824085} + - component: {fileID: 559824087} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &559824084 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 559824083} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1585818851} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &559824085 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 559824083} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Create Room +--- !u!222 &559824086 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 559824083} +--- !u!114 &559824087 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 559824083} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d234639538a34b8d9e3cc6362a7afd0, type: 3} + m_Name: + m_EditorClassIdentifier: + Selectable: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!1 &615277852 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 615277853} + - component: {fileID: 615277855} + - component: {fileID: 615277854} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &615277853 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 615277852} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1541721127} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &615277854 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 615277852} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Enter Room Name +--- !u!222 &615277855 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 615277852} +--- !u!1 &635595324 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 635595325} + - component: {fileID: 635595327} + - component: {fileID: 635595326} + m_Layer: 5 + m_Name: PunMeteoroid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &635595325 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 635595324} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1165784657} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 1} + m_AnchorMax: {x: 0.5, y: 1} + m_AnchoredPosition: {x: 0, y: -50} + m_SizeDelta: {x: 796, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &635595326 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 635595324} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 64 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 290 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: PUN Asteroids +--- !u!222 &635595327 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 635595324} +--- !u!1 &693710617 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 693710618} + - component: {fileID: 693710620} + - component: {fileID: 693710619} + - component: {fileID: 693710621} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &693710618 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 693710617} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1629836470} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &693710619 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 693710617} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 244 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Join Random Room +--- !u!222 &693710620 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 693710617} +--- !u!114 &693710621 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 693710617} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d234639538a34b8d9e3cc6362a7afd0, type: 3} + m_Name: + m_EditorClassIdentifier: + Selectable: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!1 &751292280 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 751292281} + - component: {fileID: 751292283} + - component: {fileID: 751292282} + - component: {fileID: 751292284} + m_Layer: 5 + m_Name: JoinRandomRoomPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &751292281 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 751292280} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 224103366} + m_Father: {fileID: 1310044696} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0.000030517578} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &751292282 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 751292280} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 66efb24ed46044ab8a039599cbc47d7b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &751292283 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 751292280} +--- !u!114 &751292284 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 751292280} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 300 + m_Right: 300 + m_Top: 100 + m_Bottom: 400 + m_ChildAlignment: 1 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!1 &759308734 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 759308735} + - component: {fileID: 759308737} + - component: {fileID: 759308736} + m_Layer: 5 + m_Name: ConnectionStatus + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &759308735 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 759308734} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1165784657} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 50} + m_SizeDelta: {x: 0, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &759308736 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 759308734} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 0 + m_MaxSize: 290 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: ' Connection Status:' +--- !u!222 &759308737 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 759308734} +--- !u!1 &777225156 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 777225157} + - component: {fileID: 777225159} + - component: {fileID: 777225158} + - component: {fileID: 777225160} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &777225157 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 777225156} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 240084375} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &777225158 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 777225156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Cancel +--- !u!222 &777225159 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 777225156} +--- !u!114 &777225160 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 777225156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d234639538a34b8d9e3cc6362a7afd0, type: 3} + m_Name: + m_EditorClassIdentifier: + Selectable: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!1 &796836991 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 796836992} + - component: {fileID: 796836994} + - component: {fileID: 796836993} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &796836992 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 796836991} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1541721127} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &796836993 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 796836991} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &796836994 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 796836991} +--- !u!1 &800069347 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 800069348} + - component: {fileID: 800069352} + - component: {fileID: 800069351} + - component: {fileID: 800069350} + - component: {fileID: 800069349} + m_Layer: 5 + m_Name: StartGameButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &800069348 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 800069347} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 300358608} + m_Father: {fileID: 1370510200} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: -250, y: 100} + m_SizeDelta: {x: 300, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &800069349 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 800069347} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &800069350 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 800069347} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 1} + m_HighlightedColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_PressedColor: {r: 0.8784314, g: 0, b: 0, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 800069351} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1310044697} + m_MethodName: OnStartGameButtonClicked + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &800069351 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 800069347} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &800069352 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 800069347} +--- !u!1 &870805489 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 870805490} + - component: {fileID: 870805492} + - component: {fileID: 870805491} + - component: {fileID: 870805493} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &870805490 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 870805489} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1848066143} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &870805491 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 870805489} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Login +--- !u!222 &870805492 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 870805489} +--- !u!114 &870805493 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 870805489} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d234639538a34b8d9e3cc6362a7afd0, type: 3} + m_Name: + m_EditorClassIdentifier: + Selectable: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!1 &871182533 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 871182534} + - component: {fileID: 871182537} + - component: {fileID: 871182536} + - component: {fileID: 871182535} + m_Layer: 5 + m_Name: Scrollbar Vertical + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &871182534 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 871182533} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 968632494} + m_Father: {fileID: 1953198248} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: -17} + m_Pivot: {x: 1, y: 1} +--- !u!114 &871182535 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 871182533} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -2061169968, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1475666856} + m_HandleRect: {fileID: 1475666855} + m_Direction: 2 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Scrollbar+ScrollEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &871182536 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 871182533} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &871182537 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 871182533} +--- !u!1 &889509550 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 889509551} + - component: {fileID: 889509552} + m_Layer: 5 + m_Name: Content + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &889509551 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 889509550} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 66803652} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 1} +--- !u!114 &889509552 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 889509550} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 1 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!1 &953796484 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 953796485} + - component: {fileID: 953796487} + - component: {fileID: 953796486} + - component: {fileID: 953796488} + m_Layer: 5 + m_Name: RoomListPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &953796485 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 953796484} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1953198248} + - {fileID: 1776772161} + m_Father: {fileID: 1310044696} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &953796486 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 953796484} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 66efb24ed46044ab8a039599cbc47d7b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &953796487 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 953796484} +--- !u!114 &953796488 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 953796484} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 300 + m_Right: 300 + m_Top: 100 + m_Bottom: 100 + m_ChildAlignment: 1 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 1 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!1 &955672033 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 955672034} + - component: {fileID: 955672036} + - component: {fileID: 955672035} + m_Layer: 5 + m_Name: Placeholder + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &955672034 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 955672033} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1856119462} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &955672035 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 955672033} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 0.5} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 2 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Max Players +--- !u!222 &955672036 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 955672033} +--- !u!1 &964844637 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 964844638} + - component: {fileID: 964844641} + - component: {fileID: 964844640} + - component: {fileID: 964844639} + m_Layer: 5 + m_Name: LoginPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &964844638 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 964844637} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 328590476} + - {fileID: 1848066143} + m_Father: {fileID: 1310044696} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.000030517578} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &964844639 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 964844637} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -2095666955, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 100 + m_Bottom: 400 + m_ChildAlignment: 1 + m_StartCorner: 0 + m_StartAxis: 0 + m_CellSize: {x: 300, y: 50} + m_Spacing: {x: 50, y: 50} + m_Constraint: 1 + m_ConstraintCount: 2 +--- !u!114 &964844640 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 964844637} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 66efb24ed46044ab8a039599cbc47d7b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &964844641 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 964844637} +--- !u!1 &968632493 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 968632494} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &968632494 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 968632493} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1475666855} + m_Father: {fileID: 871182534} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &971815287 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 971815288} + - component: {fileID: 971815290} + - component: {fileID: 971815289} + - component: {fileID: 971815291} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &971815288 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 971815287} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 38029884} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &971815289 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 971815287} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Leave Game +--- !u!222 &971815290 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 971815287} +--- !u!114 &971815291 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 971815287} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d234639538a34b8d9e3cc6362a7afd0, type: 3} + m_Name: + m_EditorClassIdentifier: + Selectable: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!1 &1014227906 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1014227907} + - component: {fileID: 1014227910} + - component: {fileID: 1014227909} + - component: {fileID: 1014227908} + m_Layer: 5 + m_Name: Scrollbar Horizontal + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1014227907 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1014227906} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1683117734} + m_Father: {fileID: 1953198248} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -17, y: 20} + m_Pivot: {x: 0, y: 0} +--- !u!114 &1014227908 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1014227906} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -2061169968, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 340491867} + m_HandleRect: {fileID: 340491866} + m_Direction: 0 + m_Value: 0 + m_Size: 1 + m_NumberOfSteps: 0 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.Scrollbar+ScrollEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1014227909 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1014227906} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1014227910 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1014227906} +--- !u!1 &1020245479 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1020245480} + - component: {fileID: 1020245483} + - component: {fileID: 1020245482} + - component: {fileID: 1020245481} + - component: {fileID: 1020245484} + m_Layer: 5 + m_Name: RoomListButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1020245480 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1020245479} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 167093380} + m_Father: {fileID: 1771933900} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 972.19775, y: -325} + m_SizeDelta: {x: 300, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1020245481 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1020245479} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 1} + m_HighlightedColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_PressedColor: {r: 0.8784314, g: 0, b: 0, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1020245482} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1310044697} + m_MethodName: OnRoomListButtonClicked + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: RoomListPanel + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1020245482 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1020245479} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1020245483 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1020245479} +--- !u!114 &1020245484 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1020245479} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 300 + m_MinHeight: -1 + m_PreferredWidth: 300 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &1165784656 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1165784657} + - component: {fileID: 1165784659} + - component: {fileID: 1165784658} + - component: {fileID: 1165784660} + m_Layer: 5 + m_Name: TopPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1165784657 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1165784656} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 635595325} + - {fileID: 759308735} + - {fileID: 1496080348} + m_Father: {fileID: 516933163} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -100} + m_SizeDelta: {x: 0, y: 200} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1165784658 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1165784656} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1165784659 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1165784656} +--- !u!114 &1165784660 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1165784656} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe0a55ef565e3984f8866c5c91e3c2fd, type: 3} + m_Name: + m_EditorClassIdentifier: + ConnectionStatusText: {fileID: 759308736} +--- !u!1 &1251081872 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1251081873} + - component: {fileID: 1251081875} + - component: {fileID: 1251081874} + - component: {fileID: 1251081876} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1251081873 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1251081872} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1452023753} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1251081874 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1251081872} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 244 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Create Room +--- !u!222 &1251081875 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1251081872} +--- !u!114 &1251081876 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1251081872} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d234639538a34b8d9e3cc6362a7afd0, type: 3} + m_Name: + m_EditorClassIdentifier: + Selectable: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!1 &1310044695 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1310044696} + - component: {fileID: 1310044698} + - component: {fileID: 1310044697} + - component: {fileID: 1310044699} + m_Layer: 5 + m_Name: MainPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1310044696 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1310044695} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 964844638} + - {fileID: 1771933900} + - {fileID: 1406502567} + - {fileID: 751292281} + - {fileID: 953796485} + - {fileID: 1370510200} + m_Father: {fileID: 516933163} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0} + m_AnchoredPosition: {x: 0, y: 440} + m_SizeDelta: {x: 0, y: 880} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1310044697 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1310044695} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 84fd812a67908014cb408f749ca7a55e, type: 3} + m_Name: + m_EditorClassIdentifier: + LoginPanel: {fileID: 964844637} + PlayerNameInput: {fileID: 328590478} + SelectionPanel: {fileID: 1771933899} + CreateRoomPanel: {fileID: 1406502566} + RoomNameInputField: {fileID: 1541721128} + MaxPlayersInputField: {fileID: 1856119463} + JoinRandomRoomPanel: {fileID: 751292280} + RoomListPanel: {fileID: 953796484} + RoomListContent: {fileID: 889509550} + RoomListEntryPrefab: {fileID: 114706, guid: 03c5e15309335324fba99d68e38cb08b, type: 2} + InsideRoomPanel: {fileID: 1370510199} + StartGameButton: {fileID: 800069350} + PlayerListEntryPrefab: {fileID: 195212, guid: d68bf8413681d9b4aa7328277e632e3f, + type: 2} +--- !u!222 &1310044698 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1310044695} +--- !u!114 &1310044699 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1310044695} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b28dd60f6abf16d4094cf0f642a043e2, type: 3} + m_Name: + m_EditorClassIdentifier: + dontDestroyOnLoad: 0 +--- !u!1 &1370510199 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1370510200} + - component: {fileID: 1370510202} + - component: {fileID: 1370510201} + - component: {fileID: 1370510203} + m_Layer: 5 + m_Name: InsideRoomPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1370510200 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1370510199} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 38029884} + - {fileID: 800069348} + m_Father: {fileID: 1310044696} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0.000061035156} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1370510201 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1370510199} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 66efb24ed46044ab8a039599cbc47d7b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1370510202 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1370510199} +--- !u!114 &1370510203 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1370510199} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1297475563, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 300 + m_Right: 300 + m_Top: 100 + m_Bottom: 400 + m_ChildAlignment: 1 + m_Spacing: 0 + m_ChildForceExpandWidth: 1 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 1 + m_ChildControlHeight: 1 +--- !u!1 &1406502566 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1406502567} + - component: {fileID: 1406502569} + - component: {fileID: 1406502568} + - component: {fileID: 1406502570} + m_Layer: 5 + m_Name: CreateRoomPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1406502567 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1406502566} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1571776196} + - {fileID: 1541721127} + - {fileID: 1953383542} + - {fileID: 1856119462} + - {fileID: 240084375} + - {fileID: 1585818851} + m_Father: {fileID: 1310044696} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1406502568 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1406502566} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 66efb24ed46044ab8a039599cbc47d7b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1406502569 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1406502566} +--- !u!114 &1406502570 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1406502566} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -2095666955, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 100 + m_Bottom: 400 + m_ChildAlignment: 1 + m_StartCorner: 0 + m_StartAxis: 0 + m_CellSize: {x: 300, y: 50} + m_Spacing: {x: 50, y: 50} + m_Constraint: 1 + m_ConstraintCount: 2 +--- !u!1 &1452023752 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1452023753} + - component: {fileID: 1452023756} + - component: {fileID: 1452023755} + - component: {fileID: 1452023754} + - component: {fileID: 1452023757} + m_Layer: 5 + m_Name: CreateRoomButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1452023753 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1452023752} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1251081873} + m_Father: {fileID: 1771933900} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 972.19775, y: -125} + m_SizeDelta: {x: 300, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1452023754 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1452023752} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 1} + m_HighlightedColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_PressedColor: {r: 0.8784314, g: 0, b: 0, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1452023755} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1310044697} + m_MethodName: SetActivePanel + m_Mode: 5 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: CreateRoomPanel + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1452023755 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1452023752} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1452023756 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1452023752} +--- !u!114 &1452023757 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1452023752} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 300 + m_MinHeight: -1 + m_PreferredWidth: 300 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &1475666854 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1475666855} + - component: {fileID: 1475666857} + - component: {fileID: 1475666856} + m_Layer: 5 + m_Name: Handle + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1475666855 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1475666854} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 968632494} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 0.9999999} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 20, y: 20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1475666856 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1475666854} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1475666857 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1475666854} +--- !u!1 &1496080347 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1496080348} + - component: {fileID: 1496080350} + - component: {fileID: 1496080349} + m_Layer: 5 + m_Name: Logo + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1496080348 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1496080347} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1165784657} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -100, y: 0} + m_SizeDelta: {x: 200, y: 200} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1496080349 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1496080347} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 56bbc6b42271d4177ac313247f47ac1f, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1496080350 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1496080347} +--- !u!1 &1541721126 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1541721127} + - component: {fileID: 1541721130} + - component: {fileID: 1541721129} + - component: {fileID: 1541721128} + m_Layer: 5 + m_Name: RoomNameInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1541721127 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1541721126} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 615277853} + - {fileID: 796836992} + m_Father: {fileID: 1406502567} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 1147.1978, y: -125} + m_SizeDelta: {x: 300, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1541721128 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1541721126} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 575553740, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1541721129} + m_TextComponent: {fileID: 796836993} + m_Placeholder: {fileID: 615277854} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 +--- !u!114 &1541721129 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1541721126} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1541721130 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1541721126} +--- !u!1 &1571776195 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1571776196} + - component: {fileID: 1571776198} + - component: {fileID: 1571776197} + m_Layer: 5 + m_Name: RoomNameText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1571776196 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1571776195} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1406502567} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 797.19775, y: -125} + m_SizeDelta: {x: 300, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1571776197 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1571776195} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Room Name +--- !u!222 &1571776198 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1571776195} +--- !u!1 &1585818850 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1585818851} + - component: {fileID: 1585818854} + - component: {fileID: 1585818853} + - component: {fileID: 1585818852} + m_Layer: 5 + m_Name: CreateRoomButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1585818851 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1585818850} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 559824084} + m_Father: {fileID: 1406502567} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 1147.1978, y: -325} + m_SizeDelta: {x: 300, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1585818852 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1585818850} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 1} + m_HighlightedColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_PressedColor: {r: 0.8784314, g: 0, b: 0, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1585818853} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1310044697} + m_MethodName: OnCreateRoomButtonClicked + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1585818853 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1585818850} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1585818854 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1585818850} +--- !u!1 &1629836469 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1629836470} + - component: {fileID: 1629836473} + - component: {fileID: 1629836472} + - component: {fileID: 1629836471} + - component: {fileID: 1629836474} + m_Layer: 5 + m_Name: JoinRandomRoomButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1629836470 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1629836469} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 693710618} + m_Father: {fileID: 1771933900} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 972.19775, y: -225} + m_SizeDelta: {x: 300, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1629836471 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1629836469} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 1} + m_HighlightedColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_PressedColor: {r: 0.8784314, g: 0, b: 0, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1629836472} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1310044697} + m_MethodName: OnJoinRandomRoomButtonClicked + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: JoinRandomRoomPanel + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1629836472 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1629836469} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1629836473 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1629836469} +--- !u!114 &1629836474 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1629836469} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 0 + m_MinWidth: 300 + m_MinHeight: -1 + m_PreferredWidth: 300 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!1 &1665410344 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1665410345} + - component: {fileID: 1665410347} + - component: {fileID: 1665410346} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1665410345 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1665410344} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 328590476} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1665410346 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1665410344} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1665410347 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1665410344} +--- !u!1 &1683117733 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1683117734} + m_Layer: 5 + m_Name: Sliding Area + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1683117734 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1683117733} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 340491866} + m_Father: {fileID: 1014227907} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: -20, y: -20} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &1771933899 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1771933900} + - component: {fileID: 1771933902} + - component: {fileID: 1771933901} + - component: {fileID: 1771933903} + m_Layer: 5 + m_Name: SelectionPanel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1771933900 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1771933899} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1452023753} + - {fileID: 1629836470} + - {fileID: 1020245480} + m_Father: {fileID: 1310044696} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1771933901 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1771933899} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: 66efb24ed46044ab8a039599cbc47d7b, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1771933902 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1771933899} +--- !u!114 &1771933903 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1771933899} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -2095666955, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 100 + m_Bottom: 400 + m_ChildAlignment: 1 + m_StartCorner: 0 + m_StartAxis: 0 + m_CellSize: {x: 300, y: 50} + m_Spacing: {x: 50, y: 50} + m_Constraint: 1 + m_ConstraintCount: 1 +--- !u!1 &1776772160 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1776772161} + - component: {fileID: 1776772165} + - component: {fileID: 1776772164} + - component: {fileID: 1776772163} + - component: {fileID: 1776772162} + m_Layer: 5 + m_Name: BackButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1776772161 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1776772160} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 1928118586} + m_Father: {fileID: 953796485} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0} + m_AnchorMax: {x: 0.5, y: 0} + m_AnchoredPosition: {x: 0, y: 50} + m_SizeDelta: {x: 300, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1776772162 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1776772160} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1679637790, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreLayout: 1 + m_MinWidth: -1 + m_MinHeight: -1 + m_PreferredWidth: -1 + m_PreferredHeight: -1 + m_FlexibleWidth: -1 + m_FlexibleHeight: -1 + m_LayoutPriority: 1 +--- !u!114 &1776772163 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1776772160} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 1} + m_HighlightedColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_PressedColor: {r: 0.8784314, g: 0, b: 0, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1776772164} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1310044697} + m_MethodName: OnBackButtonClicked + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1776772164 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1776772160} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1776772165 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1776772160} +--- !u!1 &1806893537 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1806893540} + - component: {fileID: 1806893538} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1806893538 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1806893537} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 68187d3cf4c8746aaa64930f1a766a38, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1806893540 +Transform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1806893537} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1848066142 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1848066143} + - component: {fileID: 1848066147} + - component: {fileID: 1848066146} + - component: {fileID: 1848066145} + m_Layer: 5 + m_Name: LoginButton + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1848066143 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1848066142} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 870805490} + m_Father: {fileID: 964844638} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1848066145 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1848066142} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1392445389, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 0.31764707, g: 0.3372549, b: 0.38431373, a: 1} + m_HighlightedColor: {r: 0.8784314, g: 0.48235294, b: 0, a: 1} + m_PressedColor: {r: 0.8784314, g: 0, b: 0, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1848066146} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1310044697} + m_MethodName: OnLoginButtonClicked + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: DemoWorker + m_BoolArgument: 0 + m_CallState: 2 + m_TypeName: UnityEngine.UI.Button+ButtonClickedEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!114 &1848066146 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1848066142} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1848066147 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1848066142} +--- !u!1 &1856119461 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1856119462} + - component: {fileID: 1856119465} + - component: {fileID: 1856119464} + - component: {fileID: 1856119463} + m_Layer: 5 + m_Name: MaxPlayersInput + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1856119462 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1856119461} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 955672034} + - {fileID: 1902466499} + m_Father: {fileID: 1406502567} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 1147.1978, y: -225} + m_SizeDelta: {x: 300, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1856119463 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1856119461} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 575553740, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1856119464} + m_TextComponent: {fileID: 1902466500} + m_Placeholder: {fileID: 955672035} + m_ContentType: 0 + m_InputType: 0 + m_AsteriskChar: 42 + m_KeyboardType: 0 + m_LineType: 0 + m_HideMobileInput: 0 + m_CharacterValidation: 0 + m_CharacterLimit: 0 + m_OnEndEdit: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+SubmitEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.InputField+OnChangeEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null + m_CaretColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_CustomCaretColor: 0 + m_SelectionColor: {r: 0.65882355, g: 0.80784315, b: 1, a: 0.7529412} + m_Text: + m_CaretBlinkRate: 0.85 + m_CaretWidth: 1 + m_ReadOnly: 0 +--- !u!114 &1856119464 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1856119461} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1856119465 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1856119461} +--- !u!1 &1902466498 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1902466499} + - component: {fileID: 1902466501} + - component: {fileID: 1902466500} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1902466499 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1902466498} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1856119462} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.5} + m_SizeDelta: {x: -20, y: -13} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1902466500 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1902466498} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 3 + m_AlignByGeometry: 0 + m_RichText: 0 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: +--- !u!222 &1902466501 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1902466498} +--- !u!1 &1928118585 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1928118586} + - component: {fileID: 1928118588} + - component: {fileID: 1928118587} + - component: {fileID: 1928118589} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1928118586 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1928118585} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1776772161} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1928118587 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1928118585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Back +--- !u!222 &1928118588 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1928118585} +--- !u!114 &1928118589 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1928118585} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9d234639538a34b8d9e3cc6362a7afd0, type: 3} + m_Name: + m_EditorClassIdentifier: + Selectable: {fileID: 0} + NormalColor: {r: 1, g: 1, b: 1, a: 1} + HoverColor: {r: 0, g: 0, b: 0, a: 1} +--- !u!1 &1953198247 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1953198248} + - component: {fileID: 1953198251} + - component: {fileID: 1953198250} + - component: {fileID: 1953198249} + m_Layer: 5 + m_Name: RoomListScrollView + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1953198248 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1953198247} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 66803652} + - {fileID: 1014227907} + - {fileID: 871182534} + m_Father: {fileID: 953796485} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 972.19775, y: -440} + m_SizeDelta: {x: 1344.3955, y: 680} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1953198249 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1953198247} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: -765806418, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.13333334, g: 0.17254902, b: 0.21568628, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_Sprite: {fileID: 21300000, guid: c222cd02c447941edb09ecb6433229ce, type: 3} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 +--- !u!222 &1953198250 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1953198247} +--- !u!114 &1953198251 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1953198247} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 1367256648, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Content: {fileID: 889509551} + m_Horizontal: 0 + m_Vertical: 1 + m_MovementType: 1 + m_Elasticity: 0.1 + m_Inertia: 1 + m_DecelerationRate: 0.135 + m_ScrollSensitivity: 1 + m_Viewport: {fileID: 66803652} + m_HorizontalScrollbar: {fileID: 1014227908} + m_VerticalScrollbar: {fileID: 871182535} + m_HorizontalScrollbarVisibility: 2 + m_VerticalScrollbarVisibility: 2 + m_HorizontalScrollbarSpacing: -3 + m_VerticalScrollbarSpacing: -3 + m_OnValueChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.ScrollRect+ScrollRectEvent, UnityEngine.UI, Version=1.0.0.0, + Culture=neutral, PublicKeyToken=null +--- !u!1 &1953383541 +GameObject: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + serializedVersion: 5 + m_Component: + - component: {fileID: 1953383542} + - component: {fileID: 1953383544} + - component: {fileID: 1953383543} + m_Layer: 5 + m_Name: MaxPlayersText + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1953383542 +RectTransform: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1953383541} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 1406502567} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 797.19775, y: -225} + m_SizeDelta: {x: 300, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1953383543 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1953383541} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 708705254, guid: f5f67c52d1564df4a8936ccd202a3bd8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI, + Version=1.0.0.0, Culture=neutral, PublicKeyToken=null + m_FontData: + m_Font: {fileID: 12800000, guid: 495c9e2a934bcc640a8d7427b13cb680, type: 3} + m_FontSize: 24 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 5 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Max Players +--- !u!222 &1953383544 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 1953383541} diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes/DemoAsteroids-LobbyScene.unity.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes/DemoAsteroids-LobbyScene.unity.meta new file mode 100644 index 00000000..4ccbbc77 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scenes/DemoAsteroids-LobbyScene.unity.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c8a9d1312a49dc8488a9b32d83d659c7 +timeCreated: 1505212662 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts.meta new file mode 100644 index 00000000..5e14af37 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 3ae075de96c44c449ad885c6e84ffb5c +folderAsset: yes +timeCreated: 1505219105 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/AsteroidsGame.cs b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/AsteroidsGame.cs new file mode 100644 index 00000000..52d6de16 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/AsteroidsGame.cs @@ -0,0 +1,35 @@ +using UnityEngine; + +namespace Photon.Pun.Demo.Asteroids +{ + public class AsteroidsGame + { + public const float ASTEROIDS_MIN_SPAWN_TIME = 5.0f; + public const float ASTEROIDS_MAX_SPAWN_TIME = 10.0f; + + public const float PLAYER_RESPAWN_TIME = 4.0f; + + public const int PLAYER_MAX_LIVES = 3; + + public const string PLAYER_LIVES = "PlayerLives"; + public const string PLAYER_READY = "IsPlayerReady"; + public const string PLAYER_LOADED_LEVEL = "PlayerLoadedLevel"; + + public static Color GetColor(int colorChoice) + { + switch (colorChoice) + { + case 0: return Color.red; + case 1: return Color.green; + case 2: return Color.blue; + case 3: return Color.yellow; + case 4: return Color.cyan; + case 5: return Color.grey; + case 6: return Color.magenta; + case 7: return Color.white; + } + + return Color.black; + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/AsteroidsGame.cs.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/AsteroidsGame.cs.meta new file mode 100644 index 00000000..978301ec --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/AsteroidsGame.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: a3a5d301bebde6547b43d377600a3e57 +timeCreated: 1505986699 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game.meta new file mode 100644 index 00000000..6d92a99c --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 8d3277e3b6ea2fa4885437f70ca2497c +folderAsset: yes +timeCreated: 1505225963 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Asteroid.cs b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Asteroid.cs new file mode 100644 index 00000000..f1910063 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Asteroid.cs @@ -0,0 +1,123 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Part of: Asteroid Demo +// +// +// Asteroid Component +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + +using UnityEngine; + +using Random = UnityEngine.Random; +using Photon.Pun.UtilityScripts; + +namespace Photon.Pun.Demo.Asteroids +{ + public class Asteroid : MonoBehaviour + { + public bool isLargeAsteroid; + + private bool isDestroyed; + + private PhotonView photonView; + +#pragma warning disable 0109 + private new Rigidbody rigidbody; +#pragma warning restore 0109 + + #region UNITY + + public void Awake() + { + photonView = GetComponent(); + + rigidbody = GetComponent(); + + if (photonView.InstantiationData != null) + { + rigidbody.AddForce((Vector3) photonView.InstantiationData[0]); + rigidbody.AddTorque((Vector3) photonView.InstantiationData[1]); + + isLargeAsteroid = (bool) photonView.InstantiationData[2]; + } + } + + public void Update() + { + if (!photonView.IsMine) + { + return; + } + + if (Mathf.Abs(transform.position.x) > Camera.main.orthographicSize * Camera.main.aspect || Mathf.Abs(transform.position.z) > Camera.main.orthographicSize) + { + // Out of the screen + PhotonNetwork.Destroy(gameObject); + } + } + + public void OnCollisionEnter(Collision collision) + { + if (isDestroyed) + { + return; + } + + if (collision.gameObject.CompareTag("Bullet")) + { + if (photonView.IsMine) + { + Bullet bullet = collision.gameObject.GetComponent(); + bullet.Owner.AddScore(isLargeAsteroid ? 2 : 1); + + DestroyAsteroidGlobally(); + } + else + { + DestroyAsteroidLocally(); + } + } + else if (collision.gameObject.CompareTag("Player")) + { + if (photonView.IsMine) + { + collision.gameObject.GetComponent().RPC("DestroySpaceship", RpcTarget.All); + + DestroyAsteroidGlobally(); + } + } + } + + #endregion + + private void DestroyAsteroidGlobally() + { + isDestroyed = true; + + if (isLargeAsteroid) + { + int numberToSpawn = Random.Range(3, 6); + + for (int counter = 0; counter < numberToSpawn; ++counter) + { + Vector3 force = Quaternion.Euler(0, counter * 360.0f / numberToSpawn, 0) * Vector3.forward * Random.Range(0.5f, 1.5f) * 300.0f; + Vector3 torque = Random.insideUnitSphere * Random.Range(500.0f, 1500.0f); + object[] instantiationData = {force, torque, false, PhotonNetwork.Time}; + + PhotonNetwork.InstantiateRoomObject("SmallAsteroid", transform.position + force.normalized * 10.0f, Quaternion.Euler(0, Random.value * 180.0f, 0), 0, instantiationData); + } + } + + PhotonNetwork.Destroy(gameObject); + } + + private void DestroyAsteroidLocally() + { + isDestroyed = true; + + GetComponent().enabled = false; + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Asteroid.cs.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Asteroid.cs.meta new file mode 100644 index 00000000..6778bcfd --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Asteroid.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c852cc8bbc743374083cab6f7df68bb7 +timeCreated: 1505219178 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/AsteroidsGameManager.cs b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/AsteroidsGameManager.cs new file mode 100644 index 00000000..8cff2ca0 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/AsteroidsGameManager.cs @@ -0,0 +1,267 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Part of: Asteroid demo +// +// +// Game Manager for the Asteroid Demo +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + +using System.Collections; + +using UnityEngine; +using UnityEngine.UI; + +using Photon.Realtime; +using Photon.Pun.UtilityScripts; +using Hashtable = ExitGames.Client.Photon.Hashtable; + +namespace Photon.Pun.Demo.Asteroids +{ + public class AsteroidsGameManager : MonoBehaviourPunCallbacks + { + public static AsteroidsGameManager Instance = null; + + public Text InfoText; + + public GameObject[] AsteroidPrefabs; + + #region UNITY + + public void Awake() + { + Instance = this; + } + + public override void OnEnable() + { + base.OnEnable(); + + CountdownTimer.OnCountdownTimerHasExpired += OnCountdownTimerIsExpired; + } + + public void Start() + { + Hashtable props = new Hashtable + { + {AsteroidsGame.PLAYER_LOADED_LEVEL, true} + }; + PhotonNetwork.LocalPlayer.SetCustomProperties(props); + } + + public override void OnDisable() + { + base.OnDisable(); + + CountdownTimer.OnCountdownTimerHasExpired -= OnCountdownTimerIsExpired; + } + + #endregion + + #region COROUTINES + + private IEnumerator SpawnAsteroid() + { + while (true) + { + yield return new WaitForSeconds(Random.Range(AsteroidsGame.ASTEROIDS_MIN_SPAWN_TIME, AsteroidsGame.ASTEROIDS_MAX_SPAWN_TIME)); + + Vector2 direction = Random.insideUnitCircle; + Vector3 position = Vector3.zero; + + if (Mathf.Abs(direction.x) > Mathf.Abs(direction.y)) + { + // Make it appear on the left/right side + position = new Vector3(Mathf.Sign(direction.x) * Camera.main.orthographicSize * Camera.main.aspect, 0, direction.y * Camera.main.orthographicSize); + } + else + { + // Make it appear on the top/bottom + position = new Vector3(direction.x * Camera.main.orthographicSize * Camera.main.aspect, 0, Mathf.Sign(direction.y) * Camera.main.orthographicSize); + } + + // Offset slightly so we are not out of screen at creation time (as it would destroy the asteroid right away) + position -= position.normalized * 0.1f; + + + Vector3 force = -position.normalized * 1000.0f; + Vector3 torque = Random.insideUnitSphere * Random.Range(500.0f, 1500.0f); + object[] instantiationData = {force, torque, true}; + + PhotonNetwork.InstantiateRoomObject("BigAsteroid", position, Quaternion.Euler(Random.value * 360.0f, Random.value * 360.0f, Random.value * 360.0f), 0, instantiationData); + } + } + + private IEnumerator EndOfGame(string winner, int score) + { + float timer = 5.0f; + + while (timer > 0.0f) + { + InfoText.text = string.Format("Player {0} won with {1} points.\n\n\nReturning to login screen in {2} seconds.", winner, score, timer.ToString("n2")); + + yield return new WaitForEndOfFrame(); + + timer -= Time.deltaTime; + } + + PhotonNetwork.LeaveRoom(); + } + + #endregion + + #region PUN CALLBACKS + + public override void OnDisconnected(DisconnectCause cause) + { + UnityEngine.SceneManagement.SceneManager.LoadScene("DemoAsteroids-LobbyScene"); + } + + public override void OnLeftRoom() + { + PhotonNetwork.Disconnect(); + } + + public override void OnMasterClientSwitched(Player newMasterClient) + { + if (PhotonNetwork.LocalPlayer.ActorNumber == newMasterClient.ActorNumber) + { + StartCoroutine(SpawnAsteroid()); + } + } + + public override void OnPlayerLeftRoom(Player otherPlayer) + { + CheckEndOfGame(); + } + + public override void OnPlayerPropertiesUpdate(Player targetPlayer, Hashtable changedProps) + { + if (changedProps.ContainsKey(AsteroidsGame.PLAYER_LIVES)) + { + CheckEndOfGame(); + return; + } + + if (!PhotonNetwork.IsMasterClient) + { + return; + } + + + // if there was no countdown yet, the master client (this one) waits until everyone loaded the level and sets a timer start + int startTimestamp; + bool startTimeIsSet = CountdownTimer.TryGetStartTime(out startTimestamp); + + if (changedProps.ContainsKey(AsteroidsGame.PLAYER_LOADED_LEVEL)) + { + if (CheckAllPlayerLoadedLevel()) + { + if (!startTimeIsSet) + { + CountdownTimer.SetStartTime(); + } + } + else + { + // not all players loaded yet. wait: + Debug.Log("setting text waiting for players! ",this.InfoText); + InfoText.text = "Waiting for other players..."; + } + } + + } + + #endregion + + + // called by OnCountdownTimerIsExpired() when the timer ended + private void StartGame() + { + Debug.Log("StartGame!"); + + // on rejoin, we have to figure out if the spaceship exists or not + // if this is a rejoin (the ship is already network instantiated and will be setup via event) we don't need to call PN.Instantiate + + + float angularStart = (360.0f / PhotonNetwork.CurrentRoom.PlayerCount) * PhotonNetwork.LocalPlayer.GetPlayerNumber(); + float x = 20.0f * Mathf.Sin(angularStart * Mathf.Deg2Rad); + float z = 20.0f * Mathf.Cos(angularStart * Mathf.Deg2Rad); + Vector3 position = new Vector3(x, 0.0f, z); + Quaternion rotation = Quaternion.Euler(0.0f, angularStart, 0.0f); + + PhotonNetwork.Instantiate("Spaceship", position, rotation, 0); // avoid this call on rejoin (ship was network instantiated before) + + if (PhotonNetwork.IsMasterClient) + { + StartCoroutine(SpawnAsteroid()); + } + } + + private bool CheckAllPlayerLoadedLevel() + { + foreach (Player p in PhotonNetwork.PlayerList) + { + object playerLoadedLevel; + + if (p.CustomProperties.TryGetValue(AsteroidsGame.PLAYER_LOADED_LEVEL, out playerLoadedLevel)) + { + if ((bool) playerLoadedLevel) + { + continue; + } + } + + return false; + } + + return true; + } + + private void CheckEndOfGame() + { + bool allDestroyed = true; + + foreach (Player p in PhotonNetwork.PlayerList) + { + object lives; + if (p.CustomProperties.TryGetValue(AsteroidsGame.PLAYER_LIVES, out lives)) + { + if ((int) lives > 0) + { + allDestroyed = false; + break; + } + } + } + + if (allDestroyed) + { + if (PhotonNetwork.IsMasterClient) + { + StopAllCoroutines(); + } + + string winner = ""; + int score = -1; + + foreach (Player p in PhotonNetwork.PlayerList) + { + if (p.GetScore() > score) + { + winner = p.NickName; + score = p.GetScore(); + } + } + + StartCoroutine(EndOfGame(winner, score)); + } + } + + private void OnCountdownTimerIsExpired() + { + StartGame(); + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/AsteroidsGameManager.cs.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/AsteroidsGameManager.cs.meta new file mode 100644 index 00000000..5647089e --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/AsteroidsGameManager.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 86aba39379844aa428b0d3c0a3d92534 +timeCreated: 1505219187 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Bullet.cs b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Bullet.cs new file mode 100644 index 00000000..07d9d728 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Bullet.cs @@ -0,0 +1,31 @@ +using Photon.Realtime; +using UnityEngine; + +namespace Photon.Pun.Demo.Asteroids +{ + public class Bullet : MonoBehaviour + { + public Player Owner { get; private set; } + + public void Start() + { + Destroy(gameObject, 3.0f); + } + + public void OnCollisionEnter(Collision collision) + { + Destroy(gameObject); + } + + public void InitializeBullet(Player owner, Vector3 originalDirection, float lag) + { + Owner = owner; + + transform.forward = originalDirection; + + Rigidbody rigidbody = GetComponent(); + rigidbody.velocity = originalDirection * 200.0f; + rigidbody.position += rigidbody.velocity * lag; + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Bullet.cs.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Bullet.cs.meta new file mode 100644 index 00000000..f51738ba --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Bullet.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6321a7d9112988841b7223ac6a925bfc +timeCreated: 1505219203 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/PlayerOverviewPanel.cs b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/PlayerOverviewPanel.cs new file mode 100644 index 00000000..aaca6848 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/PlayerOverviewPanel.cs @@ -0,0 +1,71 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Part of: Asteroid Demo, +// +// +// Player Overview Panel +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + +using System.Collections.Generic; + +using UnityEngine; +using UnityEngine.UI; + +using ExitGames.Client.Photon; +using Photon.Realtime; +using Photon.Pun.UtilityScripts; + +namespace Photon.Pun.Demo.Asteroids +{ + public class PlayerOverviewPanel : MonoBehaviourPunCallbacks + { + public GameObject PlayerOverviewEntryPrefab; + + private Dictionary playerListEntries; + + #region UNITY + + public void Awake() + { + playerListEntries = new Dictionary(); + + foreach (Player p in PhotonNetwork.PlayerList) + { + GameObject entry = Instantiate(PlayerOverviewEntryPrefab); + entry.transform.SetParent(gameObject.transform); + entry.transform.localScale = Vector3.one; + entry.GetComponent().color = AsteroidsGame.GetColor(p.GetPlayerNumber()); + entry.GetComponent().text = string.Format("{0}\nScore: {1}\nLives: {2}", p.NickName, p.GetScore(), AsteroidsGame.PLAYER_MAX_LIVES); + + playerListEntries.Add(p.ActorNumber, entry); + } + } + + #endregion + + #region PUN CALLBACKS + + public override void OnPlayerLeftRoom(Player otherPlayer) + { + GameObject go = null; + if (this.playerListEntries.TryGetValue(otherPlayer.ActorNumber, out go)) + { + Destroy(playerListEntries[otherPlayer.ActorNumber]); + playerListEntries.Remove(otherPlayer.ActorNumber); + } + } + + public override void OnPlayerPropertiesUpdate(Player targetPlayer, Hashtable changedProps) + { + GameObject entry; + if (playerListEntries.TryGetValue(targetPlayer.ActorNumber, out entry)) + { + entry.GetComponent().text = string.Format("{0}\nScore: {1}\nLives: {2}", targetPlayer.NickName, targetPlayer.GetScore(), targetPlayer.CustomProperties[AsteroidsGame.PLAYER_LIVES]); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/PlayerOverviewPanel.cs.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/PlayerOverviewPanel.cs.meta new file mode 100644 index 00000000..6ded1215 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/PlayerOverviewPanel.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: b579f4077cd5953489882224d803b137 +timeCreated: 1505982910 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Spaceship.cs b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Spaceship.cs new file mode 100644 index 00000000..523b9cdb --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Spaceship.cs @@ -0,0 +1,220 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Part of: Asteroid Demo, +// +// +// Spaceship +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + +using System.Collections; + +using UnityEngine; + +using Photon.Pun.UtilityScripts; +using Hashtable = ExitGames.Client.Photon.Hashtable; + +namespace Photon.Pun.Demo.Asteroids +{ + public class Spaceship : MonoBehaviour + { + public float RotationSpeed = 90.0f; + public float MovementSpeed = 2.0f; + public float MaxSpeed = 0.2f; + + public ParticleSystem Destruction; + public GameObject EngineTrail; + public GameObject BulletPrefab; + + private PhotonView photonView; + +#pragma warning disable 0109 + private new Rigidbody rigidbody; + private new Collider collider; + private new Renderer renderer; +#pragma warning restore 0109 + + private float rotation = 0.0f; + private float acceleration = 0.0f; + private float shootingTimer = 0.0f; + + private bool controllable = true; + + #region UNITY + + public void Awake() + { + photonView = GetComponent(); + + rigidbody = GetComponent(); + collider = GetComponent(); + renderer = GetComponent(); + } + + public void Start() + { + foreach (Renderer r in GetComponentsInChildren()) + { + r.material.color = AsteroidsGame.GetColor(photonView.Owner.GetPlayerNumber()); + } + } + + public void Update() + { + if (!photonView.AmOwner || !controllable) + { + return; + } + + // we don't want the master client to apply input to remote ships while the remote player is inactive + if (this.photonView.CreatorActorNr != PhotonNetwork.LocalPlayer.ActorNumber) + { + return; + } + + rotation = Input.GetAxis("Horizontal"); + acceleration = Input.GetAxis("Vertical"); + + if (Input.GetButton("Jump") && shootingTimer <= 0.0) + { + shootingTimer = 0.2f; + + photonView.RPC("Fire", RpcTarget.AllViaServer, rigidbody.position, rigidbody.rotation); + } + + if (shootingTimer > 0.0f) + { + shootingTimer -= Time.deltaTime; + } + } + + public void FixedUpdate() + { + if (!photonView.IsMine) + { + return; + } + + if (!controllable) + { + return; + } + + Quaternion rot = rigidbody.rotation * Quaternion.Euler(0, rotation * RotationSpeed * Time.fixedDeltaTime, 0); + rigidbody.MoveRotation(rot); + + Vector3 force = (rot * Vector3.forward) * acceleration * 1000.0f * MovementSpeed * Time.fixedDeltaTime; + rigidbody.AddForce(force); + + if (rigidbody.velocity.magnitude > (MaxSpeed * 1000.0f)) + { + rigidbody.velocity = rigidbody.velocity.normalized * MaxSpeed * 1000.0f; + } + + CheckExitScreen(); + } + + #endregion + + #region COROUTINES + + private IEnumerator WaitForRespawn() + { + yield return new WaitForSeconds(AsteroidsGame.PLAYER_RESPAWN_TIME); + + photonView.RPC("RespawnSpaceship", RpcTarget.AllViaServer); + } + + #endregion + + #region PUN CALLBACKS + + [PunRPC] + public void DestroySpaceship() + { + rigidbody.velocity = Vector3.zero; + rigidbody.angularVelocity = Vector3.zero; + + collider.enabled = false; + renderer.enabled = false; + + controllable = false; + + EngineTrail.SetActive(false); + Destruction.Play(); + + if (photonView.IsMine) + { + object lives; + if (PhotonNetwork.LocalPlayer.CustomProperties.TryGetValue(AsteroidsGame.PLAYER_LIVES, out lives)) + { + PhotonNetwork.LocalPlayer.SetCustomProperties(new Hashtable {{AsteroidsGame.PLAYER_LIVES, ((int) lives <= 1) ? 0 : ((int) lives - 1)}}); + + if (((int) lives) > 1) + { + StartCoroutine("WaitForRespawn"); + } + } + } + } + + [PunRPC] + public void Fire(Vector3 position, Quaternion rotation, PhotonMessageInfo info) + { + float lag = (float) (PhotonNetwork.Time - info.SentServerTime); + GameObject bullet; + + /** Use this if you want to fire one bullet at a time **/ + bullet = Instantiate(BulletPrefab, position, Quaternion.identity) as GameObject; + bullet.GetComponent().InitializeBullet(photonView.Owner, (rotation * Vector3.forward), Mathf.Abs(lag)); + + + /** Use this if you want to fire two bullets at once **/ + //Vector3 baseX = rotation * Vector3.right; + //Vector3 baseZ = rotation * Vector3.forward; + + //Vector3 offsetLeft = -1.5f * baseX - 0.5f * baseZ; + //Vector3 offsetRight = 1.5f * baseX - 0.5f * baseZ; + + //bullet = Instantiate(BulletPrefab, rigidbody.position + offsetLeft, Quaternion.identity) as GameObject; + //bullet.GetComponent().InitializeBullet(photonView.Owner, baseZ, Mathf.Abs(lag)); + //bullet = Instantiate(BulletPrefab, rigidbody.position + offsetRight, Quaternion.identity) as GameObject; + //bullet.GetComponent().InitializeBullet(photonView.Owner, baseZ, Mathf.Abs(lag)); + } + + [PunRPC] + public void RespawnSpaceship() + { + collider.enabled = true; + renderer.enabled = true; + + controllable = true; + + EngineTrail.SetActive(true); + Destruction.Stop(); + } + + #endregion + + private void CheckExitScreen() + { + if (Camera.main == null) + { + return; + } + + if (Mathf.Abs(rigidbody.position.x) > (Camera.main.orthographicSize * Camera.main.aspect)) + { + rigidbody.position = new Vector3(-Mathf.Sign(rigidbody.position.x) * Camera.main.orthographicSize * Camera.main.aspect, 0, rigidbody.position.z); + rigidbody.position -= rigidbody.position.normalized * 0.1f; // offset a little bit to avoid looping back & forth between the 2 edges + } + + if (Mathf.Abs(rigidbody.position.z) > Camera.main.orthographicSize) + { + rigidbody.position = new Vector3(rigidbody.position.x, rigidbody.position.y, -Mathf.Sign(rigidbody.position.z) * Camera.main.orthographicSize); + rigidbody.position -= rigidbody.position.normalized * 0.1f; // offset a little bit to avoid looping back & forth between the 2 edges + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Spaceship.cs.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Spaceship.cs.meta new file mode 100644 index 00000000..55735ff1 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Game/Spaceship.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: c565458f43b8ad4469a2ca341c210318 +timeCreated: 1505219195 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby.meta new file mode 100644 index 00000000..4a40ee1b --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 7087de22e901cb24d91f7c256e564de6 +folderAsset: yes +timeCreated: 1505225982 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/LobbyMainPanel.cs b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/LobbyMainPanel.cs new file mode 100644 index 00000000..cab7eeaa --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/LobbyMainPanel.cs @@ -0,0 +1,372 @@ +using ExitGames.Client.Photon; +using Photon.Realtime; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +namespace Photon.Pun.Demo.Asteroids +{ + public class LobbyMainPanel : MonoBehaviourPunCallbacks + { + [Header("Login Panel")] + public GameObject LoginPanel; + + public InputField PlayerNameInput; + + [Header("Selection Panel")] + public GameObject SelectionPanel; + + [Header("Create Room Panel")] + public GameObject CreateRoomPanel; + + public InputField RoomNameInputField; + public InputField MaxPlayersInputField; + + [Header("Join Random Room Panel")] + public GameObject JoinRandomRoomPanel; + + [Header("Room List Panel")] + public GameObject RoomListPanel; + + public GameObject RoomListContent; + public GameObject RoomListEntryPrefab; + + [Header("Inside Room Panel")] + public GameObject InsideRoomPanel; + + public Button StartGameButton; + public GameObject PlayerListEntryPrefab; + + private Dictionary cachedRoomList; + private Dictionary roomListEntries; + private Dictionary playerListEntries; + + #region UNITY + + public void Awake() + { + PhotonNetwork.AutomaticallySyncScene = true; + + cachedRoomList = new Dictionary(); + roomListEntries = new Dictionary(); + + PlayerNameInput.text = "Player " + Random.Range(1000, 10000); + } + + #endregion + + #region PUN CALLBACKS + + public override void OnConnectedToMaster() + { + this.SetActivePanel(SelectionPanel.name); + } + + public override void OnRoomListUpdate(List roomList) + { + ClearRoomListView(); + + UpdateCachedRoomList(roomList); + UpdateRoomListView(); + } + + public override void OnJoinedLobby() + { + // whenever this joins a new lobby, clear any previous room lists + cachedRoomList.Clear(); + ClearRoomListView(); + } + + // note: when a client joins / creates a room, OnLeftLobby does not get called, even if the client was in a lobby before + public override void OnLeftLobby() + { + cachedRoomList.Clear(); + ClearRoomListView(); + } + + public override void OnCreateRoomFailed(short returnCode, string message) + { + SetActivePanel(SelectionPanel.name); + } + + public override void OnJoinRoomFailed(short returnCode, string message) + { + SetActivePanel(SelectionPanel.name); + } + + public override void OnJoinRandomFailed(short returnCode, string message) + { + string roomName = "Room " + Random.Range(1000, 10000); + + RoomOptions options = new RoomOptions {MaxPlayers = 8}; + + PhotonNetwork.CreateRoom(roomName, options, null); + } + + public override void OnJoinedRoom() + { + // joining (or entering) a room invalidates any cached lobby room list (even if LeaveLobby was not called due to just joining a room) + cachedRoomList.Clear(); + + + SetActivePanel(InsideRoomPanel.name); + + if (playerListEntries == null) + { + playerListEntries = new Dictionary(); + } + + foreach (Player p in PhotonNetwork.PlayerList) + { + GameObject entry = Instantiate(PlayerListEntryPrefab); + entry.transform.SetParent(InsideRoomPanel.transform); + entry.transform.localScale = Vector3.one; + entry.GetComponent().Initialize(p.ActorNumber, p.NickName); + + object isPlayerReady; + if (p.CustomProperties.TryGetValue(AsteroidsGame.PLAYER_READY, out isPlayerReady)) + { + entry.GetComponent().SetPlayerReady((bool) isPlayerReady); + } + + playerListEntries.Add(p.ActorNumber, entry); + } + + StartGameButton.gameObject.SetActive(CheckPlayersReady()); + + Hashtable props = new Hashtable + { + {AsteroidsGame.PLAYER_LOADED_LEVEL, false} + }; + PhotonNetwork.LocalPlayer.SetCustomProperties(props); + } + + public override void OnLeftRoom() + { + SetActivePanel(SelectionPanel.name); + + foreach (GameObject entry in playerListEntries.Values) + { + Destroy(entry.gameObject); + } + + playerListEntries.Clear(); + playerListEntries = null; + } + + public override void OnPlayerEnteredRoom(Player newPlayer) + { + GameObject entry = Instantiate(PlayerListEntryPrefab); + entry.transform.SetParent(InsideRoomPanel.transform); + entry.transform.localScale = Vector3.one; + entry.GetComponent().Initialize(newPlayer.ActorNumber, newPlayer.NickName); + + playerListEntries.Add(newPlayer.ActorNumber, entry); + + StartGameButton.gameObject.SetActive(CheckPlayersReady()); + } + + public override void OnPlayerLeftRoom(Player otherPlayer) + { + Destroy(playerListEntries[otherPlayer.ActorNumber].gameObject); + playerListEntries.Remove(otherPlayer.ActorNumber); + + StartGameButton.gameObject.SetActive(CheckPlayersReady()); + } + + public override void OnMasterClientSwitched(Player newMasterClient) + { + if (PhotonNetwork.LocalPlayer.ActorNumber == newMasterClient.ActorNumber) + { + StartGameButton.gameObject.SetActive(CheckPlayersReady()); + } + } + + public override void OnPlayerPropertiesUpdate(Player targetPlayer, Hashtable changedProps) + { + if (playerListEntries == null) + { + playerListEntries = new Dictionary(); + } + + GameObject entry; + if (playerListEntries.TryGetValue(targetPlayer.ActorNumber, out entry)) + { + object isPlayerReady; + if (changedProps.TryGetValue(AsteroidsGame.PLAYER_READY, out isPlayerReady)) + { + entry.GetComponent().SetPlayerReady((bool) isPlayerReady); + } + } + + StartGameButton.gameObject.SetActive(CheckPlayersReady()); + } + + #endregion + + #region UI CALLBACKS + + public void OnBackButtonClicked() + { + if (PhotonNetwork.InLobby) + { + PhotonNetwork.LeaveLobby(); + } + + SetActivePanel(SelectionPanel.name); + } + + public void OnCreateRoomButtonClicked() + { + string roomName = RoomNameInputField.text; + roomName = (roomName.Equals(string.Empty)) ? "Room " + Random.Range(1000, 10000) : roomName; + + byte maxPlayers; + byte.TryParse(MaxPlayersInputField.text, out maxPlayers); + maxPlayers = (byte) Mathf.Clamp(maxPlayers, 2, 8); + + RoomOptions options = new RoomOptions {MaxPlayers = maxPlayers, PlayerTtl = 10000 }; + + PhotonNetwork.CreateRoom(roomName, options, null); + } + + public void OnJoinRandomRoomButtonClicked() + { + SetActivePanel(JoinRandomRoomPanel.name); + + PhotonNetwork.JoinRandomRoom(); + } + + public void OnLeaveGameButtonClicked() + { + PhotonNetwork.LeaveRoom(); + } + + public void OnLoginButtonClicked() + { + string playerName = PlayerNameInput.text; + + if (!playerName.Equals("")) + { + PhotonNetwork.LocalPlayer.NickName = playerName; + PhotonNetwork.ConnectUsingSettings(); + } + else + { + Debug.LogError("Player Name is invalid."); + } + } + + public void OnRoomListButtonClicked() + { + if (!PhotonNetwork.InLobby) + { + PhotonNetwork.JoinLobby(); + } + + SetActivePanel(RoomListPanel.name); + } + + public void OnStartGameButtonClicked() + { + PhotonNetwork.CurrentRoom.IsOpen = false; + PhotonNetwork.CurrentRoom.IsVisible = false; + + PhotonNetwork.LoadLevel("DemoAsteroids-GameScene"); + } + + #endregion + + private bool CheckPlayersReady() + { + if (!PhotonNetwork.IsMasterClient) + { + return false; + } + + foreach (Player p in PhotonNetwork.PlayerList) + { + object isPlayerReady; + if (p.CustomProperties.TryGetValue(AsteroidsGame.PLAYER_READY, out isPlayerReady)) + { + if (!(bool) isPlayerReady) + { + return false; + } + } + else + { + return false; + } + } + + return true; + } + + private void ClearRoomListView() + { + foreach (GameObject entry in roomListEntries.Values) + { + Destroy(entry.gameObject); + } + + roomListEntries.Clear(); + } + + public void LocalPlayerPropertiesUpdated() + { + StartGameButton.gameObject.SetActive(CheckPlayersReady()); + } + + private void SetActivePanel(string activePanel) + { + LoginPanel.SetActive(activePanel.Equals(LoginPanel.name)); + SelectionPanel.SetActive(activePanel.Equals(SelectionPanel.name)); + CreateRoomPanel.SetActive(activePanel.Equals(CreateRoomPanel.name)); + JoinRandomRoomPanel.SetActive(activePanel.Equals(JoinRandomRoomPanel.name)); + RoomListPanel.SetActive(activePanel.Equals(RoomListPanel.name)); // UI should call OnRoomListButtonClicked() to activate this + InsideRoomPanel.SetActive(activePanel.Equals(InsideRoomPanel.name)); + } + + private void UpdateCachedRoomList(List roomList) + { + foreach (RoomInfo info in roomList) + { + // Remove room from cached room list if it got closed, became invisible or was marked as removed + if (!info.IsOpen || !info.IsVisible || info.RemovedFromList) + { + if (cachedRoomList.ContainsKey(info.Name)) + { + cachedRoomList.Remove(info.Name); + } + + continue; + } + + // Update cached room info + if (cachedRoomList.ContainsKey(info.Name)) + { + cachedRoomList[info.Name] = info; + } + // Add new room info to cache + else + { + cachedRoomList.Add(info.Name, info); + } + } + } + + private void UpdateRoomListView() + { + foreach (RoomInfo info in cachedRoomList.Values) + { + GameObject entry = Instantiate(RoomListEntryPrefab); + entry.transform.SetParent(RoomListContent.transform); + entry.transform.localScale = Vector3.one; + entry.GetComponent().Initialize(info.Name, (byte)info.PlayerCount, info.MaxPlayers); + + roomListEntries.Add(info.Name, entry); + } + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/LobbyMainPanel.cs.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/LobbyMainPanel.cs.meta new file mode 100644 index 00000000..a0bb73a3 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/LobbyMainPanel.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 84fd812a67908014cb408f749ca7a55e +timeCreated: 1505228123 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/LobbyTopPanel.cs b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/LobbyTopPanel.cs new file mode 100644 index 00000000..36727385 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/LobbyTopPanel.cs @@ -0,0 +1,22 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace Photon.Pun.Demo.Asteroids +{ + public class LobbyTopPanel : MonoBehaviour + { + private readonly string connectionStatusMessage = " Connection Status: "; + + [Header("UI References")] + public Text ConnectionStatusText; + + #region UNITY + + public void Update() + { + ConnectionStatusText.text = connectionStatusMessage + PhotonNetwork.NetworkClientState; + } + + #endregion + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/LobbyTopPanel.cs.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/LobbyTopPanel.cs.meta new file mode 100644 index 00000000..1c842ce3 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/LobbyTopPanel.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: fe0a55ef565e3984f8866c5c91e3c2fd +timeCreated: 1505378258 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/PlayerListEntry.cs b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/PlayerListEntry.cs new file mode 100644 index 00000000..f76b2bff --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/PlayerListEntry.cs @@ -0,0 +1,97 @@ +// -------------------------------------------------------------------------------------------------------------------- +// +// Part of: Asteroid Demo, +// +// +// Player List Entry +// +// developer@exitgames.com +// -------------------------------------------------------------------------------------------------------------------- + +using UnityEngine; +using UnityEngine.UI; + +using ExitGames.Client.Photon; +using Photon.Realtime; +using Photon.Pun.UtilityScripts; + +namespace Photon.Pun.Demo.Asteroids +{ + public class PlayerListEntry : MonoBehaviour + { + [Header("UI References")] + public Text PlayerNameText; + + public Image PlayerColorImage; + public Button PlayerReadyButton; + public Image PlayerReadyImage; + + private int ownerId; + private bool isPlayerReady; + + #region UNITY + + public void OnEnable() + { + PlayerNumbering.OnPlayerNumberingChanged += OnPlayerNumberingChanged; + } + + public void Start() + { + if (PhotonNetwork.LocalPlayer.ActorNumber != ownerId) + { + PlayerReadyButton.gameObject.SetActive(false); + } + else + { + Hashtable initialProps = new Hashtable() {{AsteroidsGame.PLAYER_READY, isPlayerReady}, {AsteroidsGame.PLAYER_LIVES, AsteroidsGame.PLAYER_MAX_LIVES}}; + PhotonNetwork.LocalPlayer.SetCustomProperties(initialProps); + PhotonNetwork.LocalPlayer.SetScore(0); + + PlayerReadyButton.onClick.AddListener(() => + { + isPlayerReady = !isPlayerReady; + SetPlayerReady(isPlayerReady); + + Hashtable props = new Hashtable() {{AsteroidsGame.PLAYER_READY, isPlayerReady}}; + PhotonNetwork.LocalPlayer.SetCustomProperties(props); + + if (PhotonNetwork.IsMasterClient) + { + FindObjectOfType().LocalPlayerPropertiesUpdated(); + } + }); + } + } + + public void OnDisable() + { + PlayerNumbering.OnPlayerNumberingChanged -= OnPlayerNumberingChanged; + } + + #endregion + + public void Initialize(int playerId, string playerName) + { + ownerId = playerId; + PlayerNameText.text = playerName; + } + + private void OnPlayerNumberingChanged() + { + foreach (Player p in PhotonNetwork.PlayerList) + { + if (p.ActorNumber == ownerId) + { + PlayerColorImage.color = AsteroidsGame.GetColor(p.GetPlayerNumber()); + } + } + } + + public void SetPlayerReady(bool playerReady) + { + PlayerReadyButton.GetComponentInChildren().text = playerReady ? "Ready!" : "Ready?"; + PlayerReadyImage.enabled = playerReady; + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/PlayerListEntry.cs.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/PlayerListEntry.cs.meta new file mode 100644 index 00000000..9a0a4395 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/PlayerListEntry.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 6b92420fa27b32d43a6a35af7781c5d8 +timeCreated: 1505382856 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/RoomListEntry.cs b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/RoomListEntry.cs new file mode 100644 index 00000000..52b52182 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/RoomListEntry.cs @@ -0,0 +1,35 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace Photon.Pun.Demo.Asteroids +{ + public class RoomListEntry : MonoBehaviour + { + public Text RoomNameText; + public Text RoomPlayersText; + public Button JoinRoomButton; + + private string roomName; + + public void Start() + { + JoinRoomButton.onClick.AddListener(() => + { + if (PhotonNetwork.InLobby) + { + PhotonNetwork.LeaveLobby(); + } + + PhotonNetwork.JoinRoom(roomName); + }); + } + + public void Initialize(string name, byte currentPlayers, byte maxPlayers) + { + roomName = name; + + RoomNameText.text = name; + RoomPlayersText.text = currentPlayers + " / " + maxPlayers; + } + } +} \ No newline at end of file diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/RoomListEntry.cs.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/RoomListEntry.cs.meta new file mode 100644 index 00000000..aa7269f7 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Scripts/Lobby/RoomListEntry.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 40b744eae97c5fa47879a477d0f0b667 +timeCreated: 1505743562 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures.meta new file mode 100644 index 00000000..90949484 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: fc9f7bb3bfb617048b28071ed312932e +folderAsset: yes +timeCreated: 1505213282 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerAsteroidEmissive.tif b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerAsteroidEmissive.tif new file mode 100644 index 0000000000000000000000000000000000000000..9bb3f2c09d3101781674b1e1b4905fbd2e77f533 GIT binary patch literal 18876 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 J@#g~}{{zQG+VTJZ literal 0 HcmV?d00001 diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerAsteroidEmissive.tif.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerAsteroidEmissive.tif.meta new file mode 100644 index 00000000..e141a042 --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerAsteroidEmissive.tif.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: bfc02e2f0447eaf4190d17879193f0e2 +timeCreated: 1505213348 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerPlayershipAlbedo.tif b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerPlayershipAlbedo.tif new file mode 100644 index 0000000000000000000000000000000000000000..dffd108b20739ecb0ffce401215da73f62707d4d GIT binary patch literal 19664 zcmeHPdypJO8SmM>_bYeFF+DhV2C6{_EkXZ66^H?eB*sf*7BY-Y_JHgK-4XzLO?@Tg zt4!GgatmYFd43B*3r#(?yV#VC`epk|P5hI9Ifbbt?JkE3r<(FAkeA!+th2QhWIV_R z_0|I>1ad3LLm+qAF!y^HRJ8%2H0bZ!Ta7*enDLDW4PMTmp?ZYA0CMgM!{=MJLLsCY z@_Xnp4mGbu$a-!Pm9)eTk1M*OjVnbqnPfwOV3b|ABPWZ>q;@*O*+d|o2(+`ojzk!Q z4%E3}s>lmFC7n%6*__v}Qa_fJkvwoQiH z6gBG)#^Z5+Amk5)I6!dPE?MWNI9Xe17_sd1N}8bNih53wS!|b2Dw2uX2iBK>RjD0c? zOauZpBL;GojTD5n$m{$ZE9O+PTbY5KZATGvnO%;ol#wS$ehm;O+LPQc{!C)*9 zi5q;RQugX|O!q263CA>;Hm1L*2w{6Z9#4zma99#M z!d4UWn3>bm=9~tBx62lg5SC>98I>-YskI97IkJuvc~z6}H0$zN^NcP$bX~!9$aGEc z0$zc-1sv&;*y*34ExSc)n$>c1htnAahJ9Q0cWz^HT$0~yrWmFO>Ya^fN=BdLRcTWe zBE-ogHmuI9HrsrsAFtT?+=nm_8b5Jz!w{E*m>BC2xIjosbAdoa7rCP5nQ^QutYH~U6cwZf=ibZmMF%h zi&Ei4aOrZw62-W5Q7W7WE?rJoq8OJhN`(`_rOOFR6ywrGsc<5=bU9&(VqCf?6;1?~ zE+;Hej7t}#!inJ0<%A`Qap|H|I1yaBoUlYOE?txgCxT0t6P75(rHfMGL~!YH!V<-} zbWtjt2rgYtSfUu0E=q+H!KKRyOBCbMMX7KixO6#TiDF#3C>2fwmo6tPQH)C$rNW8u zu5{IvKY5pA_|AP2K4@RgoQJ%pt{#~4gd+nyJVG5kgQ<$uO_ zGnrR$egUaFnw!Fio}7;B;9|q3qz=K?Yh!)qjDdas-vP?T0_W+bbnXeO!3$#O>4%bBg|yhclgvibzg^cC{GGy|hhHr*ra%$h`y?jbZX z(31pj@EH+kL}Xb}DWx|mzsFgU22^>Dt|vbi*Q1JKXUTg1%8@*d44QiKB0HacM9b?$ zKRlJ+s6J%j>n0=tK2?TK$>9V8Gp2^K!kP2XtgM{?P5 zdqKTb0KQQ?o@w6K4Ih~G@MMt3dXibVhLkm#jlyHYCC1$K9wWLsgr-R{XLKXcR>1u{ zQvYK#e;R4)Et0P#cepVmcGu#FMX1h*d5}B=dxB^;BY!3XC3(145e;K%Zv5tTR1<;{ z2Av0Y3lk+8JReLAvH3U1BRt;>uV>%Aui@g^S|filWrPcS>O7;A9JU?I!G z3!9!qVtmaQ5~Jp)`j zuBf{=<#So;7OmUI@}PvZy}sF93`?bvs#GE z7%NXjE6L%2_L5o{k39Ww!;G`$b%AN<473a}(=SZFjvB}bD(5Ft$TR&0Y9cu#UIKV# z`bD%4HPqD9)YdfA);6@%*VVTyUeM66VDYj=ixw|hw5+9pB=ccpX5X2{`ufJE#^$D` z=GLaBrdE7wYBj2~I59B&5NfG`4zOOvhdeEew}qL031+Tm`cVcBM`9`&lE7h{;B+QW zMP*fWO>JF0GrJJp30|wP88H=%*HhuCtgfo5^frW{u*F-kVqvgy({_H5@1jdXRjpUw z_>-QMs}_$uoDN6SJ_GLJ=pzTgiJO;-eP^}n(jn@?JA1IU?85YKQG=JX*@8Bpm-i2@UU}-Du3WYMmG3+- z{q(E*2UlJ5k2?of?f>rdZ%9O~AOwE~?htdZFGQP=2s_0zZ2jMf{qa4YyXVJs z=X|%mRRf#p@z)t`UlcXzyff9lB6$;V!L^X<+rKebl* z<%`EoT>QlOv9Twg3!nISY Nx>(@GYm*@h>EBNpptJx0 literal 0 HcmV?d00001 diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerPlayershipAlbedo.tif.meta b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerPlayershipAlbedo.tif.meta new file mode 100644 index 00000000..2376c3ce --- /dev/null +++ b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerPlayershipAlbedo.tif.meta @@ -0,0 +1,57 @@ +fileFormatVersion: 2 +guid: b28381ec2a3dce5459a8fd396a0eb560 +timeCreated: 1505213348 +licenseType: Store +TextureImporter: + fileIDToRecycleName: {} + serializedVersion: 2 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + linearTexture: 0 + correctGamma: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + grayScaleToAlpha: 0 + generateCubemap: 0 + cubemapConvolution: 0 + cubemapConvolutionSteps: 7 + cubemapConvolutionExponent: 1.5 + seamlessCubemap: 0 + textureFormat: -1 + maxTextureSize: 2048 + textureSettings: + filterMode: -1 + aniso: -1 + mipBias: -1 + wrapMode: -1 + nPOTScale: 1 + lightmap: 0 + rGBM: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spritePixelsToUnits: 100 + alphaIsTransparency: 0 + textureType: -1 + buildTargetSettings: [] + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + spritePackingTag: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerPlayershipEmission.tif b/Assets/Photon/PhotonUnityNetworking/Demos/DemoAsteroids/Textures/FlyerPlayershipEmission.tif new file mode 100644 index 0000000000000000000000000000000000000000..035917fc442c37ffd5040e72d72cdee5185d01a2 GIT binary patch literal 22192 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 z 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