From 684abd2110aded159481a262951caceb16a6cf78 Mon Sep 17 00:00:00 2001 From: codereader Date: Mon, 24 May 2021 07:54:44 +0200 Subject: [PATCH] #5623: Start creating a few object types to define a merge operation --- libs/scene/merge/MergeAction.h | 36 +++++++++++++++++++++++++++++ libs/scene/merge/MergeOperation.h | 32 +++++++++++++++++++++++++ tools/msvc/scenelib.vcxproj | 2 ++ tools/msvc/scenelib.vcxproj.filters | 9 ++++++++ 4 files changed, 79 insertions(+) create mode 100644 libs/scene/merge/MergeAction.h create mode 100644 libs/scene/merge/MergeOperation.h diff --git a/libs/scene/merge/MergeAction.h b/libs/scene/merge/MergeAction.h new file mode 100644 index 0000000000..230e0dabef --- /dev/null +++ b/libs/scene/merge/MergeAction.h @@ -0,0 +1,36 @@ +#pragma once + +namespace scene +{ + +namespace merge +{ + +enum class ActionType +{ + +}; + +// Represents a single operation during a merge process +// There are various types of actions, i.e. brush addition, +// entity removal, keyvalue change, etc. +class MergeAction +{ +private: + ActionType _type; + +public: + MergeAction(ActionType type) : + _type(type) + {} + + ActionType getType() const + { + return _type; + } +}; + + +} + +} diff --git a/libs/scene/merge/MergeOperation.h b/libs/scene/merge/MergeOperation.h new file mode 100644 index 0000000000..6685109d38 --- /dev/null +++ b/libs/scene/merge/MergeOperation.h @@ -0,0 +1,32 @@ +#pragma once + +#include +#include +#include "../SceneGraphComparer.h" +#include "MergeAction.h" + +namespace scene +{ + +namespace merge +{ + +// A MergeOperation groups one or more merge actions +// together in order to apply a set of changes to an existing map +class MergeOperation +{ +private: + std::list _actions; + +public: + using Ptr = std::shared_ptr; + + static MergeOperation::Ptr CreateFromComparisonResult(const ComparisonResult& comparisonResult) + { + return std::make_shared(); + } +}; + +} + +} diff --git a/tools/msvc/scenelib.vcxproj b/tools/msvc/scenelib.vcxproj index 1ab88c1acd..5663880574 100644 --- a/tools/msvc/scenelib.vcxproj +++ b/tools/msvc/scenelib.vcxproj @@ -137,6 +137,8 @@ + + diff --git a/tools/msvc/scenelib.vcxproj.filters b/tools/msvc/scenelib.vcxproj.filters index 17025d156c..49c3cc45b5 100644 --- a/tools/msvc/scenelib.vcxproj.filters +++ b/tools/msvc/scenelib.vcxproj.filters @@ -4,6 +4,9 @@ {7effd458-1286-4c86-a9c4-cd4922f14c82} + + {b3592cff-e97d-4da2-ade5-caef2835f906} + @@ -103,5 +106,11 @@ scene + + scene\merge + + + scene\merge + \ No newline at end of file