|
|
|
@@ -4,7 +4,7 @@
|
|
|
|
|
#include "Editor/EditorWidgetSystem.h"
|
|
|
|
|
#include "Core/EntityFile.h"
|
|
|
|
|
|
|
|
|
|
EditorSystem::EditorSystem(SystemParams params, IRenderer* renderer, RenderFrame* renderFrame)
|
|
|
|
|
EditorSystem::EditorSystem(SystemParams params, IRenderer* renderer, RenderFrame* renderFrame)
|
|
|
|
|
: System(params)
|
|
|
|
|
, m_Renderer(renderer)
|
|
|
|
|
, m_RenderFrame(renderFrame)
|
|
|
|
@@ -14,7 +14,7 @@ EditorSystem::EditorSystem(SystemParams params, IRenderer* renderer, RenderFrame
|
|
|
|
|
m_EditorWorldSystemPipeline->AddSystem<UniformScaleSystem>(0);
|
|
|
|
|
m_EditorWorldSystemPipeline->AddSystem<EditorWidgetSystem>(0, m_Renderer);
|
|
|
|
|
m_EditorWorldSystemPipeline->AddSystem<EditorRenderSystem>(1, m_Renderer, m_RenderFrame);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m_EditorCamera = importEntity(EntityWrapper(m_EditorWorld, EntityID_Invalid), "Schema/Entities/Empty.xml");
|
|
|
|
|
m_ActualCamera = m_EditorCamera;
|
|
|
|
|
m_EditorWorld->AttachComponent(m_EditorCamera.ID, "Transform");
|
|
|
|
@@ -72,6 +72,9 @@ void EditorSystem::Update(double dt)
|
|
|
|
|
m_EditorStats->Draw(actualDelta);
|
|
|
|
|
|
|
|
|
|
if (m_CurrentSelection.Valid() && m_Widget.Valid()) {
|
|
|
|
|
if (isAnyParentMissingTransform(m_CurrentSelection.ID)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
(glm::vec3&)m_Widget["Transform"]["Position"] = Transform::AbsolutePosition(m_CurrentSelection);
|
|
|
|
|
if (m_WidgetSpace == EditorGUI::WidgetSpace::Local) {
|
|
|
|
|
(glm::vec3&)m_Widget["Transform"]["Orientation"] = Transform::AbsoluteOrientationEuler(m_CurrentSelection);
|
|
|
|
@@ -79,7 +82,6 @@ void EditorSystem::Update(double dt)
|
|
|
|
|
(glm::vec3&)m_Widget["Transform"]["Orientation"] = glm::vec3(0, 0, 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_EditorWorldSystemPipeline->Update(actualDelta);
|
|
|
|
|
|
|
|
|
|
ComponentWrapper& cameraTransform = m_EditorCamera["Transform"];
|
|
|
|
@@ -203,6 +205,9 @@ bool EditorSystem::OnMousePress(const Events::MousePress& e)
|
|
|
|
|
bool EditorSystem::OnWidgetDelta(const Events::WidgetDelta& e)
|
|
|
|
|
{
|
|
|
|
|
if (m_CurrentSelection.Valid()) {
|
|
|
|
|
if (isAnyParentMissingTransform(m_CurrentSelection.ID)) {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
if (m_WidgetSpace == EditorGUI::WidgetSpace::Global) {
|
|
|
|
|
glm::quat parentOrientation;
|
|
|
|
|
glm::vec3 parentScale(1.f);
|
|
|
|
@@ -309,3 +314,15 @@ void EditorSystem::setWidgetMode(EditorGUI::WidgetMode mode)
|
|
|
|
|
|
|
|
|
|
m_Widget["Transform"]["Position"] = Transform::AbsolutePosition(m_CurrentSelection.World, m_CurrentSelection.ID);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool EditorSystem::isAnyParentMissingTransform(EntityID entityID)
|
|
|
|
|
{
|
|
|
|
|
EntityWrapper entity(m_World, entityID);
|
|
|
|
|
while (entity.Parent().Valid()) {
|
|
|
|
|
if (!entity.HasComponent("Transform")) {
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
entity = entity.Parent();
|
|
|
|
|
}
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|