public override void Update(GameTime gameTime) { TeleportAnimation.Update(gameTime); PolygonCollisionResult FinalCollisionResult = new PolygonCollisionResult(Vector2.Zero, -1); foreach (RobotAnimation ActiveRobot in Owner.DicRobot.Values) { foreach (CollisionPolygon EnemyCollision in ActiveRobot.ListCollisionPolygon) { PolygonCollisionResult CollisionResult = Polygon.PolygonCollisionSAT(TeleportPolygon, EnemyCollision.ActivePolygon, ActiveRobot.Speed); if (CollisionResult.Distance >= 0 && CollisionResult.Distance > FinalCollisionResult.Distance) { ActiveRobot.Speed += _TeleportSpeed; ActiveRobot.Move(_TeleportOffset); Owner.ChangeRobotLayer(ActiveRobot, _LayerIndex); } } } }