[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14208] trunk/blender: NDOF support added to trunk from ndof branch.

JLuc Peuriere jlp at nerim.net
Sat Mar 22 02:39:19 CET 2008


Revision: 14208
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14208
Author:   lukep
Date:     2008-03-22 02:39:11 +0100 (Sat, 22 Mar 2008)

Log Message:
-----------
NDOF support added to trunk from ndof branch.

The latter is now obsolete and will be soon 
removed.

Some tiny build tweaks for darwin committed
in preparation of bigger changes for proper
SDK suport both on intel and ppc

Modified Paths:
--------------
    trunk/blender/SConstruct
    trunk/blender/config/darwin-config.py
    trunk/blender/extern/ffmpeg/SConscript
    trunk/blender/intern/ghost/GHOST_C-api.h
    trunk/blender/intern/ghost/GHOST_ISystem.h
    trunk/blender/intern/ghost/GHOST_Types.h
    trunk/blender/intern/ghost/intern/GHOST_C-api.cpp
    trunk/blender/intern/ghost/intern/GHOST_System.cpp
    trunk/blender/intern/ghost/intern/GHOST_System.h
    trunk/blender/intern/ghost/intern/GHOST_SystemCarbon.cpp
    trunk/blender/intern/ghost/intern/GHOST_SystemCarbon.h
    trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp
    trunk/blender/intern/ghost/intern/GHOST_SystemX11.cpp
    trunk/blender/intern/ghost/intern/GHOST_SystemX11.h
    trunk/blender/intern/ghost/intern/Makefile
    trunk/blender/intern/ghost/make/msvc_7_0/ghost.vcproj
    trunk/blender/release/datafiles/blenderbuttons
    trunk/blender/source/blender/blenkernel/BKE_global.h
    trunk/blender/source/blender/blenlib/BLI_blenlib.h
    trunk/blender/source/blender/blenloader/intern/writefile.c
    trunk/blender/source/blender/include/BIF_mywindow.h
    trunk/blender/source/blender/include/BIF_resources.h
    trunk/blender/source/blender/include/BIF_transform.h
    trunk/blender/source/blender/include/BSE_view.h
    trunk/blender/source/blender/include/blendef.h
    trunk/blender/source/blender/include/mydevice.h
    trunk/blender/source/blender/include/transform.h
    trunk/blender/source/blender/makesdna/DNA_userdef_types.h
    trunk/blender/source/blender/makesdna/DNA_view3d_types.h
    trunk/blender/source/blender/src/blenderbuttons.c
    trunk/blender/source/blender/src/editscreen.c
    trunk/blender/source/blender/src/ghostwinlay.c
    trunk/blender/source/blender/src/header_view3d.c
    trunk/blender/source/blender/src/space.c
    trunk/blender/source/blender/src/transform.c
    trunk/blender/source/blender/src/transform_generics.c
    trunk/blender/source/blender/src/usiblender.c
    trunk/blender/source/blender/src/view.c
    trunk/blender/source/blender/src/winlay.h

Added Paths:
-----------
    trunk/blender/intern/ghost/intern/GHOST_EventNDOF.h
    trunk/blender/intern/ghost/intern/GHOST_NDOFManager.cpp
    trunk/blender/intern/ghost/intern/GHOST_NDOFManager.h
    trunk/blender/source/blender/src/transform_ndofinput.c

Modified: trunk/blender/SConstruct
===================================================================
--- trunk/blender/SConstruct	2008-03-21 23:10:23 UTC (rev 14207)
+++ trunk/blender/SConstruct	2008-03-22 01:39:11 UTC (rev 14208)
@@ -350,33 +350,36 @@
     blenderinstall = env.Install(dir=env['BF_INSTALLDIR'], source=B.program_list)
 
 #-- .blender
+#- dont do .blender and scripts for darwin, it is already in the bundle
 dotblendlist = []
 dottargetlist = []
-for dp, dn, df in os.walk('bin/.blender'):
-    if 'CVS' in dn:
-        dn.remove('CVS')
-    if '.svn' in dn:
-        dn.remove('.svn')
-    for f in df:
-        dotblendlist.append(dp+os.sep+f)
-        dottargetlist.append(env['BF_INSTALLDIR']+dp[3:]+os.sep+f)
+scriptinstall = []
 
