Merge branch 'master' into 0.7.3-post-fixes
commit
96973a5778
|
@ -903,6 +903,11 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
|
|
||||||
private void HandleUseCircuitCode(object o)
|
private void HandleUseCircuitCode(object o)
|
||||||
{
|
{
|
||||||
|
IPEndPoint remoteEndPoint = null;
|
||||||
|
IClientAPI client = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
// DateTime startTime = DateTime.Now;
|
// DateTime startTime = DateTime.Now;
|
||||||
object[] array = (object[])o;
|
object[] array = (object[])o;
|
||||||
UDPPacketBuffer buffer = (UDPPacketBuffer)array[0];
|
UDPPacketBuffer buffer = (UDPPacketBuffer)array[0];
|
||||||
|
@ -910,13 +915,13 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
|
|
||||||
m_log.DebugFormat("[LLUDPSERVER]: Handling UseCircuitCode request from {0}", buffer.RemoteEndPoint);
|
m_log.DebugFormat("[LLUDPSERVER]: Handling UseCircuitCode request from {0}", buffer.RemoteEndPoint);
|
||||||
|
|
||||||
IPEndPoint remoteEndPoint = (IPEndPoint)buffer.RemoteEndPoint;
|
remoteEndPoint = (IPEndPoint)buffer.RemoteEndPoint;
|
||||||
|
|
||||||
AuthenticateResponse sessionInfo;
|
AuthenticateResponse sessionInfo;
|
||||||
if (IsClientAuthorized(uccp, out sessionInfo))
|
if (IsClientAuthorized(uccp, out sessionInfo))
|
||||||
{
|
{
|
||||||
// Begin the process of adding the client to the simulator
|
// Begin the process of adding the client to the simulator
|
||||||
IClientAPI client
|
client
|
||||||
= AddClient(
|
= AddClient(
|
||||||
uccp.CircuitCode.Code,
|
uccp.CircuitCode.Code,
|
||||||
uccp.CircuitCode.ID,
|
uccp.CircuitCode.ID,
|
||||||
|
@ -944,6 +949,18 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
// m_log.DebugFormat(
|
// m_log.DebugFormat(
|
||||||
// "[LLUDPSERVER]: Handling UseCircuitCode request from {0} took {1}ms",
|
// "[LLUDPSERVER]: Handling UseCircuitCode request from {0} took {1}ms",
|
||||||
// buffer.RemoteEndPoint, (DateTime.Now - startTime).Milliseconds);
|
// buffer.RemoteEndPoint, (DateTime.Now - startTime).Milliseconds);
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
m_log.ErrorFormat(
|
||||||
|
"[LLUDPSERVER]: UseCircuitCode handling from endpoint {0}, client {1} {2} failed. Exception {3}{4}",
|
||||||
|
remoteEndPoint != null ? remoteEndPoint.ToString() : "n/a",
|
||||||
|
client != null ? client.Name : "unknown",
|
||||||
|
client != null ? client.AgentId.ToString() : "unknown",
|
||||||
|
e.Message,
|
||||||
|
e.StackTrace);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -551,9 +551,14 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||||
// "[INVENTORY ACCESS MODULE]: Target of {0} in CreateItemForObject() is {1} {2}",
|
// "[INVENTORY ACCESS MODULE]: Target of {0} in CreateItemForObject() is {1} {2}",
|
||||||
// action, remoteClient.Name, userID);
|
// action, remoteClient.Name, userID);
|
||||||
}
|
}
|
||||||
|
else if (so.RootPart.OwnerID == so.RootPart.GroupID)
|
||||||
|
{
|
||||||
|
// Group owned objects go to the last owner before the object was transferred.
|
||||||
|
userID = so.RootPart.LastOwnerID;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// All returns / deletes go to the object owner
|
// Other returns / deletes go to the object owner
|
||||||
//
|
//
|
||||||
userID = so.RootPart.OwnerID;
|
userID = so.RootPart.OwnerID;
|
||||||
|
|
||||||
|
|
|
@ -148,6 +148,113 @@ namespace OpenSim.Region.CoreModules.World.Serialiser.Tests
|
||||||
<OtherParts />
|
<OtherParts />
|
||||||
</SceneObjectGroup>";
|
</SceneObjectGroup>";
|
||||||
|
|
||||||
|
private string badFloatsXml = @"
|
||||||
|
<SceneObjectGroup>
|
||||||
|
<RootPart>
|
||||||
|
<SceneObjectPart xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
|
||||||
|
<AllowedDrop>false</AllowedDrop>
|
||||||
|
<CreatorID><Guid>a6dacf01-4636-4bb9-8a97-30609438af9d</Guid></CreatorID>
|
||||||
|
<FolderID><Guid>e6a5a05e-e8cc-4816-8701-04165e335790</Guid></FolderID>
|
||||||
|
<InventorySerial>1</InventorySerial>
|
||||||
|
<TaskInventory />
|
||||||
|
<ObjectFlags>0</ObjectFlags>
|
||||||
|
<UUID><Guid>e6a5a05e-e8cc-4816-8701-04165e335790</Guid></UUID>
|
||||||
|
<LocalId>2698615125</LocalId>
|
||||||
|
<Name>NaughtyPrim</Name>
|
||||||
|
<Material>0</Material>
|
||||||
|
<PassTouches>false</PassTouches>
|
||||||
|
<RegionHandle>1099511628032000</RegionHandle>
|
||||||
|
<ScriptAccessPin>0</ScriptAccessPin>
|
||||||
|
<GroupPosition><X>147.23</X><Y>92.698</Y><Z>22.78084</Z></GroupPosition>
|
||||||
|
<OffsetPosition><X>0</X><Y>0</Y><Z>0</Z></OffsetPosition>
|
||||||
|
<RotationOffset><X>-4.371139E-08</X><Y>-1</Y><Z>-4.371139E-08</Z><W>0</W></RotationOffset>
|
||||||
|
<Velocity><X>0</X><Y>0</Y><Z>0</Z></Velocity>
|
||||||
|
<RotationalVelocity><X>0</X><Y>0</Y><Z>0</Z></RotationalVelocity>
|
||||||
|
<AngularVelocity><X>0</X><Y>0</Y><Z>0</Z></AngularVelocity>
|
||||||
|
<Acceleration><X>0</X><Y>0</Y><Z>0</Z></Acceleration>
|
||||||
|
<Description />
|
||||||
|
<Color />
|
||||||
|
<Text />
|
||||||
|
<SitName />
|
||||||
|
<TouchName />
|
||||||
|
<LinkNum>0</LinkNum>
|
||||||
|
<ClickAction>0</ClickAction>
|
||||||
|
<Shape>
|
||||||
|
<ProfileCurve>1</ProfileCurve>
|
||||||
|
<TextureEntry>AAAAAAAAERGZmQAAAAAABQCVlZUAAAAAQEAAAABAQAAAAAAAAAAAAAAAAAAAAA==</TextureEntry>
|
||||||
|
<ExtraParams>AA==</ExtraParams>
|
||||||
|
<PathBegin>0</PathBegin>
|
||||||
|
<PathCurve>16</PathCurve>
|
||||||
|
<PathEnd>0</PathEnd>
|
||||||
|
<PathRadiusOffset>0</PathRadiusOffset>
|
||||||
|
<PathRevolutions>0</PathRevolutions>
|
||||||
|
<PathScaleX>100</PathScaleX>
|
||||||
|
<PathScaleY>100</PathScaleY>
|
||||||
|
<PathShearX>0</PathShearX>
|
||||||
|
<PathShearY>0</PathShearY>
|
||||||
|
<PathSkew>0</PathSkew>
|
||||||
|
<PathTaperX>0</PathTaperX>
|
||||||
|
<PathTaperY>0</PathTaperY>
|
||||||
|
<PathTwist>0</PathTwist>
|
||||||
|
<PathTwistBegin>0</PathTwistBegin>
|
||||||
|
<PCode>9</PCode>
|
||||||
|
<ProfileBegin>0</ProfileBegin>
|
||||||
|
<ProfileEnd>0</ProfileEnd>
|
||||||
|
<ProfileHollow>0</ProfileHollow>
|
||||||
|
<Scale><X>10</X><Y>10</Y><Z>0.5</Z></Scale>
|
||||||
|
<State>0</State>
|
||||||
|
<ProfileShape>Square</ProfileShape>
|
||||||
|
<HollowShape>Same</HollowShape>
|
||||||
|
<SculptTexture><Guid>00000000-0000-0000-0000-000000000000</Guid></SculptTexture>
|
||||||
|
<SculptType>0</SculptType><SculptData />
|
||||||
|
<FlexiSoftness>0</FlexiSoftness>
|
||||||
|
<FlexiTension>0,5</FlexiTension>
|
||||||
|
<FlexiDrag>yo mamma</FlexiDrag>
|
||||||
|
<FlexiGravity>0</FlexiGravity>
|
||||||
|
<FlexiWind>0</FlexiWind>
|
||||||
|
<FlexiForceX>0</FlexiForceX>
|
||||||
|
<FlexiForceY>0</FlexiForceY>
|
||||||
|
<FlexiForceZ>0</FlexiForceZ>
|
||||||
|
<LightColorR>0</LightColorR>
|
||||||
|
<LightColorG>0</LightColorG>
|
||||||
|
<LightColorB>0</LightColorB>
|
||||||
|
<LightColorA>1</LightColorA>
|
||||||
|
<LightRadius>0</LightRadius>
|
||||||
|
<LightCutoff>0</LightCutoff>
|
||||||
|
<LightFalloff>0</LightFalloff>
|
||||||
|
<LightIntensity>1</LightIntensity>
|
||||||
|
<FlexiEntry>false</FlexiEntry>
|
||||||
|
<LightEntry>false</LightEntry>
|
||||||
|
<SculptEntry>false</SculptEntry>
|
||||||
|
</Shape>
|
||||||
|
<Scale><X>10</X><Y>10</Y><Z>0.5</Z></Scale>
|
||||||
|
<UpdateFlag>0</UpdateFlag>
|
||||||
|
<SitTargetOrientation><X>0</X><Y>0</Y><Z>0</Z><W>1</W></SitTargetOrientation>
|
||||||
|
<SitTargetPosition><X>0</X><Y>0</Y><Z>0</Z></SitTargetPosition>
|
||||||
|
<SitTargetPositionLL><X>0</X><Y>0</Y><Z>0</Z></SitTargetPositionLL>
|
||||||
|
<SitTargetOrientationLL><X>0</X><Y>0</Y><Z>0</Z><W>1</W></SitTargetOrientationLL>
|
||||||
|
<ParentID>0</ParentID>
|
||||||
|
<CreationDate>1211330445</CreationDate>
|
||||||
|
<Category>0</Category>
|
||||||
|
<SalePrice>0</SalePrice>
|
||||||
|
<ObjectSaleType>0</ObjectSaleType>
|
||||||
|
<OwnershipCost>0</OwnershipCost>
|
||||||
|
<GroupID><Guid>00000000-0000-0000-0000-000000000000</Guid></GroupID>
|
||||||
|
<OwnerID><Guid>a6dacf01-4636-4bb9-8a97-30609438af9d</Guid></OwnerID>
|
||||||
|
<LastOwnerID><Guid>a6dacf01-4636-4bb9-8a97-30609438af9d</Guid></LastOwnerID>
|
||||||
|
<BaseMask>2147483647</BaseMask>
|
||||||
|
<OwnerMask>2147483647</OwnerMask>
|
||||||
|
<GroupMask>0</GroupMask>
|
||||||
|
<EveryoneMask>0</EveryoneMask>
|
||||||
|
<NextOwnerMask>2147483647</NextOwnerMask>
|
||||||
|
<Flags>None</Flags>
|
||||||
|
<CollisionSound><Guid>00000000-0000-0000-0000-000000000000</Guid></CollisionSound>
|
||||||
|
<CollisionSoundVolume>0</CollisionSoundVolume>
|
||||||
|
</SceneObjectPart>
|
||||||
|
</RootPart>
|
||||||
|
<OtherParts />
|
||||||
|
</SceneObjectGroup>";
|
||||||
|
|
||||||
private string xml2 = @"
|
private string xml2 = @"
|
||||||
<SceneObjectGroup>
|
<SceneObjectGroup>
|
||||||
<SceneObjectPart xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
|
<SceneObjectPart xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"">
|
||||||
|
@ -256,6 +363,32 @@ namespace OpenSim.Region.CoreModules.World.Serialiser.Tests
|
||||||
// TODO: Check other properties
|
// TODO: Check other properties
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestDeserializeBadFloatsXml()
|
||||||
|
{
|
||||||
|
TestHelpers.InMethod();
|
||||||
|
// log4net.Config.XmlConfigurator.Configure();
|
||||||
|
|
||||||
|
SceneObjectGroup so = SceneObjectSerializer.FromOriginalXmlFormat(badFloatsXml);
|
||||||
|
SceneObjectPart rootPart = so.RootPart;
|
||||||
|
|
||||||
|
Assert.That(rootPart.UUID, Is.EqualTo(new UUID("e6a5a05e-e8cc-4816-8701-04165e335790")));
|
||||||
|
Assert.That(rootPart.CreatorID, Is.EqualTo(new UUID("a6dacf01-4636-4bb9-8a97-30609438af9d")));
|
||||||
|
Assert.That(rootPart.Name, Is.EqualTo("NaughtyPrim"));
|
||||||
|
|
||||||
|
// This terminates the deserialization earlier if couldn't be parsed.
|
||||||
|
// TODO: Need to address this
|
||||||
|
Assert.That(rootPart.GroupPosition.X, Is.EqualTo(147.23f));
|
||||||
|
|
||||||
|
Assert.That(rootPart.Shape.PathCurve, Is.EqualTo(16));
|
||||||
|
|
||||||
|
// Defaults for bad parses
|
||||||
|
Assert.That(rootPart.Shape.FlexiTension, Is.EqualTo(0));
|
||||||
|
Assert.That(rootPart.Shape.FlexiDrag, Is.EqualTo(0));
|
||||||
|
|
||||||
|
// TODO: Check other properties
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestSerializeXml()
|
public void TestSerializeXml()
|
||||||
{
|
{
|
||||||
|
|
|
@ -1926,7 +1926,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
foreach (SceneObjectGroup g in deleteGroups)
|
foreach (SceneObjectGroup g in deleteGroups)
|
||||||
{
|
{
|
||||||
AddReturn(g.OwnerID, g.Name, g.AbsolutePosition, "parcel owner return");
|
AddReturn(g.OwnerID == g.GroupID ? g.LastOwnerID : g.OwnerID, g.Name, g.AbsolutePosition, "parcel owner return");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1330,7 +1330,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
"[SCENE OBJECT GROUP]: Returning object {0} due to parcel autoreturn",
|
"[SCENE OBJECT GROUP]: Returning object {0} due to parcel autoreturn",
|
||||||
RootPart.UUID);
|
RootPart.UUID);
|
||||||
m_scene.AddReturn(OwnerID, Name, AbsolutePosition, "parcel autoreturn");
|
m_scene.AddReturn(OwnerID == GroupID ? LastOwnerID : OwnerID, Name, AbsolutePosition, "parcel autoreturn");
|
||||||
m_scene.DeRezObjects(null, new List<uint>() { RootPart.LocalId }, UUID.Zero,
|
m_scene.DeRezObjects(null, new List<uint>() { RootPart.LocalId }, UUID.Zero,
|
||||||
DeRezAction.Return, UUID.Zero);
|
DeRezAction.Return, UUID.Zero);
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using log4net;
|
using log4net;
|
||||||
|
@ -570,13 +571,15 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||||
|
|
||||||
private static void ProcessShape(SceneObjectPart obj, XmlTextReader reader)
|
private static void ProcessShape(SceneObjectPart obj, XmlTextReader reader)
|
||||||
{
|
{
|
||||||
bool errors = false;
|
List<string> errorNodeNames;
|
||||||
obj.Shape = ReadShape(reader, "Shape", out errors);
|
obj.Shape = ReadShape(reader, "Shape", out errorNodeNames);
|
||||||
|
|
||||||
if (errors)
|
if (errorNodeNames != null)
|
||||||
|
{
|
||||||
m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
"[SceneObjectSerializer]: Parsing PrimitiveBaseShape for object part {0} {1} encountered errors. Please see earlier log entries.",
|
"[SceneObjectSerializer]: Parsing PrimitiveBaseShape for object part {0} {1} encountered errors in properties {2}.",
|
||||||
obj.Name, obj.UUID);
|
obj.Name, obj.UUID, string.Join(", ", errorNodeNames.ToArray()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void ProcessScale(SceneObjectPart obj, XmlTextReader reader)
|
private static void ProcessScale(SceneObjectPart obj, XmlTextReader reader)
|
||||||
|
@ -1519,37 +1522,44 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="reader"></param>
|
/// <param name="reader"></param>
|
||||||
/// <param name="name">The name of the xml element containing the shape</param>
|
/// <param name="name">The name of the xml element containing the shape</param>
|
||||||
/// <param name="errors">true if any errors were encountered during parsing, false otherwise</param>
|
/// <param name="errors">a list containing the failing node names. If no failures then null.</param>
|
||||||
/// <returns>The shape parsed</returns>
|
/// <returns>The shape parsed</returns>
|
||||||
public static PrimitiveBaseShape ReadShape(XmlTextReader reader, string name, out bool errors)
|
public static PrimitiveBaseShape ReadShape(XmlTextReader reader, string name, out List<string> errorNodeNames)
|
||||||
{
|
{
|
||||||
errors = false;
|
List<string> internalErrorNodeNames = null;
|
||||||
|
|
||||||
PrimitiveBaseShape shape = new PrimitiveBaseShape();
|
PrimitiveBaseShape shape = new PrimitiveBaseShape();
|
||||||
|
|
||||||
if (reader.IsEmptyElement)
|
if (reader.IsEmptyElement)
|
||||||
{
|
{
|
||||||
reader.Read();
|
reader.Read();
|
||||||
|
errorNodeNames = null;
|
||||||
return shape;
|
return shape;
|
||||||
}
|
}
|
||||||
|
|
||||||
reader.ReadStartElement(name, String.Empty); // Shape
|
reader.ReadStartElement(name, String.Empty); // Shape
|
||||||
|
|
||||||
errors = ExternalRepresentationUtils.ExecuteReadProcessors(
|
ExternalRepresentationUtils.ExecuteReadProcessors(
|
||||||
shape,
|
shape,
|
||||||
m_ShapeXmlProcessors,
|
m_ShapeXmlProcessors,
|
||||||
reader,
|
reader,
|
||||||
(o, nodeName, e)
|
(o, nodeName, e)
|
||||||
=>
|
=>
|
||||||
{
|
{
|
||||||
m_log.DebugFormat(
|
// m_log.DebugFormat(
|
||||||
"[SceneObjectSerializer]: Exception while parsing Shape property {0}: {1}{2}",
|
// "[SceneObjectSerializer]: Exception while parsing Shape property {0}: {1}{2}",
|
||||||
nodeName, e.Message, e.StackTrace);
|
// nodeName, e.Message, e.StackTrace);
|
||||||
|
if (internalErrorNodeNames == null)
|
||||||
|
internalErrorNodeNames = new List<string>();
|
||||||
|
|
||||||
|
internalErrorNodeNames.Add(nodeName);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
reader.ReadEndElement(); // Shape
|
reader.ReadEndElement(); // Shape
|
||||||
|
|
||||||
|
errorNodeNames = internalErrorNodeNames;
|
||||||
|
|
||||||
return shape;
|
return shape;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -121,8 +121,8 @@ namespace OpenSim.Region.OptionalModules.World.NPC
|
||||||
npcAvatar.CircuitCode = (uint)Util.RandomClass.Next(0, int.MaxValue);
|
npcAvatar.CircuitCode = (uint)Util.RandomClass.Next(0, int.MaxValue);
|
||||||
|
|
||||||
m_log.DebugFormat(
|
m_log.DebugFormat(
|
||||||
"[NPC MODULE]: Creating NPC {0} {1} {2} at {3} in {4}",
|
"[NPC MODULE]: Creating NPC {0} {1} {2}, owner={3}, senseAsAgent={4} at {5} in {6}",
|
||||||
firstname, lastname, npcAvatar.AgentId, position, scene.RegionInfo.RegionName);
|
firstname, lastname, npcAvatar.AgentId, owner, senseAsAgent, position, scene.RegionInfo.RegionName);
|
||||||
|
|
||||||
AgentCircuitData acd = new AgentCircuitData();
|
AgentCircuitData acd = new AgentCircuitData();
|
||||||
acd.AgentID = npcAvatar.AgentId;
|
acd.AgentID = npcAvatar.AgentId;
|
||||||
|
|
|
@ -313,7 +313,7 @@ namespace OpenSim.Region.Physics.Meshing
|
||||||
private bool GenerateCoordsAndFacesFromPrimMeshData(
|
private bool GenerateCoordsAndFacesFromPrimMeshData(
|
||||||
string primName, PrimitiveBaseShape primShape, Vector3 size, out List<Coord> coords, out List<Face> faces)
|
string primName, PrimitiveBaseShape primShape, Vector3 size, out List<Coord> coords, out List<Face> faces)
|
||||||
{
|
{
|
||||||
m_log.DebugFormat("[MESH]: experimental mesh proxy generation for {0}", primName);
|
// m_log.DebugFormat("[MESH]: experimental mesh proxy generation for {0}", primName);
|
||||||
|
|
||||||
coords = new List<Coord>();
|
coords = new List<Coord>();
|
||||||
faces = new List<Face>();
|
faces = new List<Face>();
|
||||||
|
@ -321,7 +321,7 @@ namespace OpenSim.Region.Physics.Meshing
|
||||||
|
|
||||||
if (primShape.SculptData.Length <= 0)
|
if (primShape.SculptData.Length <= 0)
|
||||||
{
|
{
|
||||||
m_log.Error("[MESH]: asset data is zero length");
|
m_log.ErrorFormat("[MESH]: asset data for {0} is zero length", primName);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2233,7 +2233,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
CheckThreatLevel(ThreatLevel.High, "osNpcCreate");
|
CheckThreatLevel(ThreatLevel.High, "osNpcCreate");
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
|
|
||||||
return NpcCreate(firstname, lastname, position, notecard, false, true);
|
return NpcCreate(firstname, lastname, position, notecard, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public LSL_Key osNpcCreate(string firstname, string lastname, LSL_Vector position, string notecard, int options)
|
public LSL_Key osNpcCreate(string firstname, string lastname, LSL_Vector position, string notecard, int options)
|
||||||
|
@ -2244,7 +2244,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
return NpcCreate(
|
return NpcCreate(
|
||||||
firstname, lastname, position, notecard,
|
firstname, lastname, position, notecard,
|
||||||
(options & ScriptBaseClass.OS_NPC_NOT_OWNED) == 0,
|
(options & ScriptBaseClass.OS_NPC_NOT_OWNED) == 0,
|
||||||
(options & ScriptBaseClass.OS_NPC_SENSE_AS_AGENT) == 0);
|
(options & ScriptBaseClass.OS_NPC_SENSE_AS_AGENT) != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private LSL_Key NpcCreate(
|
private LSL_Key NpcCreate(
|
||||||
|
|
|
@ -31,7 +31,6 @@ using System.Collections.Generic;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
using log4net;
|
using log4net;
|
||||||
|
|
||||||
using OpenSim.Region.Framework.Interfaces;
|
using OpenSim.Region.Framework.Interfaces;
|
||||||
using OpenSim.Region.Framework.Scenes;
|
using OpenSim.Region.Framework.Scenes;
|
||||||
using OpenSim.Region.ScriptEngine.Shared;
|
using OpenSim.Region.ScriptEngine.Shared;
|
||||||
|
@ -41,6 +40,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
||||||
{
|
{
|
||||||
public class SensorRepeat
|
public class SensorRepeat
|
||||||
{
|
{
|
||||||
|
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
public AsyncCommandManager m_CmdManager;
|
public AsyncCommandManager m_CmdManager;
|
||||||
|
|
||||||
public SensorRepeat(AsyncCommandManager CmdManager)
|
public SensorRepeat(AsyncCommandManager CmdManager)
|
||||||
|
@ -447,12 +448,21 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
||||||
|
|
||||||
Action<ScenePresence> senseEntity = new Action<ScenePresence>(presence =>
|
Action<ScenePresence> senseEntity = new Action<ScenePresence>(presence =>
|
||||||
{
|
{
|
||||||
|
// m_log.DebugFormat(
|
||||||
|
// "[SENSOR REPEAT]: Inspecting scene presence {0}, type {1} on sensor sweep for {2}, type {3}",
|
||||||
|
// presence.Name, presence.PresenceType, ts.name, ts.type);
|
||||||
|
|
||||||
if ((ts.type & NPC) == 0 && presence.PresenceType == PresenceType.Npc)
|
if ((ts.type & NPC) == 0 && presence.PresenceType == PresenceType.Npc)
|
||||||
{
|
{
|
||||||
INPC npcData = npcModule.GetNPC(presence.UUID, presence.Scene);
|
INPC npcData = npcModule.GetNPC(presence.UUID, presence.Scene);
|
||||||
if (npcData == null || !npcData.SenseAsAgent)
|
if (npcData == null || !npcData.SenseAsAgent)
|
||||||
|
{
|
||||||
|
// m_log.DebugFormat(
|
||||||
|
// "[SENSOR REPEAT]: Discarding NPC {0} from agent sense sweep for script item id {1}",
|
||||||
|
// presence.Name, ts.itemID);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ((ts.type & AGENT) == 0)
|
if ((ts.type & AGENT) == 0)
|
||||||
{
|
{
|
||||||
|
@ -464,9 +474,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
||||||
{
|
{
|
||||||
INPC npcData = npcModule.GetNPC(presence.UUID, presence.Scene);
|
INPC npcData = npcModule.GetNPC(presence.UUID, presence.Scene);
|
||||||
if (npcData != null && npcData.SenseAsAgent)
|
if (npcData != null && npcData.SenseAsAgent)
|
||||||
|
{
|
||||||
|
// m_log.DebugFormat(
|
||||||
|
// "[SENSOR REPEAT]: Discarding NPC {0} from non-agent sense sweep for script item id {1}",
|
||||||
|
// presence.Name, ts.itemID);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (presence.IsDeleted || presence.IsChildAgent || presence.GodLevel > 0.0)
|
if (presence.IsDeleted || presence.IsChildAgent || presence.GodLevel > 0.0)
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -220,7 +220,7 @@ namespace OpenSim.Services.Connectors.Friends
|
||||||
public bool Delete(Dictionary<string, object> sendData, string PrincipalID, string Friend)
|
public bool Delete(Dictionary<string, object> sendData, string PrincipalID, string Friend)
|
||||||
{
|
{
|
||||||
string reply = string.Empty;
|
string reply = string.Empty;
|
||||||
string uri = m_ServerURI = "/friends";
|
string uri = m_ServerURI + "/friends";
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
reply = SynchronousRestFormsRequester.MakeRequest("POST", uri, ServerUtils.BuildQueryString(sendData));
|
reply = SynchronousRestFormsRequester.MakeRequest("POST", uri, ServerUtils.BuildQueryString(sendData));
|
||||||
|
|
Loading…
Reference in New Issue