コード例 #1
0
ファイル: Fog.cpp プロジェクト: AlexMarlo/ArxLibertatis
void ARX_FOGS_RenderAll() {
	
	EERIE_QUAT rotation;
	Quat_Init(&rotation);

	GRenderer->SetRenderState(Renderer::AlphaBlending, false);

	for(long i = 0; i < MAX_FOG; i++) {
		FOG_DEF *fog = &fogs[i];

		if(!fog->exist)
			continue;

			if(fogobj)
				DrawEERIEInter(fogobj, &rotation, &fog->pos, NULL);

			fog->bboxmin = BBOXMIN;
			fog->bboxmax = BBOXMAX;

			if(fog->special & FOG_DIRECTIONAL) {
				EERIEDraw3DLine(fog->pos, fog->pos + fog->move * 50.f, Color::white);
			}

			if(fog->selected) {
				EERIEDraw2DLine(fog->bboxmin.x, fog->bboxmin.y, fog->bboxmax.x, fog->bboxmin.y, 0.01f, Color::yellow);
				EERIEDraw2DLine(fog->bboxmax.x, fog->bboxmin.y, fog->bboxmax.x, fog->bboxmax.y, 0.01f, Color::yellow);
				EERIEDraw2DLine(fog->bboxmax.x, fog->bboxmax.y, fog->bboxmin.x, fog->bboxmax.y, 0.01f, Color::yellow);
				EERIEDraw2DLine(fog->bboxmin.x, fog->bboxmax.y, fog->bboxmin.x, fog->bboxmin.y, 0.01f, Color::yellow);
			}
	}
}
コード例 #2
0
//---------------------------------------------------------------------
float CIncinerate::Render(LPDIRECT3DDEVICE7 _pD3DDevice)
{
    int i = 0;

    SETCULL(_pD3DDevice, D3DCULL_NONE);
    SETZWRITE(_pD3DDevice, false);
    SETALPHABLEND(_pD3DDevice, true);

    iMax ++;
    float x = eSrc.x + (eTarget.x - eSrc.x) * (ulCurrentTime * fOneOnDuration);
    float y = eSrc.y + (eTarget.y - eSrc.y) * (ulCurrentTime * fOneOnDuration);
    float z = eSrc.z + (eTarget.z - eSrc.z) * (ulCurrentTime * fOneOnDuration);

    for (i = 0; i < 150 - 1; i++)
    {
        EERIE_3D s, d;
        s.x = tv1a[i].sx;
        s.y = tv1a[i].sy;
        s.z = tv1a[i].sz;
        d.x = tv1a[i+1].sx;
        d.y = tv1a[i+1].sy;
        d.z = tv1a[i+1].sz;
        EERIEDraw3DLine(_pD3DDevice, &s, &d, 0xFFFF0000);
    }

    SETALPHABLEND(_pD3DDevice, true);

    EERIE_3D stiteangle;
    EERIE_3D stitepos;
    EERIE_3D stitescale;
    EERIE_RGB stitecolor;

    stiteangle.b = 90 - fBeta;
    stiteangle.a = 0;
    stiteangle.g = 0;
    stitepos.x = x;
    stitepos.y = y;
    stitepos.z = z;
    stitescale.x = 0.5f;
    stitescale.y = 0.5f;
    stitescale.z = 0.5f;
    stitecolor.r = 1;
    stitecolor.g = 1;
    stitecolor.b = 1;

    SETCULL(_pD3DDevice, D3DCULL_NONE);
    SETZWRITE(_pD3DDevice, false);
    SETALPHABLEND(_pD3DDevice, true);

    pPSStream.Render(_pD3DDevice, D3DBLEND_ONE, D3DBLEND_ONE);

    return 1;
}
コード例 #3
0
ファイル: Spells09.cpp プロジェクト: fourks/ArxLibertatis
//---------------------------------------------------------------------
float CIncinerate::Render()
{
    int i = 0;

    GRenderer->SetCulling(Renderer::CullNone);
    GRenderer->SetRenderState(Renderer::DepthWrite, false);
    GRenderer->SetRenderState(Renderer::AlphaBlending, true);

    iMax ++;
    float x = eSrc.x + (eTarget.x - eSrc.x) * (ulCurrentTime * fOneOnDuration);
    float y = eSrc.y + (eTarget.y - eSrc.y) * (ulCurrentTime * fOneOnDuration);
    float z = eSrc.z + (eTarget.z - eSrc.z) * (ulCurrentTime * fOneOnDuration);

    for (i = 0; i < 150 - 1; i++)
    {
        Vec3f s, d;
        s.x = tv1a[i].p.x;
        s.y = tv1a[i].p.y;
        s.z = tv1a[i].p.z;
        d.x = tv1a[i+1].p.x;
        d.y = tv1a[i+1].p.y;
        d.z = tv1a[i+1].p.z;
        EERIEDraw3DLine(s, d, Color::red);
    }

    GRenderer->SetRenderState(Renderer::AlphaBlending, true);

    Anglef stiteangle;
    Vec3f stitepos;
    Vec3f stitescale;

    stiteangle.b = 90 - fBeta;
    stiteangle.a = 0;
    stiteangle.g = 0;
    stitepos.x = x;
    stitepos.y = y;
    stitepos.z = z;
    stitescale.x = 0.5f;
    stitescale.y = 0.5f;
    stitescale.z = 0.5f;

    GRenderer->SetCulling(Renderer::CullNone);
    GRenderer->SetRenderState(Renderer::DepthWrite, false);
    GRenderer->SetRenderState(Renderer::AlphaBlending, true);

    pPSStream.Render();

    return 1;
}
コード例 #4
0
ファイル: ARX_Fogs.cpp プロジェクト: okready/ArxFatalis
//*************************************************************************************
//*************************************************************************************
void ARX_FOGS_RenderAll(LPDIRECT3DDEVICE7 m_pd3dDevice)
{
	EERIE_3D angle;
	Vector_Init(&angle); 

	SETALPHABLEND(m_pd3dDevice, FALSE);

	for (long i = 0; i < MAX_FOG; i++)
	{
		if (fogs[i].exist)
		{
			if (fogobj)
				DrawEERIEInter(m_pd3dDevice, fogobj, &angle, &fogs[i].pos, NULL);

			Vector_Copy(&fogs[i].bboxmin, &BBOXMIN);
			Vector_Copy(&fogs[i].bboxmax, &BBOXMAX);

			if (fogs[i].special & FOG_DIRECTIONAL)
			{
				EERIE_3D orgn, dest;
				orgn.x = fogs[i].pos.x;
				orgn.y = fogs[i].pos.y;
				orgn.z = fogs[i].pos.z;
				dest.x = orgn.x + fogs[i].move.x * 50.f;
				dest.y = orgn.y + fogs[i].move.y * 50.f;
				dest.z = orgn.z + fogs[i].move.z * 50.f;
				EERIEDraw3DLine(m_pd3dDevice, &orgn, &dest, EERIECOLOR_WHITE); 
			}

			if (fogs[i].selected)
			{
				EERIEDraw2DLine(m_pd3dDevice, fogs[i].bboxmin.x, fogs[i].bboxmin.y, fogs[i].bboxmax.x, fogs[i].bboxmin.y, 0.01f, EERIECOLOR_YELLOW);
				EERIEDraw2DLine(m_pd3dDevice, fogs[i].bboxmax.x, fogs[i].bboxmin.y, fogs[i].bboxmax.x, fogs[i].bboxmax.y, 0.01f, EERIECOLOR_YELLOW);
				EERIEDraw2DLine(m_pd3dDevice, fogs[i].bboxmax.x, fogs[i].bboxmax.y, fogs[i].bboxmin.x, fogs[i].bboxmax.y, 0.01f, EERIECOLOR_YELLOW);
				EERIEDraw2DLine(m_pd3dDevice, fogs[i].bboxmin.x, fogs[i].bboxmax.y, fogs[i].bboxmin.x, fogs[i].bboxmin.y, 0.01f, EERIECOLOR_YELLOW);
			}
		}
	}
}