@@ -12,7 +12,7 @@ namespace MLAPI.Prototyping
12
12
/// A prototype component for syncing transforms
13
13
/// </summary>
14
14
[ AddComponentMenu ( "MLAPI/NetworkTransform" ) ]
15
- [ DefaultExecutionOrder ( 10000 ) ]
15
+ [ DefaultExecutionOrder ( 1000000 ) ]
16
16
public class NetworkTransform : NetworkBehaviour
17
17
{
18
18
/// <summary>
@@ -160,11 +160,10 @@ private bool IsTransformDirty()
160
160
161
161
private double previousTimeSam ;
162
162
private Vector3 previousPosSam ;
163
- private void UpdateNetworkState ( )
163
+ private void SendNetworkStateToGhosts ( double dirtyTime )
164
164
{
165
165
m_NetworkState . Value . InLocalSpace = InLocalSpace ;
166
- // m_NetworkState.Value.SentTime = Time.realtimeSinceStartup;
167
- m_NetworkState . Value . SentTime = m_DirtyTime ;
166
+ m_NetworkState . Value . SentTime = dirtyTime ;
168
167
if ( InLocalSpace )
169
168
{
170
169
m_NetworkState . Value . Position = m_Transform . localPosition ;
@@ -177,15 +176,15 @@ private void UpdateNetworkState()
177
176
m_NetworkState . Value . Rotation = m_Transform . rotation ;
178
177
m_NetworkState . Value . Scale = m_Transform . lossyScale ;
179
178
}
180
-
179
+ Debug . DrawLine ( m_NetworkState . Value . Position , m_NetworkState . Value . Position + Vector3 . up * 100f * ( float ) ( m_NetworkState . Value . SentTime - previousTimeSam ) , Color . yellow , 10 , false ) ;
181
180
Debug . Log ( $ "sam asdf distance { Math . Round ( ( m_NetworkState . Value . Position - previousPosSam ) . magnitude , 2 ) } tick diff { m_NetworkState . Value . SentTime - previousTimeSam } sam") ;
182
181
previousTimeSam = m_NetworkState . Value . SentTime ;
183
182
previousPosSam = m_NetworkState . Value . Position ;
184
183
185
184
m_NetworkState . SetDirty ( true ) ;
186
185
}
187
186
188
- private void ApplyNetworkState ( NetworkState netState )
187
+ private void ApplyNetworkStateFromAuthority ( NetworkState netState )
189
188
{
190
189
netState = new NetworkState ( netState ) ;
191
190
netState . Position = PositionInterpolator . GetInterpolatedValue ( ) ;
@@ -212,6 +211,7 @@ private void ApplyNetworkState(NetworkState netState)
212
211
213
212
214
213
private int oldTick ;
214
+ private NetworkState debug_previousStateChanged ;
215
215
private void OnNetworkStateChanged ( NetworkState oldState , NetworkState newState )
216
216
{
217
217
if ( ! NetworkObject . IsSpawned )
@@ -237,6 +237,8 @@ private void OnNetworkStateChanged(NetworkState oldState, NetworkState newState)
237
237
Debug . Log ( $ "distance sam { Math . Round ( ( newState . Position - oldState . Position ) . magnitude , 2 ) } ") ;
238
238
Debug . Log ( $ "diff tick sam { ( newState . SentTime - oldState . SentTime , 2 ) } ") ;
239
239
// oldTick = NetworkManager.Singleton.ServerTime.Tick;
240
+ // Debug.DrawLine(newState.Position, newState.Position + Vector3.down + Vector3.left, Color.yellow, 10, false);
241
+ debug_previousStateChanged = newState ;
240
242
var sentTime = new NetworkTime ( NetworkManager . Singleton . ServerTime . TickRate , newState . SentTime ) ;
241
243
PositionInterpolator . AddMeasurement ( newState . Position , sentTime ) ;
242
244
RotationInterpolator . AddMeasurement ( newState . Rotation , sentTime ) ;
@@ -320,22 +322,22 @@ private void FixedUpdate()
320
322
{
321
323
return ;
322
324
}
323
- if ( CanUpdateTransform )
324
- {
325
- if ( IsTransformDirty ( ) )
326
- {
327
- // check for time there was a change to the transform
328
- m_DirtyTime = NetworkManager . LocalTime . Time ;
329
- }
330
-
331
- UpdateNetworkState ( ) ;
332
- }
333
- else
325
+ // if (CanUpdateTransform)
326
+ // {
327
+ // if (IsTransformDirty())
328
+ // {
329
+ // // check for time there was a change to the transform
330
+ // m_DirtyTime = NetworkManager.LocalTime.Time;
331
+ // }
332
+ //
333
+ // UpdateNetworkState();
334
+ // }
335
+ // else
334
336
{
335
337
if ( IsNetworkStateDirty ( m_PrevNetworkState ) )
336
338
{
337
339
Debug . LogWarning ( "A local change without authority detected, revert back to latest network state!" ) ;
338
- ApplyNetworkState ( m_NetworkState . Value ) ;
340
+ ApplyNetworkStateFromAuthority ( m_NetworkState . Value ) ;
339
341
}
340
342
341
343
PositionInterpolator . FixedUpdate ( NetworkManager . ServerTime . FixedDeltaTime ) ;
@@ -345,15 +347,21 @@ private void FixedUpdate()
345
347
346
348
private int debugOldTime = 0 ;
347
349
348
- private double m_DirtyTime ;
349
-
350
350
private void Update ( )
351
351
{
352
352
if ( ! NetworkObject . IsSpawned )
353
353
{
354
354
return ;
355
355
}
356
356
357
+ if ( CanUpdateTransform )
358
+ {
359
+ if ( IsTransformDirty ( ) )
360
+ {
361
+ // check for time there was a change to the transform
362
+ SendNetworkStateToGhosts ( NetworkManager . LocalTime . Time ) ;
363
+ }
364
+ }
357
365
358
366
if ( ! CanUpdateTransform )
359
367
{
@@ -364,7 +372,7 @@ private void Update()
364
372
365
373
PositionInterpolator . Update ( Time . deltaTime ) ;
366
374
RotationInterpolator . Update ( Time . deltaTime ) ;
367
- ApplyNetworkState ( m_NetworkState . Value ) ;
375
+ ApplyNetworkStateFromAuthority ( m_NetworkState . Value ) ;
368
376
}
369
377
}
370
378
0 commit comments