Removed code in SceneGraph, SceneObjectGroup and SceneObjectPart that were either commented
out before, or no longer in use. Base for removing BucketSyncInfo.dsg
							parent
							
								
									8497ecd28d
								
							
						
					
					
						commit
						9b955d8e95
					
				|  | @ -2000,66 +2000,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
| 
 | ||||
|         #endregion | ||||
| 
 | ||||
|         #region REGION SYNC | ||||
| 
 | ||||
|         protected internal bool IsObjectInScene(SceneObjectGroup sog) | ||||
|         { | ||||
|             if (Entities.ContainsKey(sog.UUID)) | ||||
|                 return true; | ||||
|             else | ||||
|             { | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         //Return false if the entity with the UUID is not a SceneObjectGroup,  | ||||
|         //otherwise, return true. | ||||
|         /* | ||||
|         protected internal bool AddOrUpdateObjectInScene(SceneObjectGroup updatedSog, bool debugWithViewer) | ||||
|         { | ||||
|             UUID sogID = updatedSog.UUID; | ||||
| 
 | ||||
|             if (Entities.ContainsKey(sogID)) | ||||
|             { | ||||
|                 //update the object | ||||
|                 EntityBase entity = Entities[sogID]; | ||||
|                 if (entity is SceneObjectGroup) | ||||
|                 { | ||||
|                     SceneObjectGroup oldSog = (SceneObjectGroup)entity; | ||||
|                     oldSog.UpdateObjectProperties(updatedSog); | ||||
| 
 | ||||
|                     if (debugWithViewer) | ||||
|                     { | ||||
|                         //if we need to debug the script engine with a viewer attaching to it, | ||||
|                         //we need to schedule updates to be sent to the viewer | ||||
|                         oldSog.ScheduleGroupForFullUpdate(new List<SceneObjectPartProperties>(){SceneObjectPartProperties.None}); | ||||
|                     } | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     m_log.WarnFormat("{0}: Entity with {1} is not of type SceneObjectGroup: {2}", | ||||
|                                     "[SCENE GRAPH]", sogID, entity.GetType().ToString()); | ||||
|                     //return false; | ||||
|                 } | ||||
|                 return false; | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 //Add a new object | ||||
|                 //For now, we set sendClientUpdates to true, for debugging purpose -- so that we could log a viewer in to  | ||||
|                 //see if scripts are running properly | ||||
|                 //Since this is a Script Engine's local Scene cache, do not backup to DB | ||||
|                 AddSceneObject(updatedSog, false, debugWithViewer); | ||||
|                 //AddSceneObject(updatedSog, false, false); | ||||
| 
 | ||||
|                 return true; | ||||
|             } | ||||
| 
 | ||||
|         } | ||||
|          * */  | ||||
| 
 | ||||
|         #endregion // REGION SYNC | ||||
| 
 | ||||
|         #region DSG SYNC | ||||
| 
 | ||||
|         public Scene.ObjectUpdateResult UpdateObjectBySynchronization(SceneObjectGroup updatedSog) | ||||
|  |  | |||
|  | @ -296,12 +296,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             { | ||||
|                 Vector3 val = value; | ||||
| 
 | ||||
|                 //REGION SYNC touched | ||||
| 
 | ||||
|                 //if ((m_scene.TestBorderCross(val - Vector3.UnitX, Cardinals.E) || m_scene.TestBorderCross(val + Vector3.UnitX, Cardinals.W) | ||||
|                 //    || m_scene.TestBorderCross(val - Vector3.UnitY, Cardinals.N) || m_scene.TestBorderCross(val + Vector3.UnitY, Cardinals.S))  | ||||
|                 //    && !IsAttachmentCheckFull()) | ||||
|                 // if (m_scene !=null && m_scene.IsBorderCrossing(LocX, LocY, val) && !IsAttachmentCheckFull()&& (!m_scene.LoadingPrims)) | ||||
|                 if (Scene != null) | ||||
|                 { | ||||
|                     if ((Scene.TestBorderCross(val - Vector3.UnitX, Cardinals.E) || Scene.TestBorderCross(val + Vector3.UnitX, Cardinals.W) | ||||
|  | @ -311,7 +305,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
|                         m_scene.CrossPrimGroupIntoNewRegion(val, this, true); | ||||
|                     } | ||||
|                 } | ||||
|                 //end REGION SYNC touched | ||||
|                 if (RootPart.GetStatusSandbox()) | ||||
|                 { | ||||
|                     if (Util.GetDistanceTo(RootPart.StatusSandboxPos, value) > 10) | ||||
|  | @ -3555,59 +3548,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             set { m_locY = value; } | ||||
|         } | ||||
|           | ||||
| 
 | ||||
|         //update the existing copy of the object with updated properties in 'updatedSog' | ||||
|         //TODO: handle updates on script content seperately (e.g. user edited the script and saved it). | ||||
|         public void UpdateObjectProperties(SceneObjectGroup updatedSog) | ||||
|         { | ||||
|             if (!this.GroupID.Equals(updatedSog.GroupID)) | ||||
|                 return; | ||||
| 
 | ||||
|             //So far this function is written with Script Engine updating local Scene cache in mind. | ||||
| 
 | ||||
|             //We do not want to simply call SceneObjectGroup.Copy here to clone the object. | ||||
|             //We need to preserve the references to the prims (SceneObjectParts) inside the group, | ||||
|             //since their scripts are referencing back to the prims, and we have to update those | ||||
|             //references if we call SceneObjectGroup.Copy(), which creates new SceneObjectPart for all  | ||||
|             //non root parts. (So is SceneObjectGroup.CopyPart().) | ||||
|             //Plus, we do not need to trigger client updating, since Script engine does not have client connections. | ||||
|             lock (m_parts.SyncRoot) | ||||
|             { | ||||
|                 // Adds and updates parts in this SOG | ||||
|                 Dictionary<UUID, SceneObjectPart> updatedParts = new Dictionary<UUID, SceneObjectPart>(); | ||||
|                 foreach (SceneObjectPart updatedPart in updatedSog.Parts) | ||||
|                 { | ||||
|                     SceneObjectPart oldPart; | ||||
|                     m_parts.TryGetValue(updatedPart.UUID, out oldPart); | ||||
|                     if(oldPart != null) | ||||
|                     { | ||||
|                         oldPart.UpdateObjectPartProperties(updatedPart); | ||||
|                         updatedParts.Add(updatedPart.UUID, updatedPart); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         //a new part | ||||
|                         m_parts.Add(updatedPart.UUID, updatedPart); | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|                 // Deletes parts that are no longer in this SOG | ||||
|                 List<UUID> deletedParts = new List<UUID>(); | ||||
|                 foreach(SceneObjectPart part in m_parts.GetArray()) | ||||
|                 { | ||||
|                     if(!updatedParts.ContainsKey(part.UUID)) | ||||
|                     { | ||||
|                         deletedParts.Add(part.UUID); | ||||
|                     } | ||||
|                 } | ||||
|                 foreach(UUID deletedPart in deletedParts) | ||||
|                     m_parts.Remove(deletedPart); | ||||
|             }  | ||||
| 
 | ||||
|             //update the authoritative scene that this object is located, which is identified by (LocX, LocY) | ||||
|             this.m_locX = updatedSog.LocX; | ||||
|             this.m_locY = updatedSog.LocY; | ||||
|         } | ||||
| #endregion  | ||||
| 
 | ||||
|         #region DSG SYNC | ||||
|  | @ -3955,23 +3895,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
| 
 | ||||
|             linkPart.OffsetPosition = linkPart.GroupPosition - AbsolutePosition; | ||||
|             linkPart.GroupPosition = AbsolutePosition; | ||||
|             //linkPart.SetOffsetPosition(linkPart.GroupPosition - AbsolutePosition); | ||||
|             //linkPart.SetGroupPosition(AbsolutePosition); | ||||
|             //linkPart.SetProperty("OffsetPosition", linkPart.GroupPosition - AbsolutePosition); | ||||
|             //linkPart.SetProperty("GroupPosition", AbsolutePosition); | ||||
|             Vector3 axPos = linkPart.OffsetPosition; | ||||
| 
 | ||||
|             Quaternion parentRot = m_rootPart.RotationOffset; | ||||
|             axPos *= Quaternion.Inverse(parentRot); | ||||
| 
 | ||||
|             linkPart.OffsetPosition = axPos; | ||||
|             //linkPart.SetOffsetPosition(axPos); | ||||
|             //linkPart.SetProperty("OffsetPosition", axPos); | ||||
|             Quaternion oldRot = linkPart.RotationOffset; | ||||
|             Quaternion newRot = Quaternion.Inverse(parentRot) * oldRot; | ||||
|             linkPart.RotationOffset = newRot; | ||||
|             //linkPart.SetRotationOffset(newRot); | ||||
|             //linkPart.SetProperty("RotationOffset", newRot); | ||||
| 
 | ||||
|             //ParentID is only valid locally, so remote value is ignored and no syncinfo will be modified | ||||
|             linkPart.ParentID = m_rootPart.LocalId; | ||||
|  | @ -3994,12 +3926,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
|                     { | ||||
|                         // Don't update root prim link number | ||||
|                         part.LinkNum += objectGroup.PrimCount; | ||||
|                         //part.SetProperty("LinkNum",objectGroup.PrimCount); | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|                 linkPart.LinkNum = 2; | ||||
|                 //linkPart.SetProperty("LinkNum",2); | ||||
| 
 | ||||
|                 linkPart.SetParent(this); | ||||
|                 linkPart.CreateSelected = true; | ||||
|  | @ -4059,65 +3989,28 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             part.GroupPosition = oldGroupPosition + part.OffsetPosition; | ||||
|             part.OffsetPosition = Vector3.Zero; | ||||
|             part.RotationOffset = worldRot; | ||||
|             //part.SetOffsetPosition(axPos); | ||||
|             //part.SetGroupPosition(oldGroupPosition + part.OffsetPosition); | ||||
|             //part.SetOffsetPosition(Vector3.Zero); | ||||
|             //part.SetRotationOffset(worldRot); | ||||
|             //part.SetProperty("OffsetPosition", axPos); | ||||
|             //part.SetProperty("GroupPosition", oldGroupPosition + part.OffsetPosition); | ||||
|             //part.SetProperty("OffsetPosition", Vector3.Zero); | ||||
|             //part.SetProperty("RotationOffset", worldRot); | ||||
| 
 | ||||
|             part.SetParent(this); | ||||
|             part.ParentID = m_rootPart.LocalId; | ||||
| 
 | ||||
|             m_parts.Add(part.UUID, linkPart); | ||||
| 
 | ||||
|             part.LinkNum = linkNum; | ||||
|             //part.SetProperty("LinkNum",linkNum); | ||||
| 
 | ||||
|             part.OffsetPosition = part.GroupPosition - AbsolutePosition; | ||||
|             //part.SetOffsetPosition(part.GroupPosition - AbsolutePosition); | ||||
|             //part.SetProperty("OffsetPosition", part.GroupPosition - AbsolutePosition); | ||||
| 
 | ||||
|             Quaternion rootRotation = m_rootPart.RotationOffset; | ||||
| 
 | ||||
|             Vector3 pos = part.OffsetPosition; | ||||
|             pos *= Quaternion.Inverse(rootRotation); | ||||
|             part.OffsetPosition = pos; | ||||
|             //part.SetOffsetPosition(pos); | ||||
|             //part.SetProperty("OffsetPosition", pos); | ||||
| 
 | ||||
|             parentRot = m_rootPart.RotationOffset; | ||||
|             oldRot = part.RotationOffset; | ||||
|             Quaternion newRot = Quaternion.Inverse(parentRot) * oldRot; | ||||
|             part.RotationOffset = newRot; | ||||
|             //part.SetRotationOffset(newRot); | ||||
|             //part.SetProperty("RotationOffset", newRot); | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|          | ||||
|         public void BucketSyncInfoUpdate() | ||||
|         { | ||||
|             long timeStamp = DateTime.Now.Ticks; | ||||
|             string actorID = m_scene.GetSyncActorID(); | ||||
|             foreach (SceneObjectPart part in Parts) | ||||
|             { | ||||
|                 //part.SyncInfoUpdate(timeStamp, actorID); | ||||
|                 part.UpdateAllBucketSyncInfo(timeStamp); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /* | ||||
|         public void SyncInfoUpdate(long timeStamp, string actorID) | ||||
|         { | ||||
|             foreach (SceneObjectPart part in Parts) | ||||
|             { | ||||
|                 part.SyncInfoUpdate(timeStamp, actorID); | ||||
|             } | ||||
|         } | ||||
|          * */ | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Attach this object to a scene after a new object is created due to receiving a sync message.  | ||||
|  | @ -4157,6 +4050,21 @@ namespace OpenSim.Region.Framework.Scenes | |||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         /////////////////////////////////////////////////////////////////////// | ||||
|         // Bucket based sync | ||||
|         /////////////////////////////////////////////////////////////////////// | ||||
| 
 | ||||
|         public void BucketSyncInfoUpdate() | ||||
|         { | ||||
|             long timeStamp = DateTime.Now.Ticks; | ||||
|             string actorID = m_scene.GetSyncActorID(); | ||||
|             foreach (SceneObjectPart part in Parts) | ||||
|             { | ||||
|                 //part.SyncInfoUpdate(timeStamp, actorID); | ||||
|                 part.UpdateAllBucketSyncInfo(timeStamp); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public void UpdateTaintedBucketSyncInfo(long timeStamp) | ||||
|         { | ||||
|             foreach (SceneObjectPart part in Parts) | ||||
|  |  | |||
|  | @ -4934,78 +4934,12 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             return new Color4(color.R, color.G, color.B, (byte)(0xFF - color.A)); | ||||
|         } | ||||
| 
 | ||||
|         #region REGION SYNC | ||||
| 
 | ||||
|         public void UpdateObjectPartProperties(SceneObjectPart updatedPart) | ||||
|         { | ||||
|             //So far this function is written with Script Engine updating local Scene cache in mind. | ||||
|             // | ||||
|             //Assumptions:  | ||||
|             //(1) prim's UUID and LocalID won't change. | ||||
|             //(2) CreaterIF, OwnerID, GroupID,  won't change | ||||
|             //For now, we only update a small set of properties, which is a subset of the serialized object data. | ||||
|             //We simply assume other properties won't change. (Just a temporary work-around.) | ||||
|             //Properties that will be updated: | ||||
|             //GroupPosition, OffsetPosition,RotationOffset, Velocity, AngularVelocity, Acceleration, | ||||
|             //<Color />   <LinkNum>0</LinkNum>  , Scale | ||||
|             // | ||||
|             //And we do not update Physics properties. | ||||
| 
 | ||||
|             //The above assumptions and limited updating actions can be easily fixed once Scene supports | ||||
|             //[property name, property value] type of detailed updates. | ||||
| 
 | ||||
|             //Need to be able to update TaskInventory, so that new scripts will be added | ||||
|              | ||||
|             if (updatedPart == null) | ||||
|                 return; | ||||
| 
 | ||||
|             this.GroupPosition = updatedPart.GroupPosition; | ||||
|             this.OffsetPosition = updatedPart.OffsetPosition; | ||||
|             this.RotationOffset = updatedPart.RotationOffset; | ||||
|             this.AngularVelocity = updatedPart.AngularVelocity; | ||||
|             this.Acceleration = updatedPart.Acceleration; | ||||
|             this.Color = updatedPart.Color; | ||||
|             this.LinkNum = updatedPart.LinkNum; | ||||
|             this.Velocity = updatedPart.Velocity; | ||||
|             this.Scale = updatedPart.Scale; | ||||
|             this.SitAnimation = updatedPart.SitAnimation; | ||||
|             this.SitName = updatedPart.SitName; | ||||
|             this.SitTargetAvatar = updatedPart.SitTargetAvatar; | ||||
|             this.SitTargetOrientation = updatedPart.SitTargetOrientation; | ||||
|             this.SitTargetOrientationLL = updatedPart.SitTargetOrientationLL; | ||||
|             this.SitTargetPosition = updatedPart.SitTargetPosition; | ||||
|             this.SitTargetPositionLL = updatedPart.SitTargetPositionLL; | ||||
|              | ||||
|             this.ObjectFlags = updatedPart.ObjectFlags; | ||||
| 
 | ||||
|             this.m_inventory.Items = (TaskInventoryDictionary)updatedPart.m_inventory.Items.Clone(); | ||||
| 
 | ||||
|             //update shape information, for now, only update fileds in Shape whose set functions are defined in PrimitiveBaseShape | ||||
|             this.Shape = updatedPart.Shape.Copy(); | ||||
|             this.Shape.TextureEntry = updatedPart.Shape.TextureEntry; | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         #endregion | ||||
| 
 | ||||
|         #region DSG SYNC | ||||
| 
 | ||||
|         //Time stamp for the most recent update on this prim. We only have one time-stamp per prim for now. | ||||
|         //The goal is to evetually have time-stamp per property bucket for each prim. | ||||
|         private long m_lastUpdateTimeStamp = DateTime.Now.Ticks; | ||||
|         public long LastUpdateTimeStamp | ||||
|         { | ||||
|             get { return m_lastUpdateTimeStamp; } | ||||
|             set { m_lastUpdateTimeStamp = value; } | ||||
|         } | ||||
| 
 | ||||
|         #endregion  | ||||
| 
 | ||||
|     } | ||||
| 
 | ||||
|     //DSG SYNC | ||||
| 
 | ||||
|     //Information for concurrency control of one bucket of prim proproperties. | ||||
| 
 | ||||
|     public class BucketSyncInfo | ||||
|     { | ||||
|         private long m_lastUpdateTimeStamp; | ||||
|  | @ -5084,82 +5018,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
|         } | ||||
|     } | ||||
| 
 | ||||
|     /* | ||||
|     public enum SceneObjectPartProperties:ulong  | ||||
|         { | ||||
|         //Following properties copied from SceneObjectSerializer(),  | ||||
|             AllowedDrop = (ulong) 1<<0, | ||||
|             CreatorID = (ulong) 1<<1, | ||||
|             CreatorData = (ulong) 1 <<2, | ||||
|             FolderID = (ulong) 1 << 3, | ||||
|             InventorySerial = (ulong) 1 << 4, | ||||
|             TaskInventory = (ulong) 1 << 5, | ||||
|             //UUID",  | ||||
|             //LocalId",  | ||||
|             Name = (ulong) 1 << 6, | ||||
|             Material = (ulong) 1 <<7, | ||||
|             PassTouches = (ulong) 1 << 8, | ||||
|             RegionHandle = (ulong) 1 << 9, | ||||
|             ScriptAccessPin = (ulong) 1 << 10, | ||||
|             GroupPosition = (ulong) 1 << 11, | ||||
|             OffsetPosition = (ulong) 1 << 12, | ||||
|             RotationOffset = (ulong) 1 << 13, | ||||
|             Velocity = (ulong) 1 << 14, | ||||
|             AngularVelocity = (ulong) 1 << 15, | ||||
|             //"Acceleration",  | ||||
|             SOP_Acceleration = (ulong) 1 << 16,  //SOP and PA read/write their own local copies of acceleration, so we distinguish the copies | ||||
|             Description = (ulong) 1 << 17, | ||||
|             Color = (ulong) 1 << 18, | ||||
|             Text = (ulong) 1 << 19, | ||||
|             SitName = (ulong) 1 << 20, | ||||
|             TouchName = (ulong) 1 << 21, | ||||
|             LinkNum = (ulong) 1 << 22, | ||||
|             ClickAction = (ulong) 1 << 23, | ||||
|             Shape = (ulong) 1 << 24, | ||||
|             Scale = (ulong) 1 << 25, | ||||
|             UpdateFlag = (ulong) 1 << 26, | ||||
|             SitTargetOrientation = (ulong) 1 << 27, | ||||
|             SitTargetPosition = (ulong) 1 << 28, | ||||
|             SitTargetPositionLL = (ulong) 1 << 29, | ||||
|             SitTargetOrientationLL = (ulong) 1 << 30, | ||||
|             ParentID = (ulong)1 << 31, | ||||
|             CreationDate = (ulong) 1 << 32, | ||||
|             Category = (ulong) 1 << 33, | ||||
|             SalePrice = (ulong) 1 << 34, | ||||
|             ObjectSaleType = (ulong) 1 << 35, | ||||
|             OwnershipCost = (ulong) 1 << 36, | ||||
|             GroupID = (ulong) 1 << 37, | ||||
|             OwnerID = (ulong) 1 << 38, | ||||
|             LastOwnerID = (ulong) 1 << 39, | ||||
|             BaseMask = (ulong) 1 << 40, | ||||
|             OwnerMask = (ulong) 1 << 41, | ||||
|             GroupMask = (ulong) 1 << 42, | ||||
|             EveryoneMask = (ulong) 1 << 43, | ||||
|             NextOwnerMask = (ulong) 1 << 44, | ||||
|             Flags = (ulong) 1 << 45, | ||||
|             CollisionSound = (ulong) 1 << 46, | ||||
|             CollisionSoundVolume = (ulong) 1 << 47, | ||||
|             MediaUrl = (ulong) 1 << 48, | ||||
|             TextureAnimation = (ulong) 1 << 49, | ||||
|             ParticleSystem = (ulong) 1 << 50, | ||||
|             //Property names below copied from PhysicsActor, they are necessary in synchronization, but not covered the above properties | ||||
|             //Physics properties "Velocity" is covered above | ||||
|             Position = (ulong) 1 << 51, | ||||
|             Size = (ulong) 1 << 52, | ||||
|             Force = (ulong) 1 << 53, | ||||
|             RotationalVelocity = (ulong) 1 << 54, | ||||
|             PA_Acceleration = (ulong) 1 << 55, | ||||
|             Torque = (ulong) 1 << 56, | ||||
|             Orientation = (ulong) 1 << 57, | ||||
|             IsPhysical = (ulong) 1 << 58, | ||||
|             Flying = (ulong) 1 << 59, | ||||
|             Buoyancy = (ulong) 1 << 60, | ||||
|             //To be handled | ||||
|             AttachmentPoint = (ulong)1 << 61, | ||||
|             FullUpdate = UInt64.MaxValue | ||||
|     } | ||||
|     */ | ||||
| 
 | ||||
|     public enum SceneObjectPartSyncProperties  | ||||
|     { | ||||
|         None, | ||||
|  | @ -5297,82 +5155,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
|         //property set functions will be called and might trigger UpdateBucketSyncInfo() if not guarded carefully. | ||||
|         private bool m_syncEnabled = false; | ||||
| 
 | ||||
|         //The list of each prim's properties. This is the list of properties that matter in synchronizing prim copies on different actors. | ||||
|         //This list is created based on properties included in the serialization/deserialization process (see SceneObjectSerializer()) and the  | ||||
|         //properties Physics Engine needs to synchronize to other actors. | ||||
|         /* | ||||
|         public static List<string> PropertyList = new List<string>() | ||||
|         { | ||||
|             //Following properties copied from SceneObjectSerializer() | ||||
|             "AllowedDrop",  | ||||
|             "CreatorID",  | ||||
|             "CreatorData",  | ||||
|             "FolderID",  | ||||
|             "InventorySerial",  | ||||
|             "TaskInventory",  | ||||
|             "UUID",  | ||||
|             "LocalId",  | ||||
|             "Name",  | ||||
|             "Material",  | ||||
|             "PassTouches",  | ||||
|             "RegionHandle",  | ||||
|             "ScriptAccessPin",  | ||||
|             "GroupPosition",  | ||||
|             "OffsetPosition",  | ||||
|             "RotationOffset",  | ||||
|             "Velocity",  | ||||
|             "AngularVelocity",  | ||||
|             //"Acceleration",  | ||||
|             "SOP_Acceleration",  //SOP and PA read/write their own local copies of acceleration, so we distinguish the copies | ||||
|             "Description",  | ||||
|             "Color",  | ||||
|             "Text",  | ||||
|             "SitName",  | ||||
|             "TouchName",  | ||||
|             "LinkNum",  | ||||
|             "ClickAction",  | ||||
|             "Shape",  | ||||
|             "Scale",  | ||||
|             "UpdateFlag",  | ||||
|             "SitTargetOrientation",  | ||||
|             "SitTargetPosition",  | ||||
|             "SitTargetPositionLL",  | ||||
|             "SitTargetOrientationLL",  | ||||
|             "ParentID",  | ||||
|             "CreationDate",  | ||||
|             "Category",  | ||||
|             "SalePrice",  | ||||
|             "ObjectSaleType",  | ||||
|             "OwnershipCost",  | ||||
|             "GroupID",  | ||||
|             "OwnerID",  | ||||
|             "LastOwnerID",  | ||||
|             "BaseMask",  | ||||
|             "OwnerMask",  | ||||
|             "GroupMask",  | ||||
|             "EveryoneMask",  | ||||
|             "NextOwnerMask",  | ||||
|             "Flags",  | ||||
|             "CollisionSound",  | ||||
|             "CollisionSoundVolume",  | ||||
|             "MediaUrl",  | ||||
|             "TextureAnimation",  | ||||
|             "ParticleSystem",  | ||||
|             //Property names below copied from PhysicsActor, they are necessary in synchronization, but not covered the above properties | ||||
|             //Physics properties "Velocity" is covered above | ||||
|             "Position", | ||||
|             "Size",  | ||||
|             "Force", | ||||
|             "RotationalVelocity", | ||||
|             "PA_Acceleration", | ||||
|             "Torque", | ||||
|             "Orientation", | ||||
|             "IsPhysical", | ||||
|             "Flying", | ||||
|             "Buoyancy", | ||||
|         }; | ||||
|          * */ | ||||
| 
 | ||||
|         #region SceneObjectPartSyncProperties categorization | ||||
|         /// <summary> | ||||
|         /// Return the list of all prim (SOP) properties, in enum type.  | ||||
|         /// Excluding None, FullUpdate. | ||||
|  | @ -5477,6 +5260,10 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             return allProperties; | ||||
|         } | ||||
| 
 | ||||
|         #endregion SceneObjectPartSyncProperties categorization | ||||
| 
 | ||||
| 
 | ||||
|         #region BucketSync | ||||
|         public static void InitializePropertyBucketInfo(Dictionary<SceneObjectPartSyncProperties, string> propertyBucketMap, List<string> bucketNames, string actorID) | ||||
|         { | ||||
|             m_primPropertyBucketMap = propertyBucketMap; | ||||
|  | @ -5487,20 +5274,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             //RegisterBucketUpdateProcessor(); | ||||
|         } | ||||
| 
 | ||||
|         public string DebugObjectPartProperties() | ||||
|         { | ||||
|             string debugMsg = "UUID " + UUID + ", Name " + Name + ", localID " + LocalId; | ||||
|             //debugMsg += ", parentID " + ParentID + ", parentUUID " + ParentUUID; | ||||
|             //foreach (KeyValuePair<string, BucketSyncInfo> pair in m_bucketSyncInfoList) | ||||
|             //{ | ||||
|             //    debugMsg += ", Bucket " + pair.Key + ": TimeStamp - " + pair.Value.LastUpdateTimeStamp + ", ActorID - " + pair.Value.LastUpdateActorID; | ||||
|             //} | ||||
|             debugMsg += ", AggregateScriptEvents = " + AggregateScriptEvents.ToString()+", OffsetPosition: "+OffsetPosition; | ||||
|             String hashedShape = Util.Md5Hash(SerializeShape()); | ||||
|             debugMsg += ", hashed Shape = " + hashedShape; | ||||
|             return debugMsg; | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Link each bucket with the function that applies updates to properties in the bucket upon receiving sync messages.  | ||||
|         /// This is the "hard-coded" part in the property-buckets implementation. When new buckets are implemented,  | ||||
|  | @ -5640,37 +5413,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             m_bucketSyncInfoList[bucketName].TaintBucketBySync(); | ||||
|         } | ||||
| 
 | ||||
|         // Do any subscriptions based on the AggregateScriptEvents | ||||
|         public void aggregateScriptEventSubscriptions() | ||||
|         { | ||||
|             if ( | ||||
|                 ((AggregateScriptEvents & scriptEvents.collision) != 0) || | ||||
|                 ((AggregateScriptEvents & scriptEvents.collision_end) != 0) || | ||||
|                 ((AggregateScriptEvents & scriptEvents.collision_start) != 0) || | ||||
|                 ((AggregateScriptEvents & scriptEvents.land_collision_start) != 0) || | ||||
|                 ((AggregateScriptEvents & scriptEvents.land_collision) != 0) || | ||||
|                 ((AggregateScriptEvents & scriptEvents.land_collision_end) != 0) || | ||||
|                 (CollisionSound != UUID.Zero) | ||||
|                 ) | ||||
|             { | ||||
|                 // subscribe to physics updates. | ||||
|                 if (PhysActor != null) | ||||
|                 { | ||||
|                     PhysActor.OnCollisionUpdate += PhysicsCollision; | ||||
|                     PhysActor.SubscribeEvents(1000); | ||||
| 
 | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 if (PhysActor != null) | ||||
|                 { | ||||
|                     PhysActor.UnSubscribeEvents(); | ||||
|                     PhysActor.OnCollisionUpdate -= PhysicsCollision; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         //NOTE:  | ||||
|         //1. Only touch the properties and BucketSyncInfo that is related to  | ||||
|         //the given bucketName. Other properties and buckets may not be filled  | ||||
|  | @ -5884,7 +5626,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             } | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Update the timestamp information of each property bucket, and clear out the taint on each bucket. This function won't | ||||
|         /// clear the taints. Caller should clear the taints if needed. | ||||
|  | @ -6056,38 +5797,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             return partUpdateResult; | ||||
|         } | ||||
| 
 | ||||
|         //Implementation of ScheduleFullUpdate and ScheduleTerseUpdate for Bucket  | ||||
|         //based synchronization | ||||
|         /* | ||||
|         public override void ScheduleFullUpdate(List<SceneObjectPartProperties> updatedProperties) | ||||
|         { | ||||
|             if (updatedProperties != null && updatedProperties.Count > 0) | ||||
|             { | ||||
|                 foreach (SceneObjectPartProperties property in updatedProperties) | ||||
|                 { | ||||
|                     TaintBucketSyncInfo(property); | ||||
|                 } | ||||
|             } | ||||
|             base.ScheduleFullUpdate(updatedProperties); | ||||
|             //TaintBucketSyncInfo(property); | ||||
|         } | ||||
| 
 | ||||
|         public override void ScheduleTerseUpdate(List<SceneObjectPartProperties> updatedProperties) | ||||
|         { | ||||
|             if (updatedProperties != null && updatedProperties.Count > 0) | ||||
|             { | ||||
|                 //m_log.DebugFormat("{0}: Tainting bucket for properties {1}",  | ||||
|                 //            "[SCENE OBJECT PART]", updatedProperties.ToString()); | ||||
|                 foreach (SceneObjectPartProperties property in updatedProperties) | ||||
|                 { | ||||
|                     TaintBucketSyncInfo(property); | ||||
|                 } | ||||
|             } | ||||
|             base.ScheduleTerseUpdate(updatedProperties); | ||||
|             //TaintBucketSyncInfo(property); | ||||
|         } | ||||
|          * */ | ||||
|         #endregion BucketSync | ||||
| 
 | ||||
|         #region overridden SOPBase functions | ||||
|         //Implementation of ScheduleFullUpdate and ScheduleTerseUpdate for Bucket  | ||||
|         //based synchronization | ||||
|         public override void ScheduleFullUpdate(List<SceneObjectPartSyncProperties> updatedProperties) | ||||
|  | @ -6129,6 +5841,9 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             base.ScheduleTerseUpdate(updatedProperties); | ||||
|         } | ||||
| 
 | ||||
|         #endregion overridden SOPBase functions | ||||
| 
 | ||||
|         #region DSG SYNC supporting functions | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Schedules this prim for a full update, without changing the timestamp or actorID (info on when and who modified any property). | ||||
|  | @ -6173,6 +5888,52 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             base.PhysicsCollision(e); | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         public string DebugObjectPartProperties() | ||||
|         { | ||||
|             string debugMsg = "UUID " + UUID + ", Name " + Name + ", localID " + LocalId; | ||||
|             //debugMsg += ", parentID " + ParentID + ", parentUUID " + ParentUUID; | ||||
|             //foreach (KeyValuePair<string, BucketSyncInfo> pair in m_bucketSyncInfoList) | ||||
|             //{ | ||||
|             //    debugMsg += ", Bucket " + pair.Key + ": TimeStamp - " + pair.Value.LastUpdateTimeStamp + ", ActorID - " + pair.Value.LastUpdateActorID; | ||||
|             //} | ||||
|             debugMsg += ", AggregateScriptEvents = " + AggregateScriptEvents.ToString() + ", OffsetPosition: " + OffsetPosition; | ||||
|             String hashedShape = Util.Md5Hash(SerializeShape()); | ||||
|             debugMsg += ", hashed Shape = " + hashedShape; | ||||
|             return debugMsg; | ||||
|         } | ||||
| 
 | ||||
|         // Do any subscriptions based on the AggregateScriptEvents | ||||
|         public void aggregateScriptEventSubscriptions() | ||||
|         { | ||||
|             if ( | ||||
|                 ((AggregateScriptEvents & scriptEvents.collision) != 0) || | ||||
|                 ((AggregateScriptEvents & scriptEvents.collision_end) != 0) || | ||||
|                 ((AggregateScriptEvents & scriptEvents.collision_start) != 0) || | ||||
|                 ((AggregateScriptEvents & scriptEvents.land_collision_start) != 0) || | ||||
|                 ((AggregateScriptEvents & scriptEvents.land_collision) != 0) || | ||||
|                 ((AggregateScriptEvents & scriptEvents.land_collision_end) != 0) || | ||||
|                 (CollisionSound != UUID.Zero) | ||||
|                 ) | ||||
|             { | ||||
|                 // subscribe to physics updates. | ||||
|                 if (PhysActor != null) | ||||
|                 { | ||||
|                     PhysActor.OnCollisionUpdate += PhysicsCollision; | ||||
|                     PhysActor.SubscribeEvents(1000); | ||||
| 
 | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 if (PhysActor != null) | ||||
|                 { | ||||
|                     PhysActor.UnSubscribeEvents(); | ||||
|                     PhysActor.OnCollisionUpdate -= PhysicsCollision; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /////////////////////////////////////////////////////////////////////// | ||||
|         //Per property sync functions | ||||
|         /////////////////////////////////////////////////////////////////////// | ||||
|  | @ -6192,6 +5953,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             } | ||||
|             return serializedShape; | ||||
|         } | ||||
| 
 | ||||
|         #endregion DSG SYNC supporting functions | ||||
|     } | ||||
| 
 | ||||
|     //end of DSG SYNC | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Huaiyu (Kitty) Liu
						Huaiyu (Kitty) Liu