public CollisionResult Collide(float s, PhysicsGroupType groupType, PhysicsObject physicsObject, CollisionIdentity identity) { CollisionResult response = CollisionResult.None; if (groupType == PhysicsGroupType.Physical) { response = Weapon.Collide(s, groupType, physicsObject, identity); CollisionResult playerCollision = physicsObject.Collide(s, collision); if (playerCollision) { if (collisionResult) { //Not sure if necessary, but if we have multiple collisions in a single frame, stop all movement. collisionResult.PositionA = collision.Position; collisionResult.VelocityA = Vector2.Zero; } else { collisionResult = playerCollision.Switch(); } response = playerCollision; TakeDamage(identity); } } return(response); }
public CollisionResult Collide(float s, PhysicsGroupType groupType, PhysicsObject physicsObject, CollisionIdentity identity) { CollisionResult response = CollisionResult.None; if (groupType == PhysicsGroupType.Physical) { for (int i = bullets.Count - 1; i >= 0; i--) { Circle bullet = bullets[i]; CollisionResult bulletCollision = physicsObject.Collide(s, bullet); if (bulletCollision) { bullets.RemoveAt(i); //bullet.Position = bulletCollision.PositionB; //bullet.Velocity = bulletCollision.VelocityB; bulletCollision.Identity = bulletIdentity; response = bulletCollision; } } CollisionResult result = physicsObject.Collide(s, collision); if (result) { takeDamage(identity); response = result; } } return(response); }
public void Collide(float s, PhysicsGroupType groupType, ICollide other) { if (groupType == PhysicsGroupType.Physical) { for (int i = bullets.Count - 1; i >= 0; i--) { Circle bullet = bullets[i]; CollisionResult bulletCollision = other.Collide(s, groupType, bullet, bulletIdentity); if (bulletCollision) { bullets.RemoveAt(i); //bullet.Position = bulletCollision.PositionB; //bullet.Velocity = bulletCollision.VelocityB; } } CollisionResult result = other.Collide(s, groupType, collision, null); if (result) { if (collisionResult) { collisionResult.PositionA = collision.Position; collisionResult.VelocityA = Vector2.Zero; } else { collisionResult = result; } takeDamage(result.Identity); } } }
public PhysicsObject GetCollisionObject(PhysicsGroupType groupType) { if (groupType == PhysicsGroupType.Physical) { return(collision); } return(null); }
public CollisionResult Collide(float s, PhysicsGroupType groupType, PhysicsObject physicsObject, CollisionIdentity identity) { CollisionResult response = CollisionResult.None; response = CollideBulletsSimple(s, physicsObject, bullets, bulletIdentity, bulletsToRemove); response = CollideBulletsSimple(s, physicsObject, cannonballs, cannonballIdentity, cannonballsToRemove); response = CollideBulletsSimple(s, physicsObject, snipes, snipeIdentity, snipesToRemove); return(response); }
private void CollideBulletsSimple(float s, ICollide other, PhysicsGroupType groupType, List <Circle> list, CollisionIdentity identity, List <Circle> removalList) { for (int i = list.Count - 1; i >= 0; i--) { Circle c = list[i]; CollisionResult collisionResult = other.Collide(s, groupType, c, identity); if (collisionResult) { removalList.Add(c); } } }
public void Collide(float s, PhysicsGroupType groupType, ICollide other) { if (groupType == PhysicsGroupType.Physical) { Weapon.Collide(s, groupType, other); CollisionResult playerCollision = other.Collide(s, groupType, this.collision, null); if (playerCollision) { if (collisionResult) { //Not sure if necessary, but if we have multiple collisions in a single frame, stop all movement. collisionResult.PositionA = collision.Position; collisionResult.VelocityA = Vector2.Zero; } else { collisionResult = playerCollision; } TakeDamage(playerCollision.Identity); } } }
public PhysicsGroup(PhysicsGroupType groupType) { this.groupType = groupType; this.group = new List <ICollide>(); }
public void Collide(float s, PhysicsGroupType groupType, ICollide other) { CollideBulletsSimple(s, other, groupType, bullets, bulletIdentity, bulletsToRemove); CollideBulletsSimple(s, other, groupType, cannonballs, cannonballIdentity, cannonballsToRemove); CollideBulletsSimple(s, other, groupType, snipes, snipeIdentity, snipesToRemove); }