From efed5c3d1487708f2916caee4170ed25be3bc8c3 Mon Sep 17 00:00:00 2001 From: Anton Franzluebbers Date: Tue, 19 Jul 2022 16:31:43 -0400 Subject: [PATCH] updated samples, autoconnect to server on enable/disable, auto-login option, add bool for players that were already in room when you joined --- .../VelNet/1.0.4/Example/Materials.meta} | 2 +- .../{ => Materials}/TransparentMat.mat | 0 .../{ => Materials}/TransparentMat.mat.meta | 0 .../1.0.4/Example/{test.meta => Prefabs.meta} | 2 +- .../Example/{ => Prefabs}/PlayerPrefab.prefab | 0 .../{ => Prefabs}/PlayerPrefab.prefab.meta | 0 .../TestNetworkedGameObject.prefab | 0 .../TestNetworkedGameObject.prefab.meta | 0 .../VelNet/1.0.4/Example/Scenes.meta} | 3 +- .../{test.unity => Scenes/Demo All.unity} | 5 +- .../Demo All.unity.meta} | 0 .../Simple Connection Example.unity} | 319 ++++++++++++++---- .../Simple Connection Example.unity.meta} | 2 +- .../Samples/VelNet/1.0.4/Example/Scripts.meta | 8 + .../Example/Scripts/CustomMessageTest.cs | 22 ++ .../Scripts/CustomMessageTest.cs.meta} | 0 .../Example/{ => Scripts}/MouseDragger.cs | 0 .../{ => Scripts}/MouseDragger.cs.meta | 0 .../1.0.4/Example/{ => Scripts}/NetworkGUI.cs | 43 +-- .../Example/{ => Scripts}/NetworkGUI.cs.meta | 0 .../Example/{ => Scripts}/PlayerController.cs | 0 .../{ => Scripts}/PlayerController.cs.meta | 0 .../VelNet/1.0.4/Example/Scripts}/RPCTest.cs | 4 +- .../1.0.4/Example/Scripts}/RPCTest.cs.meta | 0 .../Example/{ => Scripts}/SyncedTextbox.cs | 0 .../{ => Scripts}/SyncedTextbox.cs.meta | 0 .../1.0.4/Example/{ => Scripts}/VelNetMan.cs | 0 .../Example/{ => Scripts}/VelNetMan.cs.meta | 0 .../1.0.4/Example/test/LightingData.asset | Bin 18168 -> 0 bytes .../Example/test/LightingData.asset.meta | 8 - TestVelGameServer/Assets/test.cs | 34 -- TestVelGameServer/Assets/test2.unity | 191 ----------- .../VelNetUnity/Runtime/NetworkObject.cs | 1 + .../VelNetUnity/Runtime/Util/SyncRigidbody.cs | 6 - .../VelNetUnity/Runtime/Util/VelNetLogger.cs | 20 ++ .../Runtime/Util/VelNetLogger.cs.meta | 3 + .../VelNetUnity/Runtime/VelNetManager.cs | 204 +++++++---- .../VelNetUnity/Runtime/VelNetPlayer.cs | 3 +- .../VelNetUnity/Samples~/Example.meta | 8 + .../Samples~/Example/Materials.meta | 8 + .../{ => Materials}/TransparentMat.mat | 0 .../{ => Materials}/TransparentMat.mat.meta | 0 .../VelNetUnity/Samples~/Example/Prefabs.meta | 8 + .../Example/{ => Prefabs}/PlayerPrefab.prefab | 4 + .../{ => Prefabs}/PlayerPrefab.prefab.meta | 0 .../TestNetworkedGameObject.prefab | 0 .../TestNetworkedGameObject.prefab.meta | 0 .../VelNetUnity/Samples~/Example/Scenes.meta | 8 + .../{test.unity => Scenes/Demo All.unity} | 147 +++++++- .../Demo All.unity.meta} | 0 .../Simple Connection Example.unity} | 319 ++++++++++++++---- .../Simple Connection Example.unity.meta} | 2 +- .../VelNetUnity/Samples~/Example/Scripts.meta | 8 + .../Example/Scripts/CustomMessageTest.cs | 22 ++ .../Example/Scripts/CustomMessageTest.cs.meta | 11 + .../Example/{ => Scripts}/MouseDragger.cs | 0 .../{ => Scripts}/MouseDragger.cs.meta | 0 .../Example/{ => Scripts}/NetworkGUI.cs | 43 +-- .../Example/{ => Scripts}/NetworkGUI.cs.meta | 0 .../Example/{ => Scripts}/PlayerController.cs | 0 .../{ => Scripts}/PlayerController.cs.meta | 0 .../Samples~/Example/Scripts/RPCTest.cs | 26 ++ .../Samples~/Example/Scripts/RPCTest.cs.meta | 11 + .../Example/{ => Scripts}/SyncedTextbox.cs | 0 .../{ => Scripts}/SyncedTextbox.cs.meta | 0 .../Example/{ => Scripts}/VelNetMan.cs | 0 .../Example/{ => Scripts}/VelNetMan.cs.meta | 0 .../Packages/VelNetUnity/package.json | 2 +- TestVelGameServer/Packages/packages-lock.json | 2 +- .../ProjectSettings/EditorBuildSettings.asset | 2 +- .../RiderScriptEditorPersistedState.asset | 2 +- velnet_logo.png | Bin 57760 -> 40603 bytes velnet_logo.psd | Bin 0 -> 204585 bytes velnet_logo_noborder.png | Bin 0 -> 21396 bytes 74 files changed, 949 insertions(+), 564 deletions(-) rename TestVelGameServer/{Packages/VelNetUnity/Samples~/Example/test.meta => Assets/Samples/VelNet/1.0.4/Example/Materials.meta} (77%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{ => Materials}/TransparentMat.mat (100%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{ => Materials}/TransparentMat.mat.meta (100%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{test.meta => Prefabs.meta} (77%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{ => Prefabs}/PlayerPrefab.prefab (100%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{ => Prefabs}/PlayerPrefab.prefab.meta (100%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{ => Prefabs}/TestNetworkedGameObject.prefab (100%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{ => Prefabs}/TestNetworkedGameObject.prefab.meta (100%) rename TestVelGameServer/Assets/{test2.unity.meta => Samples/VelNet/1.0.4/Example/Scenes.meta} (67%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{test.unity => Scenes/Demo All.unity} (99%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{test.unity.meta => Scenes/Demo All.unity.meta} (100%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{test_binary.unity => Scenes/Simple Connection Example.unity} (59%) rename TestVelGameServer/{Packages/VelNetUnity/Samples~/Example/test_binary.unity.meta => Assets/Samples/VelNet/1.0.4/Example/Scenes/Simple Connection Example.unity.meta} (74%) create mode 100644 TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts.meta create mode 100644 TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/CustomMessageTest.cs rename TestVelGameServer/Assets/{test.cs.meta => Samples/VelNet/1.0.4/Example/Scripts/CustomMessageTest.cs.meta} (100%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{ => Scripts}/MouseDragger.cs (100%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{ => Scripts}/MouseDragger.cs.meta (100%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{ => Scripts}/NetworkGUI.cs (66%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{ => Scripts}/NetworkGUI.cs.meta (100%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{ => Scripts}/PlayerController.cs (100%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{ => Scripts}/PlayerController.cs.meta (100%) rename TestVelGameServer/Assets/{ => Samples/VelNet/1.0.4/Example/Scripts}/RPCTest.cs (83%) rename TestVelGameServer/Assets/{ => Samples/VelNet/1.0.4/Example/Scripts}/RPCTest.cs.meta (100%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{ => Scripts}/SyncedTextbox.cs (100%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{ => Scripts}/SyncedTextbox.cs.meta (100%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{ => Scripts}/VelNetMan.cs (100%) rename TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/{ => Scripts}/VelNetMan.cs.meta (100%) delete mode 100644 TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test/LightingData.asset delete mode 100644 TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test/LightingData.asset.meta delete mode 100644 TestVelGameServer/Assets/test.cs delete mode 100644 TestVelGameServer/Assets/test2.unity create mode 100644 TestVelGameServer/Packages/VelNetUnity/Runtime/Util/VelNetLogger.cs create mode 100644 TestVelGameServer/Packages/VelNetUnity/Runtime/Util/VelNetLogger.cs.meta create mode 100644 TestVelGameServer/Packages/VelNetUnity/Samples~/Example.meta create mode 100644 TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Materials.meta rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{ => Materials}/TransparentMat.mat (100%) rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{ => Materials}/TransparentMat.mat.meta (100%) create mode 100644 TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Prefabs.meta rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{ => Prefabs}/PlayerPrefab.prefab (98%) rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{ => Prefabs}/PlayerPrefab.prefab.meta (100%) rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{ => Prefabs}/TestNetworkedGameObject.prefab (100%) rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{ => Prefabs}/TestNetworkedGameObject.prefab.meta (100%) create mode 100644 TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scenes.meta rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{test.unity => Scenes/Demo All.unity} (96%) rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{test.unity.meta => Scenes/Demo All.unity.meta} (100%) rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{test_binary.unity => Scenes/Simple Connection Example.unity} (59%) rename TestVelGameServer/{Assets/Samples/VelNet/1.0.4/Example/test_binary.unity.meta => Packages/VelNetUnity/Samples~/Example/Scenes/Simple Connection Example.unity.meta} (74%) create mode 100644 TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts.meta create mode 100644 TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/CustomMessageTest.cs create mode 100644 TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/CustomMessageTest.cs.meta rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{ => Scripts}/MouseDragger.cs (100%) rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{ => Scripts}/MouseDragger.cs.meta (100%) rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{ => Scripts}/NetworkGUI.cs (66%) rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{ => Scripts}/NetworkGUI.cs.meta (100%) rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{ => Scripts}/PlayerController.cs (100%) rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{ => Scripts}/PlayerController.cs.meta (100%) create mode 100644 TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/RPCTest.cs create mode 100644 TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/RPCTest.cs.meta rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{ => Scripts}/SyncedTextbox.cs (100%) rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{ => Scripts}/SyncedTextbox.cs.meta (100%) rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{ => Scripts}/VelNetMan.cs (100%) rename TestVelGameServer/Packages/VelNetUnity/Samples~/Example/{ => Scripts}/VelNetMan.cs.meta (100%) create mode 100644 velnet_logo.psd create mode 100644 velnet_logo_noborder.png diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/test.meta b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Materials.meta similarity index 77% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/test.meta rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Materials.meta index d6e9138..38f5869 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/test.meta +++ b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Materials.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 009dc4ba29f14b649beb8c3eaad89f15 +guid: dc0ae145afb98164493d097e29dfb3bd folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/TransparentMat.mat b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Materials/TransparentMat.mat similarity index 100% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/TransparentMat.mat rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Materials/TransparentMat.mat diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/TransparentMat.mat.meta b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Materials/TransparentMat.mat.meta similarity index 100% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/TransparentMat.mat.meta rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Materials/TransparentMat.mat.meta diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test.meta b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Prefabs.meta similarity index 77% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test.meta rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Prefabs.meta index d6e9138..af051bd 100644 --- a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test.meta +++ b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Prefabs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 009dc4ba29f14b649beb8c3eaad89f15 +guid: 18b28d1150d229647ae76efe2bea95f8 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/PlayerPrefab.prefab b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Prefabs/PlayerPrefab.prefab similarity index 100% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/PlayerPrefab.prefab rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Prefabs/PlayerPrefab.prefab diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/PlayerPrefab.prefab.meta b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Prefabs/PlayerPrefab.prefab.meta similarity index 100% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/PlayerPrefab.prefab.meta rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Prefabs/PlayerPrefab.prefab.meta diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/TestNetworkedGameObject.prefab b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Prefabs/TestNetworkedGameObject.prefab similarity index 100% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/TestNetworkedGameObject.prefab rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Prefabs/TestNetworkedGameObject.prefab diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/TestNetworkedGameObject.prefab.meta b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Prefabs/TestNetworkedGameObject.prefab.meta similarity index 100% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/TestNetworkedGameObject.prefab.meta rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Prefabs/TestNetworkedGameObject.prefab.meta diff --git a/TestVelGameServer/Assets/test2.unity.meta b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scenes.meta similarity index 67% rename from TestVelGameServer/Assets/test2.unity.meta rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scenes.meta index aadeec9..6c58880 100644 --- a/TestVelGameServer/Assets/test2.unity.meta +++ b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scenes.meta @@ -1,5 +1,6 @@ fileFormatVersion: 2 -guid: dda4edde45d871c4c9cc53849f3b62c7 +guid: f8bb9027566930042942da486c1e29e0 +folderAsset: yes DefaultImporter: externalObjects: {} userData: diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test.unity b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scenes/Demo All.unity similarity index 99% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test.unity rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scenes/Demo All.unity index da36a24..a816e45 100644 --- a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test.unity +++ b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scenes/Demo All.unity @@ -633,8 +633,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a7db5bc792cd471dbd8039664359eee, type: 3} m_Name: m_EditorClassIdentifier: - autoConnect: 1 - autoRejoin: 0 userInput: {fileID: 626742069} sendInput: {fileID: 0} roomInput: {fileID: 711524768} @@ -2524,6 +2522,9 @@ MonoBehaviour: port: 5000 udpConnected: 0 userid: -1 + debugMessages: 1 + autoLogin: 1 + onlyConnectToSameVersion: 1 connected: 0 prefabs: - {fileID: 9102273340480352682, guid: d4158ab9c4a204cdbba28d3273fc1fb3, type: 3} diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test.unity.meta b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scenes/Demo All.unity.meta similarity index 100% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test.unity.meta rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scenes/Demo All.unity.meta diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test_binary.unity b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scenes/Simple Connection Example.unity similarity index 59% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test_binary.unity rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scenes/Simple Connection Example.unity index 13b93be..0e75daa 100644 --- a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test_binary.unity +++ b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scenes/Simple Connection Example.unity @@ -123,7 +123,7 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &516411417 +--- !u!1 &561771045 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -131,104 +131,54 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 516411421} - - component: {fileID: 516411420} - - component: {fileID: 516411419} - - component: {fileID: 516411418} + - component: {fileID: 561771047} + - component: {fileID: 561771046} m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera + m_Name: VelNet Manager + m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &516411418 +--- !u!114 &561771046 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 516411417} + m_GameObject: {fileID: 561771045} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 233344de094f11341bdb834d564708dc, type: 3} m_Name: m_EditorClassIdentifier: - host: 127.0.0.1 - port: 80 + host: vn.ugavel.com + port: 5000 udpConnected: 0 userid: -1 - room: + debugMessages: 1 + autoLogin: 1 + onlyConnectToSameVersion: 0 connected: 0 prefabs: [] sceneObjects: [] deletedSceneObjects: [] ---- !u!81 &516411419 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 516411417} - m_Enabled: 1 ---- !u!20 &516411420 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 516411417} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - 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: 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: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &516411421 +--- !u!4 &561771047 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 516411417} + m_GameObject: {fileID: 561771045} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 0 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &756322628 +--- !u!1 &951053497 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -236,8 +186,8 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 756322630} - - component: {fileID: 756322629} + - component: {fileID: 951053499} + - component: {fileID: 951053498} m_Layer: 0 m_Name: Directional Light m_TagString: Untagged @@ -245,13 +195,13 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!108 &756322629 +--- !u!108 &951053498 Light: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 756322628} + m_GameObject: {fileID: 951053497} m_Enabled: 1 serializedVersion: 10 m_Type: 1 @@ -307,17 +257,238 @@ Light: m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 ---- !u!4 &756322630 +--- !u!4 &951053499 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 756322628} + m_GameObject: {fileID: 951053497} m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &958953873 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 958953877} + - component: {fileID: 958953876} + - component: {fileID: 958953875} + - component: {fileID: 958953874} + - component: {fileID: 958953879} + - component: {fileID: 958953878} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &958953874 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958953873} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &958953875 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958953873} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + 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_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &958953876 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958953873} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &958953877 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958953873} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &958953878 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958953873} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3f1f9b0bbd93a484a987c51f1107ebe5, type: 3} + m_Name: + m_EditorClassIdentifier: + networkObject: {fileID: 958953879} + serializationRateHz: 30 + hybridOnChangeCompression: 1 + useLocalTransform: 0 + teleportDistance: 0 + teleportAngle: 0 +--- !u!114 &958953879 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958953873} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5515094c5c544b6b8ed7fd51a86548d4, type: 3} + m_Name: + m_EditorClassIdentifier: + ownershipLocked: 0 + networkId: + sceneNetworkId: 100 + prefabName: + isSceneObject: 1 + syncedComponents: + - {fileID: 958953878} +--- !u!1 &1615517332 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1615517335} + - component: {fileID: 1615517334} + - component: {fileID: 1615517333} + 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 &1615517333 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1615517332} + m_Enabled: 1 +--- !u!20 &1615517334 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1615517332} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + 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: 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: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1615517335 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1615517332} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/test_binary.unity.meta b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scenes/Simple Connection Example.unity.meta similarity index 74% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/test_binary.unity.meta rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scenes/Simple Connection Example.unity.meta index 276a764..601fe08 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/test_binary.unity.meta +++ b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scenes/Simple Connection Example.unity.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2e6e0ddeb76e51b46afc0f0a43386ff2 +guid: 3e0da379b7e26cf4384f5cdff10f4fda DefaultImporter: externalObjects: {} userData: diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts.meta b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts.meta new file mode 100644 index 0000000..f2cbcac --- /dev/null +++ b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cd6dd1d4e81bce64faaf29eedf9d2a63 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/CustomMessageTest.cs b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/CustomMessageTest.cs new file mode 100644 index 0000000..789e70d --- /dev/null +++ b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/CustomMessageTest.cs @@ -0,0 +1,22 @@ +using UnityEngine; +using VelNet; + +public class CustomMessageTest : MonoBehaviour +{ + private void Start() + { + VelNetManager.OnJoinedRoom += _ => + { + byte[] testPacket = { 244 }; + VelNetManager.SendCustomMessage(testPacket, true, true, false); + }; + + VelNetManager.CustomMessageReceived += (senderId, dataWithCategory) => + { + if (dataWithCategory[0] == 244) + { + Debug.Log($"Received test packet from {senderId}"); + } + }; + } +} \ No newline at end of file diff --git a/TestVelGameServer/Assets/test.cs.meta b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/CustomMessageTest.cs.meta similarity index 100% rename from TestVelGameServer/Assets/test.cs.meta rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/CustomMessageTest.cs.meta diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/MouseDragger.cs b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/MouseDragger.cs similarity index 100% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/MouseDragger.cs rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/MouseDragger.cs diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/MouseDragger.cs.meta b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/MouseDragger.cs.meta similarity index 100% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/MouseDragger.cs.meta rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/MouseDragger.cs.meta diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/NetworkGUI.cs b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/NetworkGUI.cs similarity index 66% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/NetworkGUI.cs rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/NetworkGUI.cs index 7cc8b6d..f938720 100644 --- a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/NetworkGUI.cs +++ b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/NetworkGUI.cs @@ -8,9 +8,6 @@ namespace VelNet { public class NetworkGUI : MonoBehaviour { - public bool autoConnect = true; - public bool autoRejoin = true; - public InputField userInput; public InputField sendInput; public InputField roomInput; @@ -40,7 +37,7 @@ namespace VelNet { if (VelNetManager.IsConnected) { - VelNetManager.GetRoomData("0"); + VelNetManager.GetRoomData(VelNetManager.Room); } } @@ -62,44 +59,6 @@ namespace VelNet { comms = FindObjectOfType(); microphones.AddOptions(new List(Microphone.devices)); - - if (autoConnect) - { - AutoJoin(); - } - } - - private void AutoJoin() - { - VelNetManager.OnConnectedToServer += Login; - - void Login() - { - if (!autoRejoin) - { - VelNetManager.OnConnectedToServer -= Login; - } - - HandleLogin(); - VelNetManager.OnLoggedIn += JoinRoom; - - void JoinRoom() - { - HandleJoin(); - VelNetManager.OnLoggedIn -= JoinRoom; - } - } - } - - private void Update() - { - if (autoRejoin) - { - if (!VelNetManager.IsConnected) - { - AutoJoin(); - } - } } public void handleMicrophoneSelection() diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/NetworkGUI.cs.meta b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/NetworkGUI.cs.meta similarity index 100% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/NetworkGUI.cs.meta rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/NetworkGUI.cs.meta diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/PlayerController.cs b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/PlayerController.cs similarity index 100% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/PlayerController.cs rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/PlayerController.cs diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/PlayerController.cs.meta b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/PlayerController.cs.meta similarity index 100% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/PlayerController.cs.meta rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/PlayerController.cs.meta diff --git a/TestVelGameServer/Assets/RPCTest.cs b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/RPCTest.cs similarity index 83% rename from TestVelGameServer/Assets/RPCTest.cs rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/RPCTest.cs index 8682283..ca3de9a 100644 --- a/TestVelGameServer/Assets/RPCTest.cs +++ b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/RPCTest.cs @@ -16,11 +16,11 @@ public class RPCTest : NetworkComponent private void TestRPC() { - Debug.LogError("RPC RECEIVED!"); + Debug.Log("RPC RECEIVED!"); } public override void ReceiveBytes(byte[] message) { - Debug.LogError("WOW. BYTES"); + Debug.Log("WOW. BYTES"); } } \ No newline at end of file diff --git a/TestVelGameServer/Assets/RPCTest.cs.meta b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/RPCTest.cs.meta similarity index 100% rename from TestVelGameServer/Assets/RPCTest.cs.meta rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/RPCTest.cs.meta diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/SyncedTextbox.cs b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/SyncedTextbox.cs similarity index 100% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/SyncedTextbox.cs rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/SyncedTextbox.cs diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/SyncedTextbox.cs.meta b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/SyncedTextbox.cs.meta similarity index 100% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/SyncedTextbox.cs.meta rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/SyncedTextbox.cs.meta diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/VelNetMan.cs b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/VelNetMan.cs similarity index 100% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/VelNetMan.cs rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/VelNetMan.cs diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/VelNetMan.cs.meta b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/VelNetMan.cs.meta similarity index 100% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/VelNetMan.cs.meta rename to TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/Scripts/VelNetMan.cs.meta diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test/LightingData.asset b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test/LightingData.asset deleted file mode 100644 index 38f5004fcd1aaed792fcc49c0841024cf07eb9b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18168 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 X+ut{PtKCGLFnvkiKrxyz=BfV!OflI4 diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test/LightingData.asset.meta b/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test/LightingData.asset.meta deleted file mode 100644 index 59c9c51..0000000 --- a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test/LightingData.asset.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: d1b34f106c04378428823df374b0e07c -NativeFormatImporter: - externalObjects: {} - mainObjectFileID: 112000000 - userData: - assetBundleName: - assetBundleVariant: diff --git a/TestVelGameServer/Assets/test.cs b/TestVelGameServer/Assets/test.cs deleted file mode 100644 index 2033b33..0000000 --- a/TestVelGameServer/Assets/test.cs +++ /dev/null @@ -1,34 +0,0 @@ -using UnityEngine; -using VelNet; - -public class test : MonoBehaviour -{ - // Start is called before the first frame update - private void Start() - { - VelNetManager.OnJoinedRoom += roomName => - { - Debug.Log("VelNet room joined!!!!!: " + roomName); - //VelNetManager.GetRoomData(roomName); - byte[] testpacekt = new[] { (byte)244 }; - VelNetManager.SendCustomMessage(testpacekt, true, true, false); - }; - - VelNetManager.CustomMessageReceived += (senderId, dataWithCategory) => - { - //customPacketReceived(senderId, dataWithCategory); - if (dataWithCategory[0] == (byte)244) - { - Debug.Log("received test packet"); - return; - } - - ; - }; - } - - // Update is called once per frame - void Update() - { - } -} \ No newline at end of file diff --git a/TestVelGameServer/Assets/test2.unity b/TestVelGameServer/Assets/test2.unity deleted file mode 100644 index 9392990..0000000 --- a/TestVelGameServer/Assets/test2.unity +++ /dev/null @@ -1,191 +0,0 @@ -%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.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.37311953, g: 0.38074014, b: 0.3587274, a: 1} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 12 - 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: 12 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_ExtractAmbientOcclusion: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_FinalGather: 0 - m_FinalGatherFiltering: 1 - m_FinalGatherRayCount: 256 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 1 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 512 - m_PVRBounces: 2 - m_PVREnvironmentSampleCount: 256 - m_PVREnvironmentReferencePointCount: 2048 - m_PVRFilteringMode: 1 - m_PVRDenoiserTypeDirect: 1 - m_PVRDenoiserTypeIndirect: 1 - m_PVRDenoiserTypeAO: 1 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVREnvironmentMIS: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ExportTrainingData: 0 - m_TrainingDataDestination: TrainingData - m_LightProbeSampleCountMultiplier: 4 - m_LightingDataAsset: {fileID: 0} - m_LightingSettings: {fileID: 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 - maxJobWorkers: 0 - preserveTilesOutsideBounds: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &1148318672 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1148318674} - - component: {fileID: 1148318673} - - component: {fileID: 1148318675} - m_Layer: 0 - m_Name: GameObject - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1148318673 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1148318672} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 233344de094f11341bdb834d564708dc, type: 3} - m_Name: - m_EditorClassIdentifier: - host: velnet-lts.ugavel.com - port: 5000 - udpConnected: 0 - userid: -1 - connected: 0 - prefabs: - - {fileID: 9102273340480352682, guid: d4158ab9c4a204cdbba28d3273fc1fb3, type: 3} - - {fileID: 3951900052977689805, guid: 6e4a023f70e01405e8b249a4488fe319, type: 3} - sceneObjects: [] - deletedSceneObjects: [] ---- !u!4 &1148318674 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1148318672} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 297.37976, y: 241.59624, z: -3.2564697} - 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!114 &1148318675 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1148318672} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 5ea1fe0eb58e4184bbb2edcc99c51119, type: 3} - m_Name: - m_EditorClassIdentifier: diff --git a/TestVelGameServer/Packages/VelNetUnity/Runtime/NetworkObject.cs b/TestVelGameServer/Packages/VelNetUnity/Runtime/NetworkObject.cs index dfe1248..b784435 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Runtime/NetworkObject.cs +++ b/TestVelGameServer/Packages/VelNetUnity/Runtime/NetworkObject.cs @@ -35,6 +35,7 @@ namespace VelNet /// /// This may be empty if it's not a prefab (scene object) /// + [Tooltip("For spawnable prefab objects")] public string prefabName; public bool isSceneObject; diff --git a/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/SyncRigidbody.cs b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/SyncRigidbody.cs index 43d849c..5937ff4 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/SyncRigidbody.cs +++ b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/SyncRigidbody.cs @@ -139,11 +139,5 @@ namespace VelNet ); } } - - [VelNetRPC] - private void Test() - { - - } } } \ No newline at end of file diff --git a/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/VelNetLogger.cs b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/VelNetLogger.cs new file mode 100644 index 0000000..ed0eb61 --- /dev/null +++ b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/VelNetLogger.cs @@ -0,0 +1,20 @@ +using UnityEngine; + +namespace VelNet +{ + public static class VelNetLogger + { + public static void Info(string message, Object context = null) + { + if (VelNetManager.instance != null && VelNetManager.instance.debugMessages) + { + Debug.Log($"[VelNet] {message}", context); + } + } + + public static void Error(string message, Object context = null) + { + Debug.LogError($"[VelNet] {message}", context); + } + } +} \ No newline at end of file diff --git a/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/VelNetLogger.cs.meta b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/VelNetLogger.cs.meta new file mode 100644 index 0000000..323d2e6 --- /dev/null +++ b/TestVelGameServer/Packages/VelNetUnity/Runtime/Util/VelNetLogger.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 38bfd5f9fb924b7bb82a7a5e4fc09c1c +timeCreated: 1658256074 \ No newline at end of file diff --git a/TestVelGameServer/Packages/VelNetUnity/Runtime/VelNetManager.cs b/TestVelGameServer/Packages/VelNetUnity/Runtime/VelNetManager.cs index c60b674..029db01 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Runtime/VelNetManager.cs +++ b/TestVelGameServer/Packages/VelNetUnity/Runtime/VelNetManager.cs @@ -11,12 +11,11 @@ using System.IO; namespace VelNet { - /// Used to flag methods as remote-callable. public class VelNetRPC : Attribute { } - + [AddComponentMenu("VelNet/VelNet Manager")] public class VelNetManager : MonoBehaviour { @@ -70,6 +69,15 @@ namespace VelNet private Thread clientReceiveThreadUDP; public int userid = -1; + [Tooltip("Sends debug messages about connection and join events")] + public bool debugMessages; + + [Tooltip("Automatically logs in with app name and hash of device id after connecting")] + public bool autoLogin = true; + + [Tooltip("Uses the version number in the login to prevent crosstalk between different app versions")] + public bool onlyConnectToSameVersion; + public readonly Dictionary players = new Dictionary(); #region Callbacks @@ -88,8 +96,9 @@ namespace VelNet /// /// Somebody else just joined our room + /// bool is true when this is a join message for someone that was already in the room when we joined it /// - public static Action OnPlayerJoined; + public static Action OnPlayerJoined; /// /// Somebody else just left our room @@ -177,6 +186,11 @@ namespace VelNet { public string room; public readonly List<(int, string)> members = new List<(int, string)>(); + + public override string ToString() + { + return room + "\n" + string.Join("\n", members.Select(m => $"{m.Item1}\t{m.Item2}")); + } } public class JoinMessage : Message @@ -198,7 +212,7 @@ namespace VelNet public class YouJoinedMessage : Message { - public List ids; + public List playerIds; public string room; } @@ -217,27 +231,35 @@ namespace VelNet { } - private int maxUnreadMessages = 1000; - public readonly List receivedMessages = new List(); + private const int maxUnreadMessages = 1000; + private readonly List receivedMessages = new List(); private void Awake() { - if (instance != null) - { - Debug.LogError("Multiple NetworkManagers detected! Bad!", this); - } - - instance = this; - - SceneManager.sceneLoaded += (scene, mode) => + SceneManager.sceneLoaded += (_, _) => { // add all local network objects sceneObjects = FindObjectsOfType().Where(o => o.isSceneObject).ToArray(); }; + } + private void OnEnable() + { + if (instance != null) + { + VelNetLogger.Error("Multiple NetworkManagers detected! Bad!", this); + } + + instance = this; ConnectToServer(); } + private void OnDisable() + { + DisconnectFromServer(); + instance = null; + } + private void AddMessage(Message m) { bool added = false; @@ -257,7 +279,7 @@ namespace VelNet } catch (Exception e) { - Debug.LogError(e); + VelNetLogger.Error(e.ToString()); } } @@ -272,6 +294,7 @@ namespace VelNet { case ConnectedMessage msg: { + VelNetLogger.Info("Connected to server."); try { OnConnectedToServer?.Invoke(); @@ -279,7 +302,15 @@ namespace VelNet // prevent errors in subscribers from breaking our code catch (Exception e) { - Debug.LogError(e); + VelNetLogger.Error(e.ToString()); + } + + if (autoLogin) + { + Login( + onlyConnectToSameVersion ? $"{Application.productName}_{Application.version}" : $"{Application.productName}", + Hash128.Compute(SystemInfo.deviceUniqueIdentifier).ToString() + ); } break; @@ -288,12 +319,11 @@ namespace VelNet { if (userid == lm.userId) { - Debug.Log("Received duplicate login message " + userid); - return; + VelNetLogger.Error("Received duplicate login message " + userid); } userid = lm.userId; - Debug.Log("Joined server " + userid); + VelNetLogger.Info("Logged in: " + userid); try { @@ -302,7 +332,7 @@ namespace VelNet // prevent errors in subscribers from breaking our code catch (Exception e) { - Debug.LogError(e); + VelNetLogger.Error(e.ToString(), this); } //start the udp thread @@ -314,6 +344,7 @@ namespace VelNet } case RoomsMessage rm: { + VelNetLogger.Info($"Received rooms:\n{rm}"); try { RoomsReceived?.Invoke(rm); @@ -321,13 +352,14 @@ namespace VelNet // prevent errors in subscribers from breaking our code catch (Exception e) { - Debug.LogError(e); + VelNetLogger.Error(e.ToString(), this); } break; } case RoomDataMessage rdm: { + VelNetLogger.Info($"Received room data:\n{rdm}"); try { RoomDataReceived?.Invoke(rdm); @@ -335,19 +367,21 @@ namespace VelNet // prevent errors in subscribers from breaking our code catch (Exception e) { - Debug.LogError(e); + VelNetLogger.Error(e.ToString(), this); } break; } case YouJoinedMessage jm: { + VelNetLogger.Info($"Joined Room: {jm.room} \t ({jm.playerIds.Count} players)"); + // we clear the list, but will recreate as we get messages from people in our room players.Clear(); masterPlayer = null; - foreach (int playerId in jm.ids) + foreach (int playerId in jm.playerIds) { VelNetPlayer player = new VelNetPlayer { @@ -365,7 +399,7 @@ namespace VelNet // prevent errors in subscribers from breaking our code catch (Exception e) { - Debug.LogError(e); + VelNetLogger.Error(e.ToString(), this); } foreach (KeyValuePair kvp in players) @@ -374,12 +408,12 @@ namespace VelNet { try { - OnPlayerJoined?.Invoke(kvp.Value); + OnPlayerJoined?.Invoke(kvp.Value, true); } // prevent errors in subscribers from breaking our code catch (Exception e) { - Debug.LogError(e); + VelNetLogger.Error(e.ToString(), this); } } } @@ -394,7 +428,10 @@ namespace VelNet } case PlayerLeftMessage lm: { + VelNetLogger.Info($"Player left: {lm.userId}"); + VelNetPlayer me = players[userid]; + // we got a left message, kill it // change ownership of all objects to master List deleteObjects = new List(); @@ -433,13 +470,15 @@ namespace VelNet // prevent errors in subscribers from breaking our code catch (Exception e) { - Debug.LogError(e); + VelNetLogger.Error(e.ToString(), this); } break; } case JoinMessage jm: { + VelNetLogger.Info($"Player joined: {jm.userId}"); + // we got a join message, create it VelNetPlayer player = new VelNetPlayer { @@ -450,12 +489,12 @@ namespace VelNet players.Add(jm.userId, player); try { - OnPlayerJoined?.Invoke(player); + OnPlayerJoined?.Invoke(player, false); } // prevent errors in subscribers from breaking our code catch (Exception e) { - Debug.LogError(e); + VelNetLogger.Error(e.ToString(), this); } @@ -469,13 +508,15 @@ namespace VelNet } else { - Debug.LogError("Received message from player that doesn't exist "); + VelNetLogger.Error("Received message from player that doesn't exist "); } break; } case ChangeMasterMessage cm: { + VelNetLogger.Info($"Master client changed: {cm.masterId}"); + if (masterPlayer == null) { if (players.ContainsKey(cm.masterId)) @@ -485,7 +526,7 @@ namespace VelNet else { masterPlayer = players.Aggregate((p1, p2) => p1.Value.userid.CompareTo(p2.Value.userid) > 0 ? p1 : p2).Value; - Debug.LogError("Got an invalid master client id from the server. Using fallback."); + VelNetLogger.Error("Got an invalid master client id from the server. Using fallback."); } // no master player yet, add the scene objects @@ -494,23 +535,24 @@ namespace VelNet { if (sceneObjects[i].sceneNetworkId == 0) { - Debug.LogError("Scene Network ID is 0. Make sure to assign one first.", sceneObjects[i]); + VelNetLogger.Error("Scene Network ID is 0. Make sure to assign one first.", sceneObjects[i]); } sceneObjects[i].networkId = -1 + "-" + sceneObjects[i].sceneNetworkId; sceneObjects[i].owner = masterPlayer; sceneObjects[i].isSceneObject = true; // needed for special handling when deleted - try { + try + { sceneObjects[i].OwnershipChanged?.Invoke(masterPlayer); } catch (Exception e) { - Debug.LogError("Error in event handling.\n" + e); + VelNetLogger.Error("Error in event handling.\n" + e); } if (objects.ContainsKey(sceneObjects[i].networkId)) { - Debug.LogError($"Duplicate NetworkID: {sceneObjects[i].networkId} {sceneObjects[i].name} {objects[sceneObjects[i].networkId]}"); + VelNetLogger.Error($"Duplicate NetworkID: {sceneObjects[i].networkId} {sceneObjects[i].name} {objects[sceneObjects[i].networkId]}"); } else { @@ -541,12 +583,12 @@ namespace VelNet receivedMessages.Clear(); } - + // reconnection if (Time.timeAsDouble - lastConnectionCheck > 2) { if (!IsConnected && wasConnected) { - Debug.Log("Reconnecting..."); + VelNetLogger.Info("Reconnecting..."); ConnectToServer(); } @@ -556,7 +598,7 @@ namespace VelNet private void LeaveRoom() { - Debug.Log("Leaving Room"); + VelNetLogger.Info("Leaving Room"); string oldRoom = LocalPlayer?.room; // delete all NetworkObjects that aren't scene objects or are null now objects @@ -582,7 +624,7 @@ namespace VelNet // prevent errors in subscribers from breaking our code catch (Exception e) { - Debug.LogError(e); + VelNetLogger.Error(e.ToString(), this); } foreach (NetworkObject s in sceneObjects) @@ -604,7 +646,7 @@ namespace VelNet /// /// Setup socket connection. /// - public static void ConnectToServer() + private static void ConnectToServer() { try { @@ -613,16 +655,13 @@ namespace VelNet } catch (Exception e) { - Debug.Log("On client connect exception " + e); + VelNetLogger.Error("On client connect exception " + e); } } private void DisconnectFromServer() { - Debug.Log("Disconnecting from server"); - - - Debug.Log("Leaving Room"); + VelNetLogger.Info("Disconnecting from server..."); string oldRoom = LocalPlayer?.room; // delete all NetworkObjects that aren't scene objects or are null now objects @@ -788,10 +827,10 @@ namespace VelNet { YouJoinedMessage m = new YouJoinedMessage(); int N = GetIntFromBytes(ReadExact(stream, 4)); - m.ids = new List(); + m.playerIds = new List(); for (int i = 0; i < N; i++) { - m.ids.Add(GetIntFromBytes(ReadExact(stream, 4))); + m.playerIds.Add(GetIntFromBytes(ReadExact(stream, 4))); } N = stream.ReadByte(); @@ -822,11 +861,17 @@ namespace VelNet } } } - - - catch (Exception socketException) + catch (ThreadAbortException ex) { - Debug.Log("Socket exception: " + socketException); + // pass + } + catch (SocketException socketException) + { + VelNetLogger.Error("Socket exception: " + socketException); + } + catch (Exception ex) + { + VelNetLogger.Error(ex.ToString()); } connected = false; @@ -857,7 +902,7 @@ namespace VelNet if (udpSocket.Available == 0) { Thread.Sleep(100); - Debug.Log("Waiting for UDP response"); + VelNetLogger.Info("Waiting for UDP response"); } else { @@ -873,7 +918,7 @@ namespace VelNet switch ((MessageReceivedType)buffer[0]) { case MessageReceivedType.LOGGED_IN: - Debug.Log("UDP connected"); + VelNetLogger.Info("UDP connected"); break; case MessageReceivedType.DATA_MESSAGE: { @@ -891,9 +936,17 @@ namespace VelNet } } } - catch (Exception socketException) + catch (ThreadAbortException ex) { - Debug.Log("Socket exception: " + socketException); + // pass + } + catch (SocketException socketException) + { + VelNetLogger.Error("Socket exception: " + socketException); + } + catch (Exception ex) + { + VelNetLogger.Error(ex.ToString()); } } @@ -914,10 +967,10 @@ namespace VelNet /// True if the message successfully sent. False if it failed and we should quit private static bool SendTcpMessage(byte[] message) { - // Debug.Log("Sent: " + clientMessage); + // Logging.Info("Sent: " + clientMessage); if (instance.socketConnection == null) { - Debug.LogError("Tried to send message while socket connection was still null.", instance); + VelNetLogger.Error("Tried to send message while socket connection was still null.", instance); return false; } @@ -927,7 +980,7 @@ namespace VelNet if (!instance.socketConnection.Connected) { instance.DisconnectFromServer(); - Debug.LogError("Disconnected from server. Most likely due to timeout."); + VelNetLogger.Error("Disconnected from server. Most likely due to timeout."); return false; } @@ -941,12 +994,12 @@ namespace VelNet catch (IOException ioException) { instance.DisconnectFromServer(); - Debug.LogError("Disconnected from server. Most likely due to timeout.\n" + ioException); + VelNetLogger.Error("Disconnected from server. Most likely due to timeout.\n" + ioException); return false; } catch (SocketException socketException) { - Debug.Log("Socket exception: " + socketException); + VelNetLogger.Error("Socket exception: " + socketException); } return true; @@ -996,6 +1049,12 @@ namespace VelNet public static void GetRoomData(string roomName) { + if (string.IsNullOrEmpty(roomName)) + { + VelNetLogger.Error("Room name is null. Can't get info for this room."); + return; + } + MemoryStream stream = new MemoryStream(); BinaryWriter writer = new BinaryWriter(stream); @@ -1147,14 +1206,14 @@ namespace VelNet NetworkObject prefab = instance.prefabs.Find(p => p.name == prefabName); if (prefab == null) { - Debug.LogError("Couldn't find a prefab with that name: " + prefabName); + VelNetLogger.Error("Couldn't find a prefab with that name: " + prefabName); return null; } string networkId = localPlayer.userid + "-" + localPlayer.lastObjectId++; if (instance.objects.ContainsKey(networkId)) { - Debug.LogError("Can't instantiate object. Obj with that network ID was already instantiated.", instance.objects[networkId]); + VelNetLogger.Error("Can't instantiate object. Obj with that network ID was already instantiated.", instance.objects[networkId]); return null; } @@ -1168,7 +1227,7 @@ namespace VelNet } catch (Exception e) { - Debug.LogError("Error in event handling.\n" + e); + VelNetLogger.Error("Error in event handling.\n" + e); } instance.objects.Add(newObject.networkId, newObject); @@ -1199,8 +1258,9 @@ namespace VelNet } catch (Exception e) { - Debug.LogError("Error in event handling.\n" + e); + VelNetLogger.Error("Error in event handling.\n" + e); } + instance.objects.Add(newObject.networkId, newObject); } @@ -1218,7 +1278,7 @@ namespace VelNet if (obj == null) { instance.objects.Remove(networkId); - Debug.LogError("Object to delete was already null"); + VelNetLogger.Error("Object to delete was already null"); return; } @@ -1241,7 +1301,7 @@ namespace VelNet if (obj == null) { instance.objects.Remove(networkId); - Debug.LogError("Object to delete was already null"); + // VelNetLogger.Error("Object to delete was already null"); return; } @@ -1263,28 +1323,28 @@ namespace VelNet { if (!InRoom) { - Debug.LogError("Can't take ownership. Not in a room."); + VelNetLogger.Error("Can't take ownership. Not in a room."); return false; } - + // local player must exist if (LocalPlayer == null) { - Debug.LogError("Can't take ownership. No local player."); + VelNetLogger.Error("Can't take ownership. No local player."); return false; } // obj must exist if (!instance.objects.ContainsKey(networkId)) { - Debug.LogError("Can't take ownership. Object with that network id doesn't exist: " + networkId); + VelNetLogger.Error("Can't take ownership. Object with that network id doesn't exist: " + networkId); return false; } // if the ownership is locked, fail if (instance.objects[networkId].ownershipLocked) { - Debug.LogError("Can't take ownership. Ownership for this object is locked."); + VelNetLogger.Error("Can't take ownership. Ownership for this object is locked."); return false; } @@ -1296,7 +1356,7 @@ namespace VelNet } catch (Exception e) { - Debug.LogError("Error in event handling.\n" + e); + VelNetLogger.Error("Error in event handling.\n" + e); } // must be ordered, so that ownership transfers are not confused. diff --git a/TestVelGameServer/Packages/VelNetUnity/Runtime/VelNetPlayer.cs b/TestVelGameServer/Packages/VelNetUnity/Runtime/VelNetPlayer.cs index 5ee82c5..9898bdf 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Runtime/VelNetPlayer.cs +++ b/TestVelGameServer/Packages/VelNetUnity/Runtime/VelNetPlayer.cs @@ -1,7 +1,6 @@ using System.Collections.Generic; using System; using System.IO; -using System.Text; using UnityEngine; namespace VelNet @@ -33,7 +32,7 @@ namespace VelNet VelNetManager.OnPlayerJoined += HandlePlayerJoined; } - public void HandlePlayerJoined(VelNetPlayer player) + public void HandlePlayerJoined(VelNetPlayer player, bool alreadyInRoom) { //if this is the local player, go through the objects that I own, and send instantiation messages for the ones that have prefab names if (isLocal) diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example.meta b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example.meta new file mode 100644 index 0000000..927dd88 --- /dev/null +++ b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f4838fd3ac54efa4c88253bb977c20c1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Materials.meta b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Materials.meta new file mode 100644 index 0000000..38f5869 --- /dev/null +++ b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Materials.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: dc0ae145afb98164493d097e29dfb3bd +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/TransparentMat.mat b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Materials/TransparentMat.mat similarity index 100% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/TransparentMat.mat rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Materials/TransparentMat.mat diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/TransparentMat.mat.meta b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Materials/TransparentMat.mat.meta similarity index 100% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/TransparentMat.mat.meta rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Materials/TransparentMat.mat.meta diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Prefabs.meta b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Prefabs.meta new file mode 100644 index 0000000..af051bd --- /dev/null +++ b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Prefabs.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 18b28d1150d229647ae76efe2bea95f8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/PlayerPrefab.prefab b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Prefabs/PlayerPrefab.prefab similarity index 98% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/PlayerPrefab.prefab rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Prefabs/PlayerPrefab.prefab index 94ec1b1..02d1047 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/PlayerPrefab.prefab +++ b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Prefabs/PlayerPrefab.prefab @@ -28,6 +28,7 @@ Transform: m_LocalRotation: {x: -0.70710635, y: -0, z: -0, w: 0.7071073} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 8, y: 0.1, z: 8} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 3076416102083120807} m_RootOrder: 0 @@ -51,6 +52,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -114,6 +116,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.5, y: 0.5, z: 0.5} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 6602982999811082154} m_Father: {fileID: 0} @@ -138,6 +141,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/PlayerPrefab.prefab.meta b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Prefabs/PlayerPrefab.prefab.meta similarity index 100% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/PlayerPrefab.prefab.meta rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Prefabs/PlayerPrefab.prefab.meta diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/TestNetworkedGameObject.prefab b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Prefabs/TestNetworkedGameObject.prefab similarity index 100% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/TestNetworkedGameObject.prefab rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Prefabs/TestNetworkedGameObject.prefab diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/TestNetworkedGameObject.prefab.meta b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Prefabs/TestNetworkedGameObject.prefab.meta similarity index 100% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/TestNetworkedGameObject.prefab.meta rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Prefabs/TestNetworkedGameObject.prefab.meta diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scenes.meta b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scenes.meta new file mode 100644 index 0000000..6c58880 --- /dev/null +++ b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scenes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f8bb9027566930042942da486c1e29e0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/test.unity b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scenes/Demo All.unity similarity index 96% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/test.unity rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scenes/Demo All.unity index d52b46e..a816e45 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/test.unity +++ b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scenes/Demo All.unity @@ -193,6 +193,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 626742070} m_RootOrder: 0 @@ -296,6 +297,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: - {fileID: 138032023} - {fileID: 1557879931} @@ -416,6 +418,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 117638565} m_RootOrder: 0 @@ -453,6 +456,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 711524767} m_RootOrder: 0 @@ -595,6 +599,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: - {fileID: 1894247853} - {fileID: 117638565} @@ -628,8 +633,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7a7db5bc792cd471dbd8039664359eee, type: 3} m_Name: m_EditorClassIdentifier: - autoConnect: 1 - autoRejoin: 1 userInput: {fileID: 626742069} sendInput: {fileID: 0} roomInput: {fileID: 711524768} @@ -664,6 +667,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 948755938} m_RootOrder: 0 @@ -777,6 +781,7 @@ Transform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 5 @@ -809,6 +814,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1992361063} m_RootOrder: 0 @@ -889,6 +895,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: - {fileID: 1081889596} m_Father: {fileID: 244561620} @@ -1021,6 +1028,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1047954372} m_RootOrder: 1 @@ -1138,7 +1146,10 @@ MonoBehaviour: m_HideMobileInput: 0 m_CharacterValidation: 0 m_CharacterLimit: 0 - m_OnEndEdit: + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnDidEndEdit: m_PersistentCalls: m_Calls: [] m_OnValueChanged: @@ -1162,6 +1173,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: - {fileID: 2034439} - {fileID: 1560686264} @@ -1300,6 +1312,7 @@ Transform: m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 4 @@ -1333,6 +1346,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: - {fileID: 162005664} - {fileID: 1484033256} @@ -1395,7 +1409,10 @@ MonoBehaviour: m_HideMobileInput: 0 m_CharacterValidation: 0 m_CharacterLimit: 0 - m_OnEndEdit: + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnDidEndEdit: m_PersistentCalls: m_Calls: [] m_OnValueChanged: @@ -1517,6 +1534,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1047954372} m_RootOrder: 2 @@ -1555,6 +1573,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: - {fileID: 1401860307} m_Father: {fileID: 244561620} @@ -1753,6 +1772,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1, z: -20} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 3 @@ -1786,6 +1806,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: - {fileID: 1055818112} m_Father: {fileID: 927188573} @@ -1876,6 +1897,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: - {fileID: 912887456} - {fileID: 1154194182} @@ -1986,6 +2008,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: - {fileID: 359309141} - {fileID: 1840952814} @@ -2084,7 +2107,10 @@ MonoBehaviour: m_HideMobileInput: 0 m_CharacterValidation: 0 m_CharacterLimit: 0 - m_OnEndEdit: + m_OnSubmit: + m_PersistentCalls: + m_Calls: [] + m_OnDidEndEdit: m_PersistentCalls: m_Calls: [] m_OnValueChanged: @@ -2164,6 +2190,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 244561620} m_RootOrder: 10 @@ -2242,6 +2269,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: - {fileID: 2144436500} - {fileID: 615558652} @@ -2328,6 +2356,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: - {fileID: 1047954372} m_Father: {fileID: 912887456} @@ -2366,6 +2395,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 545137760} m_RootOrder: 0 @@ -2428,6 +2458,7 @@ GameObject: - component: {fileID: 1099803615} - component: {fileID: 1099803616} - component: {fileID: 1099803613} + - component: {fileID: 1099803614} m_Layer: 0 m_Name: NetworkManager m_TagString: Untagged @@ -2448,6 +2479,18 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: playerPrefab: {fileID: 6139051692386484099, guid: d4158ab9c4a204cdbba28d3273fc1fb3, type: 3} +--- !u!114 &1099803614 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1099803612} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5ea1fe0eb58e4184bbb2edcc99c51119, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!4 &1099803615 Transform: m_ObjectHideFlags: 0 @@ -2458,6 +2501,7 @@ Transform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 @@ -2474,10 +2518,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 233344de094f11341bdb834d564708dc, type: 3} m_Name: m_EditorClassIdentifier: - host: velnet-lts.ugavel.com + host: vn.ugavel.com port: 5000 udpConnected: 0 userid: -1 + debugMessages: 1 + autoLogin: 1 + onlyConnectToSameVersion: 1 connected: 0 prefabs: - {fileID: 9102273340480352682, guid: d4158ab9c4a204cdbba28d3273fc1fb3, type: 3} @@ -2513,6 +2560,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: - {fileID: 1679565284} m_Father: {fileID: 927188573} @@ -2639,6 +2687,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: - {fileID: 1295274441} m_Father: {fileID: 244561620} @@ -2771,6 +2820,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1278634767} m_RootOrder: 0 @@ -2850,6 +2900,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 864104176} m_RootOrder: 0 @@ -2929,6 +2980,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1997780490} m_RootOrder: 0 @@ -3024,6 +3076,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 818.5, y: 223, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 @@ -3130,6 +3183,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 711524767} m_RootOrder: 1 @@ -3209,6 +3263,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 244561620} m_RootOrder: 11 @@ -3288,6 +3343,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 117638565} m_RootOrder: 1 @@ -3363,6 +3419,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 626742070} m_RootOrder: 1 @@ -3440,6 +3497,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: - {fileID: 2033163677} m_Father: {fileID: 1154194182} @@ -3479,6 +3537,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: - {fileID: 2118429759} m_Father: {fileID: 244561620} @@ -3611,6 +3670,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 948755938} m_RootOrder: 1 @@ -3690,6 +3750,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 244561620} m_RootOrder: 0 @@ -3770,6 +3831,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: - {fileID: 498776800} m_Father: {fileID: 948755938} @@ -3903,6 +3965,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: - {fileID: 1428857710} m_Father: {fileID: 244561620} @@ -4007,6 +4070,71 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1997780489} m_CullTransparentMesh: 1 +--- !u!1 &2021764943 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2021764946} + - component: {fileID: 2021764945} + - component: {fileID: 2021764944} + m_Layer: 0 + m_Name: TestRPC Object + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2021764944 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2021764943} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5515094c5c544b6b8ed7fd51a86548d4, type: 3} + m_Name: + m_EditorClassIdentifier: + ownershipLocked: 0 + networkId: + sceneNetworkId: 102 + prefabName: + isSceneObject: 1 + syncedComponents: + - {fileID: 2021764945} +--- !u!114 &2021764945 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2021764943} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2bcc94802a5742d4299e48c898e52dfa, type: 3} + m_Name: + m_EditorClassIdentifier: + networkObject: {fileID: 2021764944} +--- !u!4 &2021764946 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2021764943} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 2.9278836, y: 2.2367568, z: 0.06653424} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 7 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &2033163676 GameObject: m_ObjectHideFlags: 0 @@ -4035,6 +4163,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1679565284} m_RootOrder: 0 @@ -4110,6 +4239,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1760805525} m_RootOrder: 0 @@ -4189,6 +4319,7 @@ RectTransform: 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_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1047954372} m_RootOrder: 0 @@ -4251,6 +4382,10 @@ PrefabInstance: propertyPath: sceneNetworkId value: 100 objectReference: {fileID: 0} + - target: {fileID: 8565720275311462452, guid: 6e4a023f70e01405e8b249a4488fe319, type: 3} + propertyPath: m_Enabled + value: 1 + objectReference: {fileID: 0} - target: {fileID: 8565720275311462453, guid: 6e4a023f70e01405e8b249a4488fe319, type: 3} propertyPath: m_Name value: TestNetworkedGameObject diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/test.unity.meta b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scenes/Demo All.unity.meta similarity index 100% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/test.unity.meta rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scenes/Demo All.unity.meta diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/test_binary.unity b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scenes/Simple Connection Example.unity similarity index 59% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/test_binary.unity rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scenes/Simple Connection Example.unity index 13b93be..0e75daa 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/test_binary.unity +++ b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scenes/Simple Connection Example.unity @@ -123,7 +123,7 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &516411417 +--- !u!1 &561771045 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -131,104 +131,54 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 516411421} - - component: {fileID: 516411420} - - component: {fileID: 516411419} - - component: {fileID: 516411418} + - component: {fileID: 561771047} + - component: {fileID: 561771046} m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera + m_Name: VelNet Manager + m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &516411418 +--- !u!114 &561771046 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 516411417} + m_GameObject: {fileID: 561771045} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 233344de094f11341bdb834d564708dc, type: 3} m_Name: m_EditorClassIdentifier: - host: 127.0.0.1 - port: 80 + host: vn.ugavel.com + port: 5000 udpConnected: 0 userid: -1 - room: + debugMessages: 1 + autoLogin: 1 + onlyConnectToSameVersion: 0 connected: 0 prefabs: [] sceneObjects: [] deletedSceneObjects: [] ---- !u!81 &516411419 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 516411417} - m_Enabled: 1 ---- !u!20 &516411420 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 516411417} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - 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: 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: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &516411421 +--- !u!4 &561771047 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 516411417} + m_GameObject: {fileID: 561771045} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 0 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &756322628 +--- !u!1 &951053497 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -236,8 +186,8 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 756322630} - - component: {fileID: 756322629} + - component: {fileID: 951053499} + - component: {fileID: 951053498} m_Layer: 0 m_Name: Directional Light m_TagString: Untagged @@ -245,13 +195,13 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!108 &756322629 +--- !u!108 &951053498 Light: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 756322628} + m_GameObject: {fileID: 951053497} m_Enabled: 1 serializedVersion: 10 m_Type: 1 @@ -307,17 +257,238 @@ Light: m_UseViewFrustumForShadowCasterCull: 1 m_ShadowRadius: 0 m_ShadowAngle: 0 ---- !u!4 &756322630 +--- !u!4 &951053499 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 756322628} + m_GameObject: {fileID: 951053497} m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &958953873 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 958953877} + - component: {fileID: 958953876} + - component: {fileID: 958953875} + - component: {fileID: 958953874} + - component: {fileID: 958953879} + - component: {fileID: 958953878} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &958953874 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958953873} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &958953875 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958953873} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + 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_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &958953876 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958953873} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &958953877 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958953873} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &958953878 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958953873} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 3f1f9b0bbd93a484a987c51f1107ebe5, type: 3} + m_Name: + m_EditorClassIdentifier: + networkObject: {fileID: 958953879} + serializationRateHz: 30 + hybridOnChangeCompression: 1 + useLocalTransform: 0 + teleportDistance: 0 + teleportAngle: 0 +--- !u!114 &958953879 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 958953873} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5515094c5c544b6b8ed7fd51a86548d4, type: 3} + m_Name: + m_EditorClassIdentifier: + ownershipLocked: 0 + networkId: + sceneNetworkId: 100 + prefabName: + isSceneObject: 1 + syncedComponents: + - {fileID: 958953878} +--- !u!1 &1615517332 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1615517335} + - component: {fileID: 1615517334} + - component: {fileID: 1615517333} + 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 &1615517333 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1615517332} + m_Enabled: 1 +--- !u!20 &1615517334 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1615517332} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + 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: 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: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1615517335 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1615517332} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test_binary.unity.meta b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scenes/Simple Connection Example.unity.meta similarity index 74% rename from TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test_binary.unity.meta rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scenes/Simple Connection Example.unity.meta index 276a764..601fe08 100644 --- a/TestVelGameServer/Assets/Samples/VelNet/1.0.4/Example/test_binary.unity.meta +++ b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scenes/Simple Connection Example.unity.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2e6e0ddeb76e51b46afc0f0a43386ff2 +guid: 3e0da379b7e26cf4384f5cdff10f4fda DefaultImporter: externalObjects: {} userData: diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts.meta b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts.meta new file mode 100644 index 0000000..f2cbcac --- /dev/null +++ b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cd6dd1d4e81bce64faaf29eedf9d2a63 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/CustomMessageTest.cs b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/CustomMessageTest.cs new file mode 100644 index 0000000..789e70d --- /dev/null +++ b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/CustomMessageTest.cs @@ -0,0 +1,22 @@ +using UnityEngine; +using VelNet; + +public class CustomMessageTest : MonoBehaviour +{ + private void Start() + { + VelNetManager.OnJoinedRoom += _ => + { + byte[] testPacket = { 244 }; + VelNetManager.SendCustomMessage(testPacket, true, true, false); + }; + + VelNetManager.CustomMessageReceived += (senderId, dataWithCategory) => + { + if (dataWithCategory[0] == 244) + { + Debug.Log($"Received test packet from {senderId}"); + } + }; + } +} \ No newline at end of file diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/CustomMessageTest.cs.meta b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/CustomMessageTest.cs.meta new file mode 100644 index 0000000..354019c --- /dev/null +++ b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/CustomMessageTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5ea1fe0eb58e4184bbb2edcc99c51119 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/MouseDragger.cs b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/MouseDragger.cs similarity index 100% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/MouseDragger.cs rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/MouseDragger.cs diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/MouseDragger.cs.meta b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/MouseDragger.cs.meta similarity index 100% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/MouseDragger.cs.meta rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/MouseDragger.cs.meta diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/NetworkGUI.cs b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/NetworkGUI.cs similarity index 66% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/NetworkGUI.cs rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/NetworkGUI.cs index 7cc8b6d..f938720 100644 --- a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/NetworkGUI.cs +++ b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/NetworkGUI.cs @@ -8,9 +8,6 @@ namespace VelNet { public class NetworkGUI : MonoBehaviour { - public bool autoConnect = true; - public bool autoRejoin = true; - public InputField userInput; public InputField sendInput; public InputField roomInput; @@ -40,7 +37,7 @@ namespace VelNet { if (VelNetManager.IsConnected) { - VelNetManager.GetRoomData("0"); + VelNetManager.GetRoomData(VelNetManager.Room); } } @@ -62,44 +59,6 @@ namespace VelNet { comms = FindObjectOfType(); microphones.AddOptions(new List(Microphone.devices)); - - if (autoConnect) - { - AutoJoin(); - } - } - - private void AutoJoin() - { - VelNetManager.OnConnectedToServer += Login; - - void Login() - { - if (!autoRejoin) - { - VelNetManager.OnConnectedToServer -= Login; - } - - HandleLogin(); - VelNetManager.OnLoggedIn += JoinRoom; - - void JoinRoom() - { - HandleJoin(); - VelNetManager.OnLoggedIn -= JoinRoom; - } - } - } - - private void Update() - { - if (autoRejoin) - { - if (!VelNetManager.IsConnected) - { - AutoJoin(); - } - } } public void handleMicrophoneSelection() diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/NetworkGUI.cs.meta b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/NetworkGUI.cs.meta similarity index 100% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/NetworkGUI.cs.meta rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/NetworkGUI.cs.meta diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/PlayerController.cs b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/PlayerController.cs similarity index 100% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/PlayerController.cs rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/PlayerController.cs diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/PlayerController.cs.meta b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/PlayerController.cs.meta similarity index 100% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/PlayerController.cs.meta rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/PlayerController.cs.meta diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/RPCTest.cs b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/RPCTest.cs new file mode 100644 index 0000000..ca3de9a --- /dev/null +++ b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/RPCTest.cs @@ -0,0 +1,26 @@ +using System.Collections; +using System.Collections.Generic; +using System.IO; +using UnityEngine; +using VelNet; + +public class RPCTest : NetworkComponent +{ + private void Update() + { + if (Input.GetKeyDown(KeyCode.R)) + { + SendRPC(nameof(TestRPC), true); + } + } + + private void TestRPC() + { + Debug.Log("RPC RECEIVED!"); + } + + public override void ReceiveBytes(byte[] message) + { + Debug.Log("WOW. BYTES"); + } +} \ No newline at end of file diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/RPCTest.cs.meta b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/RPCTest.cs.meta new file mode 100644 index 0000000..6f48220 --- /dev/null +++ b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/RPCTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2bcc94802a5742d4299e48c898e52dfa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/SyncedTextbox.cs b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/SyncedTextbox.cs similarity index 100% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/SyncedTextbox.cs rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/SyncedTextbox.cs diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/SyncedTextbox.cs.meta b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/SyncedTextbox.cs.meta similarity index 100% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/SyncedTextbox.cs.meta rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/SyncedTextbox.cs.meta diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/VelNetMan.cs b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/VelNetMan.cs similarity index 100% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/VelNetMan.cs rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/VelNetMan.cs diff --git a/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/VelNetMan.cs.meta b/TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/VelNetMan.cs.meta similarity index 100% rename from TestVelGameServer/Packages/VelNetUnity/Samples~/Example/VelNetMan.cs.meta rename to TestVelGameServer/Packages/VelNetUnity/Samples~/Example/Scripts/VelNetMan.cs.meta diff --git a/TestVelGameServer/Packages/VelNetUnity/package.json b/TestVelGameServer/Packages/VelNetUnity/package.json index 5405c76..9898bec 100644 --- a/TestVelGameServer/Packages/VelNetUnity/package.json +++ b/TestVelGameServer/Packages/VelNetUnity/package.json @@ -1,7 +1,7 @@ { "name": "edu.uga.engr.vel.velnet", "displayName": "VelNet", - "version": "1.0.13", + "version": "1.1.0", "unity": "2019.1", "description": "A custom networking library for Unity.", "keywords": [ diff --git a/TestVelGameServer/Packages/packages-lock.json b/TestVelGameServer/Packages/packages-lock.json index 960f9b5..c6630af 100644 --- a/TestVelGameServer/Packages/packages-lock.json +++ b/TestVelGameServer/Packages/packages-lock.json @@ -129,7 +129,7 @@ "depth": 0, "source": "local", "dependencies": { - "edu.uga.engr.vel.velnet": "1.0.4" + "edu.uga.engr.vel.velnet": "1.1.0" } }, "com.unity.modules.ai": { diff --git a/TestVelGameServer/ProjectSettings/EditorBuildSettings.asset b/TestVelGameServer/ProjectSettings/EditorBuildSettings.asset index ba9b4aa..0abf0b2 100644 --- a/TestVelGameServer/ProjectSettings/EditorBuildSettings.asset +++ b/TestVelGameServer/ProjectSettings/EditorBuildSettings.asset @@ -6,6 +6,6 @@ EditorBuildSettings: serializedVersion: 2 m_Scenes: - enabled: 1 - path: Assets/Samples/VelNet/1.0.4/Example/test.unity + path: Assets/Samples/VelNet/1.0.4/Example/Scenes/Demo All.unity guid: e4e43899246c941c78acfc59ce2f664a m_configObjects: {} diff --git a/TestVelGameServer/ProjectSettings/RiderScriptEditorPersistedState.asset b/TestVelGameServer/ProjectSettings/RiderScriptEditorPersistedState.asset index f0bca0c..4531f5c 100644 --- a/TestVelGameServer/ProjectSettings/RiderScriptEditorPersistedState.asset +++ b/TestVelGameServer/ProjectSettings/RiderScriptEditorPersistedState.asset @@ -12,4 +12,4 @@ MonoBehaviour: m_Script: {fileID: 0} m_Name: m_EditorClassIdentifier: Unity.Rider.Editor:Packages.Rider.Editor:RiderScriptEditorPersistedState - lastWriteTicks: -8585461253992250955 + lastWriteTicks: -8585433455978485828 diff --git a/velnet_logo.png b/velnet_logo.png index 6b4b16df9dda209bb5b95e557a302982acec5c16..617a0551b41a689a39e191962ee77efabe06a7f5 100644 GIT binary patch literal 40603 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 literal 57760 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

HvOv*ey@Y( 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�IU2bJ?vKyHi(+`C~mJql=gR^ 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/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 A$p8QV literal 0 HcmV?d00001 diff --git a/velnet_logo_noborder.png b/velnet_logo_noborder.png new file mode 100644 index 0000000000000000000000000000000000000000..8089814e614c1543624efc996f21b43b7dd3caa9 GIT binary patch literal 21396 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