Example #1
0
 def create(self, model, list, args):
     elem = {}
     elem['newPos'] = args.get('position', None)
     nodePos = self._pos
     if elem['newPos'] is not None:
         nodePos = string.split(elem['newPos'][0], '/') if elem['newPos'][0] else []
     scale = args.get('scale')
     if scale is not None:
         elem['scale'] = scale
     elem['surfaceNormal'] = args.get('surfaceNormal', None)
     surfaceMatKind = args.get('surfaceMatKind', None)
     if surfaceMatKind is not None and self._surfaceMatKinds is not None:
         if surfaceMatKind not in self._surfaceMatKinds:
             return
     elem['node'] = _findTargetNode(model, nodePos, elem['newPos'][1] if elem['newPos'] else None, self._orientByClosestSurfaceNormal, elem['surfaceNormal'])
     elem['model'] = model
     elem['typeDesc'] = self
     elem['pixie'] = None
     elem['cancelLoadCallback'] = False
     elem['callbackID'] = None
     if self._alwaysUpdate:
         BigWorld.addAlwaysUpdateModel(model)
     file = random.choice(self._files)
     prototypePixie = self.__prototypePixies.get(file)
     if prototypePixie is not None:
         elem['pixie'] = prototypePixie.clone()
         elem['callbackID'] = BigWorld.callback(0.001, partial(self._callbackCreate, elem))
     else:
         elem['file'] = file
         Pixie.createBG(file, partial(self._callbackAfterLoading, elem))
     list.append(elem)
     return
Example #2
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)
Example #3
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)
Example #4
0
 def reattach(self, elem, model):
     nodePos = self._pos
     if self._alwaysUpdate:
         BigWorld.delAlwaysUpdateModel(elem['model'])
         BigWorld.addAlwaysUpdateModel(model)
     elem['model'] = model
     if elem['newPos'] is not None:
         nodePos = string.split(elem['newPos'][0], '/') if elem['newPos'][0] else []
     if elem['pixie'] is not None and elem['pixie'] in elem['node'].attachments:
         elem['node'].detach(elem['pixie'])
         elem['node'] = _findTargetNode(model, nodePos, elem['newPos'][1] if elem['newPos'] else None, self._orientByClosestSurfaceNormal, elem['surfaceNormal'])
         elem['node'].attach(elem['pixie'])
     else:
         elem['node'] = _findTargetNode(model, nodePos, None, self._orientByClosestSurfaceNormal, elem['surfaceNormal'])
     return
Example #5
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
Example #6
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