
Uso:
Se pone al empezar cos_initialize y al acabar cos_quit ya que esto usa memoria dinámica y punteros y tiene que liberar, etc.
- cos_initialize(int radius_x, int radius_y, int increment_angle)
Esta función precalcula los puntos de todo el circulo de visión alrededor del sujeto, así nos ahorramos hacerlo después a cada momento.
---- radius_x y radius_y indican los radios del circulo de visión alrededor del sujeto. Para vista top-down normalmente deberían ser iguales (haciendo un circulo), pero se puede poner por ejemplo que radius_y sea la mitad de radius_x para simular un circulo en isométrico, u otros radios a gusto de cada uno.
---- increment_angle indica cada cuantos grados de quiere poner un punto precalculado, a menos grados más puntos habrá, por lo tanto más precisión pero menos rapidez de calculo.
- cos_quit
Esta función libera recursos. Si se quiere volver a usar los métodos despues de llamar a esta función hay que volver a usar cos_initialize.
- cos_generate_full_cone(cos_polygon * polygon, int sight_angle, int sight_range)
Esta función genera el cono sin tener en cuenta las durezas. Rellena la estructura cos_polygon pasada como parametro con los puntos necesarios. El procedimiento es simple:
---- Se crea un triangulo (se meten 3 vértices al polígono uno es dd esta el sujeto y 2 más del lado opuesto del cono). Esto se hace teniendo en cuenta 'sight_angle' que indica a que ángulo está mirando el sujeto, y 'sight_range' que indica que apertura tiene el campo de visión.
---- Luego entre los 2 puntos alejados del punto del sujeto se insertan los puntos precalculados pertinentes.
- cos_correct_full_cone(cos_polygon * polygon, int fpg_handle, map_handle, int cx, int cy, int color)
Coge un polígono que normalmente debería estar formado con la función anterior 'cos_generate_full_cone' y modifica sus puntos según las durezas del mapa indicado y su color. Hay que indicar también las coordenadas donde estaría el sujeto dentro del mapa.
El resultado es el polígono modificado por las durezas, la precisión viene dada por la función 'cos_initialize'
- cos_draw_polygon(cos_polygon * polygon, int cx, int cy, int color)
Función helper a modo de ejemplo que pinta una estructura de tipo 'cos_polygon' a pantalla uniendo sus puntos con lineas.