NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

mapViewNavigation.py (6972B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\eve\client\script\ui\shared\mapView\mapViewNavigation.py
      2 import eveicon
      3 from carbon.common.script.sys.serviceConst import ROLE_GML
      4 from carbon.common.script.util.timerstuff import AutoTimer
      5 from carbonui.control.contextMenu.menuEntryData import MenuEntryData
      6 from carbonui.primitives.container import Container
      7 import carbonui.const as uiconst
      8 from eve.client.script.ui.camera.mapCameraController import MapCameraController
      9 from carbonui.uicore import uicore
     10 from eve.client.script.ui.shared.mapView.categories.category_setting_listener import CategorySettingListener
     11 from localization import GetByLabel
     12 from menu import MenuLabel
     13 import evespacemouse
     14 spaceMouseSupportEnabled = False
     15 
     16 class MapViewNavigation(Container):
     17     default_cursor = uiconst.UICURSOR_DEFAULT
     18     lastPickInfo = None
     19     isTabStop = True
     20     pickInfo = None
     21     pickPosition = None
     22     cameraUpdateTimer = None
     23     rightMouseDownPosition = None
     24 
     25     def Close(self, *args):
     26         Container.Close(self, *args)
     27         self.mapView = None
     28         self.pickTimer = None
     29         self.cameraUpdateTimer = None
     30         evespacemouse.StopListening(self._OnSpaceMousePosition, None)
     31 
     32     def ApplyAttributes(self, attributes):
     33         Container.ApplyAttributes(self, attributes)
     34         self.mapView = attributes.mapView
     35         self.pickTimer = AutoTimer(20, self.CheckPick)
     36         self.mouseDownPick = None
     37         self.categorySettingListener = CategorySettingListener()
     38         self.ConstructCameraController()
     39         if spaceMouseSupportEnabled:
     40             evespacemouse.StartListening(None, self._OnSpaceMousePosition, None, 100)
     41 
     42     def _OnSpaceMousePosition(self, dt, translation, rotation):
     43         mo = uicore.uilib.mouseOver
     44         parent = self.parent
     45         while mo != parent:
     46             if not mo.parent or mo is uicore.uilib.desktop:
     47                 break
     48             mo = mo.parent
     49 
     50         if mo != parent:
     51             return
     52         spaceMouseScale = 1000.0 / 16.0
     53         camera = self.cameraController.GetCamera()
     54         if rotation[0] or rotation[1]:
     55             orbitScale = 0.012 * spaceMouseScale * dt
     56             camera.OrbitImmediate(rotation[1] * orbitScale, rotation[0] * orbitScale)
     57         if translation[0] or translation[1] or translation[2]:
     58             if camera.IsAttached():
     59                 camera.Zoom(-translation[2] * 0.01 * spaceMouseScale * dt)
     60             else:
     61                 panScale = 30 * spaceMouseScale * dt
     62                 camera.PanImmediate(translation[0] * panScale, translation[1] * panScale, -translation[2] * panScale)
     63         raise evespacemouse.StopPropagation()
     64 
     65     def ConstructCameraController(self):
     66         self.cameraController = MapCameraController(self.mapView.mapViewID, self.mapView.cameraID)
     67 
     68     def CheckPick(self):
     69         if uicore.uilib.mouseOver is not self or uicore.uilib.leftbtn or uicore.uilib.rightbtn:
     70             return
     71         mx, my = uicore.uilib.x, uicore.uilib.y
     72         if self.pickPosition:
     73             dX = abs(mx - self.pickPosition[0])
     74             dY = abs(my - self.pickPosition[1])
     75             picked = self.pickPosition[-1]
     76             if dX == 0 and dY == 0:
     77                 if not picked:
     78                     self.PickScene(mx, my)
     79                     self.pickPosition = (mx, my, True)
     80                 return
     81         self.pickPosition = (mx, my, False)
     82 
     83     def PickScene(self, mouseX, mouseY):
     84         pickInfo = self.mapView.GetPickObjects(mouseX, mouseY, getMarkers=False)
     85         if pickInfo:
     86             self.mapView.OnMarkerHovered(pickInfo[0])
     87         else:
     88             self.mapView.OnMarkerHovered(None)
     89 
     90     def MapMarkerPickingOverride(self, *args, **kwds):
     91         return False
     92 
     93     def PickRegionID(self):
     94         return None
     95 
     96     def OnDblClick(self, *args):
     97         if self.destroyed:
     98             return
     99         pickInfo = self.GetPickInfo()
    100         if pickInfo:
    101             self.mapView.SetSelectedMarker(pickInfo[0][1])
    102         else:
    103             self.mapView.LookAtCurrentLocation()
    104 
    105     def ClickPickedObject(self):
    106         pickInfo = self.GetPickInfo()
    107         if pickInfo:
    108             self.mapView.SetSelectedMarker(pickInfo[0][1])
    109 
    110     def GetPickInfo(self):
    111         mouseX, mouseY = uicore.uilib.x, uicore.uilib.y
    112         if self.destroyed:
    113             return None
    114         pickInfo = self.mapView.GetPickObjects(mouseX, mouseY, getMarkers=True)
    115         return pickInfo
    116 
    117     def OnMouseWheel(self, *args):
    118         self.cameraController.OnMouseWheel()
    119 
    120     def OnMouseMove(self, *args):
    121         if not uicore.IsDragging():
    122             self.cameraController.OnMouseMove()
    123 
    124     def OnMouseDown(self, *args):
    125         self.cameraController.OnMouseDown(*args)
    126         self.mouseDownPick = self.GetPickInfo()
    127         self.mapView.infoLayer.state = uiconst.UI_DISABLED
    128 
    129     def OnClick(self, *args):
    130         pickInfo = self.GetPickInfo()
    131         if pickInfo and pickInfo == self.mouseDownPick:
    132             self.mapView.SetSelectedMarker(pickInfo[0][1])
    133         self.mouseDownPick = None
    134 
    135     def OnMouseUp(self, *args):
    136         self.mapView.infoLayer.state = uiconst.UI_PICKCHILDREN
    137 
    138     def GetMenuForObjectID(self, objectID):
    139         return self.mapView.GetItemMenu(objectID)
    140 
    141     def GetMenu(self):
    142         pickInfo = self.mapView.GetPickObjects(uicore.uilib.x, uicore.uilib.y)
    143         if pickInfo and len(pickInfo) == 1:
    144             return self.GetMenuForObjectID(pickInfo[0][0])
    145         locations = [(MenuLabel('UI/Map/Navigation/menuSystem'), self.mapView.SetActiveItemID, (session.solarsystemid2,)), (MenuLabel('UI/Map/Navigation/menuConstellation'), self.mapView.SetActiveItemID, (session.constellationid,)), (MenuLabel('UI/Map/Navigation/menuRegion'), self.mapView.SetActiveItemID, (session.regionid,))]
    146         m = [(MenuLabel('UI/Map/Navigation/menuSelectCurrent'), locations)]
    147         mapSvc = sm.GetService('map')
    148         waypoints = sm.StartService('starmap').GetWaypoints()
    149         if len(waypoints):
    150             waypointList = []
    151             wpCount = 1
    152             for waypointID in waypoints:
    153                 waypointItem = mapSvc.GetItem(waypointID)
    154                 caption = MenuLabel('UI/Map/Navigation/menuWaypointEntry', {'itemName': waypointItem.itemName,
    155                  'wpCount': wpCount})
    156                 waypointList += [(caption, self.mapView.SetActiveItemID, (waypointID,))]
    157                 wpCount += 1
    158 
    159             m.append((MenuLabel('UI/Map/Navigation/menuSelectWaypoint'), waypointList))
    160             m.append(None)
    161             m.append((MenuLabel('UI/Map/Navigation/menuClearWaypoints'), sm.StartService('starmap').ClearWaypoints, (None,)))
    162         m.append(MenuEntryData(text=GetByLabel('UI/Map/MapUtils/ManageFilterCategories'), subMenuData=self.categorySettingListener.get_menu()))
    163         if session.role & ROLE_GML:
    164             m.append(('GM: Debug Run All Filters', self.mapView.DebugRunAllFilters))
    165         return m
    166 
    167     def OnDockModeChanged(self):
    168         pass