Removed the unused partial redraw flag from sculpt. It's original purpose was to...
[blender.git] / source / blender / makesdna / DNA_scene_types.h
index e8279604100029e7db3afa324075a98db533adc0..c39712078c2c7d884592a7e2ea23fd179814eebe 100644 (file)
@@ -36,10 +36,8 @@ extern "C" {
 #include "DNA_brush_types.h"
 #include "DNA_vec_types.h"
 #include "DNA_listBase.h"
-#include "DNA_scriptlink_types.h"
 #include "DNA_ID.h"
 
-struct Radio;
 struct Object;
 struct World;
 struct Scene;
@@ -48,6 +46,9 @@ struct Group;
 struct Text;
 struct bNodeTree;
 struct AnimData;
+struct Editing;
+struct SceneStats;
+struct bGPdata;
 
 typedef struct Base {
        struct Base *next, *prev;
@@ -92,6 +93,8 @@ typedef struct FFMpegCodecData {
        int audio_codec;
        int video_bitrate;
        int audio_bitrate;
+       int audio_mixrate;
+       float audio_volume;
        int gop_size;
        int flags;
 
@@ -105,10 +108,13 @@ typedef struct FFMpegCodecData {
 
 
 typedef struct AudioData {
-       int mixrate;
-       float main;             /* Main mix in dB */
+       int mixrate; // 2.5: now in FFMpegCodecData: audio_mixrate
+       float main; // 2.5: now in FFMpegCodecData: audio_volume
+       float speed_of_sound;
+       float doppler_factor;
+       int distance_model;
        short flag;
-       short pad[3];
+       short pad;
 } AudioData;
 
 typedef struct SceneRenderLayer {
@@ -158,9 +164,11 @@ typedef struct SceneRenderLayer {
 #define SCE_PASS_REFRACT       1024
 #define SCE_PASS_INDEXOB       2048
 #define SCE_PASS_UV                    4096
-#define SCE_PASS_RADIO         8192
+#define SCE_PASS_RADIO         8192 /* Radio removed, can use for new GI? */
 #define SCE_PASS_MIST          16384
 
+#define SCE_PASS_RAYHITS       32768
+
 /* note, srl->passflag is treestore element 'nr' in outliner, short still... */
 
 
@@ -169,7 +177,6 @@ typedef struct RenderData {
        struct AviCodecData *avicodecdata;
        struct QuicktimeCodecData *qtcodecdata;
        struct FFMpegCodecData ffcodecdata;
-       struct AudioData audio; /* new in 2.5 */
        
        int cfra, sfra, efra;   /* frames as in 'images' */
        int psfra, pefra;               /* start+end frames of preview range */
@@ -183,10 +190,10 @@ typedef struct RenderData {
        /** For UR edge rendering: give the edges this color */
        float edgeR, edgeG, edgeB;
        
-       short fullscreen, xplay, yplay, freqplay;       /* standalone player */
-       short depth, attrib, rt1, rt2;                  /* standalone player */
+       short fullscreen, xplay, yplay, freqplay;       /* standalone player */  //  XXX deprecated since 2.5
+       short depth, attrib, rt1, rt2;                  /* standalone player */  //  XXX deprecated since 2.5
 
-       short stereomode;       /* standalone player stereo settings */
+       short stereomode;       /* standalone player stereo settings */  //  XXX deprecated since 2.5
        
        short dimensionspreset;         /* for the dimensions presets menu */
        
@@ -218,7 +225,12 @@ typedef struct RenderData {
        short bufflag;
        short quality;
        
-       short rpad, rpad1, rpad2;
+       /**
+        * Render to image editor, fullscreen or to new window.
+        */
+       short displaymode;
+       
+       short rpad1, rpad2;
 
        /**
         * Flags for render settings. Use bit-masking to access the settings.
@@ -230,11 +242,23 @@ typedef struct RenderData {
         */
        int mode;
 
-       /* render engine, octree resolution */
-       short renderer, ocres;
-       short raystructure;
-       short pad4[3];
+       /**
+        * Flags for raytrace settings. Use bit-masking to access the settings.
+        */
+       int raytrace_options;
+       
+       /**
+        * Raytrace acceleration structure
+        */
+       short raytrace_structure;
+
+       /* renderer (deprecated) */
+       short renderer;
 
+       /* octree resolution */
+       short ocres;
+       short pad4;
+       
        /**
         * What to do with the sky/background. Picks sky/premul/key
         * blending for the background
@@ -247,6 +271,7 @@ typedef struct RenderData {
        short osa;
 
        short frs_sec, edgeint;
+
        
        /* safety, border and display rect */
        rctf safety, border;
@@ -271,8 +296,12 @@ typedef struct RenderData {
         * Value used to define filter size for all filter options  */
        float gauss;
        
+       
+       /* color management settings - color profiles, gamma correction, etc */
+       int color_mgt_flag;
+       
        /** post-production settings. Depricated, but here for upwards compat (initialized to 1) */      
-       float postmul, postgamma, posthue, postsat;      
+       float postgamma, posthue, postsat;       
        
        /* Dither noise intensity */
        float dither_intensity;
@@ -320,13 +349,15 @@ typedef struct RenderData {
        short jp2_preset, jp2_depth;
        int rpad3;
 
-       /* Dome variables */
-       short domeres, domemode;
-       short domeangle, dometilt;
-       float domeresbuf;
-       float pad2;
-       struct Text *dometext;
+       /* Dome variables */ //  XXX deprecated since 2.5
+       short domeres, domemode;        //  XXX deprecated since 2.5
+       short domeangle, dometilt;      //  XXX deprecated since 2.5
+       float domeresbuf;       //  XXX deprecated since 2.5
+       float pad2;                     //  XXX deprecated since 2.5
+       struct Text *dometext;  //  XXX deprecated since 2.5
 
+       /* render engine */
+       char engine[32];
 } RenderData;
 
 /* control render convert and shading engine */
@@ -343,6 +374,20 @@ typedef struct RenderProfile {
        
 } RenderProfile;
 
+typedef struct GameDome {
+       short res, mode;
+       short angle, tilt;
+       float resbuf, pad2;
+       struct Text *warptext;
+} GameDome;
+
+#define DOME_FISHEYE                   1
+#define DOME_TRUNCATED_FRONT   2
+#define DOME_TRUNCATED_REAR            3
+#define DOME_ENVMAP                            4
+#define DOME_PANORAM_SPH               5
+#define DOME_NUM_MODES                 6
+
 typedef struct GameFraming {
        float col[3];
        char type, pad1, pad2, pad3;
@@ -352,6 +397,74 @@ typedef struct GameFraming {
 #define SCE_GAMEFRAMING_EXTEND 1
 #define SCE_GAMEFRAMING_SCALE  2
 
+typedef struct GameData {
+
+       /* physics (it was in world)*/
+       float gravity; /*Gravitation constant for the game world*/
+
+       /*
+        * Radius of the activity bubble, in Manhattan length. Objects
+        * outside the box are activity-culled. */
+       float activityBoxRadius; //it's not being used ANYWHERE !!!!!!!!!!!!!!
+       /*
+        * bit 3: (gameengine): Activity culling is enabled.
+        * bit 5: (gameengine) : enable Bullet DBVT tree for view frustrum culling
+       */
+       short mode, flag, matmode, pad[3];
+       short occlusionRes;             /* resolution of occlusion Z buffer in pixel */
+       short physicsEngine;
+       short ticrate, maxlogicstep, physubstep, maxphystep;
+
+       /*  standalone player */
+       struct GameFraming framing;
+       short fullscreen, xplay, yplay, freqplay;
+       short depth, attrib, rt1, rt2;
+
+       /* stereo/dome mode */
+       struct GameDome dome;
+       short stereoflag, stereomode, xsch, ysch; //xsch and ysch can be deleted !!!
+} GameData;
+
+#define STEREO_NOSTEREO                1
+#define STEREO_ENABLED                 2
+#define STEREO_DOME                    3
+
+//#define STEREO_NOSTEREO               1
+#define STEREO_QUADBUFFERED 2
+#define STEREO_ABOVEBELOW       3
+#define STEREO_INTERLACED       4
+#define STEREO_ANAGLYPH                5
+#define STEREO_SIDEBYSIDE      6
+#define STEREO_VINTERLACE      7
+//#define STEREO_DOME          8
+
+/* physicsEngine */
+#define WOPHY_NONE             0
+#define WOPHY_ENJI             1
+#define WOPHY_SUMO             2
+#define WOPHY_DYNAMO   3
+#define WOPHY_ODE              4
+#define WOPHY_BULLET   5
+
+/* GameData.flag */
+#define GAME_ENABLE_ALL_FRAMES                         (1 << 1)
+#define GAME_SHOW_DEBUG_PROPS                          (1 << 2)
+#define GAME_SHOW_FRAMERATE                                    (1 << 3)
+#define GAME_SHOW_PHYSICS                                      (1 << 4)
+#define GAME_DISPLAY_LISTS                                     (1 << 5)
+#define GAME_GLSL_NO_LIGHTS                                    (1 << 6)
+#define GAME_GLSL_NO_SHADERS                           (1 << 7)
+#define GAME_GLSL_NO_SHADOWS                           (1 << 8)
+#define GAME_GLSL_NO_RAMPS                                     (1 << 9)
+#define GAME_GLSL_NO_NODES                                     (1 << 10)
+#define GAME_GLSL_NO_EXTRA_TEX                         (1 << 11)
+#define GAME_IGNORE_DEPRECATION_WARNINGS       (1 << 12)
+
+/* GameData.matmode */
+#define GAME_MAT_TEXFACE       0
+#define GAME_MAT_MULTITEX      1
+#define GAME_MAT_GLSL          2
+
 typedef struct TimeMarker {
        struct TimeMarker *next, *prev;
        int frame;
@@ -359,12 +472,25 @@ typedef struct TimeMarker {
        unsigned int flag;
 } TimeMarker;
 
+typedef struct Paint {
+       /* Array of brushes selected for use in this paint mode */
+       Brush **brushes;
+       int active_brush_index, brush_count;
+       
+       /* WM Paint cursor */
+       void *paint_cursor;
+       unsigned char paint_cursor_col[4];
+
+       int pad;
+} Paint;
+
 typedef struct ImagePaintSettings {
-       struct Brush *brush;
+       Paint paint;
+
        short flag, tool;
        
        /* for projection painting only */
-       short seam_bleed,normal_angle;
+       short seam_bleed, normal_angle;
 
        void *paintcursor;                      /* wm handle */
 } ImagePaintSettings;
@@ -383,8 +509,15 @@ typedef struct ParticleEditSettings {
        ParticleBrushData brush[7]; /* 7 = PE_TOT_BRUSH */
        void *paintcursor;                      /* runtime */
 
-       float emitterdist;
-       int draw_timed;
+       float emitterdist, rt;
+
+       int selectmode;
+       int edittype;
+
+       int draw_step, fade_frames;
+
+       struct Scene *scene;
+       struct Object *object;
 } ParticleEditSettings;
 
 typedef struct TransformOrientation {
@@ -393,26 +526,20 @@ typedef struct TransformOrientation {
        float mat[3][3];
 } TransformOrientation;
 
-struct SculptSession;
-typedef struct Sculpt
-{
-       /* Note! a deep copy of this struct must be done header_info.c's copy_scene function */ 
-       /* Data stored only from entering sculptmode until exiting sculptmode */
-       struct SculptSession *session;
-       struct Brush *brush;
+typedef struct Sculpt {
+       Paint paint;
 
        /* For rotating around a pivot point */
        float pivot[3];
        int flags;
-       /* For the Brush Shape */
-       char texsep;
+
        /* Control tablet input */
        char tablet_size, tablet_strength;
-       char pad[5];
+       char pad[6];
 } Sculpt;
 
 typedef struct VPaint {
-       struct Brush *brush;
+       Paint paint;
 
        float gamma, mul;                       /* should become part of struct Brush? */
        short mode, flag;
@@ -429,7 +556,7 @@ typedef struct VPaint {
 #define VP_SOFT                4
 #define VP_NORMALS     8
 #define VP_SPRAY       16
-#define VP_MIRROR_X    32
+// #define VP_MIRROR_X 32 // depricated in 2.5x use (me->editflag & ME_EDIT_MIRROR_X)
 #define VP_HARD                64
 #define VP_ONLYVGROUP  128
 
@@ -439,19 +566,27 @@ typedef struct ToolSettings {
        VPaint *wpaint;         /* weight paint */
        Sculpt *sculpt;
        
+       /* Vertex groups */
+       float vgroup_weight;
+
        /* Subdivide Settings */
        short cornertype;
        short editbutflag;
        /*Triangle to Quad conversion threshold*/
        float jointrilimit;
-       /* Extrude Tools */
+       /* Editmode Tools */
        float degr; 
        short step;
        short turn; 
        
-       float extr_offs; 
-       float doublimit;
-       
+       float extr_offs;        /* extrude offset */
+       float doublimit;        /* remove doubles limit */
+       float normalsize;       /* size of normals */
+       short automerge;
+
+       /* Selection Mode for Mesh */
+       short selectmode;
+
        /* Primitive Settings */
        /* UV Sphere */
        short segments;
@@ -465,7 +600,6 @@ typedef struct ToolSettings {
        float uvcalc_radius;
        float uvcalc_cubesize;
        float uvcalc_margin;
-       float pad;
        short uvcalc_mapdir;
        short uvcalc_mapalign;
        short uvcalc_flag;
@@ -487,8 +621,11 @@ typedef struct ToolSettings {
        /* Select Group Threshold */
        float select_thresh;
        
-       /* IPO-Editor */
+       /* Graph Editor */
        float clean_thresh;
+
+       /* Auto-Keying Mode */
+       short autokey_mode, autokey_flag;       /* defines in DNA_userdef_types.h */
        
        /* Retopo */
        char retopo_mode;
@@ -515,7 +652,6 @@ typedef struct ToolSettings {
        char  skgen_postpro_passes;
        char  skgen_subdivisions[3];
        char  skgen_multi_level;
-       int   skgen_pad;
        
        /* Skeleton Sketching */
        struct Object *skgen_template;
@@ -529,7 +665,12 @@ typedef struct ToolSettings {
        
        /* Alt+RMB option */
        char edge_mode;
-       char pad3[2];
+
+       /* Transform */
+       short snap_mode, snap_flag, snap_target;
+       short proportional, prop_mode;
+
+       int auto_normalize, intpad; /*auto normalizing mode in wpaint*/
 } ToolSettings;
 
 typedef struct bStats {
@@ -538,6 +679,17 @@ typedef struct bStats {
        int totvert, totface;
 } bStats;
 
+typedef struct UnitSettings {
+       /* Display/Editing unit options for each scene */
+       float scale_length; /* maybe have other unit conversions? */
+       short system;
+       short flag; /* imperial, metric etc */
+} UnitSettings;
+
+typedef struct PhysicsSettings {
+       float gravity[3];
+       int flag;
+} PhysicsSettings;
 
 typedef struct Scene {
        ID id;
@@ -550,52 +702,42 @@ typedef struct Scene {
        struct Image *ima;
        
        ListBase base;
-       struct Base *basact;
+       struct Base *basact;            /* active base */
        struct Object *obedit;          /* name replaces old G.obedit */
        
-       float cursor[3];
+       float cursor[3];                        /* 3d cursor location */
        float twcent[3];                        /* center for transform widget */
        float twmin[3], twmax[3];       /* boundbox of selection for transform widget */
        unsigned int lay;
        
-       /* editmode stuff */
-       float editbutsize;                      /* size of normals */
-       short selectmode;                                               /* for mesh only! */
-       short proportional, prop_mode;
-       short automerge, pad5;
-       
+
        short flag;                                                             /* various settings */
-       short autokey_mode;                                     /* mode for autokeying (defines in DNA_userdef_types.h) */
        
        short use_nodes;
        
        struct bNodeTree *nodetree;     
        
-       void *ed;                                                               /* sequence editor data is allocated here */
-       struct Radio *radio;
+       struct Editing *ed;                                                             /* sequence editor data is allocated here */
        
-       struct GameFraming framing;
-
        struct ToolSettings *toolsettings;              /* default allocated now */
        struct SceneStats *stats;                               /* default allocated now */
 
        /* migrate or replace? depends on some internal things... */
        /* no, is on the right place (ton) */
        struct RenderData r;
-       struct AudioData audio;         /* DEPRICATED 2.5 */
-       
-       ScriptLink scriptlink;
+       struct AudioData audio;
        
        ListBase markers;
        ListBase transform_spaces;
        
-       short jumpframe;
-       short snap_mode, snap_flag, snap_target;
+       ListBase sound_handles;
        
        /* none of the dependancy graph  vars is mean to be saved */
        struct  DagForest *theDag;
        short dagisvalid, dagflags;
-       short pad4, recalc;                             /* recalc = counterpart of ob->recalc */
+       short recalc;                           /* recalc = counterpart of ob->recalc */
+
+       short jumpframe;
 
        /* frame step. */
        int frame_step;
@@ -603,6 +745,19 @@ typedef struct Scene {
        /* User-Defined KeyingSets */
        int active_keyingset;                   /* index of the active KeyingSet. first KeyingSet has index 1, 'none' active is 0, 'add new' is -1 */
        ListBase keyingsets;                    /* KeyingSets for the given frame */
+       
+       /* Game Settings */
+       struct GameFraming framing; // XXX  deprecated since 2.5
+       struct GameData gm;
+
+       /* Units */
+       struct UnitSettings unit;
+       
+       /* Grease Pencil */
+       struct bGPdata *gpd;
+
+       /* Physics simulation settings */
+       struct PhysicsSettings physics_settings;
 } Scene;
 
 
@@ -625,7 +780,7 @@ typedef struct Scene {
 #define R_FIELDSTILL   0x0080
 #define R_RADIO                        0x0100
 #define R_BORDER               0x0200
-#define R_PANORAMA             0x0400
+#define R_PANORAMA             0x0400  /* deprecated as scene option, still used in renderer */
 #define R_CROP                 0x0800
 #define R_COSMO                        0x1000
 #define R_ODDFIELD             0x2000
@@ -647,6 +802,12 @@ typedef struct Scene {
 #define R_TOUCH                        0x800000 /* touch files before rendering */
 #define R_SIMPLIFY             0x1000000
 
+/* displaymode */
+
+#define R_OUTPUT_SCREEN        0
+#define R_OUTPUT_AREA  1
+#define R_OUTPUT_WINDOW        2
+#define R_OUTPUT_FORKED        3
 
 /* filtertype */
 #define R_FILTER_BOX   0
@@ -663,10 +824,16 @@ typedef struct Scene {
 #define R_YAFRAY       1
 
 /* raytrace structure */
-#define R_RAYSTRUCTURE_HIER_BVH_BVH            0
-#define R_RAYSTRUCTURE_HIER_BVH_OCTREE 1
-#define R_RAYSTRUCTURE_SINGLE_OCTREE   2
-#define R_RAYSTRUCTURE_SINGLE_BVH              3
+#define R_RAYSTRUCTURE_AUTO                            0
+#define R_RAYSTRUCTURE_OCTREE                  1
+#define R_RAYSTRUCTURE_BLIBVH                  2
+#define R_RAYSTRUCTURE_VBVH                            3
+#define R_RAYSTRUCTURE_SIMD_SVBVH              4       /* needs SIMD */
+#define R_RAYSTRUCTURE_SIMD_QBVH               5       /* needs SIMD */
+
+/* raytrace_options */
+#define R_RAYTRACE_USE_LOCAL_COORDS            0x0001
+#define R_RAYTRACE_USE_INSTANCES               0x0002
 
 /* scemode (int now) */
 #define R_DOSEQ                                0x0001
@@ -675,7 +842,7 @@ typedef struct Scene {
 #define R_PASSEPARTOUT         0x0004
 #define R_PREVIEWBUTS          0x0008
 #define R_EXTENSION                    0x0010
-#define R_NODE_PREVIEW         0x0020
+#define R_MATNODE_PREVIEW      0x0020
 #define R_DOCOMP                       0x0040
 #define R_COMP_CROP                    0x0080
 #define R_FREE_IMAGE           0x0100
@@ -684,10 +851,11 @@ typedef struct Scene {
 #define R_COMP_FREE                    0x0800
 #define R_NO_IMAGE_LOAD                0x1000
 #define R_NO_TEX                       0x2000
-#define R_STAMP_INFO           0x4000
+#define R_STAMP_INFO           0x4000  /* deprecated */
 #define R_FULL_SAMPLE          0x8000
 #define R_COMP_RERENDER                0x10000
-#define R_RECURS_PROTECTION     0x20000
+#define R_RECURS_PROTECTION    0x20000
+#define R_TEXNODE_PREVIEW      0x40000
 
 /* r->stamp */
 #define R_STAMP_TIME   0x0001
@@ -700,6 +868,8 @@ typedef struct Scene {
 #define R_STAMP_MARKER 0x0080
 #define R_STAMP_FILENAME       0x0100
 #define R_STAMP_SEQSTRIP       0x0200
+#define R_STAMP_RENDERTIME     0x0400
+#define R_STAMP_ALL            (R_STAMP_TIME|R_STAMP_FRAME|R_STAMP_DATE|R_STAMP_CAMERA|R_STAMP_SCENE|R_STAMP_NOTE|R_STAMP_MARKER|R_STAMP_FILENAME|R_STAMP_SEQSTRIP|R_STAMP_RENDERTIME)
 
 /* alphamode */
 #define R_ADDSKY               0
@@ -711,6 +881,9 @@ typedef struct Scene {
 #define R_PLANES32             32
 #define R_PLANESBW             8
 
+/* color_mgt_flag */
+#define R_COLOR_MANAGEMENT     1
+
 /* imtype */
 #define R_TARGA                0
 #define R_IRIS         1
@@ -736,6 +909,9 @@ typedef struct Scene {
 #define R_MULTILAYER   28
 #define R_DDS                  29
 #define R_JP2                  30
+#define R_H264         31
+#define R_XVID         32
+#define R_THEORA               33
 
 /* subimtype, flag options for imtype */
 #define R_OPENEXR_HALF 1
@@ -773,10 +949,15 @@ typedef struct Scene {
 #define MINFRAME       1
 #define MINFRAMEF      1.0f
 
+/* (minimum frame number for current-frame) */
+#define MINAFRAME      -300000
+#define MINAFRAMEF     -300000.0f
+
 /* depricate this! */
 #define TESTBASE(v3d, base)    ( ((base)->flag & SELECT) && ((base)->lay & v3d->lay) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0) )
 #define TESTBASELIB(v3d, base) ( ((base)->flag & SELECT) && ((base)->lay & v3d->lay) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0))
-#define TESTBASELIB_BGMODE(base)   ( ((base)->flag & SELECT) && ((base)->lay & (v3d ? v3d->lay : scene->lay)) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0))
+#define TESTBASELIB_BGMODE(v3d, scene, base)   ( ((base)->flag & SELECT) && ((base)->lay & (v3d ? v3d->lay : scene->lay)) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0))
+#define BASE_EDITABLE_BGMODE(v3d, scene, base)   (((base)->lay & (v3d ? v3d->lay : scene->lay)) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0))
 #define BASE_SELECTABLE(v3d, base)      ((base->lay & v3d->lay) && (base->object->restrictflag & (OB_RESTRICT_SELECT|OB_RESTRICT_VIEW))==0)
 #define FIRSTBASE              scene->base.first
 #define LASTBASE               scene->base.last
@@ -801,27 +982,28 @@ typedef struct Scene {
 
 /* base->flag is in DNA_object_types.h */
 
-/* scene->snap_flag */
+/* toolsettings->snap_flag */
 #define SCE_SNAP                               1
 #define SCE_SNAP_ROTATE                        2
 #define SCE_SNAP_PEEL_OBJECT   4
-/* scene->snap_target */
+#define SCE_SNAP_PROJECT               8
+/* toolsettings->snap_target */
 #define SCE_SNAP_TARGET_CLOSEST        0
 #define SCE_SNAP_TARGET_CENTER 1
 #define SCE_SNAP_TARGET_MEDIAN 2
 #define SCE_SNAP_TARGET_ACTIVE 3
-/* scene->snap_mode */
+/* toolsettings->snap_mode */
 #define SCE_SNAP_MODE_VERTEX   0
 #define SCE_SNAP_MODE_EDGE             1
 #define SCE_SNAP_MODE_FACE             2
 #define SCE_SNAP_MODE_VOLUME   3
 
-/* sce->selectmode */
+/* toolsettings->selectmode */
 #define SCE_SELECT_VERTEX      1 /* for mesh */
 #define SCE_SELECT_EDGE                2
 #define SCE_SELECT_FACE                4
 
-/* sce->selectmode for particles */
+/* toolsettings->particle.selectmode for particles */
 #define SCE_SELECT_PATH                1
 #define SCE_SELECT_POINT       2
 #define SCE_SELECT_END         4
@@ -829,7 +1011,7 @@ typedef struct Scene {
 /* sce->recalc (now in use by previewrender) */
 #define SCE_PRV_CHANGED                1
 
-/* sce->prop_mode (proportional falloff) */
+/* toolsettings->prop_mode (proportional falloff) */
 #define PROP_SMOOTH            0
 #define PROP_SPHERE            1
 #define PROP_ROOT              2
@@ -838,9 +1020,15 @@ typedef struct Scene {
 #define PROP_CONST             5
 #define PROP_RANDOM            6
 
+/* toolsettings->proportional */
+#define PROP_EDIT_OFF                  0
+#define PROP_EDIT_ON                   1
+#define PROP_EDIT_CONNECTED    2
+
 /* sce->flag */
 #define SCE_DS_SELECTED                        (1<<0)
 #define SCE_DS_COLLAPSED               (1<<1)
+#define SCE_NLA_EDIT_ON                        (1<<2)
 
 
        /* return flag next_object function */
@@ -864,18 +1052,16 @@ typedef enum SculptFlags {
        SCULPT_SYMM_Y = 2,
        SCULPT_SYMM_Z = 4,
        SCULPT_INPUT_SMOOTH = 8,
-       SCULPT_DRAW_FAST = 16,
        SCULPT_DRAW_BRUSH = 32,
        SCULPT_LOCK_X = 64,
        SCULPT_LOCK_Y = 128,
        SCULPT_LOCK_Z = 256
 } SculptFlags;
 
-/* toolsettings->imagepaint_flag */
+/* ImagePaintSettings.flag */
 #define IMAGEPAINT_DRAWING                             1
 #define IMAGEPAINT_DRAW_TOOL                   2
 #define IMAGEPAINT_DRAW_TOOL_DRAWING   4
-
 /* projection painting only */
 #define IMAGEPAINT_PROJECT_DISABLE             8       /* Non projection 3D painting */
 #define IMAGEPAINT_PROJECT_XRAY                        16
@@ -896,7 +1082,7 @@ typedef enum SculptFlags {
 
 /* toolsettings->uv_selectmode */
 #define UV_SELECT_VERTEX       1
-#define UV_SELECT_EDGE         2 /* not implemented */
+#define UV_SELECT_EDGE         2
 #define UV_SELECT_FACE         4
 #define UV_SELECT_ISLAND       8
 
@@ -912,9 +1098,10 @@ typedef enum SculptFlags {
 #define PE_LOCK_FIRST                  2
 #define PE_DEFLECT_EMITTER             4
 #define PE_INTERPOLATE_ADDED   8
-#define PE_SHOW_CHILD                  16
-#define PE_SHOW_TIME                   32
+#define PE_DRAW_PART                   16
 #define PE_X_MIRROR                            64
+#define PE_FADE_TIME                   128
+#define PE_AUTO_VELOCITY               256
 
 /* toolsetting->particle brushtype */
 #define PE_BRUSH_NONE          -1
@@ -923,11 +1110,15 @@ typedef enum SculptFlags {
 #define PE_BRUSH_LENGTH                2
 #define PE_BRUSH_PUFF          3
 #define PE_BRUSH_ADD           4
-#define PE_BRUSH_WEIGHT                5
-#define PE_BRUSH_SMOOTH                6
+#define PE_BRUSH_SMOOTH                5
 
 /* this must equal ParticleEditSettings.brush array size */
-#define PE_TOT_BRUSH           7  
+#define PE_TOT_BRUSH           6
+
+/* tooksettings->particle edittype */
+#define PE_TYPE_PARTICLES      0
+#define PE_TYPE_SOFTBODY       1
+#define PE_TYPE_CLOTH          2
 
 /* toolsettings->retopo_mode */
 #define RETOPO 1
@@ -980,9 +1171,22 @@ typedef enum SculptFlags {
 #define        SK_RETARGET_AUTONAME                    1
 
 /* toolsettings->skgen_retarget_roll */
+#define        SK_RETARGET_ROLL_NONE                   0
 #define        SK_RETARGET_ROLL_VIEW                   1
 #define        SK_RETARGET_ROLL_JOINT                  2
 
+/* physics_settings->flag */
+#define PHYS_GLOBAL_GRAVITY            1
+
+/* UnitSettings */
+
+/* UnitSettings->system */
+#define        USER_UNIT_NONE                  0
+#define        USER_UNIT_METRIC                1
+#define        USER_UNIT_IMPERIAL              2
+/* UnitSettings->flag */
+#define        USER_UNIT_OPT_SPLIT             1
+
 
 #ifdef __cplusplus
 }