In current SOP class, overrode functions in SOPBase that modified values of Shape or properties of Shape.
							parent
							
								
									1da933041c
								
							
						
					
					
						commit
						88e42011af
					
				|  | @ -2981,7 +2981,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         public void SculptTextureCallback(UUID textureID, AssetBase texture) | ||||
|         //public void SculptTextureCallback(UUID textureID, AssetBase texture) | ||||
|         public virtual void SculptTextureCallback(UUID textureID, AssetBase texture) | ||||
|         { | ||||
|             if (m_shape.SculptEntry) | ||||
|             { | ||||
|  | @ -3273,7 +3274,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             }); | ||||
|         } | ||||
| 
 | ||||
|         public void SetAttachmentPoint(uint AttachmentPoint) | ||||
|         //public void SetAttachmentPoint(uint AttachmentPoint) | ||||
|         public virtual void SetAttachmentPoint(uint AttachmentPoint) | ||||
|         { | ||||
|             this.AttachmentPoint = AttachmentPoint; | ||||
| 
 | ||||
|  | @ -3289,7 +3291,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             // save the attachment point. | ||||
|             //if (AttachmentPoint != 0) | ||||
|             //{ | ||||
|                 m_shape.State = (byte)AttachmentPoint; | ||||
|             m_shape.State = (byte)AttachmentPoint; | ||||
| 
 | ||||
|             //} | ||||
|         } | ||||
| 
 | ||||
|  | @ -4208,6 +4211,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
| 
 | ||||
|             ParentGroup.HasGroupChanged = true; | ||||
|             ScheduleFullUpdate(); | ||||
| 
 | ||||
|         } | ||||
| 
 | ||||
