From 4be6fba77df5a919aced09ef83107261ca4f270f Mon Sep 17 00:00:00 2001 From: miku-666 <74728189+NessieHax@users.noreply.github.com> Date: Wed, 9 Oct 2024 12:52:34 +0200 Subject: [PATCH] ModelRenderer - Fix centering model after selecting --- PCK-Studio/Forms/Editor/ModelEditor.cs | 1 + PCK-Studio/Rendering/ModelRenderer.cs | 13 +++++-------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/PCK-Studio/Forms/Editor/ModelEditor.cs b/PCK-Studio/Forms/Editor/ModelEditor.cs index 6a839cb6..2057c10c 100644 --- a/PCK-Studio/Forms/Editor/ModelEditor.cs +++ b/PCK-Studio/Forms/Editor/ModelEditor.cs @@ -246,6 +246,7 @@ namespace PckStudio.Forms.Editor modelViewport.Texture = textures[0].Texture; modelViewport.Model = modelNode.Model; + modelViewport.ResetCamera(); } } diff --git a/PCK-Studio/Rendering/ModelRenderer.cs b/PCK-Studio/Rendering/ModelRenderer.cs index 2822c186..2f8fa24e 100644 --- a/PCK-Studio/Rendering/ModelRenderer.cs +++ b/PCK-Studio/Rendering/ModelRenderer.cs @@ -117,10 +117,6 @@ namespace PckStudio.Rendering _maxBounds = GetBounds(allBoxes); - Vector3 center = (_maxBounds.Start + _maxBounds.End) / 2f; - - ResetCamera(center); - if (!GameModelImporter.ModelMetaData.TryGetValue(model.Name, out JsonModelMetaData modelMetaData)) { Trace.TraceError($"[{nameof(ModelRenderer)}@{nameof(InitModelRender)}] : Couldn't get meta data for model: '{model.Name}'"); @@ -159,14 +155,15 @@ namespace PckStudio.Rendering MakeCurrent(); ShaderProgram shader = GetShader("CubeShader"); - + shader.Bind(); shader.SetUniform2("TexSize", model.TextureSize); } - public override void ResetCamera(Vector3 defaultPosition) + public override void ResetCamera(Vector3 offset) { - Camera.FocalPoint = defaultPosition; - Camera.Distance = _maxBounds.Volume.Length * 1.3f; + Vector3 center = (_maxBounds.Start + _maxBounds.End) / 2f; + Camera.FocalPoint = Vector3.TransformPosition(center + offset, Matrix4.CreateScale(-1f, 1f, 1f)); + Camera.Distance = _maxBounds.Volume.Length; Camera.Yaw = 45f; Camera.Pitch = 25f; }