public void ActivateHostSceneCallsOnStartClient() { // add an identity with a networkbehaviour to .spawned GameObject go = new GameObject(); NetworkIdentity identity = go.AddComponent <NetworkIdentity>(); identity.netId = 42; // for authority check //identity.connectionToClient = connection; OnStartClientTestNetworkBehaviour comp = go.AddComponent <OnStartClientTestNetworkBehaviour>(); Assert.That(comp.called, Is.EqualTo(0)); //connection.identity = identity; NetworkIdentity.spawned[identity.netId] = identity; // ActivateHostScene NetworkServer.ActivateHostScene(); // was OnStartClient called for all .spawned networkidentities? Assert.That(comp.called, Is.EqualTo(1)); // clean up NetworkIdentity.spawned.Clear(); NetworkServer.Shutdown(); // destroy the test gameobject AFTER server was stopped. // otherwise isServer is true in OnDestroy, which means it would try // to call Destroy(go). but we need to use DestroyImmediate in // Editor GameObject.DestroyImmediate(go); }
public void ClearAllComponentsDirtyBits() { // create a networkidentity and add some components OnStartClientTestNetworkBehaviour compA = gameObject.AddComponent <OnStartClientTestNetworkBehaviour>(); OnStartClientTestNetworkBehaviour compB = gameObject.AddComponent <OnStartClientTestNetworkBehaviour>(); // set syncintervals so one is always dirty, one is never dirty compA.syncInterval = 0; compB.syncInterval = Mathf.Infinity; // set components dirty bits compA.SetDirtyBit(0x0001); compB.SetDirtyBit(0x1001); // dirty because interval reached and mask != 0 Assert.That(compA.IsDirty(), Is.True); // not dirty because syncinterval not reached Assert.That(compB.IsDirty(), Is.False); // call identity.ClearAllComponentsDirtyBits identity.ClearAllComponentsDirtyBits(); // should be cleared now Assert.That(compA.IsDirty(), Is.False); // should be cleared now Assert.That(compB.IsDirty(), Is.False); // set compB syncinterval to 0 to check if the masks were cleared // (if they weren't, then it would still be dirty now) compB.syncInterval = 0; Assert.That(compB.IsDirty(), Is.False); }