branches/blender-2.47

Merge from trunk:
	Revision: 15521
	Revision: 15523
	Revision: 15524
	Revision: 15527
	Revision: 15529
	Revision: 15537
	Revision: 15543
	Revision: 15545
	Revision: 15548
	Revision: 15553
This commit is contained in:
Diego Borghetti 2008-07-13 16:57:24 +00:00
parent c4f8536ec7
commit 83f6a9d1b4
12 changed files with 94 additions and 46 deletions

14
README
View File

@ -24,22 +24,22 @@ dir to one of these locations (your home directory being recommended).
-------------------------------------Links--------------------------------------
Getting Involved:
http://www.blender.org/docs/get_involved.html
http://www.blender.org/community/get-involved
Community:
http://www.blender3d.org/Community/
http://www.blender.org/Community
Main blender development site:
http://www.blender.org/
http://www.blender.org
The Blender project homepage:
http://projects.blender.org/projects/bf-blender/
http://projects.blender.org/projects/bf-blender
Documentation:
http://www.blender.org/modules.php?op=modload&name=documentation&file=index
http://www.blender.org/education-help
Bug tracker:
http://projects.blender.org/tracker/?atid=125&group_id=9&func=browse
http://www.blender.org/development/report-a-bug
Feature request tracker:
http://projects.blender.org/tracker/?atid=128&group_id=9&func=browse
http://wiki.blender.org/index.php/Requests

View File

@ -459,9 +459,10 @@ int BKE_ptcache_object_reset(Object *ob, int mode)
PTCacheID pid;
ParticleSystem *psys;
ModifierData *md;
int reset;
int reset, skip;
reset= 0;
skip= 0;
if(ob->soft) {
BKE_ptcache_id_from_softbody(&pid, ob, ob->soft);
@ -469,11 +470,18 @@ int BKE_ptcache_object_reset(Object *ob, int mode)
}
for(psys=ob->particlesystem.first; psys; psys=psys->next) {
BKE_ptcache_id_from_particles(&pid, ob, psys);
reset |= BKE_ptcache_id_reset(&pid, mode);
/* Baked softbody hair has to be checked first, because we don't want to reset */
/* particles or softbody in that case -jahka */
if(psys->soft) {
BKE_ptcache_id_from_softbody(&pid, ob, psys->soft);
if(mode == PSYS_RESET_ALL || !(psys->part->type == PART_HAIR && (pid.cache->flag & PTCACHE_BAKED)))
reset |= BKE_ptcache_id_reset(&pid, mode);
else
skip = 1;
}
if(skip == 0) {
BKE_ptcache_id_from_particles(&pid, ob, psys);
reset |= BKE_ptcache_id_reset(&pid, mode);
}
}

View File

@ -1722,6 +1722,7 @@ void BLI_where_am_i(char *fullname, const char *name)
path = br_find_exe( NULL );
if (path) {
strcpy(fullname, path);
free(path);
return;
}
#endif

View File

