Merge branch 'master' into careminster
Conflicts: OpenSim/Region/CoreModules/Framework/EntityTransfer/EntityTransferModule.csavinationmerge
commit
70f0587558
|
@ -4617,7 +4617,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
|||
rinfopack.AgentData = new RegionInfoPacket.AgentDataBlock();
|
||||
rinfopack.AgentData.AgentID = AgentId;
|
||||
rinfopack.AgentData.SessionID = SessionId;
|
||||
|
||||
rinfopack.RegionInfo3 = new RegionInfoPacket.RegionInfo3Block[0];
|
||||
|
||||
OutPacket(rinfopack, ThrottleOutPacketType.Task);
|
||||
}
|
||||
|
|
|
@ -339,7 +339,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
|||
|
||||
// Remove any previous attachments
|
||||
List<SceneObjectGroup> existingAttachments = sp.GetAttachments(attachmentPt);
|
||||
string existingAttachmentScriptState = null;
|
||||
|
||||
// At the moment we can only deal with a single attachment
|
||||
if (existingAttachments.Count != 0 && existingAttachments[0].FromItemID != UUID.Zero)
|
||||
|
@ -881,7 +880,6 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
|||
}
|
||||
|
||||
List<SceneObjectGroup> attachments = sp.GetAttachments(attachmentPt);
|
||||
string previousAttachmentScriptedState = null;
|
||||
|
||||
// If we already have 5, remove the oldest until only 4 are left. Skip over temp ones
|
||||
while (attachments.Count >= 5)
|
||||
|
|
|
@ -1162,6 +1162,10 @@ namespace OpenSim.Region.CoreModules.Framework.EntityTransfer
|
|||
// region doesn't take it
|
||||
m_entityTransferStateMachine.UpdateInTransit(agent.UUID, AgentTransferState.CleaningUp);
|
||||
|
||||
m_log.WarnFormat(
|
||||
"[ENTITY TRANSFER MODULE]: Region {0} would not accept update for agent {1} on cross attempt. Returning to original region.",
|
||||
neighbourRegion.RegionName, agent.Name);
|
||||
|
||||
ReInstantiateScripts(agent);
|
||||
agent.AddToPhysicalScene(isFlying);
|
||||
|
||||
|
|
|
@ -219,12 +219,15 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
|
|||
{
|
||||
// m_log.DebugFormat(
|
||||
// "[LOCAL SIMULATION CONNECTOR]: Found region {0} {1} to send AgentUpdate",
|
||||
// s.RegionInfo.RegionName, destination.RegionHandle);
|
||||
// destination.RegionName, destination.RegionID);
|
||||
|
||||
return m_scenes[destination.RegionID].IncomingChildAgentDataUpdate(cAgentData);
|
||||
}
|
||||
|
||||
// m_log.DebugFormat("[LOCAL COMMS]: Did not find region {0} for ChildAgentUpdate", regionHandle);
|
||||
// m_log.DebugFormat(
|
||||
// "[LOCAL COMMS]: Did not find region {0} {1} for ChildAgentUpdate",
|
||||
// destination.RegionName, destination.RegionID);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -239,7 +242,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation
|
|||
// note that we really don't need the GridRegion for this call
|
||||
foreach (Scene s in m_scenes.Values)
|
||||
{
|
||||
//m_log.Debug("[LOCAL COMMS]: Found region to send ChildAgentUpdate");
|
||||
// m_log.Debug("[LOCAL COMMS]: Found region to send ChildAgentUpdate");
|
||||
s.IncomingChildAgentDataUpdate(cAgentData);
|
||||
}
|
||||
|
||||
|
|
|
@ -41,6 +41,16 @@ namespace OpenSim.Region.Framework.Interfaces
|
|||
Value = 3
|
||||
}
|
||||
|
||||
public enum JsonStoreValueType
|
||||
{
|
||||
Undefined = 0,
|
||||
Boolean = 1,
|
||||
Integer = 2,
|
||||
Float = 3,
|
||||
String = 4,
|
||||
UUID = 5
|
||||
}
|
||||
|
||||
public delegate void TakeValueCallback(string s);
|
||||
|
||||
public interface IJsonStoreModule
|
||||
|
@ -49,7 +59,9 @@ namespace OpenSim.Region.Framework.Interfaces
|
|||
bool CreateStore(string value, ref UUID result);
|
||||
bool DestroyStore(UUID storeID);
|
||||
|
||||
JsonStoreNodeType GetPathType(UUID storeID, string path);
|
||||
JsonStoreNodeType GetNodeType(UUID storeID, string path);
|
||||
JsonStoreValueType GetValueType(UUID storeID, string path);
|
||||
|
||||
bool TestStore(UUID storeID);
|
||||
|
||||
bool SetValue(UUID storeID, string path, string value, bool useJson);
|
||||
|
|
|
@ -1841,32 +1841,28 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
bool controlland = (((flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0) ||
|
||||
((flags & AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG) != 0));
|
||||
|
||||
|
||||
//m_log.Debug("[CONTROL]: " +flags);
|
||||
// Applies a satisfying roll effect to the avatar when flying.
|
||||
if (((flags & AgentManager.ControlFlags.AGENT_CONTROL_TURN_LEFT) != 0) && ((flags & AgentManager.ControlFlags.AGENT_CONTROL_YAW_POS) != 0))
|
||||
if ((flags & AgentManager.ControlFlags.AGENT_CONTROL_TURN_LEFT) != 0 && (flags & AgentManager.ControlFlags.AGENT_CONTROL_YAW_POS) != 0)
|
||||
{
|
||||
|
||||
ApplyFlyingRoll(FLY_ROLL_RADIANS_PER_UPDATE, ((flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_POS) != 0), ((flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0));
|
||||
|
||||
|
||||
ApplyFlyingRoll(
|
||||
FLY_ROLL_RADIANS_PER_UPDATE,
|
||||
(flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_POS) != 0,
|
||||
(flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0);
|
||||
}
|
||||
else if (((flags & AgentManager.ControlFlags.AGENT_CONTROL_TURN_RIGHT) != 0) &&
|
||||
((flags & AgentManager.ControlFlags.AGENT_CONTROL_YAW_NEG) != 0))
|
||||
else if ((flags & AgentManager.ControlFlags.AGENT_CONTROL_TURN_RIGHT) != 0 &&
|
||||
(flags & AgentManager.ControlFlags.AGENT_CONTROL_YAW_NEG) != 0)
|
||||
{
|
||||
ApplyFlyingRoll(-FLY_ROLL_RADIANS_PER_UPDATE, ((flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_POS) != 0), ((flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0));
|
||||
|
||||
|
||||
ApplyFlyingRoll(
|
||||
-FLY_ROLL_RADIANS_PER_UPDATE,
|
||||
(flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_POS) != 0,
|
||||
(flags & AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG) != 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (m_AngularVelocity.Z != 0)
|
||||
m_AngularVelocity.Z += CalculateFlyingRollResetToZero(FLY_ROLL_RESET_RADIANS_PER_UPDATE);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
m_AngularVelocity.Z += CalculateFlyingRollResetToZero(FLY_ROLL_RESET_RADIANS_PER_UPDATE);
|
||||
}
|
||||
|
||||
if (Flying && IsColliding && controlland)
|
||||
{
|
||||
|
@ -2584,7 +2580,8 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
/// <param name="vec">The vector in which to move. This is relative to the rotation argument</param>
|
||||
public void AddNewMovement(Vector3 vec)
|
||||
{
|
||||
// m_log.DebugFormat("[SCENE PRESENCE]: Adding new movement {0} for {1}", vec, Name);
|
||||
// m_log.DebugFormat(
|
||||
// "[SCENE PRESENCE]: Adding new movement {0} with rotation {1} for {2}", vec, Rotation, Name);
|
||||
|
||||
Vector3 direc = vec * Rotation;
|
||||
direc.Normalize();
|
||||
|
@ -2604,6 +2601,8 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
direc *= 0.03f * 128f * SpeedModifier;
|
||||
|
||||
// m_log.DebugFormat("[SCENE PRESENCE]: Force to apply before modification was {0} for {1}", direc, Name);
|
||||
|
||||
if (PhysicsActor != null)
|
||||
{
|
||||
if (Flying)
|
||||
|
@ -2637,6 +2636,8 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
// m_log.DebugFormat("[SCENE PRESENCE]: Setting force to apply to {0} for {1}", direc, Name);
|
||||
|
||||
// TODO: Add the force instead of only setting it to support multiple forces per frame?
|
||||
m_forceToApply = direc;
|
||||
Animator.UpdateMovementAnimations();
|
||||
|
|
|
@ -288,109 +288,6 @@ namespace OpenSim.Region.Framework.Scenes.Tests
|
|||
// ScenePresence presence = scene.GetScenePresence(agent1);
|
||||
//
|
||||
// Assert.That(presence, Is.Null, "presence is not null");
|
||||
// }
|
||||
|
||||
// I'm commenting this test because it does not represent
|
||||
// crossings. The Thread.Sleep's in here are not meaningful mocks,
|
||||
// and they sometimes fail in panda.
|
||||
// We need to talk in order to develop a test
|
||||
// that really tests region crossings. There are 3 async components,
|
||||
// but things are synchronous among them. So there should be
|
||||
// 3 threads in here.
|
||||
//[Test]
|
||||
// public void T021_TestCrossToNewRegion()
|
||||
// {
|
||||
// TestHelpers.InMethod();
|
||||
//
|
||||
// scene.RegisterRegionWithGrid();
|
||||
// scene2.RegisterRegionWithGrid();
|
||||
//
|
||||
// // Adding child agent to region 1001
|
||||
// string reason;
|
||||
// scene2.NewUserConnection(acd1,0, out reason);
|
||||
// scene2.AddNewClient(testclient, PresenceType.User);
|
||||
//
|
||||
// ScenePresence presence = scene.GetScenePresence(agent1);
|
||||
// presence.MakeRootAgent(new Vector3(0,unchecked(Constants.RegionSize-1),0), true);
|
||||
//
|
||||
// ScenePresence presence2 = scene2.GetScenePresence(agent1);
|
||||
//
|
||||
// // Adding neighbour region caps info to presence2
|
||||
//
|
||||
// string cap = presence.ControllingClient.RequestClientInfo().CapsPath;
|
||||
// presence2.AddNeighbourRegion(region1, cap);
|
||||
//
|
||||
// Assert.That(presence.IsChildAgent, Is.False, "Did not start root in origin region.");
|
||||
// Assert.That(presence2.IsChildAgent, Is.True, "Is not a child on destination region.");
|
||||
//
|
||||
// // Cross to x+1
|
||||
// presence.AbsolutePosition = new Vector3(Constants.RegionSize+1,3,100);
|
||||
// presence.Update();
|
||||
//
|
||||
// EventWaitHandle wh = new EventWaitHandle (false, EventResetMode.AutoReset, "Crossing");
|
||||
//
|
||||
// // Mimicking communication between client and server, by waiting OK from client
|
||||
// // sent by TestClient.CrossRegion call. Originally, this is network comm.
|
||||
// if (!wh.WaitOne(5000,false))
|
||||
// {
|
||||
// presence.Update();
|
||||
// if (!wh.WaitOne(8000,false))
|
||||
// throw new ArgumentException("1 - Timeout waiting for signal/variable.");
|
||||
// }
|
||||
//
|
||||
// // This is a TestClient specific method that fires OnCompleteMovementToRegion event, which
|
||||
// // would normally be fired after receiving the reply packet from comm. done on the last line.
|
||||
// testclient.CompleteMovement();
|
||||
//
|
||||
// // Crossings are asynchronous
|
||||
// int timer = 10;
|
||||
//
|
||||
// // Make sure cross hasn't already finished
|
||||
// if (!presence.IsInTransit && !presence.IsChildAgent)
|
||||
// {
|
||||
// // If not and not in transit yet, give it some more time
|
||||
// Thread.Sleep(5000);
|
||||
// }
|
||||
//
|
||||
// // Enough time, should at least be in transit by now.
|
||||
// while (presence.IsInTransit && timer > 0)
|
||||
// {
|
||||
// Thread.Sleep(1000);
|
||||
// timer-=1;
|
||||
// }
|
||||
//
|
||||
// Assert.That(timer,Is.GreaterThan(0),"Timed out waiting to cross 2->1.");
|
||||
// Assert.That(presence.IsChildAgent, Is.True, "Did not complete region cross as expected.");
|
||||
// Assert.That(presence2.IsChildAgent, Is.False, "Did not receive root status after receiving agent.");
|
||||
//
|
||||
// // Cross Back
|
||||
// presence2.AbsolutePosition = new Vector3(-10, 3, 100);
|
||||
// presence2.Update();
|
||||
//
|
||||
// if (!wh.WaitOne(5000,false))
|
||||
// {
|
||||
// presence2.Update();
|
||||
// if (!wh.WaitOne(8000,false))
|
||||
// throw new ArgumentException("2 - Timeout waiting for signal/variable.");
|
||||
// }
|
||||
// testclient.CompleteMovement();
|
||||
//
|
||||
// if (!presence2.IsInTransit && !presence2.IsChildAgent)
|
||||
// {
|
||||
// // If not and not in transit yet, give it some more time
|
||||
// Thread.Sleep(5000);
|
||||
// }
|
||||
//
|
||||
// // Enough time, should at least be in transit by now.
|
||||
// while (presence2.IsInTransit && timer > 0)
|
||||
// {
|
||||
// Thread.Sleep(1000);
|
||||
// timer-=1;
|
||||
// }
|
||||
//
|
||||
// Assert.That(timer,Is.GreaterThan(0),"Timed out waiting to cross 1->2.");
|
||||
// Assert.That(presence2.IsChildAgent, Is.True, "Did not return from region as expected.");
|
||||
// Assert.That(presence.IsChildAgent, Is.False, "Presence was not made root in old region again.");
|
||||
// }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,157 @@
|
|||
/*
|
||||
* Copyright (c) Contributors, http://opensimulator.org/
|
||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the OpenSimulator Project nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using Nini.Config;
|
||||
using NUnit.Framework;
|
||||
using OpenMetaverse;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.Communications;
|
||||
using OpenSim.Framework.Servers;
|
||||
using OpenSim.Region.Framework.Interfaces;
|
||||
using OpenSim.Region.CoreModules.Framework;
|
||||
using OpenSim.Region.CoreModules.Framework.EntityTransfer;
|
||||
using OpenSim.Region.CoreModules.ServiceConnectorsOut.Simulation;
|
||||
using OpenSim.Tests.Common;
|
||||
using OpenSim.Tests.Common.Mock;
|
||||
|
||||
namespace OpenSim.Region.Framework.Scenes.Tests
|
||||
{
|
||||
[TestFixture]
|
||||
public class ScenePresenceCrossingTests : OpenSimTestCase
|
||||
{
|
||||
[TestFixtureSetUp]
|
||||
public void FixtureInit()
|
||||
{
|
||||
// Don't allow tests to be bamboozled by asynchronous events. Execute everything on the same thread.
|
||||
Util.FireAndForgetMethod = FireAndForgetMethod.RegressionTest;
|
||||
}
|
||||
|
||||
[TestFixtureTearDown]
|
||||
public void TearDown()
|
||||
{
|
||||
// We must set this back afterwards, otherwise later tests will fail since they're expecting multiple
|
||||
// threads. Possibly, later tests should be rewritten so none of them require async stuff (which regression
|
||||
// tests really shouldn't).
|
||||
Util.FireAndForgetMethod = Util.DefaultFireAndForgetMethod;
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestCrossOnSameSimulator()
|
||||
{
|
||||
TestHelpers.InMethod();
|
||||
// TestHelpers.EnableLogging();
|
||||
|
||||
UUID userId = TestHelpers.ParseTail(0x1);
|
||||
|
||||
// TestEventQueueGetModule eqmA = new TestEventQueueGetModule();
|
||||
EntityTransferModule etmA = new EntityTransferModule();
|
||||
EntityTransferModule etmB = new EntityTransferModule();
|
||||
LocalSimulationConnectorModule lscm = new LocalSimulationConnectorModule();
|
||||
|
||||
IConfigSource config = new IniConfigSource();
|
||||
IConfig modulesConfig = config.AddConfig("Modules");
|
||||
modulesConfig.Set("EntityTransferModule", etmA.Name);
|
||||
modulesConfig.Set("SimulationServices", lscm.Name);
|
||||
// IConfig entityTransferConfig = config.AddConfig("EntityTransfer");
|
||||
|
||||
// In order to run a single threaded regression test we do not want the entity transfer module waiting
|
||||
// for a callback from the destination scene before removing its avatar data.
|
||||
// entityTransferConfig.Set("wait_for_callback", false);
|
||||
|
||||
SceneHelpers sh = new SceneHelpers();
|
||||
TestScene sceneA = sh.SetupScene("sceneA", TestHelpers.ParseTail(0x100), 1000, 1000);
|
||||
TestScene sceneB = sh.SetupScene("sceneB", TestHelpers.ParseTail(0x200), 1000, 999);
|
||||
|
||||
SceneHelpers.SetupSceneModules(new Scene[] { sceneA, sceneB }, config, lscm);
|
||||
SceneHelpers.SetupSceneModules(sceneA, config, new CapabilitiesModule(), etmA);
|
||||
// SceneHelpers.SetupSceneModules(sceneA, config, new CapabilitiesModule(), etmA, eqmA);
|
||||
SceneHelpers.SetupSceneModules(sceneB, config, new CapabilitiesModule(), etmB);
|
||||
|
||||
ScenePresence originalSp = SceneHelpers.AddScenePresence(sceneA, userId, sh.SceneManager);
|
||||
originalSp.AbsolutePosition = new Vector3(128, 32, 10);
|
||||
|
||||
// originalSp.Flying = true;
|
||||
|
||||
// Console.WriteLine("First pos {0}", originalSp.AbsolutePosition);
|
||||
|
||||
// eqmA.ClearEvents();
|
||||
|
||||
AgentUpdateArgs moveArgs = new AgentUpdateArgs();
|
||||
//moveArgs.BodyRotation = Quaternion.CreateFromEulers(Vector3.Zero);
|
||||
moveArgs.BodyRotation = Quaternion.CreateFromEulers(new Vector3(0, 0, (float)-(Math.PI / 2)));
|
||||
moveArgs.ControlFlags = (uint)AgentManager.ControlFlags.AGENT_CONTROL_AT_POS;
|
||||
|
||||
originalSp.HandleAgentUpdate(originalSp.ControllingClient, moveArgs);
|
||||
|
||||
sceneA.Update(1);
|
||||
|
||||
// Console.WriteLine("Second pos {0}", originalSp.AbsolutePosition);
|
||||
|
||||
// FIXME: This is a sufficient number of updates to for the presence to reach the northern border.
|
||||
// But really we want to do this in a more robust way.
|
||||
for (int i = 0; i < 100; i++)
|
||||
{
|
||||
sceneA.Update(1);
|
||||
// Console.WriteLine("Pos {0}", originalSp.AbsolutePosition);
|
||||
}
|
||||
|
||||
// Need to sort processing of EnableSimulator message on adding scene presences before we can test eqm
|
||||
// messages
|
||||
// Dictionary<UUID, List<TestEventQueueGetModule.Event>> eqmEvents = eqmA.Events;
|
||||
//
|
||||
// Assert.That(eqmEvents.Count, Is.EqualTo(1));
|
||||
// Assert.That(eqmEvents.ContainsKey(originalSp.UUID), Is.True);
|
||||
//
|
||||
// List<TestEventQueueGetModule.Event> spEqmEvents = eqmEvents[originalSp.UUID];
|
||||
//
|
||||
// Assert.That(spEqmEvents.Count, Is.EqualTo(1));
|
||||
// Assert.That(spEqmEvents[0].Name, Is.EqualTo("CrossRegion"));
|
||||
|
||||
// sceneA should now only have a child agent
|
||||
ScenePresence spAfterCrossSceneA = sceneA.GetScenePresence(originalSp.UUID);
|
||||
Assert.That(spAfterCrossSceneA.IsChildAgent, Is.True);
|
||||
|
||||
ScenePresence spAfterCrossSceneB = sceneB.GetScenePresence(originalSp.UUID);
|
||||
|
||||
// Agent remains a child until the client triggers complete movement
|
||||
Assert.That(spAfterCrossSceneB.IsChildAgent, Is.True);
|
||||
|
||||
TestClient sceneBTc = ((TestClient)spAfterCrossSceneB.ControllingClient);
|
||||
|
||||
int agentMovementCompleteReceived = 0;
|
||||
sceneBTc.OnReceivedMoveAgentIntoRegion += (ri, pos, look) => agentMovementCompleteReceived++;
|
||||
|
||||
sceneBTc.CompleteMovement();
|
||||
|
||||
Assert.That(agentMovementCompleteReceived, Is.EqualTo(1));
|
||||
Assert.That(spAfterCrossSceneB.IsChildAgent, Is.False);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -145,7 +145,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
|
|||
///
|
||||
/// </summary>
|
||||
// -----------------------------------------------------------------
|
||||
public JsonStoreNodeType PathType(string expr)
|
||||
public JsonStoreNodeType GetNodeType(string expr)
|
||||
{
|
||||
Stack<string> path;
|
||||
if (! ParsePathExpression(expr,out path))
|
||||
|
@ -168,6 +168,43 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
|
|||
return JsonStoreNodeType.Undefined;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
// -----------------------------------------------------------------
|
||||
public JsonStoreValueType GetValueType(string expr)
|
||||
{
|
||||
Stack<string> path;
|
||||
if (! ParsePathExpression(expr,out path))
|
||||
return JsonStoreValueType.Undefined;
|
||||
|
||||
OSD result = ProcessPathExpression(ValueStore,path);
|
||||
|
||||
if (result == null)
|
||||
return JsonStoreValueType.Undefined;
|
||||
|
||||
if (result is OSDMap)
|
||||
return JsonStoreValueType.Undefined;
|
||||
|
||||
if (result is OSDArray)
|
||||
return JsonStoreValueType.Undefined;
|
||||
|
||||
if (result is OSDBoolean)
|
||||
return JsonStoreValueType.Boolean;
|
||||
|
||||
if (result is OSDInteger)
|
||||
return JsonStoreValueType.Integer;
|
||||
|
||||
if (result is OSDReal)
|
||||
return JsonStoreValueType.Float;
|
||||
|
||||
if (result is OSDString)
|
||||
return JsonStoreValueType.String;
|
||||
|
||||
return JsonStoreValueType.Undefined;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
/// <summary>
|
||||
///
|
||||
|
|
|
@ -270,7 +270,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
|
|||
///
|
||||
/// </summary>
|
||||
// -----------------------------------------------------------------
|
||||
public JsonStoreNodeType GetPathType(UUID storeID, string path)
|
||||
public JsonStoreNodeType GetNodeType(UUID storeID, string path)
|
||||
{
|
||||
if (! m_enabled) return JsonStoreNodeType.Undefined;
|
||||
|
||||
|
@ -287,7 +287,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
|
|||
try
|
||||
{
|
||||
lock (map)
|
||||
return map.PathType(path);
|
||||
return map.GetNodeType(path);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
@ -297,6 +297,38 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
|
|||
return JsonStoreNodeType.Undefined;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
// -----------------------------------------------------------------
|
||||
public JsonStoreValueType GetValueType(UUID storeID, string path)
|
||||
{
|
||||
if (! m_enabled) return JsonStoreValueType.Undefined;
|
||||
|
||||
JsonStore map = null;
|
||||
lock (m_JsonValueStore)
|
||||
{
|
||||
if (! m_JsonValueStore.TryGetValue(storeID,out map))
|
||||
{
|
||||
m_log.InfoFormat("[JsonStore] Missing store {0}",storeID);
|
||||
return JsonStoreValueType.Undefined;
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
lock (map)
|
||||
return map.GetValueType(path);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
m_log.Error(string.Format("[JsonStore]: Path test failed for {0} in {1}", path, storeID), e);
|
||||
}
|
||||
|
||||
return JsonStoreValueType.Undefined;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
/// <summary>
|
||||
///
|
||||
|
|
|
@ -192,16 +192,32 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
|
|||
#region ScriptConstantsInterface
|
||||
|
||||
[ScriptConstant]
|
||||
public static readonly int JSON_TYPE_UNDEF = (int)JsonStoreNodeType.Undefined;
|
||||
public static readonly int JSON_NODETYPE_UNDEF = (int)JsonStoreNodeType.Undefined;
|
||||
|
||||
[ScriptConstant]
|
||||
public static readonly int JSON_TYPE_OBJECT = (int)JsonStoreNodeType.Object;
|
||||
public static readonly int JSON_NODETYPE_OBJECT = (int)JsonStoreNodeType.Object;
|
||||
|
||||
[ScriptConstant]
|
||||
public static readonly int JSON_TYPE_ARRAY = (int)JsonStoreNodeType.Array;
|
||||
public static readonly int JSON_NODETYPE_ARRAY = (int)JsonStoreNodeType.Array;
|
||||
|
||||
[ScriptConstant]
|
||||
public static readonly int JSON_TYPE_VALUE = (int)JsonStoreNodeType.Value;
|
||||
public static readonly int JSON_NODETYPE_VALUE = (int)JsonStoreNodeType.Value;
|
||||
|
||||
[ScriptConstant]
|
||||
public static readonly int JSON_VALUETYPE_UNDEF = (int)JsonStoreValueType.Undefined;
|
||||
|
||||
[ScriptConstant]
|
||||
public static readonly int JSON_VALUETYPE_BOOLEAN = (int)JsonStoreValueType.Boolean;
|
||||
|
||||
[ScriptConstant]
|
||||
public static readonly int JSON_VALUETYPE_INTEGER = (int)JsonStoreValueType.Integer;
|
||||
|
||||
[ScriptConstant]
|
||||
public static readonly int JSON_VALUETYPE_FLOAT = (int)JsonStoreValueType.Float;
|
||||
|
||||
[ScriptConstant]
|
||||
public static readonly int JSON_VALUETYPE_STRING = (int)JsonStoreValueType.String;
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
|
@ -310,9 +326,20 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore
|
|||
/// </summary>
|
||||
// -----------------------------------------------------------------
|
||||
[ScriptInvocation]
|
||||
public int JsonGetPathType(UUID hostID, UUID scriptID, UUID storeID, string path)
|
||||
public int JsonGetNodeType(UUID hostID, UUID scriptID, UUID storeID, string path)
|
||||
{
|
||||
return (int)m_store.GetPathType(storeID,path);
|
||||
return (int)m_store.GetNodeType(storeID,path);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
// -----------------------------------------------------------------
|
||||
[ScriptInvocation]
|
||||
public int JsonGetValueType(UUID hostID, UUID scriptID, UUID storeID, string path)
|
||||
{
|
||||
return (int)m_store.GetValueType(storeID,path);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
|
|
|
@ -158,8 +158,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore.Tests
|
|||
|
||||
Assert.That(dsrv, Is.EqualTo(1));
|
||||
|
||||
int tprv = (int)InvokeOp("JsonGetPathType", storeId, "Hello");
|
||||
Assert.That(tprv, Is.EqualTo(JsonStoreScriptModule.JSON_TYPE_UNDEF));
|
||||
int tprv = (int)InvokeOp("JsonGetNodeType", storeId, "Hello");
|
||||
Assert.That(tprv, Is.EqualTo(JsonStoreScriptModule.JSON_NODETYPE_UNDEF));
|
||||
}
|
||||
|
||||
[Test]
|
||||
|
@ -277,8 +277,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore.Tests
|
|||
int returnValue = (int)InvokeOp( "JsonRemoveValue", storeId, "Hello");
|
||||
Assert.That(returnValue, Is.EqualTo(1));
|
||||
|
||||
int result = (int)InvokeOp("JsonGetPathType", storeId, "Hello");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_TYPE_UNDEF));
|
||||
int result = (int)InvokeOp("JsonGetNodeType", storeId, "Hello");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_NODETYPE_UNDEF));
|
||||
|
||||
string returnValue2 = (string)InvokeOp("JsonGetValue", storeId, "Hello");
|
||||
Assert.That(returnValue2, Is.EqualTo(""));
|
||||
|
@ -291,8 +291,8 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore.Tests
|
|||
int returnValue = (int)InvokeOp( "JsonRemoveValue", storeId, "Hello");
|
||||
Assert.That(returnValue, Is.EqualTo(1));
|
||||
|
||||
int result = (int)InvokeOp("JsonGetPathType", storeId, "Hello");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_TYPE_UNDEF));
|
||||
int result = (int)InvokeOp("JsonGetNodeType", storeId, "Hello");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_NODETYPE_UNDEF));
|
||||
|
||||
string returnValue2 = (string)InvokeOp("JsonGetJson", storeId, "Hello");
|
||||
Assert.That(returnValue2, Is.EqualTo(""));
|
||||
|
@ -306,11 +306,11 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore.Tests
|
|||
int returnValue = (int)InvokeOp( "JsonRemoveValue", storeId, "Hello[0]");
|
||||
Assert.That(returnValue, Is.EqualTo(1));
|
||||
|
||||
int result = (int)InvokeOp("JsonGetPathType", storeId, "Hello[0]");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_TYPE_VALUE));
|
||||
int result = (int)InvokeOp("JsonGetNodeType", storeId, "Hello[0]");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_NODETYPE_VALUE));
|
||||
|
||||
result = (int)InvokeOp("JsonGetPathType", storeId, "Hello[1]");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_TYPE_UNDEF));
|
||||
result = (int)InvokeOp("JsonGetNodeType", storeId, "Hello[1]");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_NODETYPE_UNDEF));
|
||||
|
||||
string stringReturnValue = (string)InvokeOp("JsonGetValue", storeId, "Hello[0]");
|
||||
Assert.That(stringReturnValue, Is.EqualTo("value2"));
|
||||
|
@ -433,7 +433,7 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore.Tests
|
|||
}
|
||||
|
||||
[Test]
|
||||
public void TestJsonGetPathType()
|
||||
public void TestJsonGetNodeType()
|
||||
{
|
||||
TestHelpers.InMethod();
|
||||
// TestHelpers.EnableLogging();
|
||||
|
@ -441,41 +441,41 @@ namespace OpenSim.Region.OptionalModules.Scripting.JsonStore.Tests
|
|||
UUID storeId = (UUID)InvokeOp("JsonCreateStore", "{ 'Hello' : { 'World' : [ 'one', 2 ] } }");
|
||||
|
||||
{
|
||||
int result = (int)InvokeOp("JsonGetPathType", storeId, ".");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_TYPE_OBJECT));
|
||||
int result = (int)InvokeOp("JsonGetNodeType", storeId, ".");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_NODETYPE_OBJECT));
|
||||
}
|
||||
|
||||
{
|
||||
int result = (int)InvokeOp("JsonGetPathType", storeId, "Hello");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_TYPE_OBJECT));
|
||||
int result = (int)InvokeOp("JsonGetNodeType", storeId, "Hello");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_NODETYPE_OBJECT));
|
||||
}
|
||||
|
||||
{
|
||||
int result = (int)InvokeOp("JsonGetPathType", storeId, "Hello.World");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_TYPE_ARRAY));
|
||||
int result = (int)InvokeOp("JsonGetNodeType", storeId, "Hello.World");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_NODETYPE_ARRAY));
|
||||
}
|
||||
|
||||
{
|
||||
int result = (int)InvokeOp("JsonGetPathType", storeId, "Hello.World[0]");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_TYPE_VALUE));
|
||||
int result = (int)InvokeOp("JsonGetNodeType", storeId, "Hello.World[0]");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_NODETYPE_VALUE));
|
||||
}
|
||||
|
||||
{
|
||||
int result = (int)InvokeOp("JsonGetPathType", storeId, "Hello.World[1]");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_TYPE_VALUE));
|
||||
int result = (int)InvokeOp("JsonGetNodeType", storeId, "Hello.World[1]");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_NODETYPE_VALUE));
|
||||
}
|
||||
|
||||
// Test for non-existant path
|
||||
{
|
||||
int result = (int)InvokeOp("JsonGetPathType", storeId, "foo");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_TYPE_UNDEF));
|
||||
int result = (int)InvokeOp("JsonGetNodeType", storeId, "foo");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_NODETYPE_UNDEF));
|
||||
}
|
||||
|
||||
// Test for non-existant store
|
||||
{
|
||||
UUID fakeStoreId = TestHelpers.ParseTail(0x500);
|
||||
int result = (int)InvokeOp("JsonGetPathType", fakeStoreId, ".");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_TYPE_UNDEF));
|
||||
int result = (int)InvokeOp("JsonGetNodeType", fakeStoreId, ".");
|
||||
Assert.That(result, Is.EqualTo(JsonStoreScriptModule.JSON_NODETYPE_UNDEF));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -102,6 +102,8 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin
|
|||
|
||||
public override float Simulate(float timeStep)
|
||||
{
|
||||
// Console.WriteLine("Simulating");
|
||||
|
||||
float fps = 0;
|
||||
for (int i = 0; i < _actors.Count; ++i)
|
||||
{
|
||||
|
@ -109,8 +111,11 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin
|
|||
Vector3 actorPosition = actor.Position;
|
||||
Vector3 actorVelocity = actor.Velocity;
|
||||
|
||||
actorPosition.X += actor.Velocity.X*timeStep;
|
||||
actorPosition.Y += actor.Velocity.Y*timeStep;
|
||||
// Console.WriteLine(
|
||||
// "Processing actor {0}, starting pos {1}, starting vel {2}", i, actorPosition, actorVelocity);
|
||||
|
||||
actorPosition.X += actor.Velocity.X * timeStep;
|
||||
actorPosition.Y += actor.Velocity.Y * timeStep;
|
||||
|
||||
if (actor.Position.Y < 0)
|
||||
{
|
||||
|
|
|
@ -11842,7 +11842,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
|
||||
LSL_List result = new LSL_List();
|
||||
|
||||
if (obj != null && obj.OwnerID != m_host.OwnerID)
|
||||
if (obj != null && obj.OwnerID == m_host.OwnerID)
|
||||
{
|
||||
LSL_List remaining = GetPrimParams(obj, rules, ref result);
|
||||
|
||||
|
|
|
@ -266,6 +266,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
|||
{
|
||||
llist[i] = new LSL_Float((float)result[i]);
|
||||
}
|
||||
else if (result[i] is double)
|
||||
{
|
||||
llist[i] = new LSL_Float((double)result[i]);
|
||||
}
|
||||
else if (result[i] is UUID)
|
||||
{
|
||||
llist[i] = new LSL_Key(result[i].ToString());
|
||||
|
|
|
@ -60,6 +60,8 @@ namespace OpenSim.Tests.Common.Mock
|
|||
public List<ImagePacketPacket> SentImagePacketPackets { get; private set; }
|
||||
public List<ImageNotInDatabasePacket> SentImageNotInDatabasePackets { get; private set; }
|
||||
|
||||
public event Action<RegionInfo, Vector3, Vector3> OnReceivedMoveAgentIntoRegion;
|
||||
|
||||
// disable warning: public events, part of the public API
|
||||
#pragma warning disable 67
|
||||
|
||||
|
@ -575,6 +577,8 @@ namespace OpenSim.Tests.Common.Mock
|
|||
|
||||
public virtual void MoveAgentIntoRegion(RegionInfo regInfo, Vector3 pos, Vector3 look)
|
||||
{
|
||||
if (OnReceivedMoveAgentIntoRegion != null)
|
||||
OnReceivedMoveAgentIntoRegion(regInfo, pos, look);
|
||||
}
|
||||
|
||||
public virtual AgentCircuitData RequestClientInfo()
|
||||
|
|
|
@ -0,0 +1,178 @@
|
|||
/*
|
||||
* Copyright (c) Contributors, http://opensimulator.org/
|
||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* * Neither the name of the OpenSimulator Project nor the
|
||||
* names of its contributors may be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Reflection;
|
||||
using System.Threading;
|
||||
using log4net;
|
||||
using Nini.Config;
|
||||
using Mono.Addins;
|
||||
using OpenMetaverse;
|
||||
using OpenMetaverse.StructuredData;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.Servers;
|
||||
using OpenSim.Region.Framework.Interfaces;
|
||||
using OpenSim.Region.Framework.Scenes;
|
||||
|
||||
namespace OpenSim.Tests.Common
|
||||
{
|
||||
public class TestEventQueueGetModule : IEventQueue, INonSharedRegionModule
|
||||
{
|
||||
public class Event
|
||||
{
|
||||
public string Name { get; set; }
|
||||
public object[] Args { get; set; }
|
||||
|
||||
public Event(string name, object[] args)
|
||||
{
|
||||
name = Name;
|
||||
args = Args;
|
||||
}
|
||||
}
|
||||
|
||||
public Dictionary<UUID, List<Event>> Events { get; set; }
|
||||
|
||||
public void Initialise(IConfigSource source) {}
|
||||
|
||||
public void Close() {}
|
||||
|
||||
public void AddRegion(Scene scene)
|
||||
{
|
||||
Events = new Dictionary<UUID, List<Event>>();
|
||||
scene.RegisterModuleInterface<IEventQueue>(this);
|
||||
}
|
||||
|
||||
public void RemoveRegion (Scene scene) {}
|
||||
|
||||
public void RegionLoaded (Scene scene) {}
|
||||
|
||||
public string Name { get { return "TestEventQueueGetModule"; } }
|
||||
|
||||
public Type ReplaceableInterface { get { return null; } }
|
||||
|
||||
private void AddEvent(UUID avatarID, string name, params object[] args)
|
||||
{
|
||||
Console.WriteLine("Adding event {0} for {1}", name, avatarID);
|
||||
|
||||
List<Event> avEvents;
|
||||
|
||||
if (!Events.ContainsKey(avatarID))
|
||||
{
|
||||
avEvents = new List<Event>();
|
||||
Events[avatarID] = avEvents;
|
||||
}
|
||||
else
|
||||
{
|
||||
avEvents = Events[avatarID];
|
||||
}
|
||||
|
||||
avEvents.Add(new Event(name, args));
|
||||
}
|
||||
|
||||
public void ClearEvents()
|
||||
{
|
||||
if (Events != null)
|
||||
Events.Clear();
|
||||
}
|
||||
|
||||
public bool Enqueue(OSD o, UUID avatarID)
|
||||
{
|
||||
AddEvent(avatarID, "Enqueue", o);
|
||||
return true;
|
||||
}
|
||||
|
||||
public void DisableSimulator(ulong handle, UUID avatarID)
|
||||
{
|
||||
AddEvent(avatarID, "DisableSimulator", handle);
|
||||
}
|
||||
|
||||
public void EnableSimulator (ulong handle, IPEndPoint endPoint, UUID avatarID)
|
||||
{
|
||||
AddEvent(avatarID, "EnableSimulator", handle);
|
||||
}
|
||||
|
||||
public void EstablishAgentCommunication (UUID avatarID, IPEndPoint endPoint, string capsPath)
|
||||
{
|
||||
AddEvent(avatarID, "EstablishAgentCommunication", endPoint, capsPath);
|
||||
}
|
||||
|
||||
public void TeleportFinishEvent (ulong regionHandle, byte simAccess, IPEndPoint regionExternalEndPoint, uint locationID, uint flags, string capsURL, UUID agentID)
|
||||
{
|
||||
AddEvent(agentID, "TeleportFinishEvent", regionHandle, simAccess, regionExternalEndPoint, locationID, flags, capsURL);
|
||||
}
|
||||
|
||||
public void CrossRegion (ulong handle, Vector3 pos, Vector3 lookAt, IPEndPoint newRegionExternalEndPoint, string capsURL, UUID avatarID, UUID sessionID)
|
||||
{
|
||||
AddEvent(avatarID, "CrossRegion", handle, pos, lookAt, newRegionExternalEndPoint, capsURL, sessionID);
|
||||
}
|
||||
|
||||
public void ChatterboxInvitation(
|
||||
UUID sessionID, string sessionName, UUID fromAgent, string message, UUID toAgent, string fromName,
|
||||
byte dialog, uint timeStamp, bool offline, int parentEstateID, Vector3 position, uint ttl,
|
||||
UUID transactionID, bool fromGroup, byte[] binaryBucket)
|
||||
{
|
||||
AddEvent(
|
||||
toAgent, "ChatterboxInvitation", sessionID, sessionName, fromAgent, message, toAgent, fromName, dialog,
|
||||
timeStamp, offline, parentEstateID, position, ttl, transactionID, fromGroup, binaryBucket);
|
||||
}
|
||||
|
||||
public void ChatterBoxSessionAgentListUpdates (UUID sessionID, UUID fromAgent, UUID toAgent, bool canVoiceChat, bool isModerator, bool textMute)
|
||||
{
|
||||
AddEvent(toAgent, "ChatterBoxSessionAgentListUpdates", sessionID, fromAgent, canVoiceChat, isModerator, textMute);
|
||||
}
|
||||
|
||||
public void ParcelProperties (OpenMetaverse.Messages.Linden.ParcelPropertiesMessage parcelPropertiesMessage, UUID avatarID)
|
||||
{
|
||||
AddEvent(avatarID, "ParcelProperties", parcelPropertiesMessage);
|
||||
}
|
||||
|
||||
public void GroupMembership (OpenMetaverse.Packets.AgentGroupDataUpdatePacket groupUpdate, UUID avatarID)
|
||||
{
|
||||
AddEvent(avatarID, "GroupMembership", groupUpdate);
|
||||
}
|
||||
|
||||
public OSD ScriptRunningEvent (UUID objectID, UUID itemID, bool running, bool mono)
|
||||
{
|
||||
Console.WriteLine("ONE");
|
||||
throw new System.NotImplementedException ();
|
||||
}
|
||||
|
||||
public OSD BuildEvent (string eventName, OSD eventBody)
|
||||
{
|
||||
Console.WriteLine("TWO");
|
||||
throw new System.NotImplementedException ();
|
||||
}
|
||||
|
||||
public void partPhysicsProperties (uint localID, byte physhapetype, float density, float friction, float bounce, float gravmod, UUID avatarID)
|
||||
{
|
||||
AddEvent(avatarID, "partPhysicsProperties", localID, physhapetype, density, friction, bounce, gravmod);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -26,12 +26,12 @@
|
|||
; Set path to directory for plugin registry. Information
|
||||
; about the registered repositories and installed plugins
|
||||
; will be stored here
|
||||
; The Robust.exe process must hvae R/W access to the location
|
||||
; The Robust.exe process must have R/W access to the location
|
||||
RegistryLocation = "."
|
||||
|
||||
; Modular configurations
|
||||
; Set path to directory for modular ini files...
|
||||
; The Robust.exe process must hvae R/W access to the location
|
||||
; The Robust.exe process must have R/W access to the location
|
||||
ConfigDirectory = "/home/opensim/etc/Configs"
|
||||
|
||||
[ServiceList]
|
||||
|
@ -171,7 +171,7 @@ HGAssetServiceConnector = "HGAssetService@8002/OpenSim.Server.Handlers.dll:Asset
|
|||
;; Allow Hyperlinks to be created at the console
|
||||
HypergridLinker = true
|
||||
|
||||
;; If you have this set under [Startup], no need to set it here, leave it commented
|
||||
;; If you have this set under [Hypergrid], no need to set it here, leave it commented
|
||||
; GatekeeperURI = "http://127.0.0.1:8002"
|
||||
|
||||
|
||||
|
@ -326,7 +326,7 @@ HGAssetServiceConnector = "HGAssetService@8002/OpenSim.Server.Handlers.dll:Asset
|
|||
; HasProxy = false
|
||||
|
||||
; Defaults for the users, if none is specified in the useraccounts table entry (ServiceURLs)
|
||||
;; If you have Gatekeeper set under [Startup], no need to set it here, leave it commented
|
||||
;; If you have GatekeeperURI set under [Hypergrid], no need to set it here, leave it commented
|
||||
; GatekeeperURI = "http://127.0.0.1:8002"
|
||||
|
||||
SRV_HomeURI = "http://127.0.0.1:8002"
|
||||
|
@ -436,7 +436,7 @@ HGAssetServiceConnector = "HGAssetService@8002/OpenSim.Server.Handlers.dll:Asset
|
|||
AuthenticationService = "OpenSim.Services.Connectors.dll:AuthenticationServicesConnector"
|
||||
SimulationService ="OpenSim.Services.Connectors.dll:SimulationServiceConnector"
|
||||
; how does the outside world reach me? This acts as public key too.
|
||||
;; If you have GatekeeperURI set under [Startup], no need to set it here, leave it commented
|
||||
;; If you have GatekeeperURI set under [Hypergrid], no need to set it here, leave it commented
|
||||
; ExternalName = "http://127.0.0.1:8002"
|
||||
|
||||
; Does this grid allow incoming links to any region in it?
|
||||
|
@ -531,7 +531,7 @@ HGAssetServiceConnector = "HGAssetService@8002/OpenSim.Server.Handlers.dll:Asset
|
|||
UserAccountsService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
|
||||
AvatarService = "OpenSim.Services.AvatarService.dll:AvatarService"
|
||||
|
||||
;; Can overwrite the default in [Startup], but probably shouldn't
|
||||
;; Can overwrite the default in [Hypergrid], but probably shouldn't
|
||||
; HomeURI = "http://127.0.0.1:8002"
|
||||
|
||||
; * The interface that local users get when they are in other grids.
|
||||
|
@ -542,7 +542,7 @@ HGAssetServiceConnector = "HGAssetService@8002/OpenSim.Server.Handlers.dll:Asset
|
|||
LocalServiceModule = "OpenSim.Services.HypergridService.dll:HGAssetService"
|
||||
UserAccountsService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
|
||||
|
||||
;; Can overwrite the default in [Startup], but probably shouldn't
|
||||
;; Can overwrite the default in [Hypergrid], but probably shouldn't
|
||||
; HomeURI = "http://127.0.0.1:8002"
|
||||
|
||||
;; The asset types that this grid can export to / import from other grids.
|
||||
|
@ -583,7 +583,7 @@ HGAssetServiceConnector = "HGAssetService@8002/OpenSim.Server.Handlers.dll:Asset
|
|||
UserAccountService = "OpenSim.Services.UserAccountService.dll:UserAccountService"
|
||||
|
||||
;; What is the HomeURI of users associated with this grid?
|
||||
;; Can overwrite the default in [Startup], but probably shouldn't
|
||||
;; Can overwrite the default in [Hypergrid], but probably shouldn't
|
||||
; HomeURI = "http://127.0.0.1:8002"
|
||||
|
||||
|
||||
|
|
|
@ -2959,6 +2959,7 @@
|
|||
<Reference name="Nini" path="../../../bin/"/>
|
||||
<Reference name="nunit.framework" path="../../../bin/"/>
|
||||
<Reference name="OpenMetaverse" path="../../../bin/"/>
|
||||
<Reference name="OpenMetaverse.StructuredData" path="../../../bin/"/>
|
||||
<Reference name="OpenMetaverseTypes" path="../../../bin/"/>
|
||||
<Reference name="OpenSim.Data"/>
|
||||
<Reference name="OpenSim.Data.Null"/>
|
||||
|
|
Loading…
Reference in New Issue