Skip to content

Instantly share code, notes, and snippets.

@JCBuck
Last active March 25, 2020 22:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JCBuck/53d970b22fac3b12218d1fee08444230 to your computer and use it in GitHub Desktop.
Save JCBuck/53d970b22fac3b12218d1fee08444230 to your computer and use it in GitHub Desktop.
DOTSSample Upgrade Unity ECS packages
Refactored code to use new unity Networking/Transport api
Part2:
https://gist.github.com/JCBuck/7c65823462a93673d7976e99ffd717ce
diff --git a/Assets/Scripts/EditorTools/Editor/BuildSettingsRunner.cs b/Assets/Scripts/EditorTools/Editor/BuildSettingsRunner.cs
index bddc8ed..e79719a 100644
--- a/Assets/Scripts/EditorTools/Editor/BuildSettingsRunner.cs
+++ b/Assets/Scripts/EditorTools/Editor/BuildSettingsRunner.cs
@@ -1,6 +1,7 @@
using System;
using Unity.Build;
using Unity.Build.Common;
+using Unity.Build.Classic;
using UnityEditor;
using UnityEngine;
@@ -40,7 +41,7 @@ public static class BuildSettingsRunner
static bool RunBuildSettingsAtPath(string assetPath, string buildDir, bool enableIL2CPP)
{
- var buildSettings = AssetDatabase.LoadAssetAtPath<BuildSettings>(assetPath);
+ var buildSettings = AssetDatabase.LoadAssetAtPath<BuildConfiguration>(assetPath);
if (buildSettings == null)
{
Debug.LogError($"No build settings found at path {assetPath}");
@@ -55,6 +56,7 @@ public static class BuildSettingsRunner
if (enableIL2CPP)
{
+
if (buildSettings.TryGetComponent<ClassicScriptingSettings>(out var scriptingSettings))
{
Debug.Log("Overriding scripting backend to IL2CPP");
diff --git a/Assets/Scripts/Networking/GhostSnapshotValueAngle.txt b/Assets/Scripts/Networking/GhostSnapshotValueAngle.txt
index 89337a8..485a815 100644
--- a/Assets/Scripts/Networking/GhostSnapshotValueAngle.txt
+++ b/Assets/Scripts/Networking/GhostSnapshotValueAngle.txt
@@ -31,7 +31,7 @@ public struct GhostSnapshotData
#endregion
}
- public void Serialize(int networkId, ref GhostSnapshotData baseline, DataStreamWriter writer, NetworkCompressionModel compressionModel)
+ public void Serialize(int networkId, ref GhostSnapshotData baseline, ref DataStreamWriter writer, NetworkCompressionModel compressionModel)
{
#region __GHOST_CALCULATE_CHANGE_MASK_ZERO__
changeMask__GHOST_MASK_BATCH__ = (__GHOST_FIELD_NAME__ != baseline.__GHOST_FIELD_NAME__) ? 1u : 0;
@@ -45,12 +45,12 @@ public struct GhostSnapshotData
#endregion
}
- public void Deserialize(uint tick, ref GhostSnapshotData baseline, DataStreamReader reader, ref DataStreamReader.Context ctx,
+ public void Deserialize(uint tick, ref GhostSnapshotData baseline, ref DataStreamReader reader,
NetworkCompressionModel compressionModel)
{
#region __GHOST_READ__
if ((changeMask__GHOST_MASK_BATCH__ & (1 << __GHOST_MASK_INDEX__)) != 0)
- __GHOST_FIELD_NAME__ = reader.ReadPackedIntDelta(ref ctx, baseline.__GHOST_FIELD_NAME__, compressionModel);
+ __GHOST_FIELD_NAME__ = reader.ReadPackedIntDelta(baseline.__GHOST_FIELD_NAME__, compressionModel);
else
__GHOST_FIELD_NAME__ = baseline.__GHOST_FIELD_NAME__;
#endregion
diff --git a/Assets/Scripts/EditorTools/Editor/LaunchWindow.cs b/Assets/Scripts/EditorTools/Editor/LaunchWindow.cs
index ed6c6da..6b6783d 100644
--- a/Assets/Scripts/EditorTools/Editor/LaunchWindow.cs
+++ b/Assets/Scripts/EditorTools/Editor/LaunchWindow.cs
@@ -30,13 +30,13 @@ public class LaunchWindow : EditorWindow
public string buildSettingsGUID;
public string arguments;
- public BuildSettings GetBuildSettings()
+ public BuildConfiguration GetBuildSettings()
{
var buildSettingsPath = AssetDatabase.GUIDToAssetPath(buildSettingsGUID);
- return AssetDatabase.LoadAssetAtPath<BuildSettings>(buildSettingsPath);
+ return AssetDatabase.LoadAssetAtPath<BuildConfiguration>(buildSettingsPath);
}
- public void SetBuildSettings(BuildSettings settings)
+ public void SetBuildSettings(BuildConfiguration settings)
{
var buildSettingsPath = AssetDatabase.GetAssetPath(settings);
buildSettingsGUID = AssetDatabase.AssetPathToGUID(buildSettingsPath);
@@ -44,23 +44,23 @@ public class LaunchWindow : EditorWindow
public bool GetBuildName(out string buildPath, out string buildName)
{
- var buildSettings = GetBuildSettings();
+ var buildConfiguration = GetBuildSettings();
buildPath = "";
buildName = "";
- if (buildSettings == null)
+ if (buildConfiguration == null)
{
- GameDebug.LogError("No buildsettings asset defined");
+ GameDebug.LogError("No buildConfiguration asset defined");
return false;
}
- var generalSettings = buildSettings.GetComponent<GeneralSettings>();
+ var generalSettings = buildConfiguration.GetComponent<GeneralSettings>();
if (generalSettings == null)
{
GameDebug.LogError("No GeneralSettings component for buildSetting");
return false;
}
- buildPath = Path.GetFullPath(buildSettings.GetOutputBuildDirectory());
+ buildPath = Path.GetFullPath(buildConfiguration.GetOutputBuildDirectory());
buildName = generalSettings.ProductName;
return true;
@@ -227,8 +227,8 @@ public class LaunchWindow : EditorWindow
EditorGUI.BeginChangeCheck();
- var buildSettings =
- EditorGUILayout.ObjectField("Build settings",entry.GetBuildSettings(), typeof(BuildSettings), false, null) as BuildSettings;
+ var buildConfiguration =
+ EditorGUILayout.ObjectField("Build settings",entry.GetBuildSettings(), typeof(BuildConfiguration), false, null) as BuildConfiguration;
EditorGUILayout.LabelField("Command line args");
entry.arguments = EditorGUILayout.TextArea(entry.arguments);
@@ -236,7 +236,7 @@ public class LaunchWindow : EditorWindow
if (EditorGUI.EndChangeCheck())
{
- entry.SetBuildSettings(buildSettings);
+ entry.SetBuildSettings(buildConfiguration);
SaveSettings();
}
@@ -372,11 +372,11 @@ public class LaunchWindow : EditorWindow
void QueueBuild(Entry entry)
{
- var buildSettings = entry.GetBuildSettings();
- if(buildSettings == null)
+ var buildConfiguration = entry.GetBuildSettings();
+ if(buildConfiguration == null)
GameDebug.LogError("No build settings defined");
- BuildManager.QueueBuild(buildSettings);
+ BuildManager.QueueBuild(buildConfiguration);
Repaint();
}
@@ -404,8 +404,8 @@ public class LaunchWindow : EditorWindow
{
var entry = data.entries[i];
- var buildSettings = entry.GetBuildSettings();
- if (buildSettings == null)
+ var buildConfiguration = entry.GetBuildSettings();
+ if (buildConfiguration == null)
continue;
string buildName;
@@ -450,7 +450,7 @@ public class LaunchWindow : EditorWindow
}
- List<BuildSettings> m_BuildSettings = new List<BuildSettings>();
+ List<BuildConfiguration> m_BuildConfiguration = new List<BuildConfiguration>();
int m_currentPickerWindow;
LaunchWindowSettingsAsset m_Asset;
diff --git a/Packages/manifest.json b/Packages/manifest.json
index 0b7e805..272cdbe 100644
--- a/Packages/manifest.json
+++ b/Packages/manifest.json
@@ -1,36 +1,47 @@
{
"dependencies": {
+ "com.unity.2d.sprite": "1.0.0",
+ "com.unity.2d.tilemap": "1.0.0",
+ "com.unity.ads": "2.0.8",
"com.unity.analytics": "3.3.5",
"com.unity.animation": "0.2.16-preview.5",
+ "com.unity.burst": "1.3.0-preview.3",
+ "com.unity.collab-proxy": "1.2.16",
"com.unity.collections": "0.5.2-preview.8",
- "com.unity.dots.editor": "0.1.0-preview.2",
- "com.unity.entities": "0.5.0-preview.17",
+ "com.unity.dots.editor": "0.3.0-preview",
+ "com.unity.entities": "0.6.0-preview.24",
"com.unity.ext.nunit": "1.0.0",
"com.unity.formats.fbx": "2.0.1-preview.11",
"com.unity.ide.rider": "1.1.4",
"com.unity.ide.visualstudio": "1.0.11",
"com.unity.ide.vscode": "1.1.4",
- "com.unity.jobs": "0.2.2-preview.6",
+ "com.unity.inputsystem": "1.0.0-preview.5",
+ "com.unity.jobs": "0.2.5-preview.20",
"com.unity.mathematics": "1.1.0",
- "com.unity.netcode": "0.0.2-preview.1",
- "com.unity.performance.profile-analyzer": "0.5.0-preview.1",
+ "com.unity.multiplayer-hlapi": "1.0.4",
+ "com.unity.netcode": "0.1.0-preview.6",
+ "com.unity.performance.profile-analyzer": "0.6.0-preview.1",
"com.unity.physics": "0.2.5-preview.1",
- "com.unity.platforms": "0.1.6-preview",
+ "com.unity.platforms": "0.2.1-preview.5",
"com.unity.probuilder": "4.2.3",
"com.unity.progrids": "3.0.3-preview.5",
+ "com.unity.purchasing": "2.0.6",
"com.unity.render-pipelines.core": "7.2.1",
"com.unity.render-pipelines.universal": "7.2.1",
- "com.unity.rendering.hybrid": "0.3.1-preview.10",
+ "com.unity.rendering.hybrid": "0.3.4-preview.24",
"com.unity.scriptablebuildpipeline": "1.6.4-preview",
"com.unity.shadergraph": "7.2.1",
"com.unity.test-framework": "1.1.11",
"com.unity.textmeshpro": "2.0.1",
- "com.unity.transport": "0.2.1-preview.1",
+ "com.unity.timeline": "1.2.12",
+ "com.unity.transport": "0.3.0-preview.6",
+ "com.unity.ugui": "1.0.0",
"com.unity.visualeffectgraph": "7.2.1",
- "com.unity.xr.legacyinputhelpers": "1.3.11",
+ "com.unity.xr.legacyinputhelpers": "2.0.8",
"com.unity.xr.management": "3.0.6",
- "com.unity.xr.oculus": "1.1.5",
+ "com.unity.xr.oculus": "1.2.0",
"com.unity.modules.ai": "1.0.0",
+ "com.unity.modules.androidjni": "1.0.0",
"com.unity.modules.animation": "1.0.0",
"com.unity.modules.assetbundle": "1.0.0",
"com.unity.modules.audio": "1.0.0",
diff --git a/Assets/Scripts/Networking/V2/NetworkEventSystem.cs b/Assets/Scripts/Networking/V2/NetworkEventSystem.cs
index 344ccf1..73d7687 100644
--- a/Assets/Scripts/Networking/V2/NetworkEventSystem.cs
+++ b/Assets/Scripts/Networking/V2/NetworkEventSystem.cs
@@ -121,7 +121,7 @@ public class ClientEventSystem : JobComponentSystem
protected override JobHandle OnUpdate(JobHandle inputDeps)
{
JobHandle queryJob;
- var connection = m_ConnectionQuery.ToEntityArray(Allocator.TempJob, out queryJob);
+ var connection = m_ConnectionQuery.ToEntityArrayAsync(Allocator.TempJob, out queryJob);
var sendSetupJob = new SendPlayerSetupJob {
CommandBuffer = m_CommandBuffer.CreateCommandBuffer(),
RpcQueue = m_RpcSettingsQueue,
@@ -192,7 +192,7 @@ public class ClientReadyEventSystem : JobComponentSystem
{
CommandBuffer = m_CommandBuffer.CreateCommandBuffer(),
RpcQueue = m_RpcReadyQueue,
- ConnectionEntity = m_ReadyQuery.ToEntityArray(Allocator.TempJob, out queryJob),
+ ConnectionEntity = m_ReadyQuery.ToEntityArrayAsync(Allocator.TempJob, out queryJob),
RpcBuffer = GetBufferFromEntity<OutgoingRpcDataStreamBufferComponent>()
};
diff --git a/Assets/Unity.Sample.Game/Player/PlayerModuleClient.cs b/Assets/Unity.Sample.Game/Player/PlayerModuleClient.cs
index 7673f70..1480550 100644
--- a/Assets/Unity.Sample.Game/Player/PlayerModuleClient.cs
+++ b/Assets/Unity.Sample.Game/Player/PlayerModuleClient.cs
@@ -23,10 +23,11 @@ public class PlayerModuleClient
#pragma warning disable 618
// we're keeping World.Active until we can properly remove them all
- var defaultWorld = World.Active;
+ //var defaultWorld = World.Active;
+ var defaultWorld = World.DefaultGameObjectInjectionWorld;
try
{
- World.Active = m_world;
+ //World.Active = m_world;
m_settings = Resources.Load<PlayerModuleSettings>("PlayerModuleSettings");
m_HandlePlayerCameraControlSpawn = m_world.CreateSystem<PlayerCameraControl.HandlePlayerCameraControlSpawn>();
m_UpdatePlayerCameras = m_world.CreateSystem<PlayerCameraControl.UpdatePlayerCameras>();
@@ -36,7 +37,8 @@ public class PlayerModuleClient
}
finally
{
- World.Active = defaultWorld;
+ //World.Active = defaultWorld;
+ World.DefaultGameObjectInjectionWorld = defaultWorld;
}
#pragma warning restore 618
}
diff --git a/Assets/Unity.Sample.Core/Scripts/PrefabAssetRegistry/PrefabAssetManager.cs b/Assets/Unity.Sample.Core/Scripts/PrefabAssetRegistry/PrefabAssetManager.cs
index 73d40f9..fa37708 100644
--- a/Assets/Unity.Sample.Core/Scripts/PrefabAssetRegistry/PrefabAssetManager.cs
+++ b/Assets/Unity.Sample.Core/Scripts/PrefabAssetRegistry/PrefabAssetManager.cs
@@ -48,17 +48,19 @@ public class PrefabAssetManager
public static Entity CreateEntity(World world, GameObject prefab)
{
-// GameDebug.Log("CreateEntity prefab:" + prefab.name);
+ // GameDebug.Log("CreateEntity prefab:" + prefab.name);
// If gameObject has GameObjectEntity it is already registered in entitymanager. If not we register it here
#pragma warning disable 618
// we're keeping World.Active until we can properly remove them all
- var defaultWorld = World.Active;
+ //var defaultWorld = World.Active;
+ var defaultWorld = World.DefaultGameObjectInjectionWorld;
try
{
- World.Active = world;
+ //World.Active = world;
+ World.DefaultGameObjectInjectionWorld = world;
#pragma warning restore 618
if (prefab.GetComponent<GameObjectEntity>() != null)
{
@@ -84,7 +86,8 @@ public class PrefabAssetManager
{
#pragma warning disable 618
// we're keeping World.Active until we can properly remove them all
- World.Active = defaultWorld;
+ //World.Active = defaultWorld;
+ World.DefaultGameObjectInjectionWorld = defaultWorld;
#pragma warning restore 618
}
}
@@ -132,10 +135,11 @@ public class PrefabAssetManager
{
#pragma warning disable 618
// we're keeping World.Active until we can properly remove them all
- var defaultWorld = World.Active;
+ //var defaultWorld = World.Active;
+ var defaultWorld = World.DefaultGameObjectInjectionWorld;
try
{
- World.Active = world;
+ //World.Active = world;
entityPrefab = GameObjectConversionUtility.ConvertGameObjectHierarchy(prefab, world);
m_EntityPrefabs.Add(tuple,entityPrefab);
@@ -145,7 +149,8 @@ public class PrefabAssetManager
}
finally
{
- World.Active = defaultWorld;
+ //World.Active = defaultWorld;
+ World.DefaultGameObjectInjectionWorld = defaultWorld;
}
#pragma warning restore 618
}
diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt
index f04fc72..a8d6725 100644
--- a/ProjectSettings/ProjectVersion.txt
+++ b/ProjectSettings/ProjectVersion.txt
@@ -1,2 +1,2 @@
-m_EditorVersion: 2019.3.2f1
-m_EditorVersionWithRevision: 2019.3.2f1 (c46a3a38511e)
+m_EditorVersion: 2019.3.3f1
+m_EditorVersionWithRevision: 2019.3.3f1 (7ceaae5f7503)
diff --git a/Assets/Scripts/Networking/V2/RPCs.cs b/Assets/Scripts/Networking/V2/RPCs.cs
index d9e509e..5f410a7 100644
--- a/Assets/Scripts/Networking/V2/RPCs.cs
+++ b/Assets/Scripts/Networking/V2/RPCs.cs
@@ -10,9 +10,9 @@ public struct RpcInitializeMap : IRpcCommand
{
public NativeString64 MapName;
- public void Serialize(DataStreamWriter writer)
+ public void Serialize(ref DataStreamWriter writer)
{
- writer.Write(MapName.LengthInBytes);
+ writer.WriteUShort(MapName.LengthInBytes);
unsafe
{
fixed (byte* b = &MapName.buffer.byte0000)
@@ -22,16 +22,16 @@ public struct RpcInitializeMap : IRpcCommand
}
}
- public void Deserialize(DataStreamReader reader, ref DataStreamReader.Context ctx)
+ public void Deserialize(ref DataStreamReader reader)
{
- var nameLength = reader.ReadUShort(ref ctx);
+ var nameLength = reader.ReadUShort();
GameDebug.Assert(nameLength <= NativeString64.MaxLength);
MapName.LengthInBytes = nameLength;
unsafe
{
fixed (byte* b = &MapName.buffer.byte0000)
{
- reader.ReadBytes(ref ctx, b, MapName.LengthInBytes);
+ reader.ReadBytes( b, MapName.LengthInBytes);
}
}
}
@@ -39,7 +39,7 @@ public struct RpcInitializeMap : IRpcCommand
private static void InvokeExecute(ref RpcExecutor.Parameters parameters)
{
var rpcData = default(RpcInitializeMap);
- rpcData.Deserialize(parameters.Reader, ref parameters.ReaderContext);
+ rpcData.Deserialize(ref parameters.Reader);
var ent = parameters.CommandBuffer.CreateEntity(parameters.JobIndex);
parameters.CommandBuffer.AddComponent(parameters.JobIndex, ent,
@@ -61,11 +61,11 @@ public struct RpcPlayerSetup : IRpcCommand
public int CharacterType;
public short TeamId;
- public void Serialize(DataStreamWriter writer)
+ public void Serialize(ref DataStreamWriter writer)
{
- writer.Write(TeamId);
- writer.Write(CharacterType);
- writer.Write(PlayerName.LengthInBytes);
+ writer.WriteShort(TeamId);
+ writer.WriteInt(CharacterType);
+ writer.WriteUShort(PlayerName.LengthInBytes);
unsafe
{
fixed (byte* b = &PlayerName.buffer.byte0000)
@@ -75,18 +75,18 @@ public struct RpcPlayerSetup : IRpcCommand
}
}
- public void Deserialize(DataStreamReader reader, ref DataStreamReader.Context ctx)
+ public void Deserialize(ref DataStreamReader reader)
{
- TeamId = reader.ReadShort(ref ctx);
- CharacterType = reader.ReadInt(ref ctx);
- var nameLength = reader.ReadUShort(ref ctx);
+ TeamId = reader.ReadShort();
+ CharacterType = reader.ReadInt();
+ var nameLength = reader.ReadUShort();
GameDebug.Assert(nameLength <= NativeString64.MaxLength);
PlayerName.LengthInBytes = nameLength;
unsafe
{
fixed (byte* b = &PlayerName.buffer.byte0000)
{
- reader.ReadBytes(ref ctx, b, PlayerName.LengthInBytes);
+ reader.ReadBytes( b, PlayerName.LengthInBytes);
}
}
}
@@ -94,7 +94,7 @@ public struct RpcPlayerSetup : IRpcCommand
private static void InvokeExecute(ref RpcExecutor.Parameters parameters)
{
var rpcData = default(RpcPlayerSetup);
- rpcData.Deserialize(parameters.Reader, ref parameters.ReaderContext);
+ rpcData.Deserialize(ref parameters.Reader);
parameters.CommandBuffer.AddComponent(parameters.JobIndex, parameters.Connection,
new PlayerSettingsComponent {CharacterType = rpcData.CharacterType, TeamId = rpcData.TeamId, PlayerName = rpcData.PlayerName});
@@ -111,11 +111,11 @@ class PlayerSetupRpcCommandRequestSystem : RpcCommandRequestSystem<RpcPlayerSetu
[BurstCompile]
public struct RpcPlayerReady : IRpcCommand
{
- public void Serialize(DataStreamWriter writer)
+ public void Serialize(ref DataStreamWriter writer)
{
}
- public void Deserialize(DataStreamReader reader, ref DataStreamReader.Context ctx)
+ public void Deserialize(ref DataStreamReader reader)
{
}
[BurstCompile]
@@ -138,9 +138,9 @@ public struct RpcRemoteCommand : IRpcCommand
{
public NativeString64 Command;
- public void Serialize(DataStreamWriter writer)
+ public void Serialize(ref DataStreamWriter writer)
{
- writer.Write(Command.LengthInBytes);
+ writer.WriteUShort(Command.LengthInBytes);
unsafe
{
fixed (byte* b = &Command.buffer.byte0000)
@@ -150,16 +150,16 @@ public struct RpcRemoteCommand : IRpcCommand
}
}
- public void Deserialize(DataStreamReader reader, ref DataStreamReader.Context ctx)
+ public void Deserialize(ref DataStreamReader reader)
{
- var msgLength = reader.ReadUShort(ref ctx);
+ var msgLength = reader.ReadUShort();
GameDebug.Assert(msgLength <= NativeString64.MaxLength);
Command.LengthInBytes = msgLength;
unsafe
{
fixed (byte* b = &Command.buffer.byte0000)
{
- reader.ReadBytes(ref ctx, b, Command.LengthInBytes);
+ reader.ReadBytes( b, Command.LengthInBytes);
}
}
}
@@ -168,7 +168,7 @@ public struct RpcRemoteCommand : IRpcCommand
private static void InvokeExecute(ref RpcExecutor.Parameters parameters)
{
var rpcData = default(RpcRemoteCommand);
- rpcData.Deserialize(parameters.Reader, ref parameters.ReaderContext);
+ rpcData.Deserialize(ref parameters.Reader);
var req = parameters.CommandBuffer.CreateEntity(parameters.JobIndex);
parameters.CommandBuffer.AddComponent(parameters.JobIndex, req, new IncomingRemoteCommandComponent{Command = rpcData.Command, Connection = parameters.Connection});
@@ -187,10 +187,10 @@ public struct RpcChatMessage : IRpcCommand
{
public NativeString512 Message;
- public void Serialize(DataStreamWriter writer)
+ public void Serialize(ref DataStreamWriter writer)
{
GameDebug.Assert(writer.Capacity-writer.Length > Message.LengthInBytes*2, "Chat message too large (writer=" + (writer.Capacity-writer.Length) + " msg=" + Message.LengthInBytes*2);
- writer.Write(Message.LengthInBytes);
+ writer.WriteUShort(Message.LengthInBytes);
unsafe
{
fixed (byte* b = &Message.buffer.byte0000)
@@ -200,16 +200,16 @@ public struct RpcChatMessage : IRpcCommand
}
}
- public void Deserialize(DataStreamReader reader, ref DataStreamReader.Context ctx)
+ public void Deserialize(ref DataStreamReader reader)
{
- var msgLength = reader.ReadUShort(ref ctx);
+ var msgLength = reader.ReadUShort();
GameDebug.Assert(msgLength <= NativeString512.MaxLength);
Message.LengthInBytes = msgLength;
unsafe
{
fixed (byte* b = &Message.buffer.byte0000)
{
- reader.ReadBytes(ref ctx, b, Message.LengthInBytes);
+ reader.ReadBytes( b, Message.LengthInBytes);
}
}
}
@@ -218,7 +218,7 @@ public struct RpcChatMessage : IRpcCommand
private static void InvokeExecute(ref RpcExecutor.Parameters parameters)
{
var rpcData = default(RpcChatMessage);
- rpcData.Deserialize(parameters.Reader, ref parameters.ReaderContext);
+ rpcData.Deserialize(ref parameters.Reader);
var req = parameters.CommandBuffer.CreateEntity(parameters.JobIndex);
parameters.CommandBuffer.AddComponent(parameters.JobIndex, req, new IncomingChatMessageComponent{Message = rpcData.Message, Connection = parameters.Connection});
diff --git a/Assets/Scripts/Game/Main/ServerGameLoop.cs b/Assets/Scripts/Game/Main/ServerGameLoop.cs
index a450f0a..7ba0c10 100644
--- a/Assets/Scripts/Game/Main/ServerGameLoop.cs
+++ b/Assets/Scripts/Game/Main/ServerGameLoop.cs
@@ -84,7 +84,8 @@ public class ServerGameWorld
#pragma warning disable 618
// we're keeping World.Active until we can properly remove them all
- var defaultWorld = World.Active;
+ //var defaultWorld = World.Active;
+ var defaultWorld = World.DefaultGameObjectInjectionWorld;
try
{
m_GameModeSystem = m_GameWorld.CreateSystem<GameModeSystemServer>(m_GameWorld, m_GameWorld.GetExistingSystem<ChatSystemServer>());
@@ -109,7 +110,9 @@ public class ServerGameWorld
}
finally
{
- World.Active = defaultWorld;
+
+ //World.Active = defaultWorld;
+ World.DefaultGameObjectInjectionWorld = defaultWorld;
}
#pragma warning restore 618
diff --git a/Assets/Scripts/Networking/Editor/Tests/SocketTests.cs b/Assets/Scripts/Networking/Editor/Tests/SocketTests.cs
index 18b1621..5d9352f 100644
--- a/Assets/Scripts/Networking/Editor/Tests/SocketTests.cs
+++ b/Assets/Scripts/Networking/Editor/Tests/SocketTests.cs
@@ -7,7 +7,7 @@ using System.Net.Sockets;
using Unity.Networking.Transport;
using Unity.Collections;
-using Unity.Networking.Transport.LowLevel.Unsafe;
+//using Unity.Networking.Transport.LowLevel.Unsafe;
using Unity.Sample.Core;
using ExperimentalEventType = Unity.Networking.Transport.NetworkEvent.Type;
@@ -18,7 +18,7 @@ namespace TransportTests
[Test]
public void UdpC_BindToEndpoint_ReturnSocketHandle()
{
- using (var socket = new UdpNetworkDriver(new NetworkDataStreamParameter {}))
+ using (var socket = new NetworkDriver(default(UDPNetworkInterface),new NetworkDataStreamParameter {}))
{
var socketError = socket.Bind(NetworkEndPoint.AnyIpv4);
@@ -29,10 +29,10 @@ namespace TransportTests
[Test]
public void UdpC_BindMultipleToSameEndpoint_ReturnSocketError()
{
- using (var first = new UdpNetworkDriver(new NetworkDataStreamParameter {}))
- using (var second = new UdpNetworkDriver(new NetworkDataStreamParameter {}))
+ using (var first = new NetworkDriver(default(UDPNetworkInterface),new NetworkDataStreamParameter {}))
+ using (var second = new NetworkDriver(default(UDPNetworkInterface),new NetworkDataStreamParameter {}))
{
- var endpoint = NetworkEndPoint.CreateIpv4(0, 50001);
+ var endpoint = NetworkEndPoint.Parse("0.0.0.0", 50001);
var socketError = first.Bind(endpoint);
Assert.AreEqual(socketError, (int)SocketError.Success);
@@ -46,9 +46,9 @@ namespace TransportTests
[Ignore("https://favro.com/organization/c564ede4ed3337f7b17986b6/215d676dd474c0744d2574f8?card=Uni-90284")]
public void UdpC_ListenThenConnect_ShouldFail()
{
- using (var socket = new UdpNetworkDriver(new NetworkDataStreamParameter {}))
+ using (var socket = new NetworkDriver(default(UDPNetworkInterface),new NetworkDataStreamParameter {}))
{
- var endpoint = NetworkEndPoint.CreateIpv4(0, 50007);
+ var endpoint = NetworkEndPoint.Parse("0.0.0.0", 50007);
socket.Bind(endpoint);
socket.Listen();
@@ -61,17 +61,17 @@ namespace TransportTests
[Test]
public void UdpC_ConnectTest_ShouldConnect()
{
- using (var server = new UdpNetworkDriver(new NetworkDataStreamParameter {}))
- using (var client = new UdpNetworkDriver(new NetworkDataStreamParameter {}))
+ using (var server = new NetworkDriver(default(UDPNetworkInterface),new NetworkDataStreamParameter {}))
+ using (var client = new NetworkDriver(default(UDPNetworkInterface),new NetworkDataStreamParameter {}))
{
var serverPort = 50009;
- server.Bind(NetworkEndPoint.CreateIpv4(0x7f000001, (ushort)serverPort));
+ server.Bind(NetworkEndPoint.Parse("127.0.0.1", (ushort)serverPort));
client.Bind(NetworkEndPoint.LoopbackIpv4);
server.Listen();
- var id = client.Connect(NetworkEndPoint.CreateIpv4(0x7f000001, (ushort)serverPort));
+ var id = client.Connect(NetworkEndPoint.Parse("127.0.0.1", (ushort)serverPort));
NetworkConnection serverConnection, clientConnection;
int maxIterations = 100;
@@ -84,15 +84,15 @@ namespace TransportTests
[Test]
public void UdpC_MultipleConnectTest_ShouldConnect()
{
- using (var server = new UdpNetworkDriver(new NetworkDataStreamParameter {}))
- using (var client0 = new UdpNetworkDriver(new NetworkDataStreamParameter {}))
- using (var client1 = new UdpNetworkDriver(new NetworkDataStreamParameter {}))
- using (var client2 = new UdpNetworkDriver(new NetworkDataStreamParameter {}))
- using (var client3 = new UdpNetworkDriver(new NetworkDataStreamParameter {}))
+ using (var server = new NetworkDriver(default(UDPNetworkInterface),new NetworkDataStreamParameter {}))
+ using (var client0 = new NetworkDriver(default(UDPNetworkInterface),new NetworkDataStreamParameter {}))
+ using (var client1 = new NetworkDriver(default(UDPNetworkInterface),new NetworkDataStreamParameter {}))
+ using (var client2 = new NetworkDriver(default(UDPNetworkInterface),new NetworkDataStreamParameter {}))
+ using (var client3 = new NetworkDriver(default(UDPNetworkInterface),new NetworkDataStreamParameter {}))
{
var serverPort = 50005;
- server.Bind(NetworkEndPoint.CreateIpv4(0x7f000001, (ushort)serverPort));//new IPEndPoint(IPAddress.Loopback, serverPort));
+ server.Bind(NetworkEndPoint.Parse("127.0.0.1", (ushort)serverPort));//new IPEndPoint(IPAddress.Loopback, serverPort));
client0.Bind(NetworkEndPoint.LoopbackIpv4);// new IPEndPoint(IPAddress.Loopback, 0));
client1.Bind(NetworkEndPoint.LoopbackIpv4);//new IPEndPoint(IPAddress.Loopback, 0));
client2.Bind(NetworkEndPoint.LoopbackIpv4);//new IPEndPoint(IPAddress.Loopback, 0));
@@ -104,7 +104,7 @@ namespace TransportTests
int maxIterations = 100;
- var endpoint = NetworkEndPoint.CreateIpv4(0x7f000001, (ushort)serverPort);
+ var endpoint = NetworkEndPoint.Parse("127.0.0.1", (ushort)serverPort);
var id = client0.Connect(endpoint);
ConnectTogether(server, client0, maxIterations, out serverConnection, out clientConnection);
Assert.AreEqual(id, serverConnection);
@@ -126,17 +126,17 @@ namespace TransportTests
[Test]
public void UdpC_ConnectSendTest_ShouldConnectAndReceiveData()
{
- using (var server = new UdpNetworkDriver(new NetworkDataStreamParameter {}))
- using (var client = new UdpNetworkDriver(new NetworkDataStreamParameter {}))
+ using (var server = new NetworkDriver(default(UDPNetworkInterface),new NetworkDataStreamParameter {}))
+ using (var client = new NetworkDriver(default(UDPNetworkInterface),new NetworkDataStreamParameter {}))
{
var serverPort = 50008;
- server.Bind(NetworkEndPoint.CreateIpv4(0x7f000001, (ushort)serverPort));
+ server.Bind(NetworkEndPoint.Parse("127.0.0.1", (ushort)serverPort));
client.Bind(NetworkEndPoint.LoopbackIpv4);
server.Listen();
- client.Connect(NetworkEndPoint.CreateIpv4(0x7f000001, (ushort)serverPort));
+ client.Connect(NetworkEndPoint.Parse("127.0.0.1", (ushort)serverPort));
NetworkConnection serverConnection, clientConnection;
int maxIterations = 100;
@@ -161,12 +161,12 @@ namespace TransportTests
[Test]
public void UdpC_ReconnectAndResend_ShouldReconnectAndResend()
{
- using (var server = new UdpNetworkDriver(new NetworkDataStreamParameter {}))
- using (var client = new UdpNetworkDriver(new NetworkDataStreamParameter {}))
+ using (var server = new NetworkDriver(default(UDPNetworkInterface), new NetworkDataStreamParameter {}))
+ using (var client = new NetworkDriver(default(UDPNetworkInterface), new NetworkDataStreamParameter {}))
{
var serverPort = 50007;
- server.Bind(NetworkEndPoint.CreateIpv4(0x7f000001, (ushort)serverPort));
+ server.Bind(NetworkEndPoint.Parse("127.0.0.1", (ushort)serverPort));
client.Bind(NetworkEndPoint.LoopbackIpv4);
server.Listen();
@@ -174,7 +174,7 @@ namespace TransportTests
NetworkConnection serverConnection, clientConnection;
int maxIterations = 100;
- var id = client.Connect(NetworkEndPoint.CreateIpv4(0x7f000001, (ushort)serverPort));
+ var id = client.Connect(NetworkEndPoint.Parse("127.0.0.1", (ushort)serverPort));
ConnectTogether(server, client, maxIterations, out serverConnection, out clientConnection);
client.Disconnect(id);
@@ -187,7 +187,7 @@ namespace TransportTests
Assert.AreEqual(ExperimentalEventType.Disconnect, PollEvent(ExperimentalEventType.Disconnect, maxIterations, server, ref data, out size, out from));
- id = client.Connect(NetworkEndPoint.CreateIpv4(0x7f000001, (ushort)serverPort));
+ id = client.Connect(NetworkEndPoint.Parse("127.0.0.1", (ushort)serverPort));
ConnectTogether(server, client, maxIterations, out serverConnection, out clientConnection);
var message = new byte[]
@@ -217,17 +217,17 @@ namespace TransportTests
disconnectTimeoutMS = customTimeout,
};
- using (var server = new UdpNetworkDriver(config))
- using (var client = new UdpNetworkDriver(config))
+ using (var server = new NetworkDriver(default(UDPNetworkInterface),config))
+ using (var client = new NetworkDriver(default(UDPNetworkInterface), config))
{
var serverPort = 50006;
- server.Bind(NetworkEndPoint.CreateIpv4(0x7f000001, (ushort)serverPort));
+ server.Bind(NetworkEndPoint.Parse("127.0.0.1", (ushort)serverPort));
client.Bind(NetworkEndPoint.LoopbackIpv4);
server.Listen();
- var id = client.Connect(NetworkEndPoint.CreateIpv4(0x7f000001, (ushort)serverPort));
+ var id = client.Connect(NetworkEndPoint.Parse("127.0.0.1", (ushort)serverPort));
NetworkConnection serverConnection, clientConnection;
int maxIterations = 100;
@@ -238,15 +238,15 @@ namespace TransportTests
// Force timeout
Thread.Sleep(customTimeout + 500);
- var message = new DataStreamWriter(7, Allocator.Persistent);
- message.Write((byte)'m');
- message.Write((byte)'e');
- message.Write((byte)'s');
- message.Write((byte)'s');
- message.Write((byte)'a');
- message.Write((byte)'g');
- message.Write((byte)'e');
- clientConnection.Send(server, message);
+ var sendwriter = server.BeginSend(id);
+ sendwriter.WriteByte((byte)'m');
+ sendwriter.WriteByte((byte)'e');
+ sendwriter.WriteByte((byte)'s');
+ sendwriter.WriteByte((byte)'s');
+ sendwriter.WriteByte((byte)'a');
+ sendwriter.WriteByte((byte)'g');
+ sendwriter.WriteByte((byte)'e');
+ server.EndSend(sendwriter);
var data = new byte[1472];
int size = -1;
@@ -256,7 +256,7 @@ namespace TransportTests
}
}
- ExperimentalEventType PollEvent(ExperimentalEventType ev, int maxIterations, UdpNetworkDriver socket, ref byte[] buffer, out int size, out NetworkConnection connection)
+ ExperimentalEventType PollEvent(ExperimentalEventType ev, int maxIterations, NetworkDriver socket, ref byte[] buffer, out int size, out NetworkConnection connection)
{
int iterator = 0;
size = 0;
@@ -265,13 +265,16 @@ namespace TransportTests
while (iterator++ < maxIterations)
{
DataStreamReader reader;
- var context = default(DataStreamReader.Context);
+ //var context = default(DataStreamReader.Context);
ExperimentalEventType e;
if ((e = socket.PopEvent(out connection, out reader)) == ev)
{
if (reader.IsCreated)
{
- reader.ReadBytesIntoArray(ref context, ref buffer, reader.Length);
+ NativeArray<byte> narr = new NativeArray<byte>(reader.Length, Allocator.Temp);
+
+ reader.ReadBytes(narr);
+ buffer = narr.ToArray();
size = reader.Length;
}
return e;
@@ -281,14 +284,18 @@ namespace TransportTests
return ExperimentalEventType.Empty;
}
- void SendReceive(UdpNetworkDriver sender, UdpNetworkDriver receiver, NetworkConnection from, NetworkConnection to, byte[] data, int maxIterations)
+ void SendReceive(NetworkDriver sender, NetworkDriver receiver, NetworkConnection from, NetworkConnection to, byte[] data, int maxIterations)
{
- using (var writer = new DataStreamWriter(data.Length, Allocator.Persistent))
- {
- writer.Write(data, data.Length);
+
// sender.Send(to, writer); // old one preserved to explain how names were chosen :-)
- to.Send(sender, writer); // new :-)
+ //to.Send(sender, writer); // new :-)
+ var senderwrite = sender.BeginSend(to);
+
+ NativeArray<byte> narr = new NativeArray<byte>(data, Allocator.Temp);
+
+ senderwrite.WriteBytes(narr);
+ sender.EndSend(senderwrite);
sender.ScheduleUpdate().Complete();
receiver.ScheduleUpdate().Complete();
@@ -303,10 +310,10 @@ namespace TransportTests
for (int i = 0; i < data.Length; i++)
Assert.AreEqual(data[i], buffer[i]);
- }
+
}
- void ConnectTogether(UdpNetworkDriver server, UdpNetworkDriver client, int maxIterations, out NetworkConnection serverConnection, out NetworkConnection clientConnection)
+ void ConnectTogether(NetworkDriver server, NetworkDriver client, int maxIterations, out NetworkConnection serverConnection, out NetworkConnection clientConnection)
{
int servers = 0, clients = 0, iterations = 0;
serverConnection = default(NetworkConnection);
@@ -385,7 +392,7 @@ namespace TransportTests
public class UdpCClient : IDisposable
{
- UdpNetworkDriver m_Socket;
+ NetworkDriver m_Socket;
NetworkConnection conn = default(NetworkConnection);
int serverPort;
@@ -396,8 +403,10 @@ namespace TransportTests
public UdpCClient(int port, int serverPort = -1)
{
- m_Socket = new UdpNetworkDriver(new NetworkDataStreamParameter {});
- m_Socket.Bind(NetworkEndPoint.CreateIpv4(0x7f000001, (ushort)port));
+ //m_Socket = new NetworkDriver(default(UDPNetworkInterface),new NetworkDataStreamParameter {});
+ m_Socket = new NetworkDriver(default(UDPNetworkInterface), new NetworkDataStreamParameter { });
+
+ m_Socket.Bind(NetworkEndPoint.Parse("127.0.0.1", (ushort)port));
if (serverPort == -1)
m_Socket.Listen();
@@ -408,22 +417,19 @@ namespace TransportTests
{
if (!m_Socket.Listening && !conn.IsCreated)
{
- conn = m_Socket.Connect(NetworkEndPoint.CreateIpv4(0x7f000001, (ushort)serverPort));
+ conn = m_Socket.Connect(NetworkEndPoint.Parse("127.0.0.1", (ushort)serverPort));
}
else if (!m_Socket.Listening && dataCounter == 0 && !conn.IsCreated)
{
- using (var message = new DataStreamWriter(7, Allocator.Persistent))
- {
- message.Write((byte)'m');
- message.Write((byte)'e');
- message.Write((byte)'s');
- message.Write((byte)'s');
- message.Write((byte)'a');
- message.Write((byte)'g');
- message.Write((byte)'e');
-
- conn.Send(m_Socket, message);
- }
+ var sendwriter = m_Socket.BeginSend(conn);
+ sendwriter.WriteByte((byte)'m');
+ sendwriter.WriteByte((byte)'e');
+ sendwriter.WriteByte((byte)'s');
+ sendwriter.WriteByte((byte)'s');
+ sendwriter.WriteByte((byte)'a');
+ sendwriter.WriteByte((byte)'g');
+ sendwriter.WriteByte((byte)'e');
+ m_Socket.EndSend(sendwriter);
}
else if (!m_Socket.Listening && conn.IsCreated &&
UnityEngine.Random.Range(0, 1000) < 10)
@@ -434,17 +440,12 @@ namespace TransportTests
NetworkConnection connection;
DataStreamReader reader;
- var context = default(DataStreamReader.Context);
+ //var context = default(DataStreamReader.Context);
var ev = m_Socket.PopEvent(out connection, out reader);
if (ev == ExperimentalEventType.Empty)
return;
-
- using (var writer = new DataStreamWriter(reader.Length, Allocator.Temp))
- {
- unsafe
- {
- reader.ReadBytes(ref context, writer.GetUnsafePtr(), reader.Length);
- }
+ NativeArray<byte> narr;
+ DataStreamWriter writer;
switch (ev)
{
case ExperimentalEventType.Connect:
@@ -455,11 +456,18 @@ namespace TransportTests
disconnectCounter++;
break;
case ExperimentalEventType.Data:
+ writer = m_Socket.BeginSend(connection);
+ narr = new NativeArray<byte>(reader.Length, Allocator.Temp);
+ reader.ReadBytes(narr);
+
dataCounter++;
- connection.Send(m_Socket, writer);
+
+ m_Socket.EndSend(writer);
+
+
break;
}
- }
+
}
public void Dispose()
diff --git a/Assets/Scripts/Networking/Socket/SocketTransport.cs b/Assets/Scripts/Networking/Socket/SocketTransport.cs
index 8bd7c2f..ac81be8 100644
--- a/Assets/Scripts/Networking/Socket/SocketTransport.cs
+++ b/Assets/Scripts/Networking/Socket/SocketTransport.cs
@@ -1,4 +1,4 @@
-using System.Net;
+using System.Net;
using Unity.Networking.Transport;
using Unity.Collections;
using Unity.Sample.Core;
@@ -14,9 +14,12 @@ public class SocketTransport : INetworkTransport
configParams.disconnectTimeoutMS = ServerGameLoop.serverDisconnectTimeout.IntValue;
configParams.connectTimeoutMS = NetworkParameterConstants.ConnectTimeoutMS;
configParams.maxConnectAttempts = NetworkParameterConstants.MaxConnectAttempts;
- m_Socket = new UdpNetworkDriver(configParams);
- m_Socket.Bind(NetworkEndPoint.CreateIpv4(0, (ushort)port));
+
+ m_Socket = new NetworkDriver(default(UDPNetworkInterface), configParams);
+
+ NetworkDriver.Create(configParams);
+ m_Socket.Bind(NetworkEndPoint.Parse("0.0.0.0", (ushort)port));
}
public int Connect(string ip, int port)
@@ -51,7 +54,7 @@ public class SocketTransport : INetworkTransport
}
DataStreamReader reader;
- var context = default(DataStreamReader.Context);
+ //var context = default(DataStreamReader.Context);
var ev = m_Socket.PopEvent(out connection, out reader);
if (ev == EventType.Empty)
@@ -61,7 +64,11 @@ public class SocketTransport : INetworkTransport
if (reader.IsCreated)
{
GameDebug.Assert(m_Buffer.Length >= reader.Length);
- reader.ReadBytesIntoArray(ref context, ref m_Buffer, reader.Length);
+ NativeArray<byte> nbuf = new NativeArray<byte>(m_Buffer.Length, Allocator.Temp);
+
+ reader.ReadBytes( nbuf);
+ nbuf.CopyTo(m_Buffer);
+
size = reader.Length;
}
@@ -91,11 +98,14 @@ public class SocketTransport : INetworkTransport
public void SendData(int connectionId, byte[] data, int sendSize)
{
- using (var sendStream = new DataStreamWriter(sendSize, Allocator.Persistent))
- {
- sendStream.Write(data, sendSize);
- m_IdToConnection[connectionId].Send(m_Socket, sendStream);
- }
+
+
+ NativeArray<byte> narray = new NativeArray<byte>(data, Allocator.Temp);
+
+ var datasend = m_Socket.BeginSend(m_IdToConnection[connectionId]);
+ datasend.WriteBytes(narray);
+ m_Socket.EndSend(datasend);
+
}
public string GetConnectionDescription(int connectionId)
@@ -110,6 +120,8 @@ public class SocketTransport : INetworkTransport
}
byte[] m_Buffer = new byte[1024 * 8];
- UdpNetworkDriver m_Socket;
+ // UdpNetworkDriver m_Socket;
+ NetworkDriver m_Socket;
+
NativeArray<NetworkConnection> m_IdToConnection;
}
diff --git a/Assets/Scripts/Networking/SQP.cs b/Assets/Scripts/Networking/SQP.cs
index 5087021..64c437c 100644
--- a/Assets/Scripts/Networking/SQP.cs
+++ b/Assets/Scripts/Networking/SQP.cs
@@ -6,7 +6,7 @@ using System.Collections.Generic;
using UnityEngine;
using Unity.Networking.Transport;
-using Unity.Networking.Transport.LowLevel.Unsafe;
+//using Unity.Networking.Transport.LowLevel.Unsafe;
using Unity.Sample.Core;
/// <summary>
@@ -34,7 +34,7 @@ namespace SQP
public interface ISQPMessage
{
void ToStream(ref DataStreamWriter writer);
- void FromStream(DataStreamReader reader, ref DataStreamReader.Context ctx);
+ void FromStream(ref DataStreamReader reader);
}
public struct SQPHeader : ISQPMessage
@@ -44,14 +44,14 @@ namespace SQP
public void ToStream(ref DataStreamWriter writer)
{
- writer.Write((byte)Type);
- writer.WriteNetworkByteOrder((uint)ChallangeId);
+ writer.WriteByte((byte)Type);
+ writer.WriteUIntNetworkByteOrder((uint)ChallangeId);
}
- public void FromStream(DataStreamReader reader, ref DataStreamReader.Context ctx)
+ public void FromStream(ref DataStreamReader reader)
{
- Type = reader.ReadByte(ref ctx);
- ChallangeId = reader.ReadUIntNetworkByteOrder(ref ctx);
+ Type = reader.ReadByte();
+ ChallangeId = reader.ReadUIntNetworkByteOrder();
}
}
@@ -65,9 +65,9 @@ namespace SQP
Header.ToStream(ref writer);
}
- public void FromStream(DataStreamReader reader, ref DataStreamReader.Context ctx)
+ public void FromStream(ref DataStreamReader reader)
{
- Header.FromStream(reader, ref ctx);
+ Header.FromStream(ref reader);
}
}
@@ -81,9 +81,9 @@ namespace SQP
Header.ToStream(ref writer);
}
- public void FromStream(DataStreamReader reader, ref DataStreamReader.Context ctx)
+ public void FromStream(ref DataStreamReader reader)
{
- Header.FromStream(reader, ref ctx);
+ Header.FromStream(ref reader);
}
}
@@ -99,15 +99,15 @@ namespace SQP
Header.Type = (byte)SQPMessageType.QueryRequest;
Header.ToStream(ref writer);
- writer.WriteNetworkByteOrder((UInt16)Version);
- writer.Write((byte)RequestedChunks);
+ writer.WriteUShortNetworkByteOrder((UInt16)Version);
+ writer.WriteByte((byte)RequestedChunks);
}
- public void FromStream(DataStreamReader reader, ref DataStreamReader.Context ctx)
+ public void FromStream(ref DataStreamReader reader)
{
- Header.FromStream(reader, ref ctx);
- Version = reader.ReadUShortNetworkByteOrder(ref ctx);
- RequestedChunks = reader.ReadByte(ref ctx);
+ Header.FromStream(ref reader);
+ Version = reader.ReadUShortNetworkByteOrder();
+ RequestedChunks = reader.ReadByte();
}
}
@@ -119,23 +119,27 @@ namespace SQP
public byte LastPacket;
public ushort Length;
- public DataStreamWriter.DeferredUShortNetworkByteOrder ToStream(ref DataStreamWriter writer)
+ public DataStreamWriter ToStream(ref DataStreamWriter writer)
{
+ int offset;
Header.Type = (byte)SQPMessageType.QueryResponse;
Header.ToStream(ref writer);
- writer.WriteNetworkByteOrder((UInt16)Version);
- writer.Write((byte)CurrentPacket);
- writer.Write((byte)LastPacket);
- return writer.WriteNetworkByteOrder((UInt16)Length);
+ writer.WriteUShortNetworkByteOrder((UInt16)Version);
+ writer.WriteByte((byte)CurrentPacket);
+ writer.WriteByte((byte)LastPacket);
+ offset = writer.Length;
+ writer.WriteUShortNetworkByteOrder((UInt16)Length);
+ return new DataStreamWriter(writer.AsNativeArray().GetSubArray(offset, sizeof(UInt16)));
+
}
- public void FromStream(DataStreamReader reader, ref DataStreamReader.Context ctx)
+ public void FromStream(ref DataStreamReader reader)
{
- Header.FromStream(reader, ref ctx);
- Version = reader.ReadUShortNetworkByteOrder(ref ctx);
- CurrentPacket = reader.ReadByte(ref ctx);
- LastPacket = reader.ReadByte(ref ctx);
- Length = reader.ReadUShortNetworkByteOrder(ref ctx);
+ Header.FromStream(ref reader);
+ Version = reader.ReadUShortNetworkByteOrder();
+ CurrentPacket = reader.ReadByte();
+ LastPacket = reader.ReadByte();
+ Length = reader.ReadUShortNetworkByteOrder();
}
}
@@ -153,19 +157,19 @@ namespace SQP
encoder.Convert(chars, 0, chars.Length, buffer, 0, byte.MaxValue, true, out charsUsed, out bytesUsed, out completed);
Debug.Assert(bytesUsed <= byte.MaxValue);
- writer.Write((byte)bytesUsed);
+ writer.WriteByte((byte)bytesUsed);
fixed(byte* buf = buffer)
{
writer.WriteBytes(buf, bytesUsed);
}
}
- unsafe public static string ReadString(this DataStreamReader reader, ref DataStreamReader.Context ctx, Encoding encoding)
+ unsafe public static string ReadString(this ref DataStreamReader reader, Encoding encoding)
{
- var length = reader.ReadByte(ref ctx);
+ var length = reader.ReadByte();
fixed(byte* buf = buffer)
{
- reader.ReadBytes(ref ctx, buf, length);
+ reader.ReadBytes( buf, length);
}
return encoding.GetString(buffer, 0, length);
}
@@ -194,30 +198,32 @@ namespace SQP
public string Map = "";
public ushort Port;
- public void ToStream(ref DataStreamWriter writer)
+ public int ToStream(ref DataStreamWriter writer)
{
- writer.WriteNetworkByteOrder((UInt16)CurrentPlayers);
- writer.WriteNetworkByteOrder((UInt16)MaxPlayers);
+ int len;
+ writer.WriteUShortNetworkByteOrder((UInt16)CurrentPlayers);
+ writer.WriteUShortNetworkByteOrder((UInt16)MaxPlayers);
writer.WriteString(ServerName, encoding);
writer.WriteString(GameType, encoding);
writer.WriteString(BuildId, encoding);
writer.WriteString(Map, encoding);
-
- writer.WriteNetworkByteOrder((UInt16)Port);
+ len = writer.Length; // return the byte offset of the Port in the length
+ writer.WriteUShortNetworkByteOrder((UInt16)Port);
+ return len;
}
- public void FromStream(DataStreamReader reader, ref DataStreamReader.Context ctx)
+ public void FromStream(ref DataStreamReader reader)
{
- CurrentPlayers = reader.ReadUShortNetworkByteOrder(ref ctx);
- MaxPlayers = reader.ReadUShortNetworkByteOrder(ref ctx);
+ CurrentPlayers = reader.ReadUShortNetworkByteOrder();
+ MaxPlayers = reader.ReadUShortNetworkByteOrder();
- ServerName = reader.ReadString(ref ctx, encoding);
- GameType = reader.ReadString(ref ctx, encoding);
- BuildId = reader.ReadString(ref ctx, encoding);
- Map = reader.ReadString(ref ctx, encoding);
+ ServerName = reader.ReadString( encoding);
+ GameType = reader.ReadString( encoding);
+ BuildId = reader.ReadString( encoding);
+ Map = reader.ReadString( encoding);
- Port = reader.ReadUShortNetworkByteOrder(ref ctx);
+ Port = reader.ReadUShortNetworkByteOrder();
}
}
@@ -227,26 +233,29 @@ namespace SQP
var start = (ushort)writer.Length;
- var chunkValue = writer.WriteNetworkByteOrder((uint)0);
+ writer.WriteUIntNetworkByteOrder((uint)0);
+ var chunkValue = new DataStreamWriter(writer.AsNativeArray().GetSubArray(start, sizeof(uint)));
var chunkStart = writer.Length;
ServerInfoData.ToStream(ref writer);
ChunkLen = (uint)(writer.Length - chunkStart);
QueryHeader.Length = (ushort)(writer.Length - start);
- lengthValue.Update(QueryHeader.Length);
- chunkValue.Update(ChunkLen);
+ //lengthValue.Update(QueryHeader.Length);
+ lengthValue.WriteUShortNetworkByteOrder(QueryHeader.Length);
+ //chunkValue.Update(ChunkLen);
+ lengthValue.WriteUIntNetworkByteOrder(ChunkLen);
var length = (ushort)System.Net.IPAddress.HostToNetworkOrder((short)QueryHeader.Length);
var chunkLen = (uint)System.Net.IPAddress.HostToNetworkOrder((int)ChunkLen);
}
- public void FromStream(DataStreamReader reader, ref DataStreamReader.Context ctx)
+ public void FromStream(ref DataStreamReader reader)
{
- QueryHeader.FromStream(reader, ref ctx);
- ChunkLen = reader.ReadUIntNetworkByteOrder(ref ctx);
+ QueryHeader.FromStream(ref reader);
+ ChunkLen = reader.ReadUIntNetworkByteOrder();
- ServerInfoData.FromStream(reader, ref ctx);
+ ServerInfoData.FromStream(ref reader);
}
static private Encoding encoding = new UTF8Encoding();
@@ -358,7 +367,8 @@ namespace SQP
var req = new ChallangeRequest();
req.ToStream(ref writer);
- writer.CopyTo(0, writer.Length, ref m_Buffer);
+ //writer.CopyTo(0, writer.Length, ref m_Buffer);
+ writer.AsNativeArray().CopyTo(m_Buffer);
m_Socket.SendTo(m_Buffer, writer.Length, SocketFlags.None, q.m_Server);
q.m_State = SQPClientState.WaitingForChallange;
}
@@ -374,9 +384,10 @@ namespace SQP
req.ToStream(ref writer);
q.m_State = SQPClientState.WaitingForResponse;
- writer.CopyTo(0, writer.Length, ref m_Buffer);
+ //writer.CopyTo(0, writer.Length, ref m_Buffer);
+ writer.AsNativeArray().CopyTo(m_Buffer);
m_Socket.SendTo(m_Buffer, writer.Length, SocketFlags.None, q.m_Server);
- writer.Dispose();
+ //writer.Dispose();
}
public void Update()
@@ -387,13 +398,15 @@ namespace SQP
if (read > 0)
{
// Transfer incoming data in m_Buffer into a DataStreamReader
- var writer = new DataStreamWriter(m_Buffer.Length, Unity.Collections.Allocator.Temp);
- writer.Write(m_Buffer, read);
- var reader = new DataStreamReader(writer, 0, read);
- var ctx = default(DataStreamReader.Context);
+ //var writer = new DataStreamWriter(m_Buffer.Length, Unity.Collections.Allocator.Temp);
+ //byte = &m_Buffer[0];
+ //writer.WriteBytes(pbArr, read);
+ Unity.Collections.NativeArray<byte> written = new Unity.Collections.NativeArray<byte>(m_Buffer, Unity.Collections.Allocator.Temp);
+ var reader = new DataStreamReader(written);
+ //var ctx = default(DataStreamReader.Context);
var header = new SQPHeader();
- header.FromStream(reader, ref ctx);
+ header.FromStream(ref reader);
foreach (var q in m_Queries)
{
@@ -420,8 +433,8 @@ namespace SQP
case SQPClientState.WaitingForResponse:
if ((SQPMessageType)header.Type == SQPMessageType.QueryResponse)
{
- ctx = default(DataStreamReader.Context);
- q.m_ServerInfo.FromStream(reader, ref ctx);
+ //ctx = default(DataStreamReader.Context);
+ q.m_ServerInfo.FromStream(ref reader);
// We report the average of two measurements
q.RTT = (q.RTT + (NetworkUtils.stopwatch.ElapsedMilliseconds - q.StartTime)) / 2;
@@ -497,13 +510,14 @@ namespace SQP
int read = m_Socket.ReceiveFrom(m_Buffer, m_Buffer.Length, SocketFlags.None, ref endpoint);
if (read > 0)
{
- var bufferWriter = new DataStreamWriter(m_Buffer.Length, Unity.Collections.Allocator.Temp);
- bufferWriter.Write(m_Buffer, read);
- var reader = new DataStreamReader(bufferWriter, 0, read);
- var ctx = default(DataStreamReader.Context);
+ //var bufferWriter = new DataStreamWriter(m_Buffer.Length, Unity.Collections.Allocator.Temp);
+ //bufferWriter.Write(m_Buffer, read);
+ Unity.Collections.NativeArray<byte> written = new Unity.Collections.NativeArray<byte>(m_Buffer, Unity.Collections.Allocator.Temp);
+ var reader = new DataStreamReader(written);
+ //var ctx = default(DataStreamReader.Context);
var header = new SQPHeader();
- header.FromStream(reader, ref ctx);
+ header.FromStream(ref reader);
SQPMessageType type = (SQPMessageType)header.Type;
@@ -521,7 +535,7 @@ namespace SQP
rsp.Header.ChallangeId = token;
rsp.ToStream(ref writer);
- writer.CopyTo(0, writer.Length, ref m_Buffer);
+ writer.AsNativeArray().CopyTo(m_Buffer);
m_Socket.SendTo(m_Buffer, writer.Length, SocketFlags.None, endpoint);
m_OutstandingTokens.Add(endpoint, token);
@@ -538,9 +552,9 @@ namespace SQP
}
m_OutstandingTokens.Remove(endpoint);
- ctx = default(DataStreamReader.Context);
+
var req = new QueryRequest();
- req.FromStream(reader, ref ctx);
+ req.FromStream(ref reader);
if ((SQPChunkType)req.RequestedChunks == SQPChunkType.ServerInfo)
{
@@ -549,7 +563,9 @@ namespace SQP
rsp.QueryHeader.Header.ChallangeId = token;
rsp.ToStream(ref writer);
- writer.CopyTo(0, writer.Length, ref m_Buffer);
+ //writer.CopyTo(0, writer.Length, ref m_Buffer);
+
+ writer.AsNativeArray().CopyTo(m_Buffer);
m_Socket.SendTo(m_Buffer, writer.Length, SocketFlags.None, endpoint);
}
}
diff --git a/Assets/Scripts/Networking/Editor/Tests/SQPTests.cs b/Assets/Scripts/Networking/Editor/Tests/SQPTests.cs
index f06d33f..f72c992 100644
--- a/Assets/Scripts/Networking/Editor/Tests/SQPTests.cs
+++ b/Assets/Scripts/Networking/Editor/Tests/SQPTests.cs
@@ -1,4 +1,4 @@
-using System;
+using System;
using System.Threading;
using System.Net;
using NUnit.Framework;
@@ -18,7 +18,7 @@ namespace TransportTests
DataStreamReader reader;
DataStreamWriter writer;
- DataStreamReader.Context context;
+ //DataStreamReader.Context context;
[SetUp]
public void Setup()
@@ -30,7 +30,7 @@ namespace TransportTests
[TearDown]
public void Teardown()
{
- writer.Dispose();
+ //writer.Dispose();
}
[Test]
@@ -39,10 +39,10 @@ namespace TransportTests
var snd = new ChallangeRequest();
snd.ToStream(ref writer);
- reader = new DataStreamReader(writer, 0, writer.Length);
- context = default(DataStreamReader.Context);
+ reader = new DataStreamReader(writer.AsNativeArray());
+ //context = default(DataStreamReader.Context);
var rcv = new ChallangeRequest();
- rcv.FromStream(reader, ref context);
+ rcv.FromStream(ref reader);
Assert.AreEqual((byte)SQPMessageType.ChallangeRequest, rcv.Header.Type);
}
@@ -59,9 +59,9 @@ namespace TransportTests
var rcv = new ChallangeResponse();
- reader = new DataStreamReader(writer, 0, writer.Length);
- context = default(DataStreamReader.Context);
- rcv.FromStream(reader, ref context);
+ reader = new DataStreamReader(writer.AsNativeArray());
+ //context = default(DataStreamReader.Context);
+ rcv.FromStream(ref reader);
Assert.AreEqual((byte)SQPMessageType.ChallangeResponse, rcv.Header.Type);
Assert.AreEqual(id, (uint)rcv.Header.ChallangeId);
@@ -81,9 +81,9 @@ namespace TransportTests
snd.ToStream(ref writer);
var rcv = new QueryRequest();
- reader = new DataStreamReader(writer, 0, writer.Length);
- context = default(DataStreamReader.Context);
- rcv.FromStream(reader, ref context);
+ reader = new DataStreamReader(writer.AsNativeArray());
+ //context = default(DataStreamReader.Context);
+ rcv.FromStream(ref reader);
Assert.AreEqual((byte)SQPMessageType.QueryRequest, rcv.Header.Type);
Assert.AreEqual(id, (uint)rcv.Header.ChallangeId);
@@ -108,9 +108,9 @@ namespace TransportTests
snd.ToStream(ref writer);
var rcv = new QueryResponseHeader();
- var reader = new DataStreamReader(writer, 0, writer.Length);
- context = default(DataStreamReader.Context);
- rcv.FromStream(reader, ref context);
+ var reader = new DataStreamReader(writer.AsNativeArray());
+ //context = default(DataStreamReader.Context);
+ rcv.FromStream(ref reader);
Assert.AreEqual((byte)SQPMessageType.QueryResponse, rcv.Header.Type);
Assert.AreEqual(id, (uint)rcv.Header.ChallangeId);
@@ -131,12 +131,12 @@ namespace TransportTests
writer.WriteString(sendLong, encoding);
writer.WriteString(sendUTF, encoding);
- reader = new DataStreamReader(writer, 0, writer.Length);
- context = default(DataStreamReader.Context);
+ reader = new DataStreamReader(writer.AsNativeArray());
+ //context = default(DataStreamReader.Context);
- var recvShort = reader.ReadString(ref context, encoding);
- var recvLong = reader.ReadString(ref context, encoding);
- var recvUTF = reader.ReadString(ref context, encoding);
+ var recvShort = reader.ReadString( encoding);
+ var recvLong = reader.ReadString( encoding);
+ var recvUTF = reader.ReadString( encoding);
Assert.AreEqual(sendShort, recvShort);
@@ -175,9 +175,9 @@ namespace TransportTests
snd.ToStream(ref writer);
var rcv = new SQP.ServerInfo();
- reader = new DataStreamReader(writer, 0, writer.Length);
- context = default(DataStreamReader.Context);
- rcv.FromStream(reader, ref context);
+ reader = new DataStreamReader(writer.AsNativeArray());
+ //context = default(DataStreamReader.Context);
+ rcv.FromStream(ref reader);
Assert.AreEqual((byte)SQPMessageType.QueryResponse, rcv.QueryHeader.Header.Type);
Assert.AreEqual((uint)header.Header.ChallangeId, (uint)rcv.QueryHeader.Header.ChallangeId);
diff --git a/Assets/Scripts/Game/Main/ThinClientGameLoop.cs b/Assets/Scripts/Game/Main/ThinClientGameLoop.cs
index 8dff4d3..73c69d5 100644
--- a/Assets/Scripts/Game/Main/ThinClientGameLoop.cs
+++ b/Assets/Scripts/Game/Main/ThinClientGameLoop.cs
@@ -1,4 +1,4 @@
-using System.Collections.Generic;
+using System.Collections.Generic;
using UnityEngine;
using Unity.Entities;
using UnityEngine.Profiling;
@@ -328,8 +328,10 @@ public class ThinClient : INetworkCallbacks, INetworkClientCallbacks
#pragma warning disable 618
// we're keeping World.Active until we can properly remove them all
// TODO (timj) not compatible with dots netcode
- m_GameWorld = World.Active;
- World.Active.CreateSystem<GameTimeSystem>();
+
+ m_GameWorld = World.DefaultGameObjectInjectionWorld;
+
+ m_GameWorld.CreateSystem<GameTimeSystem>();
#pragma warning restore 618
@@ -540,8 +542,8 @@ public class ThinClient : INetworkCallbacks, INetworkClientCallbacks
#pragma warning disable 618
// we're keeping World.Active until we can properly remove them all
// FIXME: not compatible with dots netcode
- m_GameWorld = World.Active;
- World.Active.CreateSystem<GameTimeSystem>();
+ m_GameWorld = World.DefaultGameObjectInjectionWorld;
+ m_GameWorld.CreateSystem<GameTimeSystem>();
#pragma warning restore 618
//Game.game.clientFrontend.ShowMenu(ClientFrontend.MenuShowing.None);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment