From 6844378be5cd7b4fab3532455017f8521570b4d8 Mon Sep 17 00:00:00 2001 From: codereader Date: Sun, 19 Jan 2020 19:15:53 +0100 Subject: [PATCH] Move portable format related files into separate folder and namespace. Add constants to shared header file. --- radiant/Makefile.am | 5 +- radiant/map/MapModules.cpp | 4 +- radiant/map/format/portable/Constants.h | 105 ++++++++++++++++++ .../{ => portable}/PortableMapFormat.cpp | 5 + .../format/{ => portable}/PortableMapFormat.h | 5 + .../{ => portable}/PortableMapReader.cpp | 5 + .../format/{ => portable}/PortableMapReader.h | 5 + .../{ => portable}/PortableMapWriter.cpp | 35 +++--- .../format/{ => portable}/PortableMapWriter.h | 5 + tools/msvc/DarkRadiant.vcxproj | 13 ++- tools/msvc/DarkRadiant.vcxproj.filters | 38 ++++--- 11 files changed, 184 insertions(+), 41 deletions(-) create mode 100644 radiant/map/format/portable/Constants.h rename radiant/map/format/{ => portable}/PortableMapFormat.cpp (98%) rename radiant/map/format/{ => portable}/PortableMapFormat.h (97%) rename radiant/map/format/{ => portable}/PortableMapReader.cpp (98%) rename radiant/map/format/{ => portable}/PortableMapReader.h (96%) rename radiant/map/format/{ => portable}/PortableMapWriter.cpp (97%) rename radiant/map/format/{ => portable}/PortableMapWriter.h (98%) diff --git a/radiant/Makefile.am b/radiant/Makefile.am index 794ba9c231..e0aea80e05 100644 --- a/radiant/Makefile.am +++ b/radiant/Makefile.am @@ -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 \ diff --git a/radiant/map/MapModules.cpp b/radiant/map/MapModules.cpp index fa10466c44..0682f92f88 100644 --- a/radiant/map/MapModules.cpp +++ b/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" @@ -10,7 +10,7 @@ #include "Map.h" // Static module instances -module::StaticModule portableMapModule; +module::StaticModule portableMapModule; module::StaticModule d3MapModule; module::StaticModule q4MapModule; module::StaticModule d3PrefabModule; diff --git a/radiant/map/format/portable/Constants.h b/radiant/map/format/portable/Constants.h new file mode 100644 index 0000000000..0886b0cc34 --- /dev/null +++ b/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"; + +} + +} + +} diff --git a/radiant/map/format/PortableMapFormat.cpp b/radiant/map/format/portable/PortableMapFormat.cpp similarity index 98% rename from radiant/map/format/PortableMapFormat.cpp rename to radiant/map/format/portable/PortableMapFormat.cpp index a8eda65cba..b3db9f8ddc 100644 --- a/radiant/map/format/PortableMapFormat.cpp +++ b/radiant/map/format/portable/PortableMapFormat.cpp @@ -6,6 +6,9 @@ namespace map { +namespace format +{ + std::size_t PortableMapFormat::VERSION = 1; // RegisterableModule implementation @@ -81,3 +84,5 @@ bool PortableMapFormat::canLoad(std::istream& stream) const } } + +} diff --git a/radiant/map/format/PortableMapFormat.h b/radiant/map/format/portable/PortableMapFormat.h similarity index 97% rename from radiant/map/format/PortableMapFormat.h rename to radiant/map/format/portable/PortableMapFormat.h index 68592e0446..73a8f6726f 100644 --- a/radiant/map/format/PortableMapFormat.h +++ b/radiant/map/format/portable/PortableMapFormat.h @@ -5,6 +5,9 @@ namespace map { +namespace format +{ + class PortableMapFormat : public MapFormat, public std::enable_shared_from_this @@ -31,4 +34,6 @@ class PortableMapFormat : virtual bool canLoad(std::istream& stream) const override; }; +} + } // namespace map diff --git a/radiant/map/format/PortableMapReader.cpp b/radiant/map/format/portable/PortableMapReader.cpp similarity index 98% rename from radiant/map/format/PortableMapReader.cpp rename to radiant/map/format/portable/PortableMapReader.cpp index b6e961e148..2bc99e2380 100644 --- a/radiant/map/format/PortableMapReader.cpp +++ b/radiant/map/format/portable/PortableMapReader.cpp @@ -6,6 +6,9 @@ namespace map { +namespace format +{ + PortableMapReader::PortableMapReader(IMapImportFilter& importFilter) : _importFilter(importFilter) {} @@ -48,3 +51,5 @@ bool PortableMapReader::CanLoad(std::istream& stream) } } + +} diff --git a/radiant/map/format/PortableMapReader.h b/radiant/map/format/portable/PortableMapReader.h similarity index 96% rename from radiant/map/format/PortableMapReader.h rename to radiant/map/format/portable/PortableMapReader.h index 1362ea5cb3..d9bdbd7cd4 100644 --- a/radiant/map/format/PortableMapReader.h +++ b/radiant/map/format/portable/PortableMapReader.h @@ -8,6 +8,9 @@ namespace map { +namespace format +{ + class PortableMapReader : public IMapReader { @@ -32,4 +35,6 @@ class PortableMapReader : static bool CanLoad(std::istream& stream); }; +} + } // namespace map diff --git a/radiant/map/format/PortableMapWriter.cpp b/radiant/map/format/portable/PortableMapWriter.cpp similarity index 97% rename from radiant/map/format/PortableMapWriter.cpp rename to radiant/map/format/portable/PortableMapWriter.cpp index 787d502907..fab9fc1653 100644 --- a/radiant/map/format/PortableMapWriter.cpp +++ b/radiant/map/format/portable/PortableMapWriter.cpp @@ -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"; + } +} } @@ -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"); @@ -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())); @@ -313,4 +316,6 @@ void PortableMapWriter::appendSelectionSetInformation(xml::Node& xmlNode, const } } +} + } // namespace diff --git a/radiant/map/format/PortableMapWriter.h b/radiant/map/format/portable/PortableMapWriter.h similarity index 98% rename from radiant/map/format/PortableMapWriter.h rename to radiant/map/format/portable/PortableMapWriter.h index ae885f31e1..50f587c209 100644 --- a/radiant/map/format/PortableMapWriter.h +++ b/radiant/map/format/portable/PortableMapWriter.h @@ -8,6 +8,9 @@ namespace map { +namespace format +{ + /** * Exporter class writing the map data into an XML-based file format. */ @@ -60,4 +63,6 @@ class PortableMapWriter : void appendSelectionSetInformation(xml::Node& xmlNode, const scene::INodePtr& sceneNode); }; +} + } // namespace diff --git a/tools/msvc/DarkRadiant.vcxproj b/tools/msvc/DarkRadiant.vcxproj index abfbac71e5..24a9cf3360 100644 --- a/tools/msvc/DarkRadiant.vcxproj +++ b/tools/msvc/DarkRadiant.vcxproj @@ -272,9 +272,9 @@ - - - + + + @@ -1126,9 +1126,10 @@ - - - + + + + diff --git a/tools/msvc/DarkRadiant.vcxproj.filters b/tools/msvc/DarkRadiant.vcxproj.filters index 2408ad5907..f127afcce2 100644 --- a/tools/msvc/DarkRadiant.vcxproj.filters +++ b/tools/msvc/DarkRadiant.vcxproj.filters @@ -320,6 +320,9 @@ {6a40fdfb-2b56-41c2-ba54-dbf1ca276a43} + + {158557a6-7181-4ced-a45b-210fc3e54b34} + @@ -1573,17 +1576,17 @@ src\map - - src\map\format - - - src\map\format - src\map - - src\map\format + + src\map\format\portable + + + src\map\format\portable + + + src\map\format\portable @@ -3198,17 +3201,20 @@ src\map\aas - - src\map\format - - - src\map\format - src\map - - src\map\format + + src\map\format\portable + + + src\map\format\portable + + + src\map\format\portable + + + src\map\format\portable