stricter NDOF guards for Windows (forgot in earlier commit)
authorMike Erwin <significant.bit@gmail.com>
Sat, 6 Aug 2011 23:13:36 +0000 (23:13 +0000)
committerMike Erwin <significant.bit@gmail.com>
Sat, 6 Aug 2011 23:13:36 +0000 (23:13 +0000)
build_files/scons/config/darwin-config.py
intern/ghost/intern/GHOST_SystemWin32.h
source/blender/makesdna/DNA_userdef_types.h
source/blender/makesrna/intern/rna_userdef.c
source/blender/windowmanager/intern/wm_event_system.c

index 560b6d9cb60fe68a7ba7bb16a15f876ad9a57cae..97e8e90e574a07d398b47aac75a0e1276a972e8a 100644 (file)
@@ -21,6 +21,7 @@ cmd = 'uname -p'
 MAC_PROC=commands.getoutput(cmd) 
 cmd = 'uname -r'
 cmd_res=commands.getoutput(cmd) 
+MAC_CUR_VER='10.5' # by default (test below fails on my 10.5 PowerPC)
 if cmd_res[:2]=='7':
        MAC_CUR_VER='10.3'
 elif cmd_res[:2]=='8':
index c5dff27dace1b98206fb0e28c0d303ed09dd621e..858312b3eb1950e95e98909b1ff96962ee41fa47 100644 (file)
@@ -302,6 +302,7 @@ protected:
         */
        static void processMinMaxInfo(MINMAXINFO * minmax);
 
+#ifdef WITH_INPUT_NDOF
        /**
         * Handles Motion and Button events from a SpaceNavigator or related device.
         * Instead of returning an event object, this function communicates directly
@@ -310,6 +311,7 @@ protected:
         * @return Whether an event was generated and sent.
         */
        bool processNDOF(RAWINPUT const& raw);
+#endif
 
        /**
         * Returns the local state of the modifier keys (from the message queue).
index a555a196060c150cce4447124c76cc47eeb06883..556f554eb98fba622cc9c2fc2c207378e1ae4420 100644 (file)
@@ -603,7 +603,7 @@ extern UserDef U; /* from blenkernel blender.c */
 #define NDOF_ORBIT_INVERT_AXES (1 << 6)
 /* zoom is up/down if this flag is set (otherwise forward/backward) */
 #define NDOF_ZOOM_UPDOWN (1 << 7)
-#define NDOF_INVERT_ZOOM (1 << 8)
+#define NDOF_ZOOM_INVERT (1 << 8)
 
 
 #ifdef __cplusplus
index b3dbafeab7deee9e8eec9f5d5b25d0ae88572b9d..57044188dd9111ae6162998a216e20fdd371068d 100644 (file)
@@ -2746,19 +2746,32 @@ static void rna_def_userdef_input(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Drag Threshold", "Amount of pixels you have to drag before dragging UI items happens");
 
        /* 3D mouse settings */
+       /* global options */
        prop= RNA_def_property(srna, "ndof_sensitivity", PROP_FLOAT, PROP_NONE);
        RNA_def_property_range(prop, 0.25f, 4.0f);
        RNA_def_property_ui_text(prop, "Sensitivity", "Overall sensitivity of the 3D Mouse");
 
+       prop= RNA_def_property(srna, "ndof_zoom_updown", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "ndof_flag", NDOF_ZOOM_UPDOWN);
+       RNA_def_property_ui_text(prop, "Zoom = Up/Down", "Zoom using up/down on the device (otherwise forward/backward)");
+
+       prop= RNA_def_property(srna, "ndof_zoom_invert", PROP_BOOLEAN, PROP_NONE);
+       RNA_def_property_boolean_sdna(prop, NULL, "ndof_flag", NDOF_ZOOM_INVERT);
+       RNA_def_property_ui_text(prop, "Invert Zoom", "Zoom using opposite direction"); 
+
+       /* 3D view */
        prop= RNA_def_property(srna, "ndof_show_guide", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "ndof_flag", NDOF_SHOW_GUIDE);
        RNA_def_property_ui_text(prop, "Show Navigation Guide", "Display the center and axis during rotation");
        /* TODO: update description when fly-mode visuals are in place  ("projected position in fly mode")*/
 
+       /* 3D view: orbit */
        prop= RNA_def_property(srna, "ndof_orbit_invert_axes", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "ndof_flag", NDOF_ORBIT_INVERT_AXES);
        RNA_def_property_ui_text(prop, "Invert Axes", "Toggle between moving the viewpoint or moving the scene being viewed");
+       /* in 3Dx docs, this is called 'object mode' vs. 'target camera mode'
 
+       /* 3D view: fly */
        prop= RNA_def_property(srna, "ndof_lock_horizon", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "ndof_flag", NDOF_LOCK_HORIZON);
        RNA_def_property_ui_text(prop, "Lock Horizon", "Keep horizon level while flying with 3D Mouse");
index 0dac0bd74015e2cccdea08285a24bfe56e812aa7..258d6bbc025fe95198069f6769a5d0999021de8a 100644 (file)
@@ -2330,26 +2330,28 @@ static void attach_ndof_data(wmEvent* event, const GHOST_TEventNDOFMotionData* g
        const float s = U.ndof_sensitivity;
 
        data->tvec[0]= s * ghost->tx;
+
        data->rvec[0]= s * ghost->rx;
+       data->rvec[1]= s * ghost->ry;
+       data->rvec[2]= s * ghost->rz;
 
        if (U.ndof_flag & NDOF_ZOOM_UPDOWN)
                {
-               // swap Y and Z
+               // rotate so Y is where Z was (maintain handed-ness)
                data->tvec[1]= s * ghost->tz;
-               data->tvec[2]= s * ghost->ty;
+               data->tvec[2]= s * -ghost->ty;
 
                // should this affect rotation also?
                // initial guess is 'yes', but get user feedback immediately!
+#if 0  // after turning this on, my guess becomes 'no'
                data->rvec[1]= s * ghost->rz;
                data->rvec[2]= s * ghost->ry;
+#endif
                }
        else
                {
                data->tvec[1]= s * ghost->ty;
                data->tvec[2]= s * ghost->tz;
-
-               data->rvec[1]= s * ghost->ry;
-               data->rvec[2]= s * ghost->rz;
                }
 
        data->dt = ghost->dt;