@@ -5,7 +5,7 @@ import Text.GLTF.Loader
5
5
6
6
import Lens.Micro
7
7
import Lens.Micro.Platform ()
8
- import Linear (V3 (.. ), V4 (.. ))
8
+ import Linear (Quaternion ( .. ), V3 (.. ), V4 (.. ))
9
9
import Numeric
10
10
import RIO
11
11
import qualified RIO.Text as Text
@@ -41,20 +41,26 @@ reportError err =
41
41
reportVerbose :: Gltf -> RIO App ()
42
42
reportVerbose gltf = do
43
43
reportAsset $ gltf ^. _asset
44
+ logInfo " " -- Blank line
45
+ reportScenes $ gltf ^. _scenes
44
46
45
47
logInfo " " -- Blank line
46
48
reportNodes gltf $ reportMeshVerbose gltf
47
49
48
50
reportSummary :: Gltf -> RIO App ()
49
51
reportSummary gltf = do
50
52
reportAsset $ gltf ^. _asset
53
+ logInfo " " -- Blank line
54
+ reportScenes $ gltf ^. _scenes
51
55
52
56
logInfo " " -- Blank line
53
57
reportNodes gltf reportMeshSummary
54
58
55
59
reportGltf :: Gltf -> RIO App ()
56
60
reportGltf gltf = do
57
61
reportAsset $ gltf ^. _asset
62
+ logInfo " " -- Blank line
63
+ reportScenes $ gltf ^. _scenes
58
64
59
65
logInfo " " -- Blank line
60
66
reportNodes gltf $ reportMesh gltf
@@ -65,6 +71,14 @@ reportAsset asset = do
65
71
^. _assetGenerator . to (fromMaybe " Unknown" ) . to display
66
72
logInfo $ " Version: " <> asset ^. _assetVersion . to display
67
73
74
+ reportScenes :: Vector Scene -> RIO App ()
75
+ reportScenes scenes = do
76
+ logInfo $ " Scenes: " <> display (RIO. length scenes)
77
+ forM_ scenes $ \ scene -> do
78
+ logInfo $ " Name: " <> maybe " Unknown scene" display (view _sceneName scene)
79
+ let nodes = Text. intercalate " , " $ map textDisplay $ toList (view _sceneNodes scene)
80
+ logInfo $ " Nodes: " <> display nodes
81
+
68
82
reportNodes :: Gltf -> (Mesh -> RIO App () ) -> RIO App ()
69
83
reportNodes gltf meshReporter = do
70
84
let nodes = gltf ^. _nodes
@@ -73,6 +87,16 @@ reportNodes gltf meshReporter = do
73
87
forM_ nodes $ \ node -> do
74
88
logInfo $ " Name: " <> maybe " Unknown node" display (view _nodeName node)
75
89
90
+ logInfo
91
+ $ " Rotation: "
92
+ <> maybe " (1, 0, 0, 0)" displayQuaternion (view _nodeRotation node)
93
+ logInfo
94
+ $ " Scale: "
95
+ <> maybe " (0, 0, 0)" displayV3 (view _nodeScale node)
96
+ logInfo
97
+ $ " Translation: "
98
+ <> maybe " (0, 0, 0)" displayV3 (view _nodeTranslation node)
99
+
76
100
forM_ (node ^. _nodeMeshId) $ \ meshId -> do
77
101
logInfo " Mesh: "
78
102
forM_ (gltf ^. _meshes ^? ix meshId) meshReporter
@@ -172,6 +196,10 @@ displayV4 (V4 w x y z) =
172
196
<> display z
173
197
<> " )"
174
198
199
+ displayQuaternion :: Display a => Quaternion a -> Utf8Builder
200
+ displayQuaternion (Quaternion e (V3 i j k)) =
201
+ displayV4 (V4 e i j k)
202
+
175
203
newtype RoundedFloat = RoundedFloat { unFloat :: Float }
176
204
deriving (Eq , Show )
177
205
0 commit comments