2 Copyright (C) 1999-2006 Id Software, Inc. and contributors.
3 For a list of contributors, see the accompanying CONTRIBUTORS file.
5 This file is part of GtkRadiant.
7 GtkRadiant is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version.
12 GtkRadiant is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with GtkRadiant; if not, write to the Free Software
19 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
22 #if !defined( INCLUDED_MAP_H )
23 #define INCLUDED_MAP_H
25 #include "iscenegraph.h"
26 #include "generic/callback.h"
27 #include "signal/signalfwd.h"
28 #include "string/stringfwd.h"
36 void Map_addValidCallback(Map &map, const SignalHandler &handler);
38 bool Map_Valid(const Map &map);
41 Callback<void()> m_draw;
45 DeferredDraw(const Callback<void()> &draw) : m_draw(draw), m_defer(false), m_deferred(false)
65 if (m_defer && m_deferred) {
73 inline void DeferredDraw_onMapValidChanged(DeferredDraw &self)
75 if (Map_Valid(g_map)) {
82 typedef ReferenceCaller<DeferredDraw, void(), DeferredDraw_onMapValidChanged> DeferredDrawOnMapValidChangedCaller;
85 const char *Map_Name(const Map &map);
87 const MapFormat &Map_getFormat(const Map &map);
89 bool Map_Unnamed(const Map &map);
98 scene::Node *Map_GetWorldspawn(const Map &map);
100 scene::Node *Map_FindWorldspawn(Map &map);
102 scene::Node &Map_FindOrInsertWorldspawn(Map &map);
104 template<typename Element>
107 typedef BasicVector3<float> Vector3;
109 extern Vector3 region_mins, region_maxs;
110 extern bool region_active;
112 // used to be #defines, multiple engine support suggests we should go towards dynamic
113 extern float g_MaxWorldCoord;
114 extern float g_MinWorldCoord;
116 void Map_LoadFile(const char *filename);
118 bool Map_SaveFile(const char *filename);
124 void Map_RegionOff();
126 bool Map_SaveRegion(const char *filename);
128 class TextInputStream;
130 class TextOutputStream;
132 void Map_ImportSelected(TextInputStream &in, const MapFormat &format);
134 void Map_ExportSelected(TextOutputStream &out, const MapFormat &format);
136 bool Map_Modified(const Map &map);
138 void Map_SetModified(Map &map, bool modified);
144 scene::Node &Node_Clone(scene::Node &node);
148 void Scene_parentSelectedBrushesToEntity(scene::Graph &graph, scene::Node &parent);
150 std::size_t Scene_countSelectedBrushes(scene::Graph &graph);
152 void Scene_parentSelected();
154 void OnUndoSizeChanged();
171 void Map_Traverse(scene::Node &root, const scene::Traversable::Walker &walker);
174 void SelectBrush(int entitynum, int brushnum);
176 extern CopiedString g_strLastMap;
177 extern bool g_bLoadLastMap;
179 void Map_Construct();
184 void Map_gatherNamespaced(scene::Node &root);
186 void Map_mergeClonedNames();
189 const char *getMapsPath();