1 #ifndef boxm2_vecf_composite_head_model_articulation_h_ 2 #define boxm2_vecf_composite_head_model_articulation_h_ 3 //: 4 // \file 5 // \brief Parameters for the composite_head_model model 6 // 7 // \author Octi Biris 8 // \date 9 Jul 2015 9 // 10 #include "boxm2_vecf_scene_articulation.h" 11 #include "boxm2_vecf_composite_head_parameters.h" 12 13 class boxm2_vecf_composite_head_model_articulation : public boxm2_vecf_scene_articulation{ 14 public: 15 //default constructor creates play sequences around a default set of composite head params boxm2_vecf_composite_head_model_articulation()16 boxm2_vecf_composite_head_model_articulation(){ 17 boxm2_vecf_composite_head_parameters default_params; 18 this->register_play_sequences(default_params); 19 this->set_play_sequence("default"); 20 } 21 // constructor to create the play sequences that modify a specific set of parameters boxm2_vecf_composite_head_model_articulation(boxm2_vecf_composite_head_parameters const & head_params)22 boxm2_vecf_composite_head_model_articulation( boxm2_vecf_composite_head_parameters const& head_params){ 23 this->register_play_sequences(head_params); 24 this->set_play_sequence("default"); 25 } 26 ~boxm2_vecf_composite_head_model_articulation()27 ~boxm2_vecf_composite_head_model_articulation() override{ 28 params_.clear(); 29 } 30 size()31 unsigned size() override{ return static_cast<unsigned>(params_.size()); } 32 boxm2_vecf_articulated_params& operator [] (unsigned i) override { 33 return params_[i] ; } 34 void register_play_sequences(boxm2_vecf_composite_head_parameters const& head_params); 35 set_play_sequence(std::string seq_id)36bool set_play_sequence(std::string seq_id) override{ 37 if(play_sequence_map_.find(seq_id) != play_sequence_map_.end()){ 38 params_ = play_sequence_map_[seq_id]; 39 return true; 40 }else{ 41 std::cout<<"could not find play sequance "<<seq_id<<" in map. choosing default one"<<std::endl; 42 params_=play_sequence_map_["default"]; 43 return false; 44 } 45 } 46 private: 47 std::vector<boxm2_vecf_composite_head_parameters> params_; 48 std::map<std::string,std::vector<boxm2_vecf_composite_head_parameters> > play_sequence_map_; 49 50 }; 51 #endif// boxm2_vecf_composite_head_model_articulation 52