def __setCameraDisabled(self, disabled):
     self.fireEvent(
         CameraRelatedEvents(
             CameraRelatedEvents.FORCE_DISABLE_IDLE_PARALAX_MOVEMENT,
             ctx={'isDisable': disabled}), EVENT_BUS_SCOPE.LOBBY)
     self.fireEvent(
         CameraRelatedEvents(
             CameraRelatedEvents.FORCE_DISABLE_CAMERA_MOVEMENT,
             ctx={'disable': disabled}), EVENT_BUS_SCOPE.LOBBY)
Exemple #2
0
 def __updateEasingOut(self):
     dt = min(self.measureDeltaTime(), self.MAX_DT)
     self.__currentIdleTime += dt
     cameraMatrix = Math.Matrix(self.__camera.source)
     yaw = self.__easeOutValue(self.__yawSpeed, cameraMatrix.yaw, dt)
     pitch = self.__easeOutValue(self.__pitchParams.speed, cameraMatrix.pitch, dt)
     dist = self.__easeOutValue(self.__distParams.speed, self.__camera.pivotMaxDist, dt)
     self.__setCameraParams(yaw, pitch, dist)
     if self.__currentIdleTime < self.TIME_OUT:
         return 0.0
     g_eventBus.handleEvent(CameraRelatedEvents(CameraRelatedEvents.IDLE_CAMERA, ctx={'started': False}), scope=EVENT_BUS_SCOPE.DEFAULT)
     g_eventBus.handleEvent(CameraRelatedEvents(CameraRelatedEvents.IDLE_CAMERA, ctx={'started': False}), scope=EVENT_BUS_SCOPE.DEFAULT)
Exemple #3
0
 def moveSpace(self, dx, dy, dz):
     self.fireEvent(CameraRelatedEvents(CameraRelatedEvents.LOBBY_VIEW_MOUSE_MOVE, ctx={'dx': dx,
      'dy': dy,
      'dz': dz}))
     self.fireEvent(events.LobbySimpleEvent(events.LobbySimpleEvent.NOTIFY_SPACE_MOVED, ctx={'dx': dx,
      'dy': dy,
      'dz': dz}))
Exemple #4
0
    def __onResourcesLoaded(self, buildInd, resourceRefs):
        if not self.__vDesc:
            return
        if buildInd != self.__curBuildInd:
            return
        failedIDs = resourceRefs.failedIDs
        resources = self.__resources
        succesLoaded = True
        for resID, resource in resourceRefs.items():
            if resID not in failedIDs:
                resources[resID] = resource
            LOG_ERROR('Could not load %s' % resID)
            succesLoaded = False

        self.collisions = resourceRefs['collisionAssembler']
        if succesLoaded:
            self.__setupModel(buildInd)
        g_eventBus.handleEvent(CameraRelatedEvents(
            CameraRelatedEvents.VEHICLE_LOADING,
            ctx={
                'started': False,
                'vEntityId': self.__vEntity.id
            }),
                               scope=EVENT_BUS_SCOPE.DEFAULT)
        super(HangarVehicleAppearance, self).activate()
Exemple #5
0
 def setState(self, state):
     self.__state = state
     g_eventBus.handleEvent(CameraRelatedEvents(
         CameraRelatedEvents.CAMERA_ENTITY_UPDATED,
         ctx={
             'state': self.__state,
             'entityId': self.id
         }),
                            scope=EVENT_BUS_SCOPE.DEFAULT)
