def onEnterWorld(self, prereqs):
     self.model = prereqs[self.__vehDescr.name]
     self.model.matrix = self.matrix
     self.collisions = prereqs['collisionAssembler']
     self.__detachConfirmationTimer.onEnterWorld()
     self.__vehDescr.keepPrereqs(prereqs)
     turretDescr = self.__vehDescr.turret
     if self.isUnderWater == 0:
         self.__detachmentEffects = _TurretDetachmentEffects(
             self.model, turretDescr.turretDetachmentEffects,
             self.isCollidingWithWorld == 1)
         self.addComponent(self.__detachmentEffects)
     else:
         self.__detachmentEffects = None
     self.__hitEffects = _HitEffects(self.model)
     self.addComponent(self.__hitEffects)
     self.__componentsDesc = (self.__vehDescr.turret, self.__vehDescr.gun)
     from helpers.CallbackDelayer import CallbackDelayer
     self.__isBeingPulledCallback = CallbackDelayer()
     self.__isBeingPulledCallback.delayCallback(self.__checkIsBeingPulled(),
                                                self.__checkIsBeingPulled)
     DetachedTurret.allTurrets.append(self)
     collisionData = ((TankPartNames.getIdx(TankPartNames.TURRET),
                       self.model.matrix),
                      (TankPartNames.getIdx(TankPartNames.GUN),
                       self.model.node(TankPartNames.GUN)))
     self.collisions.connect(self.id, ColliderTypes.DYNAMIC_COLLIDER,
                             collisionData)
     ComponentSystem.activate(self)
     return
예제 #2
0
 def __init__(self, spaceId, vEntity):
     ComponentSystem.__init__(self)
     self.__loadState = _LoadStateNotifier()
     self.__curBuildInd = 0
     self.__vDesc = None
     self.__vState = None
     self.__fashions = VehiclePartsTuple(None, None, None, None)
     self.__repaintHandlers = [None, None, None, None]
     self.__camoHandlers = [None, None, None, None]
     self.__spaceId = spaceId
     self.__vEntity = weakref.proxy(vEntity)
     self.__onLoadedCallback = None
     self.__onLoadedAfterRefreshCallback = None
     self.__vehicleStickers = None
     self.__isVehicleDestroyed = False
     self.__outfit = None
     self.shadowManager = None
     cfg = hangarCFG()
     self.__currentEmblemsAlpha = cfg['emblems_alpha_undamaged']
     self.__showMarksOnGun = self.settingsCore.getSetting('showMarksOnGun')
     self.settingsCore.onSettingsChanged += self.__onSettingsChanged
     self.itemsCache.onSyncCompleted += self.__onItemsCacheSyncCompleted
     g_eventBus.addListener(CameraRelatedEvents.CAMERA_ENTITY_UPDATED,
                            self.__handleEntityUpdated)
     return
 def __init__(self):
     CallbackDelayer.__init__(self)
     ComponentSystem.__init__(self)
     self.turretMatrix = Math.WGAdaptiveMatrixProvider()
     self.gunMatrix = Math.WGAdaptiveMatrixProvider()
     self.__vehicle = None
     self.__filter = None
     self.__originalFilter = None
     self.__typeDesc = None
     self.__waterHeight = -1.0
     self.__isInWater = False
     self.__isUnderWater = False
     self.__splashedWater = False
     self.__vibrationsCtrl = None
     self.__lightFxCtrl = None
     self.__auxiliaryFxCtrl = None
     self.__fashion = None
     self.__crashedTracksCtrl = None
     self.__gunRecoil = None
     self.__currentDamageState = VehicleDamageState()
     self.__loadingProgress = 0
     self.__effectsPlayer = None
     self.__engineMode = (0, 0)
     self.__swingMoveFlags = 0
     self.__currTerrainMatKind = [-1] * _MATKIND_COUNT
     self.__leftLightRotMat = None
     self.__rightLightRotMat = None
     self.__leftFrontLight = None
     self.__rightFrontLight = None
     self.__prevVelocity = None
     self.__prevTime = None
     self.__isPillbox = False
     self.__chassisOcclusionDecal = OcclusionDecal()
     self.__chassisShadowForwardDecal = ShadowForwardDecal()
     self.__splodge = None
     self.__vehicleStickers = None
     self.onModelChanged = Event()
     self.__speedInfo = Math.Vector4(0.0, 0.0, 0.0, 0.0)
     self.__wasOnSoftTerrain = False
     self.__vehicleMatrixProv = None
     self.__leftTrackScroll = 0.0
     self.__rightTrackScroll = 0.0
     self.__distanceFromPlayer = 0.0
     self.__fashions = None
     self.__compoundModel = None
     self.__boundEffects = None
     self.__swingingAnimator = None
     self.__splineTracks = None
     self.__customEffectManager = None
     self.__trackScrollCtl = BigWorld.PyTrackScroll()
     self.__weaponEnergy = 0.0
     self.__activated = False
     self.__systemStarted = False
     self.__vID = 0
     self.__isAlive = True
     self.__isTurretDetached = False
     self.__trackFashionSet = False
     self.__periodicTimerID = None
     self.__wasDeactivated = False
     return
