Merge git://github.com/opensim/opensim into mantis5110
commit
4f40374464
|
@ -116,7 +116,9 @@ namespace OpenSim.ApplicationPlugins.RemoteController
|
||||||
int port = m_config.GetInt("port", 0);
|
int port = m_config.GetInt("port", 0);
|
||||||
|
|
||||||
m_application = openSim;
|
m_application = openSim;
|
||||||
m_httpServer = MainServer.GetHttpServer((uint)port);
|
string bind_ip_address = m_config.GetString("bind_ip_address", "0.0.0.0");
|
||||||
|
IPAddress ipaddr = IPAddress.Parse( bind_ip_address );
|
||||||
|
m_httpServer = MainServer.GetHttpServer((uint)port,ipaddr);
|
||||||
|
|
||||||
Dictionary<string, XmlRpcMethod> availableMethods = new Dictionary<string, XmlRpcMethod>();
|
Dictionary<string, XmlRpcMethod> availableMethods = new Dictionary<string, XmlRpcMethod>();
|
||||||
availableMethods["admin_create_region"] = XmlRpcCreateRegionMethod;
|
availableMethods["admin_create_region"] = XmlRpcCreateRegionMethod;
|
||||||
|
|
|
@ -705,6 +705,9 @@ VALUES
|
||||||
//Return default LL windlight settings
|
//Return default LL windlight settings
|
||||||
return new RegionLightShareData();
|
return new RegionLightShareData();
|
||||||
}
|
}
|
||||||
|
public void RemoveRegionWindlightSettings(UUID regionID)
|
||||||
|
{
|
||||||
|
}
|
||||||
public void StoreRegionWindlightSettings(RegionLightShareData wl)
|
public void StoreRegionWindlightSettings(RegionLightShareData wl)
|
||||||
{
|
{
|
||||||
//This connector doesn't support the windlight module yet
|
//This connector doesn't support the windlight module yet
|
||||||
|
|
|
@ -817,6 +817,7 @@ namespace OpenSim.Data.MySQL
|
||||||
nWP.cloudScrollY = Convert.ToSingle(result["cloud_scroll_y"]);
|
nWP.cloudScrollY = Convert.ToSingle(result["cloud_scroll_y"]);
|
||||||
nWP.cloudScrollYLock = Convert.ToBoolean(result["cloud_scroll_y_lock"]);
|
nWP.cloudScrollYLock = Convert.ToBoolean(result["cloud_scroll_y_lock"]);
|
||||||
nWP.drawClassicClouds = Convert.ToBoolean(result["draw_classic_clouds"]);
|
nWP.drawClassicClouds = Convert.ToBoolean(result["draw_classic_clouds"]);
|
||||||
|
nWP.valid = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -964,6 +965,21 @@ namespace OpenSim.Data.MySQL
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RemoveRegionWindlightSettings(UUID regionID)
|
||||||
|
{
|
||||||
|
using (MySqlConnection dbcon = new MySqlConnection(m_connectionString))
|
||||||
|
{
|
||||||
|
dbcon.Open();
|
||||||
|
|
||||||
|
using (MySqlCommand cmd = dbcon.CreateCommand())
|
||||||
|
{
|
||||||
|
cmd.CommandText = "delete from `regionwindlight` where `region_id`=?regionID";
|
||||||
|
cmd.Parameters.AddWithValue("?regionID", regionID.ToString());
|
||||||
|
ExecuteNonQuery(cmd);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void StoreRegionSettings(RegionSettings rs)
|
public void StoreRegionSettings(RegionSettings rs)
|
||||||
{
|
{
|
||||||
lock (m_dbLock)
|
lock (m_dbLock)
|
||||||
|
|
|
@ -56,6 +56,9 @@ namespace OpenSim.Data.Null
|
||||||
//Return default LL windlight settings
|
//Return default LL windlight settings
|
||||||
return new RegionLightShareData();
|
return new RegionLightShareData();
|
||||||
}
|
}
|
||||||
|
public void RemoveRegionWindlightSettings(UUID regionID)
|
||||||
|
{
|
||||||
|
}
|
||||||
public void StoreRegionWindlightSettings(RegionLightShareData wl)
|
public void StoreRegionWindlightSettings(RegionLightShareData wl)
|
||||||
{
|
{
|
||||||
//This connector doesn't support the windlight module yet
|
//This connector doesn't support the windlight module yet
|
||||||
|
|
|
@ -323,6 +323,9 @@ namespace OpenSim.Data.SQLite
|
||||||
//Return default LL windlight settings
|
//Return default LL windlight settings
|
||||||
return new RegionLightShareData();
|
return new RegionLightShareData();
|
||||||
}
|
}
|
||||||
|
public void RemoveRegionWindlightSettings(UUID regionID)
|
||||||
|
{
|
||||||
|
}
|
||||||
public void StoreRegionWindlightSettings(RegionLightShareData wl)
|
public void StoreRegionWindlightSettings(RegionLightShareData wl)
|
||||||
{
|
{
|
||||||
//This connector doesn't support the windlight module yet
|
//This connector doesn't support the windlight module yet
|
||||||
|
|
|
@ -286,6 +286,9 @@ namespace OpenSim.Data.SQLiteLegacy
|
||||||
//Return default LL windlight settings
|
//Return default LL windlight settings
|
||||||
return new RegionLightShareData();
|
return new RegionLightShareData();
|
||||||
}
|
}
|
||||||
|
public void RemoveRegionWindlightSettings(UUID regionID)
|
||||||
|
{
|
||||||
|
}
|
||||||
public void StoreRegionWindlightSettings(RegionLightShareData wl)
|
public void StoreRegionWindlightSettings(RegionLightShareData wl)
|
||||||
{
|
{
|
||||||
//This connector doesn't support the windlight module yet
|
//This connector doesn't support the windlight module yet
|
||||||
|
|
|
@ -231,7 +231,7 @@ namespace OpenSim.Framework
|
||||||
|
|
||||||
protected virtual void SetDefaultParams()
|
protected virtual void SetDefaultParams()
|
||||||
{
|
{
|
||||||
m_visualparams = new byte[] { 56,23,66,0,0,25,0,124,107,0,0,91,137,36,180,79,78,20,32,255,0,63,137,137,63,122,0,71,127,94,63,0,150,150,150,17,0,0,0,0,0,127,0,0,255,127,114,127,99,63,127,140,127,127,0,0,0,191,0,78,0,0,0,0,0,0,0,0,0,145,216,133,0,0,0,219,107,150,150,165,135,0,150,150,150,63,112,155,150,150,150,150,150,150,150,150,150,150,150,0,0,0,0,188,255,91,219,124,0,150,127,165,127,127,127,127,59,63,107,71,68,89,33,79,114,178,127,2,141,66,0,0,127,127,0,0,0,0,127,0,159,0,0,178,127,0,85,131,117,127,147,163,104,0,140,18,0,107,130,0,150,150,198,0,0,40,38,91,165,209,198,127,127,153,204,51,51,150,150,255,204,0,150,150,150,150,150,150,150,150,150,150,150,0,150,150,150,150,150,0,127,22,150,150,150,150,150,150,150,150,0,0,150,51,132,150,150,150 };
|
m_visualparams = new byte[] { 33,61,85,23,58,127,63,85,63,42,0,85,63,36,85,95,153,63,34,0,63,109,88,132,63,136,81,85,103,136,127,0,150,150,150,127,0,0,0,0,0,127,0,0,255,127,114,127,99,63,127,140,127,127,0,0,0,191,0,104,0,0,0,0,0,0,0,0,0,145,216,133,0,127,0,127,170,0,0,127,127,109,85,127,127,63,85,42,150,150,150,150,150,150,150,25,150,150,150,0,127,0,0,144,85,127,132,127,85,0,127,127,127,127,127,127,59,127,85,127,127,106,47,79,127,127,204,2,141,66,0,0,127,127,0,0,0,0,127,0,159,0,0,178,127,36,85,131,127,127,127,153,95,0,140,75,27,127,127,0,150,150,198,0,0,63,30,127,165,209,198,127,127,153,204,51,51,255,255,255,204,0,255,150,150,150,150,150,150,150,150,150,150,0,150,150,150,150,150,0,127,127,150,150,150,150,150,150,150,150,0,0,150,51,132,150,150,150 };
|
||||||
// for (int i = 0; i < VISUALPARAM_COUNT; i++)
|
// for (int i = 0; i < VISUALPARAM_COUNT; i++)
|
||||||
// {
|
// {
|
||||||
// m_visualparams[i] = 150;
|
// m_visualparams[i] = 150;
|
||||||
|
|
|
@ -221,9 +221,6 @@ namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (defaultWearables != null)
|
|
||||||
return defaultWearables;
|
|
||||||
|
|
||||||
defaultWearables = new AvatarWearable[MAX_WEARABLES]; //should be 15 of these
|
defaultWearables = new AvatarWearable[MAX_WEARABLES]; //should be 15 of these
|
||||||
for (int i = 0; i < MAX_WEARABLES; i++)
|
for (int i = 0; i < MAX_WEARABLES; i++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,6 +32,7 @@ using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using Nini.Config;
|
using Nini.Config;
|
||||||
|
@ -62,6 +63,7 @@ namespace OpenSim.Framework.Console
|
||||||
new Dictionary<UUID, ConsoleConnection>();
|
new Dictionary<UUID, ConsoleConnection>();
|
||||||
private string m_UserName = String.Empty;
|
private string m_UserName = String.Empty;
|
||||||
private string m_Password = String.Empty;
|
private string m_Password = String.Empty;
|
||||||
|
private string m_AllowedOrigin = String.Empty;
|
||||||
|
|
||||||
public RemoteConsole(string defaultPrompt) : base(defaultPrompt)
|
public RemoteConsole(string defaultPrompt) : base(defaultPrompt)
|
||||||
{
|
{
|
||||||
|
@ -77,6 +79,7 @@ namespace OpenSim.Framework.Console
|
||||||
|
|
||||||
m_UserName = netConfig.GetString("ConsoleUser", String.Empty);
|
m_UserName = netConfig.GetString("ConsoleUser", String.Empty);
|
||||||
m_Password = netConfig.GetString("ConsolePass", String.Empty);
|
m_Password = netConfig.GetString("ConsolePass", String.Empty);
|
||||||
|
m_AllowedOrigin = netConfig.GetString("ConsoleAllowedOrigin", String.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetServer(IHttpServer server)
|
public void SetServer(IHttpServer server)
|
||||||
|
@ -150,6 +153,29 @@ namespace OpenSim.Framework.Console
|
||||||
return cmdinput;
|
return cmdinput;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Hashtable CheckOrigin(Hashtable result)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(m_AllowedOrigin))
|
||||||
|
result["access_control_allow_origin"] = m_AllowedOrigin;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
/* TODO: Figure out how PollServiceHTTPHandler can access the request headers
|
||||||
|
* in order to use m_AllowedOrigin as a regular expression
|
||||||
|
private Hashtable CheckOrigin(Hashtable headers, Hashtable result)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(m_AllowedOrigin))
|
||||||
|
{
|
||||||
|
if (headers.ContainsKey("origin"))
|
||||||
|
{
|
||||||
|
string origin = headers["origin"].ToString();
|
||||||
|
if (Regex.IsMatch(origin, m_AllowedOrigin))
|
||||||
|
result["access_control_allow_origin"] = origin;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
private void DoExpire()
|
private void DoExpire()
|
||||||
{
|
{
|
||||||
List<UUID> expired = new List<UUID>();
|
List<UUID> expired = new List<UUID>();
|
||||||
|
@ -235,6 +261,7 @@ namespace OpenSim.Framework.Console
|
||||||
reply["str_response_string"] = xmldoc.InnerXml;
|
reply["str_response_string"] = xmldoc.InnerXml;
|
||||||
reply["int_response_code"] = 200;
|
reply["int_response_code"] = 200;
|
||||||
reply["content_type"] = "text/xml";
|
reply["content_type"] = "text/xml";
|
||||||
|
reply = CheckOrigin(reply);
|
||||||
|
|
||||||
return reply;
|
return reply;
|
||||||
}
|
}
|
||||||
|
@ -289,6 +316,7 @@ namespace OpenSim.Framework.Console
|
||||||
reply["str_response_string"] = xmldoc.InnerXml;
|
reply["str_response_string"] = xmldoc.InnerXml;
|
||||||
reply["int_response_code"] = 200;
|
reply["int_response_code"] = 200;
|
||||||
reply["content_type"] = "text/xml";
|
reply["content_type"] = "text/xml";
|
||||||
|
reply = CheckOrigin(reply);
|
||||||
|
|
||||||
return reply;
|
return reply;
|
||||||
}
|
}
|
||||||
|
@ -344,6 +372,7 @@ namespace OpenSim.Framework.Console
|
||||||
reply["str_response_string"] = xmldoc.InnerXml;
|
reply["str_response_string"] = xmldoc.InnerXml;
|
||||||
reply["int_response_code"] = 200;
|
reply["int_response_code"] = 200;
|
||||||
reply["content_type"] = "text/xml";
|
reply["content_type"] = "text/xml";
|
||||||
|
reply = CheckOrigin(reply);
|
||||||
|
|
||||||
return reply;
|
return reply;
|
||||||
}
|
}
|
||||||
|
@ -457,6 +486,7 @@ namespace OpenSim.Framework.Console
|
||||||
result["content_type"] = "application/xml";
|
result["content_type"] = "application/xml";
|
||||||
result["keepalive"] = false;
|
result["keepalive"] = false;
|
||||||
result["reusecontext"] = false;
|
result["reusecontext"] = false;
|
||||||
|
result = CheckOrigin(result);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -480,6 +510,7 @@ namespace OpenSim.Framework.Console
|
||||||
result["content_type"] = "text/xml";
|
result["content_type"] = "text/xml";
|
||||||
result["keepalive"] = false;
|
result["keepalive"] = false;
|
||||||
result["reusecontext"] = false;
|
result["reusecontext"] = false;
|
||||||
|
result = CheckOrigin(result);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Net;
|
||||||
using log4net;
|
using log4net;
|
||||||
using OpenSim.Framework.Servers.HttpServer;
|
using OpenSim.Framework.Servers.HttpServer;
|
||||||
|
|
||||||
|
@ -47,6 +48,11 @@ namespace OpenSim.Framework
|
||||||
}
|
}
|
||||||
|
|
||||||
public static IHttpServer GetHttpServer(uint port)
|
public static IHttpServer GetHttpServer(uint port)
|
||||||
|
{
|
||||||
|
return GetHttpServer(port,null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IHttpServer GetHttpServer(uint port, IPAddress ipaddr)
|
||||||
{
|
{
|
||||||
if (port == 0)
|
if (port == 0)
|
||||||
return Instance;
|
return Instance;
|
||||||
|
@ -58,6 +64,9 @@ namespace OpenSim.Framework
|
||||||
|
|
||||||
m_Servers[port] = new BaseHttpServer(port);
|
m_Servers[port] = new BaseHttpServer(port);
|
||||||
|
|
||||||
|
if (ipaddr != null )
|
||||||
|
m_Servers[port].ListenIPAddress = ipaddr;
|
||||||
|
|
||||||
m_log.InfoFormat("[MAIN HTTP SERVER]: Starting main http server on port {0}", port);
|
m_log.InfoFormat("[MAIN HTTP SERVER]: Starting main http server on port {0}", port);
|
||||||
m_Servers[port].Start();
|
m_Servers[port].Start();
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,7 @@ namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
public class RegionLightShareData : ICloneable
|
public class RegionLightShareData : ICloneable
|
||||||
{
|
{
|
||||||
|
public bool valid = false;
|
||||||
public UUID regionID = UUID.Zero;
|
public UUID regionID = UUID.Zero;
|
||||||
public Vector3 waterColor = new Vector3(4.0f,38.0f,64.0f);
|
public Vector3 waterColor = new Vector3(4.0f,38.0f,64.0f);
|
||||||
public float waterFogDensityExponent = 4.0f;
|
public float waterFogDensityExponent = 4.0f;
|
||||||
|
|
|
@ -1450,6 +1450,10 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
if (responsedata.ContainsKey("reusecontext"))
|
if (responsedata.ContainsKey("reusecontext"))
|
||||||
response.ReuseContext = (bool) responsedata["reusecontext"];
|
response.ReuseContext = (bool) responsedata["reusecontext"];
|
||||||
|
|
||||||
|
// Cross-Origin Resource Sharing with simple requests
|
||||||
|
if (responsedata.ContainsKey("access_control_allow_origin"))
|
||||||
|
response.AddHeader("Access-Control-Allow-Origin", (string)responsedata["access_control_allow_origin"]);
|
||||||
|
|
||||||
//Even though only one other part of the entire code uses HTTPHandlers, we shouldn't expect this
|
//Even though only one other part of the entire code uses HTTPHandlers, we shouldn't expect this
|
||||||
//and should check for NullReferenceExceptions
|
//and should check for NullReferenceExceptions
|
||||||
|
|
||||||
|
|
|
@ -264,9 +264,10 @@ namespace OpenSim
|
||||||
LoadOar);
|
LoadOar);
|
||||||
|
|
||||||
m_console.Commands.AddCommand("region", false, "save oar",
|
m_console.Commands.AddCommand("region", false, "save oar",
|
||||||
"save oar [<OAR path>]",
|
"save oar [-v|version=N] [<OAR path>]",
|
||||||
"Save a region's data to an OAR archive.",
|
"Save a region's data to an OAR archive.",
|
||||||
"The OAR path must be a filesystem path."
|
"-v|version=N generates scene objects as per older versions of the serialization (e.g. -v=0)" + Environment.NewLine
|
||||||
|
+ "The OAR path must be a filesystem path."
|
||||||
+ " If this is not given then the oar is saved to region.oar in the current directory.",
|
+ " If this is not given then the oar is saved to region.oar in the current directory.",
|
||||||
SaveOar);
|
SaveOar);
|
||||||
|
|
||||||
|
|
|
@ -194,6 +194,7 @@ namespace OpenSim.Region.CoreModules.World.LightShare
|
||||||
}
|
}
|
||||||
private void EventManager_OnSaveNewWindlightProfile()
|
private void EventManager_OnSaveNewWindlightProfile()
|
||||||
{
|
{
|
||||||
|
if (m_scene.RegionInfo.WindlightSettings.valid)
|
||||||
m_scene.ForEachScenePresence(SendProfileToClient);
|
m_scene.ForEachScenePresence(SendProfileToClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -175,6 +175,8 @@ namespace OpenSim.Region.CoreModules.Scripting.LoadImageURL
|
||||||
{
|
{
|
||||||
stream = response.GetResponseStream();
|
stream = response.GetResponseStream();
|
||||||
if (stream != null)
|
if (stream != null)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
Bitmap image = new Bitmap(stream);
|
Bitmap image = new Bitmap(stream);
|
||||||
Size newsize;
|
Size newsize;
|
||||||
|
@ -207,13 +209,11 @@ namespace OpenSim.Region.CoreModules.Scripting.LoadImageURL
|
||||||
|
|
||||||
Bitmap resize = new Bitmap(image, newsize);
|
Bitmap resize = new Bitmap(image, newsize);
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
imageJ2000 = OpenJPEG.EncodeFromImage(resize, true);
|
imageJ2000 = OpenJPEG.EncodeFromImage(resize, true);
|
||||||
}
|
}
|
||||||
catch (Exception)
|
catch (Exception)
|
||||||
{
|
{
|
||||||
m_log.Error("[LOADIMAGEURLMODULE]: OpenJpeg Encode Failed. Empty byte data returned!");
|
m_log.Error("[LOADIMAGEURLMODULE]: OpenJpeg Conversion Failed. Empty byte data returned!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -137,16 +137,13 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||||
|
|
||||||
m_log.InfoFormat("[ARCHIVER]: Added terrain information to archive.");
|
m_log.InfoFormat("[ARCHIVER]: Added terrain information to archive.");
|
||||||
|
|
||||||
Dictionary<string, object> serializationOptions = new Dictionary<string, object>();
|
|
||||||
// if (m_options.ContainsKey("version") && (string)m_options["version"] == "0")
|
|
||||||
// serializationOptions["old-guids"] = true;
|
|
||||||
|
|
||||||
// Write out scene object metadata
|
// Write out scene object metadata
|
||||||
foreach (SceneObjectGroup sceneObject in m_sceneObjects)
|
foreach (SceneObjectGroup sceneObject in m_sceneObjects)
|
||||||
{
|
{
|
||||||
//m_log.DebugFormat("[ARCHIVER]: Saving {0} {1}, {2}", entity.Name, entity.UUID, entity.GetType());
|
//m_log.DebugFormat("[ARCHIVER]: Saving {0} {1}, {2}", entity.Name, entity.UUID, entity.GetType());
|
||||||
|
|
||||||
string serializedObject = m_serialiser.SerializeGroupToXml2(sceneObject, serializationOptions);
|
string serializedObject = m_serialiser.SerializeGroupToXml2(sceneObject, m_options);
|
||||||
m_archiveWriter.WriteFile(ArchiveHelpers.CreateObjectPath(sceneObject), serializedObject);
|
m_archiveWriter.WriteFile(ArchiveHelpers.CreateObjectPath(sceneObject), serializedObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -187,20 +187,17 @@ namespace OpenSim.Region.CoreModules.World.Archiver
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static string Create0p2ControlFile(Dictionary<string, object> options)
|
public static string Create0p2ControlFile(Dictionary<string, object> options)
|
||||||
{
|
{
|
||||||
int majorVersion = 0, minorVersion = 4;
|
int majorVersion = 0, minorVersion = 5;
|
||||||
|
|
||||||
/*
|
if (options.ContainsKey("version"))
|
||||||
if (options.ContainsKey("version") && (string)options["version"] == "0")
|
|
||||||
{
|
{
|
||||||
majorVersion = 0;
|
|
||||||
minorVersion = 3;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
majorVersion = 1;
|
|
||||||
minorVersion = 0;
|
minorVersion = 0;
|
||||||
|
string[] parts = options["version"].ToString().Split('.');
|
||||||
|
if (parts.Length >= 1)
|
||||||
|
majorVersion = Int32.Parse(parts[0]);
|
||||||
|
if (parts.Length >= 2)
|
||||||
|
minorVersion = Int32.Parse(parts[1]);
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
m_log.InfoFormat("[ARCHIVER]: Creating version {0}.{1} OAR", majorVersion, minorVersion);
|
m_log.InfoFormat("[ARCHIVER]: Creating version {0}.{1} OAR", majorVersion, minorVersion);
|
||||||
// if (majorVersion == 1)
|
// if (majorVersion == 1)
|
||||||
|
|
|
@ -31,12 +31,14 @@ using OpenMetaverse;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
using OpenSim.Region.Framework.Interfaces;
|
||||||
using OpenSim.Region.Framework.Scenes;
|
using OpenSim.Region.Framework.Scenes;
|
||||||
|
using System.Reflection;
|
||||||
|
using log4net;
|
||||||
|
|
||||||
namespace OpenSim.Region.CoreModules.World.Sound
|
namespace OpenSim.Region.CoreModules.World.Sound
|
||||||
{
|
{
|
||||||
public class SoundModule : IRegionModule, ISoundModule
|
public class SoundModule : IRegionModule, ISoundModule
|
||||||
{
|
{
|
||||||
//private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
protected Scene m_scene;
|
protected Scene m_scene;
|
||||||
|
|
||||||
|
@ -62,6 +64,12 @@ namespace OpenSim.Region.CoreModules.World.Sound
|
||||||
public virtual void PlayAttachedSound(
|
public virtual void PlayAttachedSound(
|
||||||
UUID soundID, UUID ownerID, UUID objectID, double gain, Vector3 position, byte flags, float radius)
|
UUID soundID, UUID ownerID, UUID objectID, double gain, Vector3 position, byte flags, float radius)
|
||||||
{
|
{
|
||||||
|
SceneObjectPart part = m_scene.GetSceneObjectPart(objectID);
|
||||||
|
if (part == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
SceneObjectGroup grp = part.ParentGroup;
|
||||||
|
|
||||||
m_scene.ForEachScenePresence(delegate(ScenePresence sp)
|
m_scene.ForEachScenePresence(delegate(ScenePresence sp)
|
||||||
{
|
{
|
||||||
if (sp.IsChildAgent)
|
if (sp.IsChildAgent)
|
||||||
|
@ -71,12 +79,25 @@ namespace OpenSim.Region.CoreModules.World.Sound
|
||||||
if (dis > 100.0) // Max audio distance
|
if (dis > 100.0) // Max audio distance
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (grp.IsAttachment)
|
||||||
|
{
|
||||||
|
if (grp.GetAttachmentPoint() > 30) // HUD
|
||||||
|
{
|
||||||
|
if (sp.ControllingClient.AgentId != grp.OwnerID)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (sp.ControllingClient.AgentId == grp.OwnerID)
|
||||||
|
dis = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// Scale by distance
|
// Scale by distance
|
||||||
if (radius == 0)
|
if (radius == 0)
|
||||||
gain = (float)((double)gain * ((100.0 - dis) / 100.0));
|
gain = (float)((double)gain * ((100.0 - dis) / 100.0));
|
||||||
else
|
else
|
||||||
gain = (float)((double)gain * ((radius - dis) / radius));
|
gain = (float)((double)gain * ((radius - dis) / radius));
|
||||||
|
|
||||||
|
m_log.DebugFormat("Play sound, gain {0}", gain);
|
||||||
sp.ControllingClient.SendPlayAttachedSound(soundID, objectID, ownerID, (float)gain, flags);
|
sp.ControllingClient.SendPlayAttachedSound(soundID, objectID, ownerID, (float)gain, flags);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -84,6 +105,18 @@ namespace OpenSim.Region.CoreModules.World.Sound
|
||||||
public virtual void TriggerSound(
|
public virtual void TriggerSound(
|
||||||
UUID soundId, UUID ownerID, UUID objectID, UUID parentID, double gain, Vector3 position, UInt64 handle, float radius)
|
UUID soundId, UUID ownerID, UUID objectID, UUID parentID, double gain, Vector3 position, UInt64 handle, float radius)
|
||||||
{
|
{
|
||||||
|
SceneObjectPart part = m_scene.GetSceneObjectPart(objectID);
|
||||||
|
if (part == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
SceneObjectGroup grp = part.ParentGroup;
|
||||||
|
|
||||||
|
if (grp.IsAttachment && grp.GetAttachmentPoint() > 30)
|
||||||
|
{
|
||||||
|
objectID = ownerID;
|
||||||
|
parentID = ownerID;
|
||||||
|
}
|
||||||
|
|
||||||
m_scene.ForEachScenePresence(delegate(ScenePresence sp)
|
m_scene.ForEachScenePresence(delegate(ScenePresence sp)
|
||||||
{
|
{
|
||||||
if (sp.IsChildAgent)
|
if (sp.IsChildAgent)
|
||||||
|
|
|
@ -94,5 +94,6 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||||
RegionSettings LoadRegionSettings(UUID regionUUID);
|
RegionSettings LoadRegionSettings(UUID regionUUID);
|
||||||
RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID);
|
RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID);
|
||||||
void StoreRegionWindlightSettings(RegionLightShareData wl);
|
void StoreRegionWindlightSettings(RegionLightShareData wl);
|
||||||
|
void RemoveRegionWindlightSettings(UUID regionID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -105,6 +105,7 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||||
RegionSettings LoadRegionSettings(UUID regionUUID);
|
RegionSettings LoadRegionSettings(UUID regionUUID);
|
||||||
RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID);
|
RegionLightShareData LoadRegionWindlightSettings(UUID regionUUID);
|
||||||
void StoreRegionWindlightSettings(RegionLightShareData wl);
|
void StoreRegionWindlightSettings(RegionLightShareData wl);
|
||||||
|
void RemoveRegionWindlightSettings(UUID regionID);
|
||||||
|
|
||||||
void Shutdown();
|
void Shutdown();
|
||||||
}
|
}
|
||||||
|
|
|
@ -3100,6 +3100,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
UUID ownerID = _ownerID;
|
UUID ownerID = _ownerID;
|
||||||
UUID objectID = ParentGroup.RootPart.UUID;
|
UUID objectID = ParentGroup.RootPart.UUID;
|
||||||
UUID parentID = GetRootPartUUID();
|
UUID parentID = GetRootPartUUID();
|
||||||
|
|
||||||
UUID soundID = UUID.Zero;
|
UUID soundID = UUID.Zero;
|
||||||
Vector3 position = AbsolutePosition; // region local
|
Vector3 position = AbsolutePosition; // region local
|
||||||
ulong regionHandle = m_parentGroup.Scene.RegionInfo.RegionHandle;
|
ulong regionHandle = m_parentGroup.Scene.RegionInfo.RegionHandle;
|
||||||
|
|
|
@ -171,9 +171,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
private float m_health = 100f;
|
private float m_health = 100f;
|
||||||
|
|
||||||
// Default AV Height
|
|
||||||
private float m_avHeight = 127.0f;
|
|
||||||
|
|
||||||
protected RegionInfo m_regionInfo;
|
protected RegionInfo m_regionInfo;
|
||||||
protected ulong crossingFromRegion;
|
protected ulong crossingFromRegion;
|
||||||
|
|
||||||
|
@ -841,9 +838,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
|
|
||||||
float localAVHeight = 1.56f;
|
float localAVHeight = 1.56f;
|
||||||
if (m_avHeight != 127.0f)
|
if (m_appearance != null)
|
||||||
{
|
{
|
||||||
localAVHeight = m_avHeight;
|
if (m_appearance.AvatarHeight > 0)
|
||||||
|
localAVHeight = m_appearance.AvatarHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
float posZLimit = 0;
|
float posZLimit = 0;
|
||||||
|
@ -872,6 +870,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
AddToPhysicalScene(isFlying);
|
AddToPhysicalScene(isFlying);
|
||||||
|
|
||||||
|
if (m_appearance != null)
|
||||||
|
{
|
||||||
|
if (m_appearance.AvatarHeight > 0)
|
||||||
|
SetHeight(m_appearance.AvatarHeight);
|
||||||
|
}
|
||||||
|
|
||||||
if (m_forceFly)
|
if (m_forceFly)
|
||||||
{
|
{
|
||||||
m_physicsActor.Flying = true;
|
m_physicsActor.Flying = true;
|
||||||
|
@ -1060,10 +1064,9 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void SetHeight(float height)
|
public void SetHeight(float height)
|
||||||
{
|
{
|
||||||
m_avHeight = height;
|
|
||||||
if (PhysicsActor != null && !IsChildAgent)
|
if (PhysicsActor != null && !IsChildAgent)
|
||||||
{
|
{
|
||||||
Vector3 SetSize = new Vector3(0.45f, 0.6f, m_avHeight);
|
Vector3 SetSize = new Vector3(0.45f, 0.6f, height);
|
||||||
PhysicsActor.Size = SetSize;
|
PhysicsActor.Size = SetSize;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1687,9 +1690,10 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_parentID = 0;
|
m_parentID = 0;
|
||||||
SendFullUpdateToAllClients();
|
SendFullUpdateToAllClients();
|
||||||
m_requestedSitTargetID = 0;
|
m_requestedSitTargetID = 0;
|
||||||
if ((m_physicsActor != null) && (m_avHeight > 0))
|
if (m_physicsActor != null && m_appearance != null)
|
||||||
{
|
{
|
||||||
SetHeight(m_avHeight);
|
if (m_appearance.AvatarHeight > 0)
|
||||||
|
SetHeight(m_appearance.AvatarHeight);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2391,11 +2395,14 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (m_appearance.Texture == null)
|
if (m_appearance.Texture == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (LocalId == remoteAvatar.LocalId)
|
// MT: This is needed for sit. It's legal to send it to oneself, and the name
|
||||||
{
|
// of the method is a misnomer
|
||||||
m_log.WarnFormat("[SCENEPRESENCE]: An agent is attempting to send avatar data to itself; {0}", UUID);
|
//
|
||||||
return;
|
// if (LocalId == remoteAvatar.LocalId)
|
||||||
}
|
// {
|
||||||
|
// m_log.WarnFormat("[SCENEPRESENCE]: An agent is attempting to send avatar data to itself; {0}", UUID);
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
if (IsChildAgent)
|
if (IsChildAgent)
|
||||||
{
|
{
|
||||||
|
@ -2576,7 +2583,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
cadu.ActiveGroupID = UUID.Zero.Guid;
|
cadu.ActiveGroupID = UUID.Zero.Guid;
|
||||||
cadu.AgentID = UUID.Guid;
|
cadu.AgentID = UUID.Guid;
|
||||||
cadu.alwaysrun = m_setAlwaysRun;
|
cadu.alwaysrun = m_setAlwaysRun;
|
||||||
cadu.AVHeight = m_avHeight;
|
cadu.AVHeight = m_appearance.AvatarHeight;
|
||||||
Vector3 tempCameraCenter = m_CameraCenter;
|
Vector3 tempCameraCenter = m_CameraCenter;
|
||||||
cadu.cameraPosition = tempCameraCenter;
|
cadu.cameraPosition = tempCameraCenter;
|
||||||
cadu.drawdistance = m_DrawDistance;
|
cadu.drawdistance = m_DrawDistance;
|
||||||
|
@ -2912,7 +2919,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
m_CameraCenter = cAgentData.Center + offset;
|
m_CameraCenter = cAgentData.Center + offset;
|
||||||
|
|
||||||
m_avHeight = cAgentData.Size.Z;
|
|
||||||
//SetHeight(cAgentData.AVHeight);
|
//SetHeight(cAgentData.AVHeight);
|
||||||
|
|
||||||
if ((cAgentData.Throttles != null) && cAgentData.Throttles.Length > 0)
|
if ((cAgentData.Throttles != null) && cAgentData.Throttles.Length > 0)
|
||||||
|
@ -2937,8 +2943,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
cAgent.Position = AbsolutePosition;
|
cAgent.Position = AbsolutePosition;
|
||||||
cAgent.Velocity = m_velocity;
|
cAgent.Velocity = m_velocity;
|
||||||
cAgent.Center = m_CameraCenter;
|
cAgent.Center = m_CameraCenter;
|
||||||
// Don't copy the size; it is inferred from apearance parameters
|
|
||||||
//cAgent.Size = new Vector3(0, 0, m_avHeight);
|
|
||||||
cAgent.AtAxis = m_CameraAtAxis;
|
cAgent.AtAxis = m_CameraAtAxis;
|
||||||
cAgent.LeftAxis = m_CameraLeftAxis;
|
cAgent.LeftAxis = m_CameraLeftAxis;
|
||||||
cAgent.UpAxis = m_CameraUpAxis;
|
cAgent.UpAxis = m_CameraUpAxis;
|
||||||
|
@ -3056,7 +3060,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_pos = cAgent.Position;
|
m_pos = cAgent.Position;
|
||||||
m_velocity = cAgent.Velocity;
|
m_velocity = cAgent.Velocity;
|
||||||
m_CameraCenter = cAgent.Center;
|
m_CameraCenter = cAgent.Center;
|
||||||
//m_avHeight = cAgent.Size.Z;
|
|
||||||
m_CameraAtAxis = cAgent.AtAxis;
|
m_CameraAtAxis = cAgent.AtAxis;
|
||||||
m_CameraLeftAxis = cAgent.LeftAxis;
|
m_CameraLeftAxis = cAgent.LeftAxis;
|
||||||
m_CameraUpAxis = cAgent.UpAxis;
|
m_CameraUpAxis = cAgent.UpAxis;
|
||||||
|
@ -3075,6 +3078,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_setAlwaysRun = cAgent.AlwaysRun;
|
m_setAlwaysRun = cAgent.AlwaysRun;
|
||||||
|
|
||||||
m_appearance = new AvatarAppearance(cAgent.Appearance);
|
m_appearance = new AvatarAppearance(cAgent.Appearance);
|
||||||
|
if (m_physicsActor != null)
|
||||||
|
{
|
||||||
|
bool isFlying = m_physicsActor.Flying;
|
||||||
|
RemoveFromPhysicalScene();
|
||||||
|
AddToPhysicalScene(isFlying);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
uint i = 0;
|
uint i = 0;
|
||||||
|
@ -3184,21 +3193,17 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void AddToPhysicalScene(bool isFlying)
|
public void AddToPhysicalScene(bool isFlying)
|
||||||
{
|
{
|
||||||
|
if (m_appearance.AvatarHeight == 0)
|
||||||
|
m_appearance.SetHeight();
|
||||||
|
|
||||||
PhysicsScene scene = m_scene.PhysicsScene;
|
PhysicsScene scene = m_scene.PhysicsScene;
|
||||||
|
|
||||||
Vector3 pVec = AbsolutePosition;
|
Vector3 pVec = AbsolutePosition;
|
||||||
|
|
||||||
// Old bug where the height was in centimeters instead of meters
|
// Old bug where the height was in centimeters instead of meters
|
||||||
if (m_avHeight == 127.0f)
|
|
||||||
{
|
|
||||||
m_physicsActor = scene.AddAvatar(Firstname + "." + Lastname, pVec, new Vector3(0f, 0f, 1.56f),
|
|
||||||
isFlying);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
m_physicsActor = scene.AddAvatar(Firstname + "." + Lastname, pVec,
|
m_physicsActor = scene.AddAvatar(Firstname + "." + Lastname, pVec,
|
||||||
new Vector3(0f, 0f, m_avHeight), isFlying);
|
new Vector3(0f, 0f, m_appearance.AvatarHeight), isFlying);
|
||||||
}
|
|
||||||
scene.AddPhysicsActorTaint(m_physicsActor);
|
scene.AddPhysicsActorTaint(m_physicsActor);
|
||||||
//m_physicsActor.OnRequestTerseUpdate += SendTerseUpdateToAllClients;
|
//m_physicsActor.OnRequestTerseUpdate += SendTerseUpdateToAllClients;
|
||||||
m_physicsActor.OnCollisionUpdate += PhysicsCollisionUpdate;
|
m_physicsActor.OnCollisionUpdate += PhysicsCollisionUpdate;
|
||||||
|
|
|
@ -1135,7 +1135,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||||
writer.WriteElementString("GroupMask", sop.GroupMask.ToString());
|
writer.WriteElementString("GroupMask", sop.GroupMask.ToString());
|
||||||
writer.WriteElementString("EveryoneMask", sop.EveryoneMask.ToString());
|
writer.WriteElementString("EveryoneMask", sop.EveryoneMask.ToString());
|
||||||
writer.WriteElementString("NextOwnerMask", sop.NextOwnerMask.ToString());
|
writer.WriteElementString("NextOwnerMask", sop.NextOwnerMask.ToString());
|
||||||
writer.WriteElementString("Flags", sop.Flags.ToString());
|
WriteFlags(writer, "Flags", sop.Flags.ToString(), options);
|
||||||
WriteUUID(writer, "CollisionSound", sop.CollisionSound, options);
|
WriteUUID(writer, "CollisionSound", sop.CollisionSound, options);
|
||||||
writer.WriteElementString("CollisionSoundVolume", sop.CollisionSoundVolume.ToString());
|
writer.WriteElementString("CollisionSoundVolume", sop.CollisionSoundVolume.ToString());
|
||||||
if (sop.MediaUrl != null)
|
if (sop.MediaUrl != null)
|
||||||
|
@ -1188,6 +1188,20 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void WriteFlags(XmlTextWriter writer, string name, string flagsStr, Dictionary<string, object> options)
|
||||||
|
{
|
||||||
|
// Older versions of serialization can't cope with commas
|
||||||
|
if (options.ContainsKey("version"))
|
||||||
|
{
|
||||||
|
float version = 0.5F;
|
||||||
|
float.TryParse(options["version"].ToString(), out version);
|
||||||
|
if (version < 0.5)
|
||||||
|
flagsStr = flagsStr.Replace(",", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
writer.WriteElementString(name, flagsStr);
|
||||||
|
}
|
||||||
|
|
||||||
static void WriteTaskInventory(XmlTextWriter writer, TaskInventoryDictionary tinv, Dictionary<string, object> options)
|
static void WriteTaskInventory(XmlTextWriter writer, TaskInventoryDictionary tinv, Dictionary<string, object> options)
|
||||||
{
|
{
|
||||||
if (tinv.Count > 0) // otherwise skip this
|
if (tinv.Count > 0) // otherwise skip this
|
||||||
|
@ -1275,8 +1289,8 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||||
writer.WriteElementString("ProfileHollow", shp.ProfileHollow.ToString());
|
writer.WriteElementString("ProfileHollow", shp.ProfileHollow.ToString());
|
||||||
writer.WriteElementString("State", shp.State.ToString());
|
writer.WriteElementString("State", shp.State.ToString());
|
||||||
|
|
||||||
writer.WriteElementString("ProfileShape", shp.ProfileShape.ToString());
|
WriteFlags(writer, "ProfileShape", shp.ProfileShape.ToString(), options);
|
||||||
writer.WriteElementString("HollowShape", shp.HollowShape.ToString());
|
WriteFlags(writer, "HollowShape", shp.HollowShape.ToString(), options);
|
||||||
|
|
||||||
WriteUUID(writer, "SculptTexture", shp.SculptTexture, options);
|
WriteUUID(writer, "SculptTexture", shp.SculptTexture, options);
|
||||||
writer.WriteElementString("SculptType", shp.SculptType.ToString());
|
writer.WriteElementString("SculptType", shp.SculptType.ToString());
|
||||||
|
|
|
@ -455,6 +455,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
if (LightShareModule.EnableWindlight)
|
if (LightShareModule.EnableWindlight)
|
||||||
{
|
{
|
||||||
RegionLightShareData wl = getWindlightProfileFromRules(rules);
|
RegionLightShareData wl = getWindlightProfileFromRules(rules);
|
||||||
|
wl.valid = true;
|
||||||
m_host.ParentGroup.Scene.StoreWindlightProfile(wl);
|
m_host.ParentGroup.Scene.StoreWindlightProfile(wl);
|
||||||
success = 1;
|
success = 1;
|
||||||
}
|
}
|
||||||
|
@ -465,6 +466,23 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
}
|
}
|
||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
public void lsClearWindlightScene()
|
||||||
|
{
|
||||||
|
if (!m_LSFunctionsEnabled)
|
||||||
|
{
|
||||||
|
LSShoutError("LightShare functions are not enabled.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!World.RegionInfo.EstateSettings.IsEstateManager(m_host.OwnerID) && World.GetScenePresence(m_host.OwnerID).GodLevel < 200)
|
||||||
|
{
|
||||||
|
LSShoutError("lsSetWindlightScene can only be used by estate managers or owners.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_host.ParentGroup.Scene.RegionInfo.WindlightSettings.valid = false;
|
||||||
|
if (m_host.ParentGroup.Scene.SimulationDataService != null)
|
||||||
|
m_host.ParentGroup.Scene.SimulationDataService.RemoveRegionWindlightSettings(m_host.ParentGroup.Scene.RegionInfo.RegionID);
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Set the current Windlight scene to a target avatar
|
/// Set the current Windlight scene to a target avatar
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -44,5 +44,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||||
LSL_List lsGetWindlightScene(LSL_List rules);
|
LSL_List lsGetWindlightScene(LSL_List rules);
|
||||||
int lsSetWindlightScene(LSL_List rules);
|
int lsSetWindlightScene(LSL_List rules);
|
||||||
int lsSetWindlightSceneTargeted(LSL_List rules, key target);
|
int lsSetWindlightSceneTargeted(LSL_List rules, key target);
|
||||||
|
void lsClearWindlightScene();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,5 +72,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
{
|
{
|
||||||
return m_LS_Functions.lsSetWindlightSceneTargeted(rules, target);
|
return m_LS_Functions.lsSetWindlightSceneTargeted(rules, target);
|
||||||
}
|
}
|
||||||
|
public void lsClearWindlightScene()
|
||||||
|
{
|
||||||
|
m_LS_Functions.lsClearWindlightScene();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -144,5 +144,9 @@ namespace OpenSim.Services.Connectors
|
||||||
{
|
{
|
||||||
m_database.StoreRegionWindlightSettings(wl);
|
m_database.StoreRegionWindlightSettings(wl);
|
||||||
}
|
}
|
||||||
|
public void RemoveRegionWindlightSettings(UUID regionID)
|
||||||
|
{
|
||||||
|
m_database.RemoveRegionWindlightSettings(regionID);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,7 +97,7 @@ namespace OpenSim.Services.Interfaces
|
||||||
int GetRegionFlags(UUID scopeID, UUID regionID);
|
int GetRegionFlags(UUID scopeID, UUID regionID);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class GridRegion
|
public class GridRegion : Object
|
||||||
{
|
{
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -238,6 +238,33 @@ namespace OpenSim.Services.Interfaces
|
||||||
EstateOwner = ConvertFrom.EstateOwner;
|
EstateOwner = ConvertFrom.EstateOwner;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# region Definition of equality
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Define equality as two regions having the same, non-zero UUID.
|
||||||
|
/// </summary>
|
||||||
|
public bool Equals(GridRegion region)
|
||||||
|
{
|
||||||
|
if ((object)region == null)
|
||||||
|
return false;
|
||||||
|
// Return true if the non-zero UUIDs are equal:
|
||||||
|
return (RegionID != UUID.Zero) && RegionID.Equals(region.RegionID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool Equals(Object obj)
|
||||||
|
{
|
||||||
|
if (obj == null)
|
||||||
|
return false;
|
||||||
|
return Equals(obj as GridRegion);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int GetHashCode()
|
||||||
|
{
|
||||||
|
return RegionID.GetHashCode() ^ TerrainImage.GetHashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
/// <value>
|
/// <value>
|
||||||
/// This accessor can throw all the exceptions that Dns.GetHostAddresses can throw.
|
/// This accessor can throw all the exceptions that Dns.GetHostAddresses can throw.
|
||||||
///
|
///
|
||||||
|
|
|
@ -45,10 +45,20 @@ namespace OpenSim.Services.PresenceService
|
||||||
LogManager.GetLogger(
|
LogManager.GetLogger(
|
||||||
MethodBase.GetCurrentMethod().DeclaringType);
|
MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
|
protected bool m_allowDuplicatePresences = false;
|
||||||
|
|
||||||
public PresenceService(IConfigSource config)
|
public PresenceService(IConfigSource config)
|
||||||
: base(config)
|
: base(config)
|
||||||
{
|
{
|
||||||
m_log.Debug("[PRESENCE SERVICE]: Starting presence service");
|
m_log.Debug("[PRESENCE SERVICE]: Starting presence service");
|
||||||
|
|
||||||
|
IConfig presenceConfig = config.Configs["PresenceService"];
|
||||||
|
if (presenceConfig != null)
|
||||||
|
{
|
||||||
|
m_allowDuplicatePresences =
|
||||||
|
presenceConfig.GetBoolean("AllowDuplicatePresences",
|
||||||
|
m_allowDuplicatePresences);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool LoginAgent(string userID, UUID sessionID,
|
public bool LoginAgent(string userID, UUID sessionID,
|
||||||
|
@ -57,6 +67,9 @@ namespace OpenSim.Services.PresenceService
|
||||||
//PresenceData[] d = m_Database.Get("UserID", userID);
|
//PresenceData[] d = m_Database.Get("UserID", userID);
|
||||||
//m_Database.Get("UserID", userID);
|
//m_Database.Get("UserID", userID);
|
||||||
|
|
||||||
|
if (!m_allowDuplicatePresences)
|
||||||
|
m_Database.Delete("UserID", userID.ToString());
|
||||||
|
|
||||||
PresenceData data = new PresenceData();
|
PresenceData data = new PresenceData();
|
||||||
|
|
||||||
data.UserID = userID;
|
data.UserID = userID;
|
||||||
|
|
|
@ -104,6 +104,10 @@ namespace OpenSim.Data.Null
|
||||||
return m_store.LoadRegionWindlightSettings(regionUUID);
|
return m_store.LoadRegionWindlightSettings(regionUUID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RemoveRegionWindlightSettings(UUID regionID)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
public void StoreRegionWindlightSettings(RegionLightShareData wl)
|
public void StoreRegionWindlightSettings(RegionLightShareData wl)
|
||||||
{
|
{
|
||||||
m_store.StoreRegionWindlightSettings(wl);
|
m_store.StoreRegionWindlightSettings(wl);
|
||||||
|
@ -146,6 +150,10 @@ namespace OpenSim.Data.Null
|
||||||
return new RegionLightShareData();
|
return new RegionLightShareData();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RemoveRegionWindlightSettings(UUID regionID)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
public void StoreRegionWindlightSettings(RegionLightShareData wl)
|
public void StoreRegionWindlightSettings(RegionLightShareData wl)
|
||||||
{
|
{
|
||||||
//This connector doesn't support the windlight module yet
|
//This connector doesn't support the windlight module yet
|
||||||
|
|
|
@ -624,6 +624,9 @@
|
||||||
; Set this to a nonzero value to have remote admin use a different port
|
; Set this to a nonzero value to have remote admin use a different port
|
||||||
port = 0
|
port = 0
|
||||||
|
|
||||||
|
; Set this to the ip address that you want the admin server to bind to
|
||||||
|
bind_ip_address = "0.0.0.0"
|
||||||
|
|
||||||
; This password is required to make any XMLRPC call (should be set as the "password" parameter)
|
; This password is required to make any XMLRPC call (should be set as the "password" parameter)
|
||||||
access_password = unknown
|
access_password = unknown
|
||||||
|
|
||||||
|
|
|
@ -107,6 +107,9 @@ ServiceConnectors = "8003/OpenSim.Server.Handlers.dll:AssetServiceConnector,8003
|
||||||
[PresenceService]
|
[PresenceService]
|
||||||
; for the server connector
|
; for the server connector
|
||||||
LocalServiceModule = "OpenSim.Services.PresenceService.dll:PresenceService"
|
LocalServiceModule = "OpenSim.Services.PresenceService.dll:PresenceService"
|
||||||
|
; Set this to true to allow the use of advanced web services and multiple
|
||||||
|
; bots using one account
|
||||||
|
AllowDuplicatePresences = false;
|
||||||
|
|
||||||
[AvatarService]
|
[AvatarService]
|
||||||
; for the server connector
|
; for the server connector
|
||||||
|
|
Loading…
Reference in New Issue