Example app adjustments to the changes, using factory in MovingCubeApp
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
#include "Scene/Scene.hpp"
|
||||
#include "Scene/Shader/Shader.hpp"
|
||||
#include "Scene/Geometry.hpp"
|
||||
#include "Scene/GeometryFactory.hpp"
|
||||
#include "Scene/Material.hpp"
|
||||
#include "Scene/Vertex.hpp"
|
||||
#include "Scene/SimpleDrawable.hpp"
|
||||
@@ -27,7 +28,7 @@ namespace OpenVulkano
|
||||
{
|
||||
struct SceneElement
|
||||
{
|
||||
Scene::Geometry m_geometry;
|
||||
Scene::Geometry *m_geometry;
|
||||
Scene::SimpleDrawable m_drawable;
|
||||
Scene::Node m_node;
|
||||
};
|
||||
@@ -46,11 +47,16 @@ namespace OpenVulkano
|
||||
SceneElement m_whiteBox;
|
||||
SceneElement m_redBox;
|
||||
|
||||
void CreateSceneElement(SceneElement *dest, const Math::Vector4f &color, float scale)
|
||||
SceneElement m_plane;
|
||||
SceneElement m_sphere;
|
||||
SceneElement m_hemisphere;
|
||||
SceneElement m_triangle;
|
||||
SceneElement m_cylinder;
|
||||
SceneElement m_pyramid;
|
||||
|
||||
void CompleteSceneElement(SceneElement *dest)
|
||||
{
|
||||
dest->m_geometry.InitCube(scale, scale, scale, color);
|
||||
dest->m_drawable.Init(&m_shader, &dest->m_geometry, &m_material);
|
||||
|
||||
dest->m_drawable.Init(&m_shader, dest->m_geometry, &m_material);
|
||||
dest->m_node.Init();
|
||||
m_scene.GetRoot()->AddChild(&dest->m_node);
|
||||
dest->m_node.SetUpdateFrequency(Scene::UpdateFrequency::Always);
|
||||
@@ -58,6 +64,48 @@ namespace OpenVulkano
|
||||
dest->m_node.SetMatrix(Math::Matrix4f(1));
|
||||
}
|
||||
|
||||
void CreateSceneElement(SceneElement *dest, const Math::Vector4f &color, float scale)
|
||||
{
|
||||
dest->m_geometry = Scene::GeometryFactory::MakeCube(scale, scale, scale, color);
|
||||
CompleteSceneElement(dest);
|
||||
}
|
||||
|
||||
void CreatePlane(SceneElement *dest, const Math::Vector4f& color)
|
||||
{
|
||||
dest->m_geometry = Scene::GeometryFactory::MakePlane(1, 1, color);
|
||||
CompleteSceneElement(dest);
|
||||
}
|
||||
|
||||
void CreateSphere(SceneElement *dest, const Math::Vector4f& color)
|
||||
{
|
||||
dest->m_geometry = Scene::GeometryFactory::MakeSphere(1, 32, 16, color);
|
||||
CompleteSceneElement(dest);
|
||||
}
|
||||
|
||||
void CreateHemisphere(SceneElement *dest, const Math::Vector4f& color)
|
||||
{
|
||||
dest->m_geometry = Scene::GeometryFactory::MakeHemisphere(1, 16, 16, color);
|
||||
CompleteSceneElement(dest);
|
||||
}
|
||||
|
||||
void CreateTriangle(SceneElement *dest, const Math::Vector4f& color)
|
||||
{
|
||||
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);
|
||||
CompleteSceneElement(dest);
|
||||
}
|
||||
|
||||
void CreateCylinder(SceneElement *dest, const Math::Vector4f& color)
|
||||
{
|
||||
dest->m_geometry = Scene::GeometryFactory::MakeCylinder(1, 3, 64, color);
|
||||
CompleteSceneElement(dest);
|
||||
}
|
||||
|
||||
void CreatePyramid(SceneElement *dest, const Math::Vector4f& color)
|
||||
{
|
||||
dest->m_geometry = Scene::GeometryFactory::MakePyramid(0.5, 2, color);
|
||||
CompleteSceneElement(dest);
|
||||
}
|
||||
|
||||
public:
|
||||
void Init() override
|
||||
{
|
||||
@@ -95,6 +143,24 @@ namespace OpenVulkano
|
||||
m_sequenceAnimationController.AddAnimationStep(Math::PoseF(Math::Utils::normalize(Math::QuaternionF(3, 2, 1, 1)), Math::Vector3f_SIMD(1, 1, -1)), 3);
|
||||
m_sequenceAnimationController.AddAnimationStep(Math::PoseF(Math::Utils::normalize(Math::QuaternionF(0, 0, 1, 1)), Math::Vector3f_SIMD(0, 1, 0)), 1);
|
||||
m_sequenceAnimationController.SetAnimationPoseResetTime(10);
|
||||
|
||||
CreatePlane(&m_plane, Math::Vector4f(0.3, 0.6, 0.9, 1.0));
|
||||
m_plane.m_node.worldMat = Math::Utils::translate(Math::Vector3f(3, 0, 0));
|
||||
|
||||
CreateSphere(&m_sphere, Math::Vector4f(0.9, 0.6, 0.9, 1.0));
|
||||
m_sphere.m_node.worldMat = Math::Utils::translate(Math::Vector3f(5, 0, 0));
|
||||
|
||||
CreateHemisphere(&m_hemisphere, Math::Vector4f(0.6, 0.3, 0.9, 1.0));
|
||||
m_hemisphere.m_node.worldMat = Math::Utils::translate(Math::Vector3f(7, 0, 0));
|
||||
|
||||
CreateTriangle(&m_triangle, Math::Vector4f(0.6, 0.9, 0.3, 1.0));
|
||||
m_triangle.m_node.worldMat = Math::Utils::translate(Math::Vector3f(9, 0, 0));
|
||||
|
||||
CreateCylinder(&m_cylinder, Math::Vector4f(0.3, 0.9, 0.9, 1.0));
|
||||
m_cylinder.m_node.worldMat = Math::Utils::translate(Math::Vector3f(11, 0, 0));
|
||||
|
||||
CreatePyramid(&m_pyramid, Math::Vector4f(0.9, 0.9, 0.6, 1.0));
|
||||
m_pyramid.m_node.worldMat = Math::Utils::translate(Math::Vector3f(13, 0, 0));
|
||||
}
|
||||
|
||||
void OnSimpleAnimationCompleted(Scene::SimpleAnimationController *anim)
|
||||
|
||||
Reference in New Issue
Block a user