forked from bartvdbraak/blender
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.
This commit is contained in:
parent
091f70e92d
commit
7135edb75d
@ -282,6 +282,52 @@ class DATA_PT_uv_texture(DataButtonsPanel):
|
|||||||
if lay:
|
if lay:
|
||||||
layout.prop(lay, "name")
|
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):
|
class DATA_PT_vertex_colors(DataButtonsPanel):
|
||||||
bl_label = "Vertex Colors"
|
bl_label = "Vertex Colors"
|
||||||
@ -315,6 +361,7 @@ classes = [
|
|||||||
DATA_PT_vertex_groups,
|
DATA_PT_vertex_groups,
|
||||||
DATA_PT_shape_keys,
|
DATA_PT_shape_keys,
|
||||||
DATA_PT_uv_texture,
|
DATA_PT_uv_texture,
|
||||||
|
DATA_PT_texface,
|
||||||
DATA_PT_vertex_colors,
|
DATA_PT_vertex_colors,
|
||||||
|
|
||||||
DATA_PT_custom_props_mesh]
|
DATA_PT_custom_props_mesh]
|
||||||
|
@ -46,6 +46,8 @@
|
|||||||
#include "BKE_mesh.h"
|
#include "BKE_mesh.h"
|
||||||
#include "BKE_utildefines.h"
|
#include "BKE_utildefines.h"
|
||||||
|
|
||||||
|
#include "ED_mesh.h" /* XXX Bad level call */
|
||||||
|
|
||||||
#include "WM_api.h"
|
#include "WM_api.h"
|
||||||
#include "WM_types.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);
|
*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)
|
static void rna_MeshTextureFace_uv1_get(PointerRNA *ptr, float *values)
|
||||||
{
|
{
|
||||||
MTFace *mtface= (MTFace*)ptr->data;
|
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);
|
prop= RNA_def_property(srna, "active", PROP_INT, PROP_NONE);
|
||||||
RNA_def_property_int_sdna(prop, NULL, "act_face");
|
RNA_def_property_int_sdna(prop, NULL, "act_face");
|
||||||
RNA_def_property_ui_text(prop, "Active Face", "The active face for this mesh");
|
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");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -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 ED_space_image_size(struct SpaceImage *sima, int *width, int *height){}
|
||||||
|
|
||||||
void EM_selectmode_set(struct EditMesh *em){}
|
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 make_editMesh(struct Scene *scene, struct Object *ob){}
|
||||||
void load_editMesh(struct Scene *scene, struct Object *ob){}
|
void load_editMesh(struct Scene *scene, struct Object *ob){}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user