Exemplo n.º 1
0
 def _setCameraLocation(self,
                        targetPos=None,
                        pivotPos=None,
                        yaw=None,
                        pitch=None,
                        dist=None,
                        camConstraints=None,
                        ignoreConstraints=False,
                        smothiedTransition=True,
                        previewMode=False):
     from gui.ClientHangarSpace import customizationHangarCFG
     customCfg = customizationHangarCFG()
     self.__hangarCameraManager.camera.maxDistHalfLife = customCfg[
         'cam_fluency']
     self.__hangarCameraManager.camera.turningHalfLife = customCfg[
         'cam_fluency']
     self.__hangarCameraManager.camera.movementHalfLife = customCfg[
         'cam_fluency']
     self.__hangarCameraManager.setCameraLocation(
         targetPos=targetPos,
         pivotPos=pivotPos,
         yaw=yaw,
         pitch=pitch,
         dist=dist,
         camConstraints=camConstraints,
         ignoreConstraints=ignoreConstraints,
         smothiedTransition=smothiedTransition,
         previewMode=previewMode,
         verticalOffset=_VERTICAL_OFFSET)
     self._startCameraMovement()
 def locateCameraToCustomizationPreview(self, forceLocate=False, preserveAngles=False, updateTankCentralPoint=False):
     if self.__hangarCameraManager is None or self.__hangarCameraManager.camera is None:
         return
     else:
         from gui.ClientHangarSpace import customizationHangarCFG, hangarCFG
         cfg = customizationHangarCFG()
         hangarConfig = hangarCFG()
         self.__rotateTurretAndGun()
         if self.__tankCentralPoint is None or updateTankCentralPoint:
             self.__tankCentralPoint = self.__getTankCentralPoint()
         worldPos = self.__tankCentralPoint
         if worldPos:
             pivotPos = Math.Vector3(0, 0, 0)
         else:
             worldPos = cfg['cam_start_target_pos']
             pivotPos = cfg['cam_pivot_pos']
         if preserveAngles:
             matrix = Math.Matrix(self.__hangarCameraManager.camera.invViewMatrix)
             previewYaw = matrix.yaw
             previewPitch = self.__prevPitch or 0.0
         else:
             previewYaw = math.radians(cfg['cam_start_angles'][0])
             previewPitch = math.radians(cfg['cam_start_angles'][1])
         self._setCameraLocation(targetPos=worldPos, pivotPos=pivotPos, yaw=previewYaw, pitch=previewPitch, dist=cfg['cam_start_dist'], camConstraints=[hangarConfig['cam_pitch_constr'], hangarConfig['cam_yaw_constr'], cfg['cam_dist_constr']], forceLocate=forceLocate)
         self.__currentMode = C11nCameraModes.PREVIEW
         self.enableMovementByMouse()
         self.__prevPitch = None
         return
 def __getDistConstraints(self, position, commonConstraints=None, startingPoint=None):
     if commonConstraints is None or startingPoint is None:
         from gui.ClientHangarSpace import customizationHangarCFG
         cfg = customizationHangarCFG()
         commonConstraints = commonConstraints or cfg['cam_dist_constr']
         startingPoint = startingPoint or cfg['cam_start_target_pos']
     return (commonConstraints[0], commonConstraints[1] - (position[1] - startingPoint[1]))
Exemplo n.º 4
0
 def locateCameraToCustomizationPreview(self):
     from gui.ClientHangarSpace import customizationHangarCFG, hangarCFG
     cfg = customizationHangarCFG()
     hangarConfig = hangarCFG()
     self.setCameraLocation(targetPos=cfg['cam_start_target_pos'],
                            pivotPos=cfg['cam_pivot_pos'],
                            yaw=math.radians(cfg['cam_start_angles'][0]),
                            pitch=math.radians(cfg['cam_start_angles'][1]),
                            dist=cfg['cam_start_dist'],
                            camConstraints=[
                                hangarConfig['cam_pitch_constr'],
                                hangarConfig['cam_yaw_constr'],
                                cfg['cam_dist_constr']
                            ])