예제 #4
0
 def __init__(self):
     CallbackDelayer.__init__(self)
     ComponentSystem.__init__(self)
     self.__alwaysShowAimKey = None
     self.__showMarkersKey = None
     sec = self._readCfg()
     self.onCameraChanged = Event()
     self.onPostmortemVehicleChanged = Event()
     self.onPostmortemKillerVisionEnter = Event()
     self.onPostmortemKillerVisionExit = Event()
     self.__isArenaStarted = False
     self.__isStarted = False
     self.__targeting = _Targeting()
     self.__vertScreenshotCamera = _VertScreenshotCamera()
     self.__ctrls = dict()
     self.__killerVehicleID = None
     self.__isAutorotation = True
     self.__prevModeAutorotation = None
     self.__isSPG = False
     self.__isATSPG = False
     self.__setupCtrls(sec)
     self.__curCtrl = self.__ctrls[_CTRLS_FIRST]
     self.__ctrlModeName = _CTRLS_FIRST
     self.__isDetached = False
     self.__waitObserverCallback = None
     self.__observerVehicle = None
     self.__observerIsSwitching = False
     self.__commands = []
     self.__remoteCameraSender = None
     self.__isGUIVisible = False
     return
예제 #5
0
    def stop(self):
        self.__isStarted = False
        import SoundGroups
        SoundGroups.g_instance.changePlayMode(0)
        aih_global_binding.clear()
        for control in self.__ctrls.itervalues():
            control.destroy()

        replayCtrl = BattleReplay.g_replayCtrl
        if replayCtrl.isRecording:
            replayCtrl.setPlayerVehicleID(0)
        if self.__remoteCameraSender is not None:
            self.__remoteCameraSender.destroy()
            self.__remoteCameraSender = None
        self.onCameraChanged.clear()
        self.onCameraChanged = None
        self.onPostmortemVehicleChanged.clear()
        self.onPostmortemVehicleChanged = None
        self.onPostmortemKillerVisionEnter.clear()
        self.onPostmortemKillerVisionEnter = None
        self.onPostmortemKillerVisionExit.clear()
        self.onPostmortemKillerVisionExit = None
        self.__targeting.enable(False)
        self.__killerVehicleID = None
        if self.__onRecreateDevice in g_guiResetters:
            g_guiResetters.remove(self.__onRecreateDevice)
        BigWorld.player().arena.onPeriodChange -= self.__onArenaStarted
        self.settingsCore.onSettingsChanged -= self.__onSettingsChanged
        BigWorld.player().consistentMatrices.onVehicleMatrixBindingChanged -= self.__onVehicleChanged
        ComponentSystem.destroy(self)
        CallbackDelayer.destroy(self)
        return
 def destroy(self):
     self.__trackScrollCtl = None
     if self.__vehicle is not None:
         self.deactivate()
     self.__destroySystems()
     ComponentSystem.destroy(self)
     self.__typeDesc = None
     self.highlighter.destroy()
     if self.__vibrationsCtrl is not None:
         self.__vibrationsCtrl.destroy()
         self.__vibrationsCtrl = None
     if self.__lightFxCtrl is not None:
         self.__lightFxCtrl.destroy()
         self.__lightFxCtrl = None
     if self.__auxiliaryFxCtrl is not None:
         self.__auxiliaryFxCtrl.destroy()
         self.__auxiliaryFxCtrl = None
     if self.__boundEffects is not None:
         self.__boundEffects.destroy()
     self.__vehicleStickers = None
     self.onModelChanged = None
     if self.__crashedTracksCtrl is not None:
         self.__crashedTracksCtrl.destroy()
         self.__crashedTracksCtrl = None
     self.__chassisOcclusionDecal.destroy()
     self.__chassisOcclusionDecal = None
     self.__chassisShadowForwardDecal.destroy()
     self.__chassisShadowForwardDecal = None
     self.__compoundModel = None
     CallbackDelayer.destroy(self)
     return