-dotblenderinstall = []
-for targetdir,srcfile in zip(dottargetlist, dotblendlist):
-    td, tf = os.path.split(targetdir)
-    dotblenderinstall.append(env.Install(dir=td, source=srcfile))
+if  env['OURPLATFORM']!='darwin':
+	for dp, dn, df in os.walk('bin/.blender'):
+	    if 'CVS' in dn:
+	        dn.remove('CVS')
+	    if '.svn' in dn:
+	        dn.remove('.svn')
+	    for f in df:
+	        dotblendlist.append(dp+os.sep+f)
+	        dottargetlist.append(env['BF_INSTALLDIR']+dp[3:]+os.sep+f)
 
-#-- .blender/scripts
-scriptinstall = []
-scriptpath='release/scripts'
-for dp, dn, df in os.walk(scriptpath):
-    if 'CVS' in dn:
-        dn.remove('CVS')
-    if '.svn' in dn:
-        dn.remove('.svn')
-    dir=env['BF_INSTALLDIR']+'/.blender/scripts'+dp[len(scriptpath):]
-    source=[dp+os.sep+f for f in df]
-    scriptinstall.append(env.Install(dir=dir,source=source))
+	dotblenderinstall = []
+	for targetdir,srcfile in zip(dottargetlist, dotblendlist):
+	    td, tf = os.path.split(targetdir)
+	    dotblenderinstall.append(env.Install(dir=td, source=srcfile))
+	
+	#-- .blender/scripts	
+	scriptpath='release/scripts'
+	for dp, dn, df in os.walk(scriptpath):
+	    if 'CVS' in dn:
+	        dn.remove('CVS')
+	    if '.svn' in dn:
+	        dn.remove('.svn')
+	    dir=env['BF_INSTALLDIR']+'/.blender/scripts'+dp[len(scriptpath):]
+	    source=[dp+os.sep+f for f in df]
+	    scriptinstall.append(env.Install(dir=dir,source=source))
 
 #-- plugins
 pluglist = []
@@ -407,7 +410,10 @@
 
 textinstall = env.Install(dir=env['BF_INSTALLDIR'], source=textlist)
 
-allinstall = [blenderinstall, dotblenderinstall, scriptinstall, plugininstall, textinstall]
+if  env['OURPLATFORM']=='darwin':
+	allinstall = [blenderinstall, plugininstall, textinstall]
+else:
+	allinstall = [blenderinstall, dotblenderinstall, scriptinstall, plugininstall, textinstall]
 
 if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw'):
     dllsources = ['${LCGDIR}/gettext/lib/gnu_gettext.dll',

Modified: trunk/blender/config/darwin-config.py
===================================================================
--- trunk/blender/config/darwin-config.py	2008-03-21 23:10:23 UTC (rev 14207)
+++ trunk/blender/config/darwin-config.py	2008-03-22 01:39:11 UTC (rev 14208)
@@ -3,10 +3,10 @@
 
 # enable ffmpeg  support
 WITH_BF_FFMPEG = 'true'  # -DWITH_FFMPEG
-BF_FFMPEG = LIBDIR +'/ffmpeg'
+BF_FFMPEG = "#extern/ffmpeg"
 BF_FFMPEG_INC = '${BF_FFMPEG}/include'
-BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
-BF_FFMPEG_LIB = 'avformat.a avcodec.a avutil.a'
+#BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
+#BF_FFMPEG_LIB = 'avformat.a avcodec.a avutil.a'
 
 WITH_BF_VERSE = 'false'
 BF_VERSE = "#extern/verse/dist"
@@ -15,7 +15,7 @@
 BF_VERSE_LIBS = "libverse"
 
 # python.org libs install in /library 
-BF_PYTHON_VERSION = '2.3'
+BF_PYTHON_VERSION = '2.5'
 if BF_PYTHON_VERSION=='2.3':
 	BF_PYTHON = '/System/Library/Frameworks/Python.framework/Versions/'
 else:
@@ -131,11 +131,11 @@
 
 WITH_BF_QUICKTIME = 'true' # -DWITH_QUICKTIME
 
-WITH_BF_ICONV = 'false'
+WITH_BF_ICONV = 'true'
 BF_ICONV = LIBDIR + "/iconv"
 BF_ICONV_INC = '${BF_ICONV}/include'
 BF_ICONV_LIB = 'iconv'
-BF_ICONV_LIBPATH = '${BF_ICONV}/lib'
+#BF_ICONV_LIBPATH = '${BF_ICONV}/lib'
 
 # Mesa Libs should go here if your using them as well....
 WITH_BF_STATICOPENGL = 'true'

Modified: trunk/blender/extern/ffmpeg/SConscript
===================================================================
--- trunk/blender/extern/ffmpeg/SConscript	2008-03-21 23:10:23 UTC (rev 14207)
+++ trunk/blender/extern/ffmpeg/SConscript	2008-03-22 01:39:11 UTC (rev 14208)
@@ -125,7 +125,6 @@
 
     if env['OURPLATFORM'] in ['win32-mingw', 'win32-vc' , 'darwin'] :
     	defs = "HAVE_AV_CONFIG_H  _ISOC9X_SOURCE"
-    	print "passing switch"
     else :
 		defs = "HAVE_AV_CONFIG_H _FILE_OFFSET_BITS=64 _LARGEFILE_SOURCE _ISOC9X_SOURCE"
     cflags = ""

Modified: trunk/blender/intern/ghost/GHOST_C-api.h
===================================================================
--- trunk/blender/intern/ghost/GHOST_C-api.h	2008-03-21 23:10:23 UTC (rev 14207)
+++ trunk/blender/intern/ghost/GHOST_C-api.h	2008-03-22 01:39:11 UTC (rev 14208)
@@ -265,6 +265,19 @@
 											  GHOST_EventConsumerHandle consumerhandle);
 	
 
