diff --git a/libraries/render/src/render/Scene.h b/libraries/render/src/render/Scene.h index 09a725205d..2440ac2246 100644 --- a/libraries/render/src/render/Scene.h +++ b/libraries/render/src/render/Scene.h @@ -14,6 +14,7 @@ #include "Item.h" #include "SpatialTree.h" +#include "Tag.h" namespace render { @@ -114,6 +115,11 @@ protected: void removeItems(const ItemIDs& ids); void updateItems(const ItemIDs& ids, UpdateFunctors& functors); + + // The Tag map + std::mutex _tagsMutex; + TagMap _tags; + friend class Engine; }; diff --git a/libraries/render/src/render/Tag.cpp b/libraries/render/src/render/Tag.cpp new file mode 100644 index 0000000000..1ae0720746 --- /dev/null +++ b/libraries/render/src/render/Tag.cpp @@ -0,0 +1,27 @@ +// +// Tag.cpp +// render/src/render +// +// Created by Sam Gateau on 4/4/2017. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// +#include "Tag.h" + +#include "Logging.h" + +using namespace render; + +Tag::Tag(const std::string& name, const ItemIDs items) : + _name(name), + _items(items) +{ + +} + +Tag::~Tag() { + +} + diff --git a/libraries/render/src/render/Tag.h b/libraries/render/src/render/Tag.h new file mode 100644 index 0000000000..eb13a6366a --- /dev/null +++ b/libraries/render/src/render/Tag.h @@ -0,0 +1,49 @@ +// +// Tag.h +// render/src/render +// +// Created by Sam Gateau on 4/4/2017. +// Copyright 2017 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_render_Tag_h +#define hifi_render_Tag_h + +#include "Item.h" + +namespace render { + + class Tag { + public: + + Tag(const std::string& name, const ItemIDs items); + ~Tag(); + + const std::string& getName() const { return _name; } + + const ItemIDs& getItems() const { return _items; } + + protected: + const std::string _name; + ItemIDs _items; + }; + using Tags = std::vector; + + class TagMap { + public: + using NameMap = std::map; + + TagMap() {} + ~TagMap() {} + + + protected: + NameMap _names; + Tags _values; + }; +} + +#endif \ No newline at end of file