Skip to content

Commit e7bbd12

Browse files
committed
#
1 parent db9688c commit e7bbd12

File tree

3 files changed

+36
-28
lines changed

3 files changed

+36
-28
lines changed

com.unity.multiplayer.mlapi/Prototyping/NetworkTransform.cs

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ namespace MLAPI.Prototyping
1212
/// A prototype component for syncing transforms
1313
/// </summary>
1414
[AddComponentMenu("MLAPI/NetworkTransform")]
15-
[DefaultExecutionOrder(10000)]
15+
[DefaultExecutionOrder(1000000)]
1616
public class NetworkTransform : NetworkBehaviour
1717
{
1818
/// <summary>
@@ -160,11 +160,10 @@ private bool IsTransformDirty()
160160

161161
private double previousTimeSam;
162162
private Vector3 previousPosSam;
163-
private void UpdateNetworkState()
163+
private void SendNetworkStateToGhosts(double dirtyTime)
164164
{
165165
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;
168167
if (InLocalSpace)
169168
{
170169
m_NetworkState.Value.Position = m_Transform.localPosition;
@@ -177,15 +176,15 @@ private void UpdateNetworkState()
177176
m_NetworkState.Value.Rotation = m_Transform.rotation;
178177
m_NetworkState.Value.Scale = m_Transform.lossyScale;
179178
}
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);
181180
Debug.Log($"sam asdf distance {Math.Round((m_NetworkState.Value.Position - previousPosSam).magnitude, 2)} tick diff {m_NetworkState.Value.SentTime - previousTimeSam} sam");
182181
previousTimeSam = m_NetworkState.Value.SentTime;
183182
previousPosSam = m_NetworkState.Value.Position;
184183

185184
m_NetworkState.SetDirty(true);
186185
}
187186

188-
private void ApplyNetworkState(NetworkState netState)
187+
private void ApplyNetworkStateFromAuthority(NetworkState netState)
189188
{
190189
netState = new NetworkState(netState);
191190
netState.Position = PositionInterpolator.GetInterpolatedValue();
@@ -212,6 +211,7 @@ private void ApplyNetworkState(NetworkState netState)
212211

213212

214213
private int oldTick;
214+
private NetworkState debug_previousStateChanged;
215215
private void OnNetworkStateChanged(NetworkState oldState, NetworkState newState)
216216
{
217217
if (!NetworkObject.IsSpawned)
@@ -237,6 +237,8 @@ private void OnNetworkStateChanged(NetworkState oldState, NetworkState newState)
237237
Debug.Log($"distance sam {Math.Round((newState.Position - oldState.Position).magnitude, 2)}");
238238
Debug.Log($"diff tick sam {(newState.SentTime - oldState.SentTime, 2)}");
239239
// oldTick = NetworkManager.Singleton.ServerTime.Tick;
240+
// Debug.DrawLine(newState.Position, newState.Position + Vector3.down + Vector3.left, Color.yellow, 10, false);
241+
debug_previousStateChanged = newState;
240242
var sentTime = new NetworkTime(NetworkManager.Singleton.ServerTime.TickRate, newState.SentTime);
241243
PositionInterpolator.AddMeasurement(newState.Position, sentTime);
242244
RotationInterpolator.AddMeasurement(newState.Rotation, sentTime);
@@ -320,22 +322,22 @@ private void FixedUpdate()
320322
{
321323
return;
322324
}
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
334336
{
335337
if (IsNetworkStateDirty(m_PrevNetworkState))
336338
{
337339
Debug.LogWarning("A local change without authority detected, revert back to latest network state!");
338-
ApplyNetworkState(m_NetworkState.Value);
340+
ApplyNetworkStateFromAuthority(m_NetworkState.Value);
339341
}
340342

341343
PositionInterpolator.FixedUpdate(NetworkManager.ServerTime.FixedDeltaTime);
@@ -345,15 +347,21 @@ private void FixedUpdate()
345347

346348
private int debugOldTime = 0;
347349

348-
private double m_DirtyTime;
349-
350350
private void Update()
351351
{
352352
if (!NetworkObject.IsSpawned)
353353
{
354354
return;
355355
}
356356

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+
}
357365

358366
if (!CanUpdateTransform)
359367
{
@@ -364,7 +372,7 @@ private void Update()
364372

365373
PositionInterpolator.Update(Time.deltaTime);
366374
RotationInterpolator.Update(Time.deltaTime);
367-
ApplyNetworkState(m_NetworkState.Value);
375+
ApplyNetworkStateFromAuthority(m_NetworkState.Value);
368376
}
369377
}
370378

testproject/Assets/MoveInCircle.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public class MoveInCircle : NetworkBehaviour
1313
public bool runServerOnly;
1414
public bool runInUpdate;
1515

16-
private Vector3 oldPosition;
16+
private Vector3 debug_oldPosition;
1717

1818
// public override void OnNetworkSpawn()
1919
// {
@@ -33,9 +33,9 @@ void Tick(float deltaTime)
3333
{
3434
if (NetworkManager.Singleton.IsServer || !runServerOnly)
3535
{
36-
oldPosition = transform.position;
36+
debug_oldPosition = transform.position;
3737
transform.position = transform.position + transform.forward * (m_MoveSpeed * deltaTime);
38-
Debug.Log($"ewqqwe {Math.Round((transform.position - oldPosition).magnitude, 2)} time diff {Math.Round(Time.time - lastTime, 2)}");
38+
// Debug.Log($"ewqqwe {Math.Round((transform.position - debug_oldPosition).magnitude, 2)} time diff {Math.Round(Time.time - lastTime, 2)}");
3939
lastTime = Time.time;
4040
transform.Rotate(0, m_RotationSpeed * deltaTime, 0);
4141
}

testproject/Assets/Scenes/ZooSam.unity

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6194,9 +6194,9 @@ MonoBehaviour:
61946194
MaxConnectAttempts: 10
61956195
channels: []
61966196
MessageBufferSize: 5120
6197-
SimulatePacketLossChance: 5
6198-
SimulateMinLatency: 70
6199-
SimulateMaxLatency: 130
6197+
SimulatePacketLossChance: 0
6198+
SimulateMinLatency: 0
6199+
SimulateMaxLatency: 0
62006200
--- !u!1001 &627808638
62016201
PrefabInstance:
62026202
m_ObjectHideFlags: 0
@@ -7402,7 +7402,7 @@ MonoBehaviour:
74027402
m_MoveSpeed: 5
74037403
m_RotationSpeed: 30
74047404
runServerOnly: 1
7405-
runInUpdate: 0
7405+
runInUpdate: 1
74067406
--- !u!114 &678326394
74077407
MonoBehaviour:
74087408
m_ObjectHideFlags: 0

0 commit comments

Comments
 (0)