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)