Merge branch 'master' into 0.7-post-fixes
Conflicts: OpenSim/Services/Connectors/SimianGrid/SimianAssetServiceConnector.cs0.7-release
						commit
						1cd9118c7a
					
				|  | @ -64,14 +64,22 @@ namespace OpenSim.Data.MySQL | |||
| 
 | ||||
|         public bool StoreFolder(XInventoryFolder folder) | ||||
|         { | ||||
|             if (folder.folderName.Length > 64) | ||||
|                 folder.folderName = folder.folderName.Substring(0, 64); | ||||
| 
 | ||||
|             return m_Folders.Store(folder); | ||||
|         } | ||||
| 
 | ||||
|         public bool StoreItem(XInventoryItem item) | ||||
|         { | ||||
|             if (item.inventoryName.Length > 64) | ||||
|                 item.inventoryName = item.inventoryName.Substring(0, 64); | ||||
|             if (item.inventoryDescription.Length > 128) | ||||
|                 item.inventoryDescription = item.inventoryDescription.Substring(0, 128); | ||||
| 
 | ||||
|             return m_Items.Store(item); | ||||
|         } | ||||
| 
 | ||||
|          | ||||
|         public bool DeleteFolders(string field, string val) | ||||
|         { | ||||
|             return m_Folders.Delete(field, val); | ||||
|  |  | |||
|  | @ -66,11 +66,19 @@ namespace OpenSim.Data.SQLite | |||
| 
 | ||||
|         public bool StoreFolder(XInventoryFolder folder) | ||||
|         { | ||||
|             if (folder.folderName.Length > 64) | ||||
|                 folder.folderName = folder.folderName.Substring(0, 64); | ||||
| 
 | ||||
|             return m_Folders.Store(folder); | ||||
|         } | ||||
| 
 | ||||
|         public bool StoreItem(XInventoryItem item) | ||||
|         { | ||||
|             if (item.inventoryName.Length > 64) | ||||
|                 item.inventoryName = item.inventoryName.Substring(0, 64); | ||||
|             if (item.inventoryDescription.Length > 128) | ||||
|                 item.inventoryDescription = item.inventoryDescription.Substring(0, 128); | ||||
| 
 | ||||
|             return m_Items.Store(item); | ||||
|         } | ||||
| 
 | ||||
|  |  | |||
|  | @ -29,14 +29,15 @@ using System; | |||
| using System.Collections.Generic; | ||||
| using System.Net; | ||||
| using System.Net.Sockets; | ||||
| using System.Reflection; | ||||
| using System.Xml; | ||||
| using System.IO; | ||||
| using log4net; | ||||
| using Nini.Config; | ||||
| using OpenMetaverse; | ||||
| using OpenMetaverse.StructuredData; | ||||
| using OpenSim.Framework.Console; | ||||
| 
 | ||||
| 
 | ||||
| namespace OpenSim.Framework | ||||
| { | ||||
|     public class RegionLightShareData : ICloneable | ||||
|  | @ -96,10 +97,9 @@ namespace OpenSim.Framework | |||
| 
 | ||||
|     [Serializable] | ||||
|     public class SimpleRegionInfo | ||||
|     { | ||||
|         // private static readonly log4net.ILog m_log | ||||
|         //     = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | ||||
| 
 | ||||
|     {     | ||||
| //        private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||||
|          | ||||
|         /// <summary> | ||||
|         /// The port by which http communication occurs with the region (most noticeably, CAPS communication) | ||||
|         /// </summary> | ||||
|  | @ -327,8 +327,7 @@ namespace OpenSim.Framework | |||
| 
 | ||||
|     public class RegionInfo | ||||
|     { | ||||
|         // private static readonly log4net.ILog m_log | ||||
|         //     = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | ||||
|         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||||
| 
 | ||||
|         public bool commFailTF = false; | ||||
|         public ConfigurationMember configMember; | ||||
|  | @ -772,9 +771,16 @@ namespace OpenSim.Framework | |||
|             } | ||||
| 
 | ||||
|             if (externalName == "SYSTEMIP") | ||||
|             { | ||||
|                 m_externalHostName = Util.GetLocalHost().ToString(); | ||||
|                 m_log.InfoFormat( | ||||
|                     "[REGIONINFO]: Resolving SYSTEMIP to {0} for external hostname of region {1}",  | ||||
|                     m_externalHostName, name); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 m_externalHostName = externalName; | ||||
|             } | ||||
| 
 | ||||
|             m_regionType = config.GetString("RegionType", String.Empty); | ||||
| 
 | ||||
|  |  | |||
|  | @ -192,9 +192,7 @@ namespace OpenSim | |||
|             // Hook up to the watchdog timer | ||||
|             Watchdog.OnWatchdogTimeout += WatchdogTimeoutHandler; | ||||
| 
 | ||||
|             PrintFileToConsole("startuplogo.txt"); | ||||
| 
 | ||||
|             m_log.InfoFormat("[NETWORK]: Using {0} as SYSTEMIP", Util.GetLocalHost().ToString()); | ||||
|             PrintFileToConsole("startuplogo.txt");             | ||||
| 
 | ||||
|             // For now, start at the 'root' level by default | ||||
|             if (m_sceneManager.Scenes.Count == 1) // If there is only one region, select it | ||||
|  |  | |||
|  | @ -367,13 +367,13 @@ namespace OpenSim | |||
|                 Environment.Exit(1); | ||||
|             } | ||||
| 
 | ||||
|             scene.loadAllLandObjectsFromStorage(regionInfo.originRegionID); | ||||
|             scene.EventManager.TriggerParcelPrimCountUpdate(); | ||||
| 
 | ||||
|             // We need to do this after we've initialized the | ||||
|             // scripting engines. | ||||
|             scene.CreateScriptInstances(); | ||||
| 
 | ||||
|             scene.loadAllLandObjectsFromStorage(regionInfo.originRegionID); | ||||
|             scene.EventManager.TriggerParcelPrimCountUpdate(); | ||||
| 
 | ||||
|             m_sceneManager.Add(scene); | ||||
| 
 | ||||
|             if (m_autoCreateClientStack) | ||||
|  |  | |||
|  | @ -6303,8 +6303,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
|                 if (handlerObjectDuplicate != null) | ||||
|                 { | ||||
|                     handlerObjectDuplicate(dupe.ObjectData[i].ObjectLocalID, dupe.SharedData.Offset, | ||||
|                                            dupe.SharedData.DuplicateFlags, AgentandGroupData.AgentID, | ||||
|                                            AgentandGroupData.GroupID); | ||||
|                                            dupe.SharedData.DuplicateFlags, AgentId, | ||||
|                                            m_activeGroupID); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|  | @ -6894,7 +6894,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
|                 if (handlerObjectDuplicateOnRay != null) | ||||
|                 { | ||||
|                     handlerObjectDuplicateOnRay(dupeOnRay.ObjectData[i].ObjectLocalID, dupeOnRay.AgentData.DuplicateFlags, | ||||
|                                                 dupeOnRay.AgentData.AgentID, dupeOnRay.AgentData.GroupID, dupeOnRay.AgentData.RayTargetID, dupeOnRay.AgentData.RayEnd, | ||||
|                                                 AgentId, m_activeGroupID, dupeOnRay.AgentData.RayTargetID, dupeOnRay.AgentData.RayEnd, | ||||
|                                                 dupeOnRay.AgentData.RayStart, dupeOnRay.AgentData.BypassRaycast, dupeOnRay.AgentData.RayEndIsIntersection, | ||||
|                                                 dupeOnRay.AgentData.CopyCenters, dupeOnRay.AgentData.CopyRotates); | ||||
|                 } | ||||
|  |  | |||
|  | @ -131,6 +131,12 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps | |||
| 
 | ||||
|                     if (texture != null) | ||||
|                     { | ||||
|                         if (texture.Type != (sbyte)AssetType.Texture) | ||||
|                         { | ||||
|                             httpResponse.StatusCode = (int)System.Net.HttpStatusCode.NotFound; | ||||
|                             httpResponse.Send(); | ||||
|                             return null; | ||||
|                         } | ||||
|                         SendTexture(httpRequest, httpResponse, texture); | ||||
|                     } | ||||
|                     else | ||||
|  | @ -147,6 +153,12 @@ namespace OpenSim.Region.CoreModules.Avatar.ObjectCaps | |||
| 
 | ||||
|                     if (texture != null) | ||||
|                     { | ||||
|                         if (texture.Type != (sbyte)AssetType.Texture) | ||||
|                         { | ||||
|                             httpResponse.StatusCode = (int)System.Net.HttpStatusCode.NotFound; | ||||
|                             httpResponse.Send(); | ||||
|                             return null; | ||||
|                         } | ||||
|                         SendTexture(httpRequest, httpResponse, texture); | ||||
|                     } | ||||
|                     else | ||||
|  |  | |||
|  | @ -768,8 +768,15 @@ namespace OpenSim.Region.CoreModules.Avatar.Friends | |||
|                     bool canEditObjectsChanged = ((rights ^ userFlags) & (int)FriendRights.CanModifyObjects) != 0; | ||||
|                     if (canEditObjectsChanged) | ||||
|                         friendClient.SendChangeUserRights(userID, friendID, rights); | ||||
| 
 | ||||
|                 } | ||||
| 
 | ||||
|                 // update local cache | ||||
|                 //m_Friends[friendID].Friends = m_FriendsService.GetFriends(friendID); | ||||
|                 foreach (FriendInfo finfo in m_Friends[friendID].Friends) | ||||
|                     if (finfo.Friend == userID.ToString()) | ||||
|                         finfo.TheirFlags = rights; | ||||
| 
 | ||||
|                 return true; | ||||
|             } | ||||
| 
 | ||||
|  |  | |||
|  | @ -131,7 +131,7 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
|             return ret; | ||||
|         } | ||||
| 
 | ||||
