Bug Fixes & Tweaks for editor
fixed window width for physics settings drop down fixed double click to look at fix crash when some fields in collider and rigidbody are set to 0.0f
This commit is contained in:
parent
bfc8b3600f
commit
fe41245008
|
@ -454,7 +454,8 @@ namespace SHADE
|
||||||
{
|
{
|
||||||
if(auto entityTransform = SHComponentManager::GetComponent_s<SHTransformComponent>(eid))
|
if(auto entityTransform = SHComponentManager::GetComponent_s<SHTransformComponent>(eid))
|
||||||
{
|
{
|
||||||
editorCam->SetPosition(entityTransform->GetWorldPosition() + SHVec3(0.5f));
|
SHVec3 scale = entityTransform->GetLocalScale();
|
||||||
|
editorCam->SetPosition(entityTransform->GetWorldPosition() + scale * 0.5f);
|
||||||
camSystem->CameraLookAt(*editorCam, entityTransform->GetWorldPosition());
|
camSystem->CameraLookAt(*editorCam, entityTransform->GetWorldPosition());
|
||||||
camSystem->UpdateEditorCamera(SHFrameRateController::GetRawDeltaTime());
|
camSystem->UpdateEditorCamera(SHFrameRateController::GetRawDeltaTime());
|
||||||
}
|
}
|
||||||
|
|
|
@ -273,8 +273,8 @@ namespace SHADE
|
||||||
}
|
}
|
||||||
if (rbType == SHRigidBodyComponent::Type::DYNAMIC || rbType == SHRigidBodyComponent::Type::KINEMATIC) //Dynamic or Kinematic only fields
|
if (rbType == SHRigidBodyComponent::Type::DYNAMIC || rbType == SHRigidBodyComponent::Type::KINEMATIC) //Dynamic or Kinematic only fields
|
||||||
{
|
{
|
||||||
SHEditorWidgets::DragFloat("Drag", [component] {return component->GetDrag(); }, [component](float const& value) {component->SetDrag(value); }, "Drag");
|
SHEditorWidgets::DragFloat("Drag", [component] {return component->GetDrag(); }, [component](float const& value) {component->SetDrag(value); }, "Drag", 0.1f, 0.0001f, std::numeric_limits<float>::infinity());
|
||||||
SHEditorWidgets::DragFloat("Angular Drag", [component] {return component->GetAngularDrag(); }, [component](float const& value) {component->SetAngularDrag(value); }, "Angular Drag");
|
SHEditorWidgets::DragFloat("Angular Drag", [component] {return component->GetAngularDrag(); }, [component](float const& value) {component->SetAngularDrag(value); }, "Angular Drag", 0.1f, 0.0001f, std::numeric_limits<float>::infinity());
|
||||||
|
|
||||||
SHEditorWidgets::CheckBox("Interpolate", [component] {return component->IsInterpolating(); }, [component](bool const& value) {component->SetInterpolate(value); }, "Interpolate");
|
SHEditorWidgets::CheckBox("Interpolate", [component] {return component->IsInterpolating(); }, [component](bool const& value) {component->SetInterpolate(value); }, "Interpolate");
|
||||||
|
|
||||||
|
@ -377,7 +377,8 @@ namespace SHADE
|
||||||
(
|
(
|
||||||
"Radius",
|
"Radius",
|
||||||
[sphereShape] { return sphereShape->GetRelativeRadius(); },
|
[sphereShape] { return sphereShape->GetRelativeRadius(); },
|
||||||
[sphereShape](float const& value) { sphereShape->SetRelativeRadius(value); }
|
[sphereShape](float const& value) { sphereShape->SetRelativeRadius(value); }, "Collider Radius", 0.1f,
|
||||||
|
0.0001f, std::numeric_limits<float>::infinity()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else if (collisionShape->GetType() == SHCollisionShape::Type::CAPSULE)
|
else if (collisionShape->GetType() == SHCollisionShape::Type::CAPSULE)
|
||||||
|
@ -388,13 +389,15 @@ namespace SHADE
|
||||||
(
|
(
|
||||||
"Radius",
|
"Radius",
|
||||||
[capsuleShape] { return capsuleShape->GetRelativeRadius(); },
|
[capsuleShape] { return capsuleShape->GetRelativeRadius(); },
|
||||||
[capsuleShape](float const& value) { capsuleShape->SetRelativeRadius(value); }
|
[capsuleShape](float const& value) { capsuleShape->SetRelativeRadius(value); }, "Collider Radius", 0.1f,
|
||||||
|
0.0001f, std::numeric_limits<float>::infinity()
|
||||||
);
|
);
|
||||||
SHEditorWidgets::DragFloat
|
SHEditorWidgets::DragFloat
|
||||||
(
|
(
|
||||||
"Height",
|
"Height",
|
||||||
[capsuleShape] { return capsuleShape->GetRelativeHeight(); },
|
[capsuleShape] { return capsuleShape->GetRelativeHeight(); },
|
||||||
[capsuleShape](float const& value) { capsuleShape->SetRelativeHeight(value); }
|
[capsuleShape](float const& value) { capsuleShape->SetRelativeHeight(value); }, "Collider Height", 0.1f,
|
||||||
|
0.0001f, std::numeric_limits<float>::infinity()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,8 @@
|
||||||
#include "SHEditorComponentView.h"
|
#include "SHEditorComponentView.h"
|
||||||
#include "AudioSystem/SHAudioListenerComponent.h"
|
#include "AudioSystem/SHAudioListenerComponent.h"
|
||||||
#include "Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h"
|
#include "Graphics/MiddleEnd/TextRendering/SHTextRenderableComponent.h"
|
||||||
|
#include "Camera/SHCameraSystem.h"
|
||||||
|
#include "FRC/SHFramerateController.h"
|
||||||
|
|
||||||
namespace SHADE
|
namespace SHADE
|
||||||
{
|
{
|
||||||
|
@ -106,6 +108,7 @@ namespace SHADE
|
||||||
{
|
{
|
||||||
if (editor && !editor->selectedEntities.empty())
|
if (editor && !editor->selectedEntities.empty())
|
||||||
{
|
{
|
||||||
|
DrawMenuBar();
|
||||||
EntityID const& eid = editor->selectedEntities[0];
|
EntityID const& eid = editor->selectedEntities[0];
|
||||||
SHEntity* entity = SHEntityManager::GetEntityByID(eid);
|
SHEntity* entity = SHEntityManager::GetEntityByID(eid);
|
||||||
SHSceneNode* entityNode = SHSceneManager::GetCurrentSceneGraph().GetNode(eid);
|
SHSceneNode* entityNode = SHSceneManager::GetCurrentSceneGraph().GetNode(eid);
|
||||||
|
@ -114,6 +117,7 @@ namespace SHADE
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui::TextColored(ImGuiColors::green, "EID: %zu", eid);
|
ImGui::TextColored(ImGuiColors::green, "EID: %zu", eid);
|
||||||
SHEditorWidgets::CheckBox("##IsActive", [entityNode]()->bool {return entityNode->IsActive(); }, [entityNode](bool const& active) {entityNode->SetActive(active); });
|
SHEditorWidgets::CheckBox("##IsActive", [entityNode]()->bool {return entityNode->IsActive(); }, [entityNode](bool const& active) {entityNode->SetActive(active); });
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
|
@ -222,4 +226,36 @@ namespace SHADE
|
||||||
{
|
{
|
||||||
SHEditorWindow::Exit();
|
SHEditorWindow::Exit();
|
||||||
}
|
}
|
||||||
|
void SHEditorInspector::DrawMenuBar()
|
||||||
|
{
|
||||||
|
if(ImGui::BeginMenuBar())
|
||||||
|
{
|
||||||
|
EntityID const& eid = editor->selectedEntities[0];
|
||||||
|
SHEntity* entity = SHEntityManager::GetEntityByID(eid);
|
||||||
|
SHSceneNode* entityNode = SHSceneManager::GetCurrentSceneGraph().GetNode(eid);
|
||||||
|
if (!entity || !entityNode)
|
||||||
|
{
|
||||||
|
ImGui::EndMenuBar();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (ImGui::SmallButton("Look At"))
|
||||||
|
{
|
||||||
|
editor->selectedEntities.clear();
|
||||||
|
editor->selectedEntities.push_back(eid);
|
||||||
|
if (auto camSystem = SHSystemManager::GetSystem<SHCameraSystem>())
|
||||||
|
{
|
||||||
|
if (auto editorCam = camSystem->GetEditorCamera())
|
||||||
|
{
|
||||||
|
if (auto entityTransform = SHComponentManager::GetComponent_s<SHTransformComponent>(eid))
|
||||||
|
{
|
||||||
|
editorCam->SetPosition(entityTransform->GetWorldPosition() + SHVec3(0.5f));
|
||||||
|
camSystem->CameraLookAt(*editorCam, entityTransform->GetWorldPosition());
|
||||||
|
camSystem->UpdateEditorCamera(SHFrameRateController::GetRawDeltaTime());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ImGui::EndMenuBar();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,6 +25,6 @@ namespace SHADE
|
||||||
void Exit() override;
|
void Exit() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void DrawMenuBar();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -358,6 +358,7 @@ namespace SHADE
|
||||||
|
|
||||||
void SHEditorMenuBar::DrawPhysicsSettings() noexcept
|
void SHEditorMenuBar::DrawPhysicsSettings() noexcept
|
||||||
{
|
{
|
||||||
|
ImGui::SetNextWindowSize({400.0f, 0.0f});
|
||||||
if (ImGui::BeginMenu("Physics Settings"))
|
if (ImGui::BeginMenu("Physics Settings"))
|
||||||
{
|
{
|
||||||
if (auto* physicsSystem = SHSystemManager::GetSystem<SHPhysicsSystem>())
|
if (auto* physicsSystem = SHSystemManager::GetSystem<SHPhysicsSystem>())
|
||||||
|
|
|
@ -669,6 +669,12 @@ namespace SHADE
|
||||||
SaveScene();
|
SaveScene();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(editorState == State::PLAY && ImGui::IsKeyReleased(ImGuiKey_LeftAlt))
|
||||||
|
{
|
||||||
|
SHInputManager::SetMouseCentering(!SHInputManager::GetMouseCentering());
|
||||||
|
SHWindow::SetMouseVisible(!SHWindow::GetMouseVisible());
|
||||||
|
|
||||||
|
}
|
||||||
if (ImGui::IsKeyDown(ImGuiKey_LeftShift) && ImGui::IsKeyDown(ImGuiKey_LeftCtrl) && ImGui::IsKeyReleased(ImGuiKey_Z))
|
if (ImGui::IsKeyDown(ImGuiKey_LeftShift) && ImGui::IsKeyDown(ImGuiKey_LeftCtrl) && ImGui::IsKeyReleased(ImGuiKey_Z))
|
||||||
{
|
{
|
||||||
SHCommandManager::RedoCommand();
|
SHCommandManager::RedoCommand();
|
||||||
|
|
Loading…
Reference in New Issue