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
	
	 Melanie
						Melanie