[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14922] branches/apricot: experemental ID versioning to know what data has changed to avoid re-exporting entire levels .
Campbell Barton
ideasman42 at gmail.com
Thu May 22 15:32:51 CEST 2008
Revision: 14922
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14922
Author: campbellbarton
Date: 2008-05-22 15:32:51 +0200 (Thu, 22 May 2008)
Log Message:
-----------
experemental ID versioning to know what data has changed to avoid re-exporting entire levels. (with py api)
also scriptlinks for lamps and material updates.
Modified Paths:
--------------
branches/apricot/release/scripts/animation_proto.py
branches/apricot/source/blender/blenkernel/BKE_library.h
branches/apricot/source/blender/blenkernel/intern/library.c
branches/apricot/source/blender/blenkernel/intern/object.c
branches/apricot/source/blender/makesdna/DNA_ID.h
branches/apricot/source/blender/python/api2_2x/gen_library.c
branches/apricot/source/blender/python/api2_2x/gen_library.h
branches/apricot/source/blender/src/buttons_shading.c
Modified: branches/apricot/release/scripts/animation_proto.py
===================================================================
--- branches/apricot/release/scripts/animation_proto.py 2008-05-22 09:29:42 UTC (rev 14921)
+++ branches/apricot/release/scripts/animation_proto.py 2008-05-22 13:32:51 UTC (rev 14922)
@@ -190,6 +190,8 @@
def SET_ACTIVE(km):
blend = 0
+ ok = False
+
for s,a in strips:
if a.name == km[KMNAME]:
ok = True
@@ -385,9 +387,8 @@
if not ob:
print 'No Active Object'
return
-
+
animloop(sce, rend, ob)
-
rend.cFrame = back_cfra
rend.sFrame = back_sfra
Modified: branches/apricot/source/blender/blenkernel/BKE_library.h
===================================================================
--- branches/apricot/source/blender/blenkernel/BKE_library.h 2008-05-22 09:29:42 UTC (rev 14921)
+++ branches/apricot/source/blender/blenkernel/BKE_library.h 2008-05-22 13:32:51 UTC (rev 14922)
@@ -70,5 +70,8 @@
void flag_listbase_ids(ListBase *lb, short flag, short value);
void flag_all_listbases_ids(short flag, short value);
+/* APRICOT HACK */
+void id_version_bump(struct ID *id);
+/* END APRICOT HACK */
#endif
Modified: branches/apricot/source/blender/blenkernel/intern/library.c
===================================================================
--- branches/apricot/source/blender/blenkernel/intern/library.c 2008-05-22 09:29:42 UTC (rev 14921)
+++ branches/apricot/source/blender/blenkernel/intern/library.c 2008-05-22 13:32:51 UTC (rev 14922)
@@ -1105,3 +1105,11 @@
new_id(lb, id, name);
}
+/* APRICOT HACK */
+void id_version_bump(ID *id)
+{
+ id->version++;
+ /*printf("VER %d %s\n", id->version, id->name);*/
+}
+/* END APRICOT HACK */
+
Modified: branches/apricot/source/blender/blenkernel/intern/object.c
===================================================================
--- branches/apricot/source/blender/blenkernel/intern/object.c 2008-05-22 09:29:42 UTC (rev 14921)
+++ branches/apricot/source/blender/blenkernel/intern/object.c 2008-05-22 13:32:51 UTC (rev 14922)
@@ -2235,6 +2235,8 @@
else
where_is_object(ob);
if (G.f & G_DOSCRIPTLINKS) BPY_do_pyscript((ID *)ob, SCRIPT_OBJECTUPDATE);
+
+ id_version_bump((ID *)ob);
}
if(ob->recalc & OB_RECALC_DATA) {
@@ -2311,6 +2313,7 @@
}
}
if (G.f & G_DOSCRIPTLINKS) BPY_do_pyscript((ID *)ob, SCRIPT_OBDATAUPDATE);
+ if (ob->data) id_version_bump((ID *)ob->data);
}
/* the no-group proxy case, we call update */
Modified: branches/apricot/source/blender/makesdna/DNA_ID.h
===================================================================
--- branches/apricot/source/blender/makesdna/DNA_ID.h 2008-05-22 09:29:42 UTC (rev 14921)
+++ branches/apricot/source/blender/makesdna/DNA_ID.h 2008-05-22 13:32:51 UTC (rev 14922)
@@ -101,6 +101,8 @@
short flag;
int icon_id;
IDProperty *properties;
+ int version; /* if data changes, bump this APRICOT HACK */
+ char pad0[4];
} ID;
/**
Modified: branches/apricot/source/blender/python/api2_2x/gen_library.c
===================================================================
--- branches/apricot/source/blender/python/api2_2x/gen_library.c 2008-05-22 09:29:42 UTC (rev 14921)
+++ branches/apricot/source/blender/python/api2_2x/gen_library.c 2008-05-22 13:32:51 UTC (rev 14922)
@@ -140,6 +140,30 @@
return PyInt_FromLong(id->us);
}
+/* APRICOT HACK */
+PyObject *GenericLib_getVersion( void *self )
+{
+ ID *id = ((BPy_GenericLib *)self)->id;
+ if (!id) return ( EXPP_ReturnPyObjError( PyExc_RuntimeError, "data has been removed" ) );
+ return PyLong_FromLong(id->version);
+}
+int GenericLib_setVersion( void *self, PyObject *value )
+{
+
+ long param;
+ ID *id = ((BPy_GenericLib *)self)->id;
+ if (!id) return ( EXPP_ReturnIntError( PyExc_RuntimeError, "data has been removed" ) );
+
+ param = PyLong_AsLong( value );
+ if( PyErr_Occurred() )
+ return EXPP_ReturnIntError( PyExc_TypeError,
+ "could not set the ID version, value not a number of too large" );
+
+ id->version = param;
+ return 0;
+}
+/* END APRICOT HACK */
+
PyObject *GenericLib_getProperties( void *self )
{
ID *id = ((BPy_GenericLib *)self)->id;
Modified: branches/apricot/source/blender/python/api2_2x/gen_library.h
===================================================================
--- branches/apricot/source/blender/python/api2_2x/gen_library.h 2008-05-22 09:29:42 UTC (rev 14921)
+++ branches/apricot/source/blender/python/api2_2x/gen_library.h 2008-05-22 13:32:51 UTC (rev 14922)
@@ -60,6 +60,10 @@
{"tag",\
(getter)GenericLib_getTag, (setter)GenericLib_setTag,\
"temporary tag",\
+ NULL},\
+ {"version",\
+ (getter)GenericLib_getVersion, (setter)GenericLib_setVersion,\
+ "temporary tag",\
NULL}
/* Dummy struct for getting the ID from a libdata BPyObject */
@@ -78,6 +82,11 @@
PyObject *GenericLib_getUsers( void *self );
PyObject *GenericLib_getProperties( void *self );
+/* APRICOT HACK */
+PyObject *GenericLib_getVersion( void *self );
+int GenericLib_setVersion( void *self, PyObject *value );
+/* END APRICOT HACK */
+
/* use this for oldstyle somedata.getName("name") */
PyObject * GenericLib_setName_with_method( void *self, PyObject *value );
Modified: branches/apricot/source/blender/src/buttons_shading.c
===================================================================
--- branches/apricot/source/blender/src/buttons_shading.c 2008-05-22 09:29:42 UTC (rev 14921)
+++ branches/apricot/source/blender/src/buttons_shading.c 2008-05-22 13:32:51 UTC (rev 14922)
@@ -115,6 +115,10 @@
#include "GPU_material.h"
+
+/* APRICOT HACK */
+extern void BPY_do_pyscript( ID * id, short event );
+
/* -----includes for this file specific----- */
#include "butspace.h" // own module
@@ -3037,12 +3041,23 @@
// BIF_previewdraw(); push/pop!
break;
case B_MATPRV:
- if(ma) end_render_material(ma); /// temporal... 3d preview
+ if(ma) {
+ end_render_material(ma); /// temporal... 3d preview
+
+ /* APRICOT HACK */
+ id_version_bump((ID *)ma);
+ BPY_do_pyscript((ID *)ma, SCRIPT_OBDATAUPDATE);
+ }
BIF_preview_changed(ID_MA);
allqueue(REDRAWBUTSSHADING, 0);
shade_buttons_change_3d();
break;
case B_LAMPPRV:
+ if (OBACT && OBACT->type==OB_LAMP) {
+ /* APRICOT HACK */
+ id_version_bump((ID *)OBACT->data);
+ BPY_do_pyscript((ID *)OBACT, SCRIPT_OBDATAUPDATE);
+ }
BIF_preview_changed(ID_LA);
allqueue(REDRAWBUTSSHADING, 0);
shade_buttons_change_3d();
@@ -3069,6 +3084,12 @@
}
break;
case B_TEXCLEAR:
+ /* APRICOT HACK */
+ if(ma) {
+ id_version_bump((ID *)ma);
+ BPY_do_pyscript((ID *)ma, SCRIPT_OBDATAUPDATE);
+ }
+
mtex= ma->mtex[(int) ma->texact ];
if(mtex) {
if(mtex->tex) mtex->tex->id.us--;
@@ -3082,6 +3103,11 @@
}
break;
case B_MTEXCOPY:
+ /* APRICOT HACK */
+ if(ma) {
+ id_version_bump((ID *)ma);
+ BPY_do_pyscript((ID *)ma, SCRIPT_OBDATAUPDATE);
+ }
if(ma && ma->mtex[(int)ma->texact] ) {
mtex= ma->mtex[(int)ma->texact];
if(mtex->tex==NULL) {
@@ -3094,6 +3120,11 @@
}
break;
case B_MTEXPASTE:
+ /* APRICOT HACK */
+ if(ma) {
+ id_version_bump((ID *)ma);
+ BPY_do_pyscript((ID *)ma, SCRIPT_OBDATAUPDATE);
+ }
if(ma && mtexcopied && mtexcopybuf.tex) {
if(ma->mtex[(int)ma->texact]==NULL )
ma->mtex[(int)ma->texact]= MEM_mallocN(sizeof(MTex), "mtex");
@@ -3109,6 +3140,11 @@
}
break;
case B_MTEXMOVEUP:
+ /* APRICOT HACK */
+ if(ma) {
+ id_version_bump((ID *)ma);
+ BPY_do_pyscript((ID *)ma, SCRIPT_OBDATAUPDATE);
+ }
if(ma && (int)ma->texact > 0) {
int mtexuse = ma->septex & (1<<((int)ma->texact));
ma->septex &= ~(1<<((int)ma->texact));
@@ -3123,6 +3159,11 @@
}
break;
case B_MTEXMOVEDOWN:
+ /* APRICOT HACK */
+ if(ma) {
+ id_version_bump((ID *)ma);
+ BPY_do_pyscript((ID *)ma, SCRIPT_OBDATAUPDATE);
+ }
if(ma && (int)ma->texact < MAX_MTEX-1) {
int mtexuse = ma->septex & (1<<((int)ma->texact));
ma->septex &= ~(1<<((int)ma->texact));
@@ -3137,6 +3178,11 @@
}
break;
case B_MATZTRANSP:
+ /* APRICOT HACK */
+ if(ma) {
+ id_version_bump((ID *)ma);
+ BPY_do_pyscript((ID *)ma, SCRIPT_OBDATAUPDATE);
+ }
if(ma) {
ma->mode &= ~MA_RAYTRANSP;
//BIF_view3d_previewrender_signal(curarea, PR_DBASE|PR_DISPRECT); /// temporal... 3d preview
@@ -3145,6 +3191,11 @@
}
break;
case B_MATRAYTRANSP:
+ /* APRICOT HACK */
+ if(ma) {
+ id_version_bump((ID *)ma);
+ BPY_do_pyscript((ID *)ma, SCRIPT_OBDATAUPDATE);
+ }
if(ma) {
ma->mode &= ~MA_ZTRA;
if(ma) end_render_material(ma); /// temporal... 3d preview
@@ -3153,6 +3204,11 @@
}
break;
case B_MATCOLORBAND:
+ /* APRICOT HACK */
+ if(ma) {
+ id_version_bump((ID *)ma);
+ BPY_do_pyscript((ID *)ma, SCRIPT_OBDATAUPDATE);
+ }
if(ma) {
if(ma->mode & MA_RAMP_COL)
if(ma->ramp_col==NULL) ma->ramp_col= add_colorband(0);
@@ -3166,6 +3222,11 @@
}
break;
case B_MAT_USENODES:
+ /* APRICOT HACK */
+ if(ma) {
+ id_version_bump((ID *)ma);
+ BPY_do_pyscript((ID *)ma, SCRIPT_OBDATAUPDATE);
+ }
ma= G.buts->lockpoin; /* use base material instead */
if(ma) {
if(ma->use_nodes && ma->nodetree==NULL) {
@@ -3179,6 +3240,11 @@
}
break;
case B_MAT_VCOL_PAINT:
+ /* APRICOT HACK */
+ if(ma) {
+ id_version_bump((ID *)ma);
+ BPY_do_pyscript((ID *)ma, SCRIPT_OBDATAUPDATE);
+ }
if(ma) {
ma->mode &= ~MA_VERTEXCOL;
BIF_preview_changed(ID_MA);
@@ -3186,6 +3252,11 @@
}
break;
case B_MAT_VCOL_LIGHT:
+ /* APRICOT HACK */
+ if(ma) {
+ id_version_bump((ID *)ma);
+ BPY_do_pyscript((ID *)ma, SCRIPT_OBDATAUPDATE);
+ }
if(ma) {
ma->mode &= ~MA_VERTEXCOLP;
BIF_preview_changed(ID_MA);
@@ -3194,6 +3265,11 @@
break;
case B_MAT_PARTICLE:
+ /* APRICOT HACK */
+ if(ma) {
+ id_version_bump((ID *)ma);
+ BPY_do_pyscript((ID *)ma, SCRIPT_OBDATAUPDATE);
+ }
if(ma) {
Base *base;
Object *ob;
More information about the Bf-blender-cvs
mailing list