예제 #7
0
 def __init__(self):
     BigWorld.Entity.__init__(self)
     ComponentSystem.__init__(self)
     self.__enabled = True
     self.__edged = False
     self.__clickSound = None
     self.model = None
     return
 def __init__(self, bonusType):
     ComponentSystem.__init__(self)
     self.bonusType = bonusType
     self._onUpdate = {ARENA_UPDATE.SYNC_OBJECTS: self.__onFullSyncObjectReceived,
      ARENA_UPDATE.SYNC_OBJECTS_DIFF: self.__onSyncObjectUpdateReceived}
     self.__syncDataObjects = {}
     for k, v in ARENA_SYNC_OBJECT_NAMES.iteritems():
         self.__syncDataObjects[k] = ArenaSyncObject()
예제 #9
0
 def onLeaveWorld(self):
     ComponentSystem.destroy(self)
     DetachedTurret.allTurrets.remove(self)
     ProjectileAwareEntities.removeEntity(self)
     self.__detachConfirmationTimer.cancel()
     self.__detachConfirmationTimer = None
     self.__isBeingPulledCallback.destroy()
     self.__isBeingPulledCallback = None
     return
 def recreate(self, vDesc, vState, callback):
     ComponentSystem.deactivate(self)
     self.shadowManager = VehicleShadowManager()
     self.shadowManager.updatePlayerTarget(None)
     self.__onLoadedCallback = callback
     self.__outfit = self.__getActiveOutfit()
     self.__loadState.unload()
     self.__startBuild(vDesc, vState)
     return
예제 #11
0
 def onLeaveWorld(self):
     ComponentSystem.deactivate(self)
     ComponentSystem.destroy(self)
     if self.__clickSound is not None:
         if self.__clickSound.isPlaying:
             self.__clickSound.stop()
         self.__clickSound.releaseMatrix()
         self.__clickSound = None
     self.highlight(False)
     return
예제 #12
0
 def __init__(self, bonusType):
     ComponentSystem.__init__(self)
     self.bonusType = bonusType
     self._onUpdate = {
         ARENA_UPDATE.SYNC_OBJECTS: self.__onFullSyncObjectReceived,
         ARENA_UPDATE.SYNC_OBJECTS_DIFF: self.__onSyncObjectUpdateReceived
     }
     self.__syncDataObjects = {}
     for k, v in ARENA_SYNC_OBJECT_NAMES.iteritems():
         self.__syncDataObjects[k] = ArenaSyncObject()
예제 #13
0
 def __reload(self, vDesc, vState, outfit):
     self.__loadState.unload()
     ComponentSystem.deactivate(self)
     self.tracks = None
     self.collisionObstaclesCollector = None
     self.tessellationCollisionSensor = None
     self.shadowManager = VehicleShadowManager()
     self.shadowManager.updatePlayerTarget(None)
     self.__outfit = outfit
     self.__startBuild(vDesc, vState)
     return
