ibrush.h

Go to the documentation of this file.
00001 /*
00002  Copyright (C) 2001-2006, William Joseph.
00003  All Rights Reserved.
00004 
00005  This file is part of GtkRadiant.
00006 
00007  GtkRadiant is free software; you can redistribute it and/or modify
00008  it under the terms of the GNU General Public License as published by
00009  the Free Software Foundation; either version 2 of the License, or
00010  (at your option) any later version.
00011 
00012  GtkRadiant is distributed in the hope that it will be useful,
00013  but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  GNU General Public License for more details.
00016 
00017  You should have received a copy of the GNU General Public License
00018  along with GtkRadiant; if not, write to the Free Software
00019  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
00020  */
00021 
00022 #if !defined(INCLUDED_IBRUSH_H)
00023 #define INCLUDED_IBRUSH_H
00024 
00025 #include "generic/constant.h"
00026 #include "generic/callback.h"
00027 #include "math/Vector3.h"
00028 #include "itexdef.h"
00029 
00030 namespace scene
00031 {
00032     class Node;
00033 }
00034 
00035 class _QERFaceData
00036 {
00037     public:
00038         _QERFaceData () :
00039             m_shader(""), contents(0), flags(0), value(0)
00040         {
00041         }
00042         Vector3 m_p0;
00043         Vector3 m_p1;
00044         Vector3 m_p2;
00045         texdef_t m_texdef;
00046         std::string m_shader;
00047         int contents;
00048         int flags;
00049         int value;
00050 };
00051 
00052 typedef Callback1<const _QERFaceData&> BrushFaceDataCallback;
00053 
00054 class BrushCreator
00055 {
00056     public:
00057         INTEGER_CONSTANT(Version, 1);
00058         STRING_CONSTANT(Name, "brush");
00059         virtual ~BrushCreator ()
00060         {
00061         }
00062         virtual scene::Node& createBrush () = 0;
00063         virtual bool useAlternativeTextureProjection () const = 0;
00064         virtual void Brush_forEachFace (scene::Node& brush, const BrushFaceDataCallback& callback) = 0;
00065         virtual bool Brush_addFace (scene::Node& brush, const _QERFaceData& faceData) = 0;
00066 };
00067 
00068 #include "modulesystem.h"
00069 
00070 template<typename Type>
00071 class GlobalModule;
00072 typedef GlobalModule<BrushCreator> GlobalBrushModule;
00073 
00074 template<typename Type>
00075 class GlobalModuleRef;
00076 typedef GlobalModuleRef<BrushCreator> GlobalBrushModuleRef;
00077 
00078 inline BrushCreator& GlobalBrushCreator ()
00079 {
00080     return GlobalBrushModule::getTable();
00081 }
00082 
00083 #endif

Generated by  doxygen 1.6.2