Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ public void TestSyncAxes(
{
var gameObject = new GameObject($"Test-{nameof(NetworkTransformStateTests)}.{nameof(TestSyncAxes)}");
var networkObject = gameObject.AddComponent<NetworkObject>();
networkObject.GlobalObjectIdHash = (uint)Time.realtimeSinceStartup;
var networkTransform = gameObject.AddComponent<NetworkTransform>();
networkTransform.enabled = false; // do not tick `FixedUpdate()` or `Update()`

Expand All @@ -37,7 +36,7 @@ public void TestSyncAxes(
networkTransform.SyncScaleZ = syncScaZ;
networkTransform.InLocalSpace = inLocalSpace;

networkTransform.ReplNetworkState.Value = new NetworkTransform.NetworkState
var networkTransformState = new NetworkTransform.NetworkState
{
PositionX = initialPosition.x,
PositionY = initialPosition.y,
Expand All @@ -62,25 +61,17 @@ public void TestSyncAxes(

// Step 1: change properties, expect state to be dirty
{
networkTransform.InLocalSpace = !inLocalSpace;
networkTransform.transform.position = new Vector3(3, 4, 5);
networkTransform.transform.eulerAngles = new Vector3(30, 45, 90);
networkTransform.transform.localScale = new Vector3(1.1f, 0.5f, 2.5f);

bool isDirty = networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef);
networkTransform.ReplNetworkState.SetDirty(isDirty);
Assert.IsTrue(isDirty);
}

// Step 2: apply current state locally, expect state to be not dirty/different
{
networkTransform.ApplyNetworkState(networkTransform.ReplNetworkState.Value);

bool isDirty = networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef);
Assert.IsFalse(isDirty);
if (syncPosX || syncPosY || syncPosZ || syncRotX || syncRotY || syncRotZ || syncScaX || syncScaY || syncScaZ)
{
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransformState));
}
}

// Step 3: disable a particular sync flag, expect state to be not dirty
// Step 2: disable a particular sync flag, expect state to be not dirty
{
var position = networkTransform.transform.position;
var rotAngles = networkTransform.transform.eulerAngles;
Expand All @@ -93,7 +84,7 @@ public void TestSyncAxes(
position.x++;
networkTransform.transform.position = position;

Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransformState));
}
// SyncPositionY
{
Expand All @@ -102,7 +93,7 @@ public void TestSyncAxes(
position.y++;
networkTransform.transform.position = position;

Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransformState));
}
// SyncPositionZ
{
Expand All @@ -111,7 +102,7 @@ public void TestSyncAxes(
position.z++;
networkTransform.transform.position = position;

Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransformState));
}

// SyncRotAngleX
Expand All @@ -121,7 +112,7 @@ public void TestSyncAxes(
rotAngles.x++;
networkTransform.transform.eulerAngles = rotAngles;

Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransformState));
}
// SyncRotAngleY
{
Expand All @@ -130,7 +121,7 @@ public void TestSyncAxes(
rotAngles.y++;
networkTransform.transform.eulerAngles = rotAngles;

Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransformState));
}
// SyncRotAngleZ
{
Expand All @@ -139,7 +130,7 @@ public void TestSyncAxes(
rotAngles.z++;
networkTransform.transform.eulerAngles = rotAngles;

Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransformState));
}

// SyncScaleX
Expand All @@ -149,7 +140,7 @@ public void TestSyncAxes(
scale.x++;
networkTransform.transform.localScale = scale;

Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransformState));
}
// SyncScaleY
{
Expand All @@ -158,7 +149,7 @@ public void TestSyncAxes(
scale.y++;
networkTransform.transform.localScale = scale;

Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransformState));
}
// SyncScaleZ
{
Expand All @@ -167,11 +158,11 @@ public void TestSyncAxes(
scale.z++;
networkTransform.transform.localScale = scale;

Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransformState));
}
}

Object.DestroyImmediate(networkTransform);
Object.DestroyImmediate(gameObject);
}

