public static void AttachConstraint(this IConstraintContainer world, TypedConstraint typedConstraint) { ConstraintCustomData cd = new ConstraintCustomData(world.GetNewConstraintId()); typedConstraint.UserObject = cd; world.Register(typedConstraint); }
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; } }
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); }