extend examples

This commit is contained in:
ohyzha
2024-11-04 18:24:31 +02:00
parent 645fac1964
commit 3d96889778
2 changed files with 10 additions and 0 deletions

View File

@@ -88,6 +88,7 @@ namespace OpenVulkano
label.AddText("Additional text" + std::to_string(j)); label.AddText("Additional text" + std::to_string(j));
} }
} }
m_drawablesPool[i].SetIsHittable(true);
m_scene.GetRoot()->AddChild(&m_nodesPool[i]); m_scene.GetRoot()->AddChild(&m_nodesPool[i]);
m_nodesPool[i].SetMatrix(Math::Utils::translate(glm::mat4x4(1.f), Vector3f(-5 + std::rand() % 5, -5 + std::rand() % 5, -std::rand() % 10))); m_nodesPool[i].SetMatrix(Math::Utils::translate(glm::mat4x4(1.f), Vector3f(-5 + std::rand() % 5, -5 + std::rand() % 5, -std::rand() % 10)));
m_nodesPool[i].AddDrawable(&m_drawablesPool[i]); m_nodesPool[i].AddDrawable(&m_drawablesPool[i]);

View File

@@ -71,6 +71,8 @@ namespace OpenVulkano
void CompleteSceneElement(SceneElement *dest) void CompleteSceneElement(SceneElement *dest)
{ {
dest->m_drawable.Init(&m_shader, &dest->m_geometry, &m_material); dest->m_drawable.Init(&m_shader, &dest->m_geometry, &m_material);
dest->m_drawable.SetIsHittable(true);
//dest->m_geometry.freeAfterUpload = false;
dest->m_node.Init(); dest->m_node.Init();
m_scene.GetRoot()->AddChild(&dest->m_node); m_scene.GetRoot()->AddChild(&dest->m_node);
dest->m_node.SetUpdateFrequency(Scene::UpdateFrequency::Always); dest->m_node.SetUpdateFrequency(Scene::UpdateFrequency::Always);
@@ -81,24 +83,28 @@ namespace OpenVulkano
void CreateSceneElement(SceneElement *dest, const Math::Vector4f &color, float scale) void CreateSceneElement(SceneElement *dest, const Math::Vector4f &color, float scale)
{ {
dest->m_geometry = Scene::GeometryFactory::MakeCube(scale, scale, scale, color); dest->m_geometry = Scene::GeometryFactory::MakeCube(scale, scale, scale, color);
dest->m_geometry.name = fmt::format("Cube {} {} {}", color.r, color.g, color.b);
CompleteSceneElement(dest); CompleteSceneElement(dest);
} }
void CreatePlane(SceneElement *dest, const Math::Vector4f &color) void CreatePlane(SceneElement *dest, const Math::Vector4f &color)
{ {
dest->m_geometry = Scene::GeometryFactory::MakePlane(1, 1, color); dest->m_geometry = Scene::GeometryFactory::MakePlane(1, 1, color);
dest->m_geometry.name = "Plane";
CompleteSceneElement(dest); CompleteSceneElement(dest);
} }
void CreateSphere(SceneElement *dest, const Math::Vector4f &color) void CreateSphere(SceneElement *dest, const Math::Vector4f &color)
{ {
dest->m_geometry = Scene::GeometryFactory::MakeSphere(1, 32, 16, color); dest->m_geometry = Scene::GeometryFactory::MakeSphere(1, 32, 16, color);
dest->m_geometry.name = "Sphere";
CompleteSceneElement(dest); CompleteSceneElement(dest);
} }
void CreateHemisphere(SceneElement *dest, const Math::Vector4f &color) void CreateHemisphere(SceneElement *dest, const Math::Vector4f &color)
{ {
dest->m_geometry = Scene::GeometryFactory::MakeHemisphere(1, 16, 16, color); dest->m_geometry = Scene::GeometryFactory::MakeHemisphere(1, 16, 16, color);
dest->m_geometry.name = "Hemisphere";
CompleteSceneElement(dest); CompleteSceneElement(dest);
} }
@@ -106,18 +112,21 @@ namespace OpenVulkano
{ {
dest->m_geometry = Scene::GeometryFactory::MakeTriangle( dest->m_geometry = Scene::GeometryFactory::MakeTriangle(
Math::Vector3f(0.5, 0., 0.), Math::Vector3f(0., 0.5, 0.), Math::Vector3f(-0.5, 0., 0.), color); Math::Vector3f(0.5, 0., 0.), Math::Vector3f(0., 0.5, 0.), Math::Vector3f(-0.5, 0., 0.), color);
dest->m_geometry.name = "Triangle";
CompleteSceneElement(dest); CompleteSceneElement(dest);
} }
void CreateCylinder(SceneElement *dest, const Math::Vector4f &color) void CreateCylinder(SceneElement *dest, const Math::Vector4f &color)
{ {
dest->m_geometry = Scene::GeometryFactory::MakeCylinder(1, 3, 64, color); dest->m_geometry = Scene::GeometryFactory::MakeCylinder(1, 3, 64, color);
dest->m_geometry.name = "Cylinder";
CompleteSceneElement(dest); CompleteSceneElement(dest);
} }
void CreatePyramid(SceneElement *dest, const Math::Vector4f &color) void CreatePyramid(SceneElement *dest, const Math::Vector4f &color)
{ {
dest->m_geometry = Scene::GeometryFactory::MakePyramid(0.5, 2, color); dest->m_geometry = Scene::GeometryFactory::MakePyramid(0.5, 2, color);
dest->m_geometry.name = "Pyramid";
CompleteSceneElement(dest); CompleteSceneElement(dest);
} }