Exemplo n.º 1
0
 template <> const Item::Bound payloadGetBound(const Overlay::Pointer& overlay) {
     if (overlay->is3D()) {
         return static_cast<Base3DOverlay*>(overlay.get())->getBounds();
     } else {
         QRect bounds = static_cast<Overlay2D*>(overlay.get())->getBounds();
         return AABox(glm::vec3(bounds.x(), bounds.y(), 0.0f), glm::vec3(bounds.width(), bounds.height(), 0.1f));
     }
 }
Exemplo n.º 2
0
 template <> int payloadGetLayer(const Overlay::Pointer& overlay) {
     // MAgic number while we are defining the layering mechanism:
     const int LAYER_2D =  2;
     const int LAYER_3D_FRONT = 1;
     const int LAYER_3D = 0;
     if (overlay->is3D()) {
         return (std::dynamic_pointer_cast<Base3DOverlay>(overlay)->getDrawInFront() ? LAYER_3D_FRONT : LAYER_3D);
     } else {
         return LAYER_2D;
     }
 }
Exemplo n.º 3
0
 template <> const ItemKey payloadGetKey(const Overlay::Pointer& overlay) {
     if (overlay->is3D() && !std::dynamic_pointer_cast<Base3DOverlay>(overlay)->getDrawOnHUD()) {
         if (std::dynamic_pointer_cast<Base3DOverlay>(overlay)->getDrawInFront()) {
             return ItemKey::Builder().withTypeShape().withLayered().build();
         } else {
             return ItemKey::Builder::opaqueShape();
         }
     } else {
         return ItemKey::Builder().withTypeShape().withViewSpace().build();
     }
 }
Exemplo n.º 4
0
 template <> int payloadGetLayer(const Overlay::Pointer& overlay) {
     if (overlay->is3D()) {
         auto overlay3D = std::dynamic_pointer_cast<Base3DOverlay>(overlay);
         if (overlay3D->getDrawInFront()) {
             return Item::LAYER_3D_FRONT;
         } else if (overlay3D->getDrawHUDLayer()) {
             return Item::LAYER_3D_HUD;
         } else {
             return Item::LAYER_3D;
         }
     } else {
         return Item::LAYER_2D;
     }
 }
Exemplo n.º 5
0
 template <> const ItemKey payloadGetKey(const Overlay::Pointer& overlay) {
     auto builder = ItemKey::Builder().withTypeShape();
     if (overlay->is3D()) {
         if (std::static_pointer_cast<Base3DOverlay>(overlay)->getDrawInFront()) {
             builder.withLayered();
         }
         if (overlay->getAlphaPulse() != 0.0f || overlay->getAlpha() != 1.0f) {
             builder.withTransparent();
         }
     } else {
         builder.withViewSpace();
     }
     return builder.build();
 }
Exemplo n.º 6
0
    template <> const ItemKey payloadGetKey(const Overlay::Pointer& overlay) {
        auto builder = ItemKey::Builder().withTypeShape();
        if (overlay->is3D()) {
            auto overlay3D = std::static_pointer_cast<Base3DOverlay>(overlay);
            if (overlay3D->getDrawInFront() || overlay3D->getDrawHUDLayer()) {
                builder.withLayered();
            }
            if (overlay->isTransparent()) {
                builder.withTransparent();
            }
        } else {
            builder.withViewSpace();
        }

        if (!overlay->getVisible()) {
            builder.withInvisible();
        }

        builder.withTagBits(render::ItemKey::TAG_BITS_0); // Only draw overlays in main view

        return builder.build();
    }