BulletSim: set linkset type to be prim specific rather than a simulator
wide default. This allows individual prims to differ in the underlying linkset implementation.cpu-performance
parent
23516717e4
commit
425d2a2a97
|
@ -33,14 +33,6 @@ using OMV = OpenMetaverse;
|
|||
namespace OpenSim.Region.Physics.BulletSPlugin
|
||||
{
|
||||
|
||||
// A BSPrim can get individual information about its linkedness attached
|
||||
// to it through an instance of a subclass of LinksetInfo.
|
||||
// Each type of linkset will define the information needed for its type.
|
||||
public abstract class BSLinksetInfo
|
||||
{
|
||||
public virtual void Clear() { }
|
||||
}
|
||||
|
||||
public abstract class BSLinkset
|
||||
{
|
||||
// private static string LogHeader = "[BULLETSIM LINKSET]";
|
||||
|
@ -56,15 +48,15 @@ public abstract class BSLinkset
|
|||
{
|
||||
BSLinkset ret = null;
|
||||
|
||||
switch ((int)BSParam.LinksetImplementation)
|
||||
switch (parent.LinksetType)
|
||||
{
|
||||
case (int)LinksetImplementation.Constraint:
|
||||
case LinksetImplementation.Constraint:
|
||||
ret = new BSLinksetConstraints(physScene, parent);
|
||||
break;
|
||||
case (int)LinksetImplementation.Compound:
|
||||
case LinksetImplementation.Compound:
|
||||
ret = new BSLinksetCompound(physScene, parent);
|
||||
break;
|
||||
case (int)LinksetImplementation.Manual:
|
||||
case LinksetImplementation.Manual:
|
||||
// ret = new BSLinksetManual(physScene, parent);
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -238,7 +238,6 @@ public sealed class BSLinksetCompound : BSLinkset
|
|||
// there will already be a rebuild scheduled.
|
||||
DetailLog("{0},BSLinksetCompound.UpdateProperties,couldNotUpdateChild.schedulingRebuild,whichUpdated={1}",
|
||||
updated.LocalID, whichUpdated);
|
||||
updated.LinksetInfo = null; // setting to 'null' causes relative position to be recomputed.
|
||||
ScheduleRebuild(updated);
|
||||
}
|
||||
}
|
||||
|
@ -294,7 +293,6 @@ public sealed class BSLinksetCompound : BSLinkset
|
|||
child.LocalID, child.PhysBody.AddrString);
|
||||
|
||||
// Cause the child's body to be rebuilt and thus restored to normal operation
|
||||
child.LinksetInfo = null;
|
||||
child.ForceBodyShapeRebuild(false);
|
||||
|
||||
if (!HasAnyChildren)
|
||||
|
|
|
@ -41,12 +41,15 @@ public class BSPrimLinkable : BSPrimDisplaced
|
|||
// The index of this child prim.
|
||||
public int LinksetChildIndex { get; set; }
|
||||
|
||||
public BSLinksetInfo LinksetInfo { get; set; }
|
||||
public BSLinkset.LinksetImplementation LinksetType { get; set; }
|
||||
|
||||
public BSPrimLinkable(uint localID, String primName, BSScene parent_scene, OMV.Vector3 pos, OMV.Vector3 size,
|
||||
OMV.Quaternion rotation, PrimitiveBaseShape pbs, bool pisPhysical)
|
||||
: base(localID, primName, parent_scene, pos, size, rotation, pbs, pisPhysical)
|
||||
{
|
||||
// Default linkset implementation for this prim
|
||||
LinksetType = (BSLinkset.LinksetImplementation)BSParam.LinksetImplementation;
|
||||
|
||||
Linkset = BSLinkset.Factory(PhysScene, this);
|
||||
|
||||
PhysScene.TaintedObject("BSPrimLinksetCompound.Refresh", delegate()
|
||||
|
|
Loading…
Reference in New Issue