import EntityCreatorBase import LogicGate import LevelMgrAI import ZoneEntityAI from direct.showbase.PythonUtil import Functor def createDistributedEntity(AIclass, level, entId, zoneId): ent = AIclass(level, entId) ent.generateWithRequired(zoneId) return ent def createLocalEntity(AIclass, level, entId, zoneId): ent = AIclass(level, entId) return ent def nothing(*args): return 'nothing' class EntityCreatorAI(EntityCreatorBase.EntityCreatorBase): def __init__(self, level): EntityCreatorBase.EntityCreatorBase.__init__(self, level) cLE = createLocalEntity self.privRegisterTypes({'attribModifier': nothing, 'ambientSound': nothing, 'collisionSolid': nothing, 'cutScene': nothing, 'entityGroup': nothing, 'entrancePoint': nothing, 'levelMgr': Functor(cLE, LevelMgrAI.LevelMgrAI), 'locator': nothing, 'logicGate': Functor(cLE, LogicGate.LogicGate), 'model': nothing, 'nodepath': nothing, 'path': nothing, 'propSpinner': nothing, 'visibilityExtender': nothing, 'zone': Functor(cLE, ZoneEntityAI.ZoneEntityAI)}) def doCreateEntity(self, ctor, entId): zoneId = self.level.getEntityZoneId(entId) self.notify.debug('creating entity %s in zone %s' % (entId, zoneId)) return ctor(self.level, entId, zoneId)