/
Ivanoff
/
KMiVVR
Обзор
Документация
Войти
/
Ivanoff
/
KMiVVR
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
7/Unit2.cpp
165 строк
5 KB
ivanoff
lab
20 дек 2024, 10:14
20 дек 2024, 10:14
f5dd62a
Код
Авторство
О чём код?
//--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit2.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "GLS.BaseClasses" #pragma link "GLS.Scene" #pragma link "GLS.SceneViewer" #pragma link "GLS.Cadencer" #pragma link "GLS.Coordinates" #pragma link "GLS.LensFlare" #pragma link "GLS.Material" #pragma link "GLS.Navigator" #pragma link "GLS.Objects" #pragma link "GLS.SimpleNavigation" #pragma link "GLS.SkyDome" #pragma resource "*.dfm" #pragma link "GLS.BaseClasses" #pragma link "GLS.Cadencer" #pragma link "GLS.Coordinates" #pragma link "GLS.LensFlare" #pragma link "GLS.Material" #pragma link "GLS.Navigator" #pragma link "GLS.Objects" #pragma link "GLS.Scene" #pragma link "GLS.SimpleNavigation" #pragma link "GLS.SkyDome" #pragma link "GLS.SceneViewer" #pragma link "GLS.Utils" TForm2 *Form2; //--------------------------------------------------------------------------- __fastcall TForm2::TForm2(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- TGLLibMaterial* __fastcall TForm2::LoadTexture(String Matname, String Filename) { GLMaterialLibrary2->AddTextureMaterial(Matname, Filename); GLMaterialLibrary2->Materials->Items[0] ->Material->Texture->Disabled = false; return GLMaterialLibrary2->Materials->GetLibMaterialByName(Matname); } void __fastcall TForm2::FormCreate(TObject *Sender) { // SetGLSceneMediaDir(); TFileName PathCM = GetCurrentDir() + "\\Cubemaps"; SetCurrentDir(PathCM); // Skybox textures LoadTexture("Left", "icecraterlf.jpg"); GLMaterialLibrary2->Materials->Items[0]->Material->Texture->TextureMode = tmDecal; LoadTexture("Right", "icecraterlf.jpg"); GLMaterialLibrary2->Materials->Items[1]->Material->Texture->TextureMode = tmDecal; LoadTexture("Top", "icecraterlf.jpg"); GLMaterialLibrary2->Materials->Items[2]->Material->Texture->TextureMode = tmDecal; LoadTexture("Bottom", "icecraterlf.jpg"); GLMaterialLibrary2->Materials->Items[3]->Material->Texture->TextureMode = tmDecal; LoadTexture("Front", "icecraterlf.jpg"); GLMaterialLibrary2->Materials->Items[4]->Material->Texture->TextureMode = tmDecal; LoadTexture("Back", "icecraterlf.jpg"); GLMaterialLibrary2->Materials->Items[5]->Material->Texture->TextureMode = tmDecal; // SetGLSceneMediaDir(); // back to madia dir with textures // Add transparency to clouds LoadTexture("Clouds", "Clouds.jpg")->Material->BlendingMode = bmTransparency; LoadTexture("Clouds", "Clouds.jpg") ->Material->FrontProperties->Diffuse->Alpha = 0.2; // scale the clouds texture LoadTexture("Clouds", "Clouds.jpg")->TextureScale->X = 8; LoadTexture("Clouds", "Clouds.jpg")->TextureScale->Y = 8; // bricks LoadTexture("Bricks", "rawwall.jpg")->TextureScale->X = 1; LoadTexture("Bricks", "rawwall.jpg")->TextureScale->Y = 32; LoadTexture("Bricks", "rawwall.jpg")->Material->Texture->TextureMode = tmModulate; LoadTexture("Bricks2", "marbletiles.jpg")->TextureScale->X = 6; LoadTexture("Bricks2", "marbletiles.jpg")->TextureScale->Y = 1; LoadTexture("Bricks2", "marbletiles.jpg")->Material->Texture->TextureMode = tmModulate; // Moon LoadTexture("Moon", "moon512.png")->Material->Texture->TextureMode = tmModulate; // ----------------------------------------- // Assign materials to objects // ----------------------------------------- GLCube3->Material->LibMaterialName = "Bricks"; GLCube5->Material->LibMaterialName = "Bricks"; GLCube7->Material->LibMaterialName = "Bricks"; GLCube9->Material->LibMaterialName = "Bricks"; GLCube4->Material->LibMaterialName = "Bricks2"; GLCube6->Material->LibMaterialName = "Bricks2"; GLCube8->Material->LibMaterialName = "Bricks2"; GLCube10->Material->LibMaterialName = "Bricks2";; GLSphere3->Material->LibMaterialName = "Moon"; GLSphere4->Material->LibMaterialName = "Moon"; GLUserInterface2->MouseLookActive = true; } // --------------------------------------------------------------------------- void __fastcall TForm2::GLCadencer1Progress(TObject *Sender, const double deltaTime, const double newTime) { // Make clouds Texture slide GLMaterialLibrary2->Materials->GetLibMaterialByName("Clouds") ->TextureOffset->X = GLMaterialLibrary2->Materials->GetLibMaterialByName ("Clouds")->TextureOffset->X + deltaTime * 0.02; GLMaterialLibrary2->Materials->GetLibMaterialByName("Clouds") ->TextureOffset->Y = GLMaterialLibrary2->Materials->GetLibMaterialByName ("Clouds")->TextureOffset->Y + deltaTime * 0.03; // Rotate moons GLSphere3->Turn(deltaTime * 7); GLSphere4->Turn(deltaTime * 10); HandleKeys(deltaTime); GLUserInterface2->MouseLook(); GLUserInterface2->MouseUpdate(); GLSceneViewer2->Invalidate(); } // --------------------------------------------------------------------------- void __fastcall TForm2::HandleKeys(double d) { if (IsKeyDown('W') || IsKeyDown('Z')) GLCamera2->Move(d); if (IsKeyDown('S')) GLCamera2->Move(-d); if (IsKeyDown('A') || IsKeyDown('A')) GLCamera2->Slide(-d); if (IsKeyDown('D')) GLCamera2->Slide(d); // if (IsKeyDown(VK_SPACE)) // Castle->Visible = !Castle->Visible; if (IsKeyDown(VK_ESCAPE)) Close(); }