@ -203,6 +203,7 @@ void RE_make_stars(Render *re, void (*initfunc)(void),
else stargrid *= 1.0; /* then it draws fewer */
if(re) MTC_Mat4Invert(mat, re->viewmat);
else MTC_Mat4One(mat);
/* BOUNDING BOX CALCULATION
* bbox goes from z = loc_near_var | loc_far_var,

View File

@ -513,7 +513,6 @@ void do_common_editbuts(unsigned short event) // old name, is a mix of object an
} else {
editmesh_deselect_by_material(G.obedit->actcol-1);
}
allqueue(REDRAWVIEW3D, 0);
}
else if ELEM(G.obedit->type, OB_CURVE, OB_SURF) {
nu= editNurb.first;
@ -553,8 +552,9 @@ void do_common_editbuts(unsigned short event) // old name, is a mix of object an
nu= nu->next;
}
BIF_undo_push("Select material index");
allqueue(REDRAWVIEW3D, 0);
}
allqueue(REDRAWIMAGE, 0);
allqueue(REDRAWVIEW3D, 0);
}
countall();
break;

View File

@ -2864,15 +2864,15 @@ static void lamp_panel_lamp(Object *ob, Lamp *la)
uiBlockSetCol(block, TH_BUT_SETTING1);
uiDefButS(block, MENU, B_LAMPREDRAW, "Falloff %t|Constant %x0|Inverse Linear %x1|Inverse Square %x2|Custom Curve %x3|Lin/Quad Weighted %x4|",
10,150,100,19, &la->falloff_type, 0,0,0,0, "Lamp falloff - intensity decay with distance");
uiDefButBitS(block, TOG, LA_SPHERE, REDRAWVIEW3D,"Sphere", 10,130,100,19,&la->mode, 0, 0, 0, 0, "Sets light intensity to zero for objects beyond the distance value");
uiDefButBitS(block, TOG, LA_SPHERE, B_LAMPPRV,"Sphere", 10,130,100,19,&la->mode, 0, 0, 0, 0, "Sets light intensity to zero for objects beyond the distance value");
}
uiBlockBeginAlign(block);
uiBlockSetCol(block, TH_BUT_SETTING1);
uiDefButBitS(block, TOG, LA_LAYER, 0,"Layer", 10,70,100,19,&la->mode, 0, 0, 0, 0, "Illuminates objects in the same layer as the lamp only");
uiDefButBitS(block, TOG, LA_NEG, B_LAMPPRV,"Negative", 10,50,100,19,&la->mode, 0, 0, 0, 0, "Sets lamp to cast negative light");
uiDefButBitS(block, TOG, LA_NO_DIFF, 0,"No Diffuse", 10,30,100,19,&la->mode, 0, 0, 0, 0, "Disables diffuse shading of material illuminated by this lamp");
uiDefButBitS(block, TOG, LA_NO_SPEC, 0,"No Specular", 10,10,100,19,&la->mode, 0, 0, 0, 0, "Disables specular shading of material illuminated by this lamp");
uiDefButBitS(block, TOG, LA_NO_DIFF, B_LAMPPRV,"No Diffuse", 10,30,100,19,&la->mode, 0, 0, 0, 0, "Disables diffuse shading of material illuminated by this lamp");
uiDefButBitS(block, TOG, LA_NO_SPEC, B_LAMPPRV,"No Specular", 10,10,100,19,&la->mode, 0, 0, 0, 0, "Disables specular shading of material illuminated by this lamp");
uiBlockEndAlign(block);
uiBlockSetCol(block, TH_AUTO);

View File

@ -148,7 +148,7 @@ void winqreadsoundspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
first= 0;
CFRA= cfra;
update_for_newframe();
force_draw_plus(SPACE_VIEW3D, 1);
force_draw_all(0);
}
else PIL_sleep_ms(30);

View File

@ -4439,7 +4439,10 @@ static void winqreadinfospace(ScrArea *sa, void *spacedata, BWinEvent *evt)
switch(event) {
case UI_BUT_EVENT:
if(val==REDRAWTIME) allqueue(REDRAWTIME, 0);
if(val==REDRAWTIME) {
allqueue(REDRAWTIME, 0);
addqueue(sa->win, REDRAW, 1);
}
else if(val==B_ADD_THEME) {
bTheme *btheme, *new;
@ -4840,9 +4843,9 @@ static void winqreadseqspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
if( cfra!=CFRA || first ) {
first= 0;
CFRA= cfra;
force_draw(0);
force_draw_all(0);
update_for_newframe(); /* for audio scrubbing */
}
else PIL_sleep_ms(30);

View File

