def __playEffect(self, kind, *modifs):
     self.__stopEffects()
     if kind == 'empty' or self.__vehicle is None:
         return
     else:
         enableDecal = True
         if kind in ('explosion', 'destruction') and self.isFlying:
             enableDecal = False
         if self.isUnderwater:
             if kind not in ('submersionDeath', ):
                 return
         effects = self.typeDescriptor.type.effects[kind]
         if not effects:
             return
         vehicle = self.__vehicle
         effects = random.choice(effects)
         self.__effectsPlayer = EffectsListPlayer(
             effects[1],
             effects[0],
             showShockWave=vehicle.isPlayerVehicle,
             showFlashBang=vehicle.isPlayerVehicle,
             isPlayer=vehicle.isPlayerVehicle,
             showDecal=enableDecal,
             start=vehicle.position + Math.Vector3(0.0, 1.0, 0.0),
             end=vehicle.position + Math.Vector3(0.0, -1.0, 0.0),
             entity_id=vehicle.id)
         self.__effectsPlayer.play(self.__compoundModel, *modifs)
         return
예제 #2
0
 def attach(self):
     if self.__player is None:
         self.__player = EffectsListPlayer(self.__timeLine.effectsList,
                                           self.__timeLine.keyPoints,
                                           node=self.__node.node)
     self.__player.play(self.__model)
     return
예제 #3
0
 def addNew(self, matProv, effectsList, keyPoints, **args):
     desc = EffectsListPlayer(effectsList,
                              keyPoints,
                              position=(self.__nodeName, matProv),
                              **args)
     desc.play(self.__model, None, partial(self._effects.remove, desc))
     self._effects.append(desc)
 def __createEffectPlayer(self, effectName):
     effect = self.__customizableObjectsMgr.getEffect(effectName)
     if effect is None:
         return
     else:
         effectPlayer = EffectsListPlayer(effect.effectsList,
                                          effect.keyPoints)
         return effectPlayer
예제 #5
0
 def __playPullEffect(self, effectMaterialIdx):
     self.__stopPullEffects()
     stages, effectsList, _ = self.__detachmentEffectsDesc['pull'][
         effectMaterialIdx]
     self.__pullEffectListPlayer = EffectsListPlayer(effectsList, stages)
     self.__pullEffectListPlayer.play(self.__turretModel,
                                      SpecialKeyPointNames.START)
     self.__pullEffectListPlayer.effectMaterialIdx = effectMaterialIdx
예제 #6
0
 def _start(self, data, burstCount):
     vehicle = data['entity']
     gunDescr = vehicle.typeDescriptor.gun
     stages, effects, _ = gunDescr['effects']
     data['entity_id'] = vehicle.id
     data['_effectsListPlayer'] = EffectsListPlayer(effects, stages, **data)
     data['_burst'] = (burstCount, gunDescr['burst'][1])
     data['_gunModel'] = vehicle.appearance.compoundModel
     self.__doShot(data)
 def addNewToNode(self, node, matProv, effectsList, keyPoints, waitForKeyOff=False, **args):
     if not node and matProv is None:
         position = None
     else:
         position = (node, matProv)
     desc = EffectsListPlayer(effectsList, keyPoints, position=position, **args)
     desc.play(self.__model, None, partial(self._effects.remove, desc), waitForKeyOff)
     self._effects.append(desc)
     return desc
 def __playEffect(self, model, effectName):
     effectsCache = self.customizableObjectsMgr.effectsCache
     if effectName in effectsCache:
         effect = effectsCache[effectName]
         effectPlayer = EffectsListPlayer(effect.effectsList,
                                          effect.keyPoints)
         effectPlayer.play(model)
     else:
         effectPlayer = MapActivities.startActivity(effectName)
     return effectPlayer
예제 #9
0
 def playEffect(self):
     if self.__effectsPlayer is not None:
         return
     elif self.__model is None:
         return
     else:
         if self.__effectsTimeLine is not None:
             self.__effectsPlayer = EffectsListPlayer(self.__effectsTimeLine.effectsList, self.__effectsTimeLine.keyPoints)
             self.__effectsPlayer.play(self.__model)
         return
 def __playEffects(self, model, regularEffectName, hangingEffectName):
     hangingEffectPlayer = None
     if regularEffectName in self.__effectsCache:
         regularEffect = self.__effectsCache[regularEffectName]
         regularEffectPlayer = EffectsListPlayer(regularEffect.effectsList,
                                                 regularEffect.keyPoints)
         regularEffectPlayer.play(model)
     else:
         regularEffectPlayer = MapActivities.startActivity(
             regularEffectName)
     if self.customizableObjectsMgr.state:
         if hangingEffectName in self.__effectsCache:
             hangingEffect = self.__effectsCache[hangingEffectName]
             hangingEffectPlayer = EffectsListPlayer(
                 hangingEffect.effectsList, hangingEffect.keyPoints)
             hangingEffectPlayer.play(model)
         else:
             hangingEffectPlayer = MapActivities.startActivity(
                 hangingEffectName)
     return (regularEffectPlayer, hangingEffectPlayer)
