Ejemplo n.º 1
0
    def create(self, model, list, args):
        isPlayer = args.get('isPlayer')
        if isPlayer is None:
            if args.has_key('entity') and hasattr(args['entity'], 'isPlayer'):
                isPlayer = args['entity'].isPlayer
            else:
                isPlayer = False
        soundName = self._soundNames[0 if isPlayer else 1] if self._soundNames is not None else self._soundName
        part = args.get('modelMap', {}).get(self.modelPart)
        if part is not None:
            model = part
        if len(self._pos) > 0:
            self._node = _findTargetNode(model, self._pos)
        sound = None
        try:
            if self._node is not None:
                self._fakeModel = helpers.newFakeModel()
                self._node.attach(self._fakeModel)
                sound = SoundGroups.g_instance.getSound3D(self._fakeModel, soundName)
            else:
                sound = SoundGroups.g_instance.getSound3D(model, soundName)
        except Exception:
            LOG_CURRENT_EXCEPTION()

        if sound is not None:
            startParams = args.get('soundParams', ())
            for soundStartParam in startParams:
                sound.setParameterByName(soundStartParam.name, soundStartParam.value)

            sound.play()
            list.append({'typeDesc': self,
             'sound': sound})
 def activate(self):
     super(_VehicleNodeEffect, self).activate()
     vehicle = BigWorld.entities.get(self.__vehicleId)
     if vehicle is not None and vehicle.model is not None and vehicle.appearance is not None:
         self.__fakeModel = newFakeModel()
         node = vehicle.model.node(
             TankPartIndexes.getName(self._TANK_PART_INDEX))
         node.attach(self.__fakeModel, self.__getTransform(vehicle))
         self.bindToModel(self.__fakeModel, BigWorld.player().spaceID)
         self.start()
     return
Ejemplo n.º 3
0
 def __playEffect(self, effectName):
     effect = self.__effects.get(effectName, None)
     if effect is None:
         return
     else:
         if self.__fakeEffectModel is None:
             self.__fakeEffectModel = newFakeModel()
             self.__fakeEffectModel.position = self.position
             BigWorld.addModel(self.__fakeEffectModel)
         if effect.isStarted:
             effect.stop()
         effect.play(self.__fakeEffectModel)
         return
Ejemplo n.º 4
0
 def play(vehicle_id):
     vehicle = BigWorld.entity(vehicle_id)
     if vehicle is None:
         return
     effects = vehicle.typeDescriptor.type.effects['fullDestruction']
     if not effects:
         return
     vehicle.show(False)
     fakeModel = helpers.newFakeModel()
     BigWorld.addModel(fakeModel)
     fakeModel.position = vehicle.model.position
     effectsPlayer = EffectsListPlayer(effects[0][1], effects[0][0])
     effectsPlayer.play(fakeModel, SpecialKeyPointNames.START, partial(BigWorld.delModel, fakeModel))
Ejemplo n.º 5
0
 def addNew(self, position, effectsList, keyPoints, callbackOnStop, **args):
     model = helpers.newFakeModel()
     model.position = position
     BigWorld.addModel(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, keyPoints, **args)
     desc['effectsPlayer'].play(model, None, partial(self.__callbackBeforeDestroy, effectID, callbackOnStop))
     self._models[effectID] = desc
     return effectID
 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
Ejemplo n.º 7
0
 def play(vehicle_id):
     vehicle = BigWorld.entity(vehicle_id)
     if vehicle is None:
         return
     else:
         effects = vehicle.typeDescriptor.type.effects['fullDestruction']
         if not effects:
             return
         vehicle.show(False)
         if vehicle.model is not None:
             fakeModel = helpers.newFakeModel()
             BigWorld.addModel(fakeModel)
             fakeModel.position = vehicle.model.position
             effectsPlayer = EffectsListPlayer(effects[0][1], effects[0][0])
             effectsPlayer.play(fakeModel, SpecialKeyPointNames.START, partial(BigWorld.delModel, fakeModel))
         return
def getModelAnimators(outfit, vehicleDescr, spaceId, loadedAnimators, compoundModel):
    params = __getModelAnimators(outfit, vehicleDescr)
    animators = []
    for param in params:
        if param.animatorName in loadedAnimators.failedIDs:
            _logger.error('Failed to load sequence: "%s"', param.animatorName)
            continue
        fakeModel = newFakeModel()
        node = compoundModel.node(param.attachNode)
        node.attach(fakeModel, param.transform)
        animWrapper = AnimationSequence.ModelWrapperContainer(fakeModel, spaceId)
        animator = __prepareAnimator(loadedAnimators, param.animatorName, animWrapper, node)
        if animator is None:
            continue
        animators.append(animator)

    return animators
 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
Ejemplo n.º 10
0
 def play(vehicle_id):
     vehicle = BigWorld.entity(vehicle_id)
     if vehicle is None:
         return
     else:
         effects = vehicle.typeDescriptor.type.effects['fullDestruction']
         if not effects:
             return
         drawFlags = BigWorld.ShadowPassBit
         if vehicle is not None and vehicle.isStarted:
             va = vehicle.appearance
             va.changeDrawPassVisibility('chassis', drawFlags, False, False)
             va.changeDrawPassVisibility('hull', drawFlags, False, True)
             va.changeDrawPassVisibility('turret', drawFlags, False, True)
             va.changeDrawPassVisibility('gun', drawFlags, False, True)
             va.showStickers(False)
             fakeModel = helpers.newFakeModel()
             BigWorld.addModel(fakeModel)
             fakeModel.position = vehicle.model.position
             effectsPlayer = EffectsListPlayer(effects[0][1], effects[0][0])
             effectsPlayer.play(fakeModel, SpecialKeyPointNames.START, partial(BigWorld.delModel, fakeModel))
         return
Ejemplo n.º 11
0
 def __init__(self, soundName, parent, spaceID):
     self.soundModel = helpers.newFakeModel()
     self.soundModel.addMotor(BigWorld.Servo(parent.root))
     BigWorld.addModel(self.soundModel, spaceID)
     self.sound = SoundGroups.g_instance.playSound(self.soundModel, soundName)
     self.parent = parent