diff options
author | onefang | 2019-09-11 16:36:50 +1000 |
---|---|---|
committer | onefang | 2019-09-11 16:36:50 +1000 |
commit | 50cd1ffd32f69228e566f2b0b89f86ea0d9fe489 (patch) | |
tree | 52f2ab0c04f1a5d7d6ac5dc872981b4b156447e7 /OpenSim/Region/ScriptEngine/Shared/Helpers.cs | |
parent | Renamed branch to SledjChisl. (diff) | |
parent | Bump to release flavour, build 0. (diff) | |
download | opensim-SC_OLD-50cd1ffd32f69228e566f2b0b89f86ea0d9fe489.zip opensim-SC_OLD-50cd1ffd32f69228e566f2b0b89f86ea0d9fe489.tar.gz opensim-SC_OLD-50cd1ffd32f69228e566f2b0b89f86ea0d9fe489.tar.bz2 opensim-SC_OLD-50cd1ffd32f69228e566f2b0b89f86ea0d9fe489.tar.xz |
Merge branch 'SledjChisl'
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Helpers.cs')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Helpers.cs | 91 |
1 files changed, 70 insertions, 21 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Helpers.cs b/OpenSim/Region/ScriptEngine/Shared/Helpers.cs index e02d35e..7db6b6d 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Helpers.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Helpers.cs | |||
@@ -35,6 +35,7 @@ using OpenMetaverse; | |||
35 | using OpenSim.Framework; | 35 | using OpenSim.Framework; |
36 | using OpenSim.Region.CoreModules; | 36 | using OpenSim.Region.CoreModules; |
37 | using OpenSim.Region.Framework.Scenes; | 37 | using OpenSim.Region.Framework.Scenes; |
38 | using OpenSim.Services.Interfaces; | ||
38 | using OpenSim.Region.Framework.Interfaces; | 39 | using OpenSim.Region.Framework.Interfaces; |
39 | 40 | ||
40 | namespace OpenSim.Region.ScriptEngine.Shared | 41 | namespace OpenSim.Region.ScriptEngine.Shared |
@@ -47,7 +48,7 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
47 | } | 48 | } |
48 | 49 | ||
49 | protected EventAbortException( | 50 | protected EventAbortException( |
50 | SerializationInfo info, | 51 | SerializationInfo info, |
51 | StreamingContext context) | 52 | StreamingContext context) |
52 | { | 53 | { |
53 | } | 54 | } |
@@ -61,7 +62,7 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
61 | } | 62 | } |
62 | 63 | ||
63 | protected SelfDeleteException( | 64 | protected SelfDeleteException( |
64 | SerializationInfo info, | 65 | SerializationInfo info, |
65 | StreamingContext context) | 66 | StreamingContext context) |
66 | { | 67 | { |
67 | } | 68 | } |
@@ -75,14 +76,14 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
75 | } | 76 | } |
76 | 77 | ||
77 | protected ScriptDeleteException( | 78 | protected ScriptDeleteException( |
78 | SerializationInfo info, | 79 | SerializationInfo info, |
79 | StreamingContext context) | 80 | StreamingContext context) |
80 | { | 81 | { |
81 | } | 82 | } |
82 | } | 83 | } |
83 | 84 | ||
84 | /// <summary> | 85 | /// <summary> |
85 | /// Used to signal when the script is stopping in co-operation with the script engine | 86 | /// Used to signal when the script is stopping in co-operation with the script engine |
86 | /// (instead of through Thread.Abort()). | 87 | /// (instead of through Thread.Abort()). |
87 | /// </summary> | 88 | /// </summary> |
88 | [Serializable] | 89 | [Serializable] |
@@ -93,7 +94,7 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
93 | } | 94 | } |
94 | 95 | ||
95 | protected ScriptCoopStopException( | 96 | protected ScriptCoopStopException( |
96 | SerializationInfo info, | 97 | SerializationInfo info, |
97 | StreamingContext context) | 98 | StreamingContext context) |
98 | { | 99 | { |
99 | } | 100 | } |
@@ -198,6 +199,7 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
198 | return; | 199 | return; |
199 | 200 | ||
200 | Name = presence.Firstname + " " + presence.Lastname; | 201 | Name = presence.Firstname + " " + presence.Lastname; |
202 | |||
201 | Owner = Key; | 203 | Owner = Key; |
202 | Position = new LSL_Types.Vector3(presence.AbsolutePosition); | 204 | Position = new LSL_Types.Vector3(presence.AbsolutePosition); |
203 | Rotation = new LSL_Types.Quaternion( | 205 | Rotation = new LSL_Types.Quaternion( |
@@ -207,22 +209,9 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
207 | presence.Rotation.W); | 209 | presence.Rotation.W); |
208 | Velocity = new LSL_Types.Vector3(presence.Velocity); | 210 | Velocity = new LSL_Types.Vector3(presence.Velocity); |
209 | 211 | ||
210 | if (presence.PresenceType != PresenceType.Npc) | 212 | Type = 0x01; // Avatar |
211 | { | 213 | if (presence.PresenceType == PresenceType.Npc) |
212 | Type = AGENT; | 214 | Type = 0x20; |
213 | } | ||
214 | else | ||
215 | { | ||
216 | Type = OS_NPC; | ||
217 | |||
218 | INPCModule npcModule = scene.RequestModuleInterface<INPCModule>(); | ||
219 | INPC npcData = npcModule.GetNPC(presence.UUID, presence.Scene); | ||
220 | |||
221 | if (npcData.SenseAsAgent) | ||
222 | { | ||
223 | Type |= AGENT; | ||
224 | } | ||
225 | } | ||
226 | 215 | ||
227 | if (presence.Velocity != Vector3.Zero) | 216 | if (presence.Velocity != Vector3.Zero) |
228 | Type |= ACTIVE; | 217 | Type |= ACTIVE; |
@@ -260,6 +249,66 @@ namespace OpenSim.Region.ScriptEngine.Shared | |||
260 | 249 | ||
261 | Velocity = new LSL_Types.Vector3(part.Velocity); | 250 | Velocity = new LSL_Types.Vector3(part.Velocity); |
262 | } | 251 | } |
252 | |||
253 | public void Populate(Scene scene, DetectedObject obj) | ||
254 | { | ||
255 | if(obj.keyUUID == UUID.Zero) // land | ||
256 | { | ||
257 | Position = new LSL_Types.Vector3(obj.posVector); | ||
258 | Rotation.s = 1.0; | ||
259 | return; | ||
260 | } | ||
261 | |||
262 | if((obj.colliderType & 0x21) != 0) // avatar or npc | ||
263 | { | ||
264 | ScenePresence presence = scene.GetScenePresence(obj.keyUUID); | ||
265 | if (presence == null) | ||
266 | return; | ||
267 | |||
268 | Name = obj.nameStr; | ||
269 | Key = obj.keyUUID; | ||
270 | Owner = obj.ownerUUID; | ||
271 | Group = obj.groupUUID; | ||
272 | Position = new LSL_Types.Vector3(obj.posVector); | ||
273 | Rotation = new LSL_Types.Quaternion(obj.rotQuat); | ||
274 | Velocity = new LSL_Types.Vector3(obj.velVector); | ||
275 | LinkNum = obj.linkNumber; | ||
276 | Type = obj.colliderType; | ||
277 | return; | ||
278 | } | ||
279 | |||
280 | SceneObjectPart part = scene.GetSceneObjectPart(obj.keyUUID); | ||
281 | if(part == null) | ||
282 | return; | ||
283 | |||
284 | Name = obj.nameStr; | ||
285 | Key = obj.keyUUID; | ||
286 | Owner = obj.ownerUUID; | ||
287 | Group = obj.groupUUID; | ||
288 | Position = new LSL_Types.Vector3(obj.posVector); | ||
289 | Rotation = new LSL_Types.Quaternion(obj.rotQuat); | ||
290 | Velocity = new LSL_Types.Vector3(obj.velVector); | ||
291 | LinkNum = obj.linkNumber; | ||
292 | if(obj.velVector == Vector3.Zero) | ||
293 | Type = 4; | ||
294 | else | ||
295 | Type = 2; | ||
296 | |||
297 | part = part.ParentGroup.RootPart; | ||
298 | foreach (SceneObjectPart p in part.ParentGroup.Parts) | ||
299 | { | ||
300 | if (p.Inventory.ContainsScripts()) | ||
301 | { | ||
302 | // at sl a physical prim is active also if has active scripts | ||
303 | // assuming all scripts are in run state to save time | ||
304 | if((part.Flags & PrimFlags.Physics) != 0 ) | ||
305 | Type = 10; // script + active | ||
306 | else | ||
307 | Type |= SCRIPTED; // Scripted | ||
308 | break; | ||
309 | } | ||
310 | } | ||
311 | } | ||
263 | } | 312 | } |
264 | 313 | ||
265 | /// <summary> | 314 | /// <summary> |