def generateIslands(self, islandModel, name, uid, isDockable, gameZone):
        self.island = DistributedIslandAI(self.air, islandModel, name, uid)
        self.island.generateWithRequired(zoneId=gameZone)
        self.island.d_setZoneSphereSize(rad0=1000, rad1=2000, rad2=3000)
        self.island.d_setIslandModel(islandModel=self.island.getIslandModel())
        self.island.d_setUndockable(undockable=isDockable)
        self.activeIslands.add(self.island)

        if self.island:
            self.air.notify.info("Created island: %s" % (name))
    def generateIslands(self, islandModel, name, uid, isDockable, gameZone):
        self.island = DistributedIslandAI(self.air, islandModel, name, uid)
        self.island.generateWithRequired(zoneId=gameZone)
        self.island.d_setZoneSphereSize(rad0=1000, rad1=2000, rad2=3000)
        self.island.d_setIslandModel(islandModel=self.island.getIslandModel())
        self.island.d_setUndockable(undockable=isDockable)
        self.activeIslands.add(self.island)

        if self.island:
            self.air.notify.info("Created island: %s" % (name))
class DistributedInstanceWorldAI(DistributedInstanceBaseAI):
    notify = DirectNotifyGlobal.directNotify.newCategory('DistributedInstanceWorldAI')

    def __init__(self, air, fileName=""):
        DistributedInstanceBaseAI.__init__(self, air, fileName)
        self.fileName = fileName

        self.activeIslands = set()

    def announceGenerate(self):
        DistributedInstanceBaseAI.announceGenerate(self)

    def generateIslands(self, islandModel, name, uid, isDockable, gameZone):
        self.island = DistributedIslandAI(self.air, islandModel, name, uid)
        self.island.generateWithRequired(zoneId=gameZone)
        self.island.d_setZoneSphereSize(rad0=1000, rad1=2000, rad2=3000)
        self.island.d_setIslandModel(islandModel=self.island.getIslandModel())
        self.island.d_setUndockable(undockable=isDockable)
        self.activeIslands.add(self.island)

        if self.island:
            self.air.notify.info("Created island: %s" % (name))
class DistributedInstanceWorldAI(DistributedInstanceBaseAI):
    notify = DirectNotifyGlobal.directNotify.newCategory(
        'DistributedInstanceWorldAI')

    def __init__(self, air, fileName=""):
        DistributedInstanceBaseAI.__init__(self, air, fileName)
        self.fileName = fileName

        self.activeIslands = set()

    def announceGenerate(self):
        DistributedInstanceBaseAI.announceGenerate(self)

    def generateIslands(self, islandModel, name, uid, isDockable, gameZone):
        self.island = DistributedIslandAI(self.air, islandModel, name, uid)
        self.island.generateWithRequired(zoneId=gameZone)
        self.island.d_setZoneSphereSize(rad0=1000, rad1=2000, rad2=3000)
        self.island.d_setIslandModel(islandModel=self.island.getIslandModel())
        self.island.d_setUndockable(undockable=isDockable)
        self.activeIslands.add(self.island)

        if self.island:
            self.air.notify.info("Created island: %s" % (name))
    def __createIsland(self, objectData, parent, parentUid, objKey, dynamic):
        from pirates.world.DistributedIslandAI import DistributedIslandAI

        worldIsland = self.air.worldCreator.getIslandWorldDataByUid(objKey)

        island = DistributedIslandAI(self.air)
        island.setUniqueId(objKey)
        island.setName(worldIsland.get('Name', ''))
        island.setModelPath(worldIsland['Visual']['Model'])
        island.setPos(worldIsland.get('Pos', (0, 0, 0)))
        island.setHpr(worldIsland.get('Hpr', (0, 0, 0)))
        island.setScale(worldIsland.get('Scale', 1))
        island.setUndockable(worldIsland.get('Undockable', False))

        if 'Objects' in worldIsland:
            for obj in worldIsland['Objects'].values():
                if obj['Type'] == 'LOD Sphere':
                    island.setZoneSphereSize(*obj['Radi'])

        self.parent.generateChildWithRequired(island, island.startingZone)
        self.addObject(island)

        return island