Geant4 Cross Reference |
1 // Copyright (C) 2010, Guy Barrand. All rights 1 // Copyright (C) 2010, Guy Barrand. All rights reserved. 2 // See the file tools.license for terms. 2 // See the file tools.license for terms. 3 3 4 #ifndef tools_sg_separator 4 #ifndef tools_sg_separator 5 #define tools_sg_separator 5 #define tools_sg_separator 6 6 7 #include "group" 7 #include "group" 8 #include "render_action" 8 #include "render_action" 9 #include "bbox_action" 9 #include "bbox_action" 10 #include "visible_action" 10 #include "visible_action" 11 11 12 namespace tools { 12 namespace tools { 13 namespace sg { 13 namespace sg { 14 14 15 class separator : public group { 15 class separator : public group { 16 TOOLS_NODE(separator,tools::sg::separator,gr 16 TOOLS_NODE(separator,tools::sg::separator,group) 17 public: //node 17 public: //node 18 virtual void render(render_action& a_action) 18 virtual void render(render_action& a_action) { 19 a_action.push_matrices(); 19 a_action.push_matrices(); 20 a_action.push_state(); 20 a_action.push_state(); 21 21 22 parent::render(a_action); 22 parent::render(a_action); 23 23 24 unsigned int ret_num_light = a_action.stat 24 unsigned int ret_num_light = a_action.state().m_light; 25 25 26 a_action.pop_matrices(); 26 a_action.pop_matrices(); 27 a_action.pop_state(); 27 a_action.pop_state(); 28 28 29 a_action.restore_state(ret_num_light); 29 a_action.restore_state(ret_num_light); 30 } 30 } 31 virtual void pick(pick_action& a_action) { 31 virtual void pick(pick_action& a_action) { 32 a_action.push_matrices(); 32 a_action.push_matrices(); 33 a_action.push_state(); 33 a_action.push_state(); 34 parent::pick(a_action); 34 parent::pick(a_action); 35 a_action.pop_matrices(); 35 a_action.pop_matrices(); 36 a_action.pop_state(); 36 a_action.pop_state(); 37 } 37 } 38 virtual void bbox(bbox_action& a_action) { 38 virtual void bbox(bbox_action& a_action) { 39 a_action.push_matrices(); 39 a_action.push_matrices(); 40 a_action.push_state(); 40 a_action.push_state(); 41 parent::bbox(a_action); 41 parent::bbox(a_action); 42 a_action.pop_matrices(); 42 a_action.pop_matrices(); 43 a_action.pop_state(); 43 a_action.pop_state(); 44 } 44 } 45 virtual void event(event_action& a_action) { 45 virtual void event(event_action& a_action) { 46 a_action.push_matrices(); 46 a_action.push_matrices(); 47 a_action.push_state(); 47 a_action.push_state(); 48 parent::event(a_action); 48 parent::event(a_action); 49 a_action.pop_matrices(); 49 a_action.pop_matrices(); 50 a_action.pop_state(); 50 a_action.pop_state(); 51 } 51 } 52 virtual void get_matrix(get_matrix_action& a 52 virtual void get_matrix(get_matrix_action& a_action) { 53 a_action.push_matrices(); 53 a_action.push_matrices(); 54 a_action.push_state(); 54 a_action.push_state(); 55 parent::get_matrix(a_action); 55 parent::get_matrix(a_action); 56 a_action.pop_matrices(); 56 a_action.pop_matrices(); 57 a_action.pop_state(); 57 a_action.pop_state(); 58 } 58 } 59 virtual bool write(write_action& a_action) { 59 virtual bool write(write_action& a_action) { 60 if(!a_action.beg_node(*this)) return false 60 if(!a_action.beg_node(*this)) return false; 61 if(!write_fields(a_action)) return false; 61 if(!write_fields(a_action)) return false; 62 if(!write_children(a_action)) return false 62 if(!write_children(a_action)) return false; 63 if(!a_action.end_node(*this)) return false 63 if(!a_action.end_node(*this)) return false; 64 return true; 64 return true; 65 } 65 } 66 virtual void is_visible(visible_action& a_ac 66 virtual void is_visible(visible_action& a_action) { 67 a_action.push_matrices(); 67 a_action.push_matrices(); 68 a_action.push_state(); 68 a_action.push_state(); 69 parent::is_visible(a_action); 69 parent::is_visible(a_action); 70 a_action.pop_matrices(); 70 a_action.pop_matrices(); 71 a_action.pop_state(); 71 a_action.pop_state(); 72 } 72 } 73 public: 73 public: 74 separator():parent(){ 74 separator():parent(){ 75 #ifdef TOOLS_MEM 75 #ifdef TOOLS_MEM 76 mem::increment(s_class().c_str()); 76 mem::increment(s_class().c_str()); 77 #endif 77 #endif 78 } 78 } 79 virtual ~separator(){ 79 virtual ~separator(){ 80 #ifdef TOOLS_MEM 80 #ifdef TOOLS_MEM 81 mem::decrement(s_class().c_str()); 81 mem::decrement(s_class().c_str()); 82 #endif 82 #endif 83 } 83 } 84 public: 84 public: 85 separator(const separator& a_from):parent(a_ 85 separator(const separator& a_from):parent(a_from){ 86 #ifdef TOOLS_MEM 86 #ifdef TOOLS_MEM 87 mem::increment(s_class().c_str()); 87 mem::increment(s_class().c_str()); 88 #endif 88 #endif 89 } 89 } 90 separator& operator=(const separator& a_from 90 separator& operator=(const separator& a_from){ 91 parent::operator=(a_from); 91 parent::operator=(a_from); 92 return *this; 92 return *this; 93 } 93 } 94 }; 94 }; 95 95 96 }} 96 }} 97 97 98 #endif 98 #endif