+/***************************************************************************************
+ ** N-degree of freedom device management functionality
+ ***************************************************************************************/
+ 
+/**
+* Open N-degree of freedom devices
+ */
+extern int GHOST_OpenNDOF(GHOST_SystemHandle systemhandle, 
+                           GHOST_WindowHandle windowhandle,
+                          GHOST_NDOFLibraryInit_fp setNdofLibraryInit, 
+                          GHOST_NDOFLibraryShutdown_fp setNdofLibraryShutdown,
+                          GHOST_NDOFDeviceOpen_fp setNdofDeviceOpen
+                          );
 
 /***************************************************************************************
  ** Cursor management functionality

Modified: trunk/blender/intern/ghost/GHOST_ISystem.h
===================================================================
--- trunk/blender/intern/ghost/GHOST_ISystem.h	2008-03-21 23:10:23 UTC (rev 14207)
+++ trunk/blender/intern/ghost/GHOST_ISystem.h	2008-03-22 01:39:11 UTC (rev 14208)
@@ -295,6 +295,22 @@
 	 */
 	virtual GHOST_TSuccess addEventConsumer(GHOST_IEventConsumer* consumer) = 0;
 	
+	 /***************************************************************************************
+	 ** N-degree of freedom device management functionality
+	 ***************************************************************************************/
+
+   /**
+    * Starts the N-degree of freedom device manager
+    */
+   virtual int openNDOF(GHOST_IWindow*,
+       GHOST_NDOFLibraryInit_fp setNdofLibraryInit, 
+       GHOST_NDOFLibraryShutdown_fp setNdofLibraryShutdown,
+       GHOST_NDOFDeviceOpen_fp setNdofDeviceOpen
+       // original patch only
+      // GHOST_NDOFEventHandler_fp setNdofEventHandler
+       ) = 0;
+
+
 	/***************************************************************************************
 	 ** Cursor management functionality
 	 ***************************************************************************************/

Modified: trunk/blender/intern/ghost/GHOST_Types.h
===================================================================
--- trunk/blender/intern/ghost/GHOST_Types.h	2008-03-21 23:10:23 UTC (rev 14207)
+++ trunk/blender/intern/ghost/GHOST_Types.h	2008-03-22 01:39:11 UTC (rev 14208)
@@ -39,6 +39,11 @@
 typedef	int					GHOST_TInt32;
 typedef	unsigned int		GHOST_TUns32;
 
