2 PrtView plugin for GtkRadiant
3 Copyright (C) 2001 Geoffrey Dewan, Loki software and qeradiant.com
5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with this library; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
25 #include "renderable.h"
26 #include "math/vector.h"
45 CBspPoint *inner_point;
46 float fp_color_random[4];
52 bool Build(char *def);
55 #define PRTVIEW_PATH_MAX 260
56 typedef guint32 PackedColour;
57 #define RGB(r, g, b) ((guint32)(((guint8) (r) | ((guint16) (g) << 8))|(((guint32) (guint8) (b)) << 16)))
58 #define GetRValue(rgb) ((guint8)(rgb))
59 #define GetGValue(rgb) ((guint8)(((guint16)(rgb)) >> 8))
60 #define GetBValue(rgb) ((guint8)((rgb)>>16))
74 void Load(); // use filename in fn
79 char fn[PRTVIEW_PATH_MAX];
87 PackedColour color_3d;
88 float width_3d; // in 8'ths
90 PackedColour color_fog;
91 float fp_color_fog[4];
98 PackedColour color_2d;
99 float width_2d; // in 8'ths
100 float fp_color_2d[4];
107 unsigned int node_count;
108 unsigned int portal_count;
111 class CubicClipVolume
114 Vector3 cam, min, max;
117 class CPortalsDrawSolid : public OpenGLRenderable
120 mutable CubicClipVolume clip;
121 void render(RenderStateFlags state) const;
124 class CPortalsDrawSolidOutline : public OpenGLRenderable
127 mutable CubicClipVolume clip;
128 void render(RenderStateFlags state) const;
131 class CPortalsDrawWireframe : public OpenGLRenderable
134 void render(RenderStateFlags state) const;
137 class CPortalsRender : public Renderable
140 CPortalsDrawSolid m_drawSolid;
141 CPortalsDrawSolidOutline m_drawSolidOutline;
142 CPortalsDrawWireframe m_drawWireframe;
144 void renderSolid(Renderer& renderer, const VolumeTest& volume) const;
145 void renderWireframe(Renderer& renderer, const VolumeTest& volume) const;
148 extern CPortals portals;
149 extern CPortalsRender render;
151 void Portals_constructShaders();
152 void Portals_destroyShaders();
154 void Portals_shadersChanged();
157 #endif // _PORTALS_H_