Revision: 29889
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29889
Author:   merwin
Date:     2010-07-03 08:50:52 +0200 (Sat, 03 Jul 2010)

Log Message:
-----------
updated SpaceNav demo: added MacOS10.4 support, rescaled input according to 
vendor recommendation, and (hopefully) fixed crash when driver not installed

Modified Paths:
--------------
    branches/soc-2010-merwin/experimental/SpaceNav app/SpaceNav 
app.xcodeproj/project.pbxproj
    branches/soc-2010-merwin/experimental/SpaceNav app/main.mm
    branches/soc-2010-merwin/experimental/SpaceNav app/ndof-update.mm

Added Paths:
-----------
    branches/soc-2010-merwin/experimental/SpaceNav app/ndof-device.c
    branches/soc-2010-merwin/experimental/SpaceNav app/ndof-device.h

Modified: branches/soc-2010-merwin/experimental/SpaceNav app/SpaceNav 
app.xcodeproj/project.pbxproj
===================================================================
--- branches/soc-2010-merwin/experimental/SpaceNav app/SpaceNav 
app.xcodeproj/project.pbxproj   2010-07-03 06:34:07 UTC (rev 29888)
+++ branches/soc-2010-merwin/experimental/SpaceNav app/SpaceNav 
app.xcodeproj/project.pbxproj   2010-07-03 06:50:52 UTC (rev 29889)
@@ -8,6 +8,7 @@
 
 /* Begin PBXBuildFile section */
                1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa 
= PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; };
+               593EDBAF11DEEDDA00065A03 /* ndof-device.c in Sources */ = {isa 
= PBXBuildFile; fileRef = 593EDBAE11DEEDDA00065A03 /* ndof-device.c */; };
                599A1D2011C0799E007494A9 /* main.mm in Sources */ = {isa = 
PBXBuildFile; fileRef = 599A1D1F11C0799E007494A9 /* main.mm */; };
                599A1D2311C079C1007494A9 /* 3DconnexionClient.framework in 
Frameworks */ = {isa = PBXBuildFile; fileRef = 599A1D2211C079C1007494A9 /* 
3DconnexionClient.framework */; };
                59C97D8E11C7033200505960 /* ndof-update.mm in Sources */ = {isa 
= PBXBuildFile; fileRef = 59C97D8D11C7033200505960 /* ndof-update.mm */; };
@@ -26,6 +27,8 @@
                29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = 
PBXFileReference; lastKnownFileType = wrapper.framework; name = 
AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; 
sourceTree = "<absolute>"; };
                29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = 
PBXFileReference; lastKnownFileType = wrapper.framework; name = 
Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; 
sourceTree = "<absolute>"; };
                32CA4F630368D1EE00C91783 /* SpaceNav app_Prefix.pch */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
"SpaceNav app_Prefix.pch"; sourceTree = "<group>"; };
+               593EDBAD11DEEDDA00065A03 /* ndof-device.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
"ndof-device.h"; sourceTree = "<group>"; };
+               593EDBAE11DEEDDA00065A03 /* ndof-device.c */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = 
"ndof-device.c"; sourceTree = "<group>"; };
                599A1D1F11C0799E007494A9 /* main.mm */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; 
path = main.mm; sourceTree = "<group>"; };
                599A1D2211C079C1007494A9 /* 3DconnexionClient.framework */ = 
{isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = 
3DconnexionClient.framework; path = 
/Library/Frameworks/3DconnexionClient.framework; sourceTree = "<absolute>"; };
                59C97D8C11C7033200505960 /* ndof-update.h */ = {isa = 
PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 
"ndof-update.h"; sourceTree = "<group>"; };
@@ -113,6 +116,8 @@
                                599A1D1F11C0799E007494A9 /* main.mm */,
                                59C97D8C11C7033200505960 /* ndof-update.h */,
                                59C97D8D11C7033200505960 /* ndof-update.mm */,
+                               593EDBAD11DEEDDA00065A03 /* ndof-device.h */,
+                               593EDBAE11DEEDDA00065A03 /* ndof-device.c */,
                        );
                        name = "Other Sources";
                        sourceTree = "<group>";
