Beispiel #1
0
OBB* RagDoll::CreateBoneBox(Bone* parent, Bone *bone, D3DXVECTOR3 size, D3DXQUATERNION rot) {
    if (bone == NULL || parent == NULL)
        return NULL;

    D3DXMATRIX &parentMat = parent->CombinedTransformationMatrix;
    D3DXMATRIX &boneMat = bone->CombinedTransformationMatrix;
    D3DXVECTOR3 parentPos(parentMat(3, 0), parentMat(3, 1), parentMat(3, 2));
    D3DXVECTOR3 bonePos(boneMat(3, 0), boneMat(3, 1), boneMat(3, 2));

    D3DXQUATERNION q;
    D3DXVECTOR3 p, s;
    D3DXMatrixDecompose(&s, &q, &p, &parentMat);
    q *= rot;
    D3DXQuaternionNormalize(&q, &q);

    p = (parentPos + bonePos) * 0.5f;

    OBB *obb = new OBB(p, size, q, true);

    physicsEngine.GetWorld()->addRigidBody(obb->m_pBody);
    m_boxes.push_back(obb);

    parent->m_pObb = obb;
    parent->m_pivot = obb->SetPivot(parentPos);

    return obb;
}
        void Component::updateModelMatrix()
        {
            glm::vec3 parentPos(0.f);
            if (m_parent)
                parentPos = m_parent->getAbsolutePosition();

            m_modelMat = glm::translate(m_position + parentPos) * glm::scale(glm::vec3(m_size, 1.f));

            for (auto& child : m_children)
                child->updateModelMatrix();
        }
Beispiel #3
0
void MapView::setSelection(const Location *o) {
    selection = o;

    QPoint pos(galaxyToScreen(QPoint(o->GetPosX(), o->GetPosY())));

    QRect updateRect(pos, QSize(60, 60));

    updateRect.translate(-30, -30);

    QPoint parentPos(mapToParent(updateRect.topLeft()));

    QRect viewportUpdateRect(parentPos, updateRect.size());

    if(viewportUpdateRect.intersects(parentWidget()->contentsRect())) {
        update(updateRect);
        parentWidget()->update(viewportUpdateRect);
    }
}
Beispiel #4
0
void MapView::clearSelection()
{
    if(selection != NULL) {
        QPoint pos(galaxyToScreen(QPoint(selection->GetPosX(), selection->GetPosY())));

        QRect updateRect(pos, QSize(60, 60));

        updateRect.translate(-30, -30);

        QPoint parentPos(mapToParent(updateRect.topLeft()));

        QRect viewportUpdateRect(parentPos, updateRect.size());

        selection = NULL;

        if(viewportUpdateRect.intersects(parentWidget()->contentsRect())) {
            update(updateRect);
            parentWidget()->update(viewportUpdateRect);
        }
    }
}