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

__init__.py (7264B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\eveSpaceObject\__init__.py
      2 import geo2
      3 import trinity
      4 import eve.common.lib.appConst as const
      5 gfxRaceAmarr = 'amarr'
      6 gfxRaceCaldari = 'caldari'
      7 gfxRaceGallente = 'gallente'
      8 gfxRaceMinmatar = 'minmatar'
      9 gfxRaceJove = 'jove'
     10 gfxRaceAngel = 'angel'
     11 gfxRaceSleeper = 'sleeper'
     12 gfxRaceORE = 'ore'
     13 gfxRaceConcord = 'concord'
     14 gfxRaceRogue = 'rogue'
     15 gfxRaceSansha = 'sansha'
     16 gfxRaceSOCT = 'soct'
     17 gfxRaceTalocan = 'talocan'
     18 gfxRaceGeneric = 'generic'
     19 gfxRaceSoE = 'soe'
     20 gfxRaceMordu = 'mordu'
     21 gfxRaceTriglavian = 'triglavian'
     22 DEFAULT_SCENE_PATH = 'res:/dx9/scene/iconbackground/generic.red'
     23 DEFAULT_PREVIEW_SCENE_PATH = 'res:/dx9/scene/preview/generic.red'
     24 
     25 def GetPreviewScenePathByRaceName(raceName):
     26     scenePaths = {gfxRaceAmarr: 'res:/dx9/scene/preview/amarr.red',
     27      gfxRaceAngel: 'res:/dx9/scene/preview/angel.red',
     28      gfxRaceCaldari: 'res:/dx9/scene/preview/caldari.red',
     29      gfxRaceConcord: 'res:/dx9/scene/preview/concord.red',
     30      gfxRaceGallente: 'res:/dx9/scene/preview/gallente.red',
     31      gfxRaceGeneric: 'res:/dx9/scene/preview/generic.red',
     32      gfxRaceJove: 'res:/dx9/scene/preview/jove.red',
     33      gfxRaceMinmatar: 'res:/dx9/scene/preview/minmatar.red',
     34      gfxRaceMordu: 'res:/dx9/scene/preview/mordu.red',
     35      gfxRaceORE: 'res:/dx9/scene/preview/ore.red',
     36      gfxRaceRogue: 'res:/dx9/scene/preview/rogue.red',
     37      gfxRaceSansha: 'res:/dx9/scene/preview/sansha.red',
     38      gfxRaceSleeper: 'res:/dx9/scene/preview/sleeper.red',
     39      gfxRaceSOCT: 'res:/dx9/scene/preview/soct.red',
     40      gfxRaceSoE: 'res:/dx9/scene/preview/soe.red',
     41      gfxRaceTalocan: 'res:/dx9/scene/preview/talocan.red',
     42      gfxRaceTriglavian: 'res:/dx9/scene/preview/triglavian.red'}
     43     return scenePaths.get(raceName, DEFAULT_PREVIEW_SCENE_PATH)
     44 
     45 
     46 droneTurretGfxID_fighterbomber = {gfxRaceAmarr: 11515,
     47  gfxRaceGallente: 11517,
     48  gfxRaceCaldari: 11516,
     49  gfxRaceMinmatar: 11518,
     50  gfxRaceSansha: 20339}
     51 droneTurretGfxID_mining = 11521
     52 droneTurretGfxID_ice_mining = 25189
     53 droneTurretGfxID_combat = {gfxRaceAmarr: 11504,
     54  gfxRaceGallente: 11506,
     55  gfxRaceCaldari: 11505,
     56  gfxRaceMinmatar: 11508,
     57  gfxRaceJove: 21058}
     58 droneTurretGfxID_salvager = 20925
     59 droneTurretGfxID_generic = 11507
     60 gfxDroneGroupFighterBomber = 1
     61 gfxDroneGroupCombat = 2
     62 gfxDroneGroupUtility = 3
     63 gfxDroneGroupMining = 4
     64 gfxDroneGroupNpc = 5
     65 gfxDroneGroupSalvager = 6
     66 droneGroupFromTypeGroup = {const.groupMiningDrone: gfxDroneGroupMining,
     67  const.groupSalvageDrone: gfxDroneGroupSalvager,
     68  const.groupCombatDrone: gfxDroneGroupCombat,
     69  const.groupElectronicWarfareDrone: gfxDroneGroupCombat,
     70  const.groupStasisWebifyingDrone: gfxDroneGroupCombat,
     71  const.groupUnanchoringDrone: gfxDroneGroupCombat,
     72  const.groupRepairDrone: gfxDroneGroupCombat,
     73  const.groupWarpScramblingDrone: gfxDroneGroupCombat,
     74  const.groupCapDrainDrone: gfxDroneGroupCombat,
     75  const.groupLogisticDrone: gfxDroneGroupCombat,
     76  const.groupHybridDrone: gfxDroneGroupCombat,
     77  const.groupSupportFighter: gfxDroneGroupCombat,
     78  const.groupLCODrone: gfxDroneGroupNpc,
     79  const.groupRogueDrone: gfxDroneGroupNpc,
     80  const.groupAsteroidRogueDroneBattleCruiser: gfxDroneGroupNpc,
     81  const.groupAsteroidRogueDroneBattleship: gfxDroneGroupNpc,
     82  const.groupAsteroidRogueDroneCruiser: gfxDroneGroupNpc,
     83  const.groupAsteroidRogueDroneDestroyer: gfxDroneGroupNpc,
     84  const.groupAsteroidRogueDroneFrigate: gfxDroneGroupNpc,
     85  const.groupAsteroidRogueDroneHauler: gfxDroneGroupNpc,
     86  const.groupAsteroidRogueDroneSwarm: gfxDroneGroupNpc,
     87  const.groupAsteroidRogueDroneOfficer: gfxDroneGroupNpc,
     88  const.groupDeadspaceRogueDroneBattleCruiser: gfxDroneGroupNpc,
     89  const.groupDeadspaceRogueDroneBattleship: gfxDroneGroupNpc,
     90  const.groupDeadspaceRogueDroneCruiser: gfxDroneGroupNpc,
     91  const.groupDeadspaceRogueDroneDestroyer: gfxDroneGroupNpc,
     92  const.groupDeadspaceRogueDroneFrigate: gfxDroneGroupNpc,
     93  const.groupDeadspaceRogueDroneSwarm: gfxDroneGroupNpc,
     94  const.groupAsteroidRogueDroneCommanderFrigate: gfxDroneGroupNpc,
     95  const.groupAsteroidRogueDroneCommanderDestroyer: gfxDroneGroupNpc,
     96  const.groupAsteroidRogueDroneCommanderCruiser: gfxDroneGroupNpc,
     97  const.groupAsteroidRogueDroneCommanderBattleCruiser: gfxDroneGroupNpc,
     98  const.groupMissionFighterDrone: gfxDroneGroupNpc,
     99  const.groupMissionDrone: gfxDroneGroupNpc,
    100  const.groupAbyssalDroneNpc: gfxDroneGroupNpc,
    101  const.groupIrregularDrone: gfxDroneGroupNpc,
    102  const.groupFabricatorRogueDroneFrigate: gfxDroneGroupNpc,
    103  const.groupFabricatorRogueDroneDestroyer: gfxDroneGroupNpc,
    104  const.groupFabricatorRogueDroneCruiser: gfxDroneGroupNpc,
    105  const.groupFabricatorRogueDroneBattlecruiser: gfxDroneGroupNpc,
    106  const.groupFabricatorRogueDroneBattleship: gfxDroneGroupNpc}
    107 droneTypeGroup = {3701: droneTurretGfxID_ice_mining,
    108  43694: droneTurretGfxID_mining,
    109  43681: droneTurretGfxID_ice_mining,
    110  41030: droneTurretGfxID_mining,
    111  1202: droneTurretGfxID_mining,
    112  3218: droneTurretGfxID_mining,
    113  43699: droneTurretGfxID_ice_mining,
    114  43700: droneTurretGfxID_ice_mining,
    115  10252: droneTurretGfxID_mining,
    116  10248: droneTurretGfxID_mining,
    117  10246: droneTurretGfxID_mining,
    118  10250: droneTurretGfxID_mining}
    119 droneTurretGfxID = {gfxDroneGroupFighterBomber: (droneTurretGfxID_fighterbomber, droneTurretGfxID_generic),
    120  gfxDroneGroupCombat: (droneTurretGfxID_combat, droneTurretGfxID_generic),
    121  gfxDroneGroupUtility: (None, None),
    122  gfxDroneGroupMining: (None, droneTurretGfxID_mining),
    123  gfxDroneGroupNpc: (droneTurretGfxID_combat, droneTurretGfxID_generic),
    124  gfxDroneGroupSalvager: (None, droneTurretGfxID_salvager)}
    125 
    126 def GetDeathExplosionLookDelay(model, radius):
    127     radius = getattr(model, 'boundingSphereRadius', radius)
    128     if radius < 20.0:
    129         radius = 20.0
    130     elif radius > 6000.0:
    131         radius = 6000.0
    132     lerpValue = (radius - 20.0) / 5980.0
    133     milliseconds = 4000.0 + lerpValue * 4000.0
    134     return milliseconds
    135 
    136 
    137 def _GetEffectParameter(effect, name):
    138     for each in effect.constParameters:
    139         if each[0] == name:
    140             return each[1]
    141 
    142     for each in effect.parameters:
    143         if each.name == name:
    144             if type(each.value) != tuple or len(each.value) != 4:
    145                 raise KeyError()
    146             return each.value
    147 
    148     raise KeyError()
    149 
    150 
    151 def _EnhanceColor(rgb):
    152     color = trinity.TriColor(*rgb)
    153     h, s, v = color.GetHSV()
    154     s = min(s * 1.5, 1)
    155     color.SetHSV(h, s, v)
    156     return (color.r, color.g, color.b)
    157 
    158 
    159 def GetAlbedoColor(spaceObject):
    160     if not hasattr(spaceObject, 'mesh'):
    161         return (0, 0, 0, 0)
    162     mesh = spaceObject.mesh
    163     if not mesh:
    164         return (0, 0, 0, 0)
    165     color = (0, 0, 0, 0)
    166     count = 0
    167     parameterSuffixes = ('DiffuseColor', 'FresnelColor')
    168     for area in mesh.opaqueAreas:
    169         if not area.effect:
    170             continue
    171         for param in area.effect.parameters:
    172             if param.name.endswith(parameterSuffixes) and type(param.value) == tuple and len(param.value) == 4:
    173                 color = geo2.Vec4Add(color, param.value)
    174                 count += 1
    175 
    176         for name, value in area.effect.constParameters:
    177             if name.endswith(parameterSuffixes):
    178                 color = geo2.Vec4Add(color, value)
    179                 count += 1
    180 
    181     if count == 0:
    182         return (0, 0, 0, 0)
    183     return _EnhanceColor(geo2.Vec4Scale(color, 1.0 / count))