Explorar el Código

wxNviz: init lights

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@47398 15284696-431f-4ddb-bdfa-cd5b030d7da7
Anna Petrášová hace 14 años
padre
commit
4f88656a6b
Se han modificado 3 ficheros con 18 adiciones y 4 borrados
  1. 2 0
      include/ogsf_proto.h
  2. 2 0
      lib/nviz/nviz.c
  3. 14 4
      lib/ogsf/GS2.c

+ 2 - 0
include/ogsf_proto.h

@@ -88,6 +88,8 @@ void GS_set_att_defaults(float *, float *);
 int GS_surf_exists(int);
 int GS_new_surface(void);
 int GS_new_light(void);
+void GS_set_light_reset(int);
+int GS_get_light_reset(void);
 void GS_setlight_position(int, float, float, float, int);
 void GS_setlight_color(int, float, float, float);
 void GS_setlight_ambient(int, float, float, float);

+ 2 - 0
lib/nviz/nviz.c

@@ -39,6 +39,8 @@ void Nviz_init_data(nv_data * data)
     }
 
     /* lights */
+    GS_set_light_reset(1);
+    
     for (i = 0; i < MAX_LIGHTS - 1; i++) {
 	Nviz_new_light(data);
     }

+ 14 - 4
lib/ogsf/GS2.c

@@ -79,6 +79,7 @@ static geodisplay Gd;
 static struct Cell_head wind;
 static int Buffermode;
 static int Numlights = 0;
+static int Resetlight = 1;
 static int Modelshowing = 0;
 
 void void_func(void)
@@ -249,7 +250,16 @@ int GS_new_surface(void)
 
     return (-1);
 }
-
+void GS_set_light_reset(int i)
+{
+    Resetlight = i;
+    if (i)
+	Numlights = 0;
+}
+int GS_get_light_reset(void)
+{
+    return Resetlight;
+}
 /*!
    \brief Add new model light
 
@@ -258,11 +268,11 @@ int GS_new_surface(void)
  */
 int GS_new_light(void)
 {
-    static int first = 1;
     int i;
 
-    if (first) {
-	first = 0;
+    if (GS_get_light_reset()) {
+
+	GS_set_light_reset(0);
 
 	for (i = 0; i < MAX_LIGHTS; i++) {
 	    Gv.lights[i].position[X] = Gv.lights[i].position[Y] = 0.0;