99 lines
2.3 KiB
Plaintext
99 lines
2.3 KiB
Plaintext
// Copyright (C) 2010, Guy Barrand. All rights reserved.
|
|
// See the file tools.license for terms.
|
|
|
|
#ifndef tools_sg_separator
|
|
#define tools_sg_separator
|
|
|
|
#include "group"
|
|
#include "render_action"
|
|
#include "bbox_action"
|
|
#include "visible_action"
|
|
|
|
namespace tools {
|
|
namespace sg {
|
|
|
|
class separator : public group {
|
|
TOOLS_NODE(separator,tools::sg::separator,group)
|
|
public: //node
|
|
virtual void render(render_action& a_action) {
|
|
a_action.push_matrices();
|
|
a_action.push_state();
|
|
|
|
parent::render(a_action);
|
|
|
|
unsigned int ret_num_light = a_action.state().m_light;
|
|
|
|
a_action.pop_matrices();
|
|
a_action.pop_state();
|
|
|
|
a_action.restore_state(ret_num_light);
|
|
}
|
|
virtual void pick(pick_action& a_action) {
|
|
a_action.push_matrices();
|
|
a_action.push_state();
|
|
parent::pick(a_action);
|
|
a_action.pop_matrices();
|
|
a_action.pop_state();
|
|
}
|
|
virtual void bbox(bbox_action& a_action) {
|
|
a_action.push_matrices();
|
|
a_action.push_state();
|
|
parent::bbox(a_action);
|
|
a_action.pop_matrices();
|
|
a_action.pop_state();
|
|
}
|
|
virtual void event(event_action& a_action) {
|
|
a_action.push_matrices();
|
|
a_action.push_state();
|
|
parent::event(a_action);
|
|
a_action.pop_matrices();
|
|
a_action.pop_state();
|
|
}
|
|
virtual void get_matrix(get_matrix_action& a_action) {
|
|
a_action.push_matrices();
|
|
a_action.push_state();
|
|
parent::get_matrix(a_action);
|
|
a_action.pop_matrices();
|
|
a_action.pop_state();
|
|
}
|
|
virtual bool write(write_action& a_action) {
|
|
if(!a_action.beg_node(*this)) return false;
|
|
if(!write_fields(a_action)) return false;
|
|
if(!write_children(a_action)) return false;
|
|
if(!a_action.end_node(*this)) return false;
|
|
return true;
|
|
}
|
|
virtual void is_visible(visible_action& a_action) {
|
|
a_action.push_matrices();
|
|
a_action.push_state();
|
|
parent::is_visible(a_action);
|
|
a_action.pop_matrices();
|
|
a_action.pop_state();
|
|
}
|
|
public:
|
|
separator():parent(){
|
|
#ifdef TOOLS_MEM
|
|
mem::increment(s_class().c_str());
|
|
#endif
|
|
}
|
|
virtual ~separator(){
|
|
#ifdef TOOLS_MEM
|
|
mem::decrement(s_class().c_str());
|
|
#endif
|
|
}
|
|
public:
|
|
separator(const separator& a_from):parent(a_from){
|
|
#ifdef TOOLS_MEM
|
|
mem::increment(s_class().c_str());
|
|
#endif
|
|
}
|
|
separator& operator=(const separator& a_from){
|
|
parent::operator=(a_from);
|
|
return *this;
|
|
}
|
|
};
|
|
|
|
}}
|
|
|
|
#endif
|