internal void Setup(ConvexContactManifoldConstraint contactManifoldConstraint) { this.contactManifoldConstraint = contactManifoldConstraint; isActive = true; entityA = contactManifoldConstraint.EntityA; entityB = contactManifoldConstraint.EntityB; }
internal void CleanUp() { accumulatedImpulse = new Vector2(); contactManifoldConstraint = null; entityA = null; entityB = null; isActive = false; }
internal void Setup(ConvexContactManifoldConstraint contactManifoldConstraint) { this.contactManifoldConstraint = contactManifoldConstraint; isActive = true; linearA = new Matrix2x3(); entityA = contactManifoldConstraint.EntityA; entityB = contactManifoldConstraint.EntityB; }
internal void Setup(ConvexContactManifoldConstraint contactManifoldConstraint) { this.contactManifoldConstraint = contactManifoldConstraint; isActive = true; entityA = contactManifoldConstraint.EntityA; entityB = contactManifoldConstraint.EntityB; entityADynamic = entityA != null && entityA.isDynamic; entityBDynamic = entityB != null && entityB.isDynamic; }
public static unsafe void Test() { ContactPenetrationConstraint constraint = new ContactPenetrationConstraint(); Contact contact = new Contact { Normal = new Vector3(0, 1, 0), PenetrationDepth = 0, Position = new Vector3() }; var pairHandler = new BoxPairHandler(); var a = new Entity(new BoxShape(1, 1, 1), 1) { Position = new Vector3(0, 0, 0), Orientation = Quaternion.Identity, LinearVelocity = new Vector3(0, 0, 0) }; var b = new Entity(new BoxShape(1, 1, 1), 1) { Position = new Vector3(0, 1, 0), Orientation = Quaternion.Identity, LinearVelocity = new Vector3(0, 0, 0) }; pairHandler.Initialize(a.CollisionInformation, b.CollisionInformation); ContactManifoldConstraint manifoldConstraint = new ConvexContactManifoldConstraint(pairHandler); manifoldConstraint.Initialize(a, b); constraint.Setup(manifoldConstraint, contact); float dt = 1 / 60f; float inverseDt = 1 / dt; constraint.Update(dt); constraint.ExclusiveUpdate(); constraint.SolveIteration(); const int testCount = VectorizedConstraintTest.TestCount * 4; const int iterationCount = VectorizedConstraintTest.IterationCount; var startTime = Stopwatch.GetTimestamp() / (double)Stopwatch.Frequency; for (int i = 0; i < testCount; ++i) { constraint.Update(dt); constraint.ExclusiveUpdate(); for (int iterationIndex = 0; iterationIndex < iterationCount; ++iterationIndex) { constraint.SolveIteration(); } } var endtime = Stopwatch.GetTimestamp() / (double)Stopwatch.Frequency; Console.WriteLine($"Scalar Old: {endtime - startTime}"); }
internal void CleanUp() { accumulatedImpulse = 0; contactManifoldConstraint = null; entityA = null; entityB = null; isActive = false; }
internal void CleanUp() { accumulatedImpulse = new System.Numerics.Vector2(); contactManifoldConstraint = null; entityA = null; entityB = null; isActive = false; }
protected ConvexConstraintPairHandler() { contactConstraint = new ConvexContactManifoldConstraint(this); }