Merge trunk up to revision 40611
authorSergey Sharybin <sergey.vfx@gmail.com>
Tue, 27 Sep 2011 13:21:45 +0000 (13:21 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Tue, 27 Sep 2011 13:21:45 +0000 (13:21 +0000)
13 files changed:
intern/ghost/CMakeLists.txt
source/blender/blenkernel/CMakeLists.txt
source/blender/blenkernel/intern/BME_structure.c
source/blender/blenkernel/intern/BME_tools.c
source/blender/blenkernel/intern/scene.c
source/blender/blenlib/BLI_callbacks.h
source/blender/editors/interface/interface_templates.c
source/blender/editors/space_view3d/view3d_buttons.c
source/blender/editors/space_view3d/view3d_view.c
source/blender/makesrna/intern/rna_space.c
source/blender/python/intern/bpy_app_handlers.c
source/blenderplayer/CMakeLists.txt
source/creator/CMakeLists.txt

index bdda0f3382ebf008eb6db1b035ed829da8e2573a..e028c4e691273966c1abea419344976eef6b08d0 100644 (file)
@@ -248,9 +248,10 @@ elseif(UNIX)
        endif()
 
 elseif(WIN32)
-       if(MSVC)
-               set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
-       endif()
+       ## Warnings as errors, this is too strict!
+       #if(MSVC)
+       #       set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
+       #endif()
 
        list(APPEND INC_SYS
                ${WINTAB_INC}
index 96572f78da288019cbf0dce89cd12ed2c3e60e7a..461574297424cd3c3f22cb20842260f52e775d93 100644 (file)
@@ -373,8 +373,9 @@ if(WITH_LIBMV)
        add_definitions(-DWITH_LIBMV)
 endif()
 
-if(MSVC)
-       set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX")
-endif()
+## Warnings as errors, this is too strict!
+#if(MSVC)
+#      set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX")
+#endif()
 
 blender_add_lib(bf_blenkernel "${SRC}" "${INC}" "${INC_SYS}")
index 1b6c499a9faa03ce3c57ced541f6e002ca5f0d74..bd5241adb6b87386661301528317274e575646e2 100644 (file)
@@ -503,16 +503,16 @@ void BME_disk_remove_edge(BME_Edge *e, BME_Vert *v)
 
 BME_Edge *BME_disk_next_edgeflag(BME_Edge *e, BME_Vert *v, int eflag, int tflag){
        
-       BME_CycleNode *diskbase;
+       /* BME_CycleNode *diskbase; */ /* UNUSED */
        BME_Edge *curedge;
-       int len, ok;
+       int /* len, */ /* UNUSED */ ok;
        
        if(eflag && tflag) return NULL;
        
        ok = BME_vert_in_edge(e,v);
        if(ok){
-               diskbase = BME_disk_getpointer(e, v);
-               len = BME_cycle_length(diskbase);
+               /* diskbase = BME_disk_getpointer(e, v); */ /* UNUSED */
+               /* len = BME_cycle_length(diskbase); */ /* UNUSED */
                curedge = BME_disk_nextedge(e,v);
                while(curedge != e){
                        if(tflag){
index 99b6e7f909554bb3bc32eb6b73c8d39817262e63..a95d149f0585b308bb8e1b4d3a90520cc400f21b 100644 (file)
@@ -393,19 +393,19 @@ static float BME_bevel_project_vec(float *vec1, float *vec2, float *up_vec, int
  * and transform properties, and set the max limits.
  * Finally, return the split vert. */
 static BME_Vert *BME_bevel_split_edge(BME_Mesh *bm, BME_Vert *v, BME_Vert *v1, BME_Loop *l, float *up_vec, float value, BME_TransData_Head *td) {
-       BME_TransData *vtd, *vtd1, *vtd2;
-       BME_Vert *sv, *v2, *v3, *ov;
+       BME_TransData *vtd, *vtd1 /* , *vtd2 */ /* UNUSED */;
+       BME_Vert *sv, *v2, *v3 /* , *ov */ /* UNUSED */;
        BME_Loop *lv1, *lv2;
        BME_Edge *ne, *e1, *e2;
        float maxfactor, scale, len, dis, vec1[3], vec2[3], t_up_vec[3];
-       int is_edge, forward, is_split_vert;
+       int is_edge, forward /* , is_split_vert */ /* UNUSED */;
 
        if (l == NULL) {
                /* what you call operator overloading in C :)
                 * I wanted to use the same function for both wire edges and poly loops
                 * so... here we walk around edges to find the needed verts */
                forward = 1;
-               is_split_vert = 0;
+               /* is_split_vert = 0; */ /* UNUSED */
                if (v->edge == NULL) {
                        //printf("We can't split a loose vert's edge!\n");
                        return NULL;
@@ -428,7 +428,7 @@ static BME_Vert *BME_bevel_split_edge(BME_Mesh *bm, BME_Vert *v, BME_Vert *v1, B
                else {
                        e1 = e2;
                }
-               ov = BME_edge_getothervert(e1,v);
+               /* ov = BME_edge_getothervert(e1,v); */ /* UNUSED */
                sv = BME_split_edge(bm,v,e1,&ne,0);
                //BME_data_interp_from_verts(bm, v, ov, sv, 0.25); /*this is technically wrong...*/
                //BME_data_interp_from_faceverts(bm, v, ov, sv, 0.25);
@@ -464,14 +464,14 @@ static BME_Vert *BME_bevel_split_edge(BME_Mesh *bm, BME_Vert *v, BME_Vert *v1, B
                }
 
                if (BME_bevel_is_split_vert(lv1)) {
-                       is_split_vert = 1;
+                       /* is_split_vert = 1; */ /* UNUSED */
                        sv = v1;
                        if (forward) v1 = l->next->next->v;
                        else v1 = l->prev->v;
                }
                else {
-                       is_split_vert = 0;
-                       ov = BME_edge_getothervert(l->e,v);
+                       /* is_split_vert = 0; */ /* UNUSED */
+                       /* ov = BME_edge_getothervert(l->e,v); */ /* UNUSED */
                        sv = BME_split_edge(bm,v,l->e,&ne,0);
                        //BME_data_interp_from_verts(bm, v, ov, sv, 0.25); /*this is technically wrong...*/
                        //BME_data_interp_from_faceverts(bm, v, ov, sv, 0.25);
@@ -494,7 +494,7 @@ static BME_Vert *BME_bevel_split_edge(BME_Mesh *bm, BME_Vert *v, BME_Vert *v1, B
 
        vtd = BME_get_transdata(td, sv);
        vtd1 = BME_get_transdata(td, v);
-       vtd2 = BME_get_transdata(td,v1);
+       /* vtd2 = BME_get_transdata(td,v1); */ /* UNUSED */
 
        if (vtd1->loc == NULL) {
                /* this is a vert with data only for calculating initial weights */
@@ -717,7 +717,7 @@ static BME_Loop *BME_bevel_edge(BME_Mesh *bm, BME_Loop *l, float value, int UNUS
 
 static BME_Loop *BME_bevel_vert(BME_Mesh *bm, BME_Loop *l, float value, int UNUSED(options), float *up_vec, BME_TransData_Head *td) {
        BME_Vert *v1, *v2;
-       BME_Poly *f;
+       /* BME_Poly *f; */ /* UNUSED */
 
        /* get/make the first vert to be used in SFME */
        /* may need to split the previous edge */
@@ -730,7 +730,7 @@ static BME_Loop *BME_bevel_vert(BME_Mesh *bm, BME_Loop *l, float value, int UNUS
        l = l->next->next;
 
        /* "cut off" this corner */
-       f = BME_split_face(bm,l->f,v2,v1,NULL,l->e);
+       /* f = */ /* UNUSED */ BME_split_face(bm,l->f,v2,v1,NULL,l->e);
 
        return l;
 }
@@ -929,16 +929,16 @@ static BME_Mesh *BME_bevel_initialize(BME_Mesh *bm, int options, int UNUSED(defg
        BME_Vert *v;
        BME_Edge *e;
        BME_Poly *f;
-       BME_TransData *vtd;
-       MDeformVert *dvert;
-       MDeformWeight *dw;
+       /* BME_TransData *vtd; */ /* UNUSED */
+       /* MDeformVert *dvert; */ /* UNUSED */
+       /* MDeformWeight *dw; */ /* UNUSED */
        int len;
        float weight, threshold;
 
        /* vert pass */
        for (v=bm->verts.first; v; v=v->next) {
-               dvert = NULL;
-               dw = NULL;
+               /* dvert = NULL; */ /* UNUSED */
+               /* dw = NULL; */ /* UNUSED */
                v->tflag1 = BME_BEVEL_ORIG;
                /* originally coded, a vertex gets tagged with BME_BEVEL_BEVEL in this pass if
                 * the vert is manifold (or is shared by only two edges - wire bevel)
@@ -962,7 +962,7 @@ static BME_Mesh *BME_bevel_initialize(BME_Mesh *bm, int options, int UNUSED(defg
                else {
                        len = BME_cycle_length(BME_disk_getpointer(v->edge,v));
                        /* we'll assign a default transform data to every vert (except the loose ones) */
-                       vtd = BME_assign_transdata(td, bm, v, v->co, v->co, NULL, NULL, 0, -1, -1, NULL);
+                       /* vtd = */ /* UNUSED */ BME_assign_transdata(td, bm, v, v->co, v->co, NULL, NULL, 0, -1, -1, NULL);
                }
 
                /* check for non-manifold vert */
@@ -990,11 +990,11 @@ static BME_Mesh *BME_bevel_initialize(BME_Mesh *bm, int options, int UNUSED(defg
                                        //~ }
                                        //~ if (!dw || dw->weight == 0.0) continue;
                                        if (v->bweight == 0.0) continue;
-                                       vtd = BME_assign_transdata(td, bm, v, v->co, v->co, NULL, NULL, 1.0, v->bweight, -1, NULL);
+                                       /* vtd = */ /* UNUSED */ BME_assign_transdata(td, bm, v, v->co, v->co, NULL, NULL, 1.0, v->bweight, -1, NULL);
                                        v->tflag1 |= BME_BEVEL_BEVEL;
                                }
                                else {
-                                       vtd = BME_assign_transdata(td, bm, v, v->co, v->co, NULL, NULL, 1.0, 1.0, -1, NULL);
+                                       /* vtd = */ /* UNUSED */ BME_assign_transdata(td, bm, v, v->co, v->co, NULL, NULL, 1.0, 1.0, -1, NULL);
                                        v->tflag1 |= BME_BEVEL_BEVEL;
                                }
                        }
index 6741ff2d018a6031e5fabdfb78644979c99323e3..d8ae36b4ab5e0b85222565ef27c0a6da8347da1d 100644 (file)
@@ -56,6 +56,7 @@
 #include "BLI_math.h"
 #include "BLI_blenlib.h"
 #include "BLI_utildefines.h"
+#include "BLI_callbacks.h"
 
 #include "BKE_anim.h"
 #include "BKE_animsys.h"
@@ -1022,6 +1023,9 @@ void scene_update_for_newframe(Main *bmain, Scene *sce, unsigned int lay)
        float ctime = BKE_curframe(sce);
        Scene *sce_iter;
 
+       /* keep this first */
+       BLI_exec_cb(bmain, (ID *)sce, BLI_CB_EVT_FRAME_CHANGE_PRE);
+
        sound_set_cfra(sce->r.cfra);
        
        /* clear animation overrides */
@@ -1048,6 +1052,9 @@ void scene_update_for_newframe(Main *bmain, Scene *sce, unsigned int lay)
 
        /* object_handle_update() on all objects, groups and sets */
        scene_update_tagged_recursive(bmain, sce, sce);
+
+       /* keep this last */
+       BLI_exec_cb(bmain, (ID *)sce, BLI_CB_EVT_FRAME_CHANGE_POST);
 }
 
 /* return default layer, also used to patch old files */
index f20cef9c3ea0a8d3989fe0cd0886ba8373045062..b490317fdacaadeabf9cc59a2bd448fcfdd9fa16 100644 (file)
@@ -40,6 +40,8 @@ struct Main;
 struct ID;
 
 typedef enum {
+       BLI_CB_EVT_FRAME_CHANGE_PRE,
+       BLI_CB_EVT_FRAME_CHANGE_POST,
        BLI_CB_EVT_RENDER_PRE,
        BLI_CB_EVT_RENDER_POST,
        BLI_CB_EVT_RENDER_STATS,
index c00b0e00587fecbc524b92ecedd02e2759ffe6be..282fa0902de788ebf31cf9f55c4dda6a293f69d1 100644 (file)
@@ -1040,7 +1040,7 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con)
                
                /* enabled */
                uiBlockSetEmboss(block, UI_EMBOSSN);
-               uiItemR(row, &ptr, "mute", 0, "", (con->flag & CONSTRAINT_OFF) ? ICON_MUTE_IPO_ON : ICON_MUTE_IPO_OFF);
+               uiItemR(row, &ptr, "mute", 0, "", (con->flag & CONSTRAINT_OFF) ? ICON_RESTRICT_VIEW_ON : ICON_RESTRICT_VIEW_OFF);
                uiBlockSetEmboss(block, UI_EMBOSS);
                
                uiLayoutSetOperatorContext(row, WM_OP_INVOKE_DEFAULT);
index 117dfda4551d978e041aba69a27efc4b1f48b25c..7bc25fcf1cc01c8f0fccadbd7a836ed9b827f462 100644 (file)
@@ -1224,7 +1224,7 @@ static void view3d_panel_object(const bContext *C, Panel *pa)
        Object *ob= OBACT;
        // TransformProperties *tfp; // UNUSED
        PointerRNA obptr;
-       uiLayout *col, *row;
+       uiLayout *col /* , *row */ /* UNUSED */;
        float lim;
        
        if(ob==NULL) return;
@@ -1252,7 +1252,7 @@ static void view3d_panel_object(const bContext *C, Panel *pa)
        uiBlockSetHandleFunc(block, do_view3d_region_buttons, NULL);
 
        col= uiLayoutColumn(pa->layout, 0);
-       row= uiLayoutRow(col, 0);
+       /* row= uiLayoutRow(col, 0); */ /* UNUSED */
        RNA_id_pointer_create(&ob->id, &obptr);
 
        if(ob==obedit) {
index 1388a08d33c99925f84ac5f7bfa26a11a175dd7d..4dc31af634c67cbcf22cbf6cbc9644037a4f1b76 100644 (file)
@@ -1790,7 +1790,7 @@ static int game_engine_exec(bContext *C, wmOperator *op)
 {
 #ifdef WITH_GAMEENGINE
        Scene *startscene = CTX_data_scene(C);
-       ScrArea *sa, *prevsa= CTX_wm_area(C);
+       ScrArea /* *sa, */ /* UNUSED */ *prevsa= CTX_wm_area(C);
        ARegion *ar, *prevar= CTX_wm_region(C);
        wmWindow *prevwin= CTX_wm_window(C);
        RegionView3D *rv3d;
@@ -1803,7 +1803,7 @@ static int game_engine_exec(bContext *C, wmOperator *op)
                return OPERATOR_CANCELLED;
        
        rv3d= CTX_wm_region_view3d(C);
-       sa= CTX_wm_area(C);
+       /* sa= CTX_wm_area(C); */ /* UNUSED */
        ar= CTX_wm_region(C);
 
        view3d_operator_needs_opengl(C);
index 3b1a18522d44b0664ea3e33a1a94625ab8775e2c..310e3bd33068ee3224973fc2302b222d5f3e51a6 100644 (file)
@@ -79,14 +79,16 @@ static EnumPropertyItem draw_channels_items[] = {
        {0, "COLOR", ICON_IMAGE_RGB, "Color", "Draw image with RGB colors"},
        {SI_USE_ALPHA, "COLOR_ALPHA", ICON_IMAGE_RGB_ALPHA, "Color and Alpha", "Draw image with RGB colors and alpha transparency"},
        {SI_SHOW_ALPHA, "ALPHA", ICON_IMAGE_ALPHA, "Alpha", "Draw alpha transparency channel"},
-       {SI_SHOW_ZBUF, "Z_BUFFER", ICON_IMAGE_ZDEPTH, "Z-Buffer", "Draw Z-buffer associated with image (mapped from camera clip start to end)"},
+       {SI_SHOW_ZBUF, "Z_BUFFER", ICON_IMAGE_ZDEPTH, "Z-Buffer",
+                      "Draw Z-buffer associated with image (mapped from camera clip start to end)"},
        {0, NULL, 0, NULL, NULL}};
 
 static EnumPropertyItem transform_orientation_items[] = {
        {V3D_MANIP_GLOBAL, "GLOBAL", 0, "Global", "Align the transformation axes to world space"},
        {V3D_MANIP_LOCAL, "LOCAL", 0, "Local", "Align the transformation axes to the selected objects' local space"},
        {V3D_MANIP_GIMBAL, "GIMBAL", 0, "Gimbal", "Align each axis to the Euler rotation axis as used for input"},
-       {V3D_MANIP_NORMAL, "NORMAL", 0, "Normal", "Align the transformation axes to average normal of selected elements (bone Y axis for pose mode)"},
+       {V3D_MANIP_NORMAL, "NORMAL", 0, "Normal",
+                          "Align the transformation axes to average normal of selected elements (bone Y axis for pose mode)"},
        {V3D_MANIP_VIEW, "VIEW", 0, "View", "Align the transformation axes to the window"},
        {V3D_MANIP_CUSTOM, "CUSTOM", 0, "Custom", "Use a custom transform orientation"},
        {0, NULL, 0, NULL, NULL}};
@@ -223,7 +225,8 @@ static PointerRNA rna_CurrentOrientation_get(PointerRNA *ptr)
        if (v3d->twmode < V3D_MANIP_CUSTOM)
                return rna_pointer_inherit_refine(ptr, &RNA_TransformOrientation, NULL);
        else
-               return rna_pointer_inherit_refine(ptr, &RNA_TransformOrientation, BLI_findlink(&scene->transform_spaces, v3d->twmode - V3D_MANIP_CUSTOM));
+               return rna_pointer_inherit_refine(ptr, &RNA_TransformOrientation,
+                                                 BLI_findlink(&scene->transform_spaces, v3d->twmode - V3D_MANIP_CUSTOM));
 }
 
 EnumPropertyItem *rna_TransformOrientation_itemf(bContext *C, PointerRNA *ptr, PropertyRNA *UNUSED(prop), int *free)
@@ -476,7 +479,8 @@ static void rna_SpaceImageEditor_image_set(PointerRNA *ptr, PointerRNA value)
        ED_space_image_set(NULL, sima, sc->scene, sc->scene->obedit, (Image*)value.data);
 }
 
-static EnumPropertyItem *rna_SpaceImageEditor_draw_channels_itemf(bContext *UNUSED(C), PointerRNA *ptr, PropertyRNA *UNUSED(prop), int *free)
+static EnumPropertyItem *rna_SpaceImageEditor_draw_channels_itemf(bContext *UNUSED(C), PointerRNA *ptr,
+                                                                  PropertyRNA *UNUSED(prop), int *free)
 {
        SpaceImage *sima= (SpaceImage*)ptr->data;
        EnumPropertyItem *item= NULL;
@@ -730,14 +734,16 @@ static void rna_SpaceDopeSheetEditor_action_set(PointerRNA *ptr, PointerRNA valu
                        if (act->idroot == ID_OB)
                                saction->action = act;
                        else
-                               printf("ERROR: cannot assign Action '%s' to Action Editor, as action is not object-level animation\n", act->id.name+2);
+                               printf("ERROR: cannot assign Action '%s' to Action Editor, as action is not object-level animation\n",
+                                      act->id.name+2);
                }
                else if (saction->mode == SACTCONT_SHAPEKEY) {
                        /* as the name says, "shapekey-level" only... */
                        if (act->idroot == ID_KE)
                                saction->action = act;
                        else
-                               printf("ERROR: cannot assign Action '%s' to Shape Key Editor, as action doesn't animate Shape Keys\n", act->id.name+2);
+                               printf("ERROR: cannot assign Action '%s' to Shape Key Editor, as action doesn't animate Shape Keys\n",
+                                      act->id.name+2);
                }
                else {
                        printf("ACK: who's trying to set an action while not in a mode displaying a single Action only?\n");
@@ -865,7 +871,8 @@ static void rna_SpaceNodeEditor_node_tree_update(Main *bmain, Scene *scene, Poin
        ED_node_tree_update(snode, scene);
 }
 
-static EnumPropertyItem *rna_SpaceProperties_texture_context_itemf(bContext *C, PointerRNA *UNUSED(ptr), PropertyRNA *UNUSED(prop), int *free)
+static EnumPropertyItem *rna_SpaceProperties_texture_context_itemf(bContext *C, PointerRNA *UNUSED(ptr),
+                                                                   PropertyRNA *UNUSED(prop), int *free)
 {
        Scene *scene = CTX_data_scene(C);
        Object *ob = CTX_data_active_object(C);
@@ -951,8 +958,10 @@ static void rna_def_space_image_uv(BlenderRNA *brna)
 
        static EnumPropertyItem sticky_mode_items[] = {
                {SI_STICKY_DISABLE, "DISABLED", ICON_STICKY_UVS_DISABLE, "Disabled", "Sticky vertex selection disabled"},
-               {SI_STICKY_LOC, "SHARED_LOCATION", ICON_STICKY_UVS_LOC, "Shared Location", "Select UVs that are at the same location and share a mesh vertex"},
-               {SI_STICKY_VERTEX, "SHARED_VERTEX", ICON_STICKY_UVS_VERT, "Shared Vertex", "Select UVs that share mesh vertex, irrespective if they are in the same location"},
+               {SI_STICKY_LOC, "SHARED_LOCATION", ICON_STICKY_UVS_LOC, "Shared Location",
+                               "Select UVs that are at the same location and share a mesh vertex"},
+               {SI_STICKY_VERTEX, "SHARED_VERTEX", ICON_STICKY_UVS_VERT, "Shared Vertex",
+                                  "Select UVs that share mesh vertex, irrespective if they are in the same location"},
                {0, NULL, 0, NULL, NULL}};
 
        static EnumPropertyItem dt_uv_items[] = {
@@ -982,7 +991,8 @@ static void rna_def_space_image_uv(BlenderRNA *brna)
        prop= RNA_def_property(srna, "sticky_select_mode", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_sdna(prop, NULL, "sticky");
        RNA_def_property_enum_items(prop, sticky_mode_items);
-       RNA_def_property_ui_text(prop, "Sticky Selection Mode", "Automatically select also UVs sharing the same vertex as the ones being selected");
+       RNA_def_property_ui_text(prop, "Sticky Selection Mode",
+                                "Automatically select also UVs sharing the same vertex as the ones being selected");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
 
        /* drawing */
@@ -999,7 +1009,9 @@ static void rna_def_space_image_uv(BlenderRNA *brna)
 
        prop= RNA_def_property(srna, "show_stretch", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", SI_DRAW_STRETCH);
-       RNA_def_property_ui_text(prop, "Draw Stretch", "Draw faces colored according to the difference in shape between UVs and their 3D coordinates (blue for low distortion, red for high distortion)");
+       RNA_def_property_ui_text(prop, "Draw Stretch",
+                                "Draw faces colored according to the difference in shape between UVs and "
+                                "their 3D coordinates (blue for low distortion, red for high distortion)");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
 
        prop= RNA_def_property(srna, "draw_stretch_type", PROP_ENUM, PROP_NONE);
@@ -1030,7 +1042,8 @@ static void rna_def_space_image_uv(BlenderRNA *brna)
 
        prop= RNA_def_property(srna, "cursor_location", PROP_FLOAT, PROP_XYZ);
        RNA_def_property_array(prop, 2);
-       RNA_def_property_float_funcs(prop, "rna_SpaceImageEditor_cursor_location_get", "rna_SpaceImageEditor_cursor_location_set", NULL);
+       RNA_def_property_float_funcs(prop, "rna_SpaceImageEditor_cursor_location_get",
+                                    "rna_SpaceImageEditor_cursor_location_set", NULL);
        RNA_def_property_ui_text(prop, "2D Cursor Location", "2D cursor location for this view");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
 
@@ -1048,7 +1061,8 @@ static void rna_def_space_image_uv(BlenderRNA *brna)
 
        prop= RNA_def_property(srna, "use_live_unwrap", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", SI_LIVE_UNWRAP);
-       RNA_def_property_ui_text(prop, "Live Unwrap", "Continuously unwrap the selected UV island while transforming pinned vertices");
+       RNA_def_property_ui_text(prop, "Live Unwrap",
+                                "Continuously unwrap the selected UV island while transforming pinned vertices");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
 
        prop= RNA_def_property(srna, "pivot_point", PROP_ENUM, PROP_NONE);
@@ -1176,12 +1190,12 @@ static void rna_def_background_image(BlenderRNA *brna)
        
        prop= RNA_def_property(srna, "offset_x", PROP_FLOAT, PROP_NONE);
        RNA_def_property_float_sdna(prop, NULL, "xof");
-       RNA_def_property_ui_text(prop, "X Offset", "Offsets image horizontally from the world origin");
+       RNA_def_property_ui_text(prop, "X Offset", "Offset image horizontally from the world origin");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
        
        prop= RNA_def_property(srna, "offset_y", PROP_FLOAT, PROP_NONE);
        RNA_def_property_float_sdna(prop, NULL, "yof");
-       RNA_def_property_ui_text(prop, "Y Offset", "Offsets image vertically from the world origin");
+       RNA_def_property_ui_text(prop, "Y Offset", "Offset image vertically from the world origin");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
        
        prop= RNA_def_property(srna, "size", PROP_FLOAT, PROP_NONE);
@@ -1217,7 +1231,8 @@ static void rna_def_space_view3d(BlenderRNA *brna)
        const int matrix_dimsize[]= {4, 4};
                
        static EnumPropertyItem pivot_items[] = {
-               {V3D_CENTER, "BOUNDING_BOX_CENTER", ICON_ROTATE, "Bounding Box Center", "Pivot around bounding box center of selected object(s)"},
+               {V3D_CENTER, "BOUNDING_BOX_CENTER", ICON_ROTATE, "Bounding Box Center",
+                            "Pivot around bounding box center of selected object(s)"},
                {V3D_CURSOR, "CURSOR", ICON_CURSOR, "3D Cursor", "Pivot around the 3D cursor"},
                {V3D_LOCAL, "INDIVIDUAL_ORIGINS", ICON_ROTATECOLLECTION, "Individual Origins", "Pivot around each object's own origin"},
                {V3D_CENTROID, "MEDIAN_POINT", ICON_ROTATECENTER, "Median Point", "Pivot around the median point of selected objects"},
@@ -1303,19 +1318,19 @@ static void rna_def_space_view3d(BlenderRNA *brna)
 
        prop= RNA_def_property(srna, "grid_scale", PROP_FLOAT, PROP_NONE);
        RNA_def_property_float_sdna(prop, NULL, "grid");
-       RNA_def_property_ui_text(prop, "Grid Scale", "The distance between 3D View grid lines");
+       RNA_def_property_ui_text(prop, "Grid Scale", "Distance between 3D View grid lines");
        RNA_def_property_range(prop, 0.0f, FLT_MAX);
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
 
        prop= RNA_def_property(srna, "grid_lines", PROP_INT, PROP_NONE);
        RNA_def_property_int_sdna(prop, NULL, "gridlines");
-       RNA_def_property_ui_text(prop, "Grid Lines", "The number of grid lines to display in perspective view");
+       RNA_def_property_ui_text(prop, "Grid Lines", "Number of grid lines to display in perspective view");
        RNA_def_property_range(prop, 0, 1024);
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
        
        prop= RNA_def_property(srna, "grid_subdivisions", PROP_INT, PROP_NONE);
        RNA_def_property_int_sdna(prop, NULL, "gridsubdiv");
-       RNA_def_property_ui_text(prop, "Grid Subdivisions", "The number of subdivisions between grid lines");
+       RNA_def_property_ui_text(prop, "Grid Subdivisions", "Number of subdivisions between grid lines");
        RNA_def_property_range(prop, 1, 1024);
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
        
@@ -1341,12 +1356,14 @@ static void rna_def_space_view3d(BlenderRNA *brna)
        
        prop= RNA_def_property(srna, "show_outline_selected", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_SELECT_OUTLINE);
-       RNA_def_property_ui_text(prop, "Outline Selected", "Show an outline highlight around selected objects in non-wireframe views");
+       RNA_def_property_ui_text(prop, "Outline Selected",
+                                "Show an outline highlight around selected objects in non-wireframe views");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
        
        prop= RNA_def_property(srna, "show_all_objects_origin", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_DRAW_CENTERS);
-       RNA_def_property_ui_text(prop, "All Object Origins", "Show the object origin center dot for all (selected and unselected) objects");
+       RNA_def_property_ui_text(prop, "All Object Origins",
+                                "Show the object origin center dot for all (selected and unselected) objects");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
 
        prop= RNA_def_property(srna, "show_relationship_lines", PROP_BOOLEAN, PROP_NONE);
@@ -1432,12 +1449,13 @@ static void rna_def_space_view3d(BlenderRNA *brna)
        prop= RNA_def_property(srna, "current_orientation", PROP_POINTER, PROP_NONE);
        RNA_def_property_struct_type(prop, "TransformOrientation");
        RNA_def_property_pointer_funcs(prop, "rna_CurrentOrientation_get", NULL, NULL, NULL);
-       RNA_def_property_ui_text(prop, "Current Transform Orientation", "Current Transformation orientation");
+       RNA_def_property_ui_text(prop, "Current Transform Orientation", "Current transformation orientation");
 
        prop= RNA_def_property(srna, "lock_camera_and_layers", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "scenelock", 1);
        RNA_def_property_boolean_funcs(prop, NULL, "rna_SpaceView3D_lock_camera_and_layers_set");
-       RNA_def_property_ui_text(prop, "Lock Camera and Layers", "Use the scene's active camera and layers in this view, rather than local layers");
+       RNA_def_property_ui_text(prop, "Lock Camera and Layers",
+                                "Use the scene's active camera and layers in this view, rather than local layers");
        RNA_def_property_ui_icon(prop, ICON_LOCKVIEW_OFF, 1);
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
 
@@ -1724,7 +1742,9 @@ static void rna_def_space_image(BlenderRNA *brna)
        /* update */
        prop= RNA_def_property(srna, "use_realtime_update", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "lock", 0);
-       RNA_def_property_ui_text(prop, "Update Automatically", "Update other affected window spaces automatically to reflect changes during interactive operations such as transform");
+       RNA_def_property_ui_text(prop, "Update Automatically",
+                                "Update other affected window spaces automatically to reflect changes "
+                                "during interactive operations such as transform");
 
        /* state */
        prop= RNA_def_property(srna, "show_render", PROP_BOOLEAN, PROP_NONE);
@@ -1781,14 +1801,14 @@ static void rna_def_space_sequencer(BlenderRNA *brna)
        prop= RNA_def_property(srna, "view_type", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_sdna(prop, NULL, "view");
        RNA_def_property_enum_items(prop, view_type_items);
-       RNA_def_property_ui_text(prop, "View Type", "The type of the Sequencer view (sequencer, preview or both)");
+       RNA_def_property_ui_text(prop, "View Type", "Type of the Sequencer view (sequencer, preview or both)");
        RNA_def_property_update(prop, 0, "rna_Sequencer_view_type_update");
 
        /* display type, fairly important */
        prop= RNA_def_property(srna, "display_mode", PROP_ENUM, PROP_NONE);
        RNA_def_property_enum_sdna(prop, NULL, "mainb");
        RNA_def_property_enum_items(prop, display_mode_items);
-       RNA_def_property_ui_text(prop, "Display Mode", "The view mode to use for displaying sequencer output");
+       RNA_def_property_ui_text(prop, "Display Mode", "View mode to use for displaying sequencer output");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL);
                
        /* flag's */
@@ -1819,7 +1839,7 @@ static void rna_def_space_sequencer(BlenderRNA *brna)
        
        prop= RNA_def_property(srna, "use_grease_pencil", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_DRAW_GPENCIL);
-       RNA_def_property_ui_text(prop, "Use Grease Pencil", "Display and edit the grease pencil freehand annotations overlay"); 
+       RNA_def_property_ui_text(prop, "Use Grease Pencil", "Display and edit the grease pencil freehand annotations overlay");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL);
        
        /* grease pencil */
@@ -1831,7 +1851,8 @@ static void rna_def_space_sequencer(BlenderRNA *brna)
        
        prop= RNA_def_property(srna, "display_channel", PROP_INT, PROP_NONE);
        RNA_def_property_int_sdna(prop, NULL, "chanshown");
-       RNA_def_property_ui_text(prop, "Display Channel", "The channel number shown in the image preview. 0 is the result of all strips combined");
+       RNA_def_property_ui_text(prop, "Display Channel",
+                                "The channel number shown in the image preview. 0 is the result of all strips combined");
        RNA_def_property_range(prop, -5, MAXSEQ);
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL);
        
@@ -1851,12 +1872,12 @@ static void rna_def_space_sequencer(BlenderRNA *brna)
        /* not sure we need rna access to these but adding anyway */
        prop= RNA_def_property(srna, "offset_x", PROP_FLOAT, PROP_NONE);
        RNA_def_property_float_sdna(prop, NULL, "xof");
-       RNA_def_property_ui_text(prop, "X Offset", "Offsets image horizontally from the view center");
+       RNA_def_property_ui_text(prop, "X Offset", "Offset image horizontally from the view center");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL);
 
        prop= RNA_def_property(srna, "offset_y", PROP_FLOAT, PROP_NONE);
        RNA_def_property_float_sdna(prop, NULL, "yof");
-       RNA_def_property_ui_text(prop, "Y Offset", "Offsets image horizontally from the view center");
+       RNA_def_property_ui_text(prop, "Y Offset", "Offset image vertically from the view center");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL);
        
        prop= RNA_def_property(srna, "zoom", PROP_FLOAT, PROP_NONE);
@@ -2018,7 +2039,9 @@ static void rna_def_space_dopesheet(BlenderRNA *brna)
        
        prop= RNA_def_property(srna, "show_pose_markers", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", SACTION_POSEMARKERS_SHOW);
-       RNA_def_property_ui_text(prop, "Show Pose Markers", "Show markers belonging to the active action instead of Scene markers (Action and Shape Key Editors only)");
+       RNA_def_property_ui_text(prop, "Show Pose Markers",
+                                "Show markers belonging to the active action instead of Scene markers "
+                                "(Action and Shape Key Editors only)");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, NULL);
        
        /* editing */
@@ -2029,7 +2052,8 @@ static void rna_def_space_dopesheet(BlenderRNA *brna)
        
        prop= RNA_def_property(srna, "use_realtime_update", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SACTION_NOREALTIMEUPDATES);
-       RNA_def_property_ui_text(prop, "Realtime Updates", "When transforming keyframes, changes to the animation data are flushed to other views");
+       RNA_def_property_ui_text(prop, "Realtime Updates",
+                                "When transforming keyframes, changes to the animation data are flushed to other views");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, NULL);
 
        prop= RNA_def_property(srna, "use_marker_sync", PROP_BOOLEAN, PROP_NONE);
@@ -2105,7 +2129,8 @@ static void rna_def_space_graph(BlenderRNA *brna)
        
        prop= RNA_def_property(srna, "use_only_selected_curves_handles", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", SIPO_SELCUVERTSONLY);
-       RNA_def_property_ui_text(prop, "Only Selected Curve Keyframes", "Only keyframes of selected F-Curves are visible and editable");
+       RNA_def_property_ui_text(prop, "Only Selected Curve Keyframes",
+                                "Only keyframes of selected F-Curves are visible and editable");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
        
        prop= RNA_def_property(srna, "use_only_selected_keyframe_handles", PROP_BOOLEAN, PROP_NONE);
@@ -2115,7 +2140,8 @@ static void rna_def_space_graph(BlenderRNA *brna)
        
        prop= RNA_def_property(srna, "use_beauty_drawing", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SIPO_BEAUTYDRAW_OFF);
-       RNA_def_property_ui_text(prop, "Use High Quality Drawing", "Draw F-Curves using Anti-Aliasing and other fancy effects. Disable for better performance");
+       RNA_def_property_ui_text(prop, "Use High Quality Drawing",
+                                "Draw F-Curves using Anti-Aliasing and other fancy effects. Disable for better performance");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
        
        /* editing */
@@ -2126,7 +2152,8 @@ static void rna_def_space_graph(BlenderRNA *brna)
        
        prop= RNA_def_property(srna, "use_realtime_update", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SIPO_NOREALTIMEUPDATES);
-       RNA_def_property_ui_text(prop, "Realtime Updates", "When transforming keyframes, changes to the animation data are flushed to other views");
+       RNA_def_property_ui_text(prop, "Realtime Updates",
+                                "When transforming keyframes, changes to the animation data are flushed to other views");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
        
        /* cursor */
@@ -2196,7 +2223,8 @@ static void rna_def_space_nla(BlenderRNA *brna)
        /* editing */
        prop= RNA_def_property(srna, "use_realtime_update", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SNLA_NOREALTIMEUPDATES);
-       RNA_def_property_ui_text(prop, "Realtime Updates", "When transforming strips, changes to the animation data are flushed to other views");
+       RNA_def_property_ui_text(prop, "Realtime Updates",
+                                "When transforming strips, changes to the animation data are flushed to other views");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_NLA, NULL);
 
        /* dopesheet */
@@ -2225,7 +2253,7 @@ static void rna_def_space_time(BlenderRNA *brna)
        /* view settings */     
        prop= RNA_def_property(srna, "show_only_selected", PROP_BOOLEAN, PROP_NONE);
        RNA_def_property_boolean_sdna(prop, NULL, "flag", TIME_ONLYACTSEL);
-       RNA_def_property_ui_text(prop, "Only Selected Channels", "Show keyframes for active Object and/or its selected bones only");    
+       RNA_def_property_ui_text(prop, "Only Selected Channels", "Show keyframes for active Object and/or its selected bones only");
        RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, NULL);
        
        prop= RNA_def_property(srna, "show_frame_indicator", PROP_BOOLEAN, PROP_NONE);
@@ -2517,7 +2545,8 @@ static void rna_def_space_node(BlenderRNA *brna)
 
        static EnumPropertyItem backdrop_channels_items[] = {
                {0, "COLOR", ICON_IMAGE_RGB, "Color", "Draw image with RGB colors"},
-               {SNODE_USE_ALPHA, "COLOR_ALPHA", ICON_IMAGE_RGB_ALPHA, "Color and Alpha", "Draw image with RGB colors and alpha transparency"},
+               {SNODE_USE_ALPHA, "COLOR_ALPHA", ICON_IMAGE_RGB_ALPHA, "Color and Alpha",
+                                 "Draw image with RGB colors and alpha transparency"},
                {SNODE_SHOW_ALPHA, "ALPHA", ICON_IMAGE_ALPHA, "Alpha", "Draw alpha transparency channel"},
                {0, NULL, 0, NULL, NULL}};
 
index b909a0d5f5579614dce193da2387babc7de975e5..6aaeb4d9807a8e3bb5192f0b4b33c7b62f657573 100644 (file)
@@ -40,6 +40,8 @@ void bpy_app_generic_callback(struct Main *main, struct ID *id, void *arg);
 static PyTypeObject BlenderAppCbType;
 
 static PyStructSequence_Field app_cb_info_fields[]= {
+    {(char *)"frame_change_pre", NULL},
+       {(char *)"frame_change_post", NULL},
        {(char *)"render_pre", NULL},
        {(char *)"render_post", NULL},
        {(char *)"render_stats", NULL},
index 7c1daedce71153cc6bb5730830abdf8f95c4858d..eadd796348d4e7d5d51b5a8f38edda1af8f5afa2 100644 (file)
@@ -63,8 +63,18 @@ if(WIN32 AND NOT UNIX)
        endif()
 
        add_executable(blenderplayer ${EXETYPE} ${CMAKE_CURRENT_BINARY_DIR}/dna.c ../icons/winblender.rc)
+
 elseif(APPLE)
-       add_executable(blenderplayer MACOSX_BUNDLE ${CMAKE_CURRENT_BINARY_DIR}/dna.c)
+       add_executable(blenderplayer ${EXETYPE} ${CMAKE_CURRENT_BINARY_DIR}/dna.c)
+       # setup Info.plist
+       execute_process(COMMAND date "+%Y-%m-%d" OUTPUT_VARIABLE BLENDER_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
+       set(PLAYER_SOURCEDIR ${CMAKE_SOURCE_DIR}/source/darwin/blenderplayer.app)
+       set(PLAYER_SOURCEINFO ${PLAYER_SOURCEDIR}/Contents/Info.plist)
+       set_target_properties(blenderplayer PROPERTIES
+               MACOSX_BUNDLE_INFO_PLIST ${PLAYER_SOURCEINFO}
+               MACOSX_BUNDLE_SHORT_VERSION_STRING ${BLENDER_VERSION}
+               MACOSX_BUNDLE_LONG_VERSION_STRING "${BLENDER_VERSION} ${BLENDER_DATE}")
+
 else()
        add_executable(blenderplayer ${CMAKE_CURRENT_BINARY_DIR}/dna.c)
 endif()
index fc5fccc71e6a91679b6c00a1fdcf79e3a71775c5..592307b6f2c02eec7c95139a8176e85c550b6985 100644 (file)
@@ -718,40 +718,66 @@ elseif(APPLE)
        # install blenderplayer bundle - copy of blender.app above. re-using macros et al
        # note we are using OSX Bundle as base and copying Blender dummy bundle on top of it
        if(WITH_GAMEENGINE AND WITH_PLAYER)
-               set(SOURCEDIR ${CMAKE_SOURCE_DIR}/source/darwin/blenderplayer.app)
-               set(SOURCEINFO ${SOURCEDIR}/Contents/Info.plist)
-               set(TARGETDIR_VER ${TARGETDIR}/blenderplayer.app/Contents/MacOS/${BLENDER_VERSION})
+               set(PLAYER_SOURCEDIR ${CMAKE_SOURCE_DIR}/source/darwin/blenderplayer.app)
+               set(PLAYER_SOURCEINFO ${PLAYER_SOURCEDIR}/Contents/Info.plist)
+               set(PLAYER_TARGETDIR_VER ${TARGETDIR}/blenderplayer.app/Contents/MacOS/${BLENDER_VERSION})
 
-               # setup Info.plist
-               execute_process(COMMAND date "+%Y-%m-%d" OUTPUT_VARIABLE BLENDER_DATE OUTPUT_STRIP_TRAILING_WHITESPACE)
 
-               set_target_properties(blender PROPERTIES
-                       MACOSX_BUNDLE_INFO_PLIST ${SOURCEINFO}
-                       MACOSX_BUNDLE_SHORT_VERSION_STRING ${BLENDER_VERSION}
-                       MACOSX_BUNDLE_LONG_VERSION_STRING "${BLENDER_VERSION} ${BLENDER_DATE}")
-
-               # important to make a clean install each time else old scripts get loaded.
+               # important to make a clean  install each time else old scripts get loaded.
                install(
                        CODE
-                       "file(REMOVE_RECURSE ${TARGETDIR_VER})"
-               )
-       
-               # message after building.
-               add_custom_command(
-                       TARGET blender POST_BUILD MAIN_DEPENDENCY blender
-                       COMMAND ${CMAKE_COMMAND} -E echo 'now run: \"make install\" to copy runtime files & scripts to ${TARGETDIR_VER}'
+                       "file(REMOVE_RECURSE ${PLAYER_TARGETDIR_VER})"
                )
        
+
+               # handy install macro to exclude files, we use \$ escape for the "to"
+               # argument when calling so ${BUILD_TYPE} does not get expanded
+               macro(install_dir from to)
+                       install(
+                               DIRECTORY ${from}
+                               DESTINATION ${to}
+                               PATTERN ".svn" EXCLUDE
+                               PATTERN "*.pyc" EXCLUDE
+                               PATTERN "*.pyo" EXCLUDE
+                               PATTERN "*.orig" EXCLUDE
+                               PATTERN "*.rej" EXCLUDE
+                               PATTERN "__pycache__" EXCLUDE
+                               PATTERN "__MACOSX" EXCLUDE
+                               PATTERN ".DS_Store" EXCLUDE
+                       )
+               endmacro()
+
                install(
-                       FILES ${SOURCEDIR}/Contents/PkgInfo
+                       FILES ${PLAYER_SOURCEDIR}/Contents/PkgInfo
                        DESTINATION ${TARGETDIR}/blenderplayer.app/Contents
                )
-
+       
                install_dir(
-                       ${SOURCEDIR}/Contents/Resources
+                       ${PLAYER_SOURCEDIR}/Contents/Resources
                        \${TARGETDIR}/blenderplayer.app/Contents/
                )
 
+               install(
+                       FILES ${CMAKE_SOURCE_DIR}/release/bin/.blender/.bfont.ttf
+                       DESTINATION ${PLAYER_TARGETDIR_VER}
+               )
+
+               # localization
+               if(WITH_INTERNATIONAL)
+               install(
+                               FILES ${CMAKE_SOURCE_DIR}/release/bin/.blender/.Blanguages
+                               DESTINATION ${PLAYER_TARGETDIR_VER}/datafiles
+                       )
+
+                       install(
+                       DIRECTORY
+                                       ${CMAKE_SOURCE_DIR}/release/bin/.blender/fonts
+                                       ${CMAKE_SOURCE_DIR}/release/bin/.blender/locale
+                               DESTINATION ${PLAYER_TARGETDIR_VER}/datafiles
+                               PATTERN ".svn" EXCLUDE
+                       )
+               endif()
+
                # python
                if(WITH_PYTHON)
                        add_custom_command(
@@ -764,10 +790,10 @@ elseif(APPLE)
                        # copy extracted python files
                        install_dir(
                                ${CMAKE_CURRENT_BINARY_DIR}/python
-                               \${TARGETDIR_VER}
+                               \${PLAYER_TARGETDIR_VER}
                        )
                endif()
-       
+
        endif()
 endif()