|
Atoms Crowd
4.1.0
|
26 if (m_translation.size() > frame)
27 m_translation[frame].setValue(translation);
32 if (m_rotation.size() > frame)
33 m_rotation[frame] = rotation;
38 if (m_scale.size() > frame)
39 m_scale[frame].setValue(scale);
44 return frame > m_numberOfFrames - 1 ? m_translation[m_numberOfFrames - 1] : m_translation[frame];
49 return frame > m_numberOfFrames - 1 ? m_rotation[m_numberOfFrames - 1] : m_rotation[frame];
54 return frame > m_numberOfFrames - 1 ? m_scale[m_numberOfFrames - 1] : m_scale[frame];
57 unsigned int JointClipData::getArrayMetadataType(
const std::string &name)
const
59 return m_metadata.at(
name)->typeId();
62 template <
class T>
inline T JointClipData::getArrayMetadataValueAtFrame(
const std::string &name,
const unsigned int frame)
const
64 AtomsPtr<AtomsCore::TypedArrayMetadata<T>> vec = std::static_pointer_cast<AtomsCore::TypedArrayMetadata<T >> (m_metadata.at(
name));
65 return vec->getBasicTypeValue(frame > m_numberOfFrames - 1 ? m_numberOfFrames - 1 : frame);
68 AtomsPtr<AtomsCore::Metadata> JointClipData::getArrayMetadataAtFrame(
const std::string &name,
const unsigned int frame)
const
70 auto metaIt = m_metadata.find(
name);
71 if (metaIt != m_metadata.cend())
72 return metaIt->second->getBasicTypeMetadata(frame > m_numberOfFrames - 1 ? m_numberOfFrames - 1 : frame);
76 template <
class T>
void JointClipData::setArrayMetadataValue(
const std::string &name,
const unsigned int frame, T value)
78 AtomsPtr<AtomsCore::TypedArrayMetadata<T>> vec = std::static_pointer_cast<AtomsCore::TypedArrayMetadata<T>>( m_metadata[
name] );
79 vec->get()[frame] = value;
82 std::vector<std::string> JointClipData::getArrayMetadataNames()
const
85 std::vector<std::string> metadataNames;
86 metadataNames.reserve(m_metadata.size());
87 for (
auto it = m_metadata.cbegin(); it != m_metadata.cend(); it++)
88 metadataNames.push_back(it->first);
92 bool JointClipData::hasArrayMetadata(
const std::string &name)
const
94 return m_metadata.find(
name) != m_metadata.cend();
97 void JointClipData::deleteArrayMetadata(
const std::string& name)
99 auto it = m_metadata.find(
name);
100 if (it != m_metadata.end())
101 m_metadata.erase(it);
104 template<
class T>
inline void JointClipData::getArrayMetadataValues(
const std::string& name, std::vector<T> &values)
106 if (m_metadata.find(
name) == m_metadata.end())
108 AtomsPtr<AtomsCore::TypedArrayMetadata<T>> vec = std::static_pointer_cast<AtomsCore::TypedArrayMetadata<T>>(m_metadata[
name]);
114 template<
class T>
void JointClipData::addArrayMetadata(
const std::string &name,
const bool force)
116 if (m_metadata.find(
name) == m_metadata.end() || force)
120 AtomsPtr<T> d = std::static_pointer_cast<T>(data);
121 d->get().resize(
static_cast<unsigned int>(m_numberOfFrames));
123 m_metadata[
name] = d;
129 void JointClipData::addArrayMetadata(
const std::string &name, AtomsPtr<AtomsCore::BaseTypedArrayMetadata>& data)
131 m_metadata[
name] = data;
134 std::vector<std::string> JointClipData::getStaticMetadataNames()
const
136 return m_staticMetadata.
getKeys();
139 void JointClipData::setStaticMetadata(
const std::string &name,
AtomsCore::Metadata &metadata)
144 AtomsPtr<AtomsCore::Metadata> JointClipData::getStaticMetadata(
const std::string &name)
149 AtomsPtr<const AtomsCore::Metadata> JointClipData::getStaticMetadata(
const std::string &name)
const
156 return m_staticMetadata;
161 return m_staticMetadata;
164 std::map<std::string, AtomsPtr<AtomsCore::BaseTypedArrayMetadata>>& JointClipData::metadata()
169 const std::map<std::string, AtomsPtr<AtomsCore::BaseTypedArrayMetadata>>& JointClipData::metadata()
const
174 bool JointClipData::isTransformAnimated()
const
176 return m_isTransformAnimated;
179 inline const std::vector<std::string>& JointClipData::animatedMetadata()
const
181 return m_animatedMetadata;
189 return static_cast<int>(m_joints.size());
194 return m_numberOfFrames;
209 double f = time * m_fps;
210 unsigned int ret =
static_cast<unsigned int>(f);
217 m_jointIndex[jointName] = index;
218 m_joints[index].setName(jointName);
223 auto it = m_jointIndex.find(jointName);
224 return it != m_jointIndex.end() ? it->second : -1;
229 return m_joints[index];
234 return m_joints[index];
239 return m_joints.at(index);
244 return m_joints.at(index);
274 return m_directionType;
279 m_directionFromJoints.first = fromJoint;
280 m_directionFromJoints.second = toJoint;
286 return m_directionFromJoints;
291 m_isFootLockDisabled = value;
296 return m_isFootLockDisabled;
301 return m_transitionFrames;
306 return m_additiveMode;
311 return m_additiveReferenceClip;
const std::pair< unsigned int, unsigned int > & directionFromJoints() const
Gets the two joint ids used for evaluating the direction when the direction type is set to kJoints.
Definition: AnimationClip.impl.h:284
void setTranslation(const AtomsCore::Vector3 &translation, const unsigned int frame)
Sets translation at frame.
Definition: AnimationClip.impl.h:24
const std::vector< int > & transitionFrames() const
Gets the transition frames.
Definition: AnimationClip.impl.h:299
AtomsMath::Quaternion Quaternion
Quaternion class.
Definition: AtomsMath.h:67
const AtomsCore::Quaternion & getRotation(const unsigned int frame) const
Gets rotation at frame.
Definition: AnimationClip.impl.h:47
AtomsCore::Vector3 direction() const
Gets the clip direction.
Definition: AnimationClip.impl.h:262
void setDirectionType(unsigned int directionType)
Sets the clip direction type.
Definition: AnimationClip.impl.h:267
JointClipData & operator[](unsigned short index)
Gets joint clip data.
Definition: AnimationClip.impl.h:227
const std::string & name() const
Gets name.
Definition: AnimationClip.impl.h:14
const AtomsCore::Vector3 & getTranslation(const unsigned int frame) const
Gets translation at frame.
Definition: AnimationClip.impl.h:42
void setScale(const AtomsCore::Vector3 &scale, const unsigned int frame)
Sets scale at frame.
Definition: AnimationClip.impl.h:36
int jointId(const std::string &jointName) const
Get joint index from joint name.
Definition: AnimationClip.impl.h:221
void setDirectionFromJoints(unsigned int fromJoint, unsigned int toJoint)
Sets the two joint ids used for evaluating the direction when the direction type is set to kJoints.
Definition: AnimationClip.impl.h:277
unsigned int additiveMode() const
Gets the clip additive mode.
Definition: AnimationClip.impl.h:304
AtomsMath::Vector3 Vector3
Vector3 class.
Definition: AtomsMath.h:57
const AtomsCore::Vector3 & getScale(const unsigned int frame) const
Gets scale at frame.
Definition: AnimationClip.impl.h:52
void setName(const std::string &name)
Sets name.
Definition: AnimationClip.impl.h:19
Atoms namespace.
Definition: Agent.h:28
bool isFootLockDisabled() const
Returns false if the the foot lock is disabled.
Definition: AnimationClip.impl.h:294
JointClipData & at(unsigned short index)
Gets joint clip data.
Definition: AnimationClip.impl.h:237
void setJointName(const unsigned int index, const std::string &jointName)
Sets the joint name.
Definition: AnimationClip.impl.h:215
void disableFootLock(bool value)
Sets the clip foot lock state.
Definition: AnimationClip.impl.h:289
AtomsCore::MapMetadata & metadata()
Gets metadata map.
Definition: AnimationClip.impl.h:247
Joint Clip data.
Definition: AnimationClip.h:37
int numFrames() const
Gets the number of frames.
Definition: AnimationClip.impl.h:192
void setFps(double value)
Sets the frame per second.
Definition: AnimationClip.impl.h:202
double fps() const
Gets the frame per second.
Definition: AnimationClip.impl.h:197
int numJoints() const
Gets the number of joints.
Definition: AnimationClip.impl.h:187
unsigned int directionType() const
Gets the clip direction type.
Definition: AnimationClip.impl.h:272
void setDirection(const AtomsCore::Vector3 &direction)
Sets the clip direction.
Definition: AnimationClip.impl.h:257
void setRotation(const AtomsCore::Quaternion &rotation, const unsigned int frame)
Sets rotation at frame.
Definition: AnimationClip.impl.h:30
unsigned int mapTimeToFrame(const double time, double &reminder) const
Maps time to frame.
Definition: AnimationClip.impl.h:207
const std::string & additiveReferenceClip() const
Gets the clip additive mode.
Definition: AnimationClip.impl.h:309