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
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
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))
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
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
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
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