Update of /cvsroot/simspark/simspark/contrib/rsgedit
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv24618
Modified Files:
Tag: ROSIMPORTER_XLAB
sparkglrender.cpp sparkglrender.h
Log Message:
- refactor RenderSelectedNode()
- highlight connected bodies when a joint node is selected
Index: sparkglrender.h
===================================================================
RCS file: /cvsroot/simspark/simspark/contrib/rsgedit/sparkglrender.h,v
retrieving revision 1.6
retrieving revision 1.6.4.1
diff -C2 -d -r1.6 -r1.6.4.1
*** sparkglrender.h 15 Apr 2007 12:19:12 -0000 1.6
--- sparkglrender.h 13 Jun 2007 13:20:22 -0000 1.6.4.1
***************
*** 44,47 ****
--- 44,54 ----
class SparkGLRender
{
+ protected:
+ struct RenderSelectionContext
+ {
+ RenderSelectionContext(boost::shared_ptr<oxygen::BaseNode> node);
+ ~RenderSelectionContext();
+ };
+
public:
SparkGLRender();
Index: sparkglrender.cpp
===================================================================
RCS file: /cvsroot/simspark/simspark/contrib/rsgedit/sparkglrender.cpp,v
retrieving revision 1.5
retrieving revision 1.5.4.1
diff -C2 -d -r1.5 -r1.5.4.1
*** sparkglrender.cpp 15 Apr 2007 12:19:12 -0000 1.5
--- sparkglrender.cpp 13 Jun 2007 13:20:22 -0000 1.5.4.1
***************
*** 20,23 ****
--- 20,25 ----
#include "sparkglrender.h"
#include <zeitgeist/logserver/logserver.h>
+ #include <oxygen/physicsserver/body.h>
+ #include <oxygen/physicsserver/joint.h>
#include <oxygen/sceneserver/camera.h>
#include <oxygen/sceneserver/sceneserver.h>
***************
*** 36,39 ****
--- 38,57 ----
using namespace kerosin;
+ // ---- SparkGLRender::RenderSelectionContext
+
+ SparkGLRender::RenderSelectionContext::RenderSelectionContext(shared_ptr<BaseNode> node)
+ {
+ assert(node.get() != 0);
+ glPushMatrix();
+ glMultMatrixf(node->GetWorldTransform().m);
+ }
+
+ SparkGLRender::RenderSelectionContext::~RenderSelectionContext()
+ {
+ glPopMatrix();
+ }
+
+ // ---- SparkGLRender
+
SparkGLRender::SparkGLRender()
{
***************
*** 110,116 ****
--- 128,136 ----
if (sMatNode.get() != 0)
{
+
shared_ptr<Material> material = sMatNode->GetMaterial();
sMatNode->SetMaterial("matSelected");
+ RenderSelectionContext context(sMatNode);
sMatNode->RenderInternal();
***************
*** 128,138 ****
if (renderNode.get() != 0)
{
renderNode->RenderInternal();
return;
}
const salt::AABB3& bb = node->GetWorldBoundingBox();
float size = std::max<float>(GLRENDER_MIN_AXIS_WIDTH, bb.GetRadius());
! Axis::RenderAxis(size);
}
--- 148,193 ----
if (renderNode.get() != 0)
{
+ RenderSelectionContext context(renderNode);
renderNode->RenderInternal();
return;
}
+ shared_ptr<Joint> jointNode =
+ shared_dynamic_cast<Joint>(node);
+
+ if (jointNode.get() != 0)
+ {
+ for (
+ int i=Joint::BI_FIRST;
+ i<=Joint::BI_SECOND;
+ ++i
+ )
+ {
+ shared_ptr<Body> body =
+ jointNode->GetBody(static_cast<Joint::EBodyIndex>(i));
+
+ if (body.get() == 0)
+ {
+ continue;
+ }
+
+ RenderNodeSelection(body);
+ }
+
+ {
+ RenderSelectionContext context(jointNode);
+ Axis::RenderAxis(0.5);
+ }
+
+ return;
+ }
+
const salt::AABB3& bb = node->GetWorldBoundingBox();
float size = std::max<float>(GLRENDER_MIN_AXIS_WIDTH, bb.GetRadius());
!
! {
! RenderSelectionContext context(node);
! Axis::RenderAxis(size);
! }
}
***************
*** 150,158 ****
glDisable(GL_DEPTH_TEST);
- glPushMatrix();
- glMultMatrixf(node->GetWorldTransform().m);
-
RenderNodeSelection(node);
-
- glPopMatrix();
}
--- 205,208 ----
|