Loading [MathJax]/extensions/TeX/AMSmath.js
Radium Engine  1.5.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
TransformEditor.cpp
1 #include <Gui/TransformEditor/TransformEditor.hpp>
2 
3 #include <Engine/Scene/Component.hpp>
4 #include <Engine/Scene/Entity.hpp>
5 
6 namespace Ra {
7 namespace Gui {
8 void TransformEditor::setEditable( const Engine::Scene::ItemEntry& ent ) {
9  m_currentEdit = ent;
10  getTransform();
11 }
12 
13 void TransformEditor::getTransform() {
14  if ( canEdit() ) {
15  if ( m_currentEdit.isEntityNode() ) {
16  m_transform = m_currentEdit.m_entity->getTransform();
17  }
18  else if ( m_currentEdit.isComponentNode() || m_currentEdit.isRoNode() ) {
19  m_transform = m_currentEdit.m_component->getTransform( m_currentEdit.m_roIndex );
20  }
21  }
22 }
23 
24 bool TransformEditor::canEdit() const {
25  return m_currentEdit.isValid() && m_currentEdit.isSelectable() &&
26  ( m_currentEdit.isEntityNode() ||
27  m_currentEdit.m_component->canEdit( m_currentEdit.m_roIndex ) );
28 }
29 
30 void TransformEditor::setTransform( const Ra::Core::Transform& tr ) {
31  if ( canEdit() ) {
32  if ( m_currentEdit.isEntityNode() ) { m_currentEdit.m_entity->setTransform( tr ); }
33  else { m_currentEdit.m_component->setTransform( m_currentEdit.m_roIndex, tr ); }
34  }
35 }
36 
37 Core::Transform TransformEditor::getWorldTransform() const {
38  return m_currentEdit.isEntityNode() ? Ra::Core::Transform::Identity()
39  : m_currentEdit.m_entity->getTransform();
40 }
41 
42 TransformEditor::~TransformEditor() {
43  setEditable( Engine::Scene::ItemEntry() );
44 }
45 } // namespace Gui
46 } // namespace Ra
Definition: Cage.cpp:3