Example #1
0
void RenderObj::Reset() {
    D3DXMatrixIdentity(&m_d3dmTranslate);
    D3DXMatrixIdentity(&m_d3dmRotate);
    D3DXMatrixIdentity(&m_d3dmScale);
    D3DXMatrixIdentity(&m_d3dmTransform);
    D3DXMatrixIdentity(&m_d3dmFace);

    //AbsoluteRotate(0.0f, 0.0f, 0.0f);
    AbsoluteScale(1.0f, 1.0f, 1.0f);
    m_fRotationX = m_fRotationY = m_fRotationZ = 0.0f;
    m_d3dmFace._41 = 0.0f;
    m_d3dmFace._42 = 0.0f;
    m_d3dmFace._43 = -1.0f;
}
Example #2
0
glm::vec3 TransformSystem::AbsoluteScale(EntityWrapper entity)
{
    if (!entity.Valid()) {
        return glm::vec3(1.f);
    }

    auto cacheIt = ScaleCache.find(entity);
    ComponentWrapper cTransform = entity["Transform"];
    ComponentWrapper::SubscriptProxy cTransformScale = cTransform["Scale"];
    if (cacheIt != ScaleCache.end() && !cTransformScale.Dirty(DirtySetType::Transform)) {
        return cacheIt->second;
    } else {
        EntityWrapper parent = entity.Parent();
        // Calculate scale
        glm::vec3 scale = AbsoluteScale(parent) * (const glm::vec3&)cTransformScale;
        // Cache it
        ScaleCache[entity] = scale;
        RecalculatedPositions++;
        // Unset dirty flag
        cTransformScale.SetDirty(DirtySetType::Transform, false);
        return scale;
    }
}
Example #3
0
glm::mat4 TransformSystem::ModelMatrix(EntityWrapper entity)
{
    //auto cacheIt = MatrixCache.find(entity);
    //ComponentWrapper cTransform = entity["Transform"];
    //bool isDirty = cTransform["Position"].Dirty(DirtySetType::Transform) || cTransform["Orientation"].Dirty(DirtySetType::Transform) || cTransform["Scale"].Dirty(DirtySetType::Transform);
    //if (cacheIt != MatrixCache.end() && !isDirty && false) {
    //    return cacheIt->second;
    //} else {
        glm::mat4 matrix = glm::translate(AbsolutePosition(entity)) * glm::toMat4(AbsoluteOrientation(entity)) * glm::scale(AbsoluteScale(entity));
    //    MatrixCache[entity] = matrix;
        return matrix;
    //}
}