Exemple #6
0
 def __startCameraIdle(self):
     g_eventBus.handleEvent(CameraRelatedEvents(CameraRelatedEvents.IDLE_CAMERA, ctx={'started': True}), scope=EVENT_BUS_SCOPE.DEFAULT)
     self.measureDeltaTime()
     self.__pitchParams.startValue = Math.Matrix(self.__camera.source).pitch
     self.__distParams.startValue = self.__camera.pivotMaxDist
     self.__setStartParams(self.__pitchParams)
     self.__setStartParams(self.__distParams)
     self.__currentIdleTime = 0.0
     self.__yawSpeed = 0.0
     self.delayCallback(0.0, self.__updateIdleMovement)
 def _dispose(self):
     self.fireEvent(events.HangarCustomizationEvent(
         events.HangarCustomizationEvent.RESET_VEHICLE_MODEL_TRANSFORM),
                    scope=EVENT_BUS_SCOPE.LOBBY)
     self.fireEvent(
         CameraRelatedEvents(
             CameraRelatedEvents.FORCE_DISABLE_IDLE_PARALAX_MOVEMENT,
             ctx={'isDisable': False}), EVENT_BUS_SCOPE.LOBBY)
     if g_appLoader.getSpaceID() != _SPACE_ID.LOGIN:
         self.__releaseItemSound()
         self.soundManager.playInstantSound(SOUNDS.EXIT)
     self.settingsCore.interfaceScale.onScaleExactlyChanged -= self.__onInterfaceScaleChanged
     self._vehicleCustomizationAnchorsUpdater.stopUpdater()
     self._vehicleCustomizationAnchorsUpdater = None
     if self.hangarSpace.spaceInited:
         space = self.hangarSpace.space
         if self.__locatedOnEmbelem:
             space.clearSelectedEmblemInfo()
         space.locateCameraToStartState()
     self._seasonSoundAnimantion = None
     self.__renderEnv.enable(False)
     self.__renderEnv = None
     self.__viewLifecycleWatcher.stop()
     self.service.stopHighlighter()
     self.lobbyContext.deleteHeaderNavigationConfirmator(
         self.__confirmHeaderNavigation)
     self.lobbyContext.getServerSettings(
     ).onServerSettingsChange -= self.__onServerSettingChanged
     g_eventBus.removeListener(CameraRelatedEvents.IDLE_CAMERA,
                               self.__onNotifyHangarCameraIdleStateChanged)
     self.hangarSpace.onSpaceCreate -= self.__onSpaceCreateHandler
     self.hangarSpace.onSpaceDestroy -= self.__onSpaceDestroyHandler
     self.hangarSpace.onSpaceRefresh -= self.__onSpaceRefreshHandler
     self.service.onRegionHighlighted -= self.__onRegionHighlighted
     if g_currentVehicle.item:
         g_tankActiveCamouflage[
             g_currentVehicle.item.intCD] = self.__ctx.currentSeason
         g_currentVehicle.refreshModel()
     self.__hidePropertiesSheet()
     self.__propertiesSheet = None
     self.__ctx.onPropertySheetShown -= self.__onPropertySheetShown
     self.__ctx.onPropertySheetHidden -= self.__onPropertySheetHidden
     self.__ctx.onCaruselItemSelected -= self.__onCaruselItemSelected
     self.__ctx.onChangesCanceled -= self.__onChangesCanceled
     self.__ctx.onCacheResync -= self.__onCacheResync
     self.__ctx.onCustomizationItemsBought -= self.__onItemsBought
     self.__ctx.onCustomizationItemsRemoved -= self.__onItemsRemoved
     self.__ctx.onCustomizationItemInstalled -= self.__onItemsInstalled
     self.__ctx.onCustomizationTabChanged -= self.__onTabChanged
     self.__ctx.onCustomizationModeChanged -= self.__onModeChanged
     self.__ctx.onCustomizationSeasonChanged -= self.__onSeasonChanged
     self.__ctx = None
     self.service.destroyCtx()
     super(MainView, self)._dispose()
     return
 def __fireResourcesLoadedEvent(self):
     compDescr = self.__vDesc.type.compactDescr if self.__vDesc is not None else None
     g_eventBus.handleEvent(CameraRelatedEvents(
         CameraRelatedEvents.VEHICLE_LOADING,
         ctx={
             'started': False,
             'vEntityId': self.__vEntity.id,
             'intCD': compDescr
         }),
                            scope=EVENT_BUS_SCOPE.DEFAULT)
     return
    def __startBuild(self, vDesc, vState):
        self.__curBuildInd += 1
        self.__vState = vState
        self.__resources = {}
        self.__vehicleStickers = None
        cfg = hangarCFG()
        if vState == 'undamaged':
            self.__currentEmblemsAlpha = cfg['emblems_alpha_undamaged']
            self.__isVehicleDestroyed = False
        else:
            self.__currentEmblemsAlpha = cfg['emblems_alpha_damaged']
            self.__isVehicleDestroyed = True
        self.__vDesc = vDesc
        resources = camouflages.getCamoPrereqs(self.__outfit, vDesc)
        splineDesc = vDesc.chassis.splineDesc
        if splineDesc is not None:
            resources.append(splineDesc.segmentModelLeft)
            resources.append(splineDesc.segmentModelRight)
            if splineDesc.leftDesc is not None:
                resources.append(splineDesc.leftDesc)
            if splineDesc.rightDesc is not None:
                resources.append(splineDesc.rightDesc)
            if splineDesc.segment2ModelLeft is not None:
                resources.append(splineDesc.segment2ModelLeft)
            if splineDesc.segment2ModelRight is not None:
                resources.append(splineDesc.segment2ModelRight)
        from vehicle_systems import model_assembler
        resources.append(model_assembler.prepareCompoundAssembler(self.__vDesc, ModelsSetParams(self.__outfit.modelsSet, self.__vState), self.__spaceId))
        g_eventBus.handleEvent(CameraRelatedEvents(CameraRelatedEvents.VEHICLE_LOADING, ctx={'started': True,
         'vEntityId': self.__vEntity.id}), scope=EVENT_BUS_SCOPE.DEFAULT)
        cfg = hangarCFG()
        gunScale = Math.Vector3(1.0, 1.0, 1.1)
        capsuleScale = Math.Vector3(1.5, 1.5, 1.5)
        loadedGunScale = cfg.get('cam_capsule_gun_scale', gunScale)
        if loadedGunScale is not None:
            gunScale = loadedGunScale
        loadedCapsuleScale = cfg.get('cam_capsule_scale', capsuleScale)
        if loadedCapsuleScale is not None:
            capsuleScale = loadedCapsuleScale
        bspModels = ((TankPartNames.getIdx(TankPartNames.CHASSIS), vDesc.chassis.hitTester.bspModelName),
         (TankPartNames.getIdx(TankPartNames.HULL), vDesc.hull.hitTester.bspModelName),
         (TankPartNames.getIdx(TankPartNames.TURRET), vDesc.turret.hitTester.bspModelName),
         (TankPartNames.getIdx(TankPartNames.GUN), vDesc.gun.hitTester.bspModelName),
         (TankPartNames.getIdx(TankPartNames.GUN) + 1, vDesc.hull.hitTester.bspModelName, capsuleScale),
         (TankPartNames.getIdx(TankPartNames.GUN) + 2, vDesc.turret.hitTester.bspModelName, capsuleScale),
         (TankPartNames.getIdx(TankPartNames.GUN) + 3, vDesc.gun.hitTester.bspModelName, gunScale))
        collisionAssembler = BigWorld.CollisionAssembler(bspModels, self.__spaceId)
        resources.append(collisionAssembler)
        physicalTracksBuilders = vDesc.chassis.physicalTracks
        for name, builder in physicalTracksBuilders.iteritems():
            resources.append(builder.createLoader('{0}PhysicalTrack'.format(name)))

        BigWorld.loadResourceListBG(tuple(resources), makeCallbackWeak(self.__onResourcesLoaded, self.__curBuildInd))
        return
 def _populate(self):
     super(MainView, self)._populate()
     self.__ctx = self.service.getCtx()
     self.__ctx.onCustomizationSeasonChanged += self.__onSeasonChanged
     self.__ctx.onCustomizationModeChanged += self.__onModeChanged
     self.__ctx.onCustomizationTabChanged += self.__onTabChanged
     self.__ctx.onCustomizationItemInstalled += self.__onItemsInstalled
     self.__ctx.onCustomizationItemsRemoved += self.__onItemsRemoved
     self.__ctx.onCustomizationItemsBought += self.__onItemsBought
     self.__ctx.onCacheResync += self.__onCacheResync
     self.__ctx.onChangesCanceled += self.__onChangesCanceled
     self.__ctx.onCaruselItemSelected += self.__onCarouselItemSelected
     self.__ctx.onPropertySheetHidden += self.__onPropertySheetHidden
     self.__ctx.onPropertySheetShown += self.__onPropertySheetShown
     self.__ctx.onClearItem += self.__onClearItem
     self.soundManager.playInstantSound(SOUNDS.ENTER)
     self.__viewLifecycleWatcher.start(self.app.containerManager, [
         _ModalWindowsPopupHandler(),
         _C11ViewsPopupHandler(self.__hidePropertiesSheet)
     ])
     self.lobbyContext.addHeaderNavigationConfirmator(
         self.__confirmHeaderNavigation)
     self.lobbyContext.getServerSettings(
     ).onServerSettingsChange += self.__onServerSettingChanged
     self.hangarSpace.onSpaceCreate += self.__onSpaceCreateHandler
     self.hangarSpace.onSpaceDestroy += self.__onSpaceDestroyHandler
     self.hangarSpace.onSpaceRefresh += self.__onSpaceRefreshHandler
     self.service.onRegionHighlighted += self.__onRegionHighlighted
     self._seasonSoundAnimantion = _SeasonSoundAnimantion(
         len(SeasonType.COMMON_SEASONS), self.soundManager)
     self.__setHeaderInitData()
     self.__setSeasonData()
     self.__ctx.refreshOutfit()
     self.as_selectSeasonS(SEASON_TYPE_TO_IDX[self.__ctx.currentSeason])
     self.fireEvent(
         CameraRelatedEvents(
             CameraRelatedEvents.FORCE_DISABLE_IDLE_PARALAX_MOVEMENT,
             ctx={'isDisable': True}), EVENT_BUS_SCOPE.LOBBY)
     self.fireEvent(
         LobbyHeaderMenuEvent(
             LobbyHeaderMenuEvent.TOGGLE_VISIBILITY,
             ctx={'state': HeaderMenuVisibilityState.ONLINE_COUNTER}),
         EVENT_BUS_SCOPE.LOBBY)
     self._isPropertySheetShown = False
     if self.__ctx.c11CameraManager is not None:
         self.__ctx.c11CameraManager.locateCameraToCustomizationPreview(
             forceLocate=True)
     self.__renderEnv = BigWorld.CustomizationEnvironment()
     self.__renderEnv.enable(True)
     if self.__ctx.vehicleAnchorsUpdater is not None:
         self.__ctx.vehicleAnchorsUpdater.setMainView(self.flashObject)
     return
 def _populate(self):
     super(MainView, self)._populate()
     self.__ctx = self.service.getCtx()
     self.__ctx.onCustomizationSeasonChanged += self.__onSeasonChanged
     self.__ctx.onCustomizationModeChanged += self.__onModeChanged
     self.__ctx.onCustomizationTabChanged += self.__onTabChanged
     self.__ctx.onCustomizationItemInstalled += self.__onItemsInstalled
     self.__ctx.onCustomizationItemsRemoved += self.__onItemsRemoved
     self.__ctx.onCustomizationItemsBought += self.__onItemsBought
     self.__ctx.onCacheResync += self.__onCacheResync
     self.__ctx.onChangesCanceled += self.__onChangesCanceled
     self.__ctx.onCaruselItemSelected += self.__onCaruselItemSelected
     self.__ctx.onPropertySheetHidden += self.__onPropertySheetHidden
     self.__ctx.onPropertySheetShown += self.__onPropertySheetShown
     self.soundManager.playInstantSound(SOUNDS.ENTER)
     self.__viewLifecycleWatcher.start(self.app.containerManager, [
         _ModalWindowsPopupHandler(),
         _C11ViewsPopupHandler(self.__hidePropertiesSheet)
     ])
     self.lobbyContext.addHeaderNavigationConfirmator(
         self.__confirmHeaderNavigation)
     self.lobbyContext.getServerSettings(
     ).onServerSettingsChange += self.__onServerSettingChanged
     g_eventBus.addListener(CameraRelatedEvents.IDLE_CAMERA,
                            self.__onNotifyHangarCameraIdleStateChanged)
     self.hangarSpace.onSpaceCreate += self.__onSpaceCreateHandler
     self.hangarSpace.onSpaceDestroy += self.__onSpaceDestroyHandler
     self.hangarSpace.onSpaceRefresh += self.__onSpaceRefreshHandler
     self.service.onRegionHighlighted += self.__onRegionHighlighted
     self._seasonSoundAnimantion = _SeasonSoundAnimantion(
         len(SeasonType.COMMON_SEASONS), self.soundManager)
     self.__setHeaderInitData()
     self.__setSeasonData()
     self._vehicleCustomizationAnchorsUpdater = _VehicleCustomizationAnchorsUpdater(
         self.service)
     self._vehicleCustomizationAnchorsUpdater.startUpdater(
         self.settingsCore.interfaceScale.get())
     self.__ctx.refreshOutfit()
     self.settingsCore.interfaceScale.onScaleExactlyChanged += self.__onInterfaceScaleChanged
     self.fireEvent(
         CameraRelatedEvents(
             CameraRelatedEvents.FORCE_DISABLE_IDLE_PARALAX_MOVEMENT,
             ctx={'isDisable': True}), EVENT_BUS_SCOPE.LOBBY)
     if self.hangarSpace.spaceInited:
         self.hangarSpace.space.locateCameraToCustomizationPreview()
     self.__renderEnv = BigWorld.CustomizationEnvironment()
     self.__renderEnv.enable(True)
     self._isPropertySheetShown = False
