@@ -68,9 +68,10 @@ public void LoadModel(Ped ped)
68
68
69
69
var models = MeshHelper . GetModels ( dff , images ) ;
70
70
71
+ var rotation = DetermineRotation ( models ) ;
71
72
this . scene . Clear ( ) ;
72
73
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 ) ;
74
75
}
75
76
76
77
public void LoadModel ( Ped ped , Image < Rgba32 > image , string imageName )
@@ -82,9 +83,24 @@ public void LoadModel(Ped ped, Image<Rgba32> image, string imageName)
82
83
images [ imageName ] = image ;
83
84
var models = MeshHelper . GetModels ( dff , images ) ;
84
85
86
+ var rotation = DetermineRotation ( models ) ;
85
87
this . scene . Clear ( ) ;
86
88
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 ) ;
88
104
}
89
105
90
106
public Image < Rgba32 > GetImage ( Ped ped , string texture )
0 commit comments