+#ifdef WIN32
+#define WM_BLND_NDOF_AXIS	WM_USER + 1
+#define WM_BLND_NDOF_BTN 	WM_USER + 2
+#endif
+
 #if defined(WIN32) && !defined(FREE_WINDOWS)
 typedef __int64				GHOST_TInt64;
 typedef unsigned __int64	GHOST_TUns64;
@@ -133,6 +138,9 @@
 	GHOST_kEventButtonUp,		/// Mouse button event
 	GHOST_kEventWheel,			/// Mouse wheel event
 
+	GHOST_kEventNDOFMotion,		/// N degree of freedom device motion event
+	GHOST_kEventNDOFButton,		/// N degree of freedom device button event
+
 	GHOST_kEventKeyDown,
 	GHOST_kEventKeyUp,
 //	GHOST_kEventKeyAuto,
@@ -336,7 +344,39 @@
 	GHOST_TInt32 z;	
 } GHOST_TEventWheelData;
 
+
+/* original patch used floats, but the driver return ints and uns. We will calibrate in view, no sense on doing conversions twice */
+/* as all USB device controls are likely to use ints, this is also more future proof */
+//typedef struct {
+//   /** N-degree of freedom device data */
+//   float tx, ty, tz;   /** -x left, +y up, +z forward */
+//   float rx, ry, rz;
+//   float dt;
+//} GHOST_TEventNDOFData;
+
 typedef struct {
+   /** N-degree of freedom device data v2*/
+   int changed;
+   GHOST_TUns64 client;
+   GHOST_TUns64 address;
+   GHOST_TInt16 tx, ty, tz;   /** -x left, +y up, +z forward */
+   GHOST_TInt16 rx, ry, rz;
+   GHOST_TInt16 buttons;
+   GHOST_TUns64 time;
+   GHOST_TUns64 delta;
+} GHOST_TEventNDOFData;
+
+typedef int     (*GHOST_NDOFLibraryInit_fp)();
+typedef void    (*GHOST_NDOFLibraryShutdown_fp)(void* deviceHandle);
+typedef void*   (*GHOST_NDOFDeviceOpen_fp)(void* platformData);
+
+// original patch windows callback. In mac os X version the callback is internal to the plug-in and post an event to main thead.
+// not necessary faster, but better integration with other events. 
+
+//typedef int     (*GHOST_NDOFEventHandler_fp)(float* result7, void* deviceHandle, unsigned int message, unsigned int* wParam, unsigned long* lParam);
+//typedef void     (*GHOST_NDOFCallBack_fp)(GHOST_TEventNDOFDataV2 *VolDatas);
+
+typedef struct {
 	/** The key code. */
 	GHOST_TKey		key;
 	/** The ascii code for the key event ('\0' if none). */

Modified: trunk/blender/intern/ghost/intern/GHOST_C-api.cpp
===================================================================
--- trunk/blender/intern/ghost/intern/GHOST_C-api.cpp	2008-03-21 23:10:23 UTC (rev 14207)
+++ trunk/blender/intern/ghost/intern/GHOST_C-api.cpp	2008-03-22 01:39:11 UTC (rev 14208)
@@ -259,8 +259,23 @@
 	return system->addEventConsumer((GHOST_CallbackEventConsumer*)consumerhandle);
 }
 
+int GHOST_OpenNDOF(GHOST_SystemHandle systemhandle, GHOST_WindowHandle windowhandle,
+   GHOST_NDOFLibraryInit_fp setNdofLibraryInit, 
+    GHOST_NDOFLibraryShutdown_fp setNdofLibraryShutdown,
+    GHOST_NDOFDeviceOpen_fp setNdofDeviceOpen)
+  //original patch only
+  /*  GHOST_NDOFEventHandler_fp setNdofEventHandler)*/
+{
+	GHOST_ISystem* system = (GHOST_ISystem*) systemhandle;
 
+    return system->openNDOF((GHOST_IWindow*) windowhandle,
+        setNdofLibraryInit, setNdofLibraryShutdown, setNdofDeviceOpen);
+//	original patch

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list