2.5/Sculpt:
authorNicholas Bishop <nicholasbishop@gmail.com>
Mon, 17 Aug 2009 16:08:09 +0000 (16:08 +0000)
committerNicholas Bishop <nicholasbishop@gmail.com>
Mon, 17 Aug 2009 16:08:09 +0000 (16:08 +0000)
* Hopefully fixed the tablet pressure in sculpt mode? Can't test because Blender isn't seeing my tablet.

source/blender/blenkernel/intern/paint.c
source/blender/editors/sculpt_paint/sculpt.c

index 54192afb904dddcc77f5243e43074c0437d5ae49..80016f23d7c5525ef0e985a7bab023995095a4c3 100644 (file)
@@ -87,8 +87,10 @@ void paint_brush_set(Paint *p, Brush *br)
                        
                }
                
-               if(!found)
+               if(!found) {
                        paint_brush_slot_add(p);
+                       id_us_plus(&br->id);
+               }
                
                /* Make sure the current slot is the new brush */
                p->brushes[p->active_brush_index] = br;
index 20b13087348daaf0c9bb0e057c8932bacd414cec..2a4c553a94c35bc62bc7d80e7dbd19a90242fa6b 100644 (file)
@@ -1272,6 +1272,7 @@ static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, PointerR
                RNA_float_get_array(ptr, "location", cache->true_location);
        cache->flip = RNA_boolean_get(ptr, "flip");
        RNA_int_get_array(ptr, "mouse", cache->mouse);
+       cache->pressure = RNA_float_get(ptr, "pressure");
        
        /* Truly temporary data that isn't stored in properties */
 
@@ -1467,17 +1468,25 @@ static void sculpt_brush_stroke_add_step(bContext *C, wmOperator *op, wmEvent *e
        SculptSession *ss = CTX_data_active_object(C)->sculpt;
        StrokeCache *cache = ss->cache;
        PointerRNA itemptr;
-       float cur_depth;
+       float cur_depth, pressure = 1;
        float center[3];
 
        cur_depth = read_cached_depth(&cache->vc, mouse[0], mouse[1]);
        unproject(ss->cache->mats, center, mouse[0], mouse[1], cur_depth);
+
+       /* Tablet */
+       if(event->custom == EVT_DATA_TABLET) {
+               wmTabletData *wmtab= event->customdata;
+               if(wmtab->Active != EVT_TABLET_NONE)
+                       pressure= wmtab->Pressure;
+       }
                                
        /* Add to stroke */
        RNA_collection_add(op->ptr, "stroke", &itemptr);
        RNA_float_set_array(&itemptr, "location", center);
        RNA_int_set_array(&itemptr, "mouse", mouse);
        RNA_boolean_set(&itemptr, "flip", event->shift);
+       RNA_float_set(&itemptr, "pressure", pressure);
        sculpt_update_cache_variants(sd, ss, &itemptr);
                                
        sculpt_restore_mesh(sd, ss);