Changeset 269 for cpp/frams/model/model.cpp
- Timestamp:
- 12/16/14 01:51:06 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cpp/frams/model/model.cpp
r247 r269 29 29 f0map=0; 30 30 f0genoknown=1; 31 shape=SHAPE_UNKNOWN; 31 32 } 32 33 … … 874 875 int i,k; 875 876 int ret=1; 877 shape=SHAPE_UNKNOWN; 876 878 if ((parts.size()==0)&&(neurons.size()==0)) return 0; 877 879 if (parts.size()==0) … … 903 905 if (p->p.y+p->size > bbmax.y) bbmax.y=p->p.y+p->size; 904 906 if (p->p.z+p->size > bbmax.z) bbmax.z=p->p.z+p->size; 907 if (shape==SHAPE_UNKNOWN) 908 shape=(p->shape==Part::SHAPE_DEFAULT)?SHAPE_OLD:SHAPE_NEW; 909 else if (shape!=SHAPE_ILLEGAL) 910 { 911 if ((p->shape==Part::SHAPE_DEFAULT) ^ (shape==SHAPE_OLD)) 912 { 913 shape=SHAPE_ILLEGAL; 914 FMprintf("Model","internalCheck",FMLV_WARN,"Inconsistent part shapes (mixed old and new shapes)"); 915 } 916 } 905 917 } 906 918 size=bbmax-bbmin; … … 983 995 i,(const char*)geno.getName()); 984 996 ret=0; 997 } 998 if (shape!=SHAPE_ILLEGAL) 999 { 1000 if ((j->shape==Joint::SHAPE_DEFAULT) ^ (shape==SHAPE_OLD)) 1001 { 1002 shape==SHAPE_ILLEGAL; 1003 FMprintf("Model","internalCheck",FMLV_WARN,"Inconsistent joint shapes (mixed old and new shapes)"); 1004 } 985 1005 } 986 1006 } … … 1082 1102 } 1083 1103 } 1104 if (shape==SHAPE_ILLEGAL) 1105 ret=0; 1084 1106 return ret; 1085 1107 } … … 1258 1280 tmpp-=j->part1->p; 1259 1281 j->d=j->part2->o.revTransform(tmpp); 1282 } 1283 } 1284 1285 void Model::buildUsingNewShapes(const Model& old, Part::Shape default_shape, float thickness) 1286 { 1287 for(int i=0;i<old.getJointCount();i++) 1288 { 1289 Joint *oj=old.getJoint(i); 1290 Part *p = addNewPart(default_shape); 1291 p->p=(oj->part1->p+oj->part2->p)/2; 1292 Orient o; 1293 o.lookAt(oj->part1->p-oj->part2->p); 1294 p->rot=o.getAngles(); 1295 p->scale.x=oj->part1->p.distanceTo(oj->part2->p)/2; 1296 p->scale.y = thickness; 1297 p->scale.z = thickness; 1298 } 1299 for(int i=0;i<old.getPartCount();i++) 1300 { 1301 Part *op=old.getPart(i); 1302 for(int j=0;j<old.getJointCount();j++) 1303 { 1304 Joint *oj=old.getJoint(j); 1305 if ((oj->part1==op)||(oj->part2==op)) 1306 { 1307 for(int j2=j+1;j2<old.getJointCount();j2++) 1308 { 1309 Joint *oj2=old.getJoint(j2); 1310 if ((oj2->part1==op)||(oj2->part2==op)) 1311 { 1312 Joint *newj=addNewJoint(getPart(j),getPart(j2),Joint::SHAPE_SOLID); 1313 } 1314 } 1315 break; 1316 } 1317 } 1260 1318 } 1261 1319 }
Note: See TracChangeset
for help on using the changeset viewer.