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