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)
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
def __init__(self, name): super(SCAEventSensor, self).__init__(name) self._received_event = False self._event_just_changed = False self._listener = DirectObject.DirectObject()
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")
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)
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)
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()
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'))
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)
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"])
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
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