예제 #14
0
 def __init__(self):
     ComponentSystem.__init__(self)
     self.__vehDescr = vehicles.VehicleDescr(compactDescr=self.vehicleCompDescr)
     self.filter = BigWorld.WGTurretFilter()
     self.__detachConfirmationTimer = SynchronousDetachment(self)
     self.__detachConfirmationTimer.onInit()
     self.__detachmentEffects = None
     self.targetFullBounds = True
     self.targetCaps = [1]
     self.__isBeingPulledCallback = None
     self.__hitEffects = None
     return
 def onLeaveWorld(self):
     ComponentSystem.deactivate(self)
     ComponentSystem.destroy(self)
     DetachedTurret.allTurrets.remove(self)
     self.__detachConfirmationTimer.cancel()
     self.__detachConfirmationTimer = None
     self.__isBeingPulledCallback.destroy()
     self.__isBeingPulledCallback = None
     if self.__vehicleStickers is not None:
         self.__vehicleStickers.detach()
         self.__vehicleStickers = None
     return
예제 #16
0
 def onEnterWorld(self, prereqs):
     if self.modelName == '':
         return
     if self.modelName not in prereqs.failedIDs:
         model = prereqs[self.modelName]
         self.model = model
         self.filter = BigWorld.DumbFilter()
         self.model.addMotor(BigWorld.Servo(self.matrix))
         self.collisions = prereqs['collisionAssembler']
         collisionData = ((0, self.model.matrix), )
         self.collisions.connect(self.id, ColliderTypes.DYNAMIC_COLLIDER,
                                 collisionData)
     ComponentSystem.activate(self)
 def destroy(self):
     ComponentSystem.deactivate(self)
     ComponentSystem.destroy(self)
     self.__vDesc = None
     self.__vState = None
     self.__loadState.unload()
     self.__loadState.destroy()
     self.__loadState = None
     self.__curBuildInd = 0
     self.__vEntity = None
     self.settingsCore.onSettingsChanged -= self.__onSettingsChanged
     self.itemsCache.onSyncCompleted -= self.__onItemsCacheSyncCompleted
     g_eventBus.removeListener(CameraRelatedEvents.CAMERA_ENTITY_UPDATED,
                               self.__handleEntityUpdated)
     return
예제 #18
0
 def destroy(self):
     if self.__vehicle is not None:
         self.deactivate()
     self.__destroySystems()
     ComponentSystem.destroy(self)
     self.__typeDesc = None
     if self.__boundEffects is not None:
         self.__boundEffects.destroy()
     self.__vehicleStickers = None
     self.onModelChanged = None
     self.__chassisDecal.destroy()
     self.__chassisDecal = None
     self.__compoundModel = None
     CallbackDelayer.destroy(self)
     return
 def __init__(self):
     CallbackDelayer.__init__(self)
     ComponentSystem.__init__(self)
     self.turretMatrix = Math.WGAdaptiveMatrixProvider()
     self.gunMatrix = Math.WGAdaptiveMatrixProvider()
     self.__vehicle = None
     self.__filter = None
     self.__originalFilter = None
     self.__typeDesc = None
     self.__fashion = None
     self.crashedTracksController = None
     self.__currentDamageState = VehicleDamageState()
     self.__effectsPlayer = None
     self.__engineMode = (0, 0)
     self.__currTerrainMatKind = [-1] * _MATKIND_COUNT
     self.__terrainEffectMaterialNames = [''] * _MATKIND_COUNT
     self.__terrainMatKindLodDistance = _LOD_DISTANCE_TERRAIN_MATKIND_UPDATE
     self.__chassisDecal = VehicleDecal(self)
     self.__splodge = None
     self.__vehicleStickers = None
     self.onModelChanged = Event()
     self.__leftTrackScroll = 0.0
     self.__rightTrackScroll = 0.0
     self.__fashions = None
     self.__compoundModel = None
     self.__boundEffects = None
     self.__splineTracks = None
     self.flyingInfoProvider = Vehicular.FlyingInfoProvider()
     self.__trackScrollCtl = BigWorld.PyTrackScroll()
     self.__trackScrollCtl.setFlyingInfo(
         DataLinks.createBoolLink(self.flyingInfoProvider,
                                  'isLeftSideFlying'),
         DataLinks.createBoolLink(self.flyingInfoProvider,
                                  'isRightSideFlying'))
     self.__weaponEnergy = 0.0
     self.__activated = False
     self.__systemStarted = False
     self.__outfit = None
     self.__vID = 0
     self.__isAlive = True
     self.__isTurretDetached = False
     self.__periodicTimerID = None
     self.__wasDeactivated = False
     self.__dirtUpdateTime = 0.0
     self.__inSpeedTreeCollision = False
     self.__isObserver = False
     self.__chassisColisionMatrix = Math.WGAdaptiveMatrixProvider()
     return
