Fixing bugs after Recast & Detour branch merge!!
* The new NAVMESH Modifier did not show any buttons, console printed errors instead! * Poll of "PHYSICS_PT_game_obstacles" panel caused errors as well, self instead of cls was used as argument. * Check to show/hide buttons in "WORLD_PT_game_physics_obstacles" panel did not worked due to wrong ENUM identifier ('None' instead if 'NONE') * Moved "SCENE_PT_navmesh" panel out of properties_scene.py into the properties_game.py where it belongs and renamed it. Also, don't use abreviations in Panel Headers (Navmesh > Navigaion Mesh) * Code cleanup, removed unnescecary code. * bpy.types.Panel > Panel
This commit is contained in:
@@ -380,12 +380,9 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel):
|
|||||||
col.prop(md, "mirror_object", text="")
|
col.prop(md, "mirror_object", text="")
|
||||||
|
|
||||||
def NAVMESH(self, layout, ob, md):
|
def NAVMESH(self, layout, ob, md):
|
||||||
split = layout.split()
|
row = layout.row()
|
||||||
if ob.mode == 'EDIT':
|
row.operator("object.assign_navpolygon", text="Assign poly idx")
|
||||||
col = split.column()
|
row.operator("object.assign_new_navpolygon", text="Assign new poly idx")
|
||||||
col.operator("object.assign_navpolygon", text="Assign poly idx")
|
|
||||||
col = split.column()
|
|
||||||
col.operator("object.assign_new_navpolygon", text="Assign new poly idx")
|
|
||||||
|
|
||||||
def MULTIRES(self, layout, ob, md):
|
def MULTIRES(self, layout, ob, md):
|
||||||
layout.row().prop(md, "subdivision_type", expand=True)
|
layout.row().prop(md, "subdivision_type", expand=True)
|
||||||
|
@@ -195,12 +195,12 @@ class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel, Panel):
|
|||||||
row.prop(game, "collision_margin", text="Margin", slider=True)
|
row.prop(game, "collision_margin", text="Margin", slider=True)
|
||||||
row.prop(game, "use_collision_compound", text="Compound")
|
row.prop(game, "use_collision_compound", text="Compound")
|
||||||
|
|
||||||
class PHYSICS_PT_game_obstacles(PhysicsButtonsPanel, bpy.types.Panel):
|
class PHYSICS_PT_game_obstacles(PhysicsButtonsPanel, Panel):
|
||||||
bl_label = "Create obstacle"
|
bl_label = "Create Obstacle"
|
||||||
COMPAT_ENGINES = {'BLENDER_GAME'}
|
COMPAT_ENGINES = {'BLENDER_GAME'}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def poll(self, context):
|
def poll(cls, context):
|
||||||
game = context.object.game
|
game = context.object.game
|
||||||
rd = context.scene.render
|
rd = context.scene.render
|
||||||
return (game.physics_type in ('DYNAMIC', 'RIGID_BODY', 'SENSOR', 'SOFT_BODY', 'STATIC')) and (rd.engine in cls.COMPAT_ENGINES)
|
return (game.physics_type in ('DYNAMIC', 'RIGID_BODY', 'SENSOR', 'SOFT_BODY', 'STATIC')) and (rd.engine in cls.COMPAT_ENGINES)
|
||||||
@@ -217,9 +217,9 @@ class PHYSICS_PT_game_obstacles(PhysicsButtonsPanel, bpy.types.Panel):
|
|||||||
|
|
||||||
layout.active = game.create_obstacle
|
layout.active = game.create_obstacle
|
||||||
|
|
||||||
split = layout.split()
|
row = layout.row()
|
||||||
col = split.column()
|
row.prop(game, "obstacle_radius", text="Radius")
|
||||||
col.prop(game, "obstacle_radius", text="Radius")
|
row.label()
|
||||||
|
|
||||||
class RenderButtonsPanel():
|
class RenderButtonsPanel():
|
||||||
bl_space_type = 'PROPERTIES'
|
bl_space_type = 'PROPERTIES'
|
||||||
@@ -388,6 +388,63 @@ class RENDER_PT_game_display(RenderButtonsPanel, Panel):
|
|||||||
flow.prop(gs, "use_deprecation_warnings")
|
flow.prop(gs, "use_deprecation_warnings")
|
||||||
flow.prop(gs, "show_mouse", text="Mouse Cursor")
|
flow.prop(gs, "show_mouse", text="Mouse Cursor")
|
||||||
|
|
||||||
|
class SceneButtonsPanel():
|
||||||
|
bl_space_type = 'PROPERTIES'
|
||||||
|
bl_region_type = 'WINDOW'
|
||||||
|
bl_context = "scene"
|
||||||
|
|
||||||
|
class SCENE_PT_game_navmesh(SceneButtonsPanel, bpy.types.Panel):
|
||||||
|
bl_label = "Navigation mesh"
|
||||||
|
bl_default_closed = True
|
||||||
|
COMPAT_ENGINES = {'BLENDER_GAME'}
|
||||||
|
|
||||||
|
def draw(self, context):
|
||||||
|
layout = self.layout
|
||||||
|
|
||||||
|
rd = context.scene.game_settings.recast_data
|
||||||
|
|
||||||
|
layout.operator("object.create_navmesh", text='Build navigation mesh')
|
||||||
|
|
||||||
|
col = layout.column()
|
||||||
|
col.label(text="Rasterization:")
|
||||||
|
row = col.row()
|
||||||
|
row.prop(rd, "cell_size")
|
||||||
|
row.prop(rd, "cell_height")
|
||||||
|
|
||||||
|
col = layout.column()
|
||||||
|
col.label(text="Agent:")
|
||||||
|
split = col.split()
|
||||||
|
|
||||||
|
col = split.column()
|
||||||
|
col.prop(rd, "agent_height", text="Height")
|
||||||
|
col.prop(rd, "agent_radius", text="Radius")
|
||||||
|
|
||||||
|
col = split.column()
|
||||||
|
col.prop(rd, "max_slope")
|
||||||
|
col.prop(rd, "max_climb")
|
||||||
|
|
||||||
|
col = layout.column()
|
||||||
|
col.label(text="Region:")
|
||||||
|
row = col.row()
|
||||||
|
row.prop(rd, "region_min_size")
|
||||||
|
row.prop(rd, "region_merge_size")
|
||||||
|
|
||||||
|
col = layout.column()
|
||||||
|
col.label(text="Polygonization:")
|
||||||
|
split = col.split()
|
||||||
|
|
||||||
|
col = split.column()
|
||||||
|
col.prop(rd, "edge_max_len")
|
||||||
|
col.prop(rd, "edge_max_error")
|
||||||
|
|
||||||
|
split.prop(rd, "verts_per_poly")
|
||||||
|
|
||||||
|
col = layout.column()
|
||||||
|
col.label(text="Detail Mesh:")
|
||||||
|
row = col.row()
|
||||||
|
row.prop(rd, "sample_dist")
|
||||||
|
row.prop(rd, "sample_max_error")
|
||||||
|
|
||||||
|
|
||||||
class WorldButtonsPanel():
|
class WorldButtonsPanel():
|
||||||
bl_space_type = 'PROPERTIES'
|
bl_space_type = 'PROPERTIES'
|
||||||
@@ -512,7 +569,7 @@ class WORLD_PT_game_physics(WorldButtonsPanel, Panel):
|
|||||||
col.label(text="Logic Steps:")
|
col.label(text="Logic Steps:")
|
||||||
col.prop(gs, "logic_step_max", text="Max")
|
col.prop(gs, "logic_step_max", text="Max")
|
||||||
|
|
||||||
class WORLD_PT_game_physics_obstacles(WorldButtonsPanel, bpy.types.Panel):
|
class WORLD_PT_game_physics_obstacles(WorldButtonsPanel, Panel):
|
||||||
bl_label = "Obstacle simulation"
|
bl_label = "Obstacle simulation"
|
||||||
COMPAT_ENGINES = {'BLENDER_GAME'}
|
COMPAT_ENGINES = {'BLENDER_GAME'}
|
||||||
|
|
||||||
@@ -522,7 +579,7 @@ class WORLD_PT_game_physics_obstacles(WorldButtonsPanel, bpy.types.Panel):
|
|||||||
gs = context.scene.game_settings
|
gs = context.scene.game_settings
|
||||||
|
|
||||||
layout.prop(gs, "obstacle_simulation", text = "Type")
|
layout.prop(gs, "obstacle_simulation", text = "Type")
|
||||||
if gs.obstacle_simulation != 'None':
|
if gs.obstacle_simulation != 'NONE':
|
||||||
layout.prop(gs, "level_height")
|
layout.prop(gs, "level_height")
|
||||||
layout.prop(gs, "show_obstacle_simulation")
|
layout.prop(gs, "show_obstacle_simulation")
|
||||||
|
|
||||||
|
@@ -331,76 +331,5 @@ class ANIM_OT_keying_set_export(Operator):
|
|||||||
wm.fileselect_add(self)
|
wm.fileselect_add(self)
|
||||||
return {'RUNNING_MODAL'}
|
return {'RUNNING_MODAL'}
|
||||||
|
|
||||||
class SCENE_PT_navmesh(SceneButtonsPanel, bpy.types.Panel):
|
|
||||||
bl_label = "Navmesh"
|
|
||||||
bl_default_closed = True
|
|
||||||
COMPAT_ENGINES = {'BLENDER_GAME'}
|
|
||||||
|
|
||||||
def draw(self, context):
|
|
||||||
layout = self.layout
|
|
||||||
|
|
||||||
rd = context.scene.game_settings.recast_data
|
|
||||||
|
|
||||||
layout.operator("object.create_navmesh", text='Build navigation mesh')
|
|
||||||
|
|
||||||
layout.label(text="Rasterization:")
|
|
||||||
split = layout.split()
|
|
||||||
|
|
||||||
col = split.column()
|
|
||||||
col.prop(rd, "cell_size")
|
|
||||||
col = split.column()
|
|
||||||
col.prop(rd, "cell_height")
|
|
||||||
|
|
||||||
layout.separator()
|
|
||||||
|
|
||||||
layout.label(text="Agent:")
|
|
||||||
split = layout.split()
|
|
||||||
|
|
||||||
col = split.column()
|
|
||||||
row = col.row()
|
|
||||||
row.prop(rd, "agent_height")
|
|
||||||
row = col.row()
|
|
||||||
row.prop(rd, "agent_radius")
|
|
||||||
|
|
||||||
col = split.column()
|
|
||||||
row = col.row()
|
|
||||||
row.prop(rd, "max_slope")
|
|
||||||
row = col.row()
|
|
||||||
row.prop(rd, "max_climb")
|
|
||||||
|
|
||||||
layout.separator()
|
|
||||||
|
|
||||||
layout.label(text="Region:")
|
|
||||||
split = layout.split()
|
|
||||||
col = split.column()
|
|
||||||
col.prop(rd, "region_min_size")
|
|
||||||
|
|
||||||
col = split.column()
|
|
||||||
col.prop(rd, "region_merge_size")
|
|
||||||
|
|
||||||
layout.separator()
|
|
||||||
|
|
||||||
layout.label(text="Polygonization:")
|
|
||||||
split = layout.split()
|
|
||||||
col = split.column()
|
|
||||||
row = col.row()
|
|
||||||
row.prop(rd, "edge_max_len")
|
|
||||||
row = col.row()
|
|
||||||
row.prop(rd, "edge_max_error")
|
|
||||||
|
|
||||||
col = split.column()
|
|
||||||
row = col.row()
|
|
||||||
row.prop(rd, "verts_per_poly")
|
|
||||||
|
|
||||||
layout.separator()
|
|
||||||
|
|
||||||
layout.label(text="Detail Mesh:")
|
|
||||||
split = layout.split()
|
|
||||||
col = split.column()
|
|
||||||
col.prop(rd, "sample_dist")
|
|
||||||
|
|
||||||
col = split.column()
|
|
||||||
col.prop(rd, "sample_max_error")
|
|
||||||
|
|
||||||
if __name__ == "__main__": # only for live edit.
|
if __name__ == "__main__": # only for live edit.
|
||||||
bpy.utils.register_module(__name__)
|
bpy.utils.register_module(__name__)
|
||||||
|
Reference in New Issue
Block a user