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); } } }
//--------------------------------------------------------------------- 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; }
//--------------------------------------------------------------------- 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; }
//************************************************************************************* //************************************************************************************* 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); } } } }