add 'fixed' joint for btMultiBody
improve btMultiBody version of URDF reader (still work-in-progress) enabled planar joint for btMultiBody (untested) enable loading from relative path for .stl meshes
This commit is contained in:
@@ -134,8 +134,14 @@ void ScrollControl::UpdateScrollBars()
|
||||
|
||||
m_InnerPanel->SetSize( Utility::Max(Width(), childrenWidth), Utility::Max(Height(), childrenHeight));
|
||||
|
||||
float wPercent = (float)Width() / (float)(childrenWidth + (m_VerticalScrollBar->Hidden() ? 0 : m_VerticalScrollBar->Width()));
|
||||
float hPercent = (float)Height() / (float)(childrenHeight + (m_HorizontalScrollBar->Hidden() ? 0 : m_HorizontalScrollBar->Height()));
|
||||
float hg = (float)(childrenWidth + (m_VerticalScrollBar->Hidden() ? 0 : m_VerticalScrollBar->Width()));
|
||||
if (hg==0.f)
|
||||
hg = 0.00001f;
|
||||
float wPercent = (float)Width() / hg;
|
||||
hg = (float)(childrenHeight + (m_HorizontalScrollBar->Hidden() ? 0 : m_HorizontalScrollBar->Height()));
|
||||
if (hg==0.f)
|
||||
hg = 0.00001f;
|
||||
float hPercent = (float)Height() / hg;
|
||||
|
||||
if ( m_bCanScrollV )
|
||||
SetVScrollRequired( hPercent >= 1 );
|
||||
|
||||
@@ -130,20 +130,23 @@ bool TreeControl::OnKeyUp( bool bDown )
|
||||
//float maxCoordViewableWindow = minCoordViewableWindow+viewSize;
|
||||
float minCoordSelectedItem = curItem*16.f;
|
||||
// float maxCoordSelectedItem = (curItem+1)*16.f;
|
||||
if (contSize!=viewSize)
|
||||
{
|
||||
float newAmount = float(minCoordSelectedItem)/(contSize-viewSize);
|
||||
if (newAmount<curAmount)
|
||||
{
|
||||
m_ScrollControl->m_VerticalScrollBar->SetScrolledAmount(newAmount,true);
|
||||
float newAmount = float(minCoordSelectedItem)/(contSize-viewSize);
|
||||
if (newAmount<curAmount)
|
||||
{
|
||||
m_ScrollControl->m_VerticalScrollBar->SetScrolledAmount(newAmount,true);
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
int numItems = (viewSize)/16-1;
|
||||
float newAmount = float((curItem-numItems)*16)/(contSize-viewSize);
|
||||
|
||||
if (newAmount>curAmount)
|
||||
{
|
||||
m_ScrollControl->m_VerticalScrollBar->SetScrolledAmount(newAmount,true);
|
||||
int numItems = (viewSize)/16-1;
|
||||
float newAmount = float((curItem-numItems)*16)/(contSize-viewSize);
|
||||
|
||||
if (newAmount>curAmount)
|
||||
{
|
||||
m_ScrollControl->m_VerticalScrollBar->SetScrolledAmount(newAmount,true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -186,20 +189,23 @@ bool TreeControl::OnKeyDown( bool bDown )
|
||||
//float maxCoordViewableWindow = minCoordViewableWindow+viewSize;
|
||||
float minCoordSelectedItem = curItem*16.f;
|
||||
//float maxCoordSelectedItem = (curItem+1)*16.f;
|
||||
if (contSize!=viewSize)
|
||||
{
|
||||
float newAmount = float(minCoordSelectedItem)/(contSize-viewSize);
|
||||
if (newAmount<curAmount)
|
||||
{
|
||||
m_ScrollControl->m_VerticalScrollBar->SetScrolledAmount(newAmount,true);
|
||||
float newAmount = float(minCoordSelectedItem)/(contSize-viewSize);
|
||||
if (newAmount<curAmount)
|
||||
{
|
||||
m_ScrollControl->m_VerticalScrollBar->SetScrolledAmount(newAmount,true);
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
int numItems = (viewSize)/16-1;
|
||||
float newAmount = float((curItem-numItems)*16)/(contSize-viewSize);
|
||||
|
||||
if (newAmount>curAmount)
|
||||
{
|
||||
m_ScrollControl->m_VerticalScrollBar->SetScrolledAmount(newAmount,true);
|
||||
int numItems = (viewSize)/16-1;
|
||||
float newAmount = float((curItem-numItems)*16)/(contSize-viewSize);
|
||||
|
||||
if (newAmount>curAmount)
|
||||
{
|
||||
m_ScrollControl->m_VerticalScrollBar->SetScrolledAmount(newAmount,true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -228,20 +234,23 @@ bool TreeControl::OnKeyRight( bool bDown )
|
||||
// float maxCoordViewableWindow = minCoordViewableWindow+viewSize;
|
||||
float minCoordSelectedItem = curItem*16.f;
|
||||
// float maxCoordSelectedItem = (curItem+1)*16.f;
|
||||
if (contSize!=viewSize)
|
||||
{
|
||||
float newAmount = float(minCoordSelectedItem)/(contSize-viewSize);
|
||||
if (newAmount<curAmount)
|
||||
{
|
||||
m_ScrollControl->m_VerticalScrollBar->SetScrolledAmount(newAmount,true);
|
||||
float newAmount = float(minCoordSelectedItem)/(contSize-viewSize);
|
||||
if (newAmount<curAmount)
|
||||
{
|
||||
m_ScrollControl->m_VerticalScrollBar->SetScrolledAmount(newAmount,true);
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
int numItems = (viewSize)/16-1;
|
||||
float newAmount = float((curItem-numItems)*16)/(contSize-viewSize);
|
||||
|
||||
if (newAmount>curAmount)
|
||||
{
|
||||
m_ScrollControl->m_VerticalScrollBar->SetScrolledAmount(newAmount,true);
|
||||
int numItems = (viewSize)/16-1;
|
||||
float newAmount = float((curItem-numItems)*16)/(contSize-viewSize);
|
||||
|
||||
if (newAmount>curAmount)
|
||||
{
|
||||
m_ScrollControl->m_VerticalScrollBar->SetScrolledAmount(newAmount,true);
|
||||
}
|
||||
}
|
||||
}
|
||||
Invalidate();
|
||||
@@ -273,23 +282,25 @@ bool TreeControl::OnKeyLeft( bool bDown )
|
||||
// float maxCoordViewableWindow = minCoordViewableWindow+viewSize;
|
||||
float minCoordSelectedItem = curItem*16.f;
|
||||
// float maxCoordSelectedItem = (curItem+1)*16.f;
|
||||
|
||||
if (contSize!=viewSize)
|
||||
{
|
||||
float newAmount = float(minCoordSelectedItem)/(contSize-viewSize);
|
||||
if (newAmount<curAmount)
|
||||
{
|
||||
m_ScrollControl->m_VerticalScrollBar->SetScrolledAmount(newAmount,true);
|
||||
float newAmount = float(minCoordSelectedItem)/(contSize-viewSize);
|
||||
if (newAmount<curAmount)
|
||||
{
|
||||
m_ScrollControl->m_VerticalScrollBar->SetScrolledAmount(newAmount,true);
|
||||
}
|
||||
}
|
||||
}
|
||||
{
|
||||
int numItems = (viewSize)/16-1;
|
||||
float newAmount = float((curItem-numItems)*16)/(contSize-viewSize);
|
||||
{
|
||||
int numItems = (viewSize)/16-1;
|
||||
float newAmount = float((curItem-numItems)*16)/(contSize-viewSize);
|
||||
|
||||
if (newAmount>curAmount)
|
||||
{
|
||||
m_ScrollControl->m_VerticalScrollBar->SetScrolledAmount(newAmount,true);
|
||||
if (newAmount>curAmount)
|
||||
{
|
||||
m_ScrollControl->m_VerticalScrollBar->SetScrolledAmount(newAmount,true);
|
||||
}
|
||||
Invalidate();
|
||||
}
|
||||
Invalidate();
|
||||
}
|
||||
//viewSize/contSize
|
||||
|
||||
|
||||
@@ -116,6 +116,7 @@ my_shared_ptr<ModelInterface> parseURDF(const std::string &xml_string)
|
||||
{
|
||||
my_shared_ptr<Link> link;
|
||||
link.reset(new Link);
|
||||
model->m_numLinks++;
|
||||
|
||||
try {
|
||||
parseLink(*link, link_xml);
|
||||
@@ -176,6 +177,7 @@ my_shared_ptr<ModelInterface> parseURDF(const std::string &xml_string)
|
||||
{
|
||||
my_shared_ptr<Joint> joint;
|
||||
joint.reset(new Joint);
|
||||
model->m_numJoints++;
|
||||
|
||||
if (parseJoint(*joint, joint_xml))
|
||||
{
|
||||
|
||||
@@ -223,6 +223,8 @@ public:
|
||||
std::vector<my_shared_ptr<Joint> > child_joints;
|
||||
std::vector<my_shared_ptr<Link> > child_links;
|
||||
|
||||
mutable int m_link_index;
|
||||
|
||||
const Link* getParent() const
|
||||
{return parent_link_;}
|
||||
|
||||
@@ -242,6 +244,8 @@ public:
|
||||
this->child_links.clear();
|
||||
this->collision_array.clear();
|
||||
this->visual_array.clear();
|
||||
this->m_link_index=-1;
|
||||
this->parent_link_ = NULL;
|
||||
};
|
||||
|
||||
private:
|
||||
|
||||
@@ -82,6 +82,8 @@ public:
|
||||
|
||||
void clear()
|
||||
{
|
||||
m_numLinks=0;
|
||||
m_numJoints = 0;
|
||||
name_.clear();
|
||||
this->links_.clear();
|
||||
this->joints_.clear();
|
||||
@@ -132,6 +134,7 @@ public:
|
||||
this->getLink(child_link_name, child_link);
|
||||
if (!child_link)
|
||||
{
|
||||
printf("Error: child link [%s] of joint [%s] not found\n", child_link_name,joint->first );
|
||||
assert(0);
|
||||
// throw ParseError("child link [" + child_link_name + "] of joint [" + joint->first + "] not found");
|
||||
}
|
||||
@@ -206,6 +209,8 @@ public:
|
||||
/// \brief The root is always a link (the parent of the tree describing the robot)
|
||||
my_shared_ptr<Link> root_link_;
|
||||
|
||||
int m_numLinks;//includes parent
|
||||
int m_numJoints;
|
||||
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user