BulletSim: move linkset extension operations into BSPrimLinkable where they should be.
							parent
							
								
									785171109e
								
							
						
					
					
						commit
						1a8a6b95e5
					
				|  | @ -41,7 +41,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
|     [Serializable] | ||||
| public class BSPrim : BSPhysObject | ||||
| { | ||||
|     private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||||
|     protected static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||||
|     private static readonly string LogHeader = "[BULLETS PRIM]"; | ||||
| 
 | ||||
|     // _size is what the user passed. Scale is what we pass to the physics engine with the mesh. | ||||
|  | @ -1555,36 +1555,6 @@ public class BSPrim : BSPhysObject | |||
|         object ret = null; | ||||
|         switch (pFunct) | ||||
|         { | ||||
|             case BSScene.PhysFunctGetLinksetType: | ||||
|             { | ||||
|                 BSPrimLinkable myHandle = this as BSPrimLinkable; | ||||
|                 if (myHandle != null) | ||||
|                 { | ||||
|                     ret = (object)myHandle.LinksetType; | ||||
|                 } | ||||
|                 m_log.DebugFormat("{0} Extension.physGetLinksetType, type={1}", LogHeader, ret); | ||||
|                 break; | ||||
|             } | ||||
|             case BSScene.PhysFunctSetLinksetType: | ||||
|             { | ||||
|                 if (pParams.Length > 0) | ||||
|                 { | ||||
|                     BSLinkset.LinksetImplementation linksetType = (BSLinkset.LinksetImplementation)pParams[0]; | ||||
|                     BSPrimLinkable myHandle = this as BSPrimLinkable; | ||||
|                     if (myHandle != null && myHandle.Linkset.IsRoot(myHandle)) | ||||
|                     { | ||||
|                         PhysScene.TaintedObject("BSPrim.PhysFunctSetLinksetType", delegate() | ||||
|                         { | ||||
|                             // Cause the linkset type to change | ||||
|                             m_log.DebugFormat("{0} Extension.physSetLinksetType, oldType={1}, newType={2}", | ||||
|                                                 LogHeader, myHandle.Linkset.LinksetImpl, linksetType); | ||||
|                             myHandle.ConvertLinkset(linksetType); | ||||
|                         }); | ||||
|                     } | ||||
|                     ret = (object)(int)linksetType; | ||||
|                 } | ||||
|                 break; | ||||
|             } | ||||
|             default: | ||||
|                 ret = base.Extension(pFunct, pParams); | ||||
|                 break; | ||||
|  |  | |||
|  | @ -41,6 +41,8 @@ public class BSPrimLinkable : BSPrimDisplaced | |||
|     //    operations necessary for keeping the linkset created and, additionally, this | ||||
|     //    calls the linkset implementation for its creation and management. | ||||
| 
 | ||||
|     private static readonly string LogHeader = "[BULLETS PRIMLINKABLE]"; | ||||
| 
 | ||||
|     // This adds the overrides for link() and delink() so the prim is linkable. | ||||
| 
 | ||||
|     public BSLinkset Linkset { get; set; } | ||||
|  | @ -279,5 +281,44 @@ public class BSPrimLinkable : BSPrimDisplaced | |||
|         } | ||||
|         return ret; | ||||
|     } | ||||
| 
 | ||||
|     #region Extension | ||||
|     public override object Extension(string pFunct, params object[] pParams) | ||||
|     { | ||||
|         object ret = null; | ||||
|         switch (pFunct) | ||||
|         { | ||||
|             case BSScene.PhysFunctGetLinksetType: | ||||
|             { | ||||
|                 ret = (object)LinksetType; | ||||
|                 m_log.DebugFormat("{0} Extension.physGetLinksetType, type={1}", LogHeader, ret); | ||||
|                 break; | ||||
|             } | ||||
|             case BSScene.PhysFunctSetLinksetType: | ||||
|             { | ||||
|                 if (pParams.Length > 0) | ||||
|                 { | ||||
|                     BSLinkset.LinksetImplementation linksetType = (BSLinkset.LinksetImplementation)pParams[0]; | ||||
|                     if (Linkset.IsRoot(this)) | ||||
|                     { | ||||
|                         PhysScene.TaintedObject("BSPrim.PhysFunctSetLinksetType", delegate() | ||||
|                         { | ||||
|                             // Cause the linkset type to change | ||||
|                             m_log.DebugFormat("{0} Extension.physSetLinksetType, oldType={1}, newType={2}", | ||||
|                                                 LogHeader, Linkset.LinksetImpl, linksetType); | ||||
|                             ConvertLinkset(linksetType); | ||||
|                         }); | ||||
|                     } | ||||
|                     ret = (object)(int)linksetType; | ||||
|                 } | ||||
|                 break; | ||||
|             } | ||||
|             default: | ||||
|                 ret = base.Extension(pFunct, pParams); | ||||
|                 break; | ||||
|         } | ||||
|         return ret; | ||||
|     } | ||||
|     #endregion  // Extension | ||||
| } | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Robert Adams
						Robert Adams