47 lines
1.2 KiB
C++
47 lines
1.2 KiB
C++
/*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "Scene/Drawable.hpp"
|
|
#include "Scene/Shader/Shader.hpp"
|
|
#include "Scene/Node.hpp"
|
|
|
|
namespace OpenVulkano::Scene
|
|
{
|
|
class OriginIndicatorDrawable final : public Drawable
|
|
{
|
|
Shader m_shader;
|
|
|
|
public:
|
|
OriginIndicatorDrawable()
|
|
: Drawable(DrawEncoder::GetDrawEncoder<OriginIndicatorDrawable>(), DrawPhase::MAIN)
|
|
{
|
|
m_shader.cullMode = CullMode::NONE;
|
|
m_shader.topology = Topology::LINE_LIST;
|
|
m_shader.AddShaderProgram(ShaderProgramType::VERTEX, "Shader/originIndicator");
|
|
m_shader.AddShaderProgram(ShaderProgramType::FRAGMENT, "Shader/basic");
|
|
SetShader(&m_shader);
|
|
}
|
|
};
|
|
|
|
class OriginIndicatorNode final : public Node
|
|
{
|
|
OriginIndicatorDrawable drawable;
|
|
|
|
public:
|
|
OriginIndicatorNode(float size = 0.25f) : Node(Math::Utils::scale(Math::Vector3f(size, size, size)))
|
|
{
|
|
AddChild(&drawable);
|
|
}
|
|
|
|
void SetSize(float size = 0.25f)
|
|
{
|
|
SetMatrix(Math::Utils::scale(Math::Vector3f(size, size, size)));
|
|
}
|
|
};
|
|
}
|