Exemplo n.º 1
0
 def _createPetLookSphere(self):
     isPet = self._isPet()
     if isPet:
         radius = PetConstants.PetSphereRadius
     else:
         radius = PetConstants.NonPetSphereRadius
     lookSphere = CollisionSphere(0, 0, 0, radius)
     lookSphereNode = CollisionNode('petLookSphere-%s' % self.doId)
     lookSphereNode.addSolid(lookSphere)
     lookSphereNode.setFromCollideMask(BitMask32.allOff())
     if isPet:
         intoCollideMask = ToontownGlobals.PetLookatPetBitmask
         fromCollideMask = ToontownGlobals.PetLookatPetBitmask | ToontownGlobals.PetLookatNonPetBitmask
     else:
         intoCollideMask = ToontownGlobals.PetLookatNonPetBitmask
         fromCollideMask = ToontownGlobals.PetLookatPetBitmask
     lookSphereNode.setIntoCollideMask(intoCollideMask)
     lookSphereNode.setFromCollideMask(fromCollideMask)
     self.lookSphereNodePath = self.__collNode.attachNewNode(lookSphereNode)
     self.lookSphereNodePath.setTag('petLooker', '%s' % self.doId)
     self._cHandler = CollisionHandlerEvent()
     self._cHandler.addInPattern(self._getLookingStartEvent())
     self._cHandler.addOutPattern(self._getLookingStopEvent())
     collTrav = self.getCollTrav()
     if collTrav:
         collTrav.addCollider(self.lookSphereNodePath, self._cHandler)
     self.accept(self._getLookingStartEvent(), self._handleLookingAtOtherStart)
     self.accept(self._getLookingStopEvent(), self._handleLookingAtOtherStop)
     if hasattr(self, 'eventProxy'):
         PetLookerAI.notify.warning('%s: already have an eventProxy!' % self.doId)
     else:
         self.eventProxy = DirectObject.DirectObject()
         self.eventProxy.accept(self.getZoneChangeEvent(), self._handleZoneChange)
Exemplo n.º 2
0
def initializeGlobals():
    base.disableMouse()  # this takes the mouse away from Panda3D
    g.panda3dCamera = camera
    g.directObj = DirectObject()
    g.eventSignals = {}
    g.newEvents = {}
    g.events = {}
    g.reactEvents = []
    g.newModels = []
    g.tracking = False
    g.nextNE2dY = .95  # Positioning for 2-D controls
    g.nextNW2dY = .95
    g.tccontext = None
    # Set up the events / behaviors that deal with the mouse
    g.lbp = getEventSignal("mouse1", True)
    g.rbp = getEventSignal("mouse3", True)
    g.lbr = getEventSignal("mouse1-up", True)
    g.rbr = getEventSignal("mouse3-up", True)
    g.mouse = typedVar(SP2(0, 0), P2Type)
    g.lbutton = hold(False, tag(True, g.lbp) + tag(False, g.lbr))
    g.rbutton = hold(False, tag(True, g.rbp) + tag(False, g.rbr))
    g.initMousePos = True
    g.mousePos = SP2(0, 0)
    g.lbuttonPull = typedVar(SP2(0, 0), P2Type)
    g.rbuttonPull = typedVar(SP2(0, 0), P2Type)
    g.world = world
Exemplo n.º 3
0
    def __init__(self, name):
        super(SCAEventSensor, self).__init__(name)

        self._received_event = False
        self._event_just_changed = False

        self._listener = DirectObject.DirectObject()
Exemplo n.º 4
0
    def init_collisions(self):
        base.cTrav = CollisionTraverser()
        self.cHandler = CollisionHandlerEvent()

        pickerNode = CollisionNode("mouseRayNode")
        pickerNPos = base.camera.attachNewNode(pickerNode)
        self.pickerRay = CollisionRay()
        pickerNode.addSolid(self.pickerRay)

        pickerNode.setTag("rays","ray1")
        base.cTrav.addCollider(pickerNPos, self.cHandler)

        self.cHandler.addInPattern("%(rays)ft-into-%(prov)it")
        self.cHandler.addOutPattern("%(rays)ft-out-%(prov)it")

        self.cHandler.addAgainPattern("ray_again_all%(""rays"")fh%(""prov"")ih")

        self.DO=DirectObject()

        self.DO.accept('ray1-into-city', self.collideInBuilding)
        self.DO.accept('ray1-out-city', self.collideOutBuilding)

        self.DO.accept('ray_again_all', self.collideAgainstBuilds)

        self.pickingEnabledOject=None

        self.DO.accept('mouse1', self.mouseClick, ["down"])
        self.DO.accept('mouse1-up', self.mouseClick, ["up"])

        taskMgr.add(self.rayUpdate, "updatePicker")