Exemple #12
0
 def _moveSpaceHandler(args=None):
     if args is None:
         return
     else:
         ctx = {
             'dx': args.get('dx'),
             'dy': args.get('dy'),
             'dz': args.get('dz')
         }
         g_eventBus.handleEvent(
             CameraRelatedEvents(CameraRelatedEvents.LOBBY_VIEW_MOUSE_MOVE,
                                 ctx=ctx), EVENT_BUS_SCOPE.GLOBAL)
         g_eventBus.handleEvent(
             events.LobbySimpleEvent(
                 events.LobbySimpleEvent.NOTIFY_SPACE_MOVED, ctx=ctx),
             EVENT_BUS_SCOPE.GLOBAL)
         return
Exemple #13
0
 def __onMoveSpace(args=None):
     if args is None:
         return
     else:
         dx = args.get('dx')
         dy = args.get('dy')
         dz = args.get('dz')
         g_eventBus.handleEvent(
             CameraRelatedEvents(CameraRelatedEvents.LOBBY_VIEW_MOUSE_MOVE,
                                 ctx={
                                     'dx': dx,
                                     'dy': dy,
                                     'dz': dz
                                 }), EVENT_BUS_SCOPE.GLOBAL)
         g_eventBus.handleEvent(
             events.LobbySimpleEvent(
                 events.LobbySimpleEvent.NOTIFY_SPACE_MOVED,
                 ctx={
                     'dx': dx,
                     'dy': dy,
                     'dz': dz
                 }), EVENT_BUS_SCOPE.GLOBAL)
         return
