Shkyera Engine
Easy to use, game engine for Python
Loading...
Searching...
No Matches
shkyera::GizmoSystem Class Reference

#include <GizmoSystem.hpp>

Inheritance diagram for shkyera::GizmoSystem:
[legend]

Public Member Functions

 GizmoSystem (std::shared_ptr< Registry > registry)
 
 ~GizmoSystem ()
 
void update ()
 
- Public Member Functions inherited from shkyera::RegistryViewer
template<typename... Resources>
 RegistryViewer (std::shared_ptr< Registry > registry, ReadAccess< Resources... > read)
 
template<typename... Resources>
 RegistryViewer (std::shared_ptr< Registry > registry, WriteAccess< Resources... > read)
 
template<typename... ReadResources, typename... WriteResources>
 RegistryViewer (std::shared_ptr< Registry > registry, ReadAccess< ReadResources... > read, WriteAccess< WriteResources... > write)
 
const PolicygetPolicy () const
 
template<typename Component , typename... Args>
Componentadd (Entity entity, Args &&... args)
 
template<typename Component >
void clear ()
 
template<typename Component >
bool has (Entity entity) const
 
template<typename Component >
Componentwrite (Entity entity)
 
template<typename Component >
const Componentread (Entity entity) const
 
template<NonSingletonComponentType Component>
const autoread () const
 
template<SingletonComponentType Component>
const autoread () const
 
template<NonSingletonComponentType Component>
autowrite ()
 
template<SingletonComponentType Component>
autowrite ()
 
template<SingletonComponentType Component>
std::optional< EntitygetEntity () const
 
const std::optional< EntitygetParent (Entity entity) const
 
template<typename Component >
SparseSet< Component > & writeAll ()
 
template<typename Component >
const SparseSet< Component > & readAll () const
 

Private Types

enum class  Mode { TRANSLATION , SCALE }
 

Private Member Functions

void handleInput ()
 
void moveEntity ()
 
void scaleEntity ()
 
void selectEntity ()
 
void styleOnHover ()
 
void adjustGizmoTransform ()
 
bool isHoverMoved (std::optional< Entity > currentHover) const
 
glm::vec3 getSelectedHandleDisplacement () const
 
std::optional< glm::vec3 > getMouseIntersectionWithHandle () const
 

Private Attributes

Mode _mode = Mode::TRANSLATION
 
std::shared_ptr< Registry_registry
 
glm::vec3 _originalColor
 
std::optional< Entity_selectedHandle
 
std::optional< Entity_hoveredHandle
 
std::optional< Entity_controlledEntity
 
Entity _translationGizmo
 
glm::vec3 _originalHandlePosition
 
glm::vec3 _originalDisplacement
 
Entity _scaleGizmo
 
Entity _scaleUniformHandle
 
Entity _scaleGizmoLineX
 
Entity _scaleGizmoLineY
 
Entity _scaleGizmoLineZ
 
glm::vec3 _originalScale
 
Entity _rotationGizmo
 
glm::vec3 _originalPlaneIntersection
 
glm::vec3 _originalOrientation
 

Static Private Attributes

static const auto Red = glm::vec3{0.9, 0.1, 0.1}
 
static const auto Green = glm::vec3{0.1, 0.9, 0.3}
 
static const auto Blue = glm::vec3{0.1, 0.45, 0.95}
 
static const auto Grey = glm::vec3{0.8, 0.8, 0.8}
 
static constexpr float GizmoLineWidth = 0.02
 
static constexpr float GizmoLineLength = 1.0
 
static constexpr float GizmoHandleSize = 0.1
 
static constexpr float GizmoScale = 0.07
 

Member Enumeration Documentation

◆ Mode

Enumerator
TRANSLATION 
SCALE 

Constructor & Destructor Documentation

◆ GizmoSystem()

shkyera::GizmoSystem::GizmoSystem ( std::shared_ptr< Registry registry)

◆ ~GizmoSystem()

shkyera::GizmoSystem::~GizmoSystem ( )

Member Function Documentation

◆ adjustGizmoTransform()

void shkyera::GizmoSystem::adjustGizmoTransform ( )
private

