Example #1
0
void AreaNode::getElementsByPos(const glm::vec2& pos, vector<NodePtr>& pElements)
{
    if (pos.x >= 0 && pos.y >= 0 && pos.x < getSize().x && pos.y < getSize().y &&
            reactsToMouseEvents())
    {
        pElements.push_back(getSharedThis());
    }
}
Example #2
0
void RectNode::getElementsByPos(const glm::vec2& pos, vector<NodePtr>& pElements)
{
    glm::vec2 pivot = m_Rect.tl + m_Rect.size()/2.f;
    glm::vec2 rpos = getRotatedPivot(pos, m_Angle, pivot);
    if (rpos.x >= m_Rect.tl.x && rpos.y >= m_Rect.tl.y && rpos.x < m_Rect.br.x && 
            rpos.y < m_Rect.br.y && reactsToMouseEvents())
    {
        pElements.push_back(getSharedThis());
    }
}
Example #3
0
void ImageNode::getElementsByPos(const glm::vec2& pos, vector<NodePtr>& pElements)
{
    if (reactsToMouseEvents()) {
        OffscreenCanvasPtr pCanvas = m_pGPUImage->getCanvas();
        if (pCanvas && pCanvas->getHandleEvents()) {
            glm::vec2 nodeSize(getSize());
            glm::vec2 canvasSize(pCanvas->getSize());
            glm::vec2 localPos(pos.x*(canvasSize.x/nodeSize.x), 
                    pos.y*(canvasSize.y/nodeSize.y));
            pCanvas->getRootNode()->getElementsByPos(localPos, pElements);
        }
        RasterNode::getElementsByPos(pos, pElements);
    }
}
Example #4
0
void DivNode::getElementsByPos(const glm::vec2& pos, vector<NodePtr>& pElements)
{
    if (reactsToMouseEvents() &&
            ((getSize() == glm::vec2(0,0) ||
             (pos.x >= 0 && pos.y >= 0 && pos.x < getSize().x && pos.y < getSize().y))))
    {
        for (int i = getNumChildren()-1; i >= 0; i--) {
            NodePtr pCurChild = getChild(i);
            glm::vec2 relPos = pCurChild->toLocal(pos);
            pCurChild->getElementsByPos(relPos, pElements);
            if (!pElements.empty()) {
                pElements.push_back(getSharedThis());
                return;
            }
        }
        // pos isn't in any of the children.
        if (getSize() != glm::vec2(0,0)) {
            // Explicit width/height given for div - div reacts on its own.
            pElements.push_back(getSharedThis());
        }
    }
}
Example #5
0
void PolygonNode::getElementsByPos(const glm::vec2& pos, vector<NodePtr>& pElements)
{
    if (reactsToMouseEvents() && pointInPolygon(pos, m_Pts)) {
        pElements.push_back(getSharedThis());
    }
}