Return to Snippet

Revision: 7166
at July 10, 2008 14:43 by ZeroByte


Initial Code
from MouseGest import Gesture
import direct.directbase.DirectStart
from BasePolling import interface

test_gestures = {}
test_gestures['right'] = Gesture()
test_gestures['right'].add_stroke( [(0, 0), (1, 0)] )

test_gestures['left'] = Gesture()
test_gestures['left'].add_stroke( [(0, 0), (-1, 0)] )

test_gestures['up'] = Gesture()
test_gestures['up'].add_stroke( [(0, 0), (0, 1)] )

test_gestures['down'] = Gesture()
test_gestures['down'].add_stroke( [(0, 0), (0, -1)] )

test_gestures['box'] = Gesture()
test_gestures['box'].add_stroke([(0, 0), (0, 1)])
test_gestures['box'].add_stroke([(0, 1), (1, 1)])
test_gestures['box'].add_stroke([(1, 1), (1, 0)])
test_gestures['box'].add_stroke([(1, 0), (0, 0)])
for key in test_gestures:
   test_gestures[key].normalize()

class MouseTest:
    
    def __init__(self):
        self.lastAct = 0
        self.gestureDelay = 2
        self.drawingFlag = False
        self.matchedFlag = True
        taskMgr.add(self.drawTask, "Drawing task")
        
        self.currGest = None
        self.currStroke = None
    
    def drawTask(self, task):
        
        if task.time - self.lastAct >= self.gestureDelay and not self.matchedFlag:
            self.currGest.normalize()
            print "--Evaluating gesture--"
            for gesture_name in test_gestures:
                if self.currGest == test_gestures[gesture_name]:
                    print "Gesture:", gesture_name
            self.currGest = None
            self.matchedFlag = True
        
        if interface.getMouseHit('left'):
            if self.currGest is None:
                self.currGest = Gesture()
            self.currStroke = self.currGest.add_stroke()
            print "Starting new stroke"
            self.drawingFlag = True
            self.matchedFlag = False
            self.lastAct = task.time
            
        if self.drawingFlag:
            if not interface.getMouse('left'):
                self.drawingFlag = False
                return task.cont
            else:
                self.lastAct = task.time
            mousePos = interface.getMousePos()
            self.currStroke.points.append(Gesture.Point(mousePos[0], mousePos[1]))
        
        return task.cont

mouse = MouseTest()
run()

Initial URL


Initial Description
Usage example of my mouse gesture class (http://snipplr.com/view/7216/mouse-gestures/) in Panda3d

Initial Title
Mouse Gesture Integration With Panda3D

Initial Tags


Initial Language
Python