|         public void UpdateGroupPosition(Vector3 pos) | ||||
|  | @ -4559,7 +4563,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
|         /// Update the shape of this part. | ||||
|         /// </summary> | ||||
|         /// <param name="shapeBlock"></param> | ||||
|         public void UpdateShape(ObjectShapePacket.ObjectDataBlock shapeBlock) | ||||
|         //public void UpdateShape(ObjectShapePacket.ObjectDataBlock shapeBlock) | ||||
|         public virtual void UpdateShape(ObjectShapePacket.ObjectDataBlock shapeBlock) | ||||
|         { | ||||
|             m_shape.PathBegin = shapeBlock.PathBegin; | ||||
|             m_shape.PathEnd = shapeBlock.PathEnd; | ||||
|  | @ -4634,7 +4639,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
|         /// Update the texture entry for this part. | ||||
|         /// </summary> | ||||
|         /// <param name="textureEntry"></param> | ||||
|         public void UpdateTextureEntry(byte[] textureEntry) | ||||
|         //public void UpdateTextureEntry(byte[] textureEntry) | ||||
|         public virtual void UpdateTextureEntry(byte[] textureEntry) | ||||
|         { | ||||
|             m_shape.TextureEntry = textureEntry; | ||||
|             TriggerScriptChangedEvent(Changed.TEXTURE); | ||||
|  | @ -5196,18 +5202,51 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Update the properties of this SOP with the values in updatedPart.  | ||||
|         /// </summary> | ||||
|         /// <param name="updatedPart"></param> | ||||
|         /// <param name="bucketName"></param> | ||||
| 
 | ||||
|         private void GeneralBucketUpdateProcessor(SceneObjectPart updatedPart, string bucketName) | ||||
|         { | ||||
|             //NOTE!!!!!!!! Need to cast the local copy to SceneObjectPartBase in order not to trigger UpdateBucketSyncInfo(), | ||||
|             //since the property updates inside this function are not due to local operations. | ||||
|             SceneObjectPartBase localPart = (SceneObjectPartBase)this; | ||||
| 
 | ||||
|             lock (m_bucketUpdateLocks[bucketName]) | ||||
|             { | ||||
|                 localPart.AllowedDrop = updatedPart.AllowedDrop; | ||||
| 
 | ||||
|                 localPart.Shape = updatedPart.Shape; | ||||
| 
 | ||||
|                 bool collisionSoundUpdated = UpdateCollisionSound(updatedPart.CollisionSound); | ||||
| 
 | ||||
| 
 | ||||
|                 m_bucketSyncInfoList[bucketName].LastUpdateTimeStamp = updatedPart.BucketSyncInfoList[bucketName].LastUpdateTimeStamp; | ||||
|                 m_bucketSyncInfoList[bucketName].LastUpdateActorID = updatedPart.BucketSyncInfoList[bucketName].LastUpdateActorID; | ||||
| 
 | ||||
|                 if (collisionSoundUpdated) | ||||
|                 { | ||||
|                     //If the local actor is Script Engine, it will catch this evnet and trigger aggregateScriptEvents() | ||||
|                     m_parentGroup.Scene.EventManager.TriggerAggregateScriptEvents(this); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private void PhysicsBucketUpdateProcessor(SceneObjectPart updatedPart, string bucketName) | ||||
|         { | ||||
|             //NOTE!!!!!!!! Need to cast the local copy to SceneObjectPartBase in order not to trigger UpdateBucketSyncInfo(), | ||||
|             //since the property updates inside this function are not due to local operations. | ||||
|             SceneObjectPartBase localPart = (SceneObjectPartBase)this; | ||||
| 
 | ||||
|             lock (m_bucketUpdateLocks[bucketName]) | ||||
|             { | ||||
|                 localPart.GroupPosition = updatedPart.GroupPosition; | ||||
| 
 | ||||
|                 m_bucketSyncInfoList[bucketName].LastUpdateTimeStamp = updatedPart.BucketSyncInfoList[bucketName].LastUpdateTimeStamp; | ||||
|                 m_bucketSyncInfoList[bucketName].LastUpdateActorID = updatedPart.BucketSyncInfoList[bucketName].LastUpdateActorID; | ||||
| 
 | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|  | @ -5335,7 +5374,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
|         #region new property access functions  | ||||
|         //(only properties relevant for synchronization purpose are implemented here) | ||||
| 
 | ||||
|         public bool AllowedDrop | ||||
|         new public bool AllowedDrop | ||||
|         { | ||||
|             get { return base.AllowedDrop; } | ||||
|             set | ||||
|  | @ -5345,7 +5384,60 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// The position of the entire group that this prim belongs to. | ||||
|         /// </summary> | ||||
|         new public Vector3 GroupPosition | ||||
|         { | ||||
|             get { return base.GroupPosition; } | ||||
|             set | ||||
|             { | ||||
|                 base.GroupPosition = value; | ||||
|                 UpdateBucketSyncInfo("GroupPosition"); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         new public PrimitiveBaseShape Shape | ||||
|         { | ||||
|             get { return base.Shape; } | ||||
|             set | ||||
|             { | ||||
|                 base.Shape = value; | ||||
|                 UpdateBucketSyncInfo("Shape"); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         //For functions that update SOP properties, override them so that when they are called from SOPBase (but the object itself is an instance of SOP) | ||||
|         //the following implementations will be called instead of the same name functions in SOPBase. | ||||
|         public override void SculptTextureCallback(UUID textureID, AssetBase texture) | ||||
|         { | ||||
|             base.SculptTextureCallback(textureID, texture); | ||||
|             UpdateBucketSyncInfo("Shape"); | ||||
|         } | ||||
| 
 | ||||
|         public override void SetAttachmentPoint(uint AttachmentPoint) | ||||
|         { | ||||
|             base.SetAttachmentPoint(AttachmentPoint); | ||||
|             UpdateBucketSyncInfo("Shape"); | ||||
|         } | ||||
| 
 | ||||
|         public void UpdateExtraParam(ushort type, bool inUse, byte[] data) | ||||
|         { | ||||
|             base.UpdateExtraParam(type, inUse, data); | ||||
|             UpdateBucketSyncInfo("Shape"); | ||||
|         } | ||||
| 
 | ||||
|         public override void UpdateShape(ObjectShapePacket.ObjectDataBlock shapeBlock) | ||||
|         { | ||||
|             base.UpdateShape(shapeBlock); | ||||
|             UpdateBucketSyncInfo("Shape"); | ||||
|         } | ||||
| 
 | ||||
|         public override void UpdateTextureEntry(byte[] textureEntry) | ||||
|         { | ||||
|             base.UpdateTextureEntry(textureEntry); | ||||
|             UpdateBucketSyncInfo("Shape"); | ||||
|         } | ||||
| 
 | ||||
|         #endregion //new property access functions | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Huaiyu (Kitty) Liu
						Huaiyu (Kitty) Liu