mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 10:54:24 -04:00
*** empty log message ***
This commit is contained in:
parent
484fb2bd52
commit
e4c5381877
72
direct/src/distributed/DistributedObjectBase.py
Executable file
72
direct/src/distributed/DistributedObjectBase.py
Executable file
@ -0,0 +1,72 @@
|
||||
|
||||
from direct.showbase.PandaObject import PandaObject
|
||||
#from direct.directnotify.DirectNotifyGlobal import directNotify
|
||||
|
||||
class DistributedObjectBase(PandaObject):
|
||||
"""
|
||||
The Distributed Object class is the base class for all network based
|
||||
(i.e. distributed) objects. These will usually (always?) have a
|
||||
dclass entry in a *.dc file.
|
||||
"""
|
||||
notify = directNotify.newCategory("DistributedObjectBase")
|
||||
|
||||
def __init__(self, cr):
|
||||
assert self.notify.debugStateCall(self)
|
||||
self.cr = cr
|
||||
self.children = {}
|
||||
self.parentId = None
|
||||
self.zoneId = None
|
||||
|
||||
if __debug__:
|
||||
def status(self, indent=0):
|
||||
"""
|
||||
print out "doId(parentId,zoneId) className"
|
||||
"""
|
||||
spaces=' '*(indent+2)
|
||||
try:
|
||||
print "%s%s:"%(
|
||||
' '*indent, self.__class__.__name__)
|
||||
print "%sfrom DistributedObject doId:%s, parent:%s, zone:%s"%(
|
||||
spaces,
|
||||
self.doId, self.parentId, self.zoneId),
|
||||
except Exception, e: print "%serror printing status"%(spaces,), e
|
||||
|
||||
def getLocation(self):
|
||||
try:
|
||||
if self.parentId == 0 and self.zoneId == 0:
|
||||
return None
|
||||
# This is a -1 stuffed into a uint32
|
||||
if self.parentId == 0xffffffff and self.zoneId == 0xffffffff:
|
||||
return None
|
||||
return (self.parentId, self.zoneId)
|
||||
except AttributeError:
|
||||
return None
|
||||
|
||||
def handleChildArrive(self, childObj, zoneId):
|
||||
self.notify.debugCall()
|
||||
# A new child has just setLocation beneath us. Give us a
|
||||
# chance to run code when a new child sets location to us. For
|
||||
# example, we may want to scene graph reparent the child to
|
||||
# some subnode we own.
|
||||
## zone=self.children.setdefault(zoneId, {})
|
||||
## zone[childObj.doId]=childObj
|
||||
|
||||
# Inheritors should override
|
||||
pass
|
||||
|
||||
def handleChildLeave(self, childObj, zoneId):
|
||||
self.notify.debugCall()
|
||||
# A child is about to setLocation away from us. Give us a
|
||||
# chance to run code just before a child sets location away from us.
|
||||
## zone=self.children[zoneId]
|
||||
## del zone[childObj.doId]
|
||||
## if not len(zone):
|
||||
## del self.children[zoneId]
|
||||
|
||||
# Inheritors should override
|
||||
pass
|
||||
|
||||
def getParentObj(self):
|
||||
if self.parentId is None:
|
||||
return None
|
||||
return self.cr.doId2do.get(self.parentId)
|
Loading…
x
Reference in New Issue
Block a user