Panda3D
Loading...
Searching...
No Matches
DistributedCartesianGridAI Class Reference
Inheritance diagram for DistributedCartesianGridAI:
DistributedNodeAI CartesianGridBase DistributedObjectAI DistributedObjectBase DirectObject

Public Member Functions

 __init__ (self, air, startingZone, gridSize, gridRadius, cellWidth, style="Cartesian")
 
 addObjectToGrid (self, av, useZoneId=-1, startAutoUpdate=True)
 
 delete (self)
 
 getCellWidth (self)
 
 getParentingRules (self)
 
 handleAvatarZoneChange (self, av, useZoneId=-1)
 
 handleSetLocation (self, av, parentId, zoneId)
 
 isGridParent (self)
 
 removeObjectFromGrid (self, av)
 
 startUpdateGridTask (self)
 updateGridTask This task is similar to the processVisibility task for the local client.
 
 stopUpdateGridTask (self)
 
 updateGridTask (self, task=None)
 
- Public Member Functions inherited from DistributedNodeAI
 __init__ (self, air, name=None)
 
 b_setParent (self, parentToken)
 setParent ###
 
 b_setPosHpr (self, x, y, z, h, p, r)
 
 b_setXYZH (self, x, y, z, h)
 
 d_setH (self, h)
 
 d_setHpr (self, h, p, r)
 
 d_setP (self, p)
 
 d_setParent (self, parentToken)
 
 d_setPos (self, x, y, z)
 
 d_setPosHpr (self, x, y, z, h, p, r)
 
 d_setR (self, r)
 
 d_setX (self, x)
 set pos and hpr functions #######
 
 d_setXY (self, x, y)
 
 d_setXYH (self, x, y, h)
 
 d_setXYZH (self, x, y, z, h)
 
 d_setY (self, y)
 
 d_setZ (self, z)
 
 do_setParent (self, parentToken)
 
 getXYZH (self)
 
 setLocation (self, parentId, zoneId, teleport=0)
 
 setParent (self, parentToken)
 
 setParentStr (self, parentToken)
 
 setXY (self, x, y)
 
 setXYH (self, x, y, h)
 
 setXYZH (self, x, y, z, h)
 
- Public Member Functions inherited from DistributedObjectAI
 __init__ (self, air)
 
 announceGenerate (self)
 
 b_setLocation (self, parentId, zoneId)
 
 beginBarrier (self, name, avIds, timeout, callback)
 
 d_setLocation (self, parentId, zoneId)
 
 deleteOrDelay (self)
 
 execCommand (self, string, mwMgrId, avId, zoneId)
 
 generate (self)
 
 generateInit (self, repository=None)
 
 generateOtpObject (self, parentId, zoneId, optionalFields=[], doId=None)
 
 generateTargetChannel (self, repository)
 
 generateWithRequired (self, zoneId, optionalFields=[])
 
 generateWithRequiredAndId (self, doId, parentId, zoneId, optionalFields=[])
 
 GetAccountConnectionChannel (self, doId)
 
 GetAccountIDFromChannelCode (self, channel)
 
 GetAvatarIDFromChannelCode (self, channel)
 
 getBarrierData (self)
 
 getCacheable (self)
 
 getCollTrav (self, *args, **kArgs)
 
 getDelayDeleteCount (self)
 
 getDeleteEvent (self)
 
 getDoId (self)
 
 getLocation (self)
 
 getLogicalZoneChangeEvent (self)
 
 getNonCollidableParent (self)
 
 getParentMgr (self)
 
 GetPuppetConnectionChannel (self, doId)
 
 getRender (self)
 
 getZoneChangeEvent (self)
 
 getZoneData (self)
 
 handleLogicalZoneChange (self, newZoneId, oldZoneId)
 
 ignoreBarrier (self, context)
 
 initFromServerResponse (self, valDict)
 
 isDeleted (self)
 
 isGenerated (self)
 
 postGenerateMessage (self)
 
 preAllocateDoId (self)
 
 releaseZoneData (self)
 
 requestDelete (self)
 
 sendDeleteEvent (self)
 
 sendGenerateWithRequired (self, repository, parentId, zoneId, optionalFields=[])
 
 sendMessageBundle (self)
 
 sendUpdate (self, fieldName, args=[])
 
 sendUpdateToAccountId (self, accountId, fieldName, args)
 
 sendUpdateToAvatarId (self, avId, fieldName, args)
 
 sendUpdateToChannel (self, channelId, fieldName, args)
 
 setAI (self, aiChannel)
 
 setBarrierReady (self, context)
 
 startMessageBundle (self, name)
 
 status (self, indent=0)
 
 taskName (self, taskString)
 
 uniqueName (self, idString)
 
 updateAllRequiredFields (self, dclass, di)
 
 updateAllRequiredOtherFields (self, dclass, di)
 
 updateRequiredFields (self, dclass, di)
 
 updateRequiredOtherFields (self, dclass, di)
 
 validate (self, avId, bool, msg)
 
- Public Member Functions inherited from DistributedObjectBase
 __init__ (self, cr)
 
 getParentObj (self)
 
 handleChildArrive (self, childObj, zoneId)
 
 handleChildArriveZone (self, childObj, zoneId)
 
 handleChildLeave (self, childObj, zoneId)
 
 handleChildLeaveZone (self, childObj, zoneId)
 
 handleQueryObjectChildrenLocalDone (self, context)
 
 hasParentingRules (self)
 