[Test]
Expand Down Expand Up @@ -207,7 +198,7 @@ public void TestThresholds(
networkTransform.RotAngleThreshold = rotAngleThreshold;
networkTransform.ScaleThreshold = scaleThreshold;

networkTransform.ReplNetworkState.Value = new NetworkTransform.NetworkState
var networkTransformState = new NetworkTransform.NetworkState
{
PositionX = initialPosition.x,
PositionY = initialPosition.y,
Expand All @@ -223,25 +214,14 @@ public void TestThresholds(

// Step 1: change properties, expect state to be dirty
{
networkTransform.InLocalSpace = !inLocalSpace;
networkTransform.transform.position = new Vector3(3, 4, 5);
networkTransform.transform.eulerAngles = new Vector3(30, 45, 90);
networkTransform.transform.localScale = new Vector3(1.1f, 0.5f, 2.5f);

bool isDirty = networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef);
networkTransform.ReplNetworkState.SetDirty(isDirty);
Assert.IsTrue(isDirty);
}

// Step 2: apply current state locally, expect state to be not dirty/different
{
networkTransform.ApplyNetworkState(networkTransform.ReplNetworkState.Value);

bool isDirty = networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef);
Assert.IsFalse(isDirty);
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransformState));
}

// Step 3: make changes below and above thresholds
// Step 2: make changes below and above thresholds
// changes below the threshold should not make `NetworkState` dirty
// changes above the threshold should make `NetworkState` dirty
{
Expand All @@ -254,42 +234,33 @@ public void TestThresholds(
{
position.x += positionThreshold / 2;
networkTransform.transform.position = position;
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransformState));

position.x += positionThreshold * 2;
networkTransform.transform.position = position;
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));

networkTransform.ApplyNetworkState(networkTransform.ReplNetworkState.Value);
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransformState));
}

// PositionY
{
position.y += positionThreshold / 2;
networkTransform.transform.position = position;
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransformState));

position.y += positionThreshold * 2;
networkTransform.transform.position = position;
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));

networkTransform.ApplyNetworkState(networkTransform.ReplNetworkState.Value);
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransformState));
}

// PositionZ
{
position.z += positionThreshold / 2;
networkTransform.transform.position = position;
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransformState));

position.z += positionThreshold * 2;
networkTransform.transform.position = position;
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));

networkTransform.ApplyNetworkState(networkTransform.ReplNetworkState.Value);
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransformState));
}
}

Expand All @@ -302,42 +273,33 @@ public void TestThresholds(
{
rotAngles.x += rotAngleThreshold / 2;
networkTransform.transform.eulerAngles = rotAngles;
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransformState));

rotAngles.x += rotAngleThreshold * 2;
networkTransform.transform.eulerAngles = rotAngles;
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));

networkTransform.ApplyNetworkState(networkTransform.ReplNetworkState.Value);
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransformState));
}

// RotAngleY
{
rotAngles.y += rotAngleThreshold / 2;
networkTransform.transform.eulerAngles = rotAngles;
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransformState));

rotAngles.y += rotAngleThreshold * 2;
networkTransform.transform.eulerAngles = rotAngles;
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));

networkTransform.ApplyNetworkState(networkTransform.ReplNetworkState.Value);
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransformState));
}

// RotAngleZ
{
rotAngles.z += rotAngleThreshold / 2;
networkTransform.transform.eulerAngles = rotAngles;
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransformState));

rotAngles.z += rotAngleThreshold * 2;
networkTransform.transform.eulerAngles = rotAngles;
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));

networkTransform.ApplyNetworkState(networkTransform.ReplNetworkState.Value);
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransformState));
}
}

Expand All @@ -350,42 +312,33 @@ public void TestThresholds(
{
scale.x += scaleThreshold / 2;
networkTransform.transform.localScale = scale;
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransformState));

scale.x += scaleThreshold * 2;
networkTransform.transform.localScale = scale;
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));

networkTransform.ApplyNetworkState(networkTransform.ReplNetworkState.Value);
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransformState));
}

// ScaleY
{
scale.y += scaleThreshold / 2;
networkTransform.transform.localScale = scale;
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransformState));

scale.y += scaleThreshold * 2;
networkTransform.transform.localScale = scale;
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));

networkTransform.ApplyNetworkState(networkTransform.ReplNetworkState.Value);
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransformState));
}

// ScaleZ
{
scale.z += scaleThreshold / 2;
networkTransform.transform.localScale = scale;
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransformState));

scale.z += scaleThreshold * 2;
networkTransform.transform.localScale = scale;
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));

networkTransform.ApplyNetworkState(networkTransform.ReplNetworkState.Value);
Assert.IsFalse(networkTransform.UpdateNetworkState(ref networkTransform.ReplNetworkState.ValueRef));
Assert.IsTrue(networkTransform.UpdateNetworkState(ref networkTransformState));
}
}
}
Expand Down