diff --git a/modules/core/kivent_core/managers/system_manager.pyx b/modules/core/kivent_core/managers/system_manager.pyx index f177dedc..48da956b 100644 --- a/modules/core/kivent_core/managers/system_manager.pyx +++ b/modules/core/kivent_core/managers/system_manager.pyx @@ -1,4 +1,6 @@ # cython: embedsignature=True +from kivy.logger import Logger + from kivent_core.managers.game_manager cimport GameManager ''' GameWorld uses these system management classes to keep track of the GameSystems @@ -160,7 +162,10 @@ cdef class SystemManager(GameManager): ''' def __getitem__(self, str name): - return self.systems[self.get_system_index(name)] + try: + return self.systems[self.get_system_index(name)] + except IndexError: + raise KeyError(name) property update_order: def __get__(self): diff --git a/modules/core/kivent_core/systems/staticmemgamesystem.pyx b/modules/core/kivent_core/systems/staticmemgamesystem.pyx index f7f8f590..7ca2055a 100644 --- a/modules/core/kivent_core/systems/staticmemgamesystem.pyx +++ b/modules/core/kivent_core/systems/staticmemgamesystem.pyx @@ -601,8 +601,13 @@ cdef class ComponentPointerAggregator: for i, system_name in enumerate(self.system_names): pointer_loc = adjusted_index + i system_index = system_manager.get_system_index(system_name) - component_index = entity[system_index+1] - system = systems[system_index] - memory_zone = system.imz_components.memory_zone - data[pointer_loc] = memory_zone.get_pointer(component_index) + if system_index == (-1): + raise KeyError(system_name) + try: + component_index = entity[system_index+1] + system = systems[system_index] + memory_zone = system.imz_components.memory_zone + data[pointer_loc] = memory_zone.get_pointer(component_index) + except IndexError, e: + raise KeyError("missing key=%s raised %s"%(system_name, e)) return block_index