svn merge -r41649:41650 ^/trunk/blender
authorCampbell Barton <ideasman42@gmail.com>
Thu, 10 Nov 2011 01:58:48 +0000 (01:58 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 10 Nov 2011 01:58:48 +0000 (01:58 +0000)
1  2 
source/blender/editors/object/object_add.c
source/blenderplayer/bad_level_call_stubs/stubs.c

index 2c4fdb61db517870d78be5dced7c39ebb566c66b,9b539871cbcdf24346c6aa219f2077992dca9d0b..e2702c1df430e64c2eb0b33127c29c959a6cb68c
@@@ -78,6 -78,7 +78,7 @@@
  #include "BKE_particle.h"
  #include "BKE_report.h"
  #include "BKE_sca.h"
+ #include "BKE_scene.h"
  #include "BKE_speaker.h"
  #include "BKE_texture.h"
  
@@@ -92,6 -93,7 +93,7 @@@
  #include "ED_curve.h"
  #include "ED_mball.h"
  #include "ED_mesh.h"
+ #include "ED_node.h"
  #include "ED_object.h"
  #include "ED_render.h"
  #include "ED_screen.h"
@@@ -242,8 -244,7 +244,8 @@@ int ED_object_add_generic_invoke(bConte
        return op->type->exec(C, op);
  }
  
 -int ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer)
 +int ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, 
 +      float *rot, int *enter_editmode, unsigned int *layer, int *is_view_aligned)
  {
        View3D *v3d = CTX_wm_view3d(C);
        int a, layer_values[20];
        else
                RNA_float_get_array(op->ptr, "rotation", rot);
        
 -
 +      if (is_view_aligned)
 +              *is_view_aligned = view_align;
 +      
        RNA_float_get_array(op->ptr, "location", loc);
  
        if(*layer == 0) {
  
  /* for object add primitive operators */
  /* do not call undo push in this function (users of this function have to) */
 -Object *ED_object_add_type(bContext *C, int type, float *loc, float *rot, int enter_editmode, unsigned int layer)
 +Object *ED_object_add_type(bContext *C, int type, float *loc, float *rot, 
 +      int enter_editmode, unsigned int layer)
  {
        Main *bmain= CTX_data_main(C);
        Scene *scene= CTX_data_scene(C);
        /* more editor stuff */
        ED_object_base_init_transform(C, BASACT, loc, rot);
  
+       DAG_id_type_tag(bmain, ID_OB);
        DAG_scene_sort(bmain, scene);
        ED_render_id_flush_update(bmain, ob->data);
  
@@@ -344,7 -343,7 +347,7 @@@ static int object_add_exec(bContext *C
        unsigned int layer;
        float loc[3], rot[3];
        
 -      if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer))
 +      if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL))
                return OPERATOR_CANCELLED;
  
        ED_object_add_type(C, RNA_enum_get(op->ptr, "type"), loc, rot, enter_editmode, layer);
@@@ -401,7 -400,7 +404,7 @@@ static Object *effector_add_type(bConte
        
        object_add_generic_invoke_options(C, op);
  
 -      if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer))
 +      if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL))
                return NULL;
  
        if(type==PFIELD_GUIDE) {
@@@ -481,7 -480,7 +484,7 @@@ static int object_camera_add_exec(bCont
        
        object_add_generic_invoke_options(C, op);
  
 -      if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer))
 +      if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL))
                return OPERATOR_CANCELLED;
  
        ob= ED_object_add_type(C, OB_CAMERA, loc, rot, FALSE, layer);
@@@ -535,7 -534,7 +538,7 @@@ static int object_metaball_add_exec(bCo
        
        object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called
  
 -      if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer))
 +      if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL))
                return OPERATOR_CANCELLED;
        
        if(obedit==NULL || obedit->type!=OB_MBALL) {
@@@ -604,7 -603,7 +607,7 @@@ static int object_add_text_exec(bContex
        float loc[3], rot[3];
        
        object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called
 -      if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer))
 +      if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL))
                return OPERATOR_CANCELLED;
        
        if(obedit && obedit->type==OB_FONT)
@@@ -645,7 -644,7 +648,7 @@@ static int object_armature_add_exec(bCo
        float loc[3], rot[3];
        
        object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called
 -      if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer))
 +      if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL))
                return OPERATOR_CANCELLED;
        
        if ((obedit==NULL) || (obedit->type != OB_ARMATURE)) {
@@@ -704,20 -703,29 +707,29 @@@ static const char *get_lamp_defname(in
  
  static int object_lamp_add_exec(bContext *C, wmOperator *op)
  {
+       Scene *scene= CTX_data_scene(C);
        Object *ob;
+       Lamp *la;
        int type= RNA_enum_get(op->ptr, "type");
        int enter_editmode;
        unsigned int layer;
        float loc[3], rot[3];
        
        object_add_generic_invoke_options(C, op);
 -      if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer))
 +      if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL))
                return OPERATOR_CANCELLED;
  
        ob= ED_object_add_type(C, OB_LAMP, loc, rot, FALSE, layer);
