public void TestRegionVisibilityConnected2of3() { //make sure our presence has no connections to neighbors since we should be child var presences = presence.RemotePresences.GetRemotePresenceList(); Assert.AreEqual(0, presences.Count); //tell the mock scene that all neighbors are up // Add some neighbors (2 of 3 should be visible at long draw distance) SurroundingRegionManagerTests.SendCreateRegionMessage(HOME - 1, HOME, REGION_PORT_BASE, REGION_PORT_BASE + 1); SurroundingRegionManagerTests.SendCreateRegionMessage(HOME - 2, HOME, REGION_PORT_BASE, REGION_PORT_BASE + 2); SurroundingRegionManagerTests.SendCreateRegionMessage(HOME - 3, HOME, REGION_PORT_BASE, REGION_PORT_BASE + 3); Thread.Sleep(500); mockScene.EventManager.TriggerOnMakeRootAgent(presence); Thread.Sleep(500); WaitTask(presence.RemotePresences.HandleDrawDistanceChanged(1024)); Thread.Sleep(250); presences = presence.RemotePresences.GetRemotePresenceList(); Assert.AreEqual(2, presences.Count); Assert.IsTrue(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(HOME - 1, HOME))); Assert.IsTrue(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(HOME - 2, HOME))); Assert.IsFalse(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(HOME - 3, HOME))); // Clean up mockScene.EventManager.TriggerOnMakeChildAgent(presence); }
public void TestFarRegionUpDoesntNotifyPresence() { mockScene.EventManager.TriggerOnMakeRootAgent(presence); //tell the mock scene that neighbor1left is up SurroundingRegionManagerTests.SendCreateRegionMessage(997, 1000, REGION_PORT_BASE, REGION_PORT_BASE + 1); Thread.Sleep(500); //sleeps are needed here because the calls are async Assert.IsFalse(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(999, 1000))); mockScene.EventManager.TriggerOnMakeChildAgent(presence); }
public void TestRegionVisibilityConnected6of8() { //make sure our presence has no connections to neighbors since we should be child var presences = presence.RemotePresences.GetRemotePresenceList(); Assert.AreEqual(0, presences.Count); //tell the mock scene that all neighbors are up // Add some neighbors (2 of 3 should be visible at long draw distance) SurroundingRegionManagerTests.SendCreateRegionMessage(HOME - 1, HOME, REGION_PORT_BASE, REGION_PORT_BASE + 1); SurroundingRegionManagerTests.SendCreateRegionMessage(HOME - 2, HOME, REGION_PORT_BASE, REGION_PORT_BASE + 2); SurroundingRegionManagerTests.SendCreateRegionMessage(HOME - 3, HOME, REGION_PORT_BASE, REGION_PORT_BASE + 3); // Now add 4 more unconnected distant regions (3 of 4 should be visible if connected) SurroundingRegionManagerTests.SendCreateRegionMessage(HOME - 0, HOME + 2, REGION_PORT_BASE, REGION_PORT_BASE + 5); SurroundingRegionManagerTests.SendCreateRegionMessage(HOME - 1, HOME + 2, REGION_PORT_BASE, REGION_PORT_BASE + 6); SurroundingRegionManagerTests.SendCreateRegionMessage(HOME - 2, HOME + 2, REGION_PORT_BASE, REGION_PORT_BASE + 7); SurroundingRegionManagerTests.SendCreateRegionMessage(HOME - 3, HOME + 2, REGION_PORT_BASE, REGION_PORT_BASE + 8); // Now add the connector (visible) SurroundingRegionManagerTests.SendCreateRegionMessage(HOME - 2, HOME + 1, REGION_PORT_BASE, REGION_PORT_BASE + 4); Thread.Sleep(500); mockScene.EventManager.TriggerOnMakeRootAgent(presence); Thread.Sleep(500); presence.RemotePresences.HandleDrawDistanceChanged(1024)?.Wait(); Thread.Sleep(250); presences = presence.RemotePresences.GetRemotePresenceList(); Assert.AreEqual(6, presences.Count); Assert.IsTrue(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(HOME - 1, HOME)), "Region -1,+0 failed to report a presence"); Assert.IsTrue(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(HOME - 2, HOME)), "Region -2,+0 failed to report a presence"); Assert.IsFalse(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(HOME - 3, HOME)), "Region -3,+0 reported a presence it should not have"); Assert.IsTrue(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(HOME - 2, HOME + 1)), "Region -2,+1 failed to report a presence"); Assert.IsTrue(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(HOME - 0, HOME + 2)), "Region +0,+2 failed to report a presence"); Assert.IsTrue(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(HOME - 1, HOME + 2)), "Region -1,+2 failed to report a presence"); Assert.IsTrue(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(HOME - 2, HOME + 2)), "Region -2,+2 failed to report a presence"); Assert.IsFalse(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(HOME - 3, HOME + 2)), "Region -3,+2 reported a presence it should not have"); // Clean up mockScene.EventManager.TriggerOnMakeChildAgent(presence); }
public void TestDrawDistanceChangesRegionVisibility() { //tell the mock scene that all neighbors are up SurroundingRegionManagerTests.SendCreateRegionMessage(999, 1000, REGION_PORT_BASE, REGION_PORT_BASE + 1); SurroundingRegionManagerTests.SendCreateRegionMessage(998, 1000, REGION_PORT_BASE, REGION_PORT_BASE + 2); SurroundingRegionManagerTests.SendCreateRegionMessage(997, 1000, REGION_PORT_BASE, REGION_PORT_BASE + 3); //make sure our presence has no connections to neighbors since we should be child var presences = presence.RemotePresences.GetRemotePresenceList(); Assert.AreEqual(0, presences.Count); mockScene.EventManager.TriggerOnMakeRootAgent(presence); Thread.Sleep(1000); presences = presence.RemotePresences.GetRemotePresenceList(); Assert.AreEqual(1, presences.Count); Assert.IsTrue(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(999, 1000))); Assert.IsFalse(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(998, 1000))); Assert.IsFalse(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(997, 1000))); WaitTask(presence.RemotePresences.HandleDrawDistanceChanged(512)); Thread.Sleep(1000); presences = presence.RemotePresences.GetRemotePresenceList(); Assert.AreEqual(2, presences.Count); Assert.IsTrue(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(999, 1000))); Assert.IsTrue(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(998, 1000))); Assert.IsFalse(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(997, 1000))); WaitTask(presence.RemotePresences.HandleDrawDistanceChanged(256)); Thread.Sleep(1000); presences = presence.RemotePresences.GetRemotePresenceList(); Assert.AreEqual(1, presences.Count); Assert.IsTrue(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(999, 1000))); Assert.IsFalse(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(998, 1000))); Assert.IsFalse(presence.RemotePresences.HasPresenceOnRegion(Util.RegionHandleFromLocation(997, 1000))); mockScene.EventManager.TriggerOnMakeChildAgent(presence); }