Exemplo n.º 1
0
def loop():
    global _state, _last_time, _last_time2

    #Game initialization
    if _state == 0:
        _state = 1
        logic.setMaxLogicFrame(1)
        module.scene_gui_behavior.scene = module.scene_gui
        for o in module.scene_gui.objects:
            module.scene_gui_behavior.objects[o.name] = o
        module.scene_gui_behavior.init()
        for b in module.scene_gui_behavior.behaviors:
            b.init()
        media.device.volume = float(utils.loadGameProperty("volume"))
        module._arecallbacks = False
        if utils.checkVersion() == False:
            utils.debug(
                "Atention! BGE version is outdated, please install last Blender release."
            )

    if module._arecallbacks == True: return

    #GUI Behavior
    if module.scene_gui_behavior.paused == False:
        module.scene_gui_behavior.update()
    for b in module.scene_gui_behavior.behaviors:
        if b.paused == False: b.update()

    #Key events
    listen_list = [
        x for x in module.listen_input_list
        if x._immuse_keyboard == True and x.scene == module.scene_gui
    ]
    for x in module.listen_input_list:
        x._immuse_keyboard = x.use_keyboard
    event._key_event_loop(listen_list)
    event.first_time_in_frame = True
    event.last_keyevents = event.last_butstillthisframe_keyevents

    #Frequency callbacks
    for v in module.video_playback_list:
        v.updateVideo()

    done = time.time()
    if (done - _last_time) >= module.LOW_FREQUENCY_TICK:
        dtime = done - _last_time
        _last_time = done
        for call in module.low_frequency_callbacks:
            call(dtime)

    if (done - _last_time2) >= module.HEIGHT_FREQUENCY_TICK:
        dtime = done - _last_time2
        _last_time2 = done
        for call in module.height_frequency_callbacks:
            call(dtime)
Exemplo n.º 2
0
def loop():
	global _state, _last_time, _last_time2

	#Game initialization
	if _state == 0:
		_state = 1
		logic.setMaxLogicFrame(1)
		module.scene_gui_behavior.scene = module.scene_gui
		for o in module.scene_gui.objects: module.scene_gui_behavior.objects[o.name] = o
		module.scene_gui_behavior.init()
		for b in module.scene_gui_behavior.behaviors: b.init()
		media.device.volume = float(utils.loadGameProperty("volume"))
		module._arecallbacks = False
		if utils.checkVersion() == False: utils.debug("Atention! BGE version is outdated, please install last Blender release.")

	if module._arecallbacks == True: return

	#GUI Behavior
	if module.scene_gui_behavior.paused == False: module.scene_gui_behavior.update()
	for b in module.scene_gui_behavior.behaviors:
		if b.paused == False: b.update()

	#Key events
	listen_list = [x for x in module.listen_input_list if x._immuse_keyboard == True and x.scene == module.scene_gui]
	for x in module.listen_input_list: x._immuse_keyboard = x.use_keyboard
	event._key_event_loop(listen_list)
	event.first_time_in_frame = True
	event.last_keyevents = event.last_butstillthisframe_keyevents

	#Frequency callbacks
	for v in module.video_playback_list: v.updateVideo()

	done = time.time()
	if (done - _last_time) >= module.LOW_FREQUENCY_TICK:
		dtime = done - _last_time
		_last_time = done
		for call in module.low_frequency_callbacks:
			call(dtime)

	if (done - _last_time2) >= module.HEIGHT_FREQUENCY_TICK:
		dtime = done - _last_time2
		_last_time2 = done
		for call in module.height_frequency_callbacks:
			call(dtime)
Exemplo n.º 3
0
def secondary_loop():
    global _last_traceback, _fatal_error

    #It takes 0.6ms when with the editor. (Without tile replacing)
    try:
        if _fatal_error: return

        #Set scene
        if module.change_scene_frame == True:
            if module.change_scene_dynamic == True:
                dynamic.loadScene(None, None)
            else:
                utils.setScene(None)
            return

        else:
            if module.scene_behavior.paused == False:
                module.scene_behavior.update()
                module.scene_behavior.baseUpdate()
            if not module.scene_behavior: return  #When removing the scene
            for b in module.scene_behavior.behaviors:
                if b.paused == False: b.update()
                if not module.scene_behavior: return  #When removing the scene
    except:
        if not module.scene_behavior: return
        module.scene_behavior.paused = True
        s = traceback.format_exc()
        if s != _last_traceback:
            utils.debug("Error during runtime. Scene behavior suspended!")
            print(s)
            _fatal_error = True
        _last_traceback = s

    #It takes about 0.3ms (As much as the main loop)
    listen_list = [
        x for x in module.listen_input_list
        if x._immuse_keyboard == True and x.scene == module.scene_game
    ]
    for x in module.listen_input_list:
        x._immuse_keyboard = x.use_keyboard
    event._key_event_loop(listen_list)
    module.window.secondary_update()
Exemplo n.º 4
0
def secondary_loop():
	global _last_traceback, _fatal_error

	#It takes 0.6ms when with the editor. (Without tile replacing)
	try:
		if _fatal_error: return
		
		#Set scene
		if module.change_scene_frame == True:
			if module.change_scene_dynamic == True: dynamic.loadScene(None, None)
			else: utils.setScene(None)
			return
		
		else:
			if module.scene_behavior.paused == False:
				module.scene_behavior.update()
				module.scene_behavior.baseUpdate()
			if not module.scene_behavior: return #When removing the scene
			for b in module.scene_behavior.behaviors:
				if b.paused == False: b.update()
				if not module.scene_behavior: return #When removing the scene
	except:
		if not module.scene_behavior: return
		module.scene_behavior.paused = True
		s = traceback.format_exc()
		if s != _last_traceback:
			utils.debug("Error during runtime. Scene behavior suspended!")
			print(s)
			_fatal_error = True
		_last_traceback = s

	#It takes about 0.3ms (As much as the main loop)
	listen_list = [x for x in module.listen_input_list if x._immuse_keyboard == True and x.scene == module.scene_game]
	for x in module.listen_input_list: x._immuse_keyboard = x.use_keyboard
	event._key_event_loop(listen_list)
	module.window.secondary_update()