From cc514d47bb8517b21418605681e5cc477658680c Mon Sep 17 00:00:00 2001 From: miku-666 <74728189+NessieHax@users.noreply.github.com> Date: Sun, 27 Oct 2024 16:45:01 +0100 Subject: [PATCH] ModelRenderer - Fix pivot point rendering --- PCK-Studio/Rendering/ModelRenderer.cs | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/PCK-Studio/Rendering/ModelRenderer.cs b/PCK-Studio/Rendering/ModelRenderer.cs index a4c88399..ce3e3040 100644 --- a/PCK-Studio/Rendering/ModelRenderer.cs +++ b/PCK-Studio/Rendering/ModelRenderer.cs @@ -38,8 +38,6 @@ namespace PckStudio.Rendering } } - public bool RenderModelBounds { get; set; } - [Description("Event that gets fired when the skin texture is changing")] [Category("Property Chnaged")] [Browsable(true)] @@ -49,6 +47,7 @@ namespace PckStudio.Rendering remove => Events.RemoveHandler(nameof(ModelTextureChanging), value); } + public bool RenderModelBounds { get; set; } private BoundingBox _maxBounds; private Image _modelTexture; private Texture2D _modelRenderTexture; @@ -124,11 +123,11 @@ namespace PckStudio.Rendering Vector3 translation = modelPart.Translation.ToOpenTKVector(); - var cubeMeshCollection = new CubeMeshCollection(modelPart.Name, Vector3.Zero, translation, modelPart.Rotation.ToOpenTKVector() + modelPart.AdditionalRotation.ToOpenTKVector()); + var cubeMeshCollection = new CubeMeshCollection(modelPart.Name, translation, translation * -1, modelPart.Rotation.ToOpenTKVector() + modelPart.AdditionalRotation.ToOpenTKVector()); cubeMeshCollection.FlipZMapping = true; foreach (ModelBox boxes in modelPart.GetBoxes()) { - cubeMeshCollection.AddNamed(modelPart.Name, boxes.Position.ToOpenTKVector() + translation, boxes.Size.ToOpenTKVector(), boxes.Uv.ToOpenTKVector(), boxes.Inflate, boxes.Mirror); + cubeMeshCollection.AddNamed(modelPart.Name, boxes.Position.ToOpenTKVector(), boxes.Size.ToOpenTKVector(), boxes.Uv.ToOpenTKVector(), boxes.Inflate, boxes.Mirror); } RetriveChildMeshes(metaDataParts: metaDataPart.Children, ref model).ForEach(cubeMeshCollection.Add); @@ -209,16 +208,20 @@ namespace PckStudio.Rendering _modelRenderTexture.Bind(slot: 0); - if (RenderModelBounds) - { - DrawBoundingBox(Matrix4.CreateScale(1f, -1f, -1f), _maxBounds, Color.Red); - } + Vector3 scaleVector = new Vector3(1f, -1f, -1f); + Matrix4 renderTransform = Matrix4.CreateScale(scaleVector); foreach (CubeMeshCollection item in _rootCollection) { - DrawMesh(item, shader, item.GetTransform() * Matrix4.CreateScale(1f, -1f, -1f)); + DrawMesh(item, shader, item.GetTransform() * renderTransform); } _modelRenderTexture.Unbind(); - } + if (RenderModelBounds) + { + DrawBoundingBox(renderTransform, _maxBounds, Color.Red); + } + } + + } }