#pragma once #include "IComponentEditor.h" #include "Core/IUndoManager.h" #include "UI/UI.h" #include namespace XCEngine { namespace Editor { class TransformComponentEditor : public IComponentEditor { public: const char* GetComponentTypeName() const override { return "Transform"; } const char* GetDisplayName() const override { return "Transform"; } bool Render(::XCEngine::Components::Component* component, IUndoManager* undoManager) override { auto* transform = dynamic_cast<::XCEngine::Components::TransformComponent*>(component); if (!transform) { return false; } ::XCEngine::Math::Vector3 position = transform->GetLocalPosition(); ::XCEngine::Math::Vector3 rotation = transform->GetLocalEulerAngles(); ::XCEngine::Math::Vector3 scale = transform->GetLocalScale(); bool changed = false; if (UI::DrawVec3("Position", position, 0.0f, 80.0f, 0.1f)) { if (undoManager) { undoManager->BeginInteractiveChange("Modify Transform"); } transform->SetLocalPosition(position); changed = true; } if (UI::DrawVec3("Rotation", rotation, 0.0f, 80.0f, 1.0f)) { if (undoManager) { undoManager->BeginInteractiveChange("Modify Transform"); } transform->SetLocalEulerAngles(rotation); changed = true; } if (UI::DrawVec3("Scale", scale, 1.0f, 80.0f, 0.1f)) { if (undoManager) { undoManager->BeginInteractiveChange("Modify Transform"); } transform->SetLocalScale(scale); changed = true; } return changed; } bool CanAddTo(::XCEngine::Components::GameObject* gameObject) const override { (void)gameObject; return false; } const char* GetAddDisabledReason(::XCEngine::Components::GameObject* gameObject) const override { (void)gameObject; return "Built-in"; } bool CanRemove(::XCEngine::Components::Component* component) const override { (void)component; return false; } }; } // namespace Editor } // namespace XCEngine