@@ -10,8 +10,8 @@ namespace MLAP
10
10
{
11
11
public class NetworkedTransform : NetworkedBehaviour
12
12
{
13
- [ Range ( 0 , 120 ) ]
14
- public int SendsPerSecond = 20 ;
13
+ [ Range ( 0f , 120f ) ]
14
+ public float SendsPerSecond = 20 ;
15
15
[ Tooltip ( "This assumes that the SendsPerSecond is synced across clients" ) ]
16
16
public bool AssumeSyncedSends = true ;
17
17
[ Tooltip ( "This requires AssumeSyncedSends to be true" ) ]
@@ -32,6 +32,10 @@ public class NetworkedTransform : NetworkedBehaviour
32
32
private Vector3 lastSentPos ;
33
33
private Quaternion lastSentRot ;
34
34
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
+
35
39
private void OnValidate ( )
36
40
{
37
41
if ( ! AssumeSyncedSends && InterpolatePosition )
@@ -161,7 +165,20 @@ private void OnRecieveTransformFromClient(int clientId, byte[] data)
161
165
writer . Write ( yRot ) ;
162
166
writer . Write ( zRot ) ;
163
167
}
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
+ }
165
182
}
166
183
}
167
184
}
0 commit comments