Made the remaining UV py scripts work with editmesh now.

DrawShadow option didnt check the final derived mesh had CD_MTFACE's can would crash when enabled with mirror modifier.
This commit is contained in:
Campbell Barton 2007-09-24 09:40:09 +00:00
parent adef239fc0
commit 1fde6d4570
3 changed files with 36 additions and 24 deletions

@ -183,12 +183,16 @@ def ExportCallback(f):
time1= Blender.sys.time() time1= Blender.sys.time()
if obj.type != "Mesh": if not obj or obj.type != "Mesh":
BPyMessages.Error_NoMeshActive() BPyMessages.Error_NoMeshActive()
return return
is_editmode = Blender.Window.EditMode()
if is_editmode: Blender.Window.EditMode(0)
mesh = obj.getData(mesh=1) mesh = obj.getData(mesh=1)
if not mesh.faceUV: if not mesh.faceUV:
if is_editmode: Blender.Window.EditMode(1)
BPyMessages.Error_NoMeshUvActive() BPyMessages.Error_NoMeshUvActive()
return return
@ -207,6 +211,8 @@ def ExportCallback(f):
UVFaces = ExtractUVFaces(mesh, bAllFaces.val) UVFaces = ExtractUVFaces(mesh, bAllFaces.val)
if is_editmode: Blender.Window.EditMode(1)
if not bSVG.val: if not bSVG.val:
print "TGA export is running..." print "TGA export is running..."
UV_Export_TGA(UVFaces, bSize.val, bWSize.val, bWrap.val, name) UV_Export_TGA(UVFaces, bSize.val, bWSize.val, bWrap.val, name)

@ -37,7 +37,6 @@ def seams_from_islands(me):
# add seams # add seams
SEAM = Mesh.EdgeFlags.SEAM SEAM = Mesh.EdgeFlags.SEAM
for ed in me.edges: for ed in me.edges:
print len(set(edge_uvs[ed.key]))
if len(set(edge_uvs[ed.key])) > 1: if len(set(edge_uvs[ed.key])) > 1:
ed.flag |= SEAM ed.flag |= SEAM
@ -59,7 +58,7 @@ def main():
# editmode if its enabled, we cant make # editmode if its enabled, we cant make
# changes to the mesh data while in editmode. # changes to the mesh data while in editmode.
is_editmode = Window.EditMode() is_editmode = Window.EditMode()
if is_editmode: Window.EditMode(1) if is_editmode: Window.EditMode(0)
Window.WaitCursor(1) Window.WaitCursor(1)
@ -68,8 +67,10 @@ def main():
# Run the mesh editing function # Run the mesh editing function
seams_from_islands(me) seams_from_islands(me)
if is_editmode: Window.EditMode(1)
# Timing the script is a good way to be aware on any speed hits when scripting # Timing the script is a good way to be aware on any speed hits when scripting
print 'My Script finished in %.2f seconds' % (sys.time()-t) print 'UV Seams from Islands finished in %.2f seconds' % (sys.time()-t)
Window.WaitCursor(0) Window.WaitCursor(0)

@ -481,12 +481,16 @@ void draw_uvs_sima(void)
return; /* only draw shadow mesh */ return; /* only draw shadow mesh */
} else if (G.sima->flag & SI_DRAWSHADOW) { } else if (G.sima->flag & SI_DRAWSHADOW) {
/* draw shadow mesh - this is the mesh with the modifier applied */ /* draw shadow mesh - this is the mesh with the modifier applied */
DerivedMesh *finalDM, *cageDM;
glColor3ub(112, 112, 112); glColor3ub(112, 112, 112);
if (G.editMesh->derivedFinal && G.editMesh->derivedFinal->drawUVEdges) { if ( em->derivedFinal &&
em->derivedFinal->drawUVEdges &&
CustomData_has_layer(&em->derivedFinal->faceData, CD_MTFACE)
) {
/* we can use the existing final mesh */
glColor3ub(112, 112, 112);
G.editMesh->derivedFinal->drawUVEdges(G.editMesh->derivedFinal); G.editMesh->derivedFinal->drawUVEdges(G.editMesh->derivedFinal);
} } else {
DerivedMesh *finalDM, *cageDM;
/* draw final mesh with modifiers applied */ /* draw final mesh with modifiers applied */
cageDM = editmesh_get_derived_cage_and_final(&finalDM, CD_MASK_BAREMESH | CD_MASK_MTFACE); cageDM = editmesh_get_derived_cage_and_final(&finalDM, CD_MASK_BAREMESH | CD_MASK_MTFACE);
@ -505,6 +509,7 @@ void draw_uvs_sima(void)
cageDM->release(cageDM); cageDM->release(cageDM);
finalDM->release(finalDM); finalDM->release(finalDM);
} }
}
/* draw transparent faces */ /* draw transparent faces */
if(G.f & G_DRAWFACES) { if(G.f & G_DRAWFACES) {