private bool velocityCorrection() { if (((AdditionalFixtureData)owner.getBoundsFixture().UserData).isTouching) { Console.WriteLine("is Touching"); } if (owner.body.LinearVelocity == Vector2.Zero) { return(false); } if (((AdditionalFixtureData)owner.getBoundsFixture().UserData).isTouching) { Vector2 velocityVec = owner.body.LinearVelocity; Console.WriteLine("veclocity correction raw " + velocityVec); velocityVec.Normalize(); Console.WriteLine("veclocity correction normalize " + velocityVec); velocityVec *= owner.velocity * Bloodbender.pixelToMeter; Console.WriteLine("veclocity correction to " + velocityVec + " speed : " + velocityVec.Length()); owner.body.LinearVelocity = velocityVec; return(true); } return(false); }
private float distanceWithPhysicObj(PhysicObj obj) { if (obj == null) { return(-1); } Fixture proxyAfix = owner.getBoundsFixture(); Fixture proxyBfix = obj.getBoundsFixture(); if (proxyAfix == null || proxyBfix == null) { return(-1); } DistanceProxy proxyA = new DistanceProxy(); proxyA.Set(proxyAfix.Shape, 0); DistanceProxy proxyB = new DistanceProxy(); proxyB.Set(proxyBfix.Shape, 1); DistanceInput distInput = new DistanceInput(); distInput.ProxyA = proxyA; distInput.ProxyB = proxyB; Transform transformA; owner.body.GetTransform(out transformA); Transform transformB; obj.body.GetTransform(out transformB); distInput.TransformA = transformA; distInput.TransformB = transformB; DistanceOutput distout = new DistanceOutput(); SimplexCache simplexCache = new SimplexCache(); Distance.ComputeDistance(out distout, out simplexCache, distInput); return(distout.Distance); }