forked from bartvdbraak/blender
[GameEngine] As Kester Maddock pointed out to me, I had left one small, but important patch out. Now 2.25 blends are read correctly.
This commit is contained in:
parent
50cee47be0
commit
89ebf84b41
@ -391,7 +391,7 @@ void blo_join_main(ListBase *mainlist)
|
|||||||
{
|
{
|
||||||
Main *tojoin, *mainl= mainlist->first;
|
Main *tojoin, *mainl= mainlist->first;
|
||||||
|
|
||||||
while (tojoin= mainl->next) {
|
while ((tojoin= mainl->next)) {
|
||||||
add_main_to_main(mainl, tojoin);
|
add_main_to_main(mainl, tojoin);
|
||||||
BLI_remlink(mainlist, tojoin);
|
BLI_remlink(mainlist, tojoin);
|
||||||
MEM_freeN(tojoin);
|
MEM_freeN(tojoin);
|
||||||
@ -1249,6 +1249,13 @@ static void lib_link_constraints(FileData *fd, ID *id, ListBase *conlist)
|
|||||||
data->tar = newlibadr(fd, id->lib, data->tar);
|
data->tar = newlibadr(fd, id->lib, data->tar);
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
|
case CONSTRAINT_TYPE_DISTANCELIMIT:
|
||||||
|
{
|
||||||
|
bDistanceLimitConstraint *data;
|
||||||
|
data= ((bDistanceLimitConstraint*)con->data);
|
||||||
|
data->tar = newlibadr(fd, id->lib, data->tar);
|
||||||
|
};
|
||||||
|
break;
|
||||||
case CONSTRAINT_TYPE_NULL:
|
case CONSTRAINT_TYPE_NULL:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -3721,11 +3728,94 @@ static void do_versions(Main *main)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if(main->versionfile <= 225) {
|
||||||
|
World *wo;
|
||||||
|
/* Use Sumo for old games */
|
||||||
|
for (wo = main->world.first; wo; wo= wo->id.next) {
|
||||||
|
wo->physicsEngine = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
if(main->versionfile <= 227) {
|
if(main->versionfile <= 227) {
|
||||||
Scene *sce;
|
Scene *sce;
|
||||||
Material *ma;
|
Material *ma;
|
||||||
bScreen *sc;
|
bScreen *sc;
|
||||||
|
Object *ob;
|
||||||
|
|
||||||
|
|
||||||
|
/* As of now, this insures that the transition from the old Track system
|
||||||
|
to the new full constraint Track is painless for everyone. - theeth
|
||||||
|
*/
|
||||||
|
ob = main->object.first;
|
||||||
|
|
||||||
|
while (ob) {
|
||||||
|
ListBase *list;
|
||||||
|
list = &ob->constraints;
|
||||||
|
|
||||||
|
/* check for already existing TrackTo constraint
|
||||||
|
set their track and up flag correctly */
|
||||||
|
|
||||||
|
if (list){
|
||||||
|
bConstraint *curcon;
|
||||||
|
for (curcon = list->first; curcon; curcon=curcon->next){
|
||||||
|
if (curcon->type == CONSTRAINT_TYPE_TRACKTO){
|
||||||
|
bTrackToConstraint *data = curcon->data;
|
||||||
|
data->reserved1 = ob->trackflag;
|
||||||
|
data->reserved2 = ob->upflag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ob->type == OB_ARMATURE) {
|
||||||
|
if (ob->pose){
|
||||||
|
bConstraint *curcon;
|
||||||
|
bPoseChannel *pchan;
|
||||||
|
for (pchan = ob->pose->chanbase.first;
|
||||||
|
pchan; pchan=pchan->next){
|
||||||
|
for (curcon = pchan->constraints.first;
|
||||||
|
curcon; curcon=curcon->next){
|
||||||
|
if (curcon->type == CONSTRAINT_TYPE_TRACKTO){
|
||||||
|
bTrackToConstraint *data = curcon->data;
|
||||||
|
data->reserved1 = ob->trackflag;
|
||||||
|
data->reserved2 = ob->upflag;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Change Ob->Track in real TrackTo constraint */
|
||||||
|
|
||||||
|
if (ob->track){
|
||||||
|
bConstraint *con;
|
||||||
|
bTrackToConstraint *data;
|
||||||
|
|
||||||
|
list = &ob->constraints;
|
||||||
|
if (list)
|
||||||
|
{
|
||||||
|
con = MEM_callocN(sizeof(bConstraint), "constraint");
|
||||||
|
strcpy (con->name, "AutoTrack");
|
||||||
|
unique_constraint_name(con, list);
|
||||||
|
con->flag |= CONSTRAINT_EXPAND;
|
||||||
|
con->enforce=1.0F;
|
||||||
|
con->type = CONSTRAINT_TYPE_TRACKTO;
|
||||||
|
data = (bTrackToConstraint *)
|
||||||
|
new_constraint_data(CONSTRAINT_TYPE_TRACKTO);
|
||||||
|
|
||||||
|
data->tar = ob->track;
|
||||||
|
data->reserved1 = ob->trackflag;
|
||||||
|
data->reserved2 = ob->upflag;
|
||||||
|
con->data= (void*) data;
|
||||||
|
BLI_addtail(list, con);
|
||||||
|
}
|
||||||
|
ob->track = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
ob = ob->id.next;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
for (sce= main->scene.first; sce; sce= sce->id.next) {
|
for (sce= main->scene.first; sce; sce= sce->id.next) {
|
||||||
sce->audio.mixrate = 44100;
|
sce->audio.mixrate = 44100;
|
||||||
@ -3929,6 +4019,31 @@ static void do_versions(Main *main)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if(main->versionfile <= 231) {
|
||||||
|
/* new bit flags for showing/hiding grid floor and axes */
|
||||||
|
bScreen *sc = main->screen.first;
|
||||||
|
while(sc) {
|
||||||
|
ScrArea *sa= sc->areabase.first;
|
||||||
|
while(sa) {
|
||||||
|
SpaceLink *sl= sa->spacedata.first;
|
||||||
|
while (sl) {
|
||||||
|
if (sl->spacetype==SPACE_VIEW3D) {
|
||||||
|
View3D *v3d= (View3D*) sl;
|
||||||
|
|
||||||
|
if (v3d->gridflag==0) {
|
||||||
|
v3d->gridflag |= V3D_SHOW_X;
|
||||||
|
v3d->gridflag |= V3D_SHOW_Y;
|
||||||
|
v3d->gridflag |= V3D_SHOW_FLOOR;
|
||||||
|
v3d->gridflag &= ~V3D_SHOW_Z;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sl= sl->next;
|
||||||
|
}
|
||||||
|
sa= sa->next;
|
||||||
|
}
|
||||||
|
sc= sc->id.next;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if(main->versionfile <= 231) {
|
if(main->versionfile <= 231) {
|
||||||
Material *ma= main->mat.first;
|
Material *ma= main->mat.first;
|
||||||
@ -4373,6 +4488,12 @@ static void expand_constraints(FileData *fd, Main *mainvar, ListBase *lb)
|
|||||||
expand_doit(fd, mainvar, data->tar);
|
expand_doit(fd, mainvar, data->tar);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case CONSTRAINT_TYPE_DISTANCELIMIT:
|
||||||
|
{
|
||||||
|
bDistanceLimitConstraint *data = (bDistanceLimitConstraint*)curcon->data;
|
||||||
|
expand_doit(fd, mainvar, data->tar);
|
||||||
|
break;
|
||||||
|
}
|
||||||
case CONSTRAINT_TYPE_NULL:
|
case CONSTRAINT_TYPE_NULL:
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
Loading…
Reference in New Issue
Block a user