Exemplo n.º 1
0
//--------------------------------------------------------------------------------------
HRESULT Variable9::SetScalar_Internal( Scalar* pScalar )
{
    HRESULT hr;

    DataType* pType;

    pType = pScalar->Get();
    if( NULL == pType )
        return E_FAIL;
            
             
    switch( m_Desc.Type )
    {
        //------------------------------------------------------------------------------
        case SASVT_BOOL:
        {
            hr = m_pD3DXEffect->SetBool( m_Handle, pType->GetInt() ); // Cast to BOOL
            if( FAILED(hr) )
                return hr;

            return S_OK;
        }
            
        //------------------------------------------------------------------------------
        case SASVT_INT:
        {
            hr = m_pD3DXEffect->SetInt( m_Handle, pType->GetInt() );
            if( FAILED(hr) )
                return hr;

            return S_OK;
        }

        //------------------------------------------------------------------------------
        case SASVT_FLOAT:
        {
            hr = m_pD3DXEffect->SetFloat( m_Handle, pType->GetFloat() );
            if( FAILED(hr) )
                return hr;

            return S_OK;
        }
    }

    return E_FAIL;
}
Exemplo n.º 2
0
int Scalar::GetInt() 
{ 
    DataType* pPT = Get();
    if( NULL == pPT )
        return 0;
    
    return pPT->GetInt(); 
}
Exemplo n.º 3
0
//--------------------------------------------------------------------------------------
HRESULT Variable9::SetMatrix_Internal( Matrix* pMatrix )
{
    HRESULT hr;

    switch( m_Desc.Type )
    {
        //------------------------------------------------------------------------------
        case SASVT_BOOL:
        {
            BOOL x[16];

            int index=0;
            for( UINT r=0; r < m_Desc.Rows; r++ )
            {
                for( UINT c=0; c < m_Desc.Columns; c++ )
                {
                    DataType* pType = pMatrix->Get(r, c);
                    if( pType )
                    {
                        x[index] = pType->GetInt(); // Cast to BOOL
                    }

                    index++;
                }
            }

            hr = m_pD3DXEffect->SetBoolArray( m_Handle, x, 16 );
            if( FAILED(hr) )
                return hr;


            return S_OK;
        }
          

        //------------------------------------------------------------------------------
        case SASVT_INT:
        {
            int x[16];

            int index=0;
            for( UINT r=0; r < m_Desc.Rows; r++ )
            {
                for( UINT c=0; c < m_Desc.Columns; c++ )
                {
                    DataType* pType = pMatrix->Get(r, c);
                    if( pType )
                    {
                        x[index] = pType->GetInt(); 
                    }

                    index++;
                }
            }

            hr = m_pD3DXEffect->SetIntArray( m_Handle, x, 16 );
            if( FAILED(hr) )
                return hr;


            return S_OK;
        }


        //------------------------------------------------------------------------------
        case SASVT_FLOAT:
        {
            float x[16];

            int index=0;
            for( UINT r=0; r < m_Desc.Rows; r++ )
            {
                for( UINT c=0; c < m_Desc.Columns; c++ )
                {
                    DataType* pType = pMatrix->Get(r, c);
                    if( pType )
                    {
                        x[index] = pType->GetFloat();
                    }

                    index++;
                }
            }

            hr = m_pD3DXEffect->SetFloatArray( m_Handle, x, 16 );
            if( FAILED(hr) )
                return hr;


            return S_OK;
        }
    }

    return E_FAIL;
}
Exemplo n.º 4
0
//--------------------------------------------------------------------------------------
HRESULT Variable9::SetVector_Internal( Vector* pVector )
{
    HRESULT hr;

    switch( m_Desc.Type )
    {
        //------------------------------------------------------------------------------
        case SASVT_BOOL:
        {
            BOOL x[4] = {0};

            for( UINT i=0; i < m_Desc.Columns; i++ )
            {
                DataType* pType = pVector->Get(i);
                if( pType )
                {
                    x[i] = pType->GetInt(); // Cast to BOOL
                }
            }


            hr = m_pD3DXEffect->SetBoolArray( m_Handle, x, pVector->Length() );
            if( FAILED(hr) )
                return hr;

            return S_OK;
        }
          

        //------------------------------------------------------------------------------
        case SASVT_INT:
        {
            int x[4] = {0};

            for( UINT i=0; i < m_Desc.Columns; i++ )
            {
                DataType* pType = pVector->Get(i);
                if( pType )
                {
                    x[i] = pType->GetInt(); 
                }
            }


            hr = m_pD3DXEffect->SetIntArray( m_Handle, x, pVector->Length() );
            if( FAILED(hr) )
                return hr;

            return S_OK;
        }


        //------------------------------------------------------------------------------
        case SASVT_FLOAT:
        {
            float x[4] = {0};

            for( UINT i=0; i < m_Desc.Columns; i++ )
            {
                DataType* pType = pVector->Get(i);
                if( pType )
                {
                    x[i] = pType->GetFloat(); 
                }
            }


            hr = m_pD3DXEffect->SetFloatArray( m_Handle, x, pVector->Length() );
            if( FAILED(hr) )
                return hr;

            return S_OK;
        }
    }

    return E_FAIL;
}