File tree Expand file tree Collapse file tree 2 files changed +31
-4
lines changed Expand file tree Collapse file tree 2 files changed +31
-4
lines changed Original file line number Diff line number Diff line change @@ -381,7 +381,18 @@ private void Init(bool server)
381
381
382
382
for ( int i = 0 ; i < NetworkConfig . NetworkedPrefabs . Count ; i ++ )
383
383
{
384
- NetworkConfig . NetworkedPrefabs [ i ] . Prefab . GetComponent < NetworkedObject > ( ) . ValidateHash ( ) ;
384
+ if ( NetworkConfig . NetworkedPrefabs [ i ] == null || NetworkConfig . NetworkedPrefabs [ i ] . Prefab == null )
385
+ {
386
+ if ( LogHelper . CurrentLogLevel <= LogLevel . Error ) LogHelper . LogError ( "Networked prefab cannot be null" ) ;
387
+ }
388
+ else if ( NetworkConfig . NetworkedPrefabs [ i ] . Prefab . GetComponent < NetworkedObject > ( ) == null )
389
+ {
390
+ if ( LogHelper . CurrentLogLevel <= LogLevel . Error ) LogHelper . LogError ( "Networked prefab is missing a NetworkedObject component" ) ;
391
+ }
392
+ else
393
+ {
394
+ NetworkConfig . NetworkedPrefabs [ i ] . Prefab . GetComponent < NetworkedObject > ( ) . ValidateHash ( ) ;
395
+ }
385
396
}
386
397
387
398
NetworkConfig . NetworkTransport . OnTransportEvent += HandleRawTransportPoll ;
@@ -615,7 +626,7 @@ private void Shutdown()
615
626
private float lastTimeSyncTime ;
616
627
private void Update ( )
617
628
{
618
- if ( IsListening )
629
+ if ( IsListening )
619
630
{
620
631
if ( ( NetworkTime - lastReceiveTickTime >= ( 1f / NetworkConfig . ReceiveTickrate ) ) || NetworkConfig . ReceiveTickrate <= 0 )
621
632
{
@@ -634,6 +645,12 @@ private void Update()
634
645
NetworkProfiler . EndTick ( ) ;
635
646
}
636
647
648
+ if ( ! IsListening )
649
+ {
650
+ // If we get disconnected in the previous poll. IsListening will be set to false.
651
+ return ;
652
+ }
653
+
637
654
if ( ( ( NetworkTime - lastEventTickTime >= ( 1f / NetworkConfig . EventTickrate ) ) ) )
638
655
{
639
656
NetworkProfiler . StartTick ( TickType . Event ) ;
Original file line number Diff line number Diff line change @@ -80,11 +80,21 @@ private RpcTypeDefinition(Type type)
80
80
81
81
Dictionary < ulong , ReflectionMethod > lookupTarget = rpcMethod . serverTarget ? serverMethods : clientMethods ;
82
82
83
- lookupTarget . Add ( HashMethodNameAndValidate ( method . Name ) , rpcMethod ) ;
83
+ ulong nameHash = HashMethodNameAndValidate ( method . Name ) ;
84
+
85
+ if ( ! lookupTarget . ContainsKey ( nameHash ) )
86
+ {
87
+ lookupTarget . Add ( nameHash , rpcMethod ) ;
88
+ }
84
89
85
90
if ( parameters . Length > 0 )
86
91
{
87
- lookupTarget . Add ( HashMethodNameAndValidate ( NetworkedBehaviour . GetHashableMethodSignature ( method ) ) , rpcMethod ) ;
92
+ ulong signatureHash = HashMethodNameAndValidate ( NetworkedBehaviour . GetHashableMethodSignature ( method ) ) ;
93
+
94
+ if ( ! lookupTarget . ContainsKey ( signatureHash ) )
95
+ {
96
+ lookupTarget . Add ( signatureHash , rpcMethod ) ;
97
+ }
88
98
}
89
99
90
100
if ( rpcMethod . useDelegate )
You can’t perform that action at this time.
0 commit comments