|         public virtual UUID DeleteToInventory(DeRezAction action, UUID folderID, | ||||
|         public override UUID DeleteToInventory(DeRezAction action, UUID folderID, | ||||
|                 SceneObjectGroup objectGroup, IClientAPI remoteClient) | ||||
|         { | ||||
|             UUID assetID = base.DeleteToInventory(action, folderID, new List<SceneObjectGroup>() {objectGroup}, remoteClient); | ||||
|  |  | |||
|  | @ -286,23 +286,15 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
|                 { | ||||
|                     // Deleting someone else's item | ||||
|                     // | ||||
| 
 | ||||
| 
 | ||||
|                     if (remoteClient == null || | ||||
|                         objectGroup.OwnerID != remoteClient.AgentId) | ||||
|                     { | ||||
|                         // Folder skeleton may not be loaded and we | ||||
|                         // have to wait for the inventory to find | ||||
|                         // the destination folder | ||||
|                         // | ||||
| 
 | ||||
|                         folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.LostAndFoundFolder); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         // Assume inventory skeleton was loaded during login | ||||
|                         // and all folders can be found | ||||
|                         // | ||||
|                         folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.TrashFolder); | ||||
|                          folder = m_Scene.InventoryService.GetFolderForType(userID, AssetType.TrashFolder); | ||||
|                     } | ||||
|                 } | ||||
|                 else if (action == DeRezAction.Return) | ||||
|  | @ -332,7 +324,6 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess | |||
| 
 | ||||
