|
From: Feng X. <hen...@ma...> - 2008-04-11 02:52:18
|
Hi Markus,
I just finished the generic code for the disable of inner collision of nao robot. Hope it will work. Please have a check. Welcome more criticism.
Cheers!
Feng Xue
2008-04-11
发件人: Feng Xue
发送时间: 2008-04-11 10:37:36
收件人: sse...@li...
抄送:
主题: [sserver-commits] CVS:rcsoccersim/rcssserver3D/lib/oxygen/physicsserver space.cpp,1.16, 1.17 space.h, 1.8, 1.9 space_c
Update of /cvsroot/sserver/rcsoccersim/rcssserver3D/lib/oxygen/physicsserver
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv20902
Modified Files:
space.cpp space.h space_c.cpp
Log Message:
Removed the original "disable inner collision code" and add
a generic code proposed by Markus Rollmann
Index: space.cpp
===================================================================
RCS file: /cvsroot/sserver/rcsoccersim/rcssserver3D/lib/oxygen/physicsserver/space.cpp,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -d -r1.16 -r1.17
*** space.cpp 10 Apr 2008 11:34:33 -0000 1.16
--- space.cpp 11 Apr 2008 02:36:56 -0000 1.17
***************
*** 5,9 ****
Copyright (C) 2003 Koblenz University
$Id$
- $Id$
This program is free software; you can redistribute it and/or modify
--- 5,8 ----
***************
*** 36,40 ****
}
! Space::Space() : ODEObject(), mODESpace(0), mODEContactGroup(0)
{
}
--- 35,39 ----
}
! Space::Space() : ODEObject(), mODESpace(0), mODEContactGroup(0), mIsDisableInnerCollision(false)
{
}
***************
*** 98,102 ****
}
! //If obj1 and obj2 are in a robot space, no collide
boost::shared_ptr<Collider> c1 = Collider::GetCollider(obj1);
boost::shared_ptr<Collider> c2 = Collider::GetCollider(obj2);
--- 97,101 ----
}
! //If obj1 and obj2 are in a space that disabled inner collision, no collide
boost::shared_ptr<Collider> c1 = Collider::GetCollider(obj1);
boost::shared_ptr<Collider> c2 = Collider::GetCollider(obj2);
***************
*** 108,112 ****
if (s1.get() && s2.get() && (s1.get() == s2.get()))
{
! if (s1->GetName() == "spacenao" && s2->GetName() == "spacenao")
{
return;
--- 107,111 ----
if (s1.get() && s2.get() && (s1.get() == s2.get()))
{
! if (s1->IsDisableInnerCollision() && s2->IsDisableInnerCollision())
{
return;
***************
*** 266,267 ****
--- 265,279 ----
mODESpace = 0;
}
+
+
+ void Space::DisableInnerCollision(bool is_disable)
+ {
+ this->mIsDisableInnerCollision = is_disable;
+ }
+
+
+ bool Space::IsDisableInnerCollision() const
+ {
+ return this->mIsDisableInnerCollision;
+ }
+
Index: space.h
===================================================================
RCS file: /cvsroot/sserver/rcsoccersim/rcssserver3D/lib/oxygen/physicsserver/space.h,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** space.h 22 Feb 2008 07:52:14 -0000 1.8
--- space.h 11 Apr 2008 02:36:56 -0000 1.9
***************
*** 68,71 ****
--- 68,77 ----
bool IsGlobalSpace();
+ /** enable/disable inner collision */
+ void DisableInnerCollision(bool is_disable);
+
+ /** get the tag whether disable inner collision */
+ bool IsDisableInnerCollision() const;
+
protected:
static void collisionNearCallback (void *data, dGeomID obj1, dGeomID obj2);
***************
*** 105,108 ****
--- 111,118 ----
/** the ODE group for all created contact joints */
dJointGroupID mODEContactGroup;
+
+ private:
+ /** the tag whether disable inner collision */
+ bool mIsDisableInnerCollision;
};
Index: space_c.cpp
===================================================================
RCS file: /cvsroot/sserver/rcsoccersim/rcssserver3D/lib/oxygen/physicsserver/space_c.cpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** space_c.cpp 21 Feb 2004 15:30:44 -0000 1.5
--- space_c.cpp 11 Apr 2008 02:36:56 -0000 1.6
***************
*** 24,29 ****
using namespace oxygen;
void CLASS(Space)::DefineClass()
{
! DEFINE_BASECLASS(oxygen/ODEObject);
}
--- 24,43 ----
using namespace oxygen;
+ FUNCTION(Space,disableInnerCollision)
+ {
+ bool inSet;
+ if ((in.GetSize() != 1) ||
+ (! in.GetValue(in[0],inSet)))
+ {
+ return false;
+ }
+
+ obj->DisableInnerCollision(inSet);
+ return true;
+ }
+
void CLASS(Space)::DefineClass()
{
! DEFINE_BASECLASS(oxygen/ODEObject);
! DEFINE_FUNCTION(disableInnerCollision);
}
-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
Don't miss this year's exciting event. There's still time to save $100.
Use priority code J8TL2D2.
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
sserver-commits mailing list
sse...@li...
https://lists.sourceforge.net/lists/listinfo/sserver-commits
|