Exemple #14
0
 def interactionStatusUpdate(self, value):
     self.fireEvent(
         CameraRelatedEvents(
             CameraRelatedEvents.FORCE_DISABLE_CAMERA_MOVEMENT,
             ctx={'disable': value}), EVENT_BUS_SCOPE.DEFAULT)
Exemple #15
0
    def __startBuild(self, vDesc, vState):
        self.__curBuildInd += 1
        self.__vState = vState
        self.__resources = {}
        self.__vehicleStickers = None
        cfg = hangarCFG()
        if vState == 'undamaged':
            self.__currentEmblemsAlpha = cfg['emblems_alpha_undamaged']
            self.__isVehicleDestroyed = False
        else:
            self.__currentEmblemsAlpha = cfg['emblems_alpha_damaged']
            self.__isVehicleDestroyed = True
        self.__vDesc = vDesc
        resources = camouflages.getCamoPrereqs(self.__outfit, vDesc)
        if not self.__isVehicleDestroyed:
            self.__attachments = camouflages.getAttachments(self.__outfit, vDesc)
        modelsSet = self.__outfit.modelsSet
        splineDesc = vDesc.chassis.splineDesc
        if splineDesc is not None:
            for _, trackDesc in splineDesc.trackPairs.iteritems():
                resources += trackDesc.prerequisites(modelsSet)

        from vehicle_systems import model_assembler
        resources.append(model_assembler.prepareCompoundAssembler(self.__vDesc, ModelsSetParams(modelsSet, self.__vState, self.__attachments), self.__spaceId))
        g_eventBus.handleEvent(CameraRelatedEvents(CameraRelatedEvents.VEHICLE_LOADING, ctx={'started': True,
         'vEntityId': self.__vEntity.id,
         'intCD': self.__vDesc.type.compactDescr}), scope=EVENT_BUS_SCOPE.DEFAULT)
        cfg = hangarCFG()
        gunScale = Math.Vector3(1.0, 1.0, 1.1)
        capsuleScale = Math.Vector3(1.5, 1.5, 1.5)
        loadedGunScale = cfg.get('cam_capsule_gun_scale', gunScale)
        if loadedGunScale is not None:
            gunScale = loadedGunScale
        loadedCapsuleScale = cfg.get('cam_capsule_scale', capsuleScale)
        if loadedCapsuleScale is not None:
            capsuleScale = loadedCapsuleScale
        hitTesterManagers = {TankPartNames.CHASSIS: vDesc.chassis.hitTesterManager,
         TankPartNames.HULL: vDesc.hull.hitTesterManager,
         TankPartNames.TURRET: vDesc.turret.hitTesterManager,
         TankPartNames.GUN: vDesc.gun.hitTesterManager}
        bspModels = ()
        crashedBspModels = ()
        for partName, htManager in hitTesterManagers.iteritems():
            partId = TankPartNames.getIdx(partName)
            bspModel = (partId, htManager.modelHitTester.bspModelName)
            bspModels = bspModels + (bspModel,)
            if htManager.crashedModelHitTester:
                crashedBspModel = (partId, htManager.crashedModelHitTester.bspModelName)
                crashedBspModels = crashedBspModels + (crashedBspModel,)

        bspModels = bspModels + ((TankPartNames.getIdx(TankPartNames.GUN) + 1, vDesc.hull.hitTesterManager.modelHitTester.bspModelName, capsuleScale), (TankPartNames.getIdx(TankPartNames.GUN) + 2, vDesc.turret.hitTesterManager.modelHitTester.bspModelName, capsuleScale), (TankPartNames.getIdx(TankPartNames.GUN) + 3, vDesc.gun.hitTesterManager.modelHitTester.bspModelName, gunScale))
        if vDesc.hull.hitTesterManager.crashedModelHitTester:
            crashedBspModels = crashedBspModels + ((TankPartNames.getIdx(TankPartNames.GUN) + 1, vDesc.hull.hitTesterManager.crashedModelHitTester.bspModelName, capsuleScale),)
        if vDesc.turret.hitTesterManager.crashedModelHitTester:
            crashedBspModels = crashedBspModels + ((TankPartNames.getIdx(TankPartNames.GUN) + 2, vDesc.turret.hitTesterManager.crashedModelHitTester.bspModelName, capsuleScale),)
        if vDesc.gun.hitTesterManager.crashedModelHitTester:
            crashedBspModels = crashedBspModels + ((TankPartNames.getIdx(TankPartNames.GUN) + 3, vDesc.gun.hitTesterManager.crashedModelHitTester.bspModelName, gunScale),)
        modelCA = BigWorld.CollisionAssembler(bspModels, self.__spaceId)
        modelCA.name = 'ModelCollisions'
        resources.append(modelCA)
        if crashedBspModels:
            crashedModelCA = BigWorld.CollisionAssembler(crashedBspModels, self.__spaceId)
            crashedModelCA.name = 'CrashedModelCollisions'
            resources.append(crashedModelCA)
        physicalTracksBuilders = vDesc.chassis.physicalTracks
        for name, builders in physicalTracksBuilders.iteritems():
            for index, builder in enumerate(builders):
                resources.append(builder.createLoader(self.__spaceId, '{0}{1}PhysicalTrack'.format(name, index), modelsSet))

        BigWorld.loadResourceListBG(tuple(resources), makeCallbackWeak(self.__onResourcesLoaded, self.__curBuildInd))
        return