From 7135edb75daca55f0ab5e3b601fd73d486c9d060 Mon Sep 17 00:00:00 2001 From: Dalai Felinto Date: Mon, 12 Apr 2010 03:06:49 +0000 Subject: [PATCH] BGE: TexFace panel (from patch #21780 from Mitchell Stokes + some changes) the patch exposes a rna property to get the active edit mode face. This is a hack. However it's a small patch (a.k.a. easy to revert later if needed). The official plan is to wait for BMesh before tackling it properly. Nevertheless TexFace panel is really important for BGE. Missing: operators to copy the current parameters to other selected faces. * note: what I changed from the original patch is the UI script. The pool wasn't defined and it was using tabs. --- release/scripts/ui/properties_data_mesh.py | 47 +++++++++++++++++++ source/blender/makesrna/intern/rna_mesh.c | 24 ++++++++++ .../bad_level_call_stubs/stubs.c | 2 + 3 files changed, 73 insertions(+) diff --git a/release/scripts/ui/properties_data_mesh.py b/release/scripts/ui/properties_data_mesh.py index d48d2ec8046..0c14a040f2a 100644 --- a/release/scripts/ui/properties_data_mesh.py +++ b/release/scripts/ui/properties_data_mesh.py @@ -281,6 +281,52 @@ class DATA_PT_uv_texture(DataButtonsPanel): lay = me.active_uv_texture if lay: layout.prop(lay, "name") + +class DATA_PT_texface(DataButtonsPanel): + bl_label = "Texture Face" + + def poll(self, context): + ob = context.active_object + rd = context.scene.render + + return (context.mode =='EDIT_MESH') and (rd.engine == 'BLENDER_GAME') \ + and ob and ob.type in ('MESH') + + def draw(self, context): + layout = self.layout + col = layout.column() + + wide_ui = context.region.width > narrowui + me = context.mesh + + tf = me.faces.active_tface + + if tf: + split = layout.split() + col = split.column() + + col.prop(tf, "tex") + col.prop(tf, "light") + col.prop(tf, "invisible") + col.prop(tf, "collision") + + col.prop(tf, "shared") + col.prop(tf, "twoside") + col.prop(tf, "object_color") + + if wide_ui: + col = split.column() + + col.prop(tf, "halo") + col.prop(tf, "billboard") + col.prop(tf, "shadow") + col.prop(tf, "text") + col.prop(tf, "alpha_sort") + + col = layout.column() + col.prop(tf, "transp") + else: + col.label(text="No UV Texture") class DATA_PT_vertex_colors(DataButtonsPanel): @@ -315,6 +361,7 @@ classes = [ DATA_PT_vertex_groups, DATA_PT_shape_keys, DATA_PT_uv_texture, + DATA_PT_texface, DATA_PT_vertex_colors, DATA_PT_custom_props_mesh] diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c index ce8001c8ecd..0c137504fe0 100644 --- a/source/blender/makesrna/intern/rna_mesh.c +++ b/source/blender/makesrna/intern/rna_mesh.c @@ -46,6 +46,8 @@ #include "BKE_mesh.h" #include "BKE_utildefines.h" +#include "ED_mesh.h" /* XXX Bad level call */ + #include "WM_api.h" #include "WM_types.h" @@ -458,6 +460,22 @@ static void rna_Mesh_active_uv_texture_index_range(PointerRNA *ptr, int *min, in *max= MAX2(0, *max); } +static PointerRNA rna_Mesh_active_mtface_get(PointerRNA *ptr) +{ + Mesh *me= (Mesh*)ptr->data; + EditMesh *em= BKE_mesh_get_editmesh(me); + MTFace *tf; + + if (em && EM_texFaceCheck(em)) + { + tf = EM_get_active_mtface(em, NULL, NULL, 1); + + return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFace, tf); + } + + return rna_pointer_inherit_refine(ptr, &RNA_MeshTextureFace, NULL); +} + static void rna_MeshTextureFace_uv1_get(PointerRNA *ptr, float *values) { MTFace *mtface= (MTFace*)ptr->data; @@ -1599,6 +1617,12 @@ static void rna_def_mesh_faces(BlenderRNA *brna, PropertyRNA *cprop) prop= RNA_def_property(srna, "active", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, NULL, "act_face"); RNA_def_property_ui_text(prop, "Active Face", "The active face for this mesh"); + + prop= RNA_def_property(srna, "active_tface", PROP_POINTER, PROP_UNSIGNED); + RNA_def_property_struct_type(prop, "MeshTextureFace"); + RNA_def_property_pointer_funcs(prop, "rna_Mesh_active_mtface_get", NULL, NULL); + RNA_def_property_ui_text(prop, "Active Texture Face", "Active Texture Face"); + RNA_def_property_update(prop, 0, "rna_Mesh_update_data"); } diff --git a/source/blenderplayer/bad_level_call_stubs/stubs.c b/source/blenderplayer/bad_level_call_stubs/stubs.c index 86d32118872..be04875ef8f 100644 --- a/source/blenderplayer/bad_level_call_stubs/stubs.c +++ b/source/blenderplayer/bad_level_call_stubs/stubs.c @@ -248,6 +248,8 @@ float ED_rollBoneToVector(struct EditBone *bone, float new_up_axis[3]){return 0. void ED_space_image_size(struct SpaceImage *sima, int *width, int *height){} void EM_selectmode_set(struct EditMesh *em){} +int EM_texFaceCheck(struct EditMesh *em){return 0;} +struct MTFace *EM_get_active_mtface(struct EditMesh *em, struct EditFace **act_efa, struct MCol **mcol, int sloopy){return (struct MTFace *)NULL;} void make_editMesh(struct Scene *scene, struct Object *ob){} void load_editMesh(struct Scene *scene, struct Object *ob){}