9 BCBoneMatrixMap::iterator it;
10 for (it = bonemats.begin(); it != bonemats.end(); ++it) {
18 BCBoneMatrixMap::const_iterator it = bonemats.find(bone);
19 if (it != bonemats.end()) {
20 throw std::invalid_argument(
"bone " + std::string(bone->
name) +
" already defined before");
23 bonemats[bone] = matrix;
32 if (bname != channel_target) {
33 bname = bname.substr(2);
35 BCBoneMatrixMap::const_iterator it;
36 for (it = bonemats.begin(); it != bonemats.end(); ++it) {
37 Bone *bone = it->first;
38 if (bname == bone->
name) {
48 if (channel_type ==
"location") {
49 *val = matrix->
location()[array_index];
51 else if (channel_type ==
"scale") {
52 *val = matrix->
scale()[array_index];
54 else if (channel_type ==
"rotation" || channel_type ==
"rotation_euler") {
55 *val = matrix->
rotation()[array_index];
57 else if (channel_type ==
"rotation_quaternion") {
58 *val = matrix->
quat()[array_index];
70 BCBoneMatrixMap::const_iterator it = bonemats.find(bone);
71 if (it == bonemats.end()) {
float(& rotation() const)[3]
float(& scale() const)[3]
float(& location() const)[3]
bool get_value(std::string channel_target, int array_index, float *val) const
const BCMatrix & get_matrix() const
void add_bone_matrix(Bone *bone, Matrix &mat)
std::string bc_string_after(const std::string &s, const std::string probe)
std::string bc_string_before(const std::string &s, const std::string probe)