예제 #20
0
 def destroy(self):
     if self.__vehicle is not None:
         self.deactivate()
     self.__destroySystems()
     fashions = VehiclePartsTuple(None, None, None, None)
     self.__setFashions(fashions, self.__isTurretDetached)
     ComponentSystem.destroy(self)
     self.__typeDesc = None
     if self.__boundEffects is not None:
         self.__boundEffects.destroy()
     self.__vehicleStickers = None
     self.onModelChanged = None
     self.__chassisDecal.destroy()
     self.__chassisDecal = None
     self.__compoundModel = None
     CallbackDelayer.destroy(self)
     return
예제 #21
0
 def destroy(self):
     ComponentSystem.deactivate(self)
     ComponentSystem.destroy(self)
     self.__onLoadedCallback = None
     self.__vDesc = None
     self.__vState = None
     self.__isLoaded = False
     self.__curBuildInd = 0
     self.__vEntityId = None
     if self.__smCb is not None:
         BigWorld.cancelCallback(self.__smCb)
         self.__smCb = None
     if self.__smRemoveCb is not None:
         BigWorld.cancelCallback(self.__smRemoveCb)
         self.__smRemoveCb = None
     self.settingsCore.onSettingsChanged -= self.__onSettingsChanged
     self.itemsCache.onSyncCompleted -= self.__onItemsCacheSyncCompleted
     return
예제 #22
0
 def __init__(self, spaceId, vEntityId, hangarSpace):
     ComponentSystem.__init__(self)
     self.__isLoaded = False
     self.__curBuildInd = 0
     self.__vDesc = None
     self.__vState = None
     self.__fashions = VehiclePartsTuple(None, None, None, None)
     self.__spaceId = spaceId
     self.__vEntityId = vEntityId
     self.__onLoadedCallback = None
     self.__emblemsAlpha = _CFG['emblems_alpha_undamaged']
     self.__vehicleStickers = None
     self.__isVehicleDestroyed = False
     self.__smCb = None
     self.__smRemoveCb = None
     self.__hangarSpace = weakref.proxy(hangarSpace)
     self.__removeHangarShadowMap()
     self.__showMarksOnGun = self.settingsCore.getSetting('showMarksOnGun')
     self.settingsCore.onSettingsChanged += self.__onSettingsChanged
     self.itemsCache.onSyncCompleted += self.__onItemsCacheSyncCompleted
     return
예제 #23
0
 def recreate(self, vDesc, vState, onVehicleLoadedCallback=None):
     ComponentSystem.deactivate(self)
     self.__onLoadedCallback = onVehicleLoadedCallback
     self.__isLoaded = False
     self.__startBuild(vDesc, vState)
 def destroy(self):
     ComponentSystem.destroy(self)
     self._onUpdate.clear()
     self.__syncDataObjects.clear()
 def destroy(self):
     ComponentSystem.destroy(self)
     self._onUpdate.clear()
     self.__syncDataObjects.clear()