Exemplo n.º 5
0
 def locateCameraToCustomizationPreview(self,
                                        preserveAngles=False,
                                        forceLocate=False):
     if self.__hangarCameraManager is None or self.__hangarCameraManager.camera is None:
         return
     else:
         from gui.ClientHangarSpace import customizationHangarCFG, hangarCFG
         cfg = customizationHangarCFG()
         hangarConfig = hangarCFG()
         vEntity = BigWorld.entity(
             self.__hangarCameraManager.getCurrentEntityId())
         from HangarVehicle import HangarVehicle
         pivotPos = cfg['cam_pivot_pos']
         if isinstance(vEntity, HangarVehicle):
             appearance = vEntity.appearance
             hullAABB = appearance.collisions.getBoundingBox(
                 TankPartIndexes.HULL)
             position = Math.Vector3((hullAABB[1].x + hullAABB[0].x) / 2.0,
                                     hullAABB[1].y / 2.0,
                                     (hullAABB[1].z + hullAABB[0].z) / 2.0)
             m = Math.Matrix(
                 appearance.compoundModel.node(TankPartNames.HULL))
             worldPos = m.applyPoint(position)
             pivotPos = Math.Vector3(0, 0, 0)
         else:
             worldPos = cfg['cam_start_target_pos']
         if preserveAngles:
             matrix = Math.Matrix(
                 self.__hangarCameraManager.camera.invViewMatrix)
             previewYaw = matrix.yaw
             previewPitch = self.__prevPitch or 0.0
         else:
             previewYaw = math.radians(cfg['cam_start_angles'][0])
             previewPitch = math.radians(cfg['cam_start_angles'][1])
         self._setCameraLocation(targetPos=worldPos,
                                 pivotPos=pivotPos,
                                 yaw=previewYaw,
                                 pitch=previewPitch,
                                 dist=cfg['cam_start_dist'],
                                 camConstraints=[
                                     hangarConfig['cam_pitch_constr'],
                                     hangarConfig['cam_yaw_constr'],
                                     cfg['cam_dist_constr']
                                 ],
                                 smothiedTransition=not forceLocate)
         self.__prevPitch = None
         return
 def locateCameraToStyleInfoPreview(self, forceLocate=False):
     if self.__hangarCameraManager is None or self.__hangarCameraManager.camera is None:
         return
     else:
         self.__savePitch()
         from gui.ClientHangarSpace import customizationHangarCFG, hangarCFG
         cfg = customizationHangarCFG()
         hangarConfig = hangarCFG()
         if self.__tankCentralPoint is None:
             self.__tankCentralPoint = self.__getTankCentralPoint()
         dist = cfg['cam_start_dist']
         targetPos = copy(self.__tankCentralPoint)
         distConstraints = copy(cfg['cam_dist_constr'])
         if self.vEntity is not None and self.vEntity.appearance is not None and self.vEntity.appearance.compoundModel is not None:
             appearance = self.vEntity.appearance
             mat = Math.Matrix()
             mat.setRotateYPR((_STYLE_INFO_YAW, -_STYLE_INFO_PITCH, 0.0))
             pivotDir = mat.applyVector(Math.Vector3(1, 0, 0))
             pivotDir = Math.Vector3(pivotDir.x, 0, pivotDir.z)
             pivotDir.normalise()
             hullAABB = appearance.collisions.getBoundingBox(TankPartIndexes.HULL)
             width = hullAABB[1].x - hullAABB[0].x
             length = hullAABB[1].z - hullAABB[0].z
             height = hullAABB[1].y - hullAABB[0].y
             hullViewSpaceX = width * abs(math.cos(_STYLE_INFO_YAW)) + length * abs(math.sin(_STYLE_INFO_YAW))
             hullViewSpaceZ = width * abs(math.sin(_STYLE_INFO_YAW)) + length * abs(math.cos(_STYLE_INFO_YAW))
             aspect = BigWorld.getAspectRatio()
             halfFOVTan = math.tan(BigWorld.projection().fov * 0.5)
             distW = hullViewSpaceX / (_STYLE_INFO_MAX_VEHICLE_WIDTH * 2 * halfFOVTan * aspect)
             distH = height / (_STYLE_INFO_MAX_VEHICLE_HEIGHT * 2 * halfFOVTan) + hullViewSpaceZ * 0.5
             dist = max(distH, distW)
             distConstraints.y = _STYLE_INFO_MAX_CAMERA_DIST
             halfHeight = dist * halfFOVTan
             halfWidth = halfHeight * aspect
             targetPos += pivotDir * halfWidth * _STYLE_INFO_VEHICLE_SCREEN_X_SHIFT
             futureCamDir = mat.applyVector(Math.Vector3(0, 0, 1))
             futureCamPos = targetPos - futureCamDir * dist
             paramsDOF = None
             if isRendererPipelineDeferred():
                 paramsDOF = self.__getStyleInfoDOFParams(futureCamPos)
             self.__ctx.events.onUpdateStyleInfoDOF(paramsDOF)
         self._setCameraLocation(targetPos=targetPos, pivotPos=-Math.Vector3(0, 0, 0), yaw=_STYLE_INFO_YAW, pitch=_STYLE_INFO_PITCH, dist=dist, camConstraints=[hangarConfig['cam_pitch_constr'], hangarConfig['cam_yaw_constr'], distConstraints], forceLocate=forceLocate, forceRotate=True)
         self.__currentMode = C11nCameraModes.STYLE_INFO
         self.enableMovementByMouse(enableRotation=False, enableZoom=False)
         return