◆ getMouseIntersectionWithHandle()

std::optional< glm::vec3 > shkyera::GizmoSystem::getMouseIntersectionWithHandle ( ) const
private

◆ getSelectedHandleDisplacement()

glm::vec3 shkyera::GizmoSystem::getSelectedHandleDisplacement ( ) const
private

◆ handleInput()

void shkyera::GizmoSystem::handleInput ( )
private

◆ isHoverMoved()

bool shkyera::GizmoSystem::isHoverMoved ( std::optional< Entity currentHover) const
private

◆ moveEntity()

void shkyera::GizmoSystem::moveEntity ( )
private

◆ scaleEntity()

void shkyera::GizmoSystem::scaleEntity ( )
private

◆ selectEntity()

void shkyera::GizmoSystem::selectEntity ( )
private

◆ styleOnHover()

void shkyera::GizmoSystem::styleOnHover ( )
private

◆ update()

void shkyera::GizmoSystem::update ( )

Member Data Documentation

◆ _controlledEntity

std::optional<Entity> shkyera::GizmoSystem::_controlledEntity
private

◆ _hoveredHandle

std::optional<Entity> shkyera::GizmoSystem::_hoveredHandle
private

◆ _mode

Mode shkyera::GizmoSystem::_mode = Mode::TRANSLATION
private

◆ _originalColor

glm::vec3 shkyera::GizmoSystem::_originalColor
private

◆ _originalDisplacement

glm::vec3 shkyera::GizmoSystem::_originalDisplacement
private

◆ _originalHandlePosition

glm::vec3 shkyera::GizmoSystem::_originalHandlePosition
private

◆ _originalOrientation

glm::vec3 shkyera::GizmoSystem::_originalOrientation
private

◆ _originalPlaneIntersection

glm::vec3 shkyera::GizmoSystem::_originalPlaneIntersection
private

◆ _originalScale

glm::vec3 shkyera::GizmoSystem::_originalScale
private

◆ _registry

std::shared_ptr<Registry> shkyera::GizmoSystem::_registry
private

◆ _rotationGizmo

Entity shkyera::GizmoSystem::_rotationGizmo
private

◆ _scaleGizmo

Entity shkyera::GizmoSystem::_scaleGizmo
private

◆ _scaleGizmoLineX

Entity shkyera::GizmoSystem::_scaleGizmoLineX
private

◆ _scaleGizmoLineY

Entity shkyera::GizmoSystem::_scaleGizmoLineY
private

◆ _scaleGizmoLineZ

Entity shkyera::GizmoSystem::_scaleGizmoLineZ
private

◆ _scaleUniformHandle

Entity shkyera::GizmoSystem::_scaleUniformHandle
private

◆ _selectedHandle

std::optional<Entity> shkyera::GizmoSystem::_selectedHandle
private

◆ _translationGizmo

Entity shkyera::GizmoSystem::_translationGizmo
private

◆ Blue

const auto shkyera::GizmoSystem::Blue = glm::vec3{0.1, 0.45, 0.95}
inlinestaticprivate

◆ GizmoHandleSize

constexpr float shkyera::GizmoSystem::GizmoHandleSize = 0.1
staticconstexprprivate

◆ GizmoLineLength

constexpr float shkyera::GizmoSystem::GizmoLineLength = 1.0
staticconstexprprivate

◆ GizmoLineWidth

constexpr float shkyera::GizmoSystem::GizmoLineWidth = 0.02
staticconstexprprivate

◆ GizmoScale

constexpr float shkyera::GizmoSystem::GizmoScale = 0.07
staticconstexprprivate

◆ Green

const auto shkyera::GizmoSystem::Green = glm::vec3{0.1, 0.9, 0.3}
inlinestaticprivate

◆ Grey

const auto shkyera::GizmoSystem::Grey = glm::vec3{0.8, 0.8, 0.8}
inlinestaticprivate

◆ Red

const auto shkyera::GizmoSystem::Red = glm::vec3{0.9, 0.1, 0.1}
inlinestaticprivate

The documentation for this class was generated from the following files: