diff options
Diffstat (limited to '')
4 files changed, 77 insertions, 1 deletions
diff --git a/OpenSim/Region/Framework/Interfaces/IJsonStoreModule.cs b/OpenSim/Region/Framework/Interfaces/IJsonStoreModule.cs index cc7885a..b40d24f 100644 --- a/OpenSim/Region/Framework/Interfaces/IJsonStoreModule.cs +++ b/OpenSim/Region/Framework/Interfaces/IJsonStoreModule.cs | |||
@@ -31,6 +31,16 @@ using OpenMetaverse; | |||
31 | 31 | ||
32 | namespace OpenSim.Region.Framework.Interfaces | 32 | namespace OpenSim.Region.Framework.Interfaces |
33 | { | 33 | { |
34 | // these could be expanded at some point to provide more type information | ||
35 | // for now value accounts for all base types | ||
36 | public enum JsonStoreNodeType | ||
37 | { | ||
38 | Undefined = 0, | ||
39 | Object = 1, | ||
40 | Array = 2, | ||
41 | Value = 3 | ||
42 | } | ||
43 | |||
34 | public delegate void TakeValueCallback(string s); | 44 | public delegate void TakeValueCallback(string s); |
35 | 45 | ||
36 | public interface IJsonStoreModule | 46 | public interface IJsonStoreModule |
@@ -38,13 +48,18 @@ namespace OpenSim.Region.Framework.Interfaces | |||
38 | bool AttachObjectStore(UUID objectID); | 48 | bool AttachObjectStore(UUID objectID); |
39 | bool CreateStore(string value, ref UUID result); | 49 | bool CreateStore(string value, ref UUID result); |
40 | bool DestroyStore(UUID storeID); | 50 | bool DestroyStore(UUID storeID); |
51 | |||
52 | JsonStoreNodeType GetPathType(UUID storeID, string path); | ||
41 | bool TestStore(UUID storeID); | 53 | bool TestStore(UUID storeID); |
42 | bool TestPath(UUID storeID, string path, bool useJson); | 54 | bool TestPath(UUID storeID, string path, bool useJson); |
55 | |||
43 | bool SetValue(UUID storeID, string path, string value, bool useJson); | 56 | bool SetValue(UUID storeID, string path, string value, bool useJson); |
44 | bool RemoveValue(UUID storeID, string path); | 57 | bool RemoveValue(UUID storeID, string path); |
45 | bool GetValue(UUID storeID, string path, bool useJson, out string value); | 58 | bool GetValue(UUID storeID, string path, bool useJson, out string value); |
46 | 59 | ||
47 | void TakeValue(UUID storeID, string path, bool useJson, TakeValueCallback cback); | 60 | void TakeValue(UUID storeID, string path, bool useJson, TakeValueCallback cback); |
48 | void ReadValue(UUID storeID, string path, bool useJson, TakeValueCallback cback); | 61 | void ReadValue(UUID storeID, string path, bool useJson, TakeValueCallback cback); |
62 | |||
63 | int GetArrayLength(UUID storeID, string path); | ||
49 | } | 64 | } |
50 | } | 65 | } |
diff --git a/OpenSim/Region/Framework/Interfaces/ISimulatorFeaturesModule.cs b/OpenSim/Region/Framework/Interfaces/ISimulatorFeaturesModule.cs index 8cef14e..6effcc1 100644 --- a/OpenSim/Region/Framework/Interfaces/ISimulatorFeaturesModule.cs +++ b/OpenSim/Region/Framework/Interfaces/ISimulatorFeaturesModule.cs | |||
@@ -26,18 +26,22 @@ | |||
26 | */ | 26 | */ |
27 | 27 | ||
28 | using System; | 28 | using System; |
29 | using OpenMetaverse; | ||
29 | using OpenMetaverse.StructuredData; | 30 | using OpenMetaverse.StructuredData; |
30 | 31 | ||
31 | namespace OpenSim.Region.Framework.Interfaces | 32 | namespace OpenSim.Region.Framework.Interfaces |
32 | { | 33 | { |
34 | public delegate void SimulatorFeaturesRequestDelegate(UUID agentID, ref OSDMap features); | ||
35 | |||
33 | /// <summary> | 36 | /// <summary> |
34 | /// Add remove or retrieve Simulator Features that will be given to a viewer via the SimulatorFeatures capability. | 37 | /// Add remove or retrieve Simulator Features that will be given to a viewer via the SimulatorFeatures capability. |
35 | /// </summary> | 38 | /// </summary> |
36 | public interface ISimulatorFeaturesModule | 39 | public interface ISimulatorFeaturesModule |
37 | { | 40 | { |
41 | event SimulatorFeaturesRequestDelegate OnSimulatorFeaturesRequest; | ||
38 | void AddFeature(string name, OSD value); | 42 | void AddFeature(string name, OSD value); |
39 | bool RemoveFeature(string name); | 43 | bool RemoveFeature(string name); |
40 | bool TryGetFeature(string name, out OSD value); | 44 | bool TryGetFeature(string name, out OSD value); |
41 | OSDMap GetFeatures(); | 45 | OSDMap GetFeatures(); |
42 | } | 46 | } |
43 | } \ No newline at end of file | 47 | } |
diff --git a/OpenSim/Region/Framework/Scenes/EventManager.cs b/OpenSim/Region/Framework/Scenes/EventManager.cs index 9ee1520..59d0148 100644 --- a/OpenSim/Region/Framework/Scenes/EventManager.cs +++ b/OpenSim/Region/Framework/Scenes/EventManager.cs | |||
@@ -791,6 +791,19 @@ namespace OpenSim.Region.Framework.Scenes | |||
791 | public delegate void ObjectBeingRemovedFromScene(SceneObjectGroup obj); | 791 | public delegate void ObjectBeingRemovedFromScene(SceneObjectGroup obj); |
792 | 792 | ||
793 | /// <summary> | 793 | /// <summary> |
794 | /// Triggered when an object is placed into the physical scene (PhysicsActor created). | ||
795 | /// </summary> | ||
796 | public event Action<SceneObjectPart> OnObjectAddedToPhysicalScene; | ||
797 | /// <summary> | ||
798 | /// Triggered when an object is removed from the physical scene (PhysicsActor destroyed). | ||
799 | /// </summary> | ||
800 | /// <remarks> | ||
801 | /// Note: this is triggered just before the PhysicsActor is removed from the | ||
802 | /// physics engine so the receiver can do any necessary cleanup before its destruction. | ||
803 | /// </remarks> | ||
804 | public event Action<SceneObjectPart> OnObjectRemovedFromPhysicalScene; | ||
805 | |||
806 | /// <summary> | ||
794 | /// Triggered when an object is removed from the scene. | 807 | /// Triggered when an object is removed from the scene. |
795 | /// </summary> | 808 | /// </summary> |
796 | /// <remarks> | 809 | /// <remarks> |
@@ -1516,6 +1529,48 @@ namespace OpenSim.Region.Framework.Scenes | |||
1516 | } | 1529 | } |
1517 | } | 1530 | } |
1518 | 1531 | ||
1532 | public void TriggerObjectAddedToPhysicalScene(SceneObjectPart obj) | ||
1533 | { | ||
1534 | Action<SceneObjectPart> handler = OnObjectAddedToPhysicalScene; | ||
1535 | if (handler != null) | ||
1536 | { | ||
1537 | foreach (Action<SceneObjectPart> d in handler.GetInvocationList()) | ||
1538 | { | ||
1539 | try | ||
1540 | { | ||
1541 | d(obj); | ||
1542 | } | ||
1543 | catch (Exception e) | ||
1544 | { | ||
1545 | m_log.ErrorFormat( | ||
1546 | "[EVENT MANAGER]: Delegate for TriggerObjectAddedToPhysicalScene failed - continuing. {0} {1}", | ||
1547 | e.Message, e.StackTrace); | ||
1548 | } | ||
1549 | } | ||
1550 | } | ||
1551 | } | ||
1552 | |||
1553 | public void TriggerObjectRemovedFromPhysicalScene(SceneObjectPart obj) | ||
1554 | { | ||
1555 | Action<SceneObjectPart> handler = OnObjectRemovedFromPhysicalScene; | ||
1556 | if (handler != null) | ||
1557 | { | ||
1558 | foreach (Action<SceneObjectPart> d in handler.GetInvocationList()) | ||
1559 | { | ||
1560 | try | ||
1561 | { | ||
1562 | d(obj); | ||
1563 | } | ||
1564 | catch (Exception e) | ||
1565 | { | ||
1566 | m_log.ErrorFormat( | ||
1567 | "[EVENT MANAGER]: Delegate for TriggerObjectRemovedFromPhysicalScene failed - continuing. {0} {1}", | ||
1568 | e.Message, e.StackTrace); | ||
1569 | } | ||
1570 | } | ||
1571 | } | ||
1572 | } | ||
1573 | |||
1519 | public void TriggerShutdown() | 1574 | public void TriggerShutdown() |
1520 | { | 1575 | { |
1521 | Action handlerShutdown = OnShutdown; | 1576 | Action handlerShutdown = OnShutdown; |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 9b29973..cce8b21 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -4316,6 +4316,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4316 | } | 4316 | } |
4317 | 4317 | ||
4318 | PhysActor = pa; | 4318 | PhysActor = pa; |
4319 | ParentGroup.Scene.EventManager.TriggerObjectAddedToPhysicalScene(this); | ||
4319 | } | 4320 | } |
4320 | 4321 | ||
4321 | /// <summary> | 4322 | /// <summary> |
@@ -4328,6 +4329,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4328 | /// </remarks> | 4329 | /// </remarks> |
4329 | public void RemoveFromPhysics() | 4330 | public void RemoveFromPhysics() |
4330 | { | 4331 | { |
4332 | ParentGroup.Scene.EventManager.TriggerObjectRemovedFromPhysicalScene(this); | ||
4331 | ParentGroup.Scene.PhysicsScene.RemovePrim(PhysActor); | 4333 | ParentGroup.Scene.PhysicsScene.RemovePrim(PhysActor); |
4332 | PhysActor = null; | 4334 | PhysActor = null; |
4333 | } | 4335 | } |