public static void AttachConstraint(this IConstraintContainer world, TypedConstraint typedConstraint)
        {
            ConstraintCustomData cd = new ConstraintCustomData(world.GetNewConstraintId());

            typedConstraint.UserObject = cd;
            world.Register(typedConstraint);
        }
Beispiel #2
0
        public void Evaluate(int SpreadMax)
        {
            IConstraintContainer inputWorld = this.contraintContainer[0];

            if (inputWorld != null)
            {
                this.persister.UpdateWorld(inputWorld);

                for (int i = 0; i < SpreadMax; i++)
                {
                    if (FCreate[i])
                    {
                        RigidBody body = FBody[i];
                        if (body != null)
                        {
                            HingeConstraint cst = new HingeConstraint(body, this.FPivot1[i].ToBulletVector(), this.FAxis[i].ToBulletVector());
                            cst.SetLimit(this.FLimitLow[i] * (float)Math.PI * 2.0f, this.FLimitHigh[i] * (float)Math.PI * 2.0f);
                            cst.DebugDrawSize = 5.0f;
                            this.persister.Append(cst);
                        }
                    }
                }

                this.persister.Flush();
            }
            else
            {
                this.constraintsOutput.SliceCount = 0;
            }
        }
        public void Evaluate(int SpreadMax)
        {
            IConstraintContainer inputWorld = this.contraintContainer[0];

            if (inputWorld != null)
            {
                this.persister.UpdateWorld(inputWorld);

                for (int i = 0; i < SpreadMax; i++)
                {
                    if (FCreate[i])
                    {
                        RigidBodyPair pair = FPairs[i];
                        if (pair.body1 != null && pair.body2 != null)
                        {
                            Point2PointConstraint cst = new Point2PointConstraint(pair.body1, pair.body2,
                                                                                  this.FPivot1[i].ToBulletVector(), this.FPivot2[i].ToBulletVector());
                            cst.Setting.Damping      = this.FDamping[i];
                            cst.Setting.ImpulseClamp = this.FImpulseClamp[i];
                            cst.Setting.Tau          = this.FTau[i];

                            this.persister.Append(cst);
                        }
                    }
                }

                this.persister.Flush();
            }
            else
            {
                this.constraintsOutput.SliceCount = 0;
            }
        }
        public void Evaluate(int SpreadMax)
        {
            IConstraintContainer inputWorld = this.contraintContainer[0];

            if (inputWorld != null)
            {
                this.persister.UpdateWorld(inputWorld);

                for (int i = 0; i < SpreadMax; i++)
                {
                    if (FCreate[i])
                    {
                        RigidBody body = FBody[i];
                        if (body != null)
                        {
                            SlimDX.Matrix    m   = this.FFrame[i];
                            SliderConstraint cst = new SliderConstraint(body, *(BulletSharp.Matrix *) & m, true);
                            cst.LowerLinLimit     = this.FLinearLimit[i].X;
                            cst.UpperLinLimit     = this.FLinearLimit[i].Y;
                            cst.LowerAngularLimit = this.FAngularLimit[i].X * (float)Math.PI * 2.0f;
                            cst.UpperAngularLimit = this.FAngularLimit[i].Y * (float)Math.PI * 2.0f;
                            cst.DebugDrawSize     = 5.0f;
                            this.persister.Append(cst);
                        }
                    }
                }

                this.persister.Flush();
            }
            else
            {
                this.constraintsOutput.SliceCount = 0;
            }
        }
Beispiel #5
0
        public void UpdateWorld(IConstraintContainer inputWorld)
        {
            if (currentWorld != inputWorld)
            {
                if (currentWorld != null)
                {
                    currentWorld.WorldHasReset     -= OnWorldReset;
                    currentWorld.ConstraintDeleted -= OnConstraintDeleted;
                }

                this.constraintList.Clear();
                this.currentWorld = inputWorld;

                if (currentWorld != null)
                {
                    currentWorld.WorldHasReset     += OnWorldReset;
                    currentWorld.ConstraintDeleted += OnConstraintDeleted;
                }
            }
        }
 public void UpdateWorld(IConstraintContainer container)
 {
     this.listener.UpdateWorld(container);
 }