Allow Linden trees to preserve their type when taken into inventory and rezzed again. Allow Linden trees to be sensed by LLSensor as PASSIVE objects.
parent
0086c3b5fb
commit
a348c8e44a
|
@ -387,7 +387,12 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||||
inventoryStoredPosition = objectGroup.RootPart.AttachOffset;
|
inventoryStoredPosition = objectGroup.RootPart.AttachOffset;
|
||||||
inventoryStoredRotation = objectGroup.RootPart.AttachRotation;
|
inventoryStoredRotation = objectGroup.RootPart.AttachRotation;
|
||||||
}
|
}
|
||||||
objectGroup.RootPart.Shape.State = objectGroup.RootPart.AttachPoint;
|
|
||||||
|
// Trees could be attached and it's been done, but it makes
|
||||||
|
// no sense. State must be preserved because it's the tree type
|
||||||
|
if (objectGroup.RootPart.Shape.PCode != (byte)PCode.Tree &&
|
||||||
|
objectGroup.RootPart.Shape.PCode != (byte)PCode.NewTree)
|
||||||
|
objectGroup.RootPart.Shape.State = objectGroup.RootPart.AttachPoint;
|
||||||
|
|
||||||
objectGroup.AbsolutePosition = inventoryStoredPosition;
|
objectGroup.AbsolutePosition = inventoryStoredPosition;
|
||||||
objectGroup.RootPart.RotationOffset = inventoryStoredRotation;
|
objectGroup.RootPart.RotationOffset = inventoryStoredRotation;
|
||||||
|
@ -791,7 +796,9 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||||
g.RootPart.AttachPoint = g.RootPart.Shape.State;
|
g.RootPart.AttachPoint = g.RootPart.Shape.State;
|
||||||
g.RootPart.AttachOffset = g.AbsolutePosition;
|
g.RootPart.AttachOffset = g.AbsolutePosition;
|
||||||
g.RootPart.AttachRotation = g.GroupRotation;
|
g.RootPart.AttachRotation = g.GroupRotation;
|
||||||
g.RootPart.Shape.State = 0;
|
if (g.RootPart.Shape.PCode != (byte)PCode.NewTree &&
|
||||||
|
g.RootPart.Shape.PCode != (byte)PCode.Tree)
|
||||||
|
g.RootPart.Shape.State = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
objlist.Add(g);
|
objlist.Add(g);
|
||||||
|
@ -825,7 +832,9 @@ namespace OpenSim.Region.CoreModules.Framework.InventoryAccess
|
||||||
g.RootPart.AttachPoint = g.RootPart.Shape.State;
|
g.RootPart.AttachPoint = g.RootPart.Shape.State;
|
||||||
g.RootPart.AttachOffset = g.AbsolutePosition;
|
g.RootPart.AttachOffset = g.AbsolutePosition;
|
||||||
g.RootPart.AttachRotation = g.GroupRotation;
|
g.RootPart.AttachRotation = g.GroupRotation;
|
||||||
g.RootPart.Shape.State = 0;
|
if (g.RootPart.Shape.PCode != (byte)PCode.NewTree &&
|
||||||
|
g.RootPart.Shape.PCode != (byte)PCode.Tree)
|
||||||
|
g.RootPart.Shape.State = 0;
|
||||||
|
|
||||||
objlist.Add(g);
|
objlist.Add(g);
|
||||||
XmlElement el = (XmlElement)n;
|
XmlElement el = (XmlElement)n;
|
||||||
|
|
|
@ -272,6 +272,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
AttachmentPoint = 0;
|
AttachmentPoint = 0;
|
||||||
|
|
||||||
|
// Don't zap trees
|
||||||
|
if (RootPart.Shape.PCode == (byte)PCode.Tree ||
|
||||||
|
RootPart.Shape.PCode == (byte)PCode.NewTree)
|
||||||
|
return;
|
||||||
|
|
||||||
// Even though we don't use child part state parameters for attachments any more, we still need to set
|
// Even though we don't use child part state parameters for attachments any more, we still need to set
|
||||||
// these to zero since having them non-zero in rezzed scene objects will crash some clients. Even if
|
// these to zero since having them non-zero in rezzed scene objects will crash some clients. Even if
|
||||||
// we store them correctly, scene objects that we receive from elsewhere might not.
|
// we store them correctly, scene objects that we receive from elsewhere might not.
|
||||||
|
|
|
@ -398,7 +398,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
||||||
objtype = 0;
|
objtype = 0;
|
||||||
|
|
||||||
part = ((SceneObjectGroup)ent).RootPart;
|
part = ((SceneObjectGroup)ent).RootPart;
|
||||||
if (part.ParentGroup.AttachmentPoint != 0) // Attached so ignore
|
if (part.ParentGroup.RootPart.Shape.PCode != (byte)PCode.Tree &&
|
||||||
|
part.ParentGroup.RootPart.Shape.PCode != (byte)PCode.NewTree &&
|
||||||
|
part.ParentGroup.AttachmentPoint != 0) // Attached so ignore
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (part.Inventory.ContainsScripts())
|
if (part.Inventory.ContainsScripts())
|
||||||
|
|
Loading…
Reference in New Issue