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]
|
[Serializable]
|
||||||
public class BSPrim : BSPhysObject
|
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]";
|
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.
|
// _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;
|
object ret = null;
|
||||||
switch (pFunct)
|
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:
|
default:
|
||||||
ret = base.Extension(pFunct, pParams);
|
ret = base.Extension(pFunct, pParams);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -41,6 +41,8 @@ public class BSPrimLinkable : BSPrimDisplaced
|
||||||
// operations necessary for keeping the linkset created and, additionally, this
|
// operations necessary for keeping the linkset created and, additionally, this
|
||||||
// calls the linkset implementation for its creation and management.
|
// 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.
|
// This adds the overrides for link() and delink() so the prim is linkable.
|
||||||
|
|
||||||
public BSLinkset Linkset { get; set; }
|
public BSLinkset Linkset { get; set; }
|
||||||
|
@ -279,5 +281,44 @@ public class BSPrimLinkable : BSPrimDisplaced
|
||||||
}
|
}
|
||||||
return ret;
|
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