From: Markus R. <rol...@us...> - 2007-06-23 13:48:14
|
Update of /cvsroot/simspark/simspark/contrib/rsgedit In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv2288 Modified Files: sparkglcanvas.cpp sparkglcanvas.h Log Message: - refactored node picking into method PickNode() Index: sparkglcanvas.h =================================================================== RCS file: /cvsroot/simspark/simspark/contrib/rsgedit/sparkglcanvas.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** sparkglcanvas.h 15 Apr 2007 11:17:39 -0000 1.8 --- sparkglcanvas.h 23 Jun 2007 13:48:11 -0000 1.9 *************** *** 33,36 **** --- 33,37 ---- class InputSystem; class RenderServer; + class RenderNode; } *************** *** 69,73 **** void Reset(); ! void Pick(wxDC& dc); protected: --- 70,74 ---- void Reset(); ! boost::weak_ptr<kerosin::RenderNode> PickNode(); protected: Index: sparkglcanvas.cpp =================================================================== RCS file: /cvsroot/simspark/simspark/contrib/rsgedit/sparkglcanvas.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** sparkglcanvas.cpp 15 Apr 2007 11:17:39 -0000 1.11 --- sparkglcanvas.cpp 23 Jun 2007 13:48:11 -0000 1.12 *************** *** 109,113 **** } ! void SparkGLCanvas::Pick(wxDC& dc) { shared_ptr<SimSpark> spark = wxGetApp().GetSpark(); --- 109,113 ---- } ! weak_ptr<RenderNode> SparkGLCanvas::PickNode() { shared_ptr<SimSpark> spark = wxGetApp().GetSpark(); *************** *** 118,124 **** { assert(false); ! return; } wxPoint ptMouse = wxGetMousePosition(); ScreenToClient(&ptMouse.x, &ptMouse.y); --- 118,126 ---- { assert(false); ! return weak_ptr<RenderNode>(); } + wxClientDC dc(this); + wxPoint ptMouse = wxGetMousePosition(); ScreenToClient(&ptMouse.x, &ptMouse.y); *************** *** 127,147 **** mRenderServer->EnablePicking(true, Vector2f(ptMouse.x, ptMouse.y), pickRange); ! bool swapBuffers = false; ! Render(dc, swapBuffers); mRenderServer->DisablePicking(); weak_ptr<RenderNode> pickedNode = mRenderServer->GetPickedNode(); ! if (pickedNode.expired()) ! { ! spark->GetLog()->Normal() ! << "(SparkGLCanvas) SparkGLCanvas::Pick no node picked\n"; ! } else { spark->GetLog()->Normal() ! << "(SparkGLCanvas) SparkGLCanvas::Pick picked " << pickedNode.lock()->GetFullPath() << std::endl; } ! SparkContext::GetInstance().SetSelection(pickedNode); } --- 129,152 ---- mRenderServer->EnablePicking(true, Vector2f(ptMouse.x, ptMouse.y), pickRange); ! { ! bool swapBuffers = false; ! Render(dc, swapBuffers); ! } mRenderServer->DisablePicking(); weak_ptr<RenderNode> pickedNode = mRenderServer->GetPickedNode(); ! if (! pickedNode.expired()) { spark->GetLog()->Normal() ! << "(SparkGLCanvas) SparkGLCanvas::PickNode picked " << pickedNode.lock()->GetFullPath() << std::endl; } ! { ! bool swapBuffers = true; ! Render(dc, swapBuffers); ! } ! ! return pickedNode; } *************** *** 236,244 **** void SparkGLCanvas::OnLeftDClick(wxMouseEvent& event) { ! wxClientDC dc(this); ! Pick(dc); ! ! bool swapBuffers = true; ! Render(dc, swapBuffers); } --- 241,246 ---- void SparkGLCanvas::OnLeftDClick(wxMouseEvent& event) { ! SparkContext::GetInstance().SetSelection(PickNode()); ! event.Skip(); } |