diff options
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Api')
7 files changed, 87 insertions, 10 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs index 9d97cb2..ee32755 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/AsyncCommandManager.cs | |||
@@ -236,7 +236,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
236 | iHttpReq.StopHttpRequest(localID, itemID); | 236 | iHttpReq.StopHttpRequest(localID, itemID); |
237 | 237 | ||
238 | IWorldComm comms = engine.World.RequestModuleInterface<IWorldComm>(); | 238 | IWorldComm comms = engine.World.RequestModuleInterface<IWorldComm>(); |
239 | comms.DeleteListener(itemID); | 239 | if (comms != null) |
240 | comms.DeleteListener(itemID); | ||
240 | 241 | ||
241 | IXMLRPC xmlrpc = engine.World.RequestModuleInterface<IXMLRPC>(); | 242 | IXMLRPC xmlrpc = engine.World.RequestModuleInterface<IXMLRPC>(); |
242 | xmlrpc.DeleteChannels(itemID); | 243 | xmlrpc.DeleteChannels(itemID); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 9c62775..d235bac 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -734,7 +734,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
734 | ChatTypeEnum.Whisper, channelID, m_host.ParentGroup.RootPart.AbsolutePosition, m_host.Name, m_host.UUID, false); | 734 | ChatTypeEnum.Whisper, channelID, m_host.ParentGroup.RootPart.AbsolutePosition, m_host.Name, m_host.UUID, false); |
735 | 735 | ||
736 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); | 736 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); |
737 | wComm.DeliverMessage(ChatTypeEnum.Whisper, channelID, m_host.Name, m_host.UUID, text); | 737 | if (wComm != null) |
738 | wComm.DeliverMessage(ChatTypeEnum.Whisper, channelID, m_host.Name, m_host.UUID, text); | ||
738 | } | 739 | } |
739 | 740 | ||
740 | public void llSay(int channelID, string text) | 741 | public void llSay(int channelID, string text) |
@@ -754,7 +755,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
754 | ChatTypeEnum.Say, channelID, m_host.ParentGroup.RootPart.AbsolutePosition, m_host.Name, m_host.UUID, false); | 755 | ChatTypeEnum.Say, channelID, m_host.ParentGroup.RootPart.AbsolutePosition, m_host.Name, m_host.UUID, false); |
755 | 756 | ||
756 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); | 757 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); |
757 | wComm.DeliverMessage(ChatTypeEnum.Say, channelID, m_host.Name, m_host.UUID, text); | 758 | if (wComm != null) |
759 | wComm.DeliverMessage(ChatTypeEnum.Say, channelID, m_host.Name, m_host.UUID, text); | ||
758 | } | 760 | } |
759 | } | 761 | } |
760 | 762 | ||
@@ -769,7 +771,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
769 | ChatTypeEnum.Shout, channelID, m_host.ParentGroup.RootPart.AbsolutePosition, m_host.Name, m_host.UUID, true); | 771 | ChatTypeEnum.Shout, channelID, m_host.ParentGroup.RootPart.AbsolutePosition, m_host.Name, m_host.UUID, true); |
770 | 772 | ||
771 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); | 773 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); |
772 | wComm.DeliverMessage(ChatTypeEnum.Shout, channelID, m_host.Name, m_host.UUID, text); | 774 | if (wComm != null) |
775 | wComm.DeliverMessage(ChatTypeEnum.Shout, channelID, m_host.Name, m_host.UUID, text); | ||
773 | } | 776 | } |
774 | 777 | ||
775 | public void llRegionSay(int channelID, string text) | 778 | public void llRegionSay(int channelID, string text) |
@@ -786,7 +789,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
786 | m_host.AddScriptLPS(1); | 789 | m_host.AddScriptLPS(1); |
787 | 790 | ||
788 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); | 791 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); |
789 | wComm.DeliverMessage(ChatTypeEnum.Region, channelID, m_host.Name, m_host.UUID, text); | 792 | if (wComm != null) |
793 | wComm.DeliverMessage(ChatTypeEnum.Region, channelID, m_host.Name, m_host.UUID, text); | ||
790 | } | 794 | } |
791 | 795 | ||
792 | public LSL_Integer llListen(int channelID, string name, string ID, string msg) | 796 | public LSL_Integer llListen(int channelID, string name, string ID, string msg) |
@@ -795,21 +799,26 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
795 | UUID keyID; | 799 | UUID keyID; |
796 | UUID.TryParse(ID, out keyID); | 800 | UUID.TryParse(ID, out keyID); |
797 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); | 801 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); |
798 | return wComm.Listen(m_localID, m_itemID, m_host.UUID, channelID, name, keyID, msg); | 802 | if (wComm != null) |
803 | return wComm.Listen(m_localID, m_itemID, m_host.UUID, channelID, name, keyID, msg); | ||
804 | else | ||
805 | return -1; | ||
799 | } | 806 | } |
800 | 807 | ||
801 | public void llListenControl(int number, int active) | 808 | public void llListenControl(int number, int active) |
802 | { | 809 | { |
803 | m_host.AddScriptLPS(1); | 810 | m_host.AddScriptLPS(1); |
804 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); | 811 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); |
805 | wComm.ListenControl(m_itemID, number, active); | 812 | if (wComm != null) |
813 | wComm.ListenControl(m_itemID, number, active); | ||
806 | } | 814 | } |
807 | 815 | ||
808 | public void llListenRemove(int number) | 816 | public void llListenRemove(int number) |
809 | { | 817 | { |
810 | m_host.AddScriptLPS(1); | 818 | m_host.AddScriptLPS(1); |
811 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); | 819 | IWorldComm wComm = m_ScriptEngine.World.RequestModuleInterface<IWorldComm>(); |
812 | wComm.ListenRemove(m_itemID, number); | 820 | if (wComm != null) |
821 | wComm.ListenRemove(m_itemID, number); | ||
813 | } | 822 | } |
814 | 823 | ||
815 | public void llSensor(string name, string id, int type, double range, double arc) | 824 | public void llSensor(string name, string id, int type, double range, double arc) |
@@ -1037,7 +1046,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
1037 | return detectedParams.TouchUV; | 1046 | return detectedParams.TouchUV; |
1038 | } | 1047 | } |
1039 | 1048 | ||
1040 | public void llDie() | 1049 | public virtual void llDie() |
1041 | { | 1050 | { |
1042 | m_host.AddScriptLPS(1); | 1051 | m_host.AddScriptLPS(1); |
1043 | throw new SelfDeleteException(); | 1052 | throw new SelfDeleteException(); |
@@ -1987,6 +1996,18 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
1987 | 1996 | ||
1988 | //KF: Do NOT use this next line if using ODE physics engine. This need a switch based on .ini Phys Engine type | 1997 | //KF: Do NOT use this next line if using ODE physics engine. This need a switch based on .ini Phys Engine type |
1989 | // part.ParentGroup.AbsolutePosition = part.ParentGroup.AbsolutePosition; | 1998 | // part.ParentGroup.AbsolutePosition = part.ParentGroup.AbsolutePosition; |
1999 | |||
2000 | // So, after thinking about this for a bit, the issue with the part.ParentGroup.AbsolutePosition = part.ParentGroup.AbsolutePosition line | ||
2001 | // is it isn't compatible with vehicles because it causes the vehicle body to have to be broken down and rebuilt | ||
2002 | // It's perfectly okay when the object is not an active physical body though. | ||
2003 | // So, part.ParentGroup.ResetChildPrimPhysicsPositions(); does the thing that Kitto is warning against | ||
2004 | // but only if the object is not physial and active. This is important for rotating doors. | ||
2005 | // without the absoluteposition = absoluteposition happening, the doors do not move in the physics | ||
2006 | // scene | ||
2007 | if (part.PhysActor != null && !part.PhysActor.IsPhysical) | ||
2008 | { | ||
2009 | part.ParentGroup.ResetChildPrimPhysicsPositions(); | ||
2010 | } | ||
1990 | } | 2011 | } |
1991 | 2012 | ||
1992 | /// <summary> | 2013 | /// <summary> |
@@ -5772,6 +5793,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
5772 | m_host.AddScriptLPS(1); | 5793 | m_host.AddScriptLPS(1); |
5773 | return World.SimulatorFPS; | 5794 | return World.SimulatorFPS; |
5774 | } | 5795 | } |
5796 | |||
5775 | 5797 | ||
5776 | /* particle system rules should be coming into this routine as doubles, that is | 5798 | /* particle system rules should be coming into this routine as doubles, that is |
5777 | rule[0] should be an integer from this list and rule[1] should be the arg | 5799 | rule[0] should be an integer from this list and rule[1] should be the arg |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index e72fa70..5501679 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | |||
@@ -1948,5 +1948,27 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
1948 | 1948 | ||
1949 | return key.ToString(); | 1949 | return key.ToString(); |
1950 | } | 1950 | } |
1951 | |||
1952 | /// <summary> | ||
1953 | /// Return information regarding various simulator statistics (sim fps, physics fps, time | ||
1954 | /// dilation, total number of prims, total number of active scripts, script lps, various | ||
1955 | /// timing data, packets in/out, etc. Basically much the information that's shown in the | ||
1956 | /// client's Statistics Bar (Ctrl-Shift-1) | ||
1957 | /// </summary> | ||
1958 | /// <returns>List of floats</returns> | ||
1959 | public LSL_List osGetRegionStats() | ||
1960 | { | ||
1961 | CheckThreatLevel(ThreatLevel.Moderate, "osGetRegionStats"); | ||
1962 | m_host.AddScriptLPS(1); | ||
1963 | LSL_List ret = new LSL_List(); | ||
1964 | float[] stats = World.SimulatorStats; | ||
1965 | |||
1966 | for (int i = 0; i < 21; i++) | ||
1967 | { | ||
1968 | ret.Add(new LSL_Float( stats[i] )); | ||
1969 | } | ||
1970 | return ret; | ||
1971 | } | ||
1972 | |||
1951 | } | 1973 | } |
1952 | } | 1974 | } |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs index 0716d45..eeb59d9 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/Timer.cs | |||
@@ -166,7 +166,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins | |||
166 | ts.next = DateTime.Now.Ticks + (long)data[idx+1]; | 166 | ts.next = DateTime.Now.Ticks + (long)data[idx+1]; |
167 | idx += 2; | 167 | idx += 2; |
168 | 168 | ||
169 | Timers.Add(MakeTimerKey(localID,itemID), ts); | 169 | lock (TimerListLock) |
170 | { | ||
171 | Timers.Add(MakeTimerKey(localID, itemID), ts); | ||
172 | } | ||
170 | } | 173 | } |
171 | } | 174 | } |
172 | } | 175 | } |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs index 470946a..0b0dc00 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs | |||
@@ -162,5 +162,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces | |||
162 | 162 | ||
163 | key osGetMapTexture(); | 163 | key osGetMapTexture(); |
164 | key osGetRegionMapTexture(string regionName); | 164 | key osGetRegionMapTexture(string regionName); |
165 | LSL_List osGetRegionStats(); | ||
165 | } | 166 | } |
166 | } | 167 | } |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs index 753ca55..acff8fb 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/LSL_Constants.cs | |||
@@ -515,6 +515,29 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
515 | public const string TEXTURE_PLYWOOD = "89556747-24cb-43ed-920b-47caed15465f"; | 515 | public const string TEXTURE_PLYWOOD = "89556747-24cb-43ed-920b-47caed15465f"; |
516 | public const string TEXTURE_TRANSPARENT = "8dcd4a48-2d37-4909-9f78-f7a9eb4ef903"; | 516 | public const string TEXTURE_TRANSPARENT = "8dcd4a48-2d37-4909-9f78-f7a9eb4ef903"; |
517 | public const string TEXTURE_MEDIA = "8b5fec65-8d8d-9dc5-cda8-8fdf2716e361"; | 517 | public const string TEXTURE_MEDIA = "8b5fec65-8d8d-9dc5-cda8-8fdf2716e361"; |
518 | |||
519 | // Constants for osGetRegionStats | ||
520 | public const int STATS_TIME_DILATION = 0; | ||
521 | public const int STATS_SIM_FPS = 1; | ||
522 | public const int STATS_PHYSICS_FPS = 2; | ||
523 | public const int STATS_AGENT_UPDATES = 3; | ||
524 | public const int STATS_ROOT_AGENTS = 4; | ||
525 | public const int STATS_CHILD_AGENTS = 5; | ||
526 | public const int STATS_TOTAL_PRIMS = 6; | ||
527 | public const int STATS_ACTIVE_PRIMS = 7; | ||
528 | public const int STATS_FRAME_MS = 8; | ||
529 | public const int STATS_NET_MS = 9; | ||
530 | public const int STATS_PHYSICS_MS = 10; | ||
531 | public const int STATS_IMAGE_MS = 11; | ||
532 | public const int STATS_OTHER_MS = 12; | ||
533 | public const int STATS_IN_PACKETS_PER_SECOND = 13; | ||
534 | public const int STATS_OUT_PACKETS_PER_SECOND = 14; | ||
535 | public const int STATS_UNACKED_BYTES = 15; | ||
536 | public const int STATS_AGENT_MS = 16; | ||
537 | public const int STATS_PENDING_DOWNLOADS = 17; | ||
538 | public const int STATS_PENDING_UPLOADS = 18; | ||
539 | public const int STATS_ACTIVE_SCRIPTS = 19; | ||
540 | public const int STATS_SCRIPT_LPS = 20; | ||
518 | 541 | ||
519 | } | 542 | } |
520 | } | 543 | } |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs index 6b88834..519463e 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs | |||
@@ -632,5 +632,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
632 | { | 632 | { |
633 | return m_OSSL_Functions.osGetRegionMapTexture(regionName); | 633 | return m_OSSL_Functions.osGetRegionMapTexture(regionName); |
634 | } | 634 | } |
635 | |||
636 | public LSL_List osGetRegionStats() | ||
637 | { | ||
638 | return m_OSSL_Functions.osGetRegionStats(); | ||
639 | } | ||
635 | } | 640 | } |
636 | } | 641 | } |