예제 #11
0
 def _start(self, data, burstCount):
     if not _isAllowedToStart():
         return
     vehicle = data['entity']
     gunDescr = vehicle.typeDescriptor.gun
     stages, effects, _ = gunDescr['effects']
     data['_effectsListPlayer'] = EffectsListPlayer(effects, stages)
     data['_burst'] = (burstCount, gunDescr['burst'][1])
     data['_gunModel'] = vehicle.appearance.modelsDesc['gun']['model']
     if vehicle.isPlayer:
         BigWorld.addAlwaysUpdateModel(data['_gunModel'])
     self.__doShot(data)
예제 #12
0
    def _start(self, data, burstCount):
        vehicle = data['entity']
        gunDescr = vehicle.typeDescriptor.gun
        stages, effects, _ = gunDescr['effects']
        data['modelMap'] = {}
        for i, j in vehicle.appearance.modelsDesc.iteritems():
            data['modelMap'][i] = vehicle.appearance.modelsDesc[i]['model']

        data['entity_id'] = vehicle.id
        data['_effectsListPlayer'] = EffectsListPlayer(effects, stages, **data)
        data['_burst'] = (burstCount, gunDescr['burst'][1])
        data['_gunModel'] = vehicle.appearance.modelsDesc['gun']['model']
        self.__doShot(data)
예제 #13
0
 def __playPullEffect(self, effectMaterialIdx):
     self.__stopPullEffects()
     result = self.__detachmentEffectsDesc['pull'].get(
         effectMaterialIdx, None)
     if result is None:
         return
     else:
         stages, effectsList, _ = result
         self.__pullEffectListPlayer = EffectsListPlayer(
             effectsList, stages)
         self.__pullEffectListPlayer.play(self.__turretModel,
                                          SpecialKeyPointNames.START)
         self.__pullEffectListPlayer.effectMaterialIdx = effectMaterialIdx
         return
 def addNew(self, position, effectsList, keyPoints, callbackOnStop, **args):
     model = helpers.newFakeModel()
     model.position = position
     BigWorld.player().addModel(model)
     direction = args.get('dir', None)
     if direction is not None:
         model.rotate(direction.yaw, (0.0, 1.0, 0.0))
     self.__incrementalEffectID += 1
     effectID = self.__incrementalEffectID
     desc = dict()
     desc['model'] = model
     desc['effectsPlayer'] = EffectsListPlayer(effectsList, keyPoints, **args)
     desc['effectsPlayer'].play(model, None, partial(self.__callbackBeforeDestroy, effectID, callbackOnStop), args.get('waitForKeyOff', False))
     self._models[effectID] = desc
     return effectID
예제 #15
0
    def __readHeroEffects(self):
        if not self.effectsXmlPath:
            return
        else:
            rootSection = ResMgr.openSection(self.effectsXmlPath)
            if rootSection is None:
                return
            effectsSection = rootSection['effects']
            if effectsSection is None:
                return
            for effectValues in effectsSection.values():
                name = effectValues.name
                effect = effectsFromSection(effectValues)
                player = EffectsListPlayer(effect.effectsList,
                                           effect.keyPoints)
                self.__effects[name] = player

            return
