00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00027
00029 #ifndef __GLOBALSETTINGS_H__
00030 #define __GLOBALSETTINGS_H__
00031
00032 #include "X3DBindableNode.h"
00033 #include "SFString.h"
00034 #include "SFBool.h"
00035 #include "SFFloat.h"
00036 #include "H3DOptionNode.h"
00037 #include "MFNode.h"
00038
00039 namespace H3D {
00044 class H3DAPI_API GlobalSettings : public X3DBindableNode {
00045 public:
00046
00047 typedef TypedMFNode< H3DOptionNode > MFOptionNode;
00048
00050 GlobalSettings( Inst< SFSetBind > _set_bind = 0,
00051 Inst< SFNode > _metadata = 0,
00052 Inst< SFTime > _bindTime = 0,
00053 Inst< SFBool > _isBound = 0,
00054 Inst< MFOptionNode > _options = 0 );
00055
00057 ~GlobalSettings() {
00058 removeFromStack();
00059 }
00060
00062 static inline GlobalSettings *getActive() {
00063 return static_cast< GlobalSettings * >
00064 ( X3DBindableNode::getActive( "GlobalSettings" ) );
00065 }
00066
00070 template< class OptionNodeType >
00071 void getOptionNode( OptionNodeType * &option ) {
00072 for( MFOptionNode::const_iterator i = options->begin();
00073 i != options->end(); i++ ) {
00074 OptionNodeType *options = dynamic_cast< OptionNodeType * >( *i );
00075 if( options ) {
00076 option = options;
00077 return;
00078 }
00079 }
00080 option = NULL;
00081 }
00082
00087 auto_ptr< MFOptionNode > options;
00088
00090 static H3DNodeDatabase database;
00091 };
00092 }
00093
00094 #endif