Manta Interactive Ray Tracer Development Mailing List

Text archives Help


[Manta] r2276 - trunk/UserInterface


Chronological Thread 
  • From: aek@sci.utah.edu
  • To: manta@sci.utah.edu
  • Subject: [Manta] r2276 - trunk/UserInterface
  • Date: Wed, 28 May 2008 17:32:51 -0600 (MDT)

Author: aek
Date: Wed May 28 17:32:51 2008
New Revision: 2276

Modified:
   trunk/UserInterface/XWindowUI.cc
   trunk/UserInterface/XWindowUI.h
Log:
* Game mode now tries to automatically pick a reasonable default movement
  speed based on the scene bounding box size.  The optional number after
  -game is now a multiplier for this. Just a plain '-ui "X(-game)"' should
  now be fine for most scenes.

* Changed the -invert flag to not require -game to come before it.



Modified: trunk/UserInterface/XWindowUI.cc
==============================================================================
--- trunk/UserInterface/XWindowUI.cc    (original)
+++ trunk/UserInterface/XWindowUI.cc    Wed May 28 17:32:51 2008
@@ -83,14 +83,15 @@
   int offset=0;
   CameraPath::IOMode mode = CameraPath::WriteKnots;
   string fname="";
-  bool gameMode = false;
 
   fov_speed = 10;
   translate_speed = 1;
+  invert = 1.0;
   dolly_speed = 5;
   rotate_speed = 2;
   autoview_fov = 60;
   trackball_radius = 0.8;
+  setup_game_mode = false;
 
   // Parse command line args.
   for (size_t i=0;i<args.size();++i) {
@@ -110,11 +111,10 @@
         throw IllegalArgument("XWindowUI -path", i, args);
       mode=CameraPath::ReadKnots;
     } else if (arg=="-game") {
-      gameMode = true;
-      double speed = 50.0;
+      setup_game_mode = true;
+      double speed = 1.0;
       getDoubleArg(i, args, speed);
       translate_speed = speed;
-      invert = 1.0;
     } else if (arg=="-invert"){
       invert = -1.0;
     } else if (arg=="-quit") {
@@ -142,7 +142,7 @@
   originalObject = NULL;
 
   register_default_keys();
-  if (gameMode)
+  if (setup_game_mode)
       register_game_mouse();
   else
       register_default_mouse();
@@ -200,6 +200,13 @@
 
 void XWindowUI::setupBegin(const SetupContext&, int numChannels)
 {
+  if(setup_game_mode){
+    BBox bbox;
+    PreprocessContext ppc;
+    rtrt_interface->getScene()->getObject()->computeBounds(ppc, bbox);
+    translate_speed *= bbox.diagonal().length() * 0.6;
+    setup_game_mode = false; // Avoid scaling translate_speed again if user 
hits 'p'
+  }
   if(numChannels > static_cast<int>(windows.size())){
     int oldsize = static_cast<int>(windows.size());
     windows.resize(numChannels);

Modified: trunk/UserInterface/XWindowUI.h
==============================================================================
--- trunk/UserInterface/XWindowUI.h     (original)
+++ trunk/UserInterface/XWindowUI.h     Wed May 28 17:32:51 2008
@@ -177,6 +177,8 @@
     Real trackball_radius;
     bool quitting;
 
+    bool setup_game_mode;
+
     // The image size
     int width, height;
        


  • [Manta] r2276 - trunk/UserInterface, aek, 05/28/2008

Archive powered by MHonArc 2.6.16.

Top of page