예제 #16
0
    def _start(self, data, args):
        burstCount, gunIndex = args
        if burstCount != self._SHOT_SINGLE:
            data['_gunIndex'] = range(0, burstCount)
        else:
            data['_gunIndex'] = [gunIndex]
        vehicle = data['entity']
        gunDescr = vehicle.typeDescriptor.gun
        data['entity_id'] = vehicle.id
        effectPlayers = {}
        for gunIndex in data['_gunIndex']:
            stages, effects, _ = gunDescr.effects[gunIndex]
            effectPlayers[gunIndex] = EffectsListPlayer(effects, stages, **data)

        data['_effectsListPlayers'] = effectPlayers
        data['_burst'] = (burstCount, gunDescr.burst[1])
        data['_gunModel'] = vehicle.appearance.compoundModel
        self.__doShot(data)
 def __playEffect(self, effectName, model):
     if self.__effectsPlayer is not None or None in (model, effectName):
         return
     else:
         effectsSection = destructible_entities.g_destructibleEntitiesCache.getDestroyEffectList(
             effectName)
         if effectsSection is None:
             return
         effects = effectsFromSection(effectsSection)
         if effects is None:
             return
         fakeModel = helpers.newFakeModel()
         BigWorld.player().addModel(fakeModel)
         tmpMatrix = Math.Matrix(self.__visualModel.matrix)
         fakeModel.position = tmpMatrix.translation
         self.__effectsPlayer = EffectsListPlayer(effects.effectsList,
                                                  effects.keyPoints)
         self.__effectsPlayer.play(fakeModel, None)
         return
예제 #18
0
    def _start(self, data, args):
        data['_isStarted'] = False
        vehicle = data['entity']
        isUnderwater = vehicle.appearance.isUnderwater
        data['wasUnderwater'] = isUnderwater
        if not isUnderwater:
            stages, effects, _ = random.choice(
                vehicle.typeDescriptor.type.effects['flaming'])
            data['modelMap'] = {}
            for i, j in vehicle.appearance.modelsDesc.iteritems():
                data['modelMap'][i] = vehicle.appearance.modelsDesc[i]['model']

            data['entity_id'] = vehicle.id
            effectListPlayer = EffectsListPlayer(effects, stages, **data)
            data['_effectsPlayer'] = effectListPlayer
            effectListPlayer.play(
                vehicle.appearance.modelsDesc['hull']['model'], None, None,
                True)
        data['_isStarted'] = True
        vehicle.appearance.switchFireVibrations(True)
예제 #19
0
    def checkUnderwater(self, data, vehicle, isVehicleUnderwater):
        wasUnderwater = data.get('wasUnderwater', False)
        if isVehicleUnderwater and not wasUnderwater:
            if '_effectsPlayer' in data:
                effectsListPlayer = data['_effectsPlayer']
                effectsListPlayer.stop()
                del data['_effectsPlayer']
        if not isVehicleUnderwater and wasUnderwater:
            stages, effects, _ = random.choice(
                vehicle.typeDescriptor.type.effects['flaming'])
            data['modelMap'] = {}
            for i, j in vehicle.appearance.modelsDesc.iteritems():
                data['modelMap'][i] = vehicle.appearance.modelsDesc[i]['model']

            data['entity_id'] = vehicle.id
            effectListPlayer = EffectsListPlayer(effects, stages, **data)
            data['_effectsPlayer'] = effectListPlayer
            effectListPlayer.play(
                vehicle.appearance.modelsDesc['hull']['model'], None, None,
                True)
        data['wasUnderwater'] = isVehicleUnderwater
예제 #20
0
 def addNew(self, position, effectsList, stages, callbackOnStop, **args):
     replayCtrl = BattleReplay.g_replayCtrl
     if replayCtrl.isPlaying and replayCtrl.isTimeWarpInProgress:
         return -1
     else:
         model = BigWorld.player().newFakeModel()
         model.position = position
         BigWorld.addModel(model)
         BigWorld.addAlwaysUpdateModel(model)
         dir = args.get('dir', None)
         if dir is not None:
             model.rotate(dir.yaw, (0.0, 1.0, 0.0))
         self.__incrementalEffectID += 1
         effectID = self.__incrementalEffectID
         desc = dict()
         desc['model'] = model
         desc['effectsPlayer'] = EffectsListPlayer(effectsList, stages,
                                                   **args)
         desc['effectsPlayer'].play(
             model, None,
             partial(self.__callbackBeforeDestroy, effectID,
                     callbackOnStop))
         self._models[effectID] = desc
         return effectID
예제 #21
0
 def __playStateEffect(self, startKeyPoint=SpecialKeyPointNames.START):
     self.__stopStateEffects()
     effectName = _TurretDetachmentEffects.__EFFECT_NAMES[self.__state]
     stages, effectsList, _ = self.__detachmentEffectsDesc[effectName]
     self.__stateEffectListPlayer = EffectsListPlayer(effectsList, stages)
     self.__stateEffectListPlayer.play(self.__turretModel, startKeyPoint)