forked from bartvdbraak/blender
74 lines
1.3 KiB
C++
74 lines
1.3 KiB
C++
/** \file itasc/FixedObject.cpp
|
|
* \ingroup itasc
|
|
*/
|
|
/*
|
|
* FixedObject.cpp
|
|
*
|
|
* Created on: Feb 10, 2009
|
|
* Author: benoitbolsee
|
|
*/
|
|
|
|
#include "FixedObject.hpp"
|
|
|
|
namespace iTaSC{
|
|
|
|
|
|
FixedObject::FixedObject():UncontrolledObject(),
|
|
m_finalized(false), m_nframe(0)
|
|
{
|
|
}
|
|
|
|
FixedObject::~FixedObject()
|
|
{
|
|
m_frameArray.clear();
|
|
}
|
|
|
|
int FixedObject::addFrame(const std::string& name, const Frame& frame)
|
|
{
|
|
if (m_finalized)
|
|
return -1;
|
|
FrameList::iterator it;
|
|
unsigned int i;
|
|
for (i=0, it=m_frameArray.begin(); i<m_nframe; i++, it++) {
|
|
if (it->first == name) {
|
|
// this frame will replace the old frame
|
|
it->second = frame;
|
|
return i;
|
|
}
|
|
}
|
|
m_frameArray.push_back(FrameList::value_type(name,frame));
|
|
return m_nframe++;
|
|
}
|
|
|
|
int FixedObject::addEndEffector(const std::string& name)
|
|
{
|
|
// verify that this frame name exist
|
|
FrameList::iterator it;
|
|
unsigned int i;
|
|
for (i=0, it=m_frameArray.begin(); i<m_nframe; i++, it++) {
|
|
if (it->first == name) {
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
void FixedObject::finalize()
|
|
{
|
|
if (m_finalized)
|
|
return;
|
|
initialize(0, m_nframe);
|
|
m_finalized = true;
|
|
}
|
|
|
|
const Frame& FixedObject::getPose(const unsigned int frameIndex)
|
|
{
|
|
if (frameIndex < m_nframe) {
|
|
return m_frameArray[frameIndex].second;
|
|
} else {
|
|
return F_identity;
|
|
}
|
|
}
|
|
|
|
}
|