diff options
author | Charles Krinke | 2008-12-20 21:36:42 +0000 |
---|---|---|
committer | Charles Krinke | 2008-12-20 21:36:42 +0000 |
commit | 62dd67b8b8a7eb441d57f2b854444fbc5c4767d3 (patch) | |
tree | b6c9f1123ae69ed2c6d67a4e939168b9140acb55 /OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | |
parent | Mantis#2881. Thank you kindly, SirKimba for a patch that: (diff) | |
download | opensim-SC-62dd67b8b8a7eb441d57f2b854444fbc5c4767d3.zip opensim-SC-62dd67b8b8a7eb441d57f2b854444fbc5c4767d3.tar.gz opensim-SC-62dd67b8b8a7eb441d57f2b854444fbc5c4767d3.tar.bz2 opensim-SC-62dd67b8b8a7eb441d57f2b854444fbc5c4767d3.tar.xz |
Mantis#2796. Thank you kindly, Gerhard for a patch that addresses:
On a call of llVolumeDetect(1) (or any other number !=0) volume
detection is enabled. Together with VD, the phantom flag is set to the GUI.
On a call of llVolumeDetect(0), vd detection is switched of again,
also the phantom state is removed. On a call to llSetState(STATE_PHANTOM,
false) while VD is active, also VD is switched off. The same is true for
unchecking the phantom flag via GUI. This allows to take back VD without
the need to script just by removing the phantom flag.
Things missing in this patch: persistance of the volume-detection flag.
This needs more discussion and will be included in another patch soon.
Diffstat (limited to 'OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs')
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 5456282..f4ccc46 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | |||
@@ -1431,21 +1431,45 @@ namespace OpenSim.Region.Environment.Scenes | |||
1431 | { | 1431 | { |
1432 | bool IsTemporary = ((RootPart.Flags & PrimFlags.TemporaryOnRez) != 0); | 1432 | bool IsTemporary = ((RootPart.Flags & PrimFlags.TemporaryOnRez) != 0); |
1433 | bool IsPhantom = ((RootPart.Flags & PrimFlags.Phantom) != 0); | 1433 | bool IsPhantom = ((RootPart.Flags & PrimFlags.Phantom) != 0); |
1434 | UpdatePrimFlags(RootPart.LocalId, UsePhysics, IsTemporary, IsPhantom); | 1434 | bool IsVolumeDetect = RootPart.VolumeDetectActive; |
1435 | UpdatePrimFlags(RootPart.LocalId, UsePhysics, IsTemporary, IsPhantom, IsVolumeDetect); | ||
1435 | } | 1436 | } |
1436 | 1437 | ||
1437 | public void ScriptSetTemporaryStatus(bool TemporaryStatus) | 1438 | public void ScriptSetTemporaryStatus(bool TemporaryStatus) |
1438 | { | 1439 | { |
1439 | bool UsePhysics = ((RootPart.Flags & PrimFlags.Physics) != 0); | 1440 | bool UsePhysics = ((RootPart.Flags & PrimFlags.Physics) != 0); |
1440 | bool IsPhantom = ((RootPart.Flags & PrimFlags.Phantom) != 0); | 1441 | bool IsPhantom = ((RootPart.Flags & PrimFlags.Phantom) != 0); |
1441 | UpdatePrimFlags(RootPart.LocalId, UsePhysics, TemporaryStatus, IsPhantom); | 1442 | bool IsVolumeDetect = RootPart.VolumeDetectActive; |
1443 | UpdatePrimFlags(RootPart.LocalId, UsePhysics, TemporaryStatus, IsPhantom, IsVolumeDetect); | ||
1442 | } | 1444 | } |
1443 | 1445 | ||
1444 | public void ScriptSetPhantomStatus(bool PhantomStatus) | 1446 | public void ScriptSetPhantomStatus(bool PhantomStatus) |
1445 | { | 1447 | { |
1446 | bool UsePhysics = ((RootPart.Flags & PrimFlags.Physics) != 0); | 1448 | bool UsePhysics = ((RootPart.Flags & PrimFlags.Physics) != 0); |
1447 | bool IsTemporary = ((RootPart.Flags & PrimFlags.TemporaryOnRez) != 0); | 1449 | bool IsTemporary = ((RootPart.Flags & PrimFlags.TemporaryOnRez) != 0); |
1448 | UpdatePrimFlags(RootPart.LocalId, UsePhysics, IsTemporary, PhantomStatus); | 1450 | bool IsVolumeDetect = RootPart.VolumeDetectActive; |
1451 | UpdatePrimFlags(RootPart.LocalId, UsePhysics, IsTemporary, PhantomStatus, IsVolumeDetect); | ||
1452 | } | ||
1453 | |||
1454 | public void ScriptSetVolumeDetect(bool VDStatus) | ||
1455 | { | ||
1456 | bool UsePhysics = ((RootPart.Flags & PrimFlags.Physics) != 0); | ||
1457 | bool IsTemporary = ((RootPart.Flags & PrimFlags.TemporaryOnRez) != 0); | ||
1458 | bool IsPhantom = ((RootPart.Flags & PrimFlags.Phantom) != 0); | ||
1459 | UpdatePrimFlags(RootPart.LocalId, UsePhysics, IsTemporary, IsPhantom, VDStatus); | ||
1460 | |||
1461 | /* | ||
1462 | ScriptSetPhantomStatus(false); // What ever it was before, now it's not phantom anymore | ||
1463 | |||
1464 | if (PhysActor != null) // Should always be the case now | ||
1465 | { | ||
1466 | PhysActor.SetVolumeDetect(param); | ||
1467 | } | ||
1468 | if (param != 0) | ||
1469 | AddFlag(PrimFlags.Phantom); | ||
1470 | |||
1471 | ScheduleFullUpdate(); | ||
1472 | */ | ||
1449 | } | 1473 | } |
1450 | 1474 | ||
1451 | public void applyImpulse(PhysicsVector impulse) | 1475 | public void applyImpulse(PhysicsVector impulse) |
@@ -2251,7 +2275,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2251 | /// <param name="type"></param> | 2275 | /// <param name="type"></param> |
2252 | /// <param name="inUse"></param> | 2276 | /// <param name="inUse"></param> |
2253 | /// <param name="data"></param> | 2277 | /// <param name="data"></param> |
2254 | public void UpdatePrimFlags(uint localID, bool UsePhysics, bool IsTemporary, bool IsPhantom) | 2278 | public void UpdatePrimFlags(uint localID, bool UsePhysics, bool IsTemporary, bool IsPhantom, bool IsVolumeDetect) |
2255 | { | 2279 | { |
2256 | SceneObjectPart selectionPart = GetChildPart(localID); | 2280 | SceneObjectPart selectionPart = GetChildPart(localID); |
2257 | 2281 | ||
@@ -2279,7 +2303,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
2279 | 2303 | ||
2280 | foreach (SceneObjectPart part in m_parts.Values) | 2304 | foreach (SceneObjectPart part in m_parts.Values) |
2281 | { | 2305 | { |
2282 | part.UpdatePrimFlags(UsePhysics, IsTemporary, IsPhantom); | 2306 | part.UpdatePrimFlags(UsePhysics, IsTemporary, IsPhantom, IsVolumeDetect); |
2283 | } | 2307 | } |
2284 | } | 2308 | } |
2285 | } | 2309 | } |