- Public Member Functions inherited from DirectObject
 __init__ (self)
 
 accept (self, event, method, extraArgs=[])
 
 acceptOnce (self, event, method, extraArgs=[])
 
 addTask (self, *args, **kwargs)
 
 detectLeaks (self)
 
 doMethodLater (self, *args, **kwargs)
 
 getAllAccepting (self)
 
 ignore (self, event)
 
 ignoreAll (self)
 
 isAccepting (self, event)
 
 isIgnoring (self, event)
 
 removeAllTasks (self)
 
 removeTask (self, taskOrName)
 
- Public Member Functions inherited from CartesianGridBase
 getConcentricZones (self, zoneId, radius)
 
 getGridSizeFromSphere (self, sphereRadius, spherePos, cellWidth, gridRadius)
 
 getGridSizeFromSphereRadius (self, sphereRadius, cellWidth, gridRadius)
 
 getZoneCellOrigin (self, zoneId)
 
 getZoneCellOriginCenter (self, zoneId)
 
 getZoneFromXYZ (self, pos, wantRowAndCol=False)
 
 isValidZone (self, zoneId)
 

Public Attributes

 cellWidth = cellWidth
 
dict gridObjects = {}
 
 gridRadius = gridRadius
 
 gridSize = gridSize
 
 updateGridTask = 1
 
int updateTaskStarted = 0
 
- Public Attributes inherited from DistributedNodeAI
int DistributedNodeAI_initialized = 1
 
 gridParent = None
 
- Public Attributes inherited from DistributedObjectAI
str accountName = ''
 
 air = air
 Asad: As per Roger's suggestion, turn off the following block until a solution is thought out of how to prevent this delete message or to handle this message better TODO: do we still need this check?
 
 dclass = self.air.dclassesByName[className]
 
int DistributedObjectAI_initialized = 1
 
 lastNonQuietZone = None
 
- Public Attributes inherited from DistributedObjectBase
 cr = cr
 
 doId
 
int parentId = None
 
 zoneId = None
 
- Public Attributes inherited from CartesianGridBase
 startingZone
 
str style = "Cartesian":
 

Static Public Attributes

str RuleSeparator = ":"
 
- Static Public Attributes inherited from DistributedObjectAI
int QuietZone = 1
 
- Static Public Attributes inherited from DistributedObjectBase
 notify = directNotify.newCategory("DistributedObjectBase")
 
- Static Public Attributes inherited from DirectObject
 accept_once = acceptOnce
 
 add_task = addTask
 
 detect_leaks = detectLeaks
 
 do_method_later = doMethodLater
 
 get_all_accepting = getAllAccepting
 
 ignore_all = ignoreAll
 
 is_accepting = isAccepting
 
 is_ignoring = isIgnoring
 
 remove_all_tasks = removeAllTasks
 
 remove_task = removeTask
 

Additional Inherited Members

- Static Public Member Functions inherited from DistributedObjectAI
 staticGetLogicalZoneChangeEvent (doId)
 
 staticGetZoneChangeEvent (doId)
 
- Protected Member Functions inherited from DistributedObjectAI
 _retrieveCachedData (self)
 
- Protected Member Functions inherited from DirectObject
 _addTask (self, task)
 
 _clearTask (self, task)
 
- Protected Attributes inherited from DistributedObjectAI
bool _DOAI_requestedDelete = False
 
 _zoneData = None
 
- Protected Attributes inherited from DirectObject
dict _taskList = {}
 

Constructor & Destructor Documentation

◆ __init__()

__init__ ( self,
air,
startingZone,
gridSize,
gridRadius,
cellWidth,
style = "Cartesian" )

Member Function Documentation

◆ addObjectToGrid()

addObjectToGrid ( self,
av,
useZoneId = -1,
startAutoUpdate = True )

◆ delete()

delete ( self)
Inheritors should redefine this to take appropriate action on delete
Note that this may be called multiple times if a class inherits
from DistributedObjectAI more than once.

Reimplemented from DistributedNodeAI.

◆ getCellWidth()

getCellWidth ( self)

◆ getParentingRules()

getParentingRules ( self)

◆ handleAvatarZoneChange()

handleAvatarZoneChange ( self,
av,
useZoneId = -1 )

◆ handleSetLocation()

handleSetLocation ( self,
av,
parentId,
zoneId )

◆ isGridParent()

isGridParent ( self)

Reimplemented from DistributedObjectAI.

◆ removeObjectFromGrid()

removeObjectFromGrid ( self,
av )

◆ startUpdateGridTask()

startUpdateGridTask ( self)

updateGridTask This task is similar to the processVisibility task for the local client.

A couple differences:

  • we are not doing setInterest on the AI (that is a local client specific call).
  • we assume that the moving objects on the grid are parented to a gridParent, and are broadcasting their position relative to that gridParent. This makes the task's math easy. Just check to see when our position goes out of the current grid cell. When it does, call handleAvatarZoneChange

◆ stopUpdateGridTask()

stopUpdateGridTask ( self)

◆ updateGridTask()

updateGridTask ( self,
task = None )

Member Data Documentation

◆ cellWidth

cellWidth = cellWidth

◆ gridObjects

gridObjects = {}

◆ gridRadius

gridRadius = gridRadius

◆ gridSize

gridSize = gridSize

◆ RuleSeparator

str RuleSeparator = ":"
static

◆ updateGridTask

updateGridTask = 1

◆ updateTaskStarted

updateTaskStarted = 0