* Tweak the caps manager so that the NPCAvatar works again.
							parent
							
								
									4ce5c894cf
								
							
						
					
					
						commit
						4cbf0444df
					
				| 
						 | 
					@ -581,7 +581,10 @@ namespace OpenSim.Region.CoreModules.World.Land
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            lock (m_landIDList)
 | 
					            lock (m_landIDList)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                return m_landList[m_landIDList[x / 4, y / 4]];
 | 
					                if (m_landList.ContainsKey(m_landIDList[x / 4, y / 4]))
 | 
				
			||||||
 | 
					                    return m_landList[m_landIDList[x / 4, y / 4]];
 | 
				
			||||||
 | 
					                else 
 | 
				
			||||||
 | 
					                    return null;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -360,15 +360,33 @@ namespace OpenSim.Region.Framework.Scenes
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            // we're going to be using the above code once neighbour cache is correct.  Currently it doesn't appear to be
 | 
					            // we're going to be using the above code once neighbour cache is correct.  Currently it doesn't appear to be
 | 
				
			||||||
            // So we're temporarily going back to the old method of grabbing it from the Grid Server Every time :/
 | 
					            // So we're temporarily going back to the old method of grabbing it from the Grid Server Every time :/
 | 
				
			||||||
            neighbours =
 | 
					            if (m_regionInfo != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                neighbours =
 | 
				
			||||||
                m_commsProvider.GridService.RequestNeighbours(m_regionInfo.RegionLocX, m_regionInfo.RegionLocY);
 | 
					                m_commsProvider.GridService.RequestNeighbours(m_regionInfo.RegionLocX, m_regionInfo.RegionLocY);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                m_log.Debug("[ENABLENEIGHBOURCHILDAGENTS]: m_regionInfo was null in EnableNeighbourChildAgents, is this a NPC?");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            /// We need to find the difference between the new regions where there are no child agents
 | 
					            /// We need to find the difference between the new regions where there are no child agents
 | 
				
			||||||
            /// and the regions where there are already child agents. We only send notification to the former.
 | 
					            /// and the regions where there are already child agents. We only send notification to the former.
 | 
				
			||||||
            List<ulong> neighbourHandles = NeighbourHandles(neighbours); // on this region
 | 
					            List<ulong> neighbourHandles = NeighbourHandles(neighbours); // on this region
 | 
				
			||||||
            neighbourHandles.Add(avatar.Scene.RegionInfo.RegionHandle);  // add this region too
 | 
					            neighbourHandles.Add(avatar.Scene.RegionInfo.RegionHandle);  // add this region too
 | 
				
			||||||
            List<ulong> previousRegionNeighbourHandles 
 | 
					            List<ulong> previousRegionNeighbourHandles ;
 | 
				
			||||||
                = new List<ulong>(avatar.Scene.CapsModule.GetChildrenSeeds(avatar.UUID).Keys);
 | 
					
 | 
				
			||||||
 | 
					            if (avatar.Scene.CapsModule != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                previousRegionNeighbourHandles =
 | 
				
			||||||
 | 
					                    new List<ulong>(avatar.Scene.CapsModule.GetChildrenSeeds(avatar.UUID).Keys);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                previousRegionNeighbourHandles = new List<ulong>();
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            List<ulong> newRegions = NewNeighbours(neighbourHandles, previousRegionNeighbourHandles);
 | 
					            List<ulong> newRegions = NewNeighbours(neighbourHandles, previousRegionNeighbourHandles);
 | 
				
			||||||
            List<ulong> oldRegions = OldNeighbours(neighbourHandles, previousRegionNeighbourHandles);
 | 
					            List<ulong> oldRegions = OldNeighbours(neighbourHandles, previousRegionNeighbourHandles);
 | 
				
			||||||
           
 | 
					           
 | 
				
			||||||
| 
						 | 
					@ -381,8 +399,12 @@ namespace OpenSim.Region.Framework.Scenes
 | 
				
			||||||
            avatar.DropOldNeighbours(oldRegions);
 | 
					            avatar.DropOldNeighbours(oldRegions);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            /// Collect as many seeds as possible
 | 
					            /// Collect as many seeds as possible
 | 
				
			||||||
            Dictionary<ulong, string> seeds 
 | 
					            Dictionary<ulong, string> seeds;
 | 
				
			||||||
                = new Dictionary<ulong, string>(avatar.Scene.CapsModule.GetChildrenSeeds(avatar.UUID));
 | 
					            if (avatar.Scene.CapsModule != null)
 | 
				
			||||||
 | 
					                seeds
 | 
				
			||||||
 | 
					                    = new Dictionary<ulong, string>(avatar.Scene.CapsModule.GetChildrenSeeds(avatar.UUID));
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                seeds = new Dictionary<ulong, string>();
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            //m_log.Debug(" !!! No. of seeds: " + seeds.Count);
 | 
					            //m_log.Debug(" !!! No. of seeds: " + seeds.Count);
 | 
				
			||||||
            if (!seeds.ContainsKey(avatar.Scene.RegionInfo.RegionHandle))
 | 
					            if (!seeds.ContainsKey(avatar.Scene.RegionInfo.RegionHandle))
 | 
				
			||||||
| 
						 | 
					@ -419,8 +441,12 @@ namespace OpenSim.Region.Framework.Scenes
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                a.ChildrenCapSeeds = new Dictionary<ulong, string>(seeds);
 | 
					                a.ChildrenCapSeeds = new Dictionary<ulong, string>(seeds);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            // These two are the same thing!
 | 
					
 | 
				
			||||||
            avatar.Scene.CapsModule.SetChildrenSeed(avatar.UUID, seeds);
 | 
					            if (avatar.Scene.CapsModule != null)
 | 
				
			||||||
 | 
					            {
 | 
				
			||||||
 | 
					                // These two are the same thing!
 | 
				
			||||||
 | 
					                avatar.Scene.CapsModule.SetChildrenSeed(avatar.UUID, seeds);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            avatar.KnownRegions = seeds;
 | 
					            avatar.KnownRegions = seeds;
 | 
				
			||||||
            //avatar.Scene.DumpChildrenSeeds(avatar.UUID);
 | 
					            //avatar.Scene.DumpChildrenSeeds(avatar.UUID);
 | 
				
			||||||
            //avatar.DumpKnownRegions();
 | 
					            //avatar.DumpKnownRegions();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -538,7 +538,13 @@ namespace OpenSim.Region.Framework.Scenes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void AdjustKnownSeeds()
 | 
					        public void AdjustKnownSeeds()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            Dictionary<ulong, string> seeds = Scene.CapsModule.GetChildrenSeeds(UUID);
 | 
					            Dictionary<ulong, string> seeds;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (Scene.CapsModule != null)
 | 
				
			||||||
 | 
					                seeds = Scene.CapsModule.GetChildrenSeeds(UUID);
 | 
				
			||||||
 | 
					            else
 | 
				
			||||||
 | 
					                seeds = new Dictionary<ulong, string>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            List<ulong> old = new List<ulong>();
 | 
					            List<ulong> old = new List<ulong>();
 | 
				
			||||||
            foreach (ulong handle in seeds.Keys)
 | 
					            foreach (ulong handle in seeds.Keys)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
| 
						 | 
					@ -552,7 +558,10 @@ namespace OpenSim.Region.Framework.Scenes
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            DropOldNeighbours(old);
 | 
					            DropOldNeighbours(old);
 | 
				
			||||||
            Scene.CapsModule.SetChildrenSeed(UUID, seeds);
 | 
					            
 | 
				
			||||||
 | 
					            if (Scene.CapsModule != null)
 | 
				
			||||||
 | 
					                Scene.CapsModule.SetChildrenSeed(UUID, seeds);
 | 
				
			||||||
 | 
					            
 | 
				
			||||||
            KnownRegions = seeds;
 | 
					            KnownRegions = seeds;
 | 
				
			||||||
            //m_log.Debug(" ++++++++++AFTER+++++++++++++ ");
 | 
					            //m_log.Debug(" ++++++++++AFTER+++++++++++++ ");
 | 
				
			||||||
            //DumpKnownRegions();
 | 
					            //DumpKnownRegions();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1044,7 +1044,8 @@ namespace OpenSim.Region.OptionalModules.World.NPC
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public bool AddGenericPacketHandler(string MethodName, GenericMessage handler)
 | 
					        public bool AddGenericPacketHandler(string MethodName, GenericMessage handler)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            throw new NotImplementedException();
 | 
					            //throw new NotImplementedException();
 | 
				
			||||||
 | 
					            return false;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public void SendAvatarClassifiedReply(UUID targetID, UUID[] classifiedID, string[] name)
 | 
					        public void SendAvatarClassifiedReply(UUID targetID, UUID[] classifiedID, string[] name)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,8 +42,8 @@ namespace OpenSim.Region.OptionalModules.World.NPC
 | 
				
			||||||
            // {
 | 
					            // {
 | 
				
			||||||
            //     NPCAvatar testAvatar = new NPCAvatar("Jack", "NPC", new Vector3(128, 128, 40), scene);
 | 
					            //     NPCAvatar testAvatar = new NPCAvatar("Jack", "NPC", new Vector3(128, 128, 40), scene);
 | 
				
			||||||
            //     NPCAvatar testAvatar2 = new NPCAvatar("Jill", "NPC", new Vector3(136, 128, 40), scene);
 | 
					            //     NPCAvatar testAvatar2 = new NPCAvatar("Jill", "NPC", new Vector3(136, 128, 40), scene);
 | 
				
			||||||
            //     scene.AddNewClient(testAvatar, false);
 | 
					            //     scene.AddNewClient(testAvatar);
 | 
				
			||||||
            //     scene.AddNewClient(testAvatar2, false);
 | 
					            //     scene.AddNewClient(testAvatar2);
 | 
				
			||||||
            // }
 | 
					            // }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue