Page Menu
Home
Search
Configure Global Search
Log In
Files
F5310
blender-2.44-spacnav.diff
Public
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Authored By
Otto Bommer (ootoo)
Nov 13 2013, 1:22 PM
Size
19 KB
Subscribers
None
blender-2.44-spacnav.diff
View Options
Nur in blender-2.44-spacenav: cscope.out.
diff -aur blender-2.44/intern/ghost/GHOST_C-api.h blender-2.44-spacenav/intern/ghost/GHOST_C-api.h
--- blender-2.44/intern/ghost/GHOST_C-api.h 2006-08-03 16:16:30.000000000 +0200
+++ blender-2.44-spacenav/intern/ghost/GHOST_C-api.h 2007-05-20 14:58:27.000000000 +0200
@@ -615,6 +615,13 @@
extern const GHOST_TabletData *GHOST_GetTabletData(GHOST_WindowHandle windowhandle);
/**
+ * Returns the status of the Space Navigator
+ * @param windowhandle The handle to the window
+ * @return Status of the Space Navigator
+ */
+extern const GHOST_SpaceNavData *GHOST_GetSpaceNavData(GHOST_WindowHandle windowhandle);
+
+/**
* Access to rectangle width.
* @param rectanglehandle The handle to the rectangle
* @return width of the rectangle
diff -aur blender-2.44/intern/ghost/GHOST_IWindow.h blender-2.44-spacenav/intern/ghost/GHOST_IWindow.h
--- blender-2.44/intern/ghost/GHOST_IWindow.h 2006-08-03 16:16:30.000000000 +0200
+++ blender-2.44-spacenav/intern/ghost/GHOST_IWindow.h 2007-05-20 14:57:11.000000000 +0200
@@ -206,6 +206,12 @@
* @return The tablet data (pressure etc).
*/
virtual const GHOST_TabletData* GetTabletData() = 0;
+
+ /**
+ * Returns the space navigator data
+ * @return the spcae navigaotr data
+ */
+ virtual const GHOST_SpaceNavData* GetSpaceNavData() = 0;
/***************************************************************************************
** Cursor management functionality
diff -aur blender-2.44/intern/ghost/GHOST_Types.h blender-2.44-spacenav/intern/ghost/GHOST_Types.h
--- blender-2.44/intern/ghost/GHOST_Types.h 2007-04-12 18:51:46.000000000 +0200
+++ blender-2.44-spacenav/intern/ghost/GHOST_Types.h 2007-05-27 23:12:46.000000000 +0200
@@ -70,6 +70,22 @@
} GHOST_TabletData;
+/* Patch for SpaceNavigator: Data type for a 6d input devices such as 3dconnexion SpaceNavigator
+ * value[0]: x-axis, movement left to right
+ * value[1]: y-axis, movement far to near
+ * value[2]: z-axis, movement up to down
+ * value[3]: x-axis rotation, tilting forward to backward
+ * value[4]: y-axis rotation, tilting right to left
+ * value[5]: z-axis rotation, rotating around upward axis left to right
+*/
+typedef struct GHOST_SpaceNavData {
+ int count;
+ float values[6];
+ int button_left; /* left button pressed if 1 */
+ int button_right; /* right button pressed if 1 */
+} GHOST_SpaceNavData;
+
+
typedef enum {
GHOST_kNotVisible = 0,
GHOST_kPartiallyVisible,
@@ -144,6 +160,7 @@
GHOST_kEventWindowDeactivate,
GHOST_kEventWindowUpdate,
GHOST_kEventWindowSize,
+ GHOST_kEventSpaceMotion, // XInput Event for Space Navigator
GHOST_kNumEventTypes
} GHOST_TEventType;
diff -aur blender-2.44/intern/ghost/intern/GHOST_C-api.cpp blender-2.44-spacenav/intern/ghost/intern/GHOST_C-api.cpp
--- blender-2.44/intern/ghost/intern/GHOST_C-api.cpp 2006-10-24 18:42:12.000000000 +0200
+++ blender-2.44-spacenav/intern/ghost/intern/GHOST_C-api.cpp 2007-05-20 15:07:02.000000000 +0200
@@ -656,6 +656,10 @@
return ((GHOST_IWindow*)windowhandle)->GetTabletData();
}
+extern const GHOST_SpaceNavData* GHOST_GetSpaceNavData(GHOST_WindowHandle windowhandle)
+{
+ return ((GHOST_IWindow*)windowhandle)->GetSpaceNavData();
+}
GHOST_TInt32 GHOST_GetWidthRectangle(GHOST_RectangleHandle rectanglehandle)
{
diff -aur blender-2.44/intern/ghost/intern/GHOST_SystemX11.cpp blender-2.44-spacenav/intern/ghost/intern/GHOST_SystemX11.cpp
--- blender-2.44/intern/ghost/intern/GHOST_SystemX11.cpp 2007-04-12 18:51:46.000000000 +0200
+++ blender-2.44-spacenav/intern/ghost/intern/GHOST_SystemX11.cpp 2007-05-28 16:51:16.000000000 +0200
@@ -528,7 +528,40 @@
window->GetXTablet().CommonData.Active= 2;
}
else if(xe->type == window->GetXTablet().ProxOutEvent)
+ {
window->GetXTablet().CommonData.Active= 0;
+ }
+ else if(xe->type == window->GetXSpaceNav().MotionEvent)
+ {
+ int i;
+ XDeviceMotionEvent* data = (XDeviceMotionEvent*)xe;
+ GHOST_SpaceNavData *snd = &window->GetXSpaceNav().CommonData;
+ struct timeval tv_cur;
+
+ gettimeofday(&tv_cur, NULL);
+ window->GetXSpaceNav().CommonData.count++;
+
+ for(i=0; i<6; i++)
+ snd->values[i] = (float)(data->axis_data[i])*0.001;
+
+/*
+ printf("SpaceNav MotionEvent pan_x=%5d pan_y=%5d zoom=%5d tilt_x=%5d tilt_y=%5d twist=%5d\n",
+ data->axis_data[0], data->axis_data[1], data->axis_data[2],
+ data->axis_data[3], data->axis_data[4], data->axis_data[5]);
+*/
+
+ /* Send event max. once per millisecond */
+ if(abs(tv_cur.tv_usec - window->GetXSpaceNav().timestamp.tv_usec) > 1000) {
+ window->GetXSpaceNav().timestamp.tv_sec = tv_cur.tv_sec;
+ window->GetXSpaceNav().timestamp.tv_sec = tv_cur.tv_usec;
+
+ g_event = new
+ GHOST_Event(
+ getMilliSeconds(),
+ GHOST_kEventSpaceMotion,
+ window);
+ }
+ }
break;
}
Nur in blender-2.44-spacenav/intern/ghost/intern: .GHOST_SystemX11.cpp.swp.
diff -aur blender-2.44/intern/ghost/intern/GHOST_WindowX11.cpp blender-2.44-spacenav/intern/ghost/intern/GHOST_WindowX11.cpp
--- blender-2.44/intern/ghost/intern/GHOST_WindowX11.cpp 2007-04-16 20:32:35.000000000 +0200
+++ blender-2.44-spacenav/intern/ghost/intern/GHOST_WindowX11.cpp 2007-05-28 16:50:54.000000000 +0200
@@ -251,6 +251,9 @@
m_xtablet.EraserDevice = 0;
m_xtablet.CommonData.Active= 0;
+ m_xspacenav.SpaceNavDevice = 0;
+ m_xspacenav.CommonData.count = 0;
+
/* Install our error handler to override Xlib's termination behavior */
old_handler = XSetErrorHandler(ApplicationErrorHandler) ;
@@ -285,6 +288,12 @@
m_xtablet.EraserDevice = XOpenDevice(m_display, m_xtablet.EraserID);
if (m_xtablet.EraserDevice == NULL) m_xtablet.EraserID= 0;
}
+ if(!strncmp(device_info[i].name, "SpaceNav[0]", strlen("SpaceNav[0]"))) {
+ printf("Found SpaceNavigator device %s\n", device_info[i].name);
+ m_xspacenav.SpaceNavID = device_info[i].id;
+ m_xspacenav.SpaceNavDevice = XOpenDevice(m_display, m_xspacenav.SpaceNavID);
+ if (m_xspacenav.SpaceNavDevice == NULL) m_xspacenav.SpaceNavID = 0;
+ }
}
/* Restore handler */
@@ -312,6 +321,10 @@
ProximityOut(m_xtablet.EraserDevice, m_xtablet.ProxOutEvent, ev);
if(ev) xevents[dcount++] = ev;
}
+ if(m_xspacenav.SpaceNavDevice) {
+ DeviceMotionNotify(m_xspacenav.SpaceNavDevice, m_xspacenav.MotionEvent, ev);
+ if(ev) xevents[dcount++] = ev;
+ }
XSelectExtensionEvent(m_display, m_window, xevents, dcount);
}
diff -aur blender-2.44/intern/ghost/intern/GHOST_WindowX11.h blender-2.44-spacenav/intern/ghost/intern/GHOST_WindowX11.h
--- blender-2.44/intern/ghost/intern/GHOST_WindowX11.h 2006-08-03 20:54:39.000000000 +0200
+++ blender-2.44-spacenav/intern/ghost/intern/GHOST_WindowX11.h 2007-05-28 16:49:15.000000000 +0200
@@ -213,6 +213,28 @@
const GHOST_TabletData* GetTabletData()
{ return &m_xtablet.CommonData; }
+
+ /* Space Navigator */
+ class XSpaceNav
+ {
+ public:
+ GHOST_SpaceNavData CommonData;
+ struct timeval timestamp;
+
+ XDevice* SpaceNavDevice;
+
+ XID SpaceNavID;
+
+ int MotionEvent;
+ };
+
+ XSpaceNav& GetXSpaceNav()
+ { return m_xspacenav; }
+
+ const GHOST_SpaceNavData* GetSpaceNavData()
+ { return &m_xspacenav.CommonData; }
+
+
protected:
/**
* Tries to install a rendering context in this window.
@@ -328,6 +350,9 @@
/* Tablet devices */
XTablet m_xtablet;
+
+ /* Space Navigator device */
+ XSpaceNav m_xspacenav;
};
Nur in blender-2.44-spacenav/obj: linux-glibc2.5-i386.
Nur in blender-2.44-spacenav: .sconsign.dblite.
diff -aur blender-2.44/source/blender/include/mydevice.h blender-2.44-spacenav/source/blender/include/mydevice.h
--- blender-2.44/source/blender/include/mydevice.h 2007-04-12 18:51:51.000000000 +0200
+++ blender-2.44-spacenav/source/blender/include/mydevice.h 2007-05-26 01:00:48.000000000 +0200
@@ -49,6 +49,7 @@
#define MOUSEY 0x005
#define WHEELUPMOUSE 0x00a
#define WHEELDOWNMOUSE 0x00b
+#define SPACENAV 0x00c
/* timers */
diff -aur blender-2.44/source/blender/src/editimasel.c blender-2.44-spacenav/source/blender/src/editimasel.c
--- blender-2.44/source/blender/src/editimasel.c 2007-01-22 17:32:28.000000000 +0100
+++ blender-2.44-spacenav/source/blender/src/editimasel.c 2007-05-26 01:20:30.000000000 +0200
@@ -260,7 +260,7 @@
queredraw = 1;
}
break;
-
+
case WHEELUPMOUSE:
case WHEELDOWNMOUSE:
switch(area_event){
diff -aur blender-2.44/source/blender/src/ghostwinlay.c blender-2.44-spacenav/source/blender/src/ghostwinlay.c
--- blender-2.44/source/blender/src/ghostwinlay.c 2007-04-12 18:55:57.000000000 +0200
+++ blender-2.44-spacenav/source/blender/src/ghostwinlay.c 2007-05-28 11:05:17.000000000 +0200
@@ -96,11 +96,13 @@
* --Matt
*/
float pressure; /* tablet pressure - 0.0 (no pressure) to 1.0 (full pressure) */
- /* mouse clicks and non-contacting stylus buttons generate pressure of 0.0. */
+ /* mouse clicks and non-contacting stylus buttons generate pressure of 0.0. */
float xtilt, ytilt; /* tablet tilt value - x and y components of 3D angle
- * ranging from 0.0 (pen upright) to 1.0 (pen fully leaning over) */
+ * ranging from 0.0 (pen upright) to 1.0 (pen fully leaning over) */
short activedevice; /* Active input device currently in use (DEV_MOUSE, DEV_STYLUS, DEV_ERASER) */
-
+
+ float spacenav_values[6];
+ int spacenav_count;
/* Tracks the faked mouse button, if non-zero it is
* the event number of the last faked button.
@@ -511,6 +513,22 @@
}
}
+static void update_spacenav_data(Window *win, GHOST_WindowHandle ghostwin) {
+ const GHOST_SpaceNavData *snd = GHOST_GetSpaceNavData(ghostwin);
+ int i;
+
+ /* if there is space navigator data from an active space navigator device then use it,
+ * otherwise set all space navigator rleated data to default */
+ if (snd != NULL) {
+ for(i=0; i<6; i++)
+ win->spacenav_values[i] = snd->values[i];
+ win->spacenav_count = snd->count;
+ } else {
+ for(i=0; i<6; i++)
+ win->spacenav_values[i] = 0.0;
+ }
+}
+
static int event_proc(GHOST_EventHandle evt, GHOST_TUserDataPtr private)
{
@@ -554,6 +572,14 @@
}
break;
}
+ case GHOST_kEventSpaceMotion: {
+ if(win->active == 1) {
+ update_spacenav_data(win, ghostwin);
+ window_handle(win, SPACENAV, 1);
+ }
+ break;
+
+ }
case GHOST_kEventButtonDown:
case GHOST_kEventButtonUp: {
GHOST_TEventButtonData *bd= data;
@@ -750,6 +776,15 @@
return win->activedevice;
}
+int window_get_spacenav_values(Window *win, float *snvals) {
+ int i;
+
+ for(i=0; i<6; i++)
+ snvals[i]=win->spacenav_values[i];
+
+ return(win->spacenav_count);
+}
+
void window_get_position(Window *win, int *posx_r, int *posy_r) {
*posx_r= win->position[0];
*posy_r= win->position[1];
diff -aur blender-2.44/source/blender/src/space.c blender-2.44-spacenav/source/blender/src/space.c
--- blender-2.44/source/blender/src/space.c 2007-05-09 16:41:37.000000000 +0200
+++ blender-2.44-spacenav/source/blender/src/space.c 2007-05-26 01:22:48.000000000 +0200
@@ -1193,7 +1193,7 @@
viewmove(0);
}
break;
-
+
case WHEELUPMOUSE:
/* Regular: Zoom in */
/* Shift: Scroll up */
@@ -1490,6 +1490,10 @@
switch(event) {
+ case SPACENAV:
+ viewmove(3);
+ break;
+
/* Afterqueue events */
case BACKBUFDRAW:
backdrawview3d(1);
diff -aur blender-2.44/source/blender/src/view.c blender-2.44-spacenav/source/blender/src/view.c
--- blender-2.44/source/blender/src/view.c 2007-05-09 16:41:37.000000000 +0200
+++ blender-2.44-spacenav/source/blender/src/view.c 2007-05-28 16:47:57.000000000 +0200
@@ -89,6 +89,8 @@
#include "PIL_time.h" /* smoothview */
+#include "winlay.h"
+
#define TRACKBALLSIZE (1.1)
#define BL_NEAR_CLIP 0.001
@@ -541,7 +543,14 @@
short mvalball[2], mval[2], mvalo[2];
short use_sel = 0;
short preview3d_event= 1;
-
+ float snval[6], snvalo[6];
+ int snval_count=0, snval_counto=0;
+ double timeout, frametime, oneframe, oneframeo;
+ int i;
+
+ winlay_process_events(0);
+ snval_count = window_get_spacenav_values(winlay_get_active_window(), snval);
+
/* 3D window may not be defined */
if( !G.vd ) {
fprintf( stderr, "G.vd == NULL in viewmove()\n" );
@@ -560,7 +569,7 @@
mvalball[0]= mvalo[0]; /* needed for turntable to work */
mvalball[1]= mvalo[1];
dist0= G.vd->dist;
-
+
calctrackballvec(&curarea->winrct, mvalo, firstvec);
/* cumultime(0); */
@@ -587,16 +596,42 @@
else
ofs[0] = ofs[1] = ofs[2] = 0.0f;
+ /* spacenav needs ofs & obofs no matter what */
+ VECCOPY(ofs, G.vd->ofs);
+ if (ob) {
+ obofs[0] = -ob->obmat[3][0];
+ obofs[1] = -ob->obmat[3][1];
+ obofs[2] = -ob->obmat[3][2];
+ }
+ else {
+ VECCOPY(obofs, ofs);
+ }
+
reverse= 1.0f;
if (G.vd->persmat[2][1] < 0.0f)
reverse= -1.0f;
+ timeout = PIL_check_seconds_timer()+0.02;
+ frametime = 0.01;
+ oneframeo = timeout - frametime;
+
while(TRUE) {
+ double cursec;
getmouseco_sc(mval);
-
+
+ winlay_process_events(0);
+ snval_counto = snval_count;
+ for(i=0; i<6; i++) snvalo[i] = snval[i];
+ snval_count = window_get_spacenav_values(winlay_get_active_window(), snval);
+
+ if(mode==3) {
+ cursec = PIL_check_seconds_timer();
+ if (cursec > timeout) break;
+ }
+
// if playanim = alt+A, screenhandlers are for animated UI, python, etc
- if(mval[0]!=mvalo[0] || mval[1]!=mvalo[1] || (G.f & G_PLAYANIM) || do_screenhandlers(G.curscreen)) {
-
+ if(mval[0]!=mvalo[0] || mval[1]!=mvalo[1] || (G.f & G_PLAYANIM) || do_screenhandlers(G.curscreen)
+ || snval[0]!=snvalo[0] || snval[1]!=snvalo[1] || snval[2]!=snvalo[2] || snval[3]!=snvalo[3] || snval[4]!=snvalo[4] || snval[5]!=snvalo[5]) {
if(firsttime) {
firsttime= 0;
@@ -727,7 +762,7 @@
VecAddf(G.vd->ofs, G.vd->ofs, dvec);
}
}
- else if(mode==2) {
+ else if(mode==2) {
if(U.viewzoom==USER_ZOOM_CONT) {
// oldstyle zoom
G.vd->dist*= 1.0+(float)(mvalo[0]-mval[0]+mvalo[1]-mval[1])/1000.0;
@@ -760,7 +795,147 @@
if(G.vd->persp==0 || G.vd->persp==2) preview3d_event= 0;
}
-
+
+ else if(mode==3) {
+ /* spacenav in orthographic projection */
+ if(G.vd->persp == 0) {
+ if ((snval[0]!=snvalo[0] || snval[1]!=snvalo[1])) {
+ float dx, dy;
+ dx = -25.0*(snval[0]-snvalo[0]);
+ dy = 25.0*(snval[1]-snvalo[1]);
+ window_to_3d(dvec, dx, dy);
+ VecAddf(G.vd->ofs, G.vd->ofs, dvec);
+ }
+
+ if (snval[2] != snvalo[2]) {
+ G.vd->dist *= 1.0-0.05*(snval[2]-snvalo[2]);
+ if(G.vd->dist<0.001*G.vd->grid) G.vd->dist= 0.001*G.vd->grid;
+ if(G.vd->dist>10.0*G.vd->far) G.vd->dist=10.0*G.vd->far;
+
+ preview3d_event= 0;
+ }
+
+ if (snval[3] != snvalo[3] || snval[4] != snvalo[4]) {
+ float m[3][3];
+ float m_inv[3][3];
+ float xvec[3] = {1,0,0};
+ const float sensitivity = 0.05;
+
+ /* Get the 3x3 matrix and its inverse from the quaternion */
+ QuatToMat3(G.vd->viewquat, m);
+ Mat3Inv(m_inv,m);
+
+ /* Determine the direction of the x vector (for rotating up and down) */
+ /* This can likely be compuated directly from the quaternion. */
+ Mat3MulVecfl(m_inv,xvec);
+
+ /* Perform the up/down rotation spin vertically half as fast as horizontally */
+ phi = -sensitivity * 0.5 * (snval[3]-snvalo[3]);
+ si = sin(phi);
+ q1[0] = cos(phi);
+ q1[1] = si * xvec[0];
+ q1[2] = si * xvec[1];
+ q1[3] = si * xvec[2];
+ QuatMul(G.vd->viewquat, G.vd->viewquat, q1);
+
+ if (1 || use_sel) {
+ QuatConj(q1); /* conj == inv for unit quat */
+ VecSubf(G.vd->ofs, G.vd->ofs, obofs);
+ QuatMulVecf(q1, G.vd->ofs);
+ VecAddf(G.vd->ofs, G.vd->ofs, obofs);
+ }
+
+ /* Perform the orbital rotation twist the knob, y axis */
+ phi = sensitivity * reverse * (snval[4]-snvalo[4]);
+ q1[0] = cos(phi);
+ q1[1] = q1[2] = 0.0;
+ q1[3] = sin(phi);
+ QuatMul(G.vd->viewquat, G.vd->viewquat, q1);
+
+ if (1 || use_sel) {
+ QuatConj(q1);
+ VecSubf(G.vd->ofs, G.vd->ofs, obofs);
+ QuatMulVecf(q1, G.vd->ofs);
+ VecAddf(G.vd->ofs, G.vd->ofs, obofs);
+ }
+ }
+
+ }
+ /* spacenav in perspective projection */
+ else if(G.vd->persp == 1) {
+ if ((snval[0]!=snvalo[0] || snval[1] != snvalo[1] || snval[2]!=snvalo[2])) {
+ float dx, dy, dz;
+ dx = -25.0*(snval[0]-snvalo[0]) * G.vd->zfac/curarea->winx;
+ dy = 25.0*(snval[2]-snvalo[2]) * G.vd->zfac/curarea->winy;
+ dz = 1.0*(snval[1]-snvalo[1]) * G.vd->zfac/(curarea->winx/2+curarea->winy/2);
+
+ dvec[0]= G.vd->persinv[0][0]*dx + G.vd->persinv[1][0]*dy + G.vd->persinv[2][0]*dz;
+ dvec[1]= G.vd->persinv[0][1]*dx + G.vd->persinv[1][1]*dy + G.vd->persinv[2][1]*dz;
+ dvec[2]= G.vd->persinv[0][2]*dx + G.vd->persinv[1][2]*dy + G.vd->persinv[2][2]*dz;
+ VecAddf(G.vd->ofs, G.vd->ofs, dvec);
+ }
+
+ if (snval[3] != snvalo[3]) {
+ float m[3][3];
+ float m_inv[3][3];
+ float xvec[3] = {1,0,0};
+ const float sensitivity = 0.05;
+
+ QuatToMat3(G.vd->viewquat, m);
+ Mat3Inv(m_inv,m);
+ Mat3MulVecfl(m_inv,xvec);
+
+ phi = -sensitivity * 0.5 * (snval[3]-snvalo[3]);
+ si = sin(phi);
+ q1[0] = cos(phi);
+ q1[1] = si * xvec[0];
+ q1[2] = si * xvec[1];
+ q1[3] = si * xvec[2];
+
+ QuatMul(G.vd->viewquat, G.vd->viewquat, q1);
+ QuatConj(q1);
+ VecSubf(G.vd->ofs, G.vd->ofs, obofs);
+ QuatMulVecf(q1, G.vd->ofs);
+ VecAddf(G.vd->ofs, G.vd->ofs, obofs);
+ }
+
+ if (snval[5] != snvalo[5]) {
+ float m[3][3];
+ float m_inv[3][3];
+ float xvec[3] = {1,0,0};
+ const float sensitivity = 0.05;
+
+ /* Get the 3x3 matrix and its inverse from the quaternion */
+ QuatToMat3(G.vd->viewquat, m);
+ Mat3Inv(m_inv,m);
+
+ /* Determine the direction of the x vector (for rotating up and down) */
+ /* This can likely be compuated directly from the quaternion. */
+ Mat3MulVecfl(m_inv,xvec);
+
+
+ phi = sensitivity * reverse * (snval[5]-snvalo[5]);
+ q1[0] = cos(phi);
+ q1[1] = q1[2] = 0.0;
+ q1[3] = sin(phi);
+ QuatMul(G.vd->viewquat, G.vd->viewquat, q1);
+
+ if (1 || use_sel) {
+ QuatConj(q1);
+ VecSubf(G.vd->ofs, G.vd->ofs, obofs);
+ QuatMulVecf(q1, G.vd->ofs);
+ VecAddf(G.vd->ofs, G.vd->ofs, obofs);
+ }
+ }
+
+ if (snval[4] != snvalo[4]) {
+ /* FIXME */
+ }
+ }
+
+ timeout = PIL_check_seconds_timer() + 0.05;
+ }
+
mvalo[0]= mval[0];
mvalo[1]= mval[1];
@@ -784,9 +959,11 @@
BIF_wait_for_statechange();
}
-
+
/* this in the end, otherwise get_mbut does not work on a PC... */
- if( !(get_mbut() & (L_MOUSE|M_MOUSE))) break;
+ if( mode != 3 && (!(get_mbut() & (L_MOUSE|M_MOUSE))))
+ break;
+
}
if(G.vd->depths) G.vd->depths->damaged= 1;
diff -aur blender-2.44/source/blender/src/winlay.h blender-2.44-spacenav/source/blender/src/winlay.h
--- blender-2.44/source/blender/src/winlay.h 2007-04-12 18:51:52.000000000 +0200
+++ blender-2.44-spacenav/source/blender/src/winlay.h 2007-05-25 22:54:58.000000000 +0200
@@ -62,6 +62,8 @@
void window_get_tilt(Window *win, float *xtilt, float *ytilt);
short window_get_activedevice(Window *win);
+void winlay_get_spacenav_values(Window *win, float *snvals);
+
void window_get_position (Window *win, int *posx_r, int *poxy_r);
void window_get_size (Window *win, int *width_r, int *height_r);
diff -aur blender-2.44/source/nan_definitions.mk blender-2.44-spacenav/source/nan_definitions.mk
--- blender-2.44/source/nan_definitions.mk 2007-05-07 18:10:23.000000000 +0200
+++ blender-2.44-spacenav/source/nan_definitions.mk 2007-05-19 22:25:08.000000000 +0200
@@ -359,7 +359,7 @@
ifeq ($(CPU),ia64)
export NAN_PYTHON_VERSION ?= 2.2
else
- export NAN_PYTHON_VERSION ?= 2.3
+ export NAN_PYTHON_VERSION ?= 2.5
endif
export NAN_PYTHON_BINARY ?= $(NAN_PYTHON)/bin/python$(NAN_PYTHON_VERSION)
export NAN_OPENAL ?= /usr
Nur in blender-2.44-spacenav/tools: bcolors.pyc.
Nur in blender-2.44-spacenav/tools: Blender.pyc.
Nur in blender-2.44-spacenav/tools: btools.pyc.
Nur in blender-2.44-spacenav/tools: __init__.pyc.
File Metadata
Details
Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
86/f6/06cdac79de909b14aef3d3216bb8
Event Timeline
Log In to Comment