* Fix llSetStatus() and llSetPrimitiveParams() * Thanks idb0.6.0-stable
parent
cd96a33976
commit
e08c4376f7
|
@ -1440,28 +1440,14 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
public void ScriptSetPhantomStatus(bool PhantomStatus)
|
public void ScriptSetPhantomStatus(bool PhantomStatus)
|
||||||
{
|
{
|
||||||
lock (m_parts)
|
byte[] flags = new byte[50];
|
||||||
{
|
// only the following 3 flags are updated by UpdatePrimFlags
|
||||||
foreach (SceneObjectPart part in m_parts.Values)
|
flags[46] = (byte)((RootPart.Flags & PrimFlags.Physics) != 0 ? 1 : 0);
|
||||||
{
|
flags[47] = (byte)((RootPart.Flags & PrimFlags.TemporaryOnRez) != 0 ? 1 : 0);
|
||||||
if (PhantomStatus)
|
flags[48] = (byte)(PhantomStatus ? 1 : 0);
|
||||||
{
|
// 94 is the packet type that comes from the ll viewer when selecting/unselecting
|
||||||
part.AddFlag(PrimFlags.Phantom);
|
// so pretend we are from the viewer
|
||||||
if (part.PhysActor != null)
|
UpdatePrimFlags(RootPart.LocalId, (ushort)94, true, flags);
|
||||||
{
|
|
||||||
m_scene.PhysicsScene.RemovePrim(part.PhysActor);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
part.RemFlag(PrimFlags.Phantom);
|
|
||||||
if ((part.GetEffectiveObjectFlags() & (int) PrimFlags.Physics) != 0)
|
|
||||||
{
|
|
||||||
part.DoPhysicsPropertyUpdate(true, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void applyImpulse(PhysicsVector impulse)
|
public void applyImpulse(PhysicsVector impulse)
|
||||||
|
|
Loading…
Reference in New Issue