Пример #1
0
 def GetComponent(self, entity, componentType = None):
     _ct = GetClass(componentType)
     if issubclass(_ct, Component):
         componentType = ComponentTypeManager.GetTypeFor(_ct)
     eId = entity.GetId()
     components = self.componentsByType.get(componentType.GetId())
     if components and eId in components:
         return components[eId]
     return None
Пример #2
0
 def GetTypeFor(cls, component):
     receivedType = GetClass(component)
     if not issubclass(receivedType, Component):
         raise TypeError
     t = cls._componentTypes.get(receivedType)
     if not t:
         t = ComponentType()
         cls._componentTypes[receivedType] = t
     return t
Пример #3
0
 def __init__(self, component, world=None):
     self.typeOfComponent = GetClass(component)
     if not issubclass(self.typeOfComponent, Component):
         raise TypeError
     if world:
         self.em = world.GetEntityManager()
         self.componentType = ComponentTypeManager.GetTypeFor(
             self.typeOfComponent)
     else:
         self.em = self.type = None
Пример #4
0
    def AddComponent(self, entity, component):
        componentType = ComponentTypeManager.GetTypeFor(GetClass(component))
        
        components = self.componentsByType.get(componentType.GetId())
        if not components:
            components = {}
            self.componentsByType[componentType.GetId()] = components

        components[entity.GetId()] = component
        entity.AddTypeBit(componentType.GetBit())
        for event in self.events[EntityManager.ADDED_COMPONENT_EVENT]:
            event(entity, component)
Пример #5
0
    def SetSystem(self, system, execType, layer=0):
        if not isinstance(system, EntitySystem): raise TypeError
        system.SetWorld(self.world)
        self.systems[GetClass(system)] = system

        if execType == ExecutionType.DRAW or execType == ExecutionType.UPDATE:
            bag = self.layers[execType].setdefault(layer, [])
            if system not in bag:
                bag.append(system)

        if system not in self.mergedBag:
            self.mergedBag.append(system)
        system.SetSystemBit(SystemBitManager.GetBitFor(system))

        return system
Пример #6
0
 def GetManager(self, manager):
     return self.managers.get(GetClass(manager))
Пример #7
0
 def SetManager(self, manager):
     self.managers[GetClass(manager)] = manager