@ -566,9 +566,9 @@ static unsigned int mcol_blend(unsigned int col1, unsigned int col2, int fac)
cp= (char *)&col;
cp[0]= 255;
cp[1]= (mfac*cp1[1]+fac*cp2[1])>>8;
cp[2]= (mfac*cp1[2]+fac*cp2[2])>>8;
cp[3]= (mfac*cp1[3]+fac*cp2[3])>>8;
cp[1]= (mfac*cp1[1]+fac*cp2[1])/255;
cp[2]= (mfac*cp1[2]+fac*cp2[2])/255;
cp[3]= (mfac*cp1[3]+fac*cp2[3])/255;
return col;
}
@ -586,11 +586,11 @@ static unsigned int mcol_add(unsigned int col1, unsigned int col2, int fac)
cp= (char *)&col;
cp[0]= 255;
temp= cp1[1] + ((fac*cp2[1])>>8);
temp= cp1[1] + ((fac*cp2[1])/255);
if(temp>254) cp[1]= 255; else cp[1]= temp;
temp= cp1[2] + ((fac*cp2[2])>>8);
temp= cp1[2] + ((fac*cp2[2])/255);
if(temp>254) cp[2]= 255; else cp[2]= temp;
temp= cp1[3] + ((fac*cp2[3])>>8);
temp= cp1[3] + ((fac*cp2[3])/255);
if(temp>254) cp[3]= 255; else cp[3]= temp;
return col;
@ -609,11 +609,11 @@ static unsigned int mcol_sub(unsigned int col1, unsigned int col2, int fac)
cp= (char *)&col;
cp[0]= 255;
temp= cp1[1] - ((fac*cp2[1])>>8);
temp= cp1[1] - ((fac*cp2[1])/255);
if(temp<0) cp[1]= 0; else cp[1]= temp;
temp= cp1[2] - ((fac*cp2[2])>>8);
temp= cp1[2] - ((fac*cp2[2])/255);
if(temp<0) cp[2]= 0; else cp[2]= temp;
temp= cp1[3] - ((fac*cp2[3])>>8);
temp= cp1[3] - ((fac*cp2[3])/255);
if(temp<0) cp[3]= 0; else cp[3]= temp;
return col;
@ -635,9 +635,9 @@ static unsigned int mcol_mul(unsigned int col1, unsigned int col2, int fac)
/* first mul, then blend the fac */
cp[0]= 255;
cp[1]= (mfac*cp1[1] + fac*((cp2[1]*cp1[1])>>8) )>>8;
cp[2]= (mfac*cp1[2] + fac*((cp2[2]*cp1[2])>>8) )>>8;
cp[3]= (mfac*cp1[3] + fac*((cp2[3]*cp1[3])>>8) )>>8;
cp[1]= (mfac*cp1[1] + fac*((cp2[1]*cp1[1])/255) )/255;
cp[2]= (mfac*cp1[2] + fac*((cp2[2]*cp1[2])/255) )/255;
cp[3]= (mfac*cp1[3] + fac*((cp2[3]*cp1[3])/255) )/255;
return col;
@ -664,9 +664,9 @@ static unsigned int mcol_lighten(unsigned int col1, unsigned int col2, int fac)
return col1;
cp[0]= 255;
cp[1]= (mfac*cp1[1]+fac*cp2[1])>>8;
cp[2]= (mfac*cp1[2]+fac*cp2[2])>>8;
cp[3]= (mfac*cp1[3]+fac*cp2[3])>>8;
cp[1]= (mfac*cp1[1]+fac*cp2[1])/255;
cp[2]= (mfac*cp1[2]+fac*cp2[2])/255;
cp[3]= (mfac*cp1[3]+fac*cp2[3])/255;
return col;
}
@ -692,9 +692,9 @@ static unsigned int mcol_darken(unsigned int col1, unsigned int col2, int fac)
return col1;
cp[0]= 255;
cp[1]= (mfac*cp1[1]+fac*cp2[1])>>8;
cp[2]= (mfac*cp1[2]+fac*cp2[2])>>8;
cp[3]= (mfac*cp1[3]+fac*cp2[3])>>8;
cp[1]= (mfac*cp1[1]+fac*cp2[1])/255;
cp[2]= (mfac*cp1[2]+fac*cp2[2])/255;
cp[3]= (mfac*cp1[3]+fac*cp2[3])/255;
return col;
}

View File

