aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs32
-rwxr-xr-xOpenSim/Region/Physics/BulletSPlugin/BSPrimLinkable.cs41
2 files changed, 42 insertions, 31 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
index d5b999d..4685b48 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs
@@ -41,7 +41,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin
41 [Serializable] 41 [Serializable]
42public class BSPrim : BSPhysObject 42public class BSPrim : BSPhysObject
43{ 43{
44 private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 44 protected static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
45 private static readonly string LogHeader = "[BULLETS PRIM]"; 45 private static readonly string LogHeader = "[BULLETS PRIM]";
46 46
47 // _size is what the user passed. Scale is what we pass to the physics engine with the mesh. 47 // _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
1555 object ret = null; 1555 object ret = null;
1556 switch (pFunct) 1556 switch (pFunct)
1557 { 1557 {
1558 case BSScene.PhysFunctGetLinksetType:
1559 {
1560 BSPrimLinkable myHandle = this as BSPrimLinkable;
1561 if (myHandle != null)
1562 {
1563 ret = (object)myHandle.LinksetType;
1564 }
1565 m_log.DebugFormat("{0} Extension.physGetLinksetType, type={1}", LogHeader, ret);
1566 break;
1567 }
1568 case BSScene.PhysFunctSetLinksetType:
1569 {
1570 if (pParams.Length > 0)
1571 {
1572 BSLinkset.LinksetImplementation linksetType = (BSLinkset.LinksetImplementation)pParams[0];
1573 BSPrimLinkable myHandle = this as BSPrimLinkable;
1574 if (myHandle != null && myHandle.Linkset.IsRoot(myHandle))
1575 {
1576 PhysScene.TaintedObject("BSPrim.PhysFunctSetLinksetType", delegate()
1577 {
1578 // Cause the linkset type to change
1579 m_log.DebugFormat("{0} Extension.physSetLinksetType, oldType={1}, newType={2}",
1580 LogHeader, myHandle.Linkset.LinksetImpl, linksetType);
1581 myHandle.ConvertLinkset(linksetType);
1582 });
1583 }
1584 ret = (object)(int)linksetType;
1585 }
1586 break;
1587 }
1588 default: 1558 default:
1589 ret = base.Extension(pFunct, pParams); 1559 ret = base.Extension(pFunct, pParams);
1590 break; 1560 break;
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrimLinkable.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrimLinkable.cs
index 38d1f88..fc639ad 100755
--- a/OpenSim/Region/Physics/BulletSPlugin/BSPrimLinkable.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrimLinkable.cs
@@ -41,6 +41,8 @@ public class BSPrimLinkable : BSPrimDisplaced
41 // operations necessary for keeping the linkset created and, additionally, this 41 // operations necessary for keeping the linkset created and, additionally, this
42 // calls the linkset implementation for its creation and management. 42 // calls the linkset implementation for its creation and management.
43 43
44 private static readonly string LogHeader = "[BULLETS PRIMLINKABLE]";
45
44 // This adds the overrides for link() and delink() so the prim is linkable. 46 // This adds the overrides for link() and delink() so the prim is linkable.
45 47
46 public BSLinkset Linkset { get; set; } 48 public BSLinkset Linkset { get; set; }
@@ -279,5 +281,44 @@ public class BSPrimLinkable : BSPrimDisplaced
279 } 281 }
280 return ret; 282 return ret;
281 } 283 }
284
285 #region Extension
286 public override object Extension(string pFunct, params object[] pParams)
287 {
288 object ret = null;
289 switch (pFunct)
290 {
291 case BSScene.PhysFunctGetLinksetType:
292 {
293 ret = (object)LinksetType;
294 m_log.DebugFormat("{0} Extension.physGetLinksetType, type={1}", LogHeader, ret);
295 break;
296 }
297 case BSScene.PhysFunctSetLinksetType:
298 {
299 if (pParams.Length > 0)
300 {
301 BSLinkset.LinksetImplementation linksetType = (BSLinkset.LinksetImplementation)pParams[0];
302 if (Linkset.IsRoot(this))
303 {
304 PhysScene.TaintedObject("BSPrim.PhysFunctSetLinksetType", delegate()
305 {
306 // Cause the linkset type to change
307 m_log.DebugFormat("{0} Extension.physSetLinksetType, oldType={1}, newType={2}",
308 LogHeader, Linkset.LinksetImpl, linksetType);
309 ConvertLinkset(linksetType);
310 });
311 }
312 ret = (object)(int)linksetType;
313 }
314 break;
315 }
316 default:
317 ret = base.Extension(pFunct, pParams);
318 break;
319 }
320 return ret;
321 }
322 #endregion // Extension
282} 323}
283} 324}