/*************************************************************//**
 *
 *  @brief  生成処理を行う
 *  @param  ID
 *  @param  座標
 *  @return エフェクト
 *
 ****************************************************************/
C_EffectGenerator::EffectPtr C_EffectGenerator::Create(const std::string& rId, 
                                                       const C_EffectGenerator::Vector3& rPosition)
{
    // エフェクトを生成
    EffectPtr pEffect(createFunctions_.at(rId)(rPosition));

    // タスクシステムに登録
    pTaskSystem_->Entry(pEffect, TaskPriority::s_EFFECT_UPDATE, TaskPriority::s_EFFECT_DRAW);

    return pEffect;
}
Ejemplo n.º 2
0
    /*************************************************************//**
     *
     *  @brief  生成処理を行う
     *  @param  ID
     *  @param  座標
     *  @return エフェクト
     *
     ****************************************************************/
    EffectPtr C_EffectGenerator::Create(const std::string& rId, const Vector3& rPosition)
    {
        // エフェクトを生成し、座標を設定
        EffectPtr pEffect(pCreateFunctions_.at(rId)());
        pEffect->SetPosition(rPosition);
        pEffect->AddStringToId(std::to_string(number));

        // タスクシステムに登録
        pTaskSystem_->Entry(pEffect, Priority::Task::Update::s_effect, Priority::Task::Draw::s_effect);

        ++number;
        
        return pEffect;
    }
Ejemplo n.º 3
0
void Diagnostic::DrawAllObjects(const Transform& projection, const Transform& view)
{
    if(sm_diag->m_showDiagnostics)
    {
        LPD3DXEFFECT pEffect(sm_diag->m_shader->GetEffect());
        pEffect->SetTechnique(DxConstant::DefaultTechnique);

        auto renderObject = [&](LPD3DXMESH mesh, const D3DXVECTOR3& color, const Transform& world)
        {
            D3DXMATRIX wvp = world.Matrix() * view.Matrix() * projection.Matrix();
            pEffect->SetMatrix(DxConstant::WordViewProjection, &wvp);
            pEffect->SetFloatArray(DxConstant::VertexColor, &color.x, 3);

            UINT nPasses = 0;
            pEffect->Begin(&nPasses, 0);
            for(UINT iPass = 0; iPass < nPasses; iPass++)
            {
                pEffect->BeginPass(iPass);
                mesh->DrawSubset(0);
                pEffect->EndPass();
            }
            pEffect->End();
        };

        for(SphereMap::iterator it = sm_diag->m_spheremap.begin(); it != sm_diag->m_spheremap.end(); ++it)
        {
            if(it->second.draw)
            {
                renderObject(sm_diag->m_sphere, it->second.color, it->second.world);
                it->second.draw = false;
            }
        }

        for(LineMap::iterator it = sm_diag->m_linemap.begin(); it != sm_diag->m_linemap.end(); ++it)
        {
            if(it->second.draw)
            {
                renderObject(sm_diag->m_cylinder, it->second.color, it->second.world);
                it->second.draw = false;
            }
        }
    }
}