|                 if (folder == null) // None of the above | ||||
|                 { | ||||
|                     //folder = userInfo.RootFolder.FindFolder(folderID); | ||||
|                     folder = new InventoryFolderBase(folderID); | ||||
| 
 | ||||
|                     if (folder == null) // Nowhere to put it | ||||
|  |  | |||
|  | @ -40,7 +40,7 @@ using OpenSim.Region.Framework.Scenes; | |||
| 
 | ||||
| namespace OpenSim.Region.CoreModules.Scripting.EmailModules | ||||
| { | ||||
|     public class EmailModule : IEmailModule | ||||
|     public class EmailModule : IRegionModule, IEmailModule | ||||
|     { | ||||
|         // | ||||
|         // Log | ||||
|  |  | |||
|  | @ -96,7 +96,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsIn.Inventory | |||
| 
 | ||||
|                 Object[] args = new Object[] { m_Config, MainServer.Instance, "HGInventoryService" }; | ||||
| 
 | ||||
|                 ServerUtils.LoadPlugin<IServiceConnector>("OpenSim.Server.Handlers.dll:HGInventoryServiceInConnector", args); | ||||
|                 ServerUtils.LoadPlugin<IServiceConnector>("OpenSim.Server.Handlers.dll:XInventoryInConnector", args); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|  |  | |||
|  | @ -38,7 +38,7 @@ namespace OpenSim.Region.Framework.Interfaces | |||
|         public int numLeft; | ||||
|     } | ||||
| 
 | ||||
|     public interface IEmailModule : IRegionModule | ||||
|     public interface IEmailModule | ||||
|     { | ||||
|         void SendEmail(UUID objectID, string address, string subject, string body); | ||||
|         Email GetNextEmail(UUID objectID, string sender, string subject); | ||||
|  |  | |||
|  | @ -52,6 +52,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
|         public double GetUpdatePriority(IClientAPI client, ISceneEntity entity) | ||||
|         { | ||||
|             double priority = 0; | ||||
| 
 | ||||
|             if (entity == null) | ||||
|                 return 100000; | ||||
|              | ||||
|             switch (m_scene.UpdatePrioritizationScheme) | ||||
|             { | ||||
|  |  | |||
|  | @ -385,9 +385,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
|                 if (Permissions.PropagatePermissions() && recipient != senderId) | ||||
|                 { | ||||
|                     // First, make sore base is limited to the next perms | ||||
|                     itemCopy.BasePermissions = item.BasePermissions & item.NextPermissions; | ||||
|                     itemCopy.BasePermissions = item.BasePermissions & (item.NextPermissions | (uint)PermissionMask.Move); | ||||
|                     // By default, current equals base | ||||
|                     itemCopy.CurrentPermissions = itemCopy.BasePermissions; | ||||
|                     itemCopy.CurrentPermissions = itemCopy.BasePermissions & item.CurrentPermissions; | ||||
| 
 | ||||
|                     // If this is an object, replace current perms | ||||
|                     // with folded perms | ||||
|  | @ -398,7 +398,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
|                     } | ||||
| 
 | ||||
|                     // Ensure there is no escalation | ||||
|                     itemCopy.CurrentPermissions &= item.NextPermissions; | ||||
|                     itemCopy.CurrentPermissions &= (item.NextPermissions | (uint)PermissionMask.Move); | ||||
| 
 | ||||
|                     // Need slam bit on xfer | ||||
|                     itemCopy.CurrentPermissions |= 8; | ||||
|  | @ -897,14 +897,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
| 
 | ||||
|             if ((part.OwnerID != destAgent) && Permissions.PropagatePermissions()) | ||||
|             { | ||||
|                 agentItem.BasePermissions = taskItem.BasePermissions & taskItem.NextPermissions; | ||||
|                 agentItem.BasePermissions = taskItem.BasePermissions & (taskItem.NextPermissions | (uint)PermissionMask.Move); | ||||
|                 if (taskItem.InvType == (int)InventoryType.Object) | ||||
|                     agentItem.CurrentPermissions = agentItem.BasePermissions & ((taskItem.CurrentPermissions & 7) << 13); | ||||
|                     agentItem.CurrentPermissions = agentItem.BasePermissions ; | ||||
|                     agentItem.CurrentPermissions = agentItem.BasePermissions & (((taskItem.CurrentPermissions & 7) << 13) | (taskItem.CurrentPermissions & (uint)PermissionMask.Move)); | ||||
|                 else | ||||
|                     agentItem.CurrentPermissions = agentItem.BasePermissions & taskItem.CurrentPermissions; | ||||
| 
 | ||||
|                 agentItem.CurrentPermissions |= 8; | ||||
|                 agentItem.NextPermissions = taskItem.NextPermissions; | ||||
|                 agentItem.EveryOnePermissions = taskItem.EveryonePermissions & taskItem.NextPermissions; | ||||
|                 agentItem.EveryOnePermissions = taskItem.EveryonePermissions & (taskItem.NextPermissions | (uint)PermissionMask.Move); | ||||
|                 agentItem.GroupPermissions = taskItem.GroupPermissions & taskItem.NextPermissions; | ||||
|             } | ||||
|             else | ||||
|  | @ -1086,13 +1087,13 @@ namespace OpenSim.Region.Framework.Scenes | |||
|                 if (Permissions.PropagatePermissions()) | ||||
|                 { | ||||
|                     destTaskItem.CurrentPermissions = srcTaskItem.CurrentPermissions & | ||||
|                             srcTaskItem.NextPermissions; | ||||
|                             (srcTaskItem.NextPermissions | (uint)PermissionMask.Move); | ||||
|                     destTaskItem.GroupPermissions = srcTaskItem.GroupPermissions & | ||||
|                             srcTaskItem.NextPermissions; | ||||
|                             (srcTaskItem.NextPermissions | (uint)PermissionMask.Move); | ||||
|                     destTaskItem.EveryonePermissions = srcTaskItem.EveryonePermissions & | ||||
|                             srcTaskItem.NextPermissions; | ||||
|                             (srcTaskItem.NextPermissions | (uint)PermissionMask.Move); | ||||
|                     destTaskItem.BasePermissions = srcTaskItem.BasePermissions & | ||||
|                             srcTaskItem.NextPermissions; | ||||
|                             (srcTaskItem.NextPermissions | (uint)PermissionMask.Move); | ||||
|                     destTaskItem.CurrentPermissions |= 8; // Slam! | ||||
|                 } | ||||
|             } | ||||
|  |  | |||
|  | @ -1747,9 +1747,31 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             { | ||||
|                 if (m_parentScene.Permissions.CanDuplicateObject(original.Children.Count, original.UUID, AgentID, original.AbsolutePosition)) | ||||
|                 { | ||||
|                     SceneObjectGroup copy = original.Copy(AgentID, GroupID, true); | ||||
|                     SceneObjectGroup copy = original.Copy(true); | ||||
|                     copy.AbsolutePosition = copy.AbsolutePosition + offset; | ||||
| 
 | ||||
|                     if (original.OwnerID != AgentID) | ||||
|                     { | ||||
|                         copy.SetOwnerId(AgentID); | ||||
|                         copy.SetRootPartOwner(copy.RootPart, AgentID, GroupID); | ||||
| 
 | ||||
|                         List<SceneObjectPart> partList = | ||||
|                             new List<SceneObjectPart>(copy.Children.Values); | ||||
| 
 | ||||
|                         if (m_parentScene.Permissions.PropagatePermissions()) | ||||
|                         { | ||||
|                             foreach (SceneObjectPart child in partList) | ||||
|                             { | ||||
|                                 child.Inventory.ChangeInventoryOwner(AgentID); | ||||
|                                 child.TriggerScriptChangedEvent(Changed.OWNER); | ||||
|                                 child.ApplyNextOwnerPermissions(); | ||||
|                             } | ||||
|                         } | ||||
| 
 | ||||
|                         copy.RootPart.ObjectSaleType = 0; | ||||
|                         copy.RootPart.SalePrice = 10; | ||||
|                     } | ||||
| 
 | ||||
|                     Entities.Add(copy); | ||||
| 
 | ||||
|                     // Since we copy from a source group that is in selected | ||||
|  |  | |||
|  | @ -1472,7 +1472,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
|                             "[SCENE]: Storing {0}, {1} in {2}", | ||||
|                             Name, UUID, m_scene.RegionInfo.RegionName); | ||||
| 
 | ||||
|                         SceneObjectGroup backup_group = Copy(OwnerID, GroupID, false); | ||||
|                         SceneObjectGroup backup_group = Copy(false); | ||||
|                         backup_group.RootPart.Velocity = RootPart.Velocity; | ||||
|                         backup_group.RootPart.Acceleration = RootPart.Acceleration; | ||||
|                         backup_group.RootPart.AngularVelocity = RootPart.AngularVelocity; | ||||
|  | @ -1528,7 +1528,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
|         /// Duplicates this object, including operations such as physics set up and attaching to the backup event. | ||||
|         /// </summary> | ||||
|         /// <returns></returns> | ||||
|         public SceneObjectGroup Copy(UUID cAgentID, UUID cGroupID, bool userExposed) | ||||
|         public SceneObjectGroup Copy(bool userExposed) | ||||
|         { | ||||
|             SceneObjectGroup dupe = (SceneObjectGroup)MemberwiseClone(); | ||||
|             dupe.m_isBackedUp = false; | ||||
|  | @ -1551,7 +1551,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             dupe.AbsolutePosition = new Vector3(AbsolutePosition.X, AbsolutePosition.Y, AbsolutePosition.Z); | ||||
| 
 | ||||
|             if (!userExposed) | ||||
|             { | ||||
|                 dupe.RootPart.IsAttachment = previousAttachmentStatus; | ||||
|             } | ||||
| 
 | ||||
|             dupe.CopyRootPart(m_rootPart, OwnerID, GroupID, userExposed); | ||||
|             dupe.m_rootPart.LinkNum = m_rootPart.LinkNum; | ||||
|  | @ -1576,16 +1578,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
|                 dupe.RootPart.DoPhysicsPropertyUpdate(dupe.RootPart.PhysActor.IsPhysical, true); | ||||
|             } | ||||
| 
 | ||||
|             // Now we've made a copy that replaces this one, we need to | ||||
|             // switch the owner to the person who did the copying | ||||
|             // Second Life copies an object and duplicates the first one in it's place | ||||
|             // So, we have to make a copy of this one, set it in it's place then set the owner on this one | ||||
|             if (userExposed) | ||||
|             { | ||||
|                 SetRootPartOwner(m_rootPart, cAgentID, cGroupID); | ||||
|                 m_rootPart.ScheduleFullUpdate(); | ||||
|             } | ||||
|              | ||||
|             List<SceneObjectPart> partList; | ||||
| 
 | ||||
|             lock (m_parts) | ||||
|  | @ -1606,12 +1598,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
|                     SceneObjectPart newPart = dupe.CopyPart(part, OwnerID, GroupID, userExposed); | ||||
| 
 | ||||
|                     newPart.LinkNum = part.LinkNum; | ||||
| 
 | ||||
|                     if (userExposed) | ||||
|                     { | ||||
|                         SetPartOwner(newPart, cAgentID, cGroupID); | ||||
|                         newPart.ScheduleFullUpdate(); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|  | @ -3595,7 +3581,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
|          | ||||
|         public virtual ISceneObject CloneForNewScene() | ||||
|         { | ||||
|             SceneObjectGroup sog = Copy(this.OwnerID, this.GroupID, false); | ||||
|             SceneObjectGroup sog = Copy(false); | ||||
|             sog.m_isDeleted = false; | ||||
|             return sog; | ||||
|         } | ||||
|  |  | |||
|  | @ -31,6 +31,7 @@ using System.IO; | |||
| using System.Collections.Generic; | ||||
| using System.Collections; | ||||
| using System.Reflection; | ||||
| using System.Threading; | ||||
| using OpenMetaverse; | ||||
| using log4net; | ||||
| using OpenSim.Framework; | ||||
|  | @ -200,6 +201,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
|                     if ((int)InventoryType.LSL == item.InvType) | ||||
|                     { | ||||
|                         CreateScriptInstance(item, startParam, postOnRez, engine, stateSource); | ||||
|                         Thread.Sleep(10); // workaround for Mono cpu utilization > 100% bug | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|  | @ -257,7 +259,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             // m_log.InfoFormat( | ||||
|             //     "[PRIM INVENTORY]: " + | ||||
|             //     "Starting script {0}, {1} in prim {2}, {3}", | ||||
|             //     item.Name, item.ItemID, Name, UUID); | ||||
|             //     item.Name, item.ItemID, m_part.Name, m_part.UUID); | ||||
| 
 | ||||
|             if (!m_part.ParentGroup.Scene.Permissions.CanRunScript(item.ItemID, m_part.UUID, item.OwnerID)) | ||||
|                 return; | ||||
|  | @ -293,20 +295,20 @@ namespace OpenSim.Region.Framework.Scenes | |||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     if (m_part.ParentGroup.m_savedScriptState != null) | ||||
|                         RestoreSavedScriptState(item.OldItemID, item.ItemID); | ||||
| 
 | ||||
|                     lock (m_items) | ||||
|                     { | ||||
|                         if (m_part.ParentGroup.m_savedScriptState != null) | ||||
|                             RestoreSavedScriptState(item.OldItemID, item.ItemID); | ||||
| 
 | ||||
|                         m_items[item.ItemID].PermsMask = 0; | ||||
|                         m_items[item.ItemID].PermsGranter = UUID.Zero; | ||||
| 
 | ||||
|                         string script = Utils.BytesToString(asset.Data); | ||||
|                         m_part.ParentGroup.Scene.EventManager.TriggerRezScript( | ||||
|                             m_part.LocalId, item.ItemID, script, startParam, postOnRez, engine, stateSource); | ||||
|                         m_part.ParentGroup.AddActiveScriptCount(1); | ||||
|                         m_part.ScheduleFullUpdate(); | ||||
|                     } | ||||
|                  | ||||
|                     string script = Utils.BytesToString(asset.Data); | ||||
|                     m_part.ParentGroup.Scene.EventManager.TriggerRezScript( | ||||
|                         m_part.LocalId, item.ItemID, script, startParam, postOnRez, engine, stateSource); | ||||
|                     m_part.ParentGroup.AddActiveScriptCount(1); | ||||
|                     m_part.ScheduleFullUpdate(); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  |  | |||
|  | @ -73,7 +73,7 @@ namespace OpenSim.Region.OptionalModules.ContentManagement | |||
|         public ContentManagementEntity(SceneObjectGroup Unchanged, bool physics) | ||||
|             : base(Unchanged, false) | ||||
|         { | ||||
|             m_UnchangedEntity = Unchanged.Copy(Unchanged.RootPart.OwnerID, Unchanged.RootPart.GroupID, false); | ||||
|             m_UnchangedEntity = Unchanged.Copy(false); | ||||
|         } | ||||
| 
 | ||||
|         public ContentManagementEntity(string objectXML, Scene scene,  bool physics) | ||||
|  |  | |||
|  | @ -80,7 +80,7 @@ namespace OpenSim.Region.OptionalModules.ContentManagement | |||
|         /// </summary> | ||||
|         public MetaEntity(SceneObjectGroup orig, bool physics) | ||||
|         { | ||||
|             m_Entity = orig.Copy(orig.RootPart.OwnerID, orig.RootPart.GroupID, false); | ||||
|             m_Entity = orig.Copy(false); | ||||
|             Initialize(physics); | ||||
|         } | ||||
| 
 | ||||
|  |  | |||
|  | @ -675,7 +675,7 @@ namespace OpenSim.Region.Physics.OdePlugin | |||
|             m_dir.Z = vel_now.Z;        // Preserve the accumulated falling velocity | ||||
| 
 | ||||
|             d.Vector3 pos = d.BodyGetPosition(Body); | ||||
|             Vector3 accel = new Vector3(-(m_dir.X - m_lastLinearVelocityVector.X / 0.1f), -(m_dir.Y - m_lastLinearVelocityVector.Y / 0.1f), m_dir.Z - m_lastLinearVelocityVector.Z / 0.1f); | ||||
| //            Vector3 accel = new Vector3(-(m_dir.X - m_lastLinearVelocityVector.X / 0.1f), -(m_dir.Y - m_lastLinearVelocityVector.Y / 0.1f), m_dir.Z - m_lastLinearVelocityVector.Z / 0.1f); | ||||
|             Vector3 posChange = new Vector3(); | ||||
|             posChange.X = pos.X - m_lastPositionVector.X; | ||||
|             posChange.Y = pos.Y - m_lastPositionVector.Y; | ||||
|  |  | |||
|  | @ -1576,19 +1576,19 @@ Console.WriteLine(" JointCreateFixed"); | |||
| //Console.WriteLine("Move " +  m_primName); | ||||
|                     if (!d.BodyIsEnabled (Body))  d.BodyEnable (Body); // KF add 161009 | ||||
|                     // NON-'VEHICLES' are dealt with here | ||||
|                     if (d.BodyIsEnabled(Body) && !m_angularlock.ApproxEquals(Vector3.Zero, 0.003f)) | ||||
|                     { | ||||
|                         d.Vector3 avel2 = d.BodyGetAngularVel(Body); | ||||
|                         /* | ||||
|                         if (m_angularlock.X == 1) | ||||
|                             avel2.X = 0; | ||||
|                         if (m_angularlock.Y == 1) | ||||
|                             avel2.Y = 0; | ||||
|                         if (m_angularlock.Z == 1) | ||||
|                             avel2.Z = 0; | ||||
|                         d.BodySetAngularVel(Body, avel2.X, avel2.Y, avel2.Z); | ||||
|                          */ | ||||
|                     } | ||||
| //                    if (d.BodyIsEnabled(Body) && !m_angularlock.ApproxEquals(Vector3.Zero, 0.003f)) | ||||
| //                    { | ||||
| //                        d.Vector3 avel2 = d.BodyGetAngularVel(Body); | ||||
| //                        /* | ||||
| //                        if (m_angularlock.X == 1) | ||||
| //                            avel2.X = 0; | ||||
| //                        if (m_angularlock.Y == 1) | ||||
| //                            avel2.Y = 0; | ||||
| //                        if (m_angularlock.Z == 1) | ||||
| //                            avel2.Z = 0; | ||||
| //                        d.BodySetAngularVel(Body, avel2.X, avel2.Y, avel2.Z); | ||||
| //                         */ | ||||
| //                    } | ||||
|                     //float PID_P = 900.0f; | ||||
| 
 | ||||
|                     float m_mass = CalculateMass(); | ||||
|  |  | |||
|  | @ -705,22 +705,75 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
|         { | ||||
|             //A and B should both be normalized | ||||
|             m_host.AddScriptLPS(1); | ||||
|             double dotProduct = LSL_Vector.Dot(a, b); | ||||
|             LSL_Vector crossProduct = LSL_Vector.Cross(a, b); | ||||
|             double magProduct = LSL_Vector.Mag(a) * LSL_Vector.Mag(b); | ||||
|             double angle = Math.Acos(dotProduct / magProduct); | ||||
|             LSL_Vector axis = LSL_Vector.Norm(crossProduct); | ||||
|             double s = Math.Sin(angle / 2); | ||||
| 
 | ||||
|             double x = axis.x * s; | ||||
|             double y = axis.y * s; | ||||
|             double z = axis.z * s; | ||||
|             double w = Math.Cos(angle / 2); | ||||
| 
 | ||||
|             if (Double.IsNaN(x) || Double.IsNaN(y) || Double.IsNaN(z) || Double.IsNaN(w)) | ||||
|                 return new LSL_Rotation(0.0f, 0.0f, 0.0f, 1.0f); | ||||
| 
 | ||||
|             return new LSL_Rotation((float)x, (float)y, (float)z, (float)w); | ||||
|             LSL_Rotation rotBetween; | ||||
|             // Check for zero vectors. If either is zero, return zero rotation. Otherwise, | ||||
|             // continue calculation. | ||||
|             if (a == new LSL_Vector(0.0f, 0.0f, 0.0f) || b == new LSL_Vector(0.0f, 0.0f, 0.0f)) | ||||
|             { | ||||
|                 rotBetween = new LSL_Rotation(0.0f, 0.0f, 0.0f, 1.0f); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 a = LSL_Vector.Norm(a); | ||||
|                 b = LSL_Vector.Norm(b); | ||||
|                 double dotProduct = LSL_Vector.Dot(a, b); | ||||
|                 // There are two degenerate cases possible. These are for vectors 180 or | ||||
|                 // 0 degrees apart. These have to be detected and handled individually. | ||||
|                 // | ||||
|                 // Check for vectors 180 degrees apart. | ||||
|                 // A dot product of -1 would mean the angle between vectors is 180 degrees. | ||||
|                 if (dotProduct < -0.9999999f) | ||||
|                 { | ||||
|                     // First assume X axis is orthogonal to the vectors. | ||||
|                     LSL_Vector orthoVector = new LSL_Vector(1.0f, 0.0f, 0.0f); | ||||
|                     orthoVector = orthoVector - a * (a.x / LSL_Vector.Dot(a, a)); | ||||
|                     // Check for near zero vector. A very small non-zero number here will create | ||||
|                     // a rotation in an undesired direction. | ||||
|                     if (LSL_Vector.Mag(orthoVector) > 0.0001) | ||||
|                     { | ||||
|                         rotBetween = new LSL_Rotation(orthoVector.x, orthoVector.y, orthoVector.z, 0.0f); | ||||
|                     } | ||||
|                     // If the magnitude of the vector was near zero, then assume the X axis is not | ||||
|                     // orthogonal and use the Z axis instead. | ||||
|                     else | ||||
|                     { | ||||
|                         // Set 180 z rotation. | ||||
|                         rotBetween = new LSL_Rotation(0.0f, 0.0f, 1.0f, 0.0f); | ||||
|                     } | ||||
|                 } | ||||
|                 // Check for parallel vectors. | ||||
|                 // A dot product of 1 would mean the angle between vectors is 0 degrees. | ||||
|                 else if (dotProduct > 0.9999999f) | ||||
|                 { | ||||
|                     // Set zero rotation. | ||||
|                     rotBetween = new LSL_Rotation(0.0f, 0.0f, 0.0f, 1.0f); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     // All special checks have been performed so get the axis of rotation. | ||||
|                     LSL_Vector crossProduct = LSL_Vector.Cross(a, b); | ||||
|                     // Quarternion s value is the length of the unit vector + dot product. | ||||
|                     double qs = 1.0 + dotProduct; | ||||
|                     rotBetween = new LSL_Rotation(crossProduct.x, crossProduct.y, crossProduct.z, qs); | ||||
|                     // Normalize the rotation. | ||||
|                     double mag = LSL_Rotation.Mag(rotBetween); | ||||
|                     // We shouldn't have to worry about a divide by zero here. The qs value will be | ||||
|                     // non-zero because we already know if we're here, then the dotProduct is not -1 so | ||||
|                     // qs will not be zero. Also, we've already handled the input vectors being zero so the | ||||
|                     // crossProduct vector should also not be zero. | ||||
|                     rotBetween.x = rotBetween.x / mag; | ||||
|                     rotBetween.y = rotBetween.y / mag; | ||||
|                     rotBetween.z = rotBetween.z / mag; | ||||
|                     rotBetween.s = rotBetween.s / mag; | ||||
|                     // Check for undefined values and set zero rotation if any found. This code might not actually be required | ||||
|                     // any longer since zero vectors are checked for at the top. | ||||
|                     if (Double.IsNaN(rotBetween.x) || Double.IsNaN(rotBetween.y) || Double.IsNaN(rotBetween.z) || Double.IsNaN(rotBetween.s)) | ||||
|                     { | ||||
|                         rotBetween = new LSL_Rotation(0.0f, 0.0f, 0.0f, 1.0f); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             return rotBetween; | ||||
|         } | ||||
| 
 | ||||
|         public void llWhisper(int channelID, string text) | ||||
|  | @ -6520,6 +6573,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
|             if (cut.y - cut.x < 0.05f) | ||||
|             { | ||||
|                 cut.x = cut.y - 0.05f; | ||||
|                 if (cut.x < 0.0f) | ||||
|                 { | ||||
|                     cut.x = 0.0f; | ||||
|                     cut.y = 0.05f; | ||||
|                 } | ||||
|             } | ||||
|             shapeBlock.ProfileBegin = (ushort)(50000 * cut.x); | ||||
|             shapeBlock.ProfileEnd = (ushort)(50000 * (1 - cut.y)); | ||||
|  | @ -6715,9 +6773,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
|             { | ||||
|                 profilecut.y = 1f; | ||||
|             } | ||||
|             if (profilecut.y - cut.x < 0.05f) | ||||
|             if (profilecut.y - profilecut.x < 0.05f) | ||||
|             { | ||||
|                 profilecut.x = cut.y - 0.05f; | ||||
|                 profilecut.x = profilecut.y - 0.05f; | ||||
|                 if (profilecut.x < 0.0f) | ||||
|                 { | ||||
|                     profilecut.x = 0.0f; | ||||
|                     profilecut.y = 0.05f; | ||||
|                 } | ||||
|             } | ||||
|             shapeBlock.ProfileBegin = (ushort)(50000 * profilecut.x); | ||||
|             shapeBlock.ProfileEnd = (ushort)(50000 * (1 - profilecut.y)); | ||||
|  |  | |||
|  | @ -230,6 +230,12 @@ namespace OpenSim.Server.Base | |||
|                     "shutdown", | ||||
|                     "Quit the application", HandleQuit); | ||||
| 
 | ||||
|             // Register a command to read other commands from a file | ||||
|             MainConsole.Instance.Commands.AddCommand("base", false, "command-script", | ||||
|                                           "command-script <script>", | ||||
|                                           "Run a command script from file", HandleScript); | ||||
| 
 | ||||
| 
 | ||||
|             // Allow derived classes to perform initialization that | ||||
|             // needs to be done after the console has opened | ||||
|             // | ||||
|  | @ -259,6 +265,41 @@ namespace OpenSim.Server.Base | |||
|             m_log.Info("[CONSOLE] Quitting"); | ||||
|         } | ||||
| 
 | ||||
|         protected virtual void HandleScript(string module, string[] parms) | ||||
|         { | ||||
|             if (parms.Length != 2) | ||||
|             { | ||||
|                 return; | ||||
|             } | ||||
|             RunCommandScript(parms[1]); | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Run an optional startup list of commands | ||||
|         /// </summary> | ||||
|         /// <param name="fileName"></param> | ||||
|         private void RunCommandScript(string fileName) | ||||
|         { | ||||
|             if (File.Exists(fileName)) | ||||
|             { | ||||
|                 m_log.Info("[COMMANDFILE]: Running " + fileName); | ||||
| 
 | ||||
|                 using (StreamReader readFile = File.OpenText(fileName)) | ||||
|                 { | ||||
|                     string currentCommand; | ||||
|                     while ((currentCommand = readFile.ReadLine()) != null) | ||||
|                     { | ||||
|                         if (currentCommand != String.Empty) | ||||
|                         { | ||||
|                             m_log.Info("[COMMANDFILE]: Running '" + currentCommand + "'"); | ||||
|                             MainConsole.Instance.RunCommand(currentCommand); | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         protected virtual void ReadConfig() | ||||
|         { | ||||
|         } | ||||
|  |  | |||
|  | @ -44,6 +44,8 @@ namespace OpenSim.Server.Handlers.Asset | |||
| { | ||||
|     public class XInventoryInConnector : ServiceConnector | ||||
|     { | ||||
|         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||||
| 
 | ||||
|         private IInventoryService m_InventoryService; | ||||
|         private string m_ConfigName = "InventoryService"; | ||||
| 
 | ||||
|  | @ -53,6 +55,8 @@ namespace OpenSim.Server.Handlers.Asset | |||
|             if (configName != String.Empty) | ||||
|                 m_ConfigName = configName; | ||||
| 
 | ||||
|             m_log.DebugFormat("[XInventoryInConnector]: Starting with config name {0}", m_ConfigName); | ||||
| 
 | ||||
|             IConfig serverConfig = config.Configs[m_ConfigName]; | ||||
|             if (serverConfig == null) | ||||
|                 throw new Exception(String.Format("No section '{0}' in config file", m_ConfigName)); | ||||
|  |  | |||
|  | @ -272,7 +272,7 @@ namespace OpenSim.Server.Handlers.Simulation | |||
|             //responsedata["str_response_string"] = OSDParser.SerializeJsonString(resp); ??? instead | ||||
|         } | ||||
| 
 | ||||
|         // subclasses cab override this | ||||
|         // subclasses can override this | ||||
|         protected virtual bool UpdateAgent(GridRegion destination, AgentData agent) | ||||
|         { | ||||
|             return m_SimulationService.UpdateAgent(destination, agent); | ||||
|  | @ -280,6 +280,12 @@ namespace OpenSim.Server.Handlers.Simulation | |||
| 
 | ||||
|         protected virtual void DoAgentGet(Hashtable request, Hashtable responsedata, UUID id, UUID regionID) | ||||
|         { | ||||
|             if (m_SimulationService == null) | ||||
|             { | ||||
|                 m_log.Debug("[AGENT HANDLER]: Agent GET called. Harmless but useless."); | ||||
|                 return; | ||||
|             } | ||||
| 
 | ||||
|             GridRegion destination = new GridRegion(); | ||||
|             destination.RegionID = regionID; | ||||
| 
 | ||||
|  |  | |||
|  | @ -371,7 +371,7 @@ namespace OpenSim.Services.Connectors.SimianGrid | |||
|         /// <returns></returns> | ||||
|         public bool Delete(string id) | ||||
|         { | ||||
|             string errorMessage = String.Empty; | ||||
|             //string errorMessage = String.Empty; | ||||
|             string url = m_serverUrl + id; | ||||
| 
 | ||||
|             if (m_cache != null) | ||||
|  |  | |||
|  | @ -255,7 +255,11 @@ namespace OpenSim.Services.GridService | |||
|                 { | ||||
|                     m_log.WarnFormat("[HYPERGRID LINKER]: Remote Gatekeeper at {0} provided malformed ExternalName {1}", regInfo.ExternalHostName, externalName); | ||||
|                 } | ||||
|                 regInfo.RegionName = regInfo.ExternalHostName + ":" + regInfo.HttpPort + ":" + regInfo.RegionName; | ||||
|                 string name = regInfo.RegionName; | ||||
|                 regInfo.RegionName = regInfo.ExternalHostName + ":" + regInfo.HttpPort; | ||||
|                 if (name != string.Empty) | ||||
|                     regInfo.RegionName += ":" + name; | ||||
| 
 | ||||
|                 // Try get the map image | ||||
|                 //regInfo.TerrainImage = m_GatekeeperConnector.GetMapImage(regionID, imageURL); | ||||
|                 // I need a texture that works for this... the one I tried doesn't seem to be working | ||||
|  |  | |||
|  | @ -108,13 +108,13 @@ namespace OpenSim.Services.InventoryService | |||
|             // Warp! Root folder for travelers | ||||
|             XInventoryFolder[] folders = m_Database.GetFolders( | ||||
|                     new string[] { "agentID", "folderName"}, | ||||
|                     new string[] { principalID.ToString(), "Suitcase" }); | ||||
|                     new string[] { principalID.ToString(), "My Suitcase" }); | ||||
| 
 | ||||
|             if (folders.Length > 0) | ||||
|                 return ConvertToOpenSim(folders[0]); | ||||
|              | ||||
|             // make one | ||||
|             XInventoryFolder suitcase = CreateFolder(principalID, UUID.Zero, (int)AssetType.Folder, "Suitcase"); | ||||
|             XInventoryFolder suitcase = CreateFolder(principalID, UUID.Zero, (int)AssetType.Folder, "My Suitcase"); | ||||
|             return ConvertToOpenSim(suitcase); | ||||
|         } | ||||
| 
 | ||||
|  |  | |||
|  | @ -200,7 +200,14 @@ namespace OpenSim.Services.InventoryService | |||
|             if (folders.Length == 0) | ||||
|                 return null; | ||||
| 
 | ||||
|             return ConvertToOpenSim(folders[0]); | ||||
|             XInventoryFolder root = null; | ||||
|             foreach (XInventoryFolder folder in folders) | ||||
|                 if (folder.folderName == "My Inventory") | ||||
|                     root = folder; | ||||
|             if (folders == null) // oops | ||||
|                 root = folders[0]; | ||||
| 
 | ||||
|             return ConvertToOpenSim(root); | ||||
|         } | ||||
| 
 | ||||
|         public virtual InventoryFolderBase GetFolderForType(UUID principalID, AssetType type) | ||||
|  |  | |||
|  | @ -36,9 +36,9 @@ | |||
|       <SpecificVersion>False</SpecificVersion> | ||||
|       <HintPath>..\..\..\bin\log4net.dll</HintPath> | ||||
|     </Reference> | ||||
|     <Reference Include="OpenSim.Server, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL"> | ||||
|     <Reference Include="Robust, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL"> | ||||
|       <SpecificVersion>False</SpecificVersion> | ||||
|       <HintPath>..\..\..\bin\OpenSim.Server.exe</HintPath> | ||||
|       <HintPath>..\..\..\bin\Robust.exe</HintPath> | ||||
|     </Reference> | ||||
|     <Reference Include="System" /> | ||||
|     <Reference Include="System.Core"> | ||||
|  |  | |||
|  | @ -597,21 +597,19 @@ | |||
|     ; Set this to a nonzero value to have remote admin use a different port | ||||
|     port = 0 | ||||
| 
 | ||||
|     ; This password is required to make any XMLRPC call (should be set as the "password" parameter) | ||||
|     access_password = unknown | ||||
| 
 | ||||
|     ; set this variable to true if you want the create_region XmlRpc | ||||
|     ; call to unconditionally enable voice on all parcels for a newly | ||||
|     ; created region [default: false] | ||||
| 
 | ||||
|     create_region_enable_voice = false | ||||
| 
 | ||||
|     ; set this variable to false if you want the create_region XmlRpc | ||||
|     ; call to create all regions as private per default (can be | ||||
|     ; overridden in the XmlRpc call) [default: true] | ||||
| 
 | ||||
|     create_region_public = false | ||||
| 
 | ||||
| 
 | ||||
|     ; the create_region XmlRpc call uses region_file_template to generate | ||||
|     ; the file name of newly create regions (if they are created | ||||
|     ; persistent). the parameter available are: | ||||
|  | @ -620,7 +618,6 @@ | |||
|     ;     {2} - region UUID | ||||
|     ;     {3} - region port | ||||
|     ;     {4} - region name with " ", ":", "/" mapped to  "_" | ||||
| 
 | ||||
|     region_file_template = "{0}x{1}-{2}.xml" | ||||
| 
 | ||||
|     ; we can limit the number of regions that XmlRpcCreateRegion will | ||||
|  | @ -635,6 +632,18 @@ | |||
|     ; if this parameter is not specified but enabled = true, all methods will be available | ||||
|     enabled_methods = all | ||||
| 
 | ||||
|     ; specify the default appearance for an avatar created through the remote admin interface | ||||
|     ; This will only take effect is the file specified by the default_appearance setting below exists | ||||
|     ;default_male = Default Male | ||||
|     ;default_female = Default Female | ||||
| 
 | ||||
|     ; update appearance copies inventory items and wearables of default avatars. if this value is false | ||||
|     ; (default), just worn assets are copied to the Clothes folder; if true, all Clothes and Bodyparts | ||||
|     ; subfolders are copied. the receiver will wear the same items the default avatar did wear. | ||||
|     ;copy_folders = false | ||||
| 
 | ||||
|     ; path to default appearance XML file that specifies the look of the default avatars | ||||
|     ;default_appearance = default_appearance.xml  | ||||
| 
 | ||||
| [RestPlugins] | ||||
|     ; Change this to true to enable REST Plugins. This must be true if you wish to use | ||||
|  |  | |||
										
											Binary file not shown.
										
									
								
							|  | @ -198,6 +198,10 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003 | |||
|     ; CHANGE THIS | ||||
|     ExternalName = "http://127.0.0.1:8002" | ||||
| 
 | ||||
| 	; Does this grid allow incoming links to any region in it?  | ||||
| 	; If false, HG TPs happen only to the  Default regions specified in [GridService] section | ||||
| 	AllowTeleportsToAnyRegion = true | ||||
| 
 | ||||
| [UserAgentService] | ||||
|     LocalServiceModule = "OpenSim.Services.HypergridService.dll:UserAgentService" | ||||
|     ;; for the service | ||||
|  |  | |||
|  | @ -68,3 +68,8 @@ | |||
| 
 | ||||
| [GatekeeperService] | ||||
|     ExternalName = "http://127.0.0.1:9000" | ||||
| 
 | ||||
| 	; Does this grid allow incoming links to any region in it?  | ||||
| 	; If false, HG TPs happen only to the  Default regions specified in [GridService] section | ||||
| 	AllowTeleportsToAnyRegion = true | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Diva Canto
						Diva Canto