Examples of using mouse events to interact with objects.
ClickOnObject.tar
from pandac.PandaModules import *
from direct.task import *
from direct.showbase import DirectObject
import direct.directbase.DirectStart
import random
from MousePickingManager import *
import sys
class World (DirectObject.DirectObject):
def __init__(self):
self.loadmodels()
self.mousemanager = MousePickingManager(self)
self.accept ('escape',self.quit)
def loadmodels(self):
light1Node=PointLight("light1")
light1=camera.attachNewNode(light1Node)
render.setLight(light1)
camera.setPos(0,-10,0)
self.redpawn = Pawn("red pawn")
self.redpawn.obj.setColor(1,0,0,1)
def quit (self):
print "bye bye"
sys.exit()
class Pawn (DirectObject.DirectObject):
def __init__(self,name):
self.name=name
p=loader.loadModel("pawn")
p.setName(name)
p.reparentTo(render)
self.obj=p
w=World()
run()
from pandac.PandaModules import *
from direct.task import *
from direct.showbase import DirectObject
import direct.directbase.DirectStart
import random
from MousePickingManager import *
import sys
class World (DirectObject.DirectObject):
def __init__(self):
self.loadmodels()
self.mousemanager = MousePickingManager(self)
self.accept ('escape',self.quit)
def loadmodels(self):
light1Node=PointLight("light1")
light1=camera.attachNewNode(light1Node)
render.setLight(light1)
camera.setPos(0,-10,0)
self.redpawn = Pawn("red pawn")
self.redpawn.obj.setColor(1,0,0,1)
def quit (self):
print "bye bye"
sys.exit()
class Pawn (DirectObject.DirectObject):
def __init__(self,name):
self.name=name
p=loader.loadModel("pawn")
p.setName(name)
p.reparentTo(render)
# setTag() lets you add extra properties to a node. "mouseInteraction" is a flag for the MousePickingManager,
# telling it that this object can have mouse interactions applied to it.
p.setTag("mouseInteraction","1")
# setPythonTag is like setTag, but it lets you connect a node to a python object.
# here we connect the model to the Python object that uses it.
# this is because the mouse interaction code can only tell what object you've clicked on, and needs this
# information to connect to the event handlers.
p.setPythonTag("pythonObject",self)
# the mouse manager generates events with the name of the object appended, so this form of accept() will catch them correctly
self.accept("mouseEnter"+self.name, self.onMouseEnter)
self.obj=p
def onMouseEnter(self):
print "Mouse Enter", self.name
w=World()
run()
from pandac.PandaModules import *
from direct.task import *
from direct.showbase import DirectObject
import direct.directbase.DirectStart
import random
from MousePickingManager import *
import sys
class World (DirectObject.DirectObject):
def __init__(self):
self.loadmodels()
self.mousemanager = MousePickingManager(self)
self.accept ('escape',self.quit)
def loadmodels(self):
light1Node=PointLight("light1")
light1=camera.attachNewNode(light1Node)
render.setLight(light1)
camera.setPos(0,-10,0)
self.redpawn = Pawn("red pawn")
self.redpawn.obj.setColor(1,0,0,1)
def quit (self):
print "bye bye"
sys.exit()
class Pawn (DirectObject.DirectObject):
def __init__(self,name):
self.name=name
p=loader.loadModel("pawn")
p.setName(name)
p.reparentTo(render)
p.setTag("mouseInteraction","1")
p.setPythonTag("pythonObject",self)
self.accept("mouseEnter"+self.name, self.onMouseEnter)
self.accept("mouseLeave"+self.name, self.onMouseLeave)
self.accept("mouseDown"+self.name, self.onMouseDown)
self.accept("mouseUp"+self.name,self.onMouseUp)
self.accept("mouseUpOutside"+self.name,self.onMouseUpOutside)
self.obj=p
def onMouseEnter(self):
print "Mouse Enter", self.name
def onMouseLeave(self):
print "Mouse Leave", self.name
def onMouseDown(self):
print "Mouse Down", self.name
def onMouseUp(self):
print "Mouse Up", self.name
def onMouseUpOutside(self):
print "Mouse Up Outside", self.name
w=World()
run()
from pandac.PandaModules import *
from direct.task import *
from direct.showbase import DirectObject
import direct.directbase.DirectStart
import random
from MousePickingManager import *
import sys
class World (DirectObject.DirectObject):
def __init__(self):
self.loadmodels()
self.mousemanager = MousePickingManager(self)
self.accept ('escape',self.quit)
def loadmodels(self):
light1Node=PointLight("light1")
light1=camera.attachNewNode(light1Node)
render.setLight(light1)
camera.setPos(0,-10,0)
self.redpawn = Pawn("red pawn")
self.redpawn.obj.setColor(1,0,0,1)
def quit (self):
print "bye bye"
sys.exit()
class Pawn (DirectObject.DirectObject):
def __init__(self,name):
self.name=name
p=loader.loadModel("pawn")
p.setName(name)
p.reparentTo(render)
p.setTag("mouseInteraction","1")
p.setPythonTag("pythonObject",self)
self.accept("mouseEnter"+self.name, self.onMouseEnter)
self.accept("mouseLeave"+self.name, self.onMouseLeave)
self.accept("mouseDown"+self.name, self.onMouseDown)
self.accept("mouseUp"+self.name,self.onMouseUp)
self.accept("mouseUpOutside"+self.name,self.onMouseUpOutside)
self.obj=p
def onMouseEnter(self):
self.obj.setScale(1.1)
def onMouseLeave(self):
self.obj.setScale(1)
def onMouseDown(self):
self.obj.setScale(1.5)
def onMouseUp(self):
self.obj.setScale(1.1)
def onMouseUpOutside(self):
self.obj.setScale(1)
w=World()
run()
from pandac.PandaModules import *
from direct.task import *
from direct.showbase import DirectObject
import direct.directbase.DirectStart
import random
from MousePickingManager import *
import sys
class World (DirectObject.DirectObject):
def __init__(self):
self.loadmodels()
self.mousemanager = MousePickingManager(self)
self.accept ('escape',self.quit)
def loadmodels(self):
light1Node=PointLight("light1")
light1=camera.attachNewNode(light1Node)
render.setLight(light1)
camera.setPos(0,-10,0)
self.redpawn = Pawn("red pawn")
# add properties for base color, rollover color, and click color
# these will be part of Pawn, not part of Pawn.obj
self.redpawn.setBaseColor (.5,.4,.4)
self.redpawn.setHighlightColor (1,0,0)
self.redpawn.setSelectColor (1,.5,.5)
def quit (self):
print "bye bye"
sys.exit()
class Pawn (DirectObject.DirectObject):
def __init__(self,name):
self.name=name
p=loader.loadModel("pawn")
p.setName(name)
p.reparentTo(render)
p.setTag("mouseInteraction","1")
p.setPythonTag("pythonObject",self)
self.accept("mouseEnter"+self.name, self.onMouseEnter)
self.accept("mouseLeave"+self.name, self.onMouseLeave)
self.accept("mouseDown"+self.name, self.onMouseDown)
self.accept("mouseUp"+self.name,self.onMouseUp)
self.accept("mouseUpOutside"+self.name,self.onMouseUpOutside)
self.obj=p
self.setBaseColor(1,1,1)
self.highlightColor=Vec4(1,1,1,1)
self.selectColor=Vec4(1,1,1,1)
def setBaseColor(self,r,g,b):
self.baseColor = Vec4(r,g,b,1)
self.obj.setColor(self.baseColor)
def setHighlightColor(self,r,g,b):
self.highlightColor = Vec4(r,g,b,1)
def setSelectColor(self,r,g,b):
self.selectColor = Vec4(r,g,b,1)
def onMouseEnter(self):
self.obj.setColor(self.highlightColor)
def onMouseLeave(self):
self.obj.setColor(self.baseColor)
def onMouseDown(self):
self.obj.setColor(self.selectColor)
def onMouseUp(self):
self.obj.setColor(self.highlightColor)
def onMouseUpOutside(self):
self.obj.setColor(self.baseColor)
w=World()
run()