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

billboard.py (2871B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\billboards\spacecomponents\client\billboard.py
      2 from billboards import get_billboard_system
      3 from spacecomponents.client.messages import MSG_ON_REMOVED_FROM_SPACE, MSG_ON_LOAD_OBJECT
      4 from spacecomponents.common.components.component import Component
      5 import logging
      6 logger = logging.getLogger(__name__)
      7 
      8 class BillboardComponent(Component):
      9 
     10     def __init__(self, itemID, typeID, attributes, componentRegistry):
     11         Component.__init__(self, itemID, typeID, attributes, componentRegistry)
     12         self.SubscribeToMessage(MSG_ON_LOAD_OBJECT, self.OnLoadObject)
     13         self.SubscribeToMessage(MSG_ON_REMOVED_FROM_SPACE, self.OnRemovedFromSpace)
     14 
     15     def OnLoadObject(self, ball):
     16         self.RegisterDynamicResource(ball)
     17         self.UpdateTickers(ball)
     18 
     19     def OnRemovedFromSpace(self):
     20         self.UnregisterDynamicResource()
     21 
     22     def RegisterDynamicResource(self, ball):
     23         billboardSystem = get_billboard_system()
     24         billboardSystem.register_billboard_resource(self.attributes.dynamicResourceName, self.attributes.videoPlaylist, self.itemID, self.GetTextureParameters(ball))
     25 
     26     def UnregisterDynamicResource(self):
     27         billboardSystem = get_billboard_system()
     28         billboardSystem.unregister_billboard_resource(self.attributes.dynamicResourceName, self.itemID)
     29 
     30     def GetTextureParameters(self, ball):
     31         textureParameters = []
     32         model = ball.GetModel()
     33         for screen in self.attributes.screens:
     34             try:
     35                 for parent in model.Find(screen.parentClass):
     36                     if parent.name == screen.parentName:
     37                         textureParameters.extend([ p for p in parent.Find('trinity.TriTextureParameter') if p.name == screen.textureParameterName ])
     38 
     39             except:
     40                 logger.warn('unable to get texture parameters form item %s of type %s using arguments parent_class=%s, parent_name=%s, param_name=%s', self.itemID, self.typeID, screen.parentClass, screen.parentName, screen.textureParameterName)
     41 
     42         return textureParameters
     43 
     44     def UpdateTickers(self, ball):
     45         model = ball.GetModel()
     46         for poster in self.attributes.posters:
     47             try:
     48                 for parent in model.Find(poster.parentClass):
     49                     if parent.name == poster.parentName:
     50                         textureParameter = [ p for p in parent.Find('trinity.TriTextureParameter') if p.name == poster.textureParameterName ][0]
     51                         textureParameter.resourcePath = poster.resPath
     52 
     53             except:
     54                 logger.warn('unable to get texture parameters form item %s of type %s using arguments parent_class=%s, parent_name=%s, param_name=%s res_path=%s', self.itemID, self.typeID, poster.parentClass, poster.parentName, poster.textureParameterName, poster.resPath)