From 1f4bc24685f055e83832ad63fa5a2501cf725030 Mon Sep 17 00:00:00 2001 From: SirLynix Date: Mon, 31 Oct 2022 22:44:37 +0100 Subject: [PATCH] Improve PhysicsDemo a bit --- examples/PhysicsDemo/main.cpp | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/examples/PhysicsDemo/main.cpp b/examples/PhysicsDemo/main.cpp index 274568910..931349bfe 100644 --- a/examples/PhysicsDemo/main.cpp +++ b/examples/PhysicsDemo/main.cpp @@ -42,7 +42,7 @@ int main() Nz::MeshParams meshParams; meshParams.center = true; - meshParams.vertexRotation = Nz::EulerAnglesf(0.f, -90.f, 0.f); + meshParams.vertexRotation = Nz::EulerAnglesf(0.f, 90.f, 0.f); meshParams.vertexScale = Nz::Vector3f(0.002f); meshParams.vertexDeclaration = Nz::VertexDeclaration::Get(Nz::VertexLayout::XYZ_Normal_UV_Tangent); @@ -64,6 +64,15 @@ int main() texParams.loadFormat = Nz::PixelFormat::RGBA8_SRGB; std::shared_ptr material = Nz::Graphics::Instance()->GetDefaultMaterials().phongMaterial->CreateInstance(); + for (std::string_view passName : { "DepthPass", "ForwardPass" }) + { + material->UpdatePassStates(passName, [](Nz::RenderStates& states) + { + states.depthClamp = true; + return true; + }); + } + material->SetTextureProperty("AlphaMap", Nz::Texture::LoadFromFile(resourceDir / "alphatile.png", texParams)); material->SetTextureProperty("BaseColorMap", Nz::Texture::LoadFromFile(resourceDir / "Spaceship/Texture/diffuse.png", texParams)); @@ -71,7 +80,15 @@ int main() for (std::size_t i = 0; i < model->GetSubMeshCount(); ++i) model->SetMaterial(i, material); - std::shared_ptr sprite = std::make_shared(); + std::shared_ptr textMaterial = Nz::Graphics::Instance()->GetDefaultMaterials().basicTransparent->Clone(); + textMaterial->UpdatePassFlags("ForwardPass", Nz::MaterialPassFlag::SortByDistance); + textMaterial->UpdatePassStates("ForwardPass", [](Nz::RenderStates& states) + { + states.depthClamp = true; + return true; + }); + + std::shared_ptr sprite = std::make_shared(textMaterial); sprite->Update(Nz::SimpleTextDrawer::Draw("Voix ambiguë d'un cœur qui, au zéphyr, préfère les jattes de kiwis", 72), 0.01f); Nz::VertexMapper vertexMapper(*spaceshipMesh->GetSubMesh(0)); @@ -164,6 +181,7 @@ int main() auto& entityNode = registry.emplace(entity); entityNode.SetPosition(Nz::Vector3f(x * 2.f, y * 1.5f, z * 2.f)); + entityNode.SetRotation(Nz::EulerAnglesf(0.f, Nz::TurnAnglef(0.5f), 0.f)); auto& entityPhys = registry.emplace(entity, physSytem.CreateRigidBody(shipCollider)); entityPhys.SetMass(1.f); @@ -187,7 +205,7 @@ int main() float elapsedTime = 0.f; Nz::UInt64 time = Nz::GetElapsedMicroseconds(); - Nz::PidController headingController(0.5f, 0.f, 0.05f); + Nz::PidController headingController(0.3f, 0.f, 0.1f); Nz::PidController upController(1.f, 0.f, 0.1f); bool showColliders = false; @@ -217,14 +235,14 @@ int main() showColliders = !showColliders; if (showColliders) { - auto view = registry.view(); - for (auto [entity, gfxComponent] : view.each()) + auto view = registry.view(); + for (auto [entity, gfxComponent, _] : view.each()) gfxComponent.AttachRenderable(colliderModel, 1); } else { - auto view = registry.view(); - for (auto [entity, gfxComponent] : view.each()) + auto view = registry.view(); + for (auto [entity, gfxComponent, _] : view.each()) gfxComponent.DetachRenderable(colliderModel); } }