@@ -195,6 +200,7 @@
                                59C97D8E11C7033200505960 /* ndof-update.mm in 
Sources */,
                                59CE970F11C81E6100FFB428 /* SpaceNav3DView.mm 
in Sources */,
                                59CE978E11C9CC1A00FFB428 /* Vec3.cpp in Sources 
*/,
+                               593EDBAF11DEEDDA00065A03 /* ndof-device.c in 
Sources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };

Modified: branches/soc-2010-merwin/experimental/SpaceNav app/main.mm
===================================================================
--- branches/soc-2010-merwin/experimental/SpaceNav app/main.mm  2010-07-03 
06:34:07 UTC (rev 29888)
+++ branches/soc-2010-merwin/experimental/SpaceNav app/main.mm  2010-07-03 
06:50:52 UTC (rev 29889)
@@ -10,6 +10,7 @@
 #include <3DconnexionClient/ConnexionClientAPI.h>
 #include <stdio.h>
 #include "ndof-update.h"
+#include "ndof-device.h"
 
 void SpaceNavAdded(io_connect_t connection)
        {
@@ -73,14 +74,33 @@
                }
        }
 
-// extern OSErr InstallConnexionHandlers() __attribute__((weak_import));
-// [mce] C liked the above line, but Obj-C++ does not. Make sure it works for
-//       machines without the driver installed! Try it on the QuickSilver.
-
 int main(int argc, const char* argv[])
        {
-       if (InstallConnexionHandlers == NULL)
+       if (device_available())
                {
+               OSErr error = InstallConnexionHandlers(SpaceNavEvent, 
SpaceNavAdded, SpaceNavRemoved);
+               if (error)
+                       {
+                       printf("<!> error = %d\n", error);
+                       return -1;
+                       }
+
+               UInt16 clientID = RegisterConnexionClient('Mike', 
(UInt8*)"\pMike's SpaceNav test",
+                       kConnexionClientModeTakeOver, kConnexionMaskAll);
+
+               printf("client id = %d\n", clientID);
+
+               // wait for input...
+               //      CFRunLoopRun();
+               NSApplicationMain(argc, argv);
+               
+               // NSApplicationMain never returns, so these don't get called:
+               UnregisterConnexionClient(clientID);
+               CleanupConnexionHandlers();
+               return 0;
+               }
+       else
+               {
                printf("<!> SpaceNav driver not found\n");
                // This isn't a hard error, just means the user doesn't have a 
SpaceNavigator.
                // Could check this before loading the plugin.
@@ -88,24 +108,4 @@
                return -1;
                }
 
-       OSErr error = InstallConnexionHandlers(SpaceNavEvent, SpaceNavAdded, 
SpaceNavRemoved);
-       if (error)
-               {
-               printf("<!> error = %d\n", error);
-               return -1;
-               }
-
-       UInt16 clientID = RegisterConnexionClient('Mike', (UInt8*)"\pMike's 
SpaceNav test",
-               kConnexionClientModeTakeOver, kConnexionMaskAll);
-
-       printf("client id = %d\n", clientID);
-
-       // wait for input...
-       //      CFRunLoopRun();
-       NSApplicationMain(argc, argv);
-       
-       // NSApplicationMain never returns, so these don't get called:
-       UnregisterConnexionClient(clientID);
-       CleanupConnexionHandlers();
-       return 0;
        }

Added: branches/soc-2010-merwin/experimental/SpaceNav app/ndof-device.c
===================================================================
--- branches/soc-2010-merwin/experimental/SpaceNav app/ndof-device.c            
                (rev 0)
+++ branches/soc-2010-merwin/experimental/SpaceNav app/ndof-device.c    
2010-07-03 06:50:52 UTC (rev 29889)
@@ -0,0 +1,20 @@
+/*
+ *  ndof-device.c
+ *  SpaceNav app
+ *
+ *  Created by Mike Erwin on 7/2/10.
+ *  Copyright 2010 Invisible Cow Productions. All rights reserved.
+ *
+ */
+
+#include "ndof-device.h"
+#include <3DconnexionClient/ConnexionClientAPI.h>
+
+extern OSErr InstallConnexionHandlers() __attribute__((weak_import));
+// [mce] C likes the above line, but Obj-C++ does not. Make sure it works for
+//       machines without the driver installed! Try it on the QuickSilver.
+
+bool device_available()
+       {
+       return InstallConnexionHandlers != NULL;
+       }


Property changes on: branches/soc-2010-merwin/experimental/SpaceNav 
app/ndof-device.c
___________________________________________________________________
Name: svn:eol-style
   + native

Added: branches/soc-2010-merwin/experimental/SpaceNav app/ndof-device.h
===================================================================
--- branches/soc-2010-merwin/experimental/SpaceNav app/ndof-device.h            
                (rev 0)
+++ branches/soc-2010-merwin/experimental/SpaceNav app/ndof-device.h    
2010-07-03 06:50:52 UTC (rev 29889)
@@ -0,0 +1,24 @@
+/*
+ *  ndof-device.h
+ *  SpaceNav app
+ *
+ *  Created by Mike Erwin on 7/2/10.
+ *  Copyright 2010 Invisible Cow Productions. All rights reserved.
+ *
+ */
+
+#ifndef ndof_device_h
+#define ndof_device_h
+
+#include <stdbool.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+bool device_available();
+
+#ifdef __cplusplus
+       }
+#endif
+#endif


Property changes on: branches/soc-2010-merwin/experimental/SpaceNav 
app/ndof-device.h
___________________________________________________________________
Name: svn:eol-style
   + native

Modified: branches/soc-2010-merwin/experimental/SpaceNav app/ndof-update.mm
===================================================================
--- branches/soc-2010-merwin/experimental/SpaceNav app/ndof-update.mm   
2010-07-03 06:34:07 UTC (rev 29888)
+++ branches/soc-2010-merwin/experimental/SpaceNav app/ndof-update.mm   
2010-07-03 06:50:52 UTC (rev 29889)
@@ -43,7 +43,7 @@
                }
        else
                {
-               const float scale = 0.002; // SpaceNavigator sends +/- 500 
usually
+               const float scale = 1.f / 350.f; // SpaceNavigator sends +/- 
350 usually
                Vec3 t = scale * Vec3(trans[0], trans[1], trans[2]);
 
 //             printf("T: %5.2f %5.2f %5.2f\n", t.x, t.y, t.z);
@@ -68,7 +68,7 @@
                }
        else
                {
-               const float scale = 0.002; // SpaceNavigator sends +/- 500 
usually
+               const float scale = 1.f / 350.f; // SpaceNavigator sends +/- 
350 usually
                Vec3 r = scale * Vec3(rot[0], rot[1], rot[2]);
                float mag = r.magnitude();
                r.normalize();
@@ -79,7 +79,7 @@
                        r = -r;
                        mag = -mag;
                        }
-               
+
 //             printf("R: %5.3f about: %5.2f %5.2f %5.2f\n", mag, r.x, r.y, 
r.z);
 
                g_rotation_axis = r;


_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to