def save_game_remove_logic(self): bpy.ops.wm.addon_enable(module="game_engine_save_as_runtime") bpy.context.screen.scene = self.main_scene bpy.ops.wm.save_as_runtime( filepath=blender_utils.get_directory('blender') + '/annotation scenes/' + bpy.path.basename(bpy.context.blend_data.filepath).replace( ".blend", "-" + self.suffix + ".blend")) directory = blender_utils.get_directory('bpy') blender_utils.run_bpy_script(directory, "remove_all_logic.py")
def prepare_scene(): bpy_scripts_directory = blender_utils.get_directory('bpy') edits_scripts_directory = blender_utils.get_directory('edits') blender_utils.link_scripts(bpy_scripts_directory) blender_utils.link_scripts(edits_scripts_directory) #blender_utils.run_bpy_script(directory,"edit_physics.py") blender_utils.run_bpy_script(bpy_scripts_directory, "edit_rendering_and_settings.py") blender_utils.run_bpy_script(bpy_scripts_directory, "create_highlights.py") blender_utils.run_bpy_script(bpy_scripts_directory, "remove_all_logic.py")
def add_logic(self): rigid_body_list = blender_utils.create_list_rigid_bodies() ### Start by clearing all logic from scene directory = blender_utils.get_directory('bpy') blender_utils.run_bpy_script(directory, "remove_all_logic.py") ### Start by deselecting all objects bpy.ops.object.select_all(action='DESELECT') self.add_general_logic(rigid_body_list) self.add_main_empty_logic() self.add_camera_navigation_logic()
def add_general_logic(self, object_list): ### Link scripts bge_scripts_directory = blender_utils.get_directory('bge') bgui_scripts_directory = blender_utils.get_directory('bgui') blender_utils.link_scripts(bge_scripts_directory) blender_utils.link_scripts(bgui_scripts_directory) bpy_scripts_directory = blender_utils.get_directory('bpy') edits_scripts_directory = blender_utils.get_directory('edits') blender_utils.link_scripts(bpy_scripts_directory) blender_utils.link_scripts(edits_scripts_directory) ###### EMPTY ### Add empty object if there isn't one bpy.context.screen.scene = self.main_scene if "Empty" not in self.main_scene.objects: bpy.ops.object.empty_add( type='PLAIN_AXES', view_align=False, location=(0, 0, 0), layers=(True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False)) bpy.context.active_object.name = "Empty" print( "Empty object was missing from main scene and has been added") ### Select empty object empty = self.main_scene.objects["Empty"] empty.select = True bpy.context.scene.objects.active = empty ### Clear empty game properties while len(empty.game.properties) != 0: bpy.ops.object.game_property_remove(index=0) ### Add game properties bpy.ops.object.game_property_new( type="BOOL", name=self.name) # This should be added in the first position bpy.ops.object.game_property_new( type="BOOL", name=self.suffix ) #This allows the game to know which task we are doing. bpy.ops.object.game_property_new(type="TIMER", name='game_time') bpy.ops.object.game_property_new(type="BOOL", name=bpy.path.basename( bpy.context.blend_data.filepath)) # Add general sensors bpy.ops.logic.sensor_add(type="ALWAYS", name="Always", object=empty.name) empty.game.sensors["Always"].use_pulse_true_level = True bpy.ops.logic.sensor_add(type="ALWAYS", name="AlwaysStartup", object=empty.name) # bpy.ops.logic.sensor_add(type="MESSAGE",name="start",object=obj.name) bpy.ops.logic.sensor_add(type="MESSAGE", name="deselect", object=empty.name) empty.game.sensors["deselect"].subject = "deselect" bpy.ops.logic.sensor_add(type="MESSAGE", name="change", object=empty.name) empty.game.sensors["change"].subject = "change" bpy.ops.logic.sensor_add(type="MESSAGE", name="changepreposition", object=empty.name) empty.game.sensors["changepreposition"].subject = "changepreposition" bpy.ops.logic.sensor_add(type="KEYBOARD", name="textinputkeyboard", object=empty.name) empty.game.sensors["textinputkeyboard"].use_all_keys = True bpy.ops.logic.sensor_add(type="MOUSE", name="leftClick", object=empty.name) empty.game.sensors["leftClick"].use_tap = True empty.game.sensors["leftClick"].mouse_event = "LEFTCLICK" bpy.ops.logic.sensor_add(type="MOUSE", name="rightClick", object=empty.name) empty.game.sensors["rightClick"].use_tap = True empty.game.sensors["rightClick"].mouse_event = "RIGHTCLICK" bpy.ops.logic.sensor_add(type="MOUSE", name="hoverAny", object=empty.name) empty.game.sensors["hoverAny"].mouse_event = "MOUSEOVERANY" bpy.ops.logic.controller_add(type="PYTHON", name="ObjectController", object=empty.name) empty.game.sensors["leftClick"].link( empty.game.controllers["ObjectController"]) empty.game.sensors["rightClick"].link( empty.game.controllers["ObjectController"]) empty.game.sensors["hoverAny"].link( empty.game.controllers["ObjectController"]) empty.game.sensors["deselect"].link( empty.game.controllers["ObjectController"]) empty.game.controllers["ObjectController"].text = bpy.data.texts[ "object_controller.py"] bpy.ops.logic.controller_add(type="PYTHON", name="startUp", object=empty.name) empty.game.controllers["startUp"].text = bpy.data.texts[ "on-startup.py"] empty.game.controllers["startUp"].use_priority = True empty.game.sensors["AlwaysStartup"].link( empty.game.controllers["startUp"]) bpy.ops.logic.controller_add(type="PYTHON", name="textui", object=empty.name) empty.game.controllers["textui"].text = bpy.data.texts[ "textui_and_output.py"] empty.game.sensors["Always"].link(empty.game.controllers["textui"]) empty.game.sensors["deselect"].link(empty.game.controllers["textui"]) empty.game.sensors["textinputkeyboard"].link( empty.game.controllers["textui"]) empty.game.sensors["changepreposition"].link( empty.game.controllers["textui"]) bpy.ops.logic.actuator_add(type="GAME", name="END_GAME", object=empty.name) empty.game.actuators['END_GAME'].mode = 'QUIT' empty.game.actuators['END_GAME'].link(empty.game.controllers['textui']) ### OBJECTS for obj in object_list: bpy.ops.object.select_all(action='DESELECT') obj.select = True bpy.context.scene.objects.active = obj while len(obj.game.properties) != 0: bpy.ops.object.game_property_remove(index=0) if "used" not in obj.game.properties: bpy.ops.object.game_property_new(type="BOOL", name="selectedfigure") bpy.ops.object.game_property_new(type="BOOL", name="selectedground") bpy.ops.object.game_property_new(type="BOOL", name="highlight") bpy.ops.object.game_property_new(type="BOOL", name="used")