Skip to content

Commit

Permalink
Move portable format related files into separate folder and namespace.
Browse files Browse the repository at this point in the history
Add constants to shared header file.
  • Loading branch information
codereader committed Jan 19, 2020
1 parent f844431 commit 6844378
Show file tree
Hide file tree
Showing 11 changed files with 184 additions and 41 deletions.
5 changes: 3 additions & 2 deletions radiant/Makefile.am
Expand Up @@ -125,8 +125,9 @@ darkradiant_SOURCES = main.cpp \
map/format/Doom3MapFormat.cpp \
map/format/Doom3MapReader.cpp \
map/format/Doom3PrefabFormat.cpp \
map/format/PortableMapFormat.cpp \
map/format/PortableMapWriter.cpp \
map/format/portable/PortableMapFormat.cpp \
map/format/portable/PortableMapWriter.cpp \
map/format/portable/PortableMapReader.cpp \
map/format/Quake3MapReader.cpp \
map/format/Doom3MapWriter.cpp \
map/format/primitiveparsers/PatchDef2.cpp \
Expand Down
4 changes: 2 additions & 2 deletions radiant/map/MapModules.cpp
@@ -1,4 +1,4 @@
#include "format/PortableMapFormat.h"
#include "format/portable/PortableMapFormat.h"
#include "format/Doom3MapFormat.h"
#include "format/Doom3PrefabFormat.h"
#include "format/Quake4MapFormat.h"
Expand All @@ -10,7 +10,7 @@
#include "Map.h"

// Static module instances
module::StaticModule<map::PortableMapFormat> portableMapModule;
module::StaticModule<map::format::PortableMapFormat> portableMapModule;
module::StaticModule<map::Doom3MapFormat> d3MapModule;
module::StaticModule<map::Quake4MapFormat> q4MapModule;
module::StaticModule<map::Doom3PrefabFormat> d3PrefabModule;
Expand Down
105 changes: 105 additions & 0 deletions radiant/map/format/portable/Constants.h
@@ -0,0 +1,105 @@
#pragma once

// Shared string constants used throughout the portable map format classes.