-       ((Lamp*)ob->data)->type= type;
-       rename_id((ID *)ob, get_lamp_defname(type));
-       rename_id((ID *)ob->data, get_lamp_defname(type));
+       la= (Lamp*)ob->data;
+       la->type= type;
+       rename_id(&ob->id, get_lamp_defname(type));
+       rename_id(&la->id, get_lamp_defname(type));
+       if(scene_use_new_shading_nodes(scene)) {
+               ED_node_shader_default(scene, &la->id);
+               la->use_nodes= 1;
+       }
        
        return OPERATOR_FINISHED;
  }
@@@ -760,7 -768,7 +772,7 @@@ static int group_instance_add_exec(bCon
        float loc[3], rot[3];
        
        object_add_generic_invoke_options(C, op);
 -      if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer))
 +      if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL))
                return OPERATOR_CANCELLED;
  
        if(group) {
@@@ -792,7 -800,7 +804,7 @@@ static int object_speaker_add_exec(bCon
        Scene *scene = CTX_data_scene(C);
  
        object_add_generic_invoke_options(C, op);
 -      if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer))
 +      if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer, NULL))
                return OPERATOR_CANCELLED;
  
        ob= ED_object_add_type(C, OB_SPEAKER, loc, rot, FALSE, layer);
@@@ -1312,11 -1320,7 +1324,11 @@@ static int convert_exec(bContext *C, wm
                        dm= mesh_get_derived_final(scene, newob, CD_MASK_MESH);
                        /* dm= mesh_create_derived_no_deform(ob1, NULL);        this was called original (instead of get_derived). man o man why! (ton) */
  
 -                      DM_to_mesh(dm, newob->data);
 +                      DM_to_mesh(dm, newob->data, newob);
 +
 +                      /* re-tesselation doesn't happen automatic, calling like this is  */
 +                      me= newob->data;
 +                      me->totface = mesh_recalcTesselation(&me->fdata, &me->ldata, &me->pdata, me->mvert, me->totface, me->totloop, me->totpoly, 0, 0);
  
                        dm->release(dm);
                        object_free_modifiers(newob);   /* after derivedmesh calls! */
index 8945d6d26cc7be2c3eecb1c79a94f1b596f0eb1a,2f297926fc738bd37d7bbe64b9715d62647798b6..84ec52a0b4d4b176d484ed1bd0c22570f29f34be
@@@ -66,6 -66,7 +66,7 @@@ struct MCol
  struct MenuType;
  struct Mesh;
  struct ModifierData;
+ struct MovieClip;
  struct MultiresModifierData;
  struct NodeBlurData;
  struct Nurb;
@@@ -80,6 -81,7 +81,7 @@@ struct ScrArea
  struct SculptSession;
  struct ShadeInput;
  struct ShadeResult;
+ struct SpaceClip;
  struct SpaceImage;
  struct SpaceNode;
  struct Tex;
@@@ -105,27 -107,8 +107,27 @@@ struct bPythonConstraint
  struct bConstraintOb;
  struct Context;
  struct ChannelDriver;
 +struct BMEditMesh;
 +struct Heap;
 +struct HeapNode;
 +struct Scene;
  
  /*new render funcs */
 +void EDBM_selectmode_set(struct BMEditMesh *em) {}
 +void EDBM_LoadEditBMesh(struct Scene *scene, struct Object *ob) {}
 +void EDBM_MakeEditBMesh(struct ToolSettings *ts, struct Scene *scene, struct Object *ob) {}
 +void *g_system;
 +
 +struct Heap* BLI_heap_new (void){return NULL;}
 +void BLI_heap_free (struct Heap *heap, void *ptrfreefp) {}
 +struct HeapNode* BLI_heap_insert (struct Heap *heap, float value, void *ptr){return NULL;}
 +void BLI_heap_remove (struct Heap *heap, struct HeapNode *node) {}
 +int BLI_heap_empty (struct Heap *heap) {return 0;}
 +int BLI_heap_size (struct Heap *heap){return 0;}
 +struct HeapNode* BLI_heap_top (struct Heap *heap){return NULL;}
 +void* BLI_heap_popmin (struct Heap *heap){return NULL;}
 +
 +
  float *RE_RenderLayerGetPass(struct RenderLayer *rl, int passtype) {return (float *) NULL;}
  float RE_filter_value(int type, float x) {return 0.0f;}
  struct RenderLayer *RE_GetRenderLayer(struct RenderResult *rr, const char *name) {return (struct RenderLayer *)NULL;}