Added guizmo

Translation is broken for some reason
This commit is contained in:
Simon Lübeß
2021-09-28 21:56:51 +02:00
parent 122f7e9904
commit fab0f99951
4 changed files with 49 additions and 7 deletions
@@ -3,11 +3,16 @@ using ImGui;
using GlitchyEngine.Renderer; using GlitchyEngine.Renderer;
using GlitchyEngine.Math; using GlitchyEngine.Math;
using GlitchyEngine; using GlitchyEngine;
using GlitchyEngine.World;
using ImGuizmo;
namespace GlitchyEditor.EditWindows namespace GlitchyEditor.EditWindows
{ {
class SceneViewportWindow class SceneViewportWindow
{ {
private Editor _editor;
public Camera _camera;
public const String s_WindowTitle = "Scene"; public const String s_WindowTitle = "Scene";
private bool _open = true; private bool _open = true;
@@ -41,8 +46,9 @@ namespace GlitchyEditor.EditWindows
} }
} }
public this() public this(Editor editor)
{ {
_editor = editor;
} }
private ImGui.Vec2 oldViewportSize; private ImGui.Vec2 oldViewportSize;
@@ -76,6 +82,40 @@ namespace GlitchyEditor.EditWindows
{ {
ImGui.Image(_renderTarget, viewportSize); ImGui.Image(_renderTarget, viewportSize);
} }
if(_editor.SelectedEntities.Count > 0)
{
ImGuizmo.SetDrawlist();
var entity = _editor.SelectedEntities.Back;
var transformCmp = _editor.World.GetComponent<TransformComponent>(entity);
var transform = transformCmp.LocalTransform;
var view = _camera.View;
var projection = _camera.Projection;
var v = ImGui.GetWindowPos();
var cntMin = ImGui.GetWindowContentRegionMin();
v.x += cntMin.x;
v.y += cntMin.y;
ImGuizmo.SetRect(v.x, v.y, viewportSize.x, viewportSize.y);
Color c = .(0,0,0,255);
//ImGuizmo.DrawCubes((.)&view, (.)&projection, (.)&transform, 1);
ImGuizmo.Manipulate((.)&view, (.)&projection, .TRANSLATE, .LOCAL, (.)&transform);
Matrix mat = .Identity;
ImGuizmo.DrawGrid((.)&view, (.)&projection, (.)&mat, 10);
transformCmp.LocalTransform = transform;
//ImGuizmo.ViewManipulate((.)&view, , .TRANSLATE, .LOCAL, (.)&transform);
}
ImGui.End(); ImGui.End();
+1 -1
View File
@@ -13,7 +13,7 @@ namespace GlitchyEditor
private EntityHierarchyWindow _entityHierarchyWindow = new .(this) ~ delete _; private EntityHierarchyWindow _entityHierarchyWindow = new .(this) ~ delete _;
private ComponentEditWindow _componentEditWindow = new .(this) ~ delete _; private ComponentEditWindow _componentEditWindow = new .(this) ~ delete _;
private SceneViewportWindow _sceneViewportWindow = new .() ~ delete _; private SceneViewportWindow _sceneViewportWindow = new .(this) ~ delete _;
private List<Entity> _selectedEntities = new .() ~ delete _; private List<Entity> _selectedEntities = new .() ~ delete _;
+5 -5
View File
@@ -1,13 +1,12 @@
using GlitchyEditor.EditWindows; using System;
using ImGui;
using GlitchyEngine; using GlitchyEngine;
using GlitchyEditor.EditWindows;
using GlitchyEngine.Events; using GlitchyEngine.Events;
using GlitchyEngine.ImGui; using GlitchyEngine.ImGui;
using GlitchyEngine.Math; using GlitchyEngine.Math;
using GlitchyEngine.Renderer; using GlitchyEngine.Renderer;
using GlitchyEngine.World; using GlitchyEngine.World;
using ImGui;
using System;
using GlitchyEngine.Renderer.Text;
namespace GlitchyEditor namespace GlitchyEditor
{ {
@@ -88,9 +87,10 @@ namespace GlitchyEditor
Application.Get().Window.Context.SwapChain.BackbufferViewport.Height); Application.Get().Window.Context.SwapChain.BackbufferViewport.Height);
_cameraController.CameraPosition = .(0, 0, -5); _cameraController.CameraPosition = .(0, 0, -5);
_cameraController.TranslationSpeed = 10; _cameraController.TranslationSpeed = 10;
_editor.[Friend]CreateEntityWithTransform(); _editor.[Friend]CreateEntityWithTransform();
_editor.SceneViewportWindow._camera = _cameraController.Camera;
} }
public override void Update(GameTime gameTime) public override void Update(GameTime gameTime)
+2
View File
@@ -1,6 +1,7 @@
using System; using System;
using ImGui; using ImGui;
using GlitchyEngine.Events; using GlitchyEngine.Events;
using ImGuizmo;
using internal ImGui; using internal ImGui;
@@ -184,6 +185,7 @@ namespace GlitchyEngine.ImGui
ImGuiImplDX11.NewFrame(); ImGuiImplDX11.NewFrame();
ImGuiImplWin32.NewFrame(); ImGuiImplWin32.NewFrame();
ImGui.NewFrame(); ImGui.NewFrame();
ImGuizmo.BeginFrame();
} }
bool showDemo = true; bool showDemo = true;