Unit: Camara

Description:
Implementa una cámara que se encarga de representar los objetos en 2D.
Cambios:
    10/11/00: Se agrega el manejo de excepciones para evitar usar la camara cuando el cameraman fue destruido.
              Para lograr esto se crea una excepcion (ECameramanDestruido) que se lanza cuando hay una excepcion
              de violacion de acceso a memoria. Esta excepcion debe ser manejada por quien meneje la camara y puede
              ser lanzada por mGetDebugInfo o mProyectar.
    01/12/00: Se elimina el atributo aApertura porque era absolutamente inecesario.
              Se cambia la estructura interna para que el filtrado de los objetos los realice un cFiltro.
    07/12/00: Se agregan nuevos métodos (protegidos) para obtener información de la cámara para poder crear subclases,
              para lo cual tambien se hace virtual el método mProyectar.
    08/12/00: Se quita el método para setear el filtro y se agrega un contructor que admite un filtro para reemplazarlo.
              Se cambia esta clase para que sea abstracta. Se deja la implementacion del método mProyectar para las
              subclases exlusivamente ya que ahora es abstracto. La cámara frontal (que antes se implementaba en
              esta unidad), ahora está implementado la unidad Camaras al igual que el resto.
    


Classes:
cCamara : Implementa una cámara que se encarga de representar los objetos en 2D.
ECameramanDestruido : Excepcion producida por la cámara si se utiliza cuando el cameraman fue destruido

Functions:
function listSort( item1, item2: pointer ): integer;
Funcion para ordenar los elementos de la lista que se devuelve
Parameters
   item1 : Item a comparar (puntero)
   item2 : Item a comparar (puntero)
Returns
   1 si item1 > item2
    -1 si item1 < item2
    0 si item1 = item2