MySceneManager::MySceneManager() { auto pEngine = MyIrrlichtEngine::GetEngine(); smgr = pEngine->GetSceneManager(); driver = pEngine->GetVideoDriver(); timer = pEngine->GetDevice()->getTimer(); }
void DrawTerrain(Gpu::Frame* frame) { frame->PushAllState(); Virtual::StaticGeometry* m_geometry = m_terrain->GetGeometry(); if (!m_geometry) { m_geometry = Cast<Virtual::StaticGeometry*>(Utility::ParsePunkFile(System::Environment::Instance()->GetModelFolder() + m_terrain->GetStaticMeshFilename())); m_terrain->SetGeometry(m_geometry); } if (m_geometry) { if (!m_geometry->GetGpuCache().IsOnGpu()) m_geometry->GetGpuCache().Update(GetVideoDriver()); for (size_t i = 0; i != m_terrain_material->GetTextureSlotCount(); ++i) { Virtual::TextureSlot* slot = m_terrain_material->GetTextureSlot(i); if (!slot->GetGpuCache().IsOnGpu()) slot->GetGpuCache().Update(GetVideoDriver()); if (m_terrain_material->GetTextureSlot(i)->IsDiffuseMapSlot()) frame->SetDiffuseMap(0, m_terrain_material->GetTextureSlot(i)->GetGpuCache().GetTexture(), 0); if (m_terrain_material->GetTextureSlot(i)->IsNormalMapSlot()) frame->SetNormalMap(m_terrain_material->GetTextureSlot(i)->GetGpuCache().GetTexture(), 1); } frame->SetLightModel(Gpu::LightModel::PerVertexDiffuse); frame->SetWorldMatrix(Math::mat4::CreateTranslate(0, 0, 0)); //frame->MultWorldMatrix(Math::mat4::CreateRotation(1, 0, 0, m_x)); //frame->MultWorldMatrix(Math::mat4::CreateRotation(0, 1, 0, m_y)); frame->MultWorldMatrix(Math::mat4::CreateRotation(0, 0, 1, m_z)); frame->Submit(m_geometry->GetGpuCache().GetGpuBuffer()); frame->PopAllState(); } }
void CDlg::Draw(_RECT rect) { IVideoDriver* pVideoDriver; pVideoDriver = GetVideoDriver(); int nSourceX, nSourceY,nSourceWidth,nSourceHeight,nDestX,nDestY; nSourceX = 0; nSourceY = 0; nSourceWidth = GetWidth(); nSourceHeight = GetHeight(); nDestX = GetDisplayLeft(); nDestY = GetDisplayTop(); pVideoDriver->RenderQuad(GetTexture(), nSourceX, nSourceY, nSourceWidth, nSourceHeight,nDestX,nDestY,XSCALE, YSCALE, ANGLE, GetAlpha()); CCommonWnd::Draw(); }
void ProcessNaviMesh(Render2 *render, Scene::Node *node, System::Object* o) { if (!o) return; AI::NaviMesh *mesh = (AI::NaviMesh*)o; auto m_frame = render->GetCurrentFrame(); if (m_frame->IsEnabledNaviMeshRendering()) { if (mesh) { auto r = Gpu::AsRenderable(*mesh, m_frame->GetVideoDriver()); m_frame->PushAllState(); m_frame->EnableTexturing(false); m_frame->EnableLighting(false); m_frame->EnableBlending(true); m_frame->SetDiffuseColor(0, 0, 1.0, .5); m_frame->Submit(r, true); m_frame->PopAllState(); } } render->ProcessChildren(node); }