@ -506,7 +506,7 @@ void BL_ConvertActuators(char* maggiename,
// does the 'original' for replication exists, and
// is it in a non-active layer ?
CValue* originalval = NULL;
SCA_IObject* originalval = NULL;
if (editobact->ob && !(editobact->ob->lay & activeLayerBitInfo))
originalval = converter->FindGameObject(editobact->ob);

View File

@ -48,7 +48,7 @@
/* ------------------------------------------------------------------------- */
KX_SCA_AddObjectActuator::KX_SCA_AddObjectActuator(SCA_IObject *gameobj,
CValue* original,
SCA_IObject *original,
int time,
SCA_IScene* scene,
const MT_Vector3& linvel,
@ -61,6 +61,9 @@ KX_SCA_AddObjectActuator::KX_SCA_AddObjectActuator(SCA_IObject *gameobj,
m_linear_velocity(linvel),
m_localFlag(local)
{
if (m_OriginalObject)
m_OriginalObject->RegisterActuator(this);
m_lastCreatedObject = NULL;
m_timeProp = time;
}
@ -69,6 +72,8 @@ KX_SCA_AddObjectActuator::KX_SCA_AddObjectActuator(SCA_IObject *gameobj,
KX_SCA_AddObjectActuator::~KX_SCA_AddObjectActuator()
{
if (m_OriginalObject)
m_OriginalObject->UnregisterActuator(this);
if (m_lastCreatedObject)
m_lastCreatedObject->Release();
}
@ -108,12 +113,29 @@ CValue* KX_SCA_AddObjectActuator::GetReplica()
// this will copy properties and so on...
replica->ProcessReplica();
replica->m_lastCreatedObject=NULL;
CValue::AddDataToReplica(replica);
return replica;
}
void KX_SCA_AddObjectActuator::ProcessReplica()
{
if (m_OriginalObject)
m_OriginalObject->RegisterActuator(this);
m_lastCreatedObject=NULL;
SCA_IActuator::ProcessReplica();
}
bool KX_SCA_AddObjectActuator::UnlinkObject(SCA_IObject* clientobj)
{
if (clientobj == m_OriginalObject)
{
// this object is being deleted, we cannot continue to track it.
m_OriginalObject = NULL;
return true;
}
return false;
}
/* ------------------------------------------------------------------------- */
@ -181,7 +203,11 @@ PyObject* KX_SCA_AddObjectActuator::PySetObject(PyObject* self,
PyObject* gameobj;
if (PyArg_ParseTuple(args, "O!", &KX_GameObject::Type, &gameobj))
{
m_OriginalObject = (CValue*)gameobj;
if (m_OriginalObject != NULL)
m_OriginalObject->UnregisterActuator(this);
m_OriginalObject = (SCA_IObject*)gameobj;
if (m_OriginalObject)
m_OriginalObject->RegisterActuator(this);
Py_Return;
}
PyErr_Clear();
@ -189,8 +215,11 @@ PyObject* KX_SCA_AddObjectActuator::PySetObject(PyObject* self,
char* objectname;
if (PyArg_ParseTuple(args, "s", &objectname))
{
m_OriginalObject= (CValue*)SCA_ILogicBrick::m_sCurrentLogicManager->GetGameObjectByName(STR_String(objectname));;
if (m_OriginalObject != NULL)
m_OriginalObject->UnregisterActuator(this);
m_OriginalObject = (SCA_IObject*)SCA_ILogicBrick::m_sCurrentLogicManager->GetGameObjectByName(STR_String(objectname));;
if (m_OriginalObject)
m_OriginalObject->RegisterActuator(this);
Py_Return;
}

View File

@ -53,7 +53,7 @@ class KX_SCA_AddObjectActuator : public SCA_IActuator
int m_timeProp;
/// Original object reference (object to replicate)
CValue* m_OriginalObject;
SCA_IObject* m_OriginalObject;
/// Object will be added to the following scene
SCA_IScene* m_scene;
@ -75,7 +75,7 @@ public:
KX_SCA_AddObjectActuator(
SCA_IObject *gameobj,
CValue* original,
SCA_IObject *original,
int time,
SCA_IScene* scene,
const MT_Vector3& linvel,
@ -89,6 +89,12 @@ public:
GetReplica(
) ;
virtual void
ProcessReplica();
virtual bool
UnlinkObject(SCA_IObject* clientobj);
virtual bool
Update();