@@ -10,8 +10,8 @@ namespace MLAP
1010{
1111 public class NetworkedTransform : NetworkedBehaviour
1212 {
13- [ Range ( 0 , 120 ) ]
14- public int SendsPerSecond = 20 ;
13+ [ Range ( 0f , 120f ) ]
14+ public float SendsPerSecond = 20 ;
1515 [ Tooltip ( "This assumes that the SendsPerSecond is synced across clients" ) ]
1616 public bool AssumeSyncedSends = true ;
1717 [ Tooltip ( "This requires AssumeSyncedSends to be true" ) ]
@@ -32,6 +32,10 @@ public class NetworkedTransform : NetworkedBehaviour
3232 private Vector3 lastSentPos ;
3333 private Quaternion lastSentRot ;
3434
35+ public bool EnableProximity = false ;
36+ [ Header ( "If enable proximity is turned on, on clients within this range will be recieving position updates from the server" ) ]
37+ public float ProximityRange = 50 ;
38+
3539 private void OnValidate ( )
3640 {
3741 if ( ! AssumeSyncedSends && InterpolatePosition )
@@ -161,7 +165,20 @@ private void OnRecieveTransformFromClient(int clientId, byte[] data)
161165 writer . Write ( yRot ) ;
162166 writer . Write ( zRot ) ;
163167 }
164- SendToNonLocalClientsTarget ( "MLAPI_OnRecieveTransformFromServer" , "MLAPI_POSITION_UPDATE" , writeStream . GetBuffer ( ) ) ;
168+ if ( EnableProximity )
169+ {
170+ for ( int i = 0 ; i < NetworkingManager . singleton . connectedClients . Count ; i ++ )
171+ {
172+ if ( Vector3 . Distance ( NetworkingManager . singleton . connectedClients [ i ] . PlayerObject . transform . position , transform . position ) <= ProximityRange )
173+ {
174+ SendToClientTarget ( NetworkingManager . singleton . connectedClients [ i ] . ClientId , "MLAPI_OnRecieveTransformFromServer" , "MLAPI_POSITION_UPDATE" , writeStream . GetBuffer ( ) ) ;
175+ }
176+ }
177+ }
178+ else
179+ {
180+ SendToNonLocalClientsTarget ( "MLAPI_OnRecieveTransformFromServer" , "MLAPI_POSITION_UPDATE" , writeStream . GetBuffer ( ) ) ;
181+ }
165182 }
166183 }
167184 }
0 commit comments