00001 /***************************************************************************** 00002 * SGL: A Scene Graph Library 00003 * 00004 * Copyright (C) 1997-2001 Scott McMillan All Rights Reserved. 00005 * 00006 * This library is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU Library General Public 00008 * License as published by the Free Software Foundation; either 00009 * version 2 of the License, or (at your option) any later version. 00010 * 00011 * This library is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 * Library General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU Library General Public 00017 * License along with this library; if not, write to the Free 00018 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00019 ***************************************************************************** 00020 * File: sglOverrideStateNode.hpp 00021 * Author: Tom Stimson 00022 * Created: 21 July 2000 00023 * Summary: override the state of all nodes below this one 00024 *****************************************************************************/ 00025 00026 #ifndef __SGL_OVERRIDESTATENODE_HPP 00027 #define __SGL_OVERRIDESTATENODE_HPP 00028 00029 #include <sgl.h> 00030 #include <sglGroup.hpp> 00031 00055 class SGL_DLL_API sglOverrideStateNode : public sglGroup 00056 { 00057 public: 00059 sglOverrideStateNode(); 00061 virtual ~sglOverrideStateNode(); 00062 00070 void setStatelets(const vector<sglStatelet*> &statelets); 00071 00075 const vector<sglStatelet*> &getStatelets() const; 00076 00077 // See sglNode::clone() for details. 00078 virtual sglNode *clone(unsigned int mode) const; 00079 00080 // See sglObject::printInfo() for details. 00081 virtual void printInfo(ostream &ostrm, const char *indent_string) const; 00082 00083 protected: 00084 // See sglNode::cull(f) for details 00085 virtual void cull(sglCull<float> &trav_state, 00086 unsigned int cull_flags) const; 00087 00088 // See sglNode::cull(d) for details 00089 virtual void cull(sglCull<double> &trav_state, 00090 unsigned int cull_flags) const; 00091 00092 void copyTo(sglOverrideStateNode *dst, unsigned int mode) const; 00093 00094 private: // not implemented 00095 sglOverrideStateNode(const sglOverrideStateNode &); 00096 sglOverrideStateNode &operator=(const sglOverrideStateNode &); 00097 00098 00099 protected: 00100 vector<sglStatelet*> m_statelets; 00101 }; 00102 00103 #endif