[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3052] contrib/py/scripts/addons/ io_export_marmalade.py: Apply modifications following the code review

Benoit Muller benoit.muller at laposte.net
Sat Mar 3 02:20:17 CET 2012


Revision: 3052
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3052
Author:   benoitmuller
Date:     2012-03-03 01:20:11 +0000 (Sat, 03 Mar 2012)
Log Message:
-----------
Apply modifications following the code review

Modified Paths:
--------------
    contrib/py/scripts/addons/io_export_marmalade.py

Modified: contrib/py/scripts/addons/io_export_marmalade.py
===================================================================
--- contrib/py/scripts/addons/io_export_marmalade.py	2012-03-02 19:56:23 UTC (rev 3051)
+++ contrib/py/scripts/addons/io_export_marmalade.py	2012-03-03 01:20:11 UTC (rev 3052)
@@ -22,7 +22,7 @@
 bl_info = {
     "name": "Marmalade Cross-platform Apps (.group)",
     "author": "Benoit Muller",
-    "version": (0, 5, 0),
+    "version": (0, 5, 1),
     "blender": (2, 6, 0),
     "api": 37702,
     "location": "File > Export > Marmalade cross-platform Apps (.group)",
@@ -149,8 +149,11 @@
     if Config.ExportAnimation:
         if Config.Verbose:
             print("Writing Animation...")
-        WriteKeyedAnimationSet(Config)
-        bpy.context.scene.frame_current = CurrentFrame
+        if bpy.context.scene:
+            WriteKeyedAnimationSet(Config, bpy.context.scene)
+            bpy.context.scene.frame_current = CurrentFrame
+        elif Config.Verbose:
+            print("bpy.context.scene is null: cannot export animation...")
         if Config.Verbose:
             print("Done")
     Config.File.write("}\n")
@@ -284,11 +287,8 @@
             else:
                 # In Merge mode, we need to keep relative postion of each objects, so we export in WORLD SPACE
                 SCALE_MAT = mathutils.Matrix.Scale(Config.Scale, 4)
-                Mesh.transform(Object.matrix_world)
-                Mesh.transform(SCALE_MAT)
+                Mesh.transform(Object.matrix_world * SCALE_MAT * X_ROT)
 
-                Mesh.transform(X_ROT)
-
              # manage merge options
    
             if Config.MergeModes == 0:
@@ -461,6 +461,7 @@
 #Store one Point of a Quad or Tri in marmalade geo format: //index-list is: { <int> <int> <int> <int> <int> }   //v,vn,uv0,uv1,vc
 #############                           
 class CGeoIndexList:
+    __slots__ = "v", "vn", "uv0", "uv1", "vc"
     
     def __init__(self, v, vn, uv0, uv1, vc):
         self.v = v
@@ -474,7 +475,8 @@
 #Store a Quad or a Tri in marmalade geo format : 3 or 4 CIndexList depending it is a Tri or a Quad
 #############                        
 class CGeoPoly:
-
+    __slots__ = "pointsList"
+    
     def __init__(self):
         self.pointsList = list()
 
@@ -495,9 +497,10 @@
 
 
 #############
-#Store all the poly (tri or quad) affected to a Material in marmalade geo format
+#Store all the poly (tri or quad) assigned to a Material in marmalade geo format
 #############                        
 class CGeoMaterialPolys:
+    __slots__ = "name", "material", "quadList", "triList", "currentPoly"
     
     def __init__(self, name, material=None):
         self.name = name
@@ -528,7 +531,7 @@
         geoFile.write("\t\tCSurface\n")
         geoFile.write("\t\t{\n")
         geoFile.write("\t\t\tmaterial \"%s\"\n" % self.name)
-        if len(self.triList) > 0:
+        if self.triList:
             geoFile.write("\t\t\tCTris\n")
             geoFile.write("\t\t\t{\n")
             geoFile.write("\t\t\t\tnumTris %d\n" % (len(self.triList)))
@@ -536,7 +539,7 @@
                 poly.PrintPoly(geoFile)
             geoFile.write("\t\t\t}\n")
 
-        if len(self.quadList) > 0:
+        if self.quadList:
             geoFile.write("\t\t\tCQuads\n")
             geoFile.write("\t\t\t{\n")
             geoFile.write("\t\t\t\tnumQuads %d\n" % (len(self.quadList)))
@@ -550,7 +553,10 @@
 #Store all the information on a Model/Mesh (vertices, normal, certcies color, uv0, uv1, TRI, QUAD) in marmalade geo format
 #############  
 class CGeoModel:
-
+    __slots__ = ("name", "MaterialsDict", "vList", "vnList", "vcList", "uv0List", "uv1List",
+                "currentMaterialPolys", "vbaseIndex","vnbaseIndex", "uv0baseIndex", "uv1baseIndex",
+                "armatureObjectName", "useBonesDict", "mapVertexGroupNames")
+                
     def __init__(self, name):
         self.name = name
         self.MaterialsDict = dict()
@@ -655,7 +661,7 @@
         geoFile.write("\t{\n")
         geoFile.write("\t\tname \"%s\"\n" % (StripName(self.name)))
 
-        if len(self.vList) > 0:
+        if self.vList:
             geoFile.write("\t\tCVerts\n")
             geoFile.write("\t\t{\n")
             geoFile.write("\t\t\tnumVerts %d\n" % len(self.vList))
@@ -663,7 +669,7 @@
                 geoFile.write("\t\t\tv { %.9f, %.9f, %.9f }\n" % (vertex[0], vertex[1], vertex[2]))                      
             geoFile.write("\t\t}\n")
 
-        if len(self.vnList) > 0:
+        if self.vnList:
             geoFile.write("\t\tCVertNorms\n")
             geoFile.write("\t\t{\n")
             geoFile.write("\t\t\tnumVertNorms  %d\n" % len(self.vnList))
@@ -671,7 +677,7 @@
                 geoFile.write("\t\t\tvn { %.9f, %.9f, %.9f }\n" % (vertexn[0], vertexn[1], vertexn[2]))                      
             geoFile.write("\t\t}\n")
 
-        if len(self.vcList) > 0:
+        if self.vcList:
             geoFile.write("\t\tCVertCols\n")
             geoFile.write("\t\t{\n")
             geoFile.write("\t\t\tnumVertCols %d\n" % len(self.vcList))
@@ -679,7 +685,7 @@
                 geoFile.write("\t\t\tcol { %.6f, %.6f, %.6f, %.6f }\n" % (color[0], color[1], color[2], color[3])) #alpha is not supported on blender for vertex colors           
             geoFile.write("\t\t}\n")
 
-        if len(self.uv0List) > 0:
+        if self.uv0List:
             geoFile.write("\t\tCUVs\n")
             geoFile.write("\t\t{\n")
             geoFile.write("\t\t\tsetID 0\n")
@@ -688,7 +694,7 @@
                  geoFile.write("\t\t\tuv { %.9f, %.9f }\n" % (uv[0], uv[1]))                       
             geoFile.write("\t\t}\n")
 
-        if len(self.uv1List) > 0:
+        if self.uv1List:
             geoFile.write("\t\tCUVs\n")
             geoFile.write("\t\t{\n")
             geoFile.write("\t\t\tsetID 1\n")
@@ -702,16 +708,13 @@
         geoFile.write("\t}\n")
 
     def GetMaterialList(self):
-        matList = list()
-        for matName in self.MaterialsDict.keys():
-            matList.append(matName)
-        return matList
+        return list(self.MaterialsDict.keys())
 
     def GetMaterialByName(self, name):
         if name in self.MaterialsDict:
             return self.MaterialsDict[name].material
         else:
-            return none       
+            return None       
 
 
 
@@ -1041,7 +1044,8 @@
                                 uv1 = streamIndex
                                 uv2 = streamIndex+1
                                 uv3 = streamIndex+2
-                            geoFile.write("\t\t\t\tt {%d, %d, %d, -1, %d} {%d, %d, %d, -1, %d} {%d, %d, %d, -1, %d}\n" % (streamIndex, streamIndex, uv1, vc1, streamIndex+1, streamIndex+1, uv2, vc2, streamIndex+2, streamIndex+2, uv3, vc3))
+                            geoFile.write("\t\t\t\tt {%d, %d, %d, -1, %d} {%d, %d, %d, -1, %d} {%d, %d, %d, -1, %d}\n"
+                                          % (streamIndex, streamIndex, uv1, vc1, streamIndex+1, streamIndex+1, uv2, vc2, streamIndex+2, streamIndex+2, uv3, vc3))
                             streamIndex = streamIndex + 3
                 geoFile.write("\t\t\t}\n")
             #Write the Quad for this material, if any
@@ -1064,7 +1068,9 @@
                                 uv2 = streamIndex + 1
                                 uv3 = streamIndex + 2
                                 uv4 = streamIndex + 3
-                            geoFile.write("\t\t\t\tq {%d, %d, %d, -1, %d} {%d, %d, %d, -1, %d} {%d, %d, %d, -1, %d} {%d, %d, %d, -1, %d}\n" % (streamIndex, streamIndex, uv1, vc1, streamIndex+1, streamIndex+1, uv2, vc2, streamIndex+2, streamIndex+2, uv3, vc3, streamIndex+3, streamIndex+3, uv4, vc4))
+                            geoFile.write("\t\t\t\tq {%d, %d, %d, -1, %d} {%d, %d, %d, -1, %d} {%d, %d, %d, -1, %d} {%d, %d, %d, -1, %d}\n"
+                                          % (streamIndex, streamIndex, uv1, vc1, streamIndex+1, streamIndex+1, uv2, vc2,
+                                             streamIndex+2, streamIndex+2, uv3, vc3, streamIndex+3, streamIndex+3, uv4, vc4))
                             streamIndex = streamIndex + 4
                 geoFile.write("\t\t\t}\n")
 
@@ -1094,11 +1100,11 @@
             MatAmbientColor = Material.ambient * Material.diffuse_color
             mtlFile.write("\tcolAmbient {%.2f,%.2f,%.2f,%.2f} \n" % (MatAmbientColor[0] * 255, MatAmbientColor[1] * 255, MatAmbientColor[2] * 255, Material.alpha * 255))
             MatDiffuseColor = Material.diffuse_intensity * Material.diffuse_color
-            mtlFile.write("\tcolDiffuse  {%.2f,%.2f,%.2f} \n" % (MatDiffuseColor[0] * 255, MatDiffuseColor[1] * 255, MatDiffuseColor[2] * 255))
+            mtlFile.write("\tcolDiffuse  {%.2f,%.2f,%.2f} \n" % (MatDiffuseColor * 255)[:])
             MatSpecularColor = Material.specular_intensity * Material.specular_color
-            mtlFile.write("\tcolSpecular  {%.2f,%.2f,%.2f} \n" % (MatSpecularColor[0] * 255, MatSpecularColor[1] * 255, MatSpecularColor[2] * 255))
+            mtlFile.write("\tcolSpecular  {%.2f,%.2f,%.2f} \n" % (MatSpecularColor * 255)[:])
             # EmitColor = Material.emit * Material.diffuse_color
-            # mtlFile.write("\tcolEmissive {%.2f,%.2f,%.2f} \n" % (EmitColor[0] * 255, EmitColor[1] * 255, EmitColor[2] * 255))
+            # mtlFile.write("\tcolEmissive {%.2f,%.2f,%.2f} \n" % (EmitColor* 255)[:])
 
             
     else:
@@ -1366,7 +1372,7 @@
         File.write("\t}\n")
 
       
-def WriteKeyedAnimationSet(Config):  
+def WriteKeyedAnimationSet(Config, Scene):  
     for Object in [Object for Object in Config.ObjectList if Object.animation_data]:
         if Config.Verbose:
             print("  Writing Animation Data for Object: {}".format(Object.name))
@@ -1379,22 +1385,22 @@
                 # Exports only key frames
                 for FCurve in Action.fcurves:
                     for Keyframe in FCurve.keyframe_points:
-                        if Keyframe.co[0] < bpy.context.scene.frame_start:
-                            keyframeTimes.add(bpy.context.scene.frame_start)
-                        elif Keyframe.co[0] > bpy.context.scene.frame_end:
-                            keyframeTimes.add(bpy.context.scene.frame_end)
+                        if Keyframe.co[0] < Scene.frame_start:
+                            keyframeTimes.add(Scene.frame_start)

@@ Diff output truncated at 10240 characters. @@


More information about the Bf-extensions-cvs mailing list