Skip to content

Commit 8964ac4

Browse files
committed
Always position upright
1 parent b9e2a62 commit 8964ac4

File tree

1 file changed

+18
-2
lines changed

1 file changed

+18
-2
lines changed

RenderWarePreviewer/Scenes/SceneManager.cs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,9 +68,10 @@ public void LoadModel(Ped ped)
6868

6969
var models = MeshHelper.GetModels(dff, images);
7070

71+
var rotation = DetermineRotation(models);
7172
this.scene.Clear();
7273
foreach (var model in models)
73-
this.scene.Add(model, new Vector3D(0, 0, 0), new Vector3D(0, 90, 0));
74+
this.scene.Add(model, new Vector3D(0, 0, 0), rotation);
7475
}
7576

7677
public void LoadModel(Ped ped, Image<Rgba32> image, string imageName)
@@ -82,9 +83,24 @@ public void LoadModel(Ped ped, Image<Rgba32> image, string imageName)
8283
images[imageName] = image;
8384
var models = MeshHelper.GetModels(dff, images);
8485

86+
var rotation = DetermineRotation(models);
8587
this.scene.Clear();
8688
foreach (var model in models)
87-
this.scene.Add(model, new Vector3D(0, 0, 0), new Vector3D(0, 90, 0));
89+
this.scene.Add(model, new Vector3D(0, 0, 0), rotation);
90+
}
91+
92+
private Vector3D DetermineRotation(IEnumerable<GeometryModel3D> models)
93+
{
94+
var vertices = models
95+
.SelectMany(x => (x.Geometry as MeshGeometry3D)!.Positions);
96+
var highestX = vertices.Max(x => x.X);
97+
var highestY = vertices.Max(x => x.Y);
98+
var highestZ = vertices.Max(x => x.Z);
99+
100+
if (highestZ > highestX)
101+
return new Vector3D(0, 0, 270);
102+
103+
return new Vector3D(0, 90, 0);
88104
}
89105

90106
public Image<Rgba32> GetImage(Ped ped, string texture)

0 commit comments

Comments
 (0)