public void DetermineOverlaps(ISimplePhysicsEntity entity) { this.DetermineOverlapsInternal((IPhysicsEntity)entity, this.CameraManager.Viewpoint); }
public bool Update(ISimplePhysicsEntity entity, bool simple, bool keepInFront) { QueryOptions queryOptions = QueryOptions.None; if (entity.Background) { queryOptions |= QueryOptions.Background; } if (simple) { queryOptions |= QueryOptions.Simple; } if (entity is InstancePhysicsState) { (entity as InstancePhysicsState).UpdatingPhysics = true; } if (!simple) { this.MoveAlongWithGround((IPhysicsEntity)entity, queryOptions); } Vector3?clampToGroundDistance = new Vector3?(); bool grounded = entity.Grounded; MultipleHits <CollisionResult> horizontalResults; MultipleHits <CollisionResult> verticalResults; if (!entity.IgnoreCollision) { this.CollisionManager.CollideRectangle(entity.Center, entity.Velocity, entity.Size, queryOptions, entity.Elasticity, out horizontalResults, out verticalResults); bool flag = (double)this.CollisionManager.GravityFactor < 0.0; FaceOrientation faceOrientation = this.CameraManager.VisibleOrientation; if (entity.Background) { faceOrientation = FezMath.GetOpposite(faceOrientation); } if ((flag ? ((double)entity.Velocity.Y > 0.0 ? 1 : 0) : ((double)entity.Velocity.Y < 0.0 ? 1 : 0)) != 0 && BoxCollisionResultExtensions.AnyCollided(verticalResults)) { MultipleHits <TrileInstance> ground = entity.Ground; CollisionResult collisionResult1 = verticalResults.NearLow; CollisionResult collisionResult2 = verticalResults.FarHigh; if (collisionResult2.Destination != null && collisionResult2.Destination.GetRotatedFace(faceOrientation) != CollisionType.None) { ground.FarHigh = collisionResult2.Destination; if (collisionResult2.Collided && collisionResult2.ShouldBeClamped) { clampToGroundDistance = new Vector3?(collisionResult2.NearestDistance); } } else { ground.FarHigh = (TrileInstance)null; } if (collisionResult1.Destination != null && collisionResult1.Destination.GetRotatedFace(faceOrientation) != CollisionType.None) { ground.NearLow = collisionResult1.Destination; if (collisionResult1.Collided && collisionResult1.ShouldBeClamped) { clampToGroundDistance = new Vector3?(collisionResult1.NearestDistance); } } else { ground.NearLow = (TrileInstance)null; } entity.Ground = ground; } else { entity.Ground = new MultipleHits <TrileInstance>(); } } else { horizontalResults = new MultipleHits <CollisionResult>(); verticalResults = new MultipleHits <CollisionResult>(); } bool flag1 = this.UpdateInternal((IPhysicsEntity)entity, horizontalResults, verticalResults, clampToGroundDistance, grounded, keepInFront, false, simple); if (entity is InstancePhysicsState) { (entity as InstancePhysicsState).UpdatingPhysics = false; } return(flag1); }
public bool Update(ISimplePhysicsEntity entity) { return(this.Update(entity, false, true)); }
public void DetermineOverlaps(ISimplePhysicsEntity entity) { this.DetermineOverlapsInternal((IPhysicsEntity) entity, this.CameraManager.Viewpoint); }
public bool Update(ISimplePhysicsEntity entity, bool simple, bool keepInFront) { QueryOptions queryOptions = QueryOptions.None; if (entity.Background) queryOptions |= QueryOptions.Background; if (simple) queryOptions |= QueryOptions.Simple; if (entity is InstancePhysicsState) (entity as InstancePhysicsState).UpdatingPhysics = true; if (!simple) this.MoveAlongWithGround((IPhysicsEntity) entity, queryOptions); Vector3? clampToGroundDistance = new Vector3?(); bool grounded = entity.Grounded; MultipleHits<CollisionResult> horizontalResults; MultipleHits<CollisionResult> verticalResults; if (!entity.IgnoreCollision) { this.CollisionManager.CollideRectangle(entity.Center, entity.Velocity, entity.Size, queryOptions, entity.Elasticity, out horizontalResults, out verticalResults); bool flag = (double) this.CollisionManager.GravityFactor < 0.0; FaceOrientation faceOrientation = this.CameraManager.VisibleOrientation; if (entity.Background) faceOrientation = FezMath.GetOpposite(faceOrientation); if ((flag ? ((double) entity.Velocity.Y > 0.0 ? 1 : 0) : ((double) entity.Velocity.Y < 0.0 ? 1 : 0)) != 0 && BoxCollisionResultExtensions.AnyCollided(verticalResults)) { MultipleHits<TrileInstance> ground = entity.Ground; CollisionResult collisionResult1 = verticalResults.NearLow; CollisionResult collisionResult2 = verticalResults.FarHigh; if (collisionResult2.Destination != null && collisionResult2.Destination.GetRotatedFace(faceOrientation) != CollisionType.None) { ground.FarHigh = collisionResult2.Destination; if (collisionResult2.Collided && collisionResult2.ShouldBeClamped) clampToGroundDistance = new Vector3?(collisionResult2.NearestDistance); } else ground.FarHigh = (TrileInstance) null; if (collisionResult1.Destination != null && collisionResult1.Destination.GetRotatedFace(faceOrientation) != CollisionType.None) { ground.NearLow = collisionResult1.Destination; if (collisionResult1.Collided && collisionResult1.ShouldBeClamped) clampToGroundDistance = new Vector3?(collisionResult1.NearestDistance); } else ground.NearLow = (TrileInstance) null; entity.Ground = ground; } else entity.Ground = new MultipleHits<TrileInstance>(); } else { horizontalResults = new MultipleHits<CollisionResult>(); verticalResults = new MultipleHits<CollisionResult>(); } bool flag1 = this.UpdateInternal((IPhysicsEntity) entity, horizontalResults, verticalResults, clampToGroundDistance, grounded, keepInFront, false, simple); if (entity is InstancePhysicsState) (entity as InstancePhysicsState).UpdatingPhysics = false; return flag1; }
public bool Update(ISimplePhysicsEntity entity) { return this.Update(entity, false, true); }