namespace map
{

namespace format
{

namespace constants
{

const char* const ATTR_VERSION = "version";
const char* const ATTR_FORMAT = "format";
const char* const ATTR_FORMAT_VALUE = "portable";

const char* const TAG_MAP_LAYERS = "layers";
const char* const TAG_MAP_LAYER = "layer";
const char* const ATTR_MAP_LAYER_ID = "id";
const char* const ATTR_MAP_LAYER_NAME = "name";

const char* const TAG_SELECTIONGROUPS = "selectionGroups";
const char* const TAG_SELECTIONGROUP = "selectionGroup";
const char* const ATTR_SELECTIONGROUP_ID = "id";
const char* const ATTR_SELECTIONGROUP_NAME = "name";

const char* const TAG_SELECTIONSETS = "selectionSets";
const char* const TAG_SELECTIONSET = "selectionSet";
const char* const ATTR_SELECTIONSET_ID = "id";
const char* const ATTR_SELECTIONSET_NAME = "name";

const char* const TAG_MAP_PROPERTIES = "properties";
const char* const TAG_MAP_PROPERTY = "property";
const char* const ATTR_MAP_PROPERTY_KEY = "key";
const char* const ATTR_MAP_PROPERTY_VALUE = "value";

const char* const TAG_ENTITY = "entity";
const char* const TAG_ENTITY_PRIMITIVES = "primitives";
const char* const TAG_ENTITY_KEYVALUES = "keyValues";
const char* const TAG_ENTITY_KEYVALUE = "keyValue";
const char* const ATTR_ENTITY_NUMBER = "number";
const char* const ATTR_ENTITY_PROPERTY_KEY = "key";
const char* const ATTR_ENTITY_PROPERTY_VALUE = "value";

const char* const TAG_BRUSH = "brush";
const char* const TAG_FACES = "faces";
const char* const TAG_FACE = "face";
const char* const TAG_FACE_PLANE = "plane";
const char* const TAG_FACE_TEXPROJ = "textureProjection";
const char* const TAG_FACE_MATERIAL = "material";
const char* const TAG_FACE_CONTENTSFLAG = "contentsFlag";
const char* const ATTR_BRUSH_NUMBER = "number";
const char* const ATTR_FACE_PLANE_X = "x";
const char* const ATTR_FACE_PLANE_Y = "y";
const char* const ATTR_FACE_PLANE_Z = "z";
const char* const ATTR_FACE_PLANE_D = "d";
const char* const ATTR_FACE_TEXTPROJ_XX = "xx";
const char* const ATTR_FACE_TEXTPROJ_YX = "yx";
const char* const ATTR_FACE_TEXTPROJ_TX = "tx";
const char* const ATTR_FACE_TEXTPROJ_XY = "xy";
const char* const ATTR_FACE_TEXTPROJ_YY = "yy";
const char* const ATTR_FACE_TEXTPROJ_TY = "ty";
const char* const ATTR_FACE_MATERIAL_NAME = "name";
const char* const ATTR_FACE_CONTENTSFLAG_VALUE = "value";

const char* const TAG_PATCH = "patch";
const char* const TAG_PATCH_MATERIAL = "material";
const char* const TAG_PATCH_CONTROL_VERTICES = "controlVertices";
const char* const TAG_PATCH_CONTROL_VERTEX = "controlVertex";
const char* const ATTR_PATCH_NUMBER = "number";
const char* const ATTR_PATCH_WIDTH = "width";
const char* const ATTR_PATCH_HEIGHT = "height";
const char* const ATTR_PATCH_FIXED_SUBDIV = "fixedSubdivisions";
const char* const ATTR_PATCH_FIXED_SUBDIV_X = "subdivisionsX";
const char* const ATTR_PATCH_FIXED_SUBDIV_Y = "subdivisionsY";
const char* const ATTR_PATCH_MATERIAL_NAME = "name";
const char* const ATTR_PATCH_CONTROL_VERTEX_ROW = "row";
const char* const ATTR_PATCH_CONTROL_VERTEX_COL = "column";
const char* const ATTR_PATCH_CONTROL_VERTEX_X = "x";
const char* const ATTR_PATCH_CONTROL_VERTEX_Y = "y";
const char* const ATTR_PATCH_CONTROL_VERTEX_Z = "z";
const char* const ATTR_PATCH_CONTROL_VERTEX_U = "u";
const char* const ATTR_PATCH_CONTROL_VERTEX_V = "v";

const char* const TAG_OBJECT_LAYERS = "layers";
const char* const TAG_OBJECT_LAYER = "layer";
const char* const ATTR_OBJECT_LAYER_ID = "id";

const char* const TAG_OBJECT_SELECTIONGROUPS = "selectionGroups";
const char* const TAG_OBJECT_SELECTIONGROUP = "selectionGroup";
const char* const ATTR_OBJECT_SELECTIONGROUP_ID = "id";

const char* const TAG_OBJECT_SELECTIONSETS = "selectionSets";
const char* const TAG_OBJECT_SELECTIONSET = "selectionSet";
const char* const ATTR_OBJECT_SELECTIONSET_ID = "id";

const char* const ATTR_VALUE_TRUE = "true";
const char* const ATTR_VALUE_FALSE = "false";

}

}

}
Expand Up @@ -6,6 +6,9 @@
namespace map
{

namespace format
{

std::size_t PortableMapFormat::VERSION = 1;

// RegisterableModule implementation
Expand Down Expand Up @@ -81,3 +84,5 @@ bool PortableMapFormat::canLoad(std::istream& stream) const
}

}

}
Expand Up @@ -5,6 +5,9 @@
namespace map
{

namespace format
{

class PortableMapFormat :
public MapFormat,
public std::enable_shared_from_this<PortableMapFormat>
Expand All @@ -31,4 +34,6 @@ class PortableMapFormat :
virtual bool canLoad(std::istream& stream) const override;
};

}

} // namespace map
Expand Up @@ -6,6 +6,9 @@
namespace map
{

namespace format
{

PortableMapReader::PortableMapReader(IMapImportFilter& importFilter) :
_importFilter(importFilter)
{}
Expand Down Expand Up @@ -48,3 +51,5 @@ bool PortableMapReader::CanLoad(std::istream& stream)
}

}

}
Expand Up @@ -8,6 +8,9 @@
namespace map
{

namespace format
{

class PortableMapReader :
public IMapReader
{
Expand All @@ -32,4 +35,6 @@ class PortableMapReader :
static bool CanLoad(std::istream& stream);
};

}

} // namespace map
Expand Up @@ -13,29 +13,32 @@
namespace map
{

namespace format
{

namespace
{

// Checks for NaN and infinity
inline std::string getSafeDouble(double d)
// Checks for NaN and infinity
inline std::string getSafeDouble(double d)
{
if (isValid(d))
{
if (isValid(d))
if (d == -0.0)
{
if (d == -0.0)
{
return "0"; // convert -0 to 0
}
else
{
return string::to_string(d);
}
return "0"; // convert -0 to 0
}
else
{
// Is infinity or NaN, write 0
return "0";
return string::to_string(d);
}
}
else
{
// Is infinity or NaN, write 0
return "0";
}
}

}

Expand Down Expand Up @@ -102,7 +105,7 @@ void PortableMapWriter::beginWriteMap(const scene::IMapRootNodePtr& root, std::o

// Export all map properties
auto props = _map.createChild("properties");

root->foreachProperty([&](const std::string& key, const std::string& value)
{
auto property = props.createChild("property");
Expand Down Expand Up @@ -193,7 +196,7 @@ void PortableMapWriter::beginWriteBrush(const IBrushNodePtr& brushNode, std::ost
// Write Shader
auto shaderTag = faceTag.createChild("material");
shaderTag.setAttributeValue("name", face.getShader());

// Export (dummy) contents/flags
auto detailTag = faceTag.createChild("contentsFlag");
detailTag.setAttributeValue("value", string::to_string(brush.getDetailFlag()));
Expand Down Expand Up @@ -313,4 +316,6 @@ void PortableMapWriter::appendSelectionSetInformation(xml::Node& xmlNode, const
}
}

}

} // namespace
Expand Up @@ -8,6 +8,9 @@
namespace map
{

namespace format
{

/**
* Exporter class writing the map data into an XML-based file format.
*/
Expand Down Expand Up @@ -60,4 +63,6 @@ class PortableMapWriter :
void appendSelectionSetInformation(xml::Node& xmlNode, const scene::INodePtr& sceneNode);
};

}

} // namespace
13 changes: 7 additions & 6 deletions tools/msvc/DarkRadiant.vcxproj
Expand Up @@ -272,9 +272,9 @@
<ClCompile Include="..\..\radiant\map\format\Doom3MapReader.cpp" />
<ClCompile Include="..\..\radiant\map\format\Doom3MapWriter.cpp" />
<ClCompile Include="..\..\radiant\map\format\Doom3PrefabFormat.cpp" />
<ClCompile Include="..\..\radiant\map\format\PortableMapFormat.cpp" />
<ClCompile Include="..\..\radiant\map\format\PortableMapReader.cpp" />
<ClCompile Include="..\..\radiant\map\format\PortableMapWriter.cpp" />
<ClCompile Include="..\..\radiant\map\format\portable\PortableMapFormat.cpp" />
<ClCompile Include="..\..\radiant\map\format\portable\PortableMapReader.cpp" />
<ClCompile Include="..\..\radiant\map\format\portable\PortableMapWriter.cpp" />
<ClCompile Include="..\..\radiant\map\format\primitiveparsers\BrushDef.cpp" />
<ClCompile Include="..\..\radiant\map\format\primitiveparsers\BrushDef3.cpp" />
<ClCompile Include="..\..\radiant\map\format\primitiveparsers\Patch.cpp" />
Expand Down Expand Up @@ -1126,9 +1126,10 @@
<ClInclude Include="..\..\radiant\map\format\Doom3MapReader.h" />
<ClInclude Include="..\..\radiant\map\format\Doom3MapWriter.h" />
<ClInclude Include="..\..\radiant\map\format\Doom3PrefabFormat.h" />
<ClInclude Include="..\..\radiant\map\format\PortableMapFormat.h" />
<ClInclude Include="..\..\radiant\map\format\PortableMapReader.h" />
<ClInclude Include="..\..\radiant\map\format\PortableMapWriter.h" />
<ClInclude Include="..\..\radiant\map\format\portable\Constants.h" />
<ClInclude Include="..\..\radiant\map\format\portable\PortableMapFormat.h" />
<ClInclude Include="..\..\radiant\map\format\portable\PortableMapReader.h" />
<ClInclude Include="..\..\radiant\map\format\portable\PortableMapWriter.h" />
<ClInclude Include="..\..\radiant\map\format\primitiveparsers\BrushDef.h" />
<ClInclude Include="..\..\radiant\map\format\primitiveparsers\BrushDef3.h" />
<ClInclude Include="..\..\radiant\map\format\primitiveparsers\Patch.h" />
Expand Down
38 changes: 22 additions & 16 deletions tools/msvc/DarkRadiant.vcxproj.filters
Expand Up @@ -320,6 +320,9 @@
<Filter Include="src\map\aas">
<UniqueIdentifier>{6a40fdfb-2b56-41c2-ba54-dbf1ca276a43}</UniqueIdentifier>
</Filter>
<Filter Include="src\map\format\portable">
<UniqueIdentifier>{158557a6-7181-4ced-a45b-210fc3e54b34}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\radiant\main.cpp">
Expand Down Expand Up @@ -1573,17 +1576,17 @@
<ClCompile Include="..\..\radiant\map\MapModules.cpp">
<Filter>src\map</Filter>
</ClCompile>
<ClCompile Include="..\..\radiant\map\format\PortableMapFormat.cpp">
<Filter>src\map\format</Filter>
</ClCompile>
<ClCompile Include="..\..\radiant\map\format\PortableMapWriter.cpp">
<Filter>src\map\format</Filter>
</ClCompile>
<ClCompile Include="..\..\radiant\map\MapPropertyInfoFileModule.cpp">
<Filter>src\map</Filter>
</ClCompile>
<ClCompile Include="..\..\radiant\map\format\PortableMapReader.cpp">
<Filter>src\map\format</Filter>
<ClCompile Include="..\..\radiant\map\format\portable\PortableMapFormat.cpp">
<Filter>src\map\format\portable</Filter>
</ClCompile>
<ClCompile Include="..\..\radiant\map\format\portable\PortableMapReader.cpp">
<Filter>src\map\format\portable</Filter>
</ClCompile>
<ClCompile Include="..\..\radiant\map\format\portable\PortableMapWriter.cpp">
<Filter>src\map\format\portable</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
Expand Down Expand Up @@ -3198,17 +3201,20 @@
<ClInclude Include="..\..\radiant\map\aas\Util.h">
<Filter>src\map\aas</Filter>
</ClInclude>
<ClInclude Include="..\..\radiant\map\format\PortableMapFormat.h">
<Filter>src\map\format</Filter>
</ClInclude>
<ClInclude Include="..\..\radiant\map\format\PortableMapWriter.h">
<Filter>src\map\format</Filter>
</ClInclude>
<ClInclude Include="..\..\radiant\map\MapPropertyInfoFileModule.h">
<Filter>src\map</Filter>
</ClInclude>
<ClInclude Include="..\..\radiant\map\format\PortableMapReader.h">
<Filter>src\map\format</Filter>
<ClInclude Include="..\..\radiant\map\format\portable\PortableMapFormat.h">
<Filter>src\map\format\portable</Filter>
</ClInclude>
<ClInclude Include="..\..\radiant\map\format\portable\PortableMapReader.h">
<Filter>src\map\format\portable</Filter>
</ClInclude>
<ClInclude Include="..\..\radiant\map\format\portable\PortableMapWriter.h">
<Filter>src\map\format\portable</Filter>
</ClInclude>
<ClInclude Include="..\..\radiant\map\format\portable\Constants.h">
<Filter>src\map\format\portable</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
Expand Down

0 comments on commit 6844378

Please sign in to comment.