public void CreateServerDriver(World world, out NetworkDriver driver, out NetworkPipeline unreliablePipeline, out NetworkPipeline reliablePipeline, out NetworkPipeline unreliableFragmentedPipeline) { var reliabilityParams = new ReliableUtility.Parameters { WindowSize = 32 }; var fragmentationParams = new FragmentationUtility.Parameters { PayloadCapacity = 16 * 1024 }; #if UNITY_EDITOR || DEVELOPMENT_BUILD var netParams = new NetworkConfigParameter { maxConnectAttempts = NetworkParameterConstants.MaxConnectAttempts, connectTimeoutMS = NetworkParameterConstants.ConnectTimeoutMS, disconnectTimeoutMS = NetworkParameterConstants.DisconnectTimeoutMS, maxFrameTimeMS = 100 }; driver = NetworkDriver.Create(netParams, reliabilityParams, fragmentationParams); #else driver = NetworkDriver.Create(reliabilityParams); #endif unreliablePipeline = driver.CreatePipeline(typeof(NullPipelineStage)); reliablePipeline = driver.CreatePipeline(typeof(ReliableSequencedPipelineStage)); unreliableFragmentedPipeline = driver.CreatePipeline(typeof(FragmentationPipelineStage)); }
public void CreateClientDriver(World world, out NetworkDriver driver, out NetworkPipeline unreliablePipeline, out NetworkPipeline reliablePipeline, out NetworkPipeline unreliableFragmentedPipeline) { var reliabilityParams = new ReliableUtility.Parameters { WindowSize = 32 }; var fragmentationParams = new FragmentationUtility.Parameters { PayloadCapacity = 16 * 1024 }; #if UNITY_EDITOR || DEVELOPMENT_BUILD var netParams = new NetworkConfigParameter { maxConnectAttempts = NetworkParameterConstants.MaxConnectAttempts, connectTimeoutMS = NetworkParameterConstants.ConnectTimeoutMS, disconnectTimeoutMS = NetworkParameterConstants.DisconnectTimeoutMS, maxFrameTimeMS = 100 }; var simulatorParams = ClientSimulatorParameters; driver = NetworkDriver.Create(netParams, simulatorParams, reliabilityParams, fragmentationParams); #else driver = NetworkDriver.Create(reliabilityParams); #endif #if UNITY_EDITOR || DEVELOPMENT_BUILD if (simulatorParams.PacketDelayMs > 0 || simulatorParams.PacketDropInterval > 0) { unreliablePipeline = driver.CreatePipeline( typeof(SimulatorPipelineStage), typeof(SimulatorPipelineStageInSend)); reliablePipeline = driver.CreatePipeline( typeof(SimulatorPipelineStage), typeof(ReliableSequencedPipelineStage), typeof(SimulatorPipelineStageInSend)); unreliableFragmentedPipeline = driver.CreatePipeline( typeof(SimulatorPipelineStage), typeof(FragmentationPipelineStage), typeof(SimulatorPipelineStageInSend)); } else #endif { unreliablePipeline = driver.CreatePipeline(typeof(NullPipelineStage)); reliablePipeline = driver.CreatePipeline(typeof(ReliableSequencedPipelineStage)); unreliableFragmentedPipeline = driver.CreatePipeline(typeof(FragmentationPipelineStage)); } }
public NetworkPipelineStage StaticInitialize(byte *staticInstanceBuffer, int staticInstanceBufferLength, INetworkParameter[] netParams) { FragmentationUtility.Parameters param = default; foreach (var netParam in netParams) { if (netParam is FragmentationUtility.Parameters) { param = (FragmentationUtility.Parameters)netParam; } } var payloadCapacity = param.PayloadCapacity; if (payloadCapacity == 0) { payloadCapacity = 4 * 1024; } if (payloadCapacity <= NetworkParameterConstants.MTU) { throw new InvalidOperationException($"Please specify a FragmentationUtility.Parameters with a PayloadCapacity greater than MTU, which is {NetworkParameterConstants.MTU}"); } param.PayloadCapacity = payloadCapacity; UnsafeUtility.MemCpy(staticInstanceBuffer, ¶m, UnsafeUtility.SizeOf <FragmentationUtility.Parameters>()); return(new NetworkPipelineStage( Receive: ReceiveFunctionPointer, Send: SendFunctionPointer, InitializeConnection: InitializeConnectionFunctionPointer, ReceiveCapacity: sizeof(FragContext) + payloadCapacity, SendCapacity: sizeof(FragContext) + payloadCapacity, HeaderCapacity: FragHeaderCapacity, SharedStateCapacity: 0, param.PayloadCapacity )); }