#include <pcggui.h>
Collaboration diagram for pcggui:
Public Types | |
enum | Skin_Status { NoError, InvalidSkeleton, VertexWithoutWeight } |
Public Member Functions | |
void | BeginEditParams (Interface *ip, IUtil *iu) |
void | EndEditParams (Interface *ip, IUtil *iu) |
void | Init (HWND hWnd) |
void | Destroy (HWND hWnd) |
void | DeleteThis () |
pcggui () | |
~pcggui () | |
void | CovertScene () |
void | ConvertBone (INode *pParent, model::ReferenceModel *rm) |
uint | ConvertSkin (INode *node, model::ReferenceModel *rm) |
Modifier * | getModifier (INode *pNode, Class_ID modCID) |
void | SetReferenceModelMode (BOOL rm) |
void | ExportAll () |
void | SaveAll () |
void | LoadAll () |
void | SaveAnalyzer () |
void | LoadAnalyzer () |
void | Analyze () |
void | Render () |
Public Attributes | |
HWND | hPanel |
IUtil * | iu |
Interface * | ip |
BOOL | refModel |
Private Attributes | |
vector< model::ExampleModel * > | exampleModels |
vector< model::ReferenceModel * > | referenceModels |
model::Analyzer | pca |
|
Definition at line 54 of file pcggui.h. 00054 { 00055 NoError, 00056 InvalidSkeleton, 00057 VertexWithoutWeight, 00058 };
|
|
Definition at line 130 of file pcggui.cpp. References hPanel, ip, and iu.
|
|
Definition at line 137 of file pcggui.cpp. 00138 { 00139 00140 }
|
|
Definition at line 354 of file pcggui.cpp. References model::Analyzer::adjust(), model::Analyzer::computeEnergy(), model::Analyzer::covariance(), exampleModels, model::Analyzer::findComponents(), model::Analyzer::mean(), model::Analyzer::mergeData(), pca, referenceModels, model::Analyzer::selectComponents(), and model::Analyzer::transformation(). Referenced by pcgguiDlgProc(). 00354 { 00355 DebugPrint("*************Starting to Analyze*************\n"); 00356 pca.mergeData(*referenceModels[0],exampleModels); 00357 DebugPrint("Calculating mean\n"); 00358 pca.mean(); 00359 DebugPrint("Adjusting data\n"); 00360 pca.adjust(); 00361 DebugPrint("Finding Covariance\n"); 00362 pca.covariance(); 00363 DebugPrint("Begin EigenVector calculations\n"); 00364 DebugPrint("Timer Started\n"); 00365 clock_t begin = clock(); 00366 pca.findComponents(model::Analyzer::HOUSEHOLDER); 00367 clock_t end = clock(); 00368 DebugPrint("Timer Stopped\n"); 00369 DebugPrint("Time elapsed in seconds: %d\n", difftime(end, begin)); 00370 DebugPrint("End EigenVector calculations\n"); 00371 pca.computeEnergy(); 00372 pca.selectComponents(); 00373 pca.transformation(); 00374 }
|
Here is the call graph for this function:
|
Definition at line 142 of file pcggui.cpp. References file, GetString(), hInstance, hPanel, IDD_PANEL, IDS_PARAMS, and pcgguiDlgProc(). 00143 { 00144 fopen_s(&file,"c:\\testdebug.txt","w"); 00145 fprintf(file,""); 00146 fclose(file); 00147 fopen_s(&file,"c:\\testdebug.txt","a"); 00148 fprintf(file,"\nFile Opened\n"); 00149 this->iu = iu; 00150 this->ip = ip; 00151 hPanel = ip->AddRollupPage( 00152 hInstance, 00153 MAKEINTRESOURCE(IDD_PANEL), 00154 pcgguiDlgProc, 00155 GetString(IDS_PARAMS), 00156 0); 00157 }
|
Here is the call graph for this function:
|
Definition at line 282 of file pcggui.cpp. References model::Skeleton::addBone(), and model::ReferenceModel::getSkeleton(). Referenced by CovertScene(). 00282 { 00283 DebugPrint("Sub Named Object: \"%s\"\n",pParent->GetName()); 00284 00285 rm->getSkeleton()->addBone(NULL,NULL,10,pParent->GetName()); 00286 00287 for(int q=0;q<pParent->NumberOfChildren();q++) { 00288 ConvertBone(pParent->GetChildNode(q),rm); 00289 } 00290 }
|
Here is the call graph for this function:
|
Definition at line 475 of file pcggui.cpp. References model::Bone::addMapping(), ISkinContextData::GetAssignedBone(), ISkin::GetBone(), model::Skeleton::getBone(), ISkinContextData::GetBoneWeight(), ISkin::GetContextInterface(), getModifier(), ISkinContextData::GetNumAssignedBones(), ISkinContextData::GetNumPoints(), model::ReferenceModel::getSkeleton(), SKIN_CLASS_ID, SKIN_INTERFACE, and uint. Referenced by CovertScene(). 00475 { 00476 // Return success 00477 uint ok=NoError; 00478 00479 // Get the skin modifier 00480 Modifier* skin=getModifier (node, SKIN_CLASS_ID); 00481 00482 // Found it ? 00483 if (skin) 00484 { 00485 // ********** COMSKIN EXPORT ********** 00486 00487 // Get a com_skin2 interface 00488 ISkin *comSkinInterface=(ISkin*)skin->GetInterface (SKIN_INTERFACE); 00489 00490 // Should been controled with isSkin before. 00491 assert (comSkinInterface); 00492 00493 // Found com_skin2 ? 00494 if (comSkinInterface) 00495 { 00496 // Get local data 00497 ISkinContextData *localData=comSkinInterface->GetContextInterface(node); 00498 00499 // Should been controled with isSkin before. 00500 assert (localData); 00501 00502 // Found ? 00503 if (localData) 00504 { 00505 // Check same vertices count 00506 uint vertCount=localData->GetNumPoints(); 00507 00508 00509 // For each vertex 00510 for (uint vert=0; vert<vertCount; vert++) 00511 { 00512 // Get bones count for this vertex 00513 uint boneCount=localData->GetNumAssignedBones (vert); 00514 00515 // No bones, can't export 00516 if (boneCount==0) 00517 { 00518 // Error 00519 ok=VertexWithoutWeight; 00520 break; 00521 } 00522 00523 // A map of float / string 00524 //std::multimap<float, uint> weightMap; 00525 std::map<float, uint> weightMap; 00526 00527 // For each bones 00528 for (uint bone=0; bone<boneCount; bone++) 00529 { 00530 // Get the bone weight 00531 float weight=localData->GetBoneWeight (vert, bone); 00532 00533 // Get bone number 00534 uint boneId=localData->GetAssignedBone (vert, bone); 00535 00536 // Insert in the map 00537 weightMap.insert (std::map<float, uint>::value_type (weight, boneId)); 00538 } 00539 00540 // Sum the NL3D_MESH_SKINNING_MAX_MATRIX highest bones 00541 float sum=0.f; 00542 std::map<float, uint>::iterator ite=weightMap.begin(); 00543 while (ite!=weightMap.end()) 00544 { 00545 // Add to the sum 00546 sum+=ite->first; 00547 00548 // Next value 00549 ite++; 00550 } 00551 00552 // For each bones in the list, build the skin information 00553 uint id=0; 00554 ite=weightMap.end(); 00555 while (ite!=weightMap.begin()) 00556 { 00557 // Previous value 00558 ite--; 00559 00560 // Get the bones ID 00561 Bone* bone = rm->getSkeleton()->getBone(comSkinInterface->GetBone(ite->second)->GetName()); 00562 00563 // Set the weight 00564 //DebugPrint("Bone: %s - Vertex: %d - %f\n",bone->getName().c_str(),vert,ite->first/sum); 00565 bone->addMapping(new model::Mapping(vert,ite->first/sum)); 00566 00567 // Next Id 00568 id++; 00569 } 00570 // Breaked ? 00571 if (ite!=weightMap.begin()) 00572 { 00573 // break again to exit 00574 break; 00575 } 00576 } 00577 } 00578 } 00579 00580 // Release the interface 00581 skin->ReleaseInterface (SKIN_INTERFACE, comSkinInterface); 00582 } 00583 /*else 00584 { 00585 // ********** PHYSIQUE EXPORT ********** 00586 00587 // Physique mode 00588 Modifier* skin=getModifier (node, PHYSIQUE_CLASS_ID); 00589 00590 // Must exist 00591 assert (skin); 00592 00593 // Get a com_skin2 interface 00594 IPhysiqueExport *physiqueInterface=(IPhysiqueExport *)skin->GetInterface (I_PHYINTERFACE); 00595 00596 // Should been controled with isSkin before. 00597 assert (physiqueInterface); 00598 00599 // Found com_skin2 ? 00600 if (physiqueInterface) 00601 { 00602 // Get local data 00603 IPhyContextExport *localData=physiqueInterface->GetContextInterface(&node); 00604 00605 // Should been controled with isSkin before. 00606 assert (localData); 00607 00608 // Found ? 00609 if (localData) 00610 { 00611 // Use rigid export 00612 localData->ConvertToRigid (TRUE); 00613 00614 // Allow blending 00615 localData->AllowBlending (TRUE); 00616 00617 // Check same vertices count 00618 uint vertCount=localData->GetNumberVertices(); 00619 00620 // Ctrl we have the same number of vertices in the mesh and in the modifier. 00621 if (rm->getVertexs().size()!=vertCount) 00622 { 00623 ok=InvalidSkeleton; 00624 } 00625 else 00626 { 00627 // If not the same count, return false (perhaps, the modifier is not in the good place in the stack..) 00628 if (rm->getVertexs().size()==vertCount) 00629 { 00630 // Rebuild the array 00631 buildMesh.SkinWeights.resize (vertCount); 00632 00633 // For each vertex 00634 for (uint vert=0; vert<vertCount; vert++) 00635 { 00636 // Get a vertex interface 00637 IPhyVertexExport *vertexInterface=localData->GetVertexInterface (vert); 00638 00639 // Check if it is a rigid vertex or a blended vertex 00640 IPhyRigidVertex *rigidInterface=NULL; 00641 IPhyBlendedRigidVertex *blendedInterface=NULL; 00642 int type=vertexInterface->GetVertexType (); 00643 if (type==RIGID_TYPE) 00644 { 00645 // this is a rigid vertex 00646 rigidInterface=(IPhyRigidVertex*)vertexInterface; 00647 } 00648 else 00649 { 00650 // It must be a blendable vertex 00651 assert (type==RIGID_BLENDED_TYPE); 00652 blendedInterface=(IPhyBlendedRigidVertex*)vertexInterface; 00653 } 00654 00655 // Get bones count for this vertex 00656 uint boneCount; 00657 if (blendedInterface) 00658 { 00659 // If blenvertex, only one bone 00660 boneCount=blendedInterface->GetNumberNodes(); 00661 } 00662 else 00663 { 00664 // If rigid vertex, only one bone 00665 boneCount=1; 00666 } 00667 00668 // No bones, can't export 00669 if (boneCount==0) 00670 { 00671 // Error 00672 ok=VertexWithoutWeight; 00673 break; 00674 } 00675 00676 // A map of float / string 00677 //std::multimap<float, INode*> weightMap; 00678 std::map<float, INode*> weightMap; 00679 00680 // For each bones 00681 for (uint bone=0; bone<boneCount; bone++) 00682 { 00683 if (blendedInterface) 00684 { 00685 // Get the bone weight 00686 float weight=blendedInterface->GetWeight(bone); 00687 00688 // Get node 00689 INode *node=blendedInterface->GetNode(bone); 00690 assert (node); 00691 00692 // Insert in the map 00693 weightMap.insert (std::map<float, INode*>::value_type (weight, node)); 00694 } 00695 else 00696 { 00697 // Get node 00698 INode *node=rigidInterface->GetNode(); 00699 assert (node); 00700 00701 // Insert in the map 00702 weightMap.insert (std::map<float, INode*>::value_type (1, node)); 00703 } 00704 } 00705 00706 // Sum the NL3D_MESH_SKINNING_MAX_MATRIX highest bones 00707 float sum=0.f; 00708 std::map<float, INode*>::iterator ite=weightMap.begin(); 00709 while (ite!=weightMap.end()) 00710 { 00711 // Add to the sum 00712 sum+=ite->first; 00713 00714 // Next value 00715 ite++; 00716 } 00717 00718 // For each bones in the list, build the skin information 00719 uint id=0; 00720 ite=weightMap.end(); 00721 while (ite!=weightMap.begin()) 00722 { 00723 // Previous value 00724 ite--; 00725 00726 // Get the bones ID 00727 sint32 matrixId=-1; 00728 TInodePtrInt::const_iterator itId=skeletonShape.find (ite->second); 00729 if (itId!=skeletonShape.end()) 00730 matrixId=itId->second; 00731 00732 // Find the bone ? 00733 if (matrixId==-1) 00734 { 00735 // no, error, wrong skeleton 00736 ok=InvalidSkeleton; 00737 break; 00738 } 00739 00740 // Set the weight 00741 buildMesh.SkinWeights[vert].MatrixId[id]=matrixId; 00742 buildMesh.SkinWeights[vert].Weights[id]=ite->first/sum; 00743 00744 // Next Id 00745 id++; 00746 } 00747 00748 // Breaked ? 00749 if (ite!=weightMap.begin()) 00750 { 00751 // break again to exit 00752 break; 00753 } 00754 00755 // Release vertex interfaces 00756 localData->ReleaseVertexInterface (vertexInterface); 00757 } 00758 } 00759 } 00760 00761 // Release locaData interface 00762 physiqueInterface->ReleaseContextInterface (localData); 00763 } 00764 00765 } 00766 00767 // Release the interface 00768 skin->ReleaseInterface (I_PHYINTERFACE, physiqueInterface); 00769 }*/ 00770 00771 return ok; 00772 }
|
Here is the call graph for this function:
|
Definition at line 178 of file pcggui.cpp. References model::Model::addFace(), model::Model::addVertex(), ConvertBone(), ConvertSkin(), exampleModels, model::Model::getVertex(), ip, referenceModels, model::Vertex::setCoordinates(), model::Vertex::setNormal(), model::Face::setVertices(), and thepcggui. Referenced by pcgguiDlgProc(). 00178 { 00179 model::ExampleModel* em = new model::ExampleModel(); 00180 model::ReferenceModel* rm = new model::ReferenceModel(); 00181 TimeValue currtime = thepcggui.ip->GetTime(); 00182 INode* node; 00183 BOOL needDel; 00184 NullView nullView; 00185 unsigned long offset = 0; 00186 unsigned long tmpOffset = 0; 00187 00188 if(thepcggui.ip->GetRootNode()->NumberOfChildren() > 0) { 00189 for(int n=0;n<thepcggui.ip->GetRootNode()->NumberOfChildren();n++) { 00190 00191 node = thepcggui.ip->GetRootNode()->GetChildNode(n); 00192 ObjectState os = node->EvalWorldState(currtime); 00193 00195 // find and export modifier data if 00196 // exists for this node 00197 00198 Object* pObj = node->GetObjectRef(); 00199 // make sure we have a derived obj, which implies 00200 // modifiers are avail, and not a base obj 00201 while (pObj && pObj->SuperClassID() == GEN_DERIVOB_CLASS_ID) { 00202 IDerivedObject* pDerObj = (IDerivedObject*) pObj; 00203 // Iterate over all entries of the modifier stack. 00204 for (int Idx = 0; Idx < pDerObj->NumModifiers(); Idx++) { 00205 Modifier* mod = pDerObj->GetModifier(Idx); 00206 DebugPrint("Mod Name: %s\n",mod->GetName()); 00207 DebugPrint("Mod class ID: 0x%x - %d\n",mod->ClassID(),mod->ClassID()); 00208 /*if(mod->ClassID() == 9845843) { 00209 DebugPrint("SKIN\n"); 00210 }*/ 00211 00212 //if (mod->ClassID() == Class_ID(BENDOSM_CLASS_ID,0)) { 00213 } 00214 // get next object in stack -- could be base obj, 00215 // or another derived obj 00216 pObj = pDerObj->GetObjRef(); 00217 } 00218 00219 00220 if(os.obj->SuperClassID()==GEOMOBJECT_CLASS_ID) { 00221 if(node->GetBoneNodeOnOff()) { 00222 if(refModel) { 00223 ConvertBone(node,rm); 00224 } 00225 } else { 00226 Mesh *mesh = ((GeomObject*)os.obj)->GetRenderMesh(thepcggui.ip->GetTime(),node,nullView,needDel); 00227 if (!mesh) return; 00228 00229 mesh->buildNormals(); 00230 Matrix3 tm = node->GetObjTMAfterWSM(thepcggui.ip->GetTime()); 00231 for (int i=0; i<mesh->getNumVerts(); i++) { 00232 Point3 v = (tm * mesh->verts[i]); 00233 model::Vertex* vertex = new model::Vertex(); 00234 vertex->setCoordinates(v.x, v.y, v.z); 00235 vertex->setNormal(mesh->getNormal(i).x,mesh->getNormal(i).y,mesh->getNormal(i).z); 00236 if(refModel) { 00237 rm->addVertex(vertex); 00238 } else { 00239 em->addVertex(vertex); 00240 } 00241 tmpOffset = i; 00242 } 00243 for (int i=0; i<mesh->getNumFaces(); i++) { 00244 model::Face* face = new model::Face(); 00245 if(refModel) { 00246 face->setVertices( 00247 rm->getVertex(offset + (int)mesh->faces[i].v[0]), 00248 rm->getVertex(offset + (int)mesh->faces[i].v[1]), 00249 rm->getVertex(offset + (int)mesh->faces[i].v[2])); 00250 rm->addFace(face); 00251 } else { 00252 face->setVertices( 00253 em->getVertex(offset + (int)mesh->faces[i].v[0]), 00254 em->getVertex(offset + (int)mesh->faces[i].v[1]), 00255 em->getVertex(offset + (int)mesh->faces[i].v[2])); 00256 em->addFace(face); 00257 } 00258 } 00259 offset = tmpOffset; 00260 } 00261 } 00262 } 00263 for(int n=0;n<thepcggui.ip->GetRootNode()->NumberOfChildren();n++) { 00264 node = thepcggui.ip->GetRootNode()->GetChildNode(n); 00265 ObjectState os = node->EvalWorldState(currtime); 00266 if(os.obj->SuperClassID()==GEOMOBJECT_CLASS_ID) { 00267 if(!node->GetBoneNodeOnOff()) { 00268 if(refModel) { 00269 DebugPrint("Error Code: %d\n",ConvertSkin(node,rm)); 00270 } 00271 } 00272 } 00273 } 00274 if(refModel) { 00275 referenceModels.push_back(rm); 00276 } else { 00277 exampleModels.push_back(em); 00278 } 00279 } 00280 }
|
Here is the call graph for this function:
|
Definition at line 67 of file pcggui.h. 00067 { }
|
|
Definition at line 173 of file pcggui.cpp. References file. Referenced by pcgguiDlgProc(). 00174 {
00175 fprintf(file,"Destroy\n");
00176 }
|
|
Definition at line 159 of file pcggui.cpp. 00160 { 00161 this->iu = NULL; 00162 this->ip = NULL; 00163 ip->DeleteRollupPage(hPanel); 00164 hPanel = NULL; 00165 fclose(file); 00166 }
|
|
Definition at line 292 of file pcggui.cpp. References exampleModels, functions::Exporter::exportModel(), and referenceModels. Referenced by pcgguiDlgProc(). 00292 { 00293 functions::Exporter ex = functions::Exporter(); 00294 char tmp[100]; 00295 00296 for(int i=0; i<exampleModels.size(); i++) { 00297 sprintf_s(tmp,"c:\\exampleModel%d.x3d",i); 00298 ex.exportModel(exampleModels[i],tmp); 00299 } 00300 00301 for(int i=0; i<referenceModels.size(); i++) { 00302 sprintf_s(tmp,"c:\\referenceModel%d.x3d",i); 00303 ex.exportModel(referenceModels[i],tmp); 00304 } 00305 00306 }
|
Here is the call graph for this function:
|
Definition at line 437 of file pcggui.cpp. Referenced by ConvertSkin(). 00438 { 00439 Object* pObj = pNode->GetObjectRef(); 00440 00441 if (!pObj) 00442 return NULL; 00443 00444 ObjectState os = pNode->EvalWorldState(0); 00445 if (os.obj && (os.obj->SuperClassID() != GEOMOBJECT_CLASS_ID) && (os.obj->SuperClassID() != LIGHT_CLASS_ID) ) 00446 { 00447 return NULL; 00448 } 00449 00450 // For all derived objects (can be > 1) 00451 while (pObj && (pObj->SuperClassID() == GEN_DERIVOB_CLASS_ID)) 00452 { 00453 IDerivedObject* pDObj = (IDerivedObject*)pObj; 00454 int m; 00455 int nNumMods = pDObj->NumModifiers(); 00456 // Step through all modififers and verify the class id 00457 for (m=0; m<nNumMods; ++m) 00458 { 00459 Modifier* pMod = pDObj->GetModifier(m); 00460 if (pMod) 00461 { 00462 if (pMod->ClassID() == modCID) 00463 { 00464 // Match! Return it 00465 return pMod; 00466 } 00467 } 00468 } 00469 pObj = pDObj->GetObjRef(); 00470 } 00471 00472 return NULL; 00473 }
|
|
Definition at line 168 of file pcggui.cpp. References file. Referenced by pcgguiDlgProc(). 00169 {
00170 fprintf(file,"Init\n");
00171 }
|
|
Definition at line 322 of file pcggui.cpp. References exampleModels, model::ReferenceModel::load(), model::Model::load(), and referenceModels. Referenced by pcgguiDlgProc(). 00322 { 00323 char tmp[100]; 00324 int number = 10; 00325 00326 exampleModels.clear(); 00327 referenceModels.clear(); 00328 00329 for(int i=0; i<number; i++) { 00330 sprintf_s(tmp,"c:\\savedExampleModel%d.pcg",i); 00331 model::ExampleModel* em = new model::ExampleModel(); 00332 if(em->load(tmp)) { 00333 exampleModels.push_back(em); 00334 } 00335 } 00336 00337 for(int i=0; i<number; i++) { 00338 sprintf_s(tmp,"c:\\savedReferenceModel%d.pcg",i); 00339 model::ReferenceModel* rm = new model::ReferenceModel(); 00340 if(rm->load(tmp)) { 00341 referenceModels.push_back(rm); 00342 } 00343 } 00344 }
|
Here is the call graph for this function:
|
Definition at line 350 of file pcggui.cpp. References model::Analyzer::load(), and pca. Referenced by pcgguiDlgProc().
|
Here is the call graph for this function:
|
Definition at line 376 of file pcggui.cpp. References exampleModels, model::Vertex::getCoordinates(), model::Model::getFace(), model::Model::getFaces(), model::Vertex::getIndex(), model::Vertex::getNormal(), model::Face::getVertex(), model::Model::getVertex(), model::Model::getVertexs(), ip, and model::Vertex::setNormal(). Referenced by pcgguiDlgProc(). 00376 { 00377 Mesh mesh; 00378 model::ExampleModel* em = exampleModels[0]; 00379 mesh.setNumVerts(em->getVertexs().size()); 00380 mesh.setNumFaces(em->getFaces().size()); 00381 for(int i=0;i<em->getVertexs().size();i++) { 00382 Vertex* v = em->getVertex(i); 00383 mesh.setVert(i,Point3(v->getCoordinates()->x,v->getCoordinates()->y,v->getCoordinates()->z)); 00384 mesh.setNormal(i,Point3(v->getNormal()->x,v->getNormal()->y,v->getNormal()->z)); 00385 } 00386 for(int i=0;i<em->getFaces().size();i++) { 00387 model::Face* f = em->getFace(i); 00388 mesh.faces[i].setVerts(f->getVertex(0)->getIndex(),f->getVertex(1)->getIndex(),f->getVertex(2)->getIndex()); 00389 } 00390 00391 //TriObject *obj = CreateNewTriObject(); 00392 //RegisterEditTriObjDesc( GetEditTriObjDesc() ); 00393 00394 // Create a new object through the CreateInstance() API 00395 GeomObject *obj = (GeomObject*)ip->CreateInstance(GEOMOBJECT_CLASS_ID, Class_ID(BOXOBJ_CLASS_ID ,0)); 00396 assert(obj); 00397 00398 00399 //((TriObject*)obj)->mesh = mesh; 00400 //RegisterEditTriObjDesc( GetTriObjDescriptor() ); 00401 00402 00403 00404 // Create a derived object that references the cylinder 00405 IDerivedObject *dobj = CreateDerivedObject(obj); 00406 00407 // Create a node in the scene that references the derived object 00408 INode *node = ip->CreateObjectNode(dobj); 00409 00410 // Name the node and make the name unique. 00411 TSTR name(_T("MyNode")); 00412 ip->MakeNameUnique(name); 00413 node->SetName(name); 00414 00415 // Eval the node's object (exclude WSMs) 00416 Object *oldObj = node->GetObjectRef(); 00417 ObjectState os = oldObj->Eval(ip->GetTime()); 00418 00419 // Set the result to be the node's new object (make a clone) 00420 Object *newobj = (Object*)os.obj->Clone(); 00421 newobj->SetSubSelState(0); // Reset the selection level to object level 00422 oldObj->SetAFlag(A_LOCK_TARGET); 00423 node->SetObjectRef(newobj); 00424 node->NotifyDependents(FOREVER,0,REFMSG_SUBANIM_STRUCTURE_CHANGED); 00425 oldObj->ClearAFlag(A_LOCK_TARGET); 00426 oldObj->MaybeAutoDelete(); 00427 00428 00429 // Redraw the viewports 00430 ip->RedrawViews(ip->GetTime()); 00431 00432 }
|
Here is the call graph for this function:
|
Definition at line 308 of file pcggui.cpp. References exampleModels, and referenceModels. Referenced by pcgguiDlgProc(). 00308 { 00309 char tmp[100]; 00310 00311 for(int i=0; i<exampleModels.size(); i++) { 00312 sprintf_s(tmp,"c:\\savedExampleModel%d.pcg",i); 00313 exampleModels[i]->save(tmp); 00314 } 00315 00316 for(int i=0; i<referenceModels.size(); i++) { 00317 sprintf_s(tmp,"c:\\savedReferenceModel%d.pcg",i); 00318 referenceModels[i]->save(tmp); 00319 } 00320 }
|
|
Definition at line 346 of file pcggui.cpp. References pca, and model::Analyzer::save(). Referenced by pcgguiDlgProc().
|
Here is the call graph for this function:
|
Definition at line 77 of file pcggui.h. References refModel. Referenced by pcgguiDlgProc(). 00077 { refModel = rm; };
|
|
Definition at line 43 of file pcggui.h. Referenced by Analyze(), CovertScene(), ExportAll(), LoadAll(), Render(), and SaveAll(). |
|
Definition at line 49 of file pcggui.h. Referenced by BeginEditParams(), EndEditParams(), and pcggui(). |
|
Definition at line 51 of file pcggui.h. Referenced by CovertScene(), pcggui(), pcgguiDlgProc(), and Render(). |
|
Definition at line 50 of file pcggui.h. Referenced by pcggui(). |
|
Definition at line 45 of file pcggui.h. Referenced by Analyze(), LoadAnalyzer(), and SaveAnalyzer(). |
|
Definition at line 44 of file pcggui.h. Referenced by Analyze(), CovertScene(), ExportAll(), LoadAll(), and SaveAll(). |
|
Definition at line 52 of file pcggui.h. Referenced by SetReferenceModelMode(). |