diff options
author | Sean McNamara | 2011-04-10 18:28:54 -0400 |
---|---|---|
committer | Sean McNamara | 2011-04-10 18:28:54 -0400 |
commit | 9c0f3c73b1fd56ac145e866af0316a3285ddb689 (patch) | |
tree | 03541a853c2ecf5829ac296537b14d4553ad4b2e /OpenSim/Region/ScriptEngine/Shared/Api/Implementation | |
parent | Merge git://opensimulator.org/git/opensim (diff) | |
parent | minor: remove mono compiler warnings (diff) | |
download | opensim-SC_OLD-9c0f3c73b1fd56ac145e866af0316a3285ddb689.zip opensim-SC_OLD-9c0f3c73b1fd56ac145e866af0316a3285ddb689.tar.gz opensim-SC_OLD-9c0f3c73b1fd56ac145e866af0316a3285ddb689.tar.bz2 opensim-SC_OLD-9c0f3c73b1fd56ac145e866af0316a3285ddb689.tar.xz |
Merge git://opensimulator.org/git/opensim
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Api/Implementation')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 135 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs | 26 |
2 files changed, 109 insertions, 52 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index 72ee495..c16a985 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -81,7 +81,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
81 | /// </summary> | 81 | /// </summary> |
82 | public class LSL_Api : MarshalByRefObject, ILSL_Api, IScriptApi | 82 | public class LSL_Api : MarshalByRefObject, ILSL_Api, IScriptApi |
83 | { | 83 | { |
84 | //private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | 84 | private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); |
85 | protected IScriptEngine m_ScriptEngine; | 85 | protected IScriptEngine m_ScriptEngine; |
86 | protected SceneObjectPart m_host; | 86 | protected SceneObjectPart m_host; |
87 | protected uint m_localID; | 87 | protected uint m_localID; |
@@ -9835,63 +9835,42 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
9835 | public LSL_Integer llGetParcelPrimCount(LSL_Vector pos, int category, int sim_wide) | 9835 | public LSL_Integer llGetParcelPrimCount(LSL_Vector pos, int category, int sim_wide) |
9836 | { | 9836 | { |
9837 | m_host.AddScriptLPS(1); | 9837 | m_host.AddScriptLPS(1); |
9838 | |||
9839 | ILandObject lo = World.LandChannel.GetLandObject((float)pos.x, (float)pos.y); | ||
9838 | 9840 | ||
9839 | LandData land = World.GetLandData((float)pos.x, (float)pos.y); | 9841 | if (lo == null) |
9840 | |||
9841 | if (land == null) | ||
9842 | { | ||
9843 | return 0; | 9842 | return 0; |
9844 | } | 9843 | |
9844 | IPrimCounts pc = lo.PrimCounts; | ||
9845 | 9845 | ||
9846 | else | 9846 | if (sim_wide != ScriptBaseClass.FALSE) |
9847 | { | 9847 | { |
9848 | if (sim_wide != 0) | 9848 | if (category == ScriptBaseClass.PARCEL_COUNT_TOTAL) |
9849 | { | 9849 | { |
9850 | if (category == 0) | 9850 | return pc.Simulator; |
9851 | { | ||
9852 | return land.SimwidePrims; | ||
9853 | } | ||
9854 | |||
9855 | else | ||
9856 | { | ||
9857 | //public int simwideArea = 0; | ||
9858 | return 0; | ||
9859 | } | ||
9860 | } | 9851 | } |
9861 | |||
9862 | else | 9852 | else |
9863 | { | 9853 | { |
9864 | if (category == 0)//Total Prims | 9854 | // counts not implemented yet |
9865 | { | 9855 | return 0; |
9866 | return 0;//land. | ||
9867 | } | ||
9868 | |||
9869 | else if (category == 1)//Owner Prims | ||
9870 | { | ||
9871 | return land.OwnerPrims; | ||
9872 | } | ||
9873 | |||
9874 | else if (category == 2)//Group Prims | ||
9875 | { | ||
9876 | return land.GroupPrims; | ||
9877 | } | ||
9878 | |||
9879 | else if (category == 3)//Other Prims | ||
9880 | { | ||
9881 | return land.OtherPrims; | ||
9882 | } | ||
9883 | |||
9884 | else if (category == 4)//Selected | ||
9885 | { | ||
9886 | return land.SelectedPrims; | ||
9887 | } | ||
9888 | |||
9889 | else if (category == 5)//Temp | ||
9890 | { | ||
9891 | return 0;//land. | ||
9892 | } | ||
9893 | } | 9856 | } |
9894 | } | 9857 | } |
9858 | else | ||
9859 | { | ||
9860 | if (category == ScriptBaseClass.PARCEL_COUNT_TOTAL) | ||
9861 | return pc.Total; | ||
9862 | else if (category == ScriptBaseClass.PARCEL_COUNT_OWNER) | ||
9863 | return pc.Owner; | ||
9864 | else if (category == ScriptBaseClass.PARCEL_COUNT_GROUP) | ||
9865 | return pc.Group; | ||
9866 | else if (category == ScriptBaseClass.PARCEL_COUNT_OTHER) | ||
9867 | return pc.Others; | ||
9868 | else if (category == ScriptBaseClass.PARCEL_COUNT_SELECTED) | ||
9869 | return pc.Selected; | ||
9870 | else if (category == ScriptBaseClass.PARCEL_COUNT_TEMP) | ||
9871 | return 0; // counts not implemented yet | ||
9872 | } | ||
9873 | |||
9895 | return 0; | 9874 | return 0; |
9896 | } | 9875 | } |
9897 | 9876 | ||
@@ -10278,6 +10257,66 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
10278 | 10257 | ||
10279 | return GetLinkPrimitiveParams(obj, rules); | 10258 | return GetLinkPrimitiveParams(obj, rules); |
10280 | } | 10259 | } |
10260 | |||
10261 | public void print(string str) | ||
10262 | { | ||
10263 | // yes, this is a real LSL function. See: http://wiki.secondlife.com/wiki/Print | ||
10264 | IOSSL_Api ossl = (IOSSL_Api)m_ScriptEngine.GetApi(m_itemID, "OSSL"); | ||
10265 | if (ossl != null) | ||
10266 | { | ||
10267 | ossl.CheckThreatLevel(ThreatLevel.High, "print"); | ||
10268 | m_log.Info("LSL print():" + str); | ||
10269 | } | ||
10270 | } | ||
10271 | |||
10272 | private string Name2Username(string name) | ||
10273 | { | ||
10274 | string[] parts = name.Split(new char[] {' '}); | ||
10275 | if (parts.Length < 2) | ||
10276 | return name.ToLower(); | ||
10277 | if (parts[1] == "Resident") | ||
10278 | return parts[0].ToLower(); | ||
10279 | |||
10280 | return name.Replace(" ", ".").ToLower(); | ||
10281 | } | ||
10282 | |||
10283 | public LSL_String llGetUsername(string id) | ||
10284 | { | ||
10285 | return Name2Username(llKey2Name(id)); | ||
10286 | } | ||
10287 | |||
10288 | public LSL_String llRequestUsername(string id) | ||
10289 | { | ||
10290 | UUID rq = UUID.Random(); | ||
10291 | |||
10292 | UUID tid = AsyncCommands. | ||
10293 | DataserverPlugin.RegisterRequest(m_localID, | ||
10294 | m_itemID, rq.ToString()); | ||
10295 | |||
10296 | AsyncCommands. | ||
10297 | DataserverPlugin.DataserverReply(rq.ToString(), Name2Username(llKey2Name(id))); | ||
10298 | |||
10299 | return rq.ToString(); | ||
10300 | } | ||
10301 | |||
10302 | public LSL_String llGetDisplayName(string id) | ||
10303 | { | ||
10304 | return llKey2Name(id); | ||
10305 | } | ||
10306 | |||
10307 | public LSL_String llRequestDisplayName(string id) | ||
10308 | { | ||
10309 | UUID rq = UUID.Random(); | ||
10310 | |||
10311 | UUID tid = AsyncCommands. | ||
10312 | DataserverPlugin.RegisterRequest(m_localID, | ||
10313 | m_itemID, rq.ToString()); | ||
10314 | |||
10315 | AsyncCommands. | ||
10316 | DataserverPlugin.DataserverReply(rq.ToString(), llKey2Name(id)); | ||
10317 | |||
10318 | return rq.ToString(); | ||
10319 | } | ||
10281 | } | 10320 | } |
10282 | 10321 | ||
10283 | public class NotecardCache | 10322 | public class NotecardCache |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs index fefbb35..47c7915 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs | |||
@@ -50,6 +50,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins | |||
50 | private Object SenseLock = new Object(); | 50 | private Object SenseLock = new Object(); |
51 | 51 | ||
52 | private const int AGENT = 1; | 52 | private const int AGENT = 1; |
53 | private const int AGENT_BY_USERNAME = 0x10; | ||
53 | private const int ACTIVE = 2; | 54 | private const int ACTIVE = 2; |
54 | private const int PASSIVE = 4; | 55 | private const int PASSIVE = 4; |
55 | private const int SCRIPTED = 8; | 56 | private const int SCRIPTED = 8; |
@@ -202,7 +203,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins | |||
202 | List<SensedEntity> sensedEntities = new List<SensedEntity>(); | 203 | List<SensedEntity> sensedEntities = new List<SensedEntity>(); |
203 | 204 | ||
204 | // Is the sensor type is AGENT and not SCRIPTED then include agents | 205 | // Is the sensor type is AGENT and not SCRIPTED then include agents |
205 | if ((ts.type & AGENT) != 0 && (ts.type & SCRIPTED) == 0) | 206 | if ((ts.type & (AGENT | AGENT_BY_USERNAME)) != 0 && (ts.type & SCRIPTED) == 0) |
206 | { | 207 | { |
207 | sensedEntities.AddRange(doAgentSensor(ts)); | 208 | sensedEntities.AddRange(doAgentSensor(ts)); |
208 | } | 209 | } |
@@ -493,9 +494,26 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins | |||
493 | { | 494 | { |
494 | ScenePresence sp; | 495 | ScenePresence sp; |
495 | // Try lookup by name will return if/when found | 496 | // Try lookup by name will return if/when found |
496 | if (!m_CmdManager.m_ScriptEngine.World.TryGetAvatarByName(ts.name, out sp)) | 497 | if (((ts.type & AGENT) != 0) && m_CmdManager.m_ScriptEngine.World.TryGetAvatarByName(ts.name, out sp)) |
497 | return sensedEntities; | 498 | senseEntity(sp); |
498 | senseEntity(sp); | 499 | if ((ts.type & AGENT_BY_USERNAME) != 0) |
500 | { | ||
501 | m_CmdManager.m_ScriptEngine.World.ForEachScenePresence( | ||
502 | delegate (ScenePresence ssp) | ||
503 | { | ||
504 | if (ssp.Lastname == "Resident") | ||
505 | { | ||
506 | if (ssp.Firstname.ToLower() == ts.name) | ||
507 | senseEntity(ssp); | ||
508 | return; | ||
509 | } | ||
510 | if (ssp.Name.Replace(" ", ".").ToLower() == ts.name) | ||
511 | senseEntity(ssp); | ||
512 | } | ||
513 | ); | ||
514 | } | ||
515 | |||
516 | return sensedEntities; | ||
499 | } | 517 | } |
500 | else | 518 | else |
501 | { | 519 | { |