Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
        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);
        }