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)36 bool 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