Exemplo n.º 7
0
 def moveHangarVehicleToCustomizationRoom(self):
     from gui.ClientHangarSpace import customizationHangarCFG
     cfg = customizationHangarCFG()
     targetPos = cfg['v_start_pos']
     yaw = math.radians(cfg['v_start_angles'][0])
     pitch = math.radians(cfg['v_start_angles'][1])
     roll = math.radians(cfg['v_start_angles'][2])
     shadowYOffset = cfg[
         'shadow_forward_y_offset'] if BigWorld.getGraphicsSetting(
             'RENDER_PIPELINE') == 1 else cfg['shadow_deferred_y_offset']
     g_eventBus.handleEvent(events.HangarCustomizationEvent(
         events.HangarCustomizationEvent.CHANGE_VEHICLE_MODEL_TRANSFORM,
         ctx={
             'targetPos': targetPos,
             'rotateYPR': (yaw, pitch, roll),
             'shadowYOffset': shadowYOffset
         }),
                            scope=EVENT_BUS_SCOPE.LOBBY)
 def __initCameras(self):
     if self.__hangarCameraManager is None:
         return
     else:
         hangarCamera = self.__hangarCameraManager.camera
         if hangarCamera is None:
             return
         self.__c11nCamera = BigWorld.SphericalTransitionCamera(hangarCamera, _VERTICAL_OFFSET)
         targetPos = Math.Matrix(hangarCamera.target).translation
         self.__c11nCamera.moveTo(targetPos, 0.0)
         BigWorld.camera(self.__c11nCamera)
         from gui.ClientHangarSpace import customizationHangarCFG
         customCfg = customizationHangarCFG()
         hangarCamera.maxDistHalfLife = customCfg['cam_fluency']
         hangarCamera.turningHalfLife = customCfg['cam_fluency']
         hangarCamera.movementHalfLife = customCfg['cam_fluency']
         self.__hangarCameraManager.handleInactiveCamera = True
         self.__updateScreenSpaceOffset(_VERTICAL_OFFSET)
         return