/*---------------------------------------------------------------*/ void Cinematic::Render(float FDIFF) { CinematicBitmap * tb; LargeurRender = DANAESIZX; HauteurRender = DANAESIZY; if (projectload) { GRenderer->Clear(Renderer::ColorBuffer); GRenderer->BeginScene(); GereTrack(this, FDIFF); //sound if (changekey) { if (idsound >= 0) { PlaySoundKeyFramer(idsound); } } //draw GRenderer->SetBlendFunc(Renderer::BlendSrcAlpha, Renderer::BlendInvSrcAlpha); GRenderer->GetTextureStage(0)->SetColorOp(TextureStage::OpModulate, TextureStage::ArgTexture, TextureStage::ArgDiffuse); GRenderer->GetTextureStage(0)->SetAlphaOp(TextureStage::OpModulate, TextureStage::ArgTexture, TextureStage::ArgDiffuse); GRenderer->GetTextureStage(1)->DisableAlpha(); //image key tb = m_bitmaps[numbitmap]; //fx int col = 0x00FFFFFF; switch (fx & 0x000000FF) { case FX_FADEIN: col = FX_FadeIN(a, color, colord); break; case FX_FADEOUT: col = FX_FadeOUT(a, color, colord); break; case FX_BLUR: FX_Blur(this, tb); break; default: break; } //fx precalculation switch (fx & 0x0000ff00) { case FX_DREAM: if ((this->fxsuiv & 0x0000ff00) == FX_DREAM) FX_DreamPrecalc(tb, 15.f, (FPS > 1.f) ? GetTrackFPS() / FPS : 0.f); else FX_DreamPrecalc(tb, 15.f * a, (FPS > 1.f) ? GetTrackFPS() / FPS : 0.f); break; default: break; } Camera.pos = pos; SetTargetCamera(&Camera, Camera.pos.x, Camera.pos.y, 0.f); Camera.angle.b = 0; Camera.angle.g = angz; Camera.centerx = LargeurRender >> 1; Camera.centery = HauteurRender >> 1; Camera.clip.right = LargeurRender; Camera.clip.bottom = HauteurRender; PrepareCamera(&Camera); SetActiveCamera(&Camera); int alpha = ((int)(a * 255.f)) << 24; int stopline = tb->nbx; if (stopline & 1) stopline++; if (force ^ 1) alpha = 0xFF000000; col |= alpha; CinematicLight lightt, *l = NULL; if ((this->light.intensity >= 0.f) && (this->lightd.intensity >= 0.f)) { lightt = this->light; lightt.pos.x += (float)(LargeurRender >> 1); lightt.pos.y += (float)(HauteurRender >> 1); #define SPEEDINTENSITYRND (10.f) float flIntensityRNDToReach = lightt.intensiternd * rnd(); m_flIntensityRND += (flIntensityRNDToReach - m_flIntensityRND) * FDIFF * SPEEDINTENSITYRND; m_flIntensityRND = m_flIntensityRND < 0.f ? 0.f : m_flIntensityRND > 1.f ? 1.f : m_flIntensityRND; LightRND = lightt.intensity + (lightt.intensiternd * rnd()); if (LightRND > 1.f) LightRND = 1.f; l = &lightt; } if (tb->grid.nbvertexs) DrawGrille(&tb->grid, col, fx, l, &posgrille, angzgrille); //PASS #2 if (force & 1) { switch (ti) { case INTERP_NO: Camera.pos = possuiv; SetTargetCamera(&Camera, Camera.pos.x, Camera.pos.y, 0.f); Camera.angle.b = 0; Camera.angle.g = angzsuiv; PrepareCamera(&Camera); break; case INTERP_LINEAR: break; case INTERP_BEZIER: break; } tb = m_bitmaps[numbitmapsuiv]; alpha = 0xFF000000 - alpha; col &= 0x00FFFFFF; col |= alpha; l = NULL; if ((this->light.intensity >= 0.f) && (this->lightd.intensity >= 0.f)) { lightt = this->lightd; lightt.pos.x += (float)(LargeurRender >> 1); lightt.pos.y += (float)(HauteurRender >> 1); LightRND = lightt.intensity + (lightt.intensiternd * rnd()); if (LightRND > 1.f) LightRND = 1.f; l = &lightt; } if (tb->grid.nbvertexs) DrawGrille(&tb->grid, col, fx, l, &posgrillesuiv, angzgrillesuiv); }
/*---------------------------------------------------------------*/ void Cinematic::Render(float FDIFF) { CinematicBitmap * tb; LargeurRender = g_size.width(); HauteurRender = g_size.height(); if(projectload) { GRenderer->Clear(Renderer::ColorBuffer); GereTrack(this, FDIFF); //sound if(changekey && idsound >= 0) PlaySoundKeyFramer(idsound); //draw GRenderer->SetBlendFunc(Renderer::BlendSrcAlpha, Renderer::BlendInvSrcAlpha); GRenderer->GetTextureStage(0)->setColorOp(TextureStage::OpModulate, TextureStage::ArgTexture, TextureStage::ArgDiffuse); GRenderer->GetTextureStage(0)->setAlphaOp(TextureStage::OpModulate, TextureStage::ArgTexture, TextureStage::ArgDiffuse); GRenderer->GetTextureStage(1)->disableAlpha(); //image key tb = m_bitmaps[numbitmap]; //fx int col = 0x00FFFFFF; switch(fx & 0x000000FF) { case FX_FADEIN: col = FX_FadeIN(a, color, colord); break; case FX_FADEOUT: col = FX_FadeOUT(a, color, colord); break; case FX_BLUR: FX_Blur(this, tb, m_camera); break; default: break; } //fx precalculation switch(fx & 0x0000ff00) { case FX_DREAM: if ((this->fxsuiv & 0x0000ff00) == FX_DREAM) FX_DreamPrecalc(tb, 15.f, (FPS > 1.f) ? GetTrackFPS() / FPS : 0.f); else FX_DreamPrecalc(tb, 15.f * a, (FPS > 1.f) ? GetTrackFPS() / FPS : 0.f); break; default: break; } m_camera.orgTrans.pos = pos; m_camera.setTargetCamera(m_camera.orgTrans.pos.x, m_camera.orgTrans.pos.y, 0.f); m_camera.angle.setPitch(0); m_camera.angle.setRoll(angz); m_camera.clip = Rect(LargeurRender, HauteurRender); m_camera.center = m_camera.clip.center(); PrepareCamera(&m_camera, g_size); SetActiveCamera(&m_camera); int alpha = ((int)(a * 255.f)) << 24; if(force ^ 1) alpha = 0xFF000000; col |= alpha; CinematicLight lightt, *l = NULL; if(this->light.intensity >= 0.f && this->lightd.intensity >= 0.f) { lightt = this->light; lightt.pos.x += (float)(LargeurRender >> 1); lightt.pos.y += (float)(HauteurRender >> 1); static const float SPEEDINTENSITYRND = 10.f; float flIntensityRNDToReach = lightt.intensiternd * rnd(); m_flIntensityRND += (flIntensityRNDToReach - m_flIntensityRND) * FDIFF * SPEEDINTENSITYRND; m_flIntensityRND = m_flIntensityRND < 0.f ? 0.f : m_flIntensityRND > 1.f ? 1.f : m_flIntensityRND; LightRND = lightt.intensity + (lightt.intensiternd * rnd()); if(LightRND > 1.f) LightRND = 1.f; l = &lightt; } if(tb->grid.nbvertexs) DrawGrille(&tb->grid, col, fx, l, &posgrille, angzgrille); //PASS #2 if(force & 1) { switch(ti) { case INTERP_NO: m_camera.orgTrans.pos = possuiv; m_camera.setTargetCamera(m_camera.orgTrans.pos.x, m_camera.orgTrans.pos.y, 0.f); m_camera.angle.setPitch(0); m_camera.angle.setRoll(angzsuiv); PrepareCamera(&m_camera, g_size); break; case INTERP_LINEAR: break; case INTERP_BEZIER: break; } tb = m_bitmaps[numbitmapsuiv]; alpha = 0xFF000000 - alpha; col &= 0x00FFFFFF; col |= alpha; l = NULL; if(this->light.intensity >= 0.f && this->lightd.intensity >= 0.f) { lightt = this->lightd; lightt.pos.x += (float)(LargeurRender >> 1); lightt.pos.y += (float)(HauteurRender >> 1); LightRND = lightt.intensity + (lightt.intensiternd * rnd()); if(LightRND > 1.f) LightRND = 1.f; l = &lightt; } if(tb->grid.nbvertexs) DrawGrille(&tb->grid, col, fx, l, &posgrillesuiv, angzgrillesuiv); }