diff --git a/map_editor/browser.c b/map_editor/browser.c
index 6ec00917d..e730eb044 100644
--- a/map_editor/browser.c
+++ b/map_editor/browser.c
@@ -147,6 +147,54 @@ void display_browser()
display_window(browser_win);
}
+
+void draw_browser_item(window_info *win, int index)
+{
+ int i=cp,valid_object=0;
+ char fn[80];
+ float scale;
+ int pos_x_increment;
+ int pos_y_increment;
+
+ if(i+index
pos_x + pos_x_increment, window_height - win->pos_y - pos_y_increment, 200, 180);
+ glClearStencil(0);
+ glClear(GL_DEPTH_BUFFER_BIT);
+#ifdef LINUX
+ safe_strncpy(fn, exec_path, sizeof(fn));
+#else
+ //Fedora: don't ask me why, if you use exec_path, e3d files are not found
+ safe_strncpy(fn, "."/*exec_path*/, sizeof(fn));
+#endif
+ safe_strcat(fn, Dir[cd].Files[i + index], sizeof(fn));
+ valid_object = setobject(index, fn, Dir[cd].xrot[i + index], Dir[cd].yrot[i + index], Dir[cd].zrot[i + index]);
+ if (valid_object) {
+ glPushMatrix();
+ fprintf(stderr, "zoom_level: %f\n", zoom_level);
+ fprintf(stderr, "max_size: %f\n", o3d[index].e3d_data->max_size);
+ scale = zoom_level / o3d[index].e3d_data->max_size;
+ fprintf(stderr, "scale: %f\n", scale);
+ o3d[index].x_pos -= zoom_level / scale + 1 / scale;
+ o3d[index].y_pos -= zoom_level / scale + 1 / scale;
+ fprintf(stderr, "x_pos: %f\n", o3d[index].x_pos);
+ fprintf(stderr, "y_pos: %f\n", o3d[index].y_pos);
+ glScalef(scale, scale, scale);
+ //glScalef(Dir[cd].size[i],Dir[cd].size[i],Dir[cd].size[i]);
+ draw_3d_object(&o3d[index]);
+ glPopMatrix();
+ }
+ }
+}
+
int display_browser_handler(window_info *win)
{
//title bar
@@ -216,10 +264,9 @@ int display_browser_handler(window_info *win)
}
}
}else{ // display specified dir
- int i=cp,valid_object=0;
+ int i=cp;
float tz=zoom_level;
- char fn[80];
-
+
// Prepare to render
Leave2DMode();
glEnable(GL_CULL_FACE);
@@ -243,83 +290,10 @@ int display_browser_handler(window_info *win)
glColor4f(1.0, 1.0, 1.0, 1.0);
- glViewport(win->pos_x,window_height-win->pos_y-150,200,150);
- glClearStencil(0);
- glClear (GL_DEPTH_BUFFER_BIT);
-#ifdef LINUX
- safe_strncpy(fn, exec_path, sizeof(fn));
-#else
- //Fedora: don't ask me why, if you use exec_path, e3d files are not found
- safe_strncpy(fn, "."/*exec_path*/, sizeof(fn));
-#endif
- safe_strcat(fn, Dir[cd].Files[i], sizeof(fn));
- valid_object=setobject(0,fn,Dir[cd].xrot[i],Dir[cd].yrot[i],Dir[cd].zrot[i]);
- if(valid_object){
- glPushMatrix();
- glScalef(Dir[cd].size[i],Dir[cd].size[i],Dir[cd].size[i]);
- draw_3d_object(&o3d[0]);
- glPopMatrix();
- }
-
- if(i+1pos_x+200,window_height-win->pos_y-150,200,150);
- glClearStencil(0);
- glClear (GL_DEPTH_BUFFER_BIT);
-#ifdef LINUX
- safe_strncpy(fn, exec_path, sizeof(fn));
-#else
- //Fedora: don't ask me why, if you use exec_path, e3d files are not found
- safe_strncpy(fn, "."/*exec_path*/, sizeof(fn));
-#endif
- safe_strcat(fn, Dir[cd].Files[i+1], sizeof(fn));
- valid_object=setobject(1,fn,Dir[cd].xrot[i+1],Dir[cd].yrot[i+1],Dir[cd].zrot[i+1]);
- if(valid_object){
- glPushMatrix();
- glScalef(Dir[cd].size[i+1],Dir[cd].size[i+1],Dir[cd].size[i+1]);
- draw_3d_object(&o3d[1]);
- glPopMatrix();
- }
- }
-
- if(i+2pos_x,window_height-win->pos_y-350,200,150);
- glClearStencil(0);
- glClear (GL_DEPTH_BUFFER_BIT);
-#ifdef LINUX
- safe_strncpy(fn, exec_path, sizeof(fn));
-#else
- //Fedora: don't ask me why, if you use exec_path, e3d files are not found
- safe_strncpy(fn, "."/*exec_path*/, sizeof(fn));
-#endif
- safe_strcat(fn, Dir[cd].Files[i+2], sizeof(fn));
- valid_object=setobject(2,fn,Dir[cd].xrot[i+2],Dir[cd].yrot[i+2],Dir[cd].zrot[i+2]);
- if(valid_object){
- glPushMatrix();
- glScalef(Dir[cd].size[i+2],Dir[cd].size[i+2],Dir[cd].size[i+2]);
- draw_3d_object(&o3d[2]);
- glPopMatrix();
- }
- }
-
- if(i+3pos_x+200,window_height-win->pos_y-350,200,150);
- glClearStencil(0);
- glClear (GL_DEPTH_BUFFER_BIT);
-#ifdef LINUX
- safe_strncpy(fn, exec_path, sizeof(fn));
-#else
- //Fedora: don't ask me why, if you use exec_path, e3d files are not found
- safe_strncpy(fn, "."/*exec_path*/, sizeof(fn));
-#endif
- safe_strcat(fn, Dir[cd].Files[i+3], sizeof(fn));
- valid_object=setobject(3,fn,Dir[cd].xrot[i+3],Dir[cd].yrot[i+3],Dir[cd].zrot[i+3]);
- if(valid_object){
- glPushMatrix();
- glScalef(Dir[cd].size[i+3],Dir[cd].size[i+3],Dir[cd].size[i+3]);
- draw_3d_object(&o3d[3]);
- glPopMatrix();
- }
- }
+ draw_browser_item(win,0);
+ draw_browser_item(win,1);
+ draw_browser_item(win,2);
+ draw_browser_item(win,3);
zoom_level=tz;
window_resize();