Exemplo n.º 5
0
    def _createPetLookSphere(self):
        # creates a sphere that will collide with PetLookerAI probe segments
        # to detect when another PetLooker is looking at us
        isPet = self._isPet()
        if isPet:
            radius = PetConstants.PetSphereRadius
        else:
            radius = PetConstants.NonPetSphereRadius
        lookSphere = CollisionSphere(0, 0, 0, radius)
        lookSphereNode = CollisionNode('petLookSphere-%s' % self.doId)
        lookSphereNode.addSolid(lookSphere)
        lookSphereNode.setFromCollideMask(BitMask32.allOff())
        # this sphere represents us in the collision graph, and collides
        # against other avatars' spheres. Everyone collides with pets,
        # nobody collides with non-pets
        if isPet:
            intoCollideMask = ToontownGlobals.PetLookatPetBitmask
            # if we are a pet, we want to collide with pets and non-pets
            fromCollideMask = (ToontownGlobals.PetLookatPetBitmask
                               | ToontownGlobals.PetLookatNonPetBitmask)
        else:
            intoCollideMask = ToontownGlobals.PetLookatNonPetBitmask
            # non-pets only collide with pets
            fromCollideMask = ToontownGlobals.PetLookatPetBitmask
        lookSphereNode.setIntoCollideMask(intoCollideMask)
        lookSphereNode.setFromCollideMask(fromCollideMask)
        self.lookSphereNodePath = (
            self.__collNode.attachNewNode(lookSphereNode))
        # include a reference to ourself on the node so that colliders
        # know who they collided with. I'd like to just set a python reference
        # here, but that doesn't make it through to the collision handler.
        # Use node tags instead (dict of string->string)
        self.lookSphereNodePath.setTag('petLooker', '%s' % self.doId)

        # set up the collision event generation and handling
        self._cHandler = CollisionHandlerEvent()
        self._cHandler.addInPattern(self._getLookingStartEvent())
        self._cHandler.addOutPattern(self._getLookingStopEvent())

        # getCollTrav is a DistObjAI func. We must be in the right zone before
        # calling this.
        collTrav = self.getCollTrav()
        if collTrav:
            collTrav.addCollider(self.lookSphereNodePath, self._cHandler)

        self.accept(self._getLookingStartEvent(),
                    self._handleLookingAtOtherStart)
        self.accept(self._getLookingStopEvent(),
                    self._handleLookingAtOtherStop)

        # don't override any existing self.accept(self.getZoneChangeEvent())
        # handlers; use a proxy obj
        if hasattr(self, 'eventProxy'):
            PetLookerAI.notify.warning('%s: already have an eventProxy!' %
                                       self.doId)
        else:
            self.eventProxy = DirectObject.DirectObject()
            self.eventProxy.accept(self.getZoneChangeEvent(),
                                   self._handleZoneChange)
Exemplo n.º 6
0
    def collides(self):

        self.cHandler.addInPattern('%fn-into-%in')
        self.cHandler.addOutPattern('%fn-out-%in')

        DO = DirectObject()

        DO.accept("playerCollider-into-npcCollider", self.collideEventIn)
        DO.accept("playerCollider-out-npcCollider", self.collideEventOut)
Exemplo n.º 7
0
    def __init__(self):
        loadModel(self,"Models/Damaging")
        self["Damaging"]=self["Models/Damaging"]
        self["model"]=self["Damaging"]
        self["Health"]=4
        self["Events"]=DirectObject()
        self["Events"].accept("DamageArea",self.DamageEvent)

        self["CollideModel"]=SphereCollide(self["model"])["collisionPath"]
        self["CollideModel"].show()
Exemplo n.º 8
0
    def __init__(self):
        PandaNode.__init__(self, 'PositionHandle')

        CameraController.getInstance().addEventHandler(EVT_CAMERA_MOVE,
                                                       self._fixScale)
        self.path = NodePath(self)

        self.xHandle = DirectionHandle(self, Vec4(1, 0, 0, 0.6),
                                       Vec3(0, 0, 90), 'x')
        self.addChild(self.xHandle)

        self.yHandle = DirectionHandle(self, Vec4(0, 1, 0, 0.6),
                                       Vec3(0, -90, 0), 'y')
        self.addChild(self.yHandle)

        self.zHandle = DirectionHandle(self, Vec4(0, 0, 1, 0.6), Vec3(0, 0, 0),
                                       'z')
        self.addChild(self.zHandle)

        self.hHandle = RotationHandle(self, Vec4(0, 0, 1, 0.6), Vec3(0, 0, 0),
                                      'z')
        self.addChild(self.hHandle)
        NodePath(self.hHandle).setScale(1.02)

        self.pHandle = RotationHandle(self, Vec4(0, 1, 0, 0.6),
                                      Vec3(0, -90, 0), 'y')
        self.addChild(self.pHandle)
        NodePath(self.pHandle).setScale(0.98)

        self.rHandle = RotationHandle(self, Vec4(1, 0, 0, 0.6), Vec3(0, 0, 90),
                                      'x')
        self.addChild(self.rHandle)
        self._tPressed()

        self.path.setTransparency(1)
        self.path.setBin('transparent', 30, 50)
        #self.path.setDepthTest(False)
        self.path.setLightOff()
        self.path.setRenderModeThickness(2)
        self.setClients([])

        self.evtWatcher = DirectObject.DirectObject()
        self.evtWatcher.accept(base.win.getWindowEvent(),
                               self._windowEventHandler)
        self.evtWatcher.accept('r', self._rPressed)
        self.evtWatcher.accept('t', self._tPressed)

        self.originalPos = self.path.getPos()
        self.fLenPx = base.cam.node().getLens().getFocalLength(
        ) * base.win.getXSize()
        self._fixScale()
 def enterActive(self):
     OrbitCamera.enterActive(self)
     self.accept('wheel_up', self._handleWheelUp)
     self.accept('wheel_down', self._handleWheelDown)
     self._scInputState = ScratchPad()
     self._scInputState.rmbPressed = False
     self._scInputState.fwdPressed = False
     self._scInputListener = DirectObject.DirectObject()
     self._scInputListener.accept(inputState.getEventName('RMB'),
                                  self._handleRmbEvent)
     self._handleRmbEvent(inputState.isSet('RMB'))
     self._scInputListener.accept(inputState.getEventName('forward'),
                                  self._handleForwardEvent)
     self._handleForwardEvent(inputState.isSet('forward'))
Exemplo n.º 10
0
 def enterActive(self):
     OrbitCamera.enterActive(self)
     self.accept('wheel_up', self._handleWheelUp)
     self.accept('wheel_down', self._handleWheelDown)
     self._scInputState = ScratchPad()
     self._scInputState.rmbPressed = False
     self._scInputState.fwdPressed = False
     self._scInputListener = DirectObject.DirectObject()
     self._scInputListener.accept(inputState.getEventName('RMB'), self._handleRmbEvent)
     self._handleRmbEvent(inputState.isSet('RMB'))
     self._scInputListener.accept(inputState.getEventName('forward'), self._handleForwardEvent)
     self._handleForwardEvent(inputState.isSet('forward'))
     if hasattr(self.subject, 'doId'):
         self.speedAcceptName = 'setShipSpeed-%s' % self.subject.doId
         self.accept(self.speedAcceptName, self.recordShipSpeed)
Exemplo n.º 11
0
    def setup_collision_calcs(self):
        self.cHandler.addInPattern("%(rays)ft-into-%(prov)it")
        self.cHandler.addOutPattern("%(rays)ft-out-%(prov)it")

        self.cHandler.addAgainPattern("ray_again_all%(""rays"")fh%(""prov"")ih")

        self.DO=DirectObject()

        self.DO.accept('ray1-into-city', self.collideInBuilding)
        self.DO.accept('ray1-out-city', self.collideOutBuilding)

        self.DO.accept('ray_again_all', self.collideAgainstBuilds)

        self.pickingEnabledOject=None

        self.DO.accept('mouse1', self.mouseClick, ["down"])
        self.DO.accept('mouse1-up', self.mouseClick, ["up"])
Exemplo n.º 12
0
    def __init__(self,
                 numShown,
                 parent,
                 title=None,
                 height=0.59999999999999998,
                 memberHeight=0.065000000000000002,
                 memberOffset=0.021000000000000001,
                 memberWidth=0.45000000000000001,
                 bottom=0,
                 hud=False,
                 width=0.47999999999999998,
                 sort=0):
        if hasattr(self, 'initialized'):
            self.arrangeMembers()
            return None

        self.shown = numShown
        self.memberHeight = memberHeight
        self.memberWidth = memberWidth
        self.memberOffset = memberOffset
        self.title = title
        self.wantSortButtons = sort
        self.width = width
        self.bottom = bottom
        self.height = height
        self.hud = hud
        self.baseFrame = DirectFrame(relief=None, parent=parent)
        if self.hud:
            self.baseFrame['state'] = DGG.DISABLED

        self.members = []
        self.memberAvatarDict = {}
        self.memberPlayerDict = {}
        self.onlineCheckTaskName = base.cr.specialName(
            'memberList_checkLastOnline')
        self.prearrangeTaskName = base.cr.specialName(
            'memberList_prearrangeMembers')
        self.onlineChangeEvent = base.cr.specialName('memberList_onlineChange')
        self.setup()
        self.arrangeMembers()
        self.initialized = 1
        self.show()
        self.sortMode = 'Name'
        self.onlineDataProbe = DirectObject()
        self.onlineCount = 0
Exemplo n.º 13
0
from direct.showbase import DirectObject
from direct.directnotify import DirectNotifyGlobal
from direct.distributed import DistributedObject
from direct.task import Task
from direct.distributed import DoInterestManager
from otp.distributed.OtpDoGlobals import *


_ToonTownDistrictStatInterest = None
_ToonTownDistrictStatInterestComplete = 0
_trashObject = DirectObject.DirectObject()                  

def EventName():
    return "ShardPopulationSet"
       
def isOpen():
    global _ToonTownDistrictStatInterest
    return (_ToonTownDistrictStatInterest is not None)

def isComplete():
    global _ToonTownDistrictStatInterestComplete
    return  _ToonTownDistrictStatInterestComplete     
    

def open(event =None):
    global _ToonTownDistrictStatInterest
    global _ToonTownDistrictStatInterestComplete
    global _trashObject
    if(not isOpen()):
        def _CompleteProc(event):        
            global _ToonTownDistrictStatInterestComplete