10 BCBoneMatrixMap::iterator it;
11 for (it = bonemats.begin(); it != bonemats.end(); ++it) {
19 BCBoneMatrixMap::const_iterator it = bonemats.find(bone);
20 if (it != bonemats.end()) {
21 throw std::invalid_argument(
"bone " + std::string(bone->
name) +
" already defined before");
24 bonemats[bone] = matrix;
33 if (bname != channel_target) {
34 bname = bname.substr(2);
36 BCBoneMatrixMap::const_iterator it;
37 for (it = bonemats.begin(); it != bonemats.end(); ++it) {
38 Bone *bone = it->first;
39 if (bname == bone->
name) {
49 if (channel_type ==
"location") {
50 *val = matrix->
location()[array_index];
52 else if (channel_type ==
"scale") {
53 *val = matrix->
scale()[array_index];
55 else if (
ELEM(channel_type,
"rotation",
"rotation_euler")) {
56 *val = matrix->
rotation()[array_index];
58 else if (channel_type ==
"rotation_quaternion") {
59 *val = matrix->
quat()[array_index];
71 BCBoneMatrixMap::const_iterator it = bonemats.find(bone);
72 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_before(const std::string &s, const std::string &probe)
std::string bc_string_after(const std::string &s, const std::string &probe)