Ignore:
Timestamp:
05/23/08 17:47:22 (16 years ago)
Author:
mattausch
Message:

implemented dynamic object placement / removal

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/Preprocessing/src/QtInterface/ObjectPlacer.cpp

    r2694 r2702  
    2020void ObjectPlacer::AddObject(SceneGraphLeaf *obj) 
    2121{ 
    22         mDynamicObjects.push_back(obj); 
     22        mLibraryObjects.push_back(obj); 
    2323} 
    2424 
     
    2626void ObjectPlacer::NextObject() 
    2727{ 
    28         mCurrentObject = (mCurrentObject + 1) % (int)mDynamicObjects.size(); 
     28        mCurrentObject = (mCurrentObject + 1) % (int)mLibraryObjects.size(); 
    2929} 
    3030 
     
    3232void ObjectPlacer::PreviousObject() 
    3333{ 
    34         mCurrentObject = (mCurrentObject - 1) % (int)mDynamicObjects.size(); 
     34        mCurrentObject = (mCurrentObject - 1) % (int)mLibraryObjects.size(); 
    3535} 
    3636 
     
    3838SceneGraphLeaf *ObjectPlacer::GetCurrentObject()  
    3939{  
    40         if (mCurrentObject >= mDynamicObjects.size()) 
     40        if (mCurrentObject >= mLibraryObjects.size()) 
    4141                return NULL; 
    4242 
    43         return mDynamicObjects[mCurrentObject]; 
     43        return mLibraryObjects[mCurrentObject]; 
    4444} 
    4545 
     
    4949        Vector3 p = pt; 
    5050 
    51         SceneGraphLeaf *obj = mDynamicObjects[mCurrentObject]; 
     51        SceneGraphLeaf *obj = mLibraryObjects[mCurrentObject]; 
    5252 
    5353        // set pivot to ground of object 
     
    5858} 
    5959 
    60  
    61 /*void TestApp::Placer(const String &parm) 
    62 { 
    63         if (parm.Empty()) 
    64         { 
    65                 OUT1("Object placement: place/load <libaryfile>/removelast/next/previous/save <objectfile>"); 
    66                 return; 
    67         } 
    68  
    69         ASM_RET(viewer->GetRoot(), "No scene"); 
    70          
    71         if (!placer) 
    72                 placer = new ObjectPlacer; 
    73  
    74         //-- make sure the placer visualization (which shows the already placed objects) is in the viewer 
    75         SearchNodeByNameVisitor search("placervis"); 
    76         search.Apply(viewer->GetRoot(), SearchNodeByNameVisitor::FIRST); 
    77         BranchGroup *placervis = search.GetNode(); 
    78         if (!placervis) 
    79         { 
    80                 placervis = placer->GetPlacedNodeVisualization(); 
    81                 viewer->GetRoot()->addChild(placervis); 
    82                 placervis->setName("placervis"); 
    83         } 
    84  
    85         if (parm == "place") 
    86         { 
    87                 int x, y; 
    88                 input_module->GetMousePos(x, y); 
    89  
    90                 Point3f pos = viewer->UnProject(x, y); 
    91                 if (viewer && viewer->GetRoot() && viewer->GetRoot()->getBoundingBox()->intersects(pos)) 
    92                 { 
    93                         placer->AddObject(pos); 
    94                         OUT1(x << " " << y << " " << pos); 
    95                 } 
    96                 else 
    97                 { 
    98                         OUT1("Point out of bounds"); 
    99                 } 
    100         } else if (parm == "removelast") { 
    101                 placer->RemoveLastObject(); 
    102         } else if (parm == "next") { 
    103                 placer->NextObject(); 
    104         } else if (parm == "previous") { 
    105                 placer->PreviousObject(); 
    106         } else if (parm.Left(5) == "save ") { 
    107                 String filename = parm.Right(parm.size()-5); 
    108                 if (!filename.Empty()) 
    109                         placer->SaveObjects(filename); 
    110         } else if (parm.Left(5) == "clear") { 
    111                 placer->Clear(); 
    112         } else if (parm.Left(5) == "load ") { 
    113                 String fn = sysutils::FindFile(parm.Right(parm.size()-5), settings->get_ObjectPath()); 
    114  
    115                 ASM_ELSE(!fn.empty(), "Couldn't find file " << fn) 
    116                 { 
    117                         OUT1("Loading library " << fn << "..."); 
    118                         SceneBasePtr<BranchGroup> root = ReadSceneGraph(fn, 0, 0, 1); 
    119  
    120                         BranchGroup *library = new BranchGroup; 
    121                         ASM_ELSE((root != NULL), "No scene found in file...") 
    122                         { 
    123                                 SearchNodeByNameVisitor search("start"); 
    124                                 search.Apply(root, SearchNodeByNameVisitor::FIRST); 
    125                                 BranchGroup *local_root = search.GetNode(); 
    126  
    127                                 if (local_root == NULL) 
    128                                 { 
    129                                         OUT1("Note: BranchGroup named \"start\" not found - using root node"); 
    130                                         local_root = root; 
    131                                 } 
    132  
    133                                 placer->SetLibrary(local_root); 
    134                                 BranchGroup *viz = placer->GetLibraryVisualization(); 
    135                                 mRenderArea->SetSceneRoot(viz); 
    136                                 mRenderArea->SetCamera(new Camera); 
    137                                 mRenderArea->GetCamera()->ViewAll(viz->getBoundingSphere()); 
    138                         } 
    139                 } 
    140         } else 
    141                 OUT1("Unknown placer command"); 
    14260} 
    143 */ 
    144  
    145 } 
Note: See TracChangeset for help on using the changeset viewer.