diff --git a/panda/src/testbed/pview.cxx b/panda/src/testbed/pview.cxx index b8f886dd28..2cd3068d4a 100644 --- a/panda/src/testbed/pview.cxx +++ b/panda/src/testbed/pview.cxx @@ -17,6 +17,7 @@ //////////////////////////////////////////////////////////////////// #include "pandaFramework.h" +#include "textNode.h" #ifndef HAVE_GETOPT #include "gnu_getopt.h" @@ -72,6 +73,11 @@ help() { " Automatically center models within the viewing window on startup.\n" " This can also be achieved with the 'c' hotkey at runtime.\n\n" + " -l\n" + " Open the window before loading any models with the text \"Loading\"\n" + " displayed in the window. The default is not to open the window\n" + " until all models are loaded.\n\n" + " -h\n" " Display this help text.\n\n"; } @@ -82,10 +88,11 @@ main(int argc, char *argv[]) { framework.set_window_title("Panda Viewer"); bool auto_center = false; + bool show_loading = false; // extern char *optarg; extern int optind; - static const char *optflags = "ch"; + static const char *optflags = "clh"; int flag = getopt(argc, argv, optflags); while (flag != EOF) { @@ -94,6 +101,10 @@ main(int argc, char *argv[]) { auto_center = true; break; + case 'l': + show_loading = true; + break; + case 'h': help(); return 1; @@ -113,6 +124,26 @@ main(int argc, char *argv[]) { if (window != (WindowFramework *)NULL) { // We've successfully opened a window. + NodePath loading_np; + + if (show_loading) { + // Put up a "loading" message for the user's benefit. + NodePath aspect_2d = window->get_aspect_2d(); + PT(TextNode) loading = new TextNode("loading"); + loading_np = aspect_2d.attach_new_node(loading); + loading_np.set_scale(0.125f); + loading->set_text_color(1.0f, 1.0f, 1.0f, 1.0f); + loading->set_shadow_color(0.0f, 0.0f, 0.0f, 1.0f); + loading->set_shadow(0.04f, 0.04f); + loading->set_align(TextNode::A_center); + loading->set_text("Loading..."); + + // Allow a couple of frames to go by so the window will be fully + // created and the text will be visible. + framework.do_frame(); + framework.do_frame(); + } + window->enable_keyboard(); window->setup_trackball(); framework.get_models().instance_to(window->get_render()); @@ -123,6 +154,7 @@ main(int argc, char *argv[]) { window->load_models(framework.get_models(), argc, argv); } window->loop_animations(); + loading_np.remove_node(); if (auto_center) { window->center_trackball(framework.get_models());