11 #ifndef hifi_Overlay_h
12 #define hifi_Overlay_h
14 #include <render/Scene.h>
16 class Overlay :
public QObject {
20 typedef std::shared_ptr<Overlay> Pointer;
21 typedef render::Payload<Overlay> Payload;
22 typedef std::shared_ptr<render::Item::PayloadInterface> PayloadPointer;
25 Overlay(
const Overlay* overlay);
27 virtual QUuid getID()
const {
return _id; }
28 virtual void setID(
const QUuid&
id) { _id = id; }
30 virtual void render(RenderArgs* args) = 0;
32 virtual render::ItemKey getKey();
33 virtual AABox getBounds()
const = 0;
35 virtual bool addToScene(Overlay::Pointer overlay,
const render::ScenePointer& scene, render::Transaction& transaction);
36 virtual void removeFromScene(Overlay::Pointer overlay,
const render::ScenePointer& scene, render::Transaction& transaction);
38 virtual const render::ShapeKey getShapeKey() {
return render::ShapeKey::Builder::ownPipeline(); }
40 virtual uint32_t fetchMetaSubItems(render::ItemIDs& subItems)
const {
return 0; }
43 virtual QString getType()
const = 0;
44 bool getVisible()
const {
return _visible; }
47 void setVisible(
bool visible) { _visible = visible; }
48 unsigned int getStackOrder()
const {
return _stackOrder; }
49 void setStackOrder(
unsigned int stackOrder) { _stackOrder = stackOrder; }
51 Q_INVOKABLE
virtual void setProperties(
const QVariantMap& properties) = 0;
52 Q_INVOKABLE
virtual Overlay* createClone()
const = 0;
54 render::ItemID getRenderItemID()
const {
return _renderItemID; }
55 void setRenderItemID(render::ItemID renderItemID) { _renderItemID = renderItemID; }
58 render::ItemID _renderItemID { render::Item::INVALID_ITEM_ID };
60 bool _visible {
true };
61 unsigned int _stackOrder { 0 };
68 template <>
const ItemKey payloadGetKey(
const Overlay::Pointer& overlay);
69 template <>
const Item::Bound payloadGetBound(
const Overlay::Pointer& overlay, RenderArgs* args);
70 template <>
void payloadRender(
const Overlay::Pointer& overlay, RenderArgs* args);
71 template <>
const ShapeKey shapeGetShapeKey(
const Overlay::Pointer& overlay);
72 template <> uint32_t metaFetchMetaSubItems(
const Overlay